From 67af3c7a3b374d991deaae581320b9040157b1c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 9 Feb 2022 10:00:59 +0100 Subject: [PATCH] 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. (cherry picked from commit 0500345513739c97d2eb6ecd1dbd0a2ce7d0c0b4) --- bin/tests/system/cpu/clean.sh | 17 ---- bin/tests/system/cpu/ns1/named.conf.in | 20 ----- bin/tests/system/cpu/prereq.sh | 37 --------- bin/tests/system/cpu/setup.sh | 21 ----- bin/tests/system/cpu/tests.sh | 48 ----------- configure.ac | 4 - lib/isc/include/isc/thread.h | 6 -- lib/isc/thread.c | 105 ------------------------- 8 files changed, 258 deletions(-) delete mode 100644 bin/tests/system/cpu/clean.sh delete mode 100644 bin/tests/system/cpu/ns1/named.conf.in delete mode 100644 bin/tests/system/cpu/prereq.sh delete mode 100644 bin/tests/system/cpu/setup.sh delete mode 100644 bin/tests/system/cpu/tests.sh diff --git a/bin/tests/system/cpu/clean.sh b/bin/tests/system/cpu/clean.sh deleted file mode 100644 index 4a9f12fd20..0000000000 --- a/bin/tests/system/cpu/clean.sh +++ /dev/null @@ -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 diff --git a/bin/tests/system/cpu/ns1/named.conf.in b/bin/tests/system/cpu/ns1/named.conf.in deleted file mode 100644 index 6c934b23e4..0000000000 --- a/bin/tests/system/cpu/ns1/named.conf.in +++ /dev/null @@ -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; }; -}; diff --git a/bin/tests/system/cpu/prereq.sh b/bin/tests/system/cpu/prereq.sh deleted file mode 100644 index 8936129634..0000000000 --- a/bin/tests/system/cpu/prereq.sh +++ /dev/null @@ -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 diff --git a/bin/tests/system/cpu/setup.sh b/bin/tests/system/cpu/setup.sh deleted file mode 100644 index 9676770adb..0000000000 --- a/bin/tests/system/cpu/setup.sh +++ /dev/null @@ -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 diff --git a/bin/tests/system/cpu/tests.sh b/bin/tests/system/cpu/tests.sh deleted file mode 100644 index 31031a12dc..0000000000 --- a/bin/tests/system/cpu/tests.sh +++ /dev/null @@ -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 diff --git a/configure.ac b/configure.ac index 672bec018c..cb3f88d36d 100644 --- a/configure.ac +++ b/configure.ac @@ -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 ]) diff --git a/lib/isc/include/isc/thread.h b/lib/isc/include/isc/thread.h index 59b3222337..e078097593 100644 --- a/lib/isc/include/isc/thread.h +++ b/lib/isc/include/isc/thread.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 diff --git a/lib/isc/thread.c b/lib/isc/thread.c index 4e2f9af8ba..4c7380cac1 100644 --- a/lib/isc/thread.c +++ b/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); -}