Получение использования CPU тот же каждый раз.

compat_linux OpenBSD (8) может быть полезен для выполнения некоторых вещей, но взаимодействия с устройствами?

Это - просто простой перевод системного вызова, который является степенью уловки.

Как эта утилита управляет "IronKey"? ioctl (2) к/dev узлу, некоторому волшебному модулю ядра Linux?

Я собираюсь рискнуть и сказать, что это не собирается работать над OpenBSD.

Кроме того, к MaxMackie это не связано. compat_linux OpenBSD (8) i386-только.

13
28.03.2013, 08:40
7 ответов

Возможно, используйте этого на основе ps вывод:

ps aux  | awk 'BEGIN { sum = 0 }  { sum += $3 }; END { print sum }
4
27.01.2020, 19:52

Используйте команду часов или для цикла в оболочке,

т.е. watch -n1 "top -b -n1 | grep 'Cpu(s)' | awk '{print \$2 + \$4}'"

0
27.01.2020, 19:52

Вы правы, top кажется, дает неправильное использование ЦП на первом повторении. Можно работать вокруг этой проблемы как это:

top -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'

Это, конечно, займет вдвое больше времени, но оно будет работать так или иначе.

Если Вы все еще хотите это работа быстрее, можно использовать -d опция, например, в течение 1 второго общего периода измерения используют половину из него:

top -d 0.5 -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'
13
27.01.2020, 19:52
  • 1
    serverfault.com/a/436499/134517 также, многому потребуется более двух раз время, как потребуется примерно одна секунда вместо почти ни одного. –  altendky 30.09.2016, 18:47
  • 2
    В дополнение к комментарию altendky см. также ответ terdon для объяснения, почему проблема там во-первых. –  Ruslan 30.09.2016, 19:01

Только подробно остановиться на ответе @Ruslan, top разделения использование ЦП между пользователем, системные процессы и nice процессы, мы хотим сумму трех. Так, мы можем работать top в bрежим atch, который позволяет нам анализировать его вывод. Однако, как объяснено здесь, 1-е повторение top -b возвращает проценты начиная с начальной загрузки, нам поэтому нужны по крайней мере два повторения (-n 2) получить текущий процент. Для ускорения вещей можно установить delay между повторениями к 0.01:

top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
5
27.01.2020, 19:52

Почему Вы заботитесь об использовании ЦП? Среднее число загрузки является намного лучшим индикатором:

cat /proc/loadavg

Если Вам действительно нужно использование ЦП, анализируя /proc/stat вероятно, способ пойти.

0
27.01.2020, 19:52
  • 1
    Среднее число Загрузки является в основном интегралом времени использования ЦП (разделенный на время). Почему Вы сказали бы, что интегральная характеристика является намного лучшим индикатором [всего], чем дифференциальное, когда у них есть совершенно другие варианты использования? Кроме того, /proc/stat не дает использование ЦП, как это, нужно считать его дважды с некоторым временем между чтениями и сделать некоторые вычисления для получения использования ЦП. Это что top делает. –  Ruslan 17.09.2013, 14:41
  • 2
    я не могу математика, таким образом, я должен признать, что действительно не понимаю различия между интегралом и дифференциалом:/"Среднее число загрузки, является в основном интегралом времени использования ЦП" - это действительно? AFAIK процесс, который зависает в состоянии D, вызывает увеличение загрузки, но никакое использование ЦП. "Почему был бы Вы говорить..." - OP не говорит, что он действительно хочет выполнить, таким образом, честно говоря, я просто предполагаю, что он хочет измерить свою системную нагрузку и думал, что использование ЦП будет лучшим индикатором для этого, таким образом, я направил его для загрузки среднего числа. –  Martin von Wittich 17.09.2013, 17:13
  • 3
    Из Вашей ссылки: "Системы вычисляют среднее число загрузки, поскольку экспоненциально ослабил/взвесил скользящее среднее значение числа загрузки". и "системная нагрузка является мерой объема вычислительной работы". D состояние не берет вычислительной работы. То, что берет, является процессами, которые используют процессорное время. Таким образом, средняя загрузка является в основном процентом времени, ЦП не был неактивен в течение некоторого промежутка времени (скажите, минуты к десяткам минут). И использование ЦП является процентом времени, ЦП не неактивен в масштабе времени миллисекунд - т.е. обновил каждый раз, когда Вы читаете его и отражающий текущее состояние. –  Ruslan 17.09.2013, 17:22

Используя sar команда

sar 1 10

Это означает: получите результат 10 раз в каждую секунду

-2
27.01.2020, 19:52

Технически первый top не всегда выводит одно и то же значение; он просто выводит среднее значение загрузки процессора с момента последней загрузки. Так как top для расчета загрузки процессора использует дельту статистики /proc/stat, первое значение вычисляется при сравнении с нулем, что приводит к неверному (но WAD) результату.

Если вы не хотите использовать top, вы можете напрямую проанализировать /proc/stat:

cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5) "%"}'

Так же быстрее и точнее.

Вы можете протестировать его с стрессом :

stress -c 1 -q &

И сделать

killall stress

после.

6
27.01.2020, 19:52

Теги

Похожие вопросы