Procs script

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Script de diagnostic — type/fréquence CPU
Contexte AIX
Dépend de lsdev · Lsattr
Voir aussi Nb cpu script · Rperf script · Machine type script

procs retourne le type et la fréquence (en Hz) du processeur de la machine. La fréquence brute lue via Lsattr est en Hz ; le script la convertit en MHz avec un arrondi à la centaine près (arrondi bas en dessous de x10, haut au-dessus de x90, arrondi à 50 autour du milieu), ce qui permet ensuite de faire correspondre le résultat aux tables de référence utilisées par Rperf script.

Script

#!/usr/bin/ksh93

if [ "$1" == "-?" ]
then
  cat << TEXT

procs retourne le type et la fréquence du processeur

TEXT
exit
fi

# récupération des infos
procstr=`lsdev -Cc processor | head -1 | cut -d' ' -f1`
proctype=`lsattr -El $procstr | awk '/^type/ {print $2}'`
Hz=`lsattr -El ${procstr%% *} -a frequency -F value`

# conversion Hz -> MHz avec arrondi
if [[ ! -z $Hz ]]
then
    if (( ($Hz%1000000) >= 500000 ))
    then
        (( MHz=($Hz/1000000) + 1 ))
    else
        (( MHz=($Hz/1000000) ))
    fi
else
    echo "MHz rating is not available, exiting"
    exit 2
fi

# arrondi à la centaine pour matcher les tables de référence
dd=${MHz:0:2}
ff=${MHz:2:9}

if (( $ff < 10 ))
then
    ff=${ff//[0-9]/0}
elif (( $ff > 90 ))
then
    ff=${ff//[0-9]/0}
    let dd=$dd+1
elif (( $ff > 40 ))
then
    if (( $ff < 60 ))
    then
        ff=50
    fi
fi

roundedMHz=$dd$ff

printf "%s %s hz\n" $proctype $roundedMHz