Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/net/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  rps_default_mask.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

readonly ksft_skip=4
readonly cpus=$(nproc)
ret=0

[ $cpus -gt 2 ] || exit $ksft_skip

readonly INITIAL_RPS_DEFAULT_MASK=$(cat /proc/sys/net/core/rps_default_mask)
readonly TAG="$(mktemp -u XXXXXX)"
readonly VETH="veth${TAG}"
readonly NETNS="ns-${TAG}"

setup() {
 ip netns add "${NETNS}"
 ip -netns "${NETNS}" link set lo up
}

cleanup() {
 echo $INITIAL_RPS_DEFAULT_MASK > /proc/sys/net/core/rps_default_mask
 ip netns del $NETNS
}

chk_rps() {
 local rps_mask expected_rps_mask=$4
 local dev_name=$3
 local netns=$2
 local cmd="cat"
 local msg=$1

 [ -n "$netns" ] && cmd="ip netns exec $netns $cmd"

 rps_mask=$($cmd /sys/class/net/$dev_name/queues/rx-0/rps_cpus)
 printf "%-60s" "$msg"

 # In case there is more than 32 CPUs we need to remove commas from masks
 rps_mask=${rps_mask//,}
 expected_rps_mask=${expected_rps_mask//,}
 if [ $rps_mask -eq $expected_rps_mask ]; then
  echo "[ ok ]"
 else
  echo "[fail] expected $expected_rps_mask found $rps_mask"
  ret=1
 fi
}

trap cleanup EXIT

echo 0 > /proc/sys/net/core/rps_default_mask
setup
chk_rps "empty rps_default_mask" $NETNS lo 0
cleanup

echo 1 > /proc/sys/net/core/rps_default_mask
setup
chk_rps "changing rps_default_mask dont affect existing devices" "" lo $INITIAL_RPS_DEFAULT_MASK

echo 3 > /proc/sys/net/core/rps_default_mask
chk_rps "changing rps_default_mask dont affect existing netns" $NETNS lo 0

ip link add name $VETH type veth peer netns $NETNS name $VETH
ip link set dev $VETH up
ip -n $NETNS link set dev $VETH up
chk_rps "changing rps_default_mask affect newly created devices" "" $VETH 3
chk_rps "changing rps_default_mask don't affect newly child netns[II]" $NETNS $VETH 0
ip link del dev $VETH
ip netns del $NETNS

setup
chk_rps "rps_default_mask is 0 by default in child netns" "$NETNS" lo 0

ip netns exec $NETNS sysctl -qw net.core.rps_default_mask=1
ip link add name $VETH type veth peer netns $NETNS name $VETH
chk_rps "changing rps_default_mask in child ns don't affect the main one" "" lo $INITIAL_RPS_DEFAULT_MASK
chk_rps "changing rps_default_mask in child ns affects new childns devices" $NETNS $VETH 1
chk_rps "changing rps_default_mask in child ns don't affect existing devices" $NETNS lo 0

exit $ret

Messung V0.5
C=96 H=97 G=96

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.