Понимание загрузочных средних Linux и мониторинг производительности Linux

В этой статье мы объясним одну из критически важных задач администрирования системы Linux – мониторинг производительности в отношении нагрузки на систему/CPU и средних нагрузок.

Прежде чем мы пойдем дальше, давайте разберемся с этими двумя важными понятиями во всех системах, подобных Unix:

  • Нагрузка на систему/CPU – это измерение пере- или недоиспользования CPU в системе Linux; количество процессов, которые выполняются CPU или находятся в состоянии ожидания.
  • Средняя нагрузка – это средняя нагрузка на систему, рассчитанная за определенный период времени в 1, 5 и 15 минут.

В Linux средневзвешенная нагрузка технически считается текущим средним количеством процессов в очереди исполнения (ядра), отмеченных как исполняющиеся или непрерываемые.

Обратите внимание:

  • Все или почти все системы под управлением Linux или других систем Unix-подобных возможно будут отображать значения средней нагрузки где-то для пользователя.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Практически все системы, подобные Unix, учитывают только процессы в состоянии выполнения или ожидания. Но это не так в случае с Linux, он включает процессы в состоянии непрерываемого сна; те, которые ожидают других системных ресурсов, таких как дисковый ввод-вывод и т. д.

Как мониторить среднюю нагрузку на систему Linux

Существует множество способов мониторинга средней нагрузки на систему, включая uptime, который показывает, как долго система работает, количество пользователей вместе с средними нагрузками:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Числа считываются слева направо, и вывод выше означает, что:

  • средняя нагрузка за последний 1 минуту составляет 1.98
  • средняя загрузка за последние 5 минут составляет 2.15
  • средняя загрузка за последние 15 минут составляет 2.21

Высокие средние значения загрузки означают, что система перегружена; множество процессов ожидают времени процессора.

Мы рассмотрим это в следующем разделе в отношении количества ядер процессора. Кроме того, мы также можем использовать другие хорошо известные инструменты, такие как top и glances, которые отображают текущее состояние работающей системы Linux в реальном времени, а также множество других инструментов:

Команда Top

$ top
Display Running Linux Processes
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Инструмент Glances

$ glances
Glances – Linux System Monitoring Tool
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

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

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Для мониторинга средних значений загрузки в виде графика, посмотрите: ttyload – Показывает цветной график средней загрузки Linux в терминале

На настольных компьютерах есть графические инструменты с пользовательским интерфейсом, которые мы можем использовать для просмотра средних значений загрузки системы.

Понимание Средней Загрузки Системы в Связи с Количеством ЦП

Мы не можем объяснить нагрузку на систему или производительность системы без раскрытия влияния количества ядер ЦП на производительность.

Многоядерный против многопроцессорного

  • Многопроцессорная – это когда два или более физических процессора интегрируются в одну компьютерную систему.
  • Многопроцессорный процессор – это один физический процессор, который имеет как минимум два или более отдельных ядра (или, как мы также можем называть их, процессорные блоки), которые работают параллельно. Это означает, что двухъядерный имеет 2 процессорных блока, четырехъядерный имеет 4 процессорных блока и так далее.

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

При гиперпоточности одно физическое ядро процессора выглядит как два логических ядра ЦП для операционной системы (но на самом деле это один физический аппаратный компонент).

Обратите внимание, что одно ядро ЦП может выполнять только одну задачу за раз, поэтому были созданы технологии, такие как множественные ЦП/процессоры, многопроцессорные ЦП и гиперпоточность.

С несколькими ЦП может быть выполнено несколько программ одновременно. Современные процессоры Intel используют комбинацию как многопроцессорных ядер, так и технологии гиперпоточности.

Чтобы найти количество доступных процессорных блоков в системе, мы можем использовать команды nproc или lscpu следующим образом:

$ nproc
4

OR
lscpu

Другой способ найти количество обрабатывающих устройств с использованием команды grep, как показано.

$ grep 'model name' /proc/cpuinfo | wc -l

4

Теперь, чтобы лучше понять нагрузку на систему, мы будем делать несколько предположений. Допустим, у нас есть средние нагрузки ниже:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
На одноядерной системе это означало бы:
  • ЦП был полностью (100%) загружен в среднем; 1 процесс работал на ЦП (1,00) за последнюю минуту.
  • ЦП был простаивал на 60% в среднем; не было процессов, ожидающих времени ЦП (0,40) за последние 5 минут.
  • ЦП был перегружен на 235% в среднем; 2,35 процесса ожидали времени ЦП (3,35) за последние 15 минут.
На двухъядерной системе это означало бы:
  • Одно ЦП было на 100% простаивало в среднем, одно ЦП использовалось; не было процессов, ожидающих времени ЦП (1,00) за последнюю минуту.
  • ЦП были простаивали на 160% в среднем; не было процессов, ожидающих времени ЦП (0,40) за последние 5 минут.
  • ЦП были перегружены на 135% в среднем; 1,35 процесса ожидали времени ЦП (3,35) за последние 15 минут.

Вам также может понравиться:

  1. 20 Инструментов командной строки для мониторинга производительности Linux – Часть 1
  2. 13 Инструментов мониторинга производительности Linux – Часть 2
  3. Perf – Инструмент мониторинга и анализа производительности для Linux
  4. Nmon: Анализ и мониторинг производительности системы Linux

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

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/