Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.9 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge