Поиск по сайту:

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


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

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

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

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

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

  • Все, если не большинство систем, работающих на Linux или других Unix-подобных системах, возможно, где-то покажут пользователю средние значения нагрузки.
  • Совершенно простаивающая система Linux может иметь нулевую среднюю нагрузку, исключая процесс простоя.
  • Почти все Unix-подобные системы учитывают только процессы, находящиеся в состоянии выполнения или ожидания. Но в Linux это не так, он включает процессы в состояния бесперебойного сна; те, кто ждут других системных ресурсов, таких как дисковый ввод-вывод и т. д.

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

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

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 и Glies, которые отображают состояние работающей системы Linux в реальном времени, а также многие другие инструменты:

Высшее командование

top
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
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 в терминале.

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

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

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

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

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

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

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

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

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

Чтобы узнать количество процессоров, доступных в системе, мы можем использовать команды 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.00) выполнялось 1 процесс.
  • Процессор простаивал в среднем на 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

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