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


Quelle  governor.sh   Sprache: Shell

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

# protect against multiple inclusion
if [ $FILE_GOVERNOR ]; then
 return 0
else
 FILE_GOVERNOR=DONE
fi

source cpu.sh
source cpufreq.sh

CUR_GOV=
CUR_FREQ=

# Find governor's directory path
# $1: policy, $2: governor
find_gov_directory()
{
 if [ -d $CPUFREQROOT/$2 ]; then
  printf "$CPUFREQROOT/$2\n"
 elif [ -d $CPUFREQROOT/$1/$2 ]; then
  printf "$CPUFREQROOT/$1/$2\n"
 else
  printf "INVALID\n"
 fi
}

# $1: policy
find_current_governor()
{
 cat $CPUFREQROOT/$1/scaling_governor
}

# $1: policy
backup_governor()
{
 CUR_GOV=$(find_current_governor $1)

 printf "Governor backup done for $1: $CUR_GOV\n"

 if [ $CUR_GOV == "userspace" ]; then
  CUR_FREQ=$(find_current_freq $1)
  printf "Governor frequency backup done for $1: $CUR_FREQ\n"
 fi

 printf "\n"
}

# $1: policy
restore_governor()
{
 __switch_governor $1 $CUR_GOV

 printf "Governor restored for $1 to $CUR_GOV\n"

 if [ $CUR_GOV == "userspace" ]; then
  set_cpu_frequency $1 $CUR_FREQ
  printf "Governor frequency restored for $1: $CUR_FREQ\n"
 fi

 printf "\n"
}

# param:
# $1: policy, $2: governor
__switch_governor()
{
 echo $2 > $CPUFREQROOT/$1/scaling_governor
}

# param:
# $1: cpu, $2: governor
__switch_governor_for_cpu()
{
 echo $2 > $CPUROOT/$1/cpufreq/scaling_governor
}

# SWITCH GOVERNORS

# $1: cpu, $2: governor
switch_governor()
{
 local filepath=$CPUFREQROOT/$1/scaling_available_governors

 # check if governor is available
 local found=$(cat $filepath | grep $2 | wc -l)
 if [ $found = 0 ]; then
  echo 1;
  return
 fi

 __switch_governor $1 $2
 echo 0;
}

# $1: policy, $2: governor
switch_show_governor()
{
 cur_gov=find_current_governor
 if [ $cur_gov == "userspace" ]; then
  cur_freq=find_current_freq
 fi

 # switch governor
 __switch_governor $1 $2

 printf "\nSwitched governor for $1 to $2\n\n"

 if [ $2 == "userspace" -o $2 == "powersave" -o $2 == "performance" ]; then
  printf "No files to read for $2 governor\n\n"
  return
 fi

 # show governor files
 local govpath=$(find_gov_directory $1 $2)
 read_cpufreq_files_in_dir $govpath
}

# $1: function to be called, $2: policy
call_for_each_governor()
{
 local filepath=$CPUFREQROOT/$2/scaling_available_governors

 # Exit if cpu isn't managed by cpufreq core
 if [ ! -f $filepath ]; then
  return;
 fi

 backup_governor $2

 local governors=$(cat $filepath)
 printf "Available governors for $2: $governors\n"

 for governor in $governors; do
  $1 $2 $governor
 done

 restore_governor $2
}

# $1: loop count
shuffle_governors_for_all_cpus()
{
 printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"

 for i in `seq 1 $1`; do
  for_each_policy call_for_each_governor switch_show_governor
 done
 printf "%s\n\n" "------------------------------------------------"
}

Messung V0.5
C=86 H=91 G=88

¤ Dauer der Verarbeitung: 0.22 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