Только выходное значение, если x> y в awk

ВХОД:

0:root@server:/root # vmstat 60 2 System configuration: lcpu=52 mem=131072MB ent=10.00 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------------------- rb avm fre re pi po fr sr cy in sy cs us sy id wa pc ec 5 0 13254063 12378057 0 0 0 0 0 0 3411 22516 9063 10 2 88 0 1.94 19.4 5 0 13341251 12290955 0 0 0 0 0 0 3507 20192 9062 9 2 89 0 1.88 18.8 0:root@server:/root # 

НЕОБХОДИМЫЙ ВЫХОД:

 0 

Оно равно нулю, так как среднее r <lcpu. Значения «id» в этом случае не важны.

другой INPUT:

 0:root@server:/root # vmstat 60 2 System configuration: lcpu=52 mem=131072MB ent=10.00 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------------------- rb avm fre re pi po fr sr cy in sy cs us sy id wa pc ec 52 0 13254063 12378057 0 0 0 0 0 0 3411 22516 9063 10 2 6 0 1.94 19.4 53 0 13341251 12290955 0 0 0 0 0 0 3507 20192 9062 9 2 4 0 1.88 18.8 0:root@server:/root # 

НЕОБХОДИМЫЙ ВЫХОД:

 95 

Это 95, потому что среднее r> lcpu. И это 95, потому что id означает простоя, но нам нужно потребление процессора. Таким образом, 6 + 4 – это значение простоя, среднее из них равно 5. Таким образом, 100-5 = 95% – это загрузка процессора.

Среднее значение необходимо и в «r»! Не только в «id». В последнем примере это 52,5, поэтому было больше 52.

Это общая проблема UNIX для измерения потребления ЦП. Если r> lcpu и использование cpu% очень велико, то у нас есть узкое место процессора.

Интересно, что нет решения для обработки вывода vmstat, поэтому я прошу об этом гроссмейстерам awk.

Вопрос : Мне нужно что-то вроде этого: «vmstat 60 2 | GODLY-AWK-MAGIC-HERE»

Для получения дополнительной информации см. (Я не мог найти лучшую ссылку):

http://aix4admins.blogspot.com/2011/09/vmstat-t-5-3-shows-3-statistics-in-5.html

Если выполняемые потоки (r), деленные на количество CPU, больше одного -> возможное узкое место процессора

One Solution collect form web for “Только выходное значение, если x> y в awk”

Очень сырой:

 awk ' BEGIN { d = -1 } /lcpu/ { lcpu = substr($3, 6); next } $1 == "r" { ++d; next } d < 0 { next } { ++d r += $1 id += $16 next } END { if (r / d > lcpu) print 100 - id / d else print 0 } ' 

или если вам нравится:

 awk ' /lcpu/ { lcpu=substr($3, 6) } $1 ~ /[0-9]+/ { ++d r += $1 id += $16 next } END { print (r/d>lcpu) ? 100 - id / d : 0 } ' 

чтобы:

 awk '/lcpu/{lcpu=substr($3,6)}$1~/[0-9]+/{++d;r+=$1;id+=$16;next;}END{print(r/d>lcpu)?100-id/d:0}' 

Получает ли он результаты, которые вы хотите?

  • Обработать несколько файлов и распечатать имя файла без расширения и значение определенного ключа
  • UNIX вставляют столбцы и вставляют нули для всех отсутствующих значений
  • Удалить строку, содержащую первое появление «pattern1» после последнего появления «pattern2»?
  • Синтаксическая ошибка удаления повторяющихся строк через файл awk '! X ++
  • В awk, как я могу сделать логическое значение, которое я могу переключить?
  • Нужна помощь в обработке текстового файла с awk для соответствия формату файлов CSV
  • nmap-скрипт, необходимый для вывода текста в формат csv
  • Заменить строку последовательным индексом
  • Linux + захватывает только IP из команды mount
  • вставить строку для отсутствующего значения
  • Сравните два текстовых файла и найдите соответствующие строки
  • Найти дыры в перечислении в awk
  • Linux и Unix - лучшая ОС в мире.