Страница 1 из 1
Данные загрузки CPU
Добавлено: 2009-10-07 11:14:24
Pattern
Нужно в лог сбросить текущее состояние CPU со статистикой по каждому ядру. Если запустить
Код: Выделить всё
$ top -P -s1 cpu
last pid: 1338; load averages: 0.37, 0.44, 0.34 up 0+00:21:11 12:03:08
157 processes: 2 running, 155 sleeping
CPU 0: 3.0% user, 0.0% nice, 6.0% system, 0.0% interrupt, 91.0% idle
CPU 1: 13.5% user, 0.0% nice, 3.8% system, 0.0% interrupt, 82.7% idle
Mem: 377M Active, 375M Inact, 243M Wired, 25M Cache, 112M Buf, 970M Free
Swap: 1024M Total, 1024M Free
данные по загрузке ядер появляются только спустя 1 секунду.
Соответственно, если выполнить следующую команду
Код: Выделить всё
$ top -P -s1 cpu > top.info
$ less top.info
last pid: 1348; load averages: 0.31, 0.32, 0.30 up 0+00:25:01 12:06:58
157 processes: 2 running, 155 sleeping
Mem: 378M Active, 461M Inact, 154M Wired, 25M Cache, 112M Buf, 971M Free
Swap: 1024M Total, 1024M Free
то никакой информации по процессору нет вообще.
Каким образом можно получить эти данные? Может есть какая то другая утилита?
на всякий случай
Код: Выделить всё
$ uname -a
FreeBSD pattern.work 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #1: Mon Aug 17 19:29:07 MSD 2009 pattern@pattern:/usr/obj/usr/src/sys/WORK i386
Re: Данные загрузки CPU
Добавлено: 2009-10-07 11:39:37
sch
man iostat
Re: Данные загрузки CPU
Добавлено: 2009-10-07 13:20:15
Pattern
Спасибо
sch за подсказку.
Только я чего то не пойму
Код: Выделить всё
$ man iostat
...
cpu
us % of cpu time in user mode
ni % of cpu time in user mode running niced processes
sy % of cpu time in system mode
in % of cpu time in interrupt mode
id % of cpu time in idle mode
Поигравшись с ключиками, нашёл нужный вывод. Да вот результат вывода не очень впечатлил
Код: Выделить всё
$ top -P -s1 cpu
last pid: 1913; load averages: 0.29, 0.31, 0.29 up 0+02:20:31 14:02:28
185 processes: 1 running, 184 sleeping
CPU 0: 11.3% user, 0.0% nice, 0.0% system, 0.0% interrupt, 88.7% idle
CPU 1: 7.5% user, 0.0% nice, 15.7% system, 0.0% interrupt, 76.9% idle
Mem: 625M Active, 657M Inact, 191M Wired, 440K Cache, 112M Buf, 517M Free
Swap: 1024M Total, 1024M Free
$ iostat -dC -t proc
cpu
us ni sy in id
9 0 6 0 85
Во первых, я не нашёл как вывести инфу по каждому ядру.
Во вторых, выводится практически всегда один и тот же результат. И если его сравнить со средним значением по обим ядрам top'а
Код: Выделить всё
$ top -s1 cpu
last pid: 1945; load averages: 0.41, 0.32, 0.29 up 0+02:33:40 14:15:37
186 processes: 2 running, 184 sleeping
CPU: 4.1% user, 0.0% nice, 5.6% system, 0.0% interrupt, 90.3% idle
Mem: 627M Active, 688M Inact, 280M Wired, 440K Cache, 112M Buf, 395M Free
Swap: 1024M Total, 1024M Free
$ iostat -dC -t proc
cpu
us ni sy in id
9 0 6 0 84
то результат не очень то похож на правду. Можно конечно сослаться на погрешность, но к сожалению это не совсем то, что я хотел получить.
Может я не все ключи учел или вообще не правильно вывожу данные?
Re: Данные загрузки CPU
Добавлено: 2009-10-07 15:28:52
sch
похоже iostat не умеет для каждого ядра отдельно показывать нагрузку - выдает нечто средневзвешенное
Re: Данные загрузки CPU
Добавлено: 2009-10-07 15:34:26
Pattern
не уже ли больше в системе нет никакой тулзы, которая это умеет делать? TOP же как то выхватвает эти данные...
Re: Данные загрузки CPU
Добавлено: 2009-10-07 20:16:30
paradox
ну можно еще попробовать в vmstat поискать
Re: Данные загрузки CPU
Добавлено: 2009-10-07 21:22:09
Pattern
paradox, это именно то что нужно
Код: Выделить всё
$ vmstat -Pp proc
procs memory page faults cpu0 cpu1
r b w avm fre flt re pi po fr sr in sy cs us sy id us sy id
0 0 0 1626M 2604M 320 1 1 0 299 0 18 13521 1691 6 10 84 7 7 86
$ vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
6 10 7 7
Спасибо за помощь!

Re: Данные загрузки CPU
Добавлено: 2009-10-07 21:41:11
Pattern
Блин, рано обрадовался
Код: Выделить всё
$ vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
6 10 7 7
$ vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
6 10 7 7
$ vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
6 10 7 7
$ vmstat -Pp proc -w 1
procs memory page faults cpu0 cpu1
r b w avm fre flt re pi po fr sr in sy cs us sy id us sy id
2 0 0 1626M 2603M 263 0 1 0 247 0 15 13658 1711 6 10 84 7 7 86
1 0 0 1626M 2603M 1 0 0 0 0 0 15 12460 1854 7 8 85 4 5 91
1 0 0 1631M 2599M 1060 0 0 0 1 0 5 13519 1630 8 8 83 1 4 94
0 0 0 1626M 2603M 1 0 0 0 1061 0 0 15526 1702 4 4 93 5 16 78
Такое впечатление, что он запускается с умолчальными какими то данными. Как быть?
Re: Данные загрузки CPU
Добавлено: 2009-10-07 23:36:50
paradox
что значит умолчальными
и что значит статистика по ядру
я просто не совсем понимаю что ты хочешь за статистику
Re: Данные загрузки CPU
Добавлено: 2009-10-08 0:06:43
Pattern
Есть 2-х ядерный процессор с ядрами CPU0 и CPU1. TOP показывает на каждом из них по 5 параметров
Код: Выделить всё
CPU 0: 11.3% user, 0.0% nice, 0.0% system, 0.0% interrupt, 88.7% idle
CPU 1: 7.5% user, 0.0% nice, 15.7% system, 0.0% interrupt, 76.9% idle
Меня интересует только пользовательская (user) и системная (system) нагрузки каждого ядра.
vmstat показывает эти данные, но каждый раз при запросе (как я показал выше)
Код: Выделить всё
vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
выводятся одни и те же данные в последовательности cpu0_user cpu0_system cpu1_user cpu1_system
Я и решил, что это какие то данные по умолчанию, так как не может такого быть, чтобы при 10 подряд посланных запросов выводились одни и тебе же данные. При чем эти же данные данные показываются в первой строке запроса
vmstat -Pp proc -w 1
2 0 0 1626M 2603M 263 0 1 0 247 0 15 13658 1711 6 10 84 7 7 86
и только последующие показывают реальное состояние
1 0 0 1626M 2603M 1 0 0 0 0 0 15 12460 1854 7 8 85 4 5 91
1 0 0 1631M 2599M 1060 0 0 0 1 0 5 13519 1630 8 8 83 1 4 94
0 0 0 1626M 2603M 1 0 0 0 1061 0 0 15526 1702 4 4 93 5 16 78
То есть грубо говоря, этим запросом
Код: Выделить всё
vmstat -Pp proc | awk 'NR==3 {print $15, $16, $18, $19}'
я получаю не актуальную нагрузку на процессор, а какие кэшированные(???) данные, а нужно получить именно нагрузку на данный момент.
Re: Данные загрузки CPU
Добавлено: 2009-10-08 11:53:20
jammin
У vmstat есть ключик -с.
Юзайте
Код: Выделить всё
vmstat -Pp proc -с 2 | awk 'NR==4 {print $15, $16, $18, $19}'
Re: Данные загрузки CPU
Добавлено: 2009-10-08 11:56:40
Pattern
Да, это то что нужно. Большое спасибо всем за помощь!