значение sysctl kern.cp_times и др
Добавлено: 2010-04-20 0:41:12
Здравствуйте!
прошу подсказать, какой смысл в некоторыхз переменных sysctl. гугол и маны ничего существеннного не подсказали, лазание по сырцам принесло пользу, но ее недостаточно(
вопросы:
1)какой смысл в переменных sysctl
kern.cp_time
kern.cp_times,
kern,clockrate и
kern.sched.balance_interval.
2) есть ли между ними связь, если да то какая
3) ткните пальцем, где я дурак и что не так делал пытаясь отыскать заветную связь
да, пожалуйста не надо посылать абстрактно в маны и гугол. если есть что почитать по теме, подкиньте ссыль, или слова для гугления..
итак, сабж, история
надобно мне посчитать загрузку процессора, да с максимальной точностью. а кто кроме ядра это может знать.
ну я и вопрошаю ну думаю, то что надо - как раз время работы проца
в исходниках выковырял, что это время, проведенное процессором в различных состояниях - "user", "nice", "system", "interrupt", "idle". простеньким скриптом выковырял, что это не секунды и не миллискунды и не такты процессора, а ~ 1/132,7 секунды.
хмм
округлим до 133 и поищем..
на много процессорных системах соотношение несколько ниже(в клетке у vadim64 - 128 с мелочью)
вот собствено и все что мне удалось про это откопать. гугол шлет на форум, где тоже не нсобо информативно .. в манах параметры эти я не нашел
прошу подсказать, какой смысл в некоторыхз переменных sysctl. гугол и маны ничего существеннного не подсказали, лазание по сырцам принесло пользу, но ее недостаточно(
вопросы:
1)какой смысл в переменных sysctl
kern.cp_time
kern.cp_times,
kern,clockrate и
kern.sched.balance_interval.
2) есть ли между ними связь, если да то какая
3) ткните пальцем, где я дурак и что не так делал пытаясь отыскать заветную связь
да, пожалуйста не надо посылать абстрактно в маны и гугол. если есть что почитать по теме, подкиньте ссыль, или слова для гугления..
итак, сабж, история
надобно мне посчитать загрузку процессора, да с максимальной точностью. а кто кроме ядра это может знать.
ну я и вопрошаю
Код: Выделить всё
# sysctl -d kern
...
kern.cp_times: per-CPU time statistics
kern.cp_time: CPU time statistics
...Код: Выделить всё
[22:37]~/# sysctl kern.cp_time
kern.cp_time: 1232514 3577 850373 457743 26268972
[22:37]~/# sysctl kern.cp_times
kern.cp_times: 1232596 3577 850433 457777 26269695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Код: Выделить всё
[0:21]~/> cat test.sh
#!/bin/sh
time=`date +%s`
boottime=`sysctl kern.boottime | awk '{print substr($5,1,length($5)-1)}'`
uptime=`expr $time - $boottime`
cp_times=`sysctl kern.cp_times`
cp_time=`sysctl kern.cp_time`
cpus=`sysctl kern.smp.cpus | awk '{print $2}'`
echo "raw values:"
echo $cp_time
echo $cp_times
echo
set -- $cp_time
shift
echo -n "Overall: "
echo "($1 + $2 + $3 + $4 + $5) / $uptime" | bc -l
echo "Per-core:"
set -- $cp_times
shift
for i in `jot $cpus`
do
echo -n "Core #$i: "
echo "($1 + $2 + $3 + $4 + $5) / $uptime" | bc -l
for j in `jot 5`
do
shift
done
done
[0:21]~/> ./test.sh
raw values:
kern.cp_time: 1327064 3653 901578 476911 26935198
kern.cp_times: 1327063 3653 901578 476911 26935198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Overall: 132.78271035363149761483
Per-core:
Core #1: 132.78270587444850059349
округлим до 133 и поищем..
Код: Выделить всё
[0:59]~/> sysctl -a | grep 133
kern.clockrate: { hz = 1000, tick = 1000, profhz = 2000, stathz = 133 }
kern.sched.balance_interval: 133
dev.atapci.1.%desc: VIA 8237 UDMA133 controllerвот собствено и все что мне удалось про это откопать. гугол шлет на форум, где тоже не нсобо информативно .. в манах параметры эти я не нашел