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

Quelle  test_vmalloc.sh

  Sprache: Shell
 

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2018 Uladzislau Rezki (Sony) <urezki@gmail.com>
#
# This is a test script for the kernel test driver to analyse vmalloc
# allocator. Therefore it is just a kernel module loader. You can specify
# and pass different parameters in order to:
#     a) analyse performance of vmalloc allocations;
#     b) stressing and stability check of vmalloc subsystem.

TEST_NAME="vmalloc"
DRIVER="test_${TEST_NAME}"
NUM_CPUS=`grep -c ^processor /proc/cpuinfo`

# 1 if fails
exitcode=1

# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4

#
# Static templates for performance, stressing and smoke tests.
# Also it is possible to pass any supported parameters manualy.
#
PERF_PARAM="sequential_test_order=1 test_repeat_count=3"
SMOKE_PARAM="test_loop_count=10000 test_repeat_count=10"
STRESS_PARAM="nr_threads=$NUM_CPUS test_repeat_count=20"

check_test_requirements()
{
 uid=$(id -u)
 if [ $uid -ne 0 ]; then
  echo "$0: Must be run as root"
  exit $ksft_skip
 fi

 if ! which modprobe > /dev/null 2>&1; then
  echo "$0: You need modprobe installed"
  exit $ksft_skip
 fi

 if ! modinfo $DRIVER > /dev/null 2>&1; then
  echo "$0: You must have the following enabled in your kernel:"
  echo "CONFIG_TEST_VMALLOC=m"
  exit $ksft_skip
 fi
}

run_perfformance_check()
{
 echo "Run performance tests to evaluate how fast vmalloc allocation is."
 echo "It runs all test cases on one single CPU with sequential order."

 modprobe $DRIVER $PERF_PARAM > /dev/null 2>&1
 echo "Done."
 echo "Ccheck the kernel message buffer to see the summary."
}

run_stability_check()
{
 echo "Run stability tests. In order to stress vmalloc subsystem all"
 echo "available test cases are run by NUM_CPUS workers simultaneously."
 echo "It will take time, so be patient."

 modprobe $DRIVER $STRESS_PARAM > /dev/null 2>&1
 echo "Done."
 echo "Check the kernel ring buffer to see the summary."
}

run_smoke_check()
{
 echo "Run smoke test. Note, this test provides basic coverage."
 echo "Please check $0 output how it can be used"
 echo "for deep performance analysis as well as stress testing."

 modprobe $DRIVER $SMOKE_PARAM > /dev/null 2>&1
 echo "Done."
 echo "Check the kernel ring buffer to see the summary."
}

usage()
{
 echo -n "Usage: $0 [ performance ] | [ stress ] | | [ smoke ] | "
 echo "manual parameters"
 echo
 echo "Valid tests and parameters:"
 echo
 modinfo $DRIVER
 echo
 echo "Example usage:"
 echo
 echo "# Shows help message"
 echo "./${DRIVER}.sh"
 echo
 echo "# Runs 1 test(id_1), repeats it 5 times by NUM_CPUS workers"
 echo "./${DRIVER}.sh nr_threads=$NUM_CPUS run_test_mask=1 test_repeat_count=5"
 echo
 echo -n "# Runs 4 tests(id_1|id_2|id_4|id_16) on one CPU with "
 echo "sequential order"
 echo -n "./${DRIVER}.sh sequential_test_order=1 "
 echo "run_test_mask=23"
 echo
 echo -n "# Runs all tests by NUM_CPUS workers, shuffled order, repeats "
 echo "20 times"
 echo "./${DRIVER}.sh nr_threads=$NUM_CPUS test_repeat_count=20"
 echo
 echo "# Performance analysis"
 echo "./${DRIVER}.sh performance"
 echo
 echo "# Stress testing"
 echo "./${DRIVER}.sh stress"
 echo
 exit 0
}

function validate_passed_args()
{
 VALID_ARGS=`modinfo $DRIVER | awk '/parm:/ {print $2}' | sed 's/:.*//'`

 #
 # Something has been passed, check it.
 #
 for passed_arg in $@; do
  key=${passed_arg//=*/}
  val="${passed_arg:$((${#key}+1))}"
  valid=0

  for valid_arg in $VALID_ARGS; do
   if [[ $key = $valid_arg ]] && [[ $val -gt 0 ]]; then
    valid=1
    break
   fi
  done

  if [[ $valid -ne 1 ]]; then
   echo "Error: key or value is not correct: ${key} $val"
   exit $exitcode
  fi
 done
}

function run_manual_check()
{
 #
 # Validate passed parameters. If there is wrong one,
 # the script exists and does not execute further.
 #
 validate_passed_args $@

 echo "Run the test with following parameters: $@"
 modprobe $DRIVER $@ > /dev/null 2>&1
 echo "Done."
 echo "Check the kernel ring buffer to see the summary."
}

function run_test()
{
 if [ $# -eq 0 ]; then
  usage
 else
  if [[ "$1" = "performance" ]]; then
   run_perfformance_check
  elif [[ "$1" = "stress" ]]; then
   run_stability_check
  elif [[ "$1" = "smoke" ]]; then
   run_smoke_check
  else
   run_manual_check $@
  fi
 fi
}

check_test_requirements
run_test $@

exit 0

Messung V0.5 in Prozent
C=83 H=96 G=89

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-04-27) ¤

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