mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
Remove unused functions from isc_thread API
The isc_thread_setaffinity call was removed in !5265 and we are not going to restore it because it was proven that the performance is better without it. Additionally, remove the already disabled cpu system test. The isc_thread_setconcurrency function is unused and also calling pthread_setconcurrency() on Linux has no meaning, formerly it was added because of Solaris in 2001 and it was removed when taskmgr was refactored to run on top of netmgr in !4918.
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
rm -f ps.out
|
||||
rm -f ns1/named.conf ns1/managed-keys.* ns1/named.run ns1/named.memstats
|
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.1;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.1; };
|
||||
listen-on-v6 { none; };
|
||||
};
|
@@ -1,37 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
case $(uname) in
|
||||
Linux*)
|
||||
;;
|
||||
*)
|
||||
echo_i "cpu test only runs on Linux"
|
||||
exit 255
|
||||
;;
|
||||
esac
|
||||
|
||||
# TASKSET will be an empty string if no taskset program was found.
|
||||
TASKSET=$(command -v "taskset" || true)
|
||||
if ! test -x "$TASKSET" ; then
|
||||
exit 255
|
||||
fi
|
||||
|
||||
if ! $TASKSET fff0 true > /dev/null 2>&1; then
|
||||
echo_i "taskset failed"
|
||||
exit 255
|
||||
fi
|
@@ -1,21 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
set -e
|
||||
|
||||
$SHELL clean.sh
|
||||
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
@@ -1,48 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
status=0
|
||||
n=0
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "stop server ($n)"
|
||||
ret=0
|
||||
$PERL ../stop.pl cpu ns1 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "start server with taskset ($n)"
|
||||
ret=0
|
||||
start_server --noclean --taskset fff0 --restart --port "${PORT}" cpu ns1 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "check ps output ($n)"
|
||||
ret=0
|
||||
ps -T -o pid,psr,time,comm -e > ps.out
|
||||
pid=$(cat ns1/named.pid)
|
||||
echo_i "pid=$pid"
|
||||
psr=$(awk -v pid="$pid" '$1 == pid && $4 == "isc-net-0000" {print $2}' < ps.out)
|
||||
echo_i "psr=$psr"
|
||||
# The next available cpu relative to the existing affinity mask is 4.
|
||||
test "$psr" -eq 4 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
@@ -538,10 +538,6 @@ AC_CHECK_HEADERS([sched.h])
|
||||
AC_SEARCH_LIBS([sched_yield],[rt])
|
||||
AC_CHECK_FUNCS([sched_yield pthread_yield pthread_yield_np])
|
||||
|
||||
AC_CHECK_HEADERS([sys/cpuset.h])
|
||||
AC_CHECK_HEADERS([sys/procset.h])
|
||||
AC_CHECK_FUNCS([pthread_setaffinity_np cpuset_setaffinity processor_bind sched_setaffinity])
|
||||
|
||||
# Look for functions relating to thread naming
|
||||
AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np])
|
||||
AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
|
||||
|
@@ -42,18 +42,12 @@ isc_thread_create(isc_threadfunc_t, isc_threadarg_t, isc_thread_t *);
|
||||
void
|
||||
isc_thread_join(isc_thread_t thread, isc_threadresult_t *result);
|
||||
|
||||
void
|
||||
isc_thread_setconcurrency(unsigned int level);
|
||||
|
||||
void
|
||||
isc_thread_yield(void);
|
||||
|
||||
void
|
||||
isc_thread_setname(isc_thread_t thread, const char *name);
|
||||
|
||||
isc_result_t
|
||||
isc_thread_setaffinity(int cpu);
|
||||
|
||||
#define isc_thread_self (uintptr_t) pthread_self
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
105
lib/isc/thread.c
105
lib/isc/thread.c
@@ -97,15 +97,6 @@ isc_thread_join(isc_thread_t thread, isc_threadresult_t *result) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#define pthread_setconcurrency(a) (void)a /* nothing */
|
||||
#endif /* ifdef __NetBSD__ */
|
||||
|
||||
void
|
||||
isc_thread_setconcurrency(unsigned int level) {
|
||||
(void)pthread_setconcurrency(level);
|
||||
}
|
||||
|
||||
void
|
||||
isc_thread_setname(isc_thread_t thread, const char *name) {
|
||||
#if defined(HAVE_PTHREAD_SETNAME_NP) && !defined(__APPLE__)
|
||||
@@ -136,99 +127,3 @@ isc_thread_yield(void) {
|
||||
pthread_yield_np();
|
||||
#endif /* if defined(HAVE_SCHED_YIELD) */
|
||||
}
|
||||
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY) || defined(HAVE_PTHREAD_SETAFFINITY_NP)
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY)
|
||||
static int
|
||||
getaffinity(cpuset_t *set) {
|
||||
return (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1,
|
||||
sizeof(*set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpuset_t *set) {
|
||||
return ((cpu >= CPU_SETSIZE) ? -1 : CPU_ISSET(cpu, set) ? 1 : 0);
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpuset_t *set) {
|
||||
CPU_ZERO(set);
|
||||
CPU_SET(cpu, set);
|
||||
return (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1,
|
||||
sizeof(*set), set));
|
||||
}
|
||||
#elif defined(__NetBSD__)
|
||||
static int
|
||||
getaffinity(cpuset_t *set) {
|
||||
return (pthread_getaffinity_np(pthread_self(), cpuset_size(set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpuset_t *set) {
|
||||
return (cpuset_isset(cpu, set));
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpuset_t *set) {
|
||||
cpuset_zero(set);
|
||||
cpuset_set(cpu, set);
|
||||
return (pthread_setaffinity_np(pthread_self(), cpuset_size(set), set));
|
||||
}
|
||||
#else /* linux ? */
|
||||
static int
|
||||
getaffinity(cpu_set_t *set) {
|
||||
return (pthread_getaffinity_np(pthread_self(), sizeof(*set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpu_set_t *set) {
|
||||
return ((cpu >= CPU_SETSIZE) ? -1 : CPU_ISSET(cpu, set) ? 1 : 0);
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpu_set_t *set) {
|
||||
CPU_ZERO(set);
|
||||
CPU_SET(cpu, set);
|
||||
return (pthread_setaffinity_np(pthread_self(), sizeof(*set), set));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
isc_result_t
|
||||
isc_thread_setaffinity(int cpu) {
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY) || defined(HAVE_PTHREAD_SETAFFINITY_NP)
|
||||
int cpu_id = -1, cpu_aff_ok_counter = -1, n;
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY)
|
||||
cpuset_t _set, *set = &_set;
|
||||
#define cpuset_destroy(x) ((void)0)
|
||||
#elif defined(__NetBSD__)
|
||||
cpuset_t *set = cpuset_create();
|
||||
if (set == NULL) {
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
#else /* linux? */
|
||||
cpu_set_t _set, *set = &_set;
|
||||
#define cpuset_destroy(x) ((void)0)
|
||||
#endif
|
||||
|
||||
if (getaffinity(set) != 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
while (cpu_aff_ok_counter < cpu) {
|
||||
cpu_id++;
|
||||
if ((n = issetaffinity(cpu_id, set)) > 0) {
|
||||
cpu_aff_ok_counter++;
|
||||
} else if (n < 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
}
|
||||
if (setaffinity(cpu_id, set) != 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
cpuset_destroy(set);
|
||||
#elif defined(HAVE_PROCESSOR_BIND)
|
||||
if (processor_bind(P_LWPID, P_MYID, cpu, NULL) != 0) {
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
#else /* if defined(HAVE_CPUSET_SETAFFINITY) */
|
||||
UNUSED(cpu);
|
||||
#endif /* if defined(HAVE_CPUSET_SETAFFINITY) */
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
Reference in New Issue
Block a user