Что такое команда командной строки Unix для получения информации о загрузке системы?

Чтобы пропустить зависание «Настройка ALSA», нажмите «Ctrl» и клавишу вверху «Tab».

Система загружается. Потом как root делаем:

apt-get purge pulseaudio*

С уважением!

-4
21.11.2019, 11:32
5 ответов

См. статью в Википедии о значениях загрузки системы в стиле Unix -:.https://en.wikipedia.org/wiki/Load_(вычисления)

Короче говоря, если это среднее значение нагрузки в стиле Unix -, вам необходимо разделить это значение на количество используемых процессорных ядер в системе, а затем умножьте на 100 , чтобы получить процентное значение.

Как есть, значение нагрузки в стиле Unix -описывает среднее число фактически запущенных + ожидающих -для -процессов ЦП за определенный период времени :обычно сообщается о трех значениях нагрузки с использованием временных окон. 1, 5 и 15 минут соответственно. В Linux также учитываются процессы, ожидающие ввода-вывода; в большинстве систем Unix их нет.

Если значение нагрузки меньше количества используемых ядер процессора, это означает, что система не была полностью загружена в пределах окна усреднения и могла выполнять больше работы; если значение нагрузки больше, чем количество ядер процессора, это означает, что работы было больше, чем могли обработать процессоры.

В большинстве Unix -подобных систем (, включая Linux ), вы можете использовать команду uptimeдля получения такого вывода:

$ uptime
12:11:23 up  5:22,  1 user,  load average: 0.04, 0.05, 0.01

После слов load average:отображаются значения нагрузки для временных окон 1, 5 и 15 минут.

В Linux вы можете получить ту же информацию (и, в зависимости от версии ядра, возможно, и другую информацию ), прочитав /proc/loadavgвиртуальный файл, например, с помощью. cat /proc/loadavg.

В Linux вы можете преобразовать среднее значение нагрузки в процентное значение, например:

#!/bin/sh
# uses the 5-minute load value
LOADVAL5=$(awk '{ print $2; }' < /proc/loadavg)
NUMCPUS=$(getconf _NPROCESSORS_ONLN)
echo "$LOADVAL5 * 100 / $NUMCPUS" | bc

Конечно, этот сценарий неоптимизирован и поэтому не идеален для многократного запуска; если вы разрабатываете систему мониторинга, вы должны сделать расчет в программном коде, а не запускать внешний скрипт для расчета процента загрузки.

5
28.01.2020, 05:20

По вашему вопросу

how to extract system load % using CLI commands?

в Linux вы можете получить среднее значение нагрузки с помощью top .

0
28.01.2020, 05:20

uptimeпокажет среднюю загрузку за 1, 5 и 15 минут (, т. е. количество процессов, ожидающих запуска, в среднем в те периоды времени )на Unix, о которых я знаю:

$ uptime
 10:27:35 up 21 days, 22:59,  5 users,  load average: 0.13, 0.27, 0.37

Вы можете использовать awkдля разбора последних трех полей, разделенных запятыми или двоеточиями:

$ uptime | awk -F '[,:]' -v OFS='\n' '{ print $(NF-2),$(NF-1),$NF }'
 0.05
 0.16
 0.31

В Linux у вас должна быть возможность запросить значения в файловой системе /procс помощью простогоcat:

$ cat /proc/loadavg
0.10 0.07 0.09 1/3794 195765

Описание полей приведено в procруководстве(man procдля вашей системы Linux):

/proc/loadavg
       The first three fields in this file are load average figures giving
       the number of jobs in the run queue (state R) or waiting  for  disk
       I/O  (state  D)  averaged  over 1, 5, and 15 minutes.  They are the
       same as the load average numbers given by uptime(1) and other  pro‐
       grams.   The  fourth  field  consists of two numbers separated by a
       slash (/).  The first of these is the number of currently  runnable
       kernel  scheduling  entities (processes, threads).  The value after
       the slash is the number of kernel  scheduling  entities  that  cur‐
       rently  exist  on  the  system.   The fifth field is the PID of the
       process that was most recently created on the system.
0
28.01.2020, 05:20

Вы можете использовать команду «сверху». Таким образом вы получите PID, пользователя, используемый ЦП и т. д.

$ top

top - 15:12:59 up  4:43,  4 users,  load average: 0.15, 0.32, 0.30
Tasks: 252 total,   1 running, 203 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us,  1.3 sy,  0.0 ni, 95.7 id,  0.4 wa,  0.0 hi,  0.0  si,  0.0 st
KiB Mem :  8084528 total,   257360 free,  5410684 used,  2416484  buff/cache
KiB Swap:  8302588 total,  8198908 free,   103680 used.  1410824  availMem  

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+  COMMAND 
0
28.01.2020, 05:20

kernel/sched/loadavg.c

The global load average is an exponentially decaying average of nr_running + nr_uninterruptible

Это идеальный ответ. Особенно потому, что это приводит непосредственно к следующему вопросу :что является номером _работающим и номером _непрерывным?

Я настаивал на процентах --и до сих пор делаю в смысле OP --, но технический ответ на (Linux! )"Загрузка системы" это:

Количество задач "R". Плюс "Д".

«R» либо выполняется, либо ожидает его, то есть находится в очереди на выполнение. «D» — это (специальное )состояние ожидания -linux включает эти задачи, потому что они представляют как минимум не -загрузку ЦП «Система» («в основном ввод-вывод» ), но это здесь это не важно, за исключением того, что это показывает, что «загрузка системы» не является напрямую «загрузкой процессора».

Таким образом, это число задач/потоков, конкурирующих за ЦП.

Или доля выполняемой задачи в среднем.

В среднем... по одной скважине -определены периоды времени 1, 5 и 15 минут. Здесь я вставляю еще один кусок, на самом деле

#define FIXED_1         (1<<FSHIFT)     /* 1.0 as fixed-point */
#define LOAD_FREQ       (5*HZ+1)        /* 5 sec intervals */
#define EXP_1           1884            /* 1/exp(5sec/1min) as fixed-point */
#define EXP_5           2014            /* 1/exp(5sec/5min) */
#define EXP_15          2037            /* 1/exp(5sec/15min) */

/*
 * a1 = a0 * e + a * (1 - e)
 */
static inline unsigned long
calc_load(unsigned long load, unsigned long exp, unsigned long active)
{
        unsigned long newload;

        newload = load * exp + active * (FIXED_1 - exp);
        if (active >= load)
                newload += FIXED_1-1;

        return newload / FIXED_1;
}

Теперь для нормального -размера ГП "333" (между 100 -1000 )это дает 1666+1. Для усреднения за одну -минут частота дискретизации за пять -секунд очень хорошая :одна дюжина отсчетов в минуту для усреднения за минуту.

Этот комментарий a1 = a0 * e + a * (1 - e)показывает всю красоту :Выборка "a" (для "active", см. calc _load ()ниже )комбинируется с a0 (load )в (новую загрузку ).

Что такое FIXED _1, я не могу сказать. Я принимаю «1.0 как фиксированную точку » как подсказку, чтобы спросить:

А как насчет загрузки системы в %?

Для простоты я скажу :Один процессор может обслуживать один поток за раз.

Немного сложно. :Один «четырехъядерный» «много/гиперпоточный/-риппинг» ЦП может быть 8 ЦП или более для ядра.Это реализация "SMP".

Даже больше :четырехъядерников все же 4, а не восемь. Intel говорит о 120% типичном преимуществе гиперпоточности, как они это называют. Не 200%.

Таким образом, средняя нагрузка 6,8 в процентах для четырехъядерной системы с процессором 0 -7 будет означать:

За соответствующий период (последние 1,5 или 15 мин. ), в среднем было запущено почти 7 потоков. С 8 процессорами это выглядит как загрузка системы на 87%. Но 4 из этих 8 процессоров имеют «гиперпоточность», распараллеливая уже за счет пропускной способности.

6.8 будет скорее чуть выше 100%, чем ниже.

Чтобы избежать всех этих задач -и -сопоставления ядра, среднее значение нагрузки представляет собой необработанное число состояний «R» (плюс «D» ).

В приведенном выше примере для x86 я бы использовал 4 в качестве эталона для «100%», т. е. точки, в которой ни один поток не должен ждать, и ни одно ядро ​​не простаивает даже на пару наносекунд. "Хорошо сбалансированный" это было бы. Любая дополнительная нагрузка приводит к небольшой перегрузке процессора, выше 100%, выше 4 или даже 8.

Потому что с 9 запущенными потоками в 2-кратной 4-ядерной системе. то определенно один из них не может работать в любой момент времени. Таким образом, есть теоретическая 100%-я линия, которую вы можете провести --где-то между количеством ядер и числом потоков на ядро.

Вот почему я проголосовал за этот вопрос. Я могу дать себе пощечину только за то, что так сильно защищаю «процентную» интерпретацию. Не потому, что это так уж неправильно, а потому, что я потратил слишком много времени, когда справочная страница и исходный код ядра так хорошо это объясняют.

Ниже я оставляю всё как есть --может быть немного сбоку "видите, это тоже процент, и по существу" --но



Угадайте, что объясняет:man uptimeв паре строк. А я тут обсуждаю подсчет процентов, как 10-летний ребенок.

Load averages are not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.


Вот центральная часть ссылки telcoM, то есть статья в Википедии «Загрузка (вычислений )».

For example, one can interpret a load average of "1.73 0.60 7.98" on a single-CPU system as:

  • during the last minute, the system was overloaded by 73% on average (1.73 runnable processes, so that 0.73 processes had to wait for a turn for a single CPU system on average).
  • during the last 5 minutes, the CPU was idling 40% of the time on average.
  • during the last 15 minutes, the system was overloaded 698% on average (7.98 runnable processes, so that 6.98 processes had to wait for a turn for a single CPU system on average).

Бесполезно -объяснять. Три примера выбраны удачно.

Я проголосую за telcoM за ссылку и его точное изложение.

Кстати, «экспоненциальное демпфирование» легко понять -Я думаю, что прослушивание медленного затухания камертона (или... )является идеальным сравнением.

uptimeценен тем, что дает вам эти три значения, сообщая вам, как это выглядит «прямо сейчас» (последние пару секунд/одну минуту ), что происходило «недавно», то есть последние пять минут, и каков "резюме" последних 5 -20 минут.

Пример вики означает:

В данный момент нагрузка на систему высока. Раньше, в течение нескольких минут, он был очень низким. Но и раньше была фаза очень высокой -нагрузки в течение нескольких минут. Либо очень высокий в течение 10 минут, либо очень очень высокий в течение 5 минут.


В матрице 3x3:

x_X:пример вики, например. 100,0,255 :фиолетовый -синий :«нагрузка» после «холостой ход» после «перегрузка»

Xx_:255,100,0 :оранжевый :перегрузка после нагрузки после простоя

_xX:0,100,255 :голубой -синий :сейчас в режиме ожидания, после нагрузки, после перегрузки

x__:100,0,0 :темно-красный :теперь загрузка, до простоя в течение 15 минут.

___:черный :полный холостой ход

xxx:серый (или белый ):сбалансированный

XXX:белый (или ярко-белый ):ярко светящийся

--> отсутствие цвета означает отсутствие изменений нагрузки за последние 15 минут

(Нет, у меня пока нет функции приглашения bash для этого)

0
28.01.2020, 05:20

Теги

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