Системные ресурсы и производительность
Основные понятия
Центральный процессор (ЦП) является одним из основных устройств компьютера, а его задача заключается в интерпретации компьютерных инструкций и обработке данных в компьютерном программном обеспечении.
- Физическое ядро
-
Это реальное ядро процессора, которое можно увидеть. Оно имеет независимые компоненты схемы, кеши L1 и L2 и может независимо выполнять инструкции. Процессор может иметь несколько физических ядер.
- Логическое ядро
-
Ядро, которое существует на логическом уровне в одном физическом ядре. Как правило, физическое ядро соответствует потоку. Однако, если гиперпоточность включена и число гиперпотоков равно N, физическое ядро можно разделить на N логических ядер. Вы можете выполнить команду
lscpu, чтобы проверить количество ЦП на сервере, а также количество физических и логических ядер в каждом ЦП.
Разграничение и позиционирование
Стандартные инструменты для анализа производительности ЦП
uptime
Утилита выводит среднюю нагрузку системы. Можно просмотреть последние три значения, чтобы определить тренд изменения средней нагрузки.
Если средняя нагрузка превышает количество ЦП, ЦП становится недостаточно для обслуживания потоков, поэтому некоторые потоки находятся в состоянии ожидания.
Если средняя нагрузка меньше количества ЦП, значит остаются незагруженные процессоры.
Пример вывода утилиты uptime:
11:55:34 up 3 days, 21:27, 2 users, load average: 0.00, 0.00, 0.00
vmstat
Утилита динамически отслеживает использование системных ресурсов и проверяет, какая фаза потребляет больше всего таких ресурсов.
Для просмотра параметров утилиты выполните команду:
vmstat -h
Пример вывода vmstat:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 5445568 173568 970624 0 0 0 1 30 23 0 0 100 0 0
0 0 0 5444224 173568 970624 0 0 0 0 107 82 0 0 100 0 0
0 0 0 5444224 173568 970624 0 0 0 0 144 115 0 0 100 0 0
0 0 0 5444224 173568 970624 0 0 0 0 126 103 0 0 100 0 0
0 0 0 5444224 173568 970624 0 0 0 0 129 106 0 0 100 0 0
0 0 0 5444224 173568 970624 0 0 0 0 96 76 0 0 100 0 0
Поля в выходных данных команды:
-
procs— информация о процессах. -
memory— информация о памяти. -
swap— информация о разделе подкачки. -
io— информация о чтении/записи диска. -
system— информация о системе. -
cpu— информация о ЦП.-
us— процент вычислительного времени ЦП, которое потребляют процессы, не относящиеся к ядру. -
sy— процент вычислительного времени ЦП, которое потребляют процессы ядра. -
id— простой. -
wa— процент ресурсов ЦП, потребляемых при ожидании операций ввода-вывода. -
st: процент ресурсов ЦП, недополученных виртуальными машинами.
-
sar
Утилита анализирует производительность системы, отслеживает текущие действия и конфигурации, а также архивирует накопленные статистические данные и создает по ним отчеты.
sar -u 3 5
Пример вывода:
Linux 5.10.0-5.10.0.24.oel.aarch64 (localhost.localdomain) 08/22/2022 _aarch64_ (4 CPU)
02:46:06 PM CPU %user %nice %system %iowait %steal %idle
02:46:09 PM all 0.00 0.00 0.08 0.00 0.00 99.92
02:46:12 PM all 0.00 0.00 0.08 0.00 0.00 99.92
02:46:15 PM all 0.08 0.00 0.00 0.00 0.00 99.92
02:46:18 PM all 0.00 0.00 0.00 0.00 0.00 100.00
02:46:21 PM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.02 0.00 0.03 0.00 0.00 99.95
Поля в выходных данных:
-
%user— процент процессорного времени, потребляемого в пользовательском режиме. -
%nice— процент процессорного времени, потребляемого процессом, приоритет планирования которого изменен с помощьюniceв пользовательском режиме. -
%system— процент процессорного времени, используемого в системном режиме. -
%iowait— процент времени, затраченного ЦП на ожидание операций ввода-вывода диска в состоянии простоя. -
%steal— процент времени, используемого для ожидания других вычислений на виртуальном ЦП с использованием технологий виртуализации ОС. -
%idle— процент времени простоя ЦП.
ps
Утилита отображает запущенные процессы.
ps -le
Пример вывода:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 2706 ep_pol ? 00:00:08 systemc
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 3 2 0 60 -20 - 0 rescue ? 00:00:00 rcu_gp
1 I 0 4 2 0 60 -20 - 0 rescue ? 00:00:00 rcu_par_g
1 I 0 6 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0
1 I 0 8 2 0 60 -20 - 0 rescue ? 00:00:00 mm_percpu
Процессы, запущенные в текущей оболочке:
ps -l
Пример вывода:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 21198 21197 0 80 0 - 132 do_wai pts/0 00:00:00 bash
4 R 0 21488 21198 0 80 0 - 177 - pts/0 00:00:00 ps
top
Утилита динамически и непрерывно отслеживает текущее состояние процессов и отображает процессы, которые потребляют больше всего ресурсов ЦП.
top
Пример вывода:
top - 15:15:52 up 4 days, 47 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 117 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.1 hi, 0.0 si, 0.0 st
MiB Mem : 6790.2 total, 5281.9 free, 360.4 used, 1147.0 buff/cache
MiB Swap: 2139.9 total, 2139.9 free, 0.0 used. 6059.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21498 root 20 0 12480 6400 3776 R 0.3 0.1 0:00.05 top
1 root 20 0 173184 19904 9344 S 0.0 0.3 0:06.65 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_rude
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_trace
11 root 20 0 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0
Память
Основные понятия
Память является важным компонентом компьютера и используется для временного хранения рабочих данных в ЦП и данных, которыми система обменивается с внешней памятью, например аппаратным обеспечением. В частности, архитектура неравномерного доступа к памяти (NUMA) — это принцип построения памяти, разработанный для многопроцессорного компьютера. Время доступа к памяти зависит от расположения памяти относительно процессора. В режиме NUMA процессор обращается к локальной памяти быстрее, чем к нелокальной (такая память находится в другом процессоре или разделяется между процессорами).
Стандартные инструменты и методы для анализа памяти
free
Утилита отображает состояние системной памяти.
free -m
Пример вывода:
total used free shared buff/cache available
Mem: 6790 359 5210 23 1220 6058
Swap: 2139 0 2139
Поля в выходных данных
-
total— общий объём памяти. -
used— используемая память. -
freeсвободная память. -
shared— общий объём памяти, совместно используемой несколькими процессами. -
buff/cache— общее количество буферов и кешей. -
available— приблизительный доступный объём памяти для запуска нового приложения без использования подкачки.
vmstat
Утилита динамически отслеживает системную память и ее использование.
Пример.
vmstat -a
Пример вывода:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 - 0 5260096 856256 583424 0 0 0 0 13 6 0 0 100 0 0
Поле, относящееся к памяти, в выходных данных команды описано ниже:
-
memory— информация о памяти:-
swpd— использование виртуальной памяти в КБ. -
free— объём свободной памяти в КБ. -
inact— объём неактивной памяти в КБ. -
active— объём активной памяти в КБ.
-
sar
Утилита отслеживает использование памяти в системе.
sar -r 2 3
Пример вывода:
Linux 5.10.0-5.10.0.24.oel.aarch64 (localhost.localdomain) 08/22/2022 _aarch64_ (4 CPU)
05:00:16 PM kbmmefree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:00:18 PM 5372224 6202688 283904 4.08 190528 957760 483136 5.28 478400 852288 192
05:00:20 PM 5372224 6202688 283904 4.08 190528 957760 483136 5.28 478400 852288 192
05:00:22 PM 5372224 6202688 283904 4.08 190528 957760 483136 5.28 478400 852288 192
Average: 5372224 6202688 283904 4.08 190528 957760 483136 5.28 478400 852288 192
Поля в выходных данных:
-
kbmemfree— неиспользуемый объём памяти. -
kbmemused— используемый объём памяти. -
%memused— процент занятого объёма памяти. -
kbbuffers— объём данных, хранящихся в буфере. -
kbcached— объём доступа к данным во всех областях системы.
numactl
Утилита отображает конфигурацию и состояние узлов NUMA.
numactl -H
Пример вывода:
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 6790 MB
node 0 free: 5181 MB
node distances:
node 0
0: 10
numastat
Пример вывода:
node0
numa_hit 1620067
numa_miss 0
numa_foreign 0
interleave_hit 3060
local_node 1620067
other_node 0
Поля в выходных данных команды numstat:
-
numa_hit— количество обращений ядра ЦП к локальной памяти на узле. -
numa_miss— количество обращений ядра узла к памяти других узлов.
Ввод-вывод
Основные понятия
Под вводом-выводом понимаются операции ввода-вывода. Ввод обозначает операцию получения сигналов или данных системой, а вывод — операцию отправки сигналов или данных из системы. Для сочетания ЦП и оперативной памяти любая информация, входящая туда или исходящая оттуда, рассматривается как операции ввода-вывода.
Стандартные инструменты для анализа производительности ввода-вывода
iostat
Утилита выводит статистику обо всех подключенных дисках.
iostat -d -k -x 100
Пример вывода:
Linux 5.10.0-5.10.0.24.oel.aarch64 (localhost.localdomain) 08/22/2022 _aarch_64 (4 CPU)
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
dm0 0.03 0.86 0.00 0.00 0.33 30.28 0.20 2.29 0.00 0.00 1.83 11.29 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.04
dm1 0.00 0.01 0.00 0.00 0.10 72.71 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vda 0.02 1.20 0.01 36.85 0.35 58.60 0.10 2.32 0.11 51.55 3.90 23.49 0.00 0.00 0.00 0.00 0.00 0.00 0.03 12.19 0.00 0.04
Поля в выходных данных:
-
Device — имя устройства мониторинга.
-
r/s — количество запросов на чтение, выполняемых устройством в секунду (после объединения).
-
rKB/s — количество КБ, считываемых с диска в секунду.
-
rrqm/s — количество операций чтения, объединяемых в очередь запросов в секунду.
-
%rrqm — процент запросов на чтение, объединенных до их отправки на устройство.
-
r_await — среднее время, затрачиваемое на каждый запрос на чтение.
-
rareq-sz — средний размер запросов на чтение, отправляемых на устройство, в КБ.
-
w/s — количество запросов на запись, выполняемых устройством в секунду (после объединения).
-
wKB/s — количество КБ, записываемых на диск в секунду.
-
wrqm/s — количество операций записи, объединяемых в очередь запросов в секунду.
-
%wrqm — процент запросов на запись, объединенных до их отправки на устройство.
-
w_await — среднее время, затрачиваемое на каждый запрос на запись.
-
wareq-sz — средний размер запросов на запись, отправляемых на устройство, в КБ.
-
d/s — количество запросов на сброс, обрабатываемых устройством в секунду.
-
dKB/s — количество секторов (КБ), отбрасываемых устройством в секунду.
-
drqm/s — количество запросов на сброс, объединяемых в очередь устройства в секунду.
-
%drqm — процент запросов на сброс, объединяемых до их отправки на устройство.
-
d_await — среднее время отправки запросов на сброс на устройство для их обслуживания.
-
dareq-sz — средний размер запросов на сброс, отправляемых на устройство, в КБ.
-
f/s — количество запросов на обновление, выполняемых устройством в секунду (после объединения).
-
f_await — среднее время отправки запросов на обновление на устройство для их обслуживания.
-
aqu-sz — средняя длина очереди запросов, отправляемых на устройство.
-
%util — процент времени операций ввода-вывода, т. е. использование соответствующих ресурсов.
sar
Утилита отображает производительность операций чтения и записи для системного диска.
sar -d 3 5
Пример вывода:
Linux 5.10.0-5.10.0.24.oel.aarch64 (localhost.localdomain) 08/22/2022 _aarch_64 (4 CPU)
02:48:13 PM DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
02:48:16 PM vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02.48.16 PM dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02.48.16 PM dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Поля в выходных данных:
-
tps — общее количество операций передачи, отправляемых на физическое устройство в секунду.
-
rKB/s — количество КБ, считываемых с устройства в секунду.
-
wKB/s — количество КБ, записываемых на устройство в секунду.
-
dKB/s — количество КБ, отбрасываемых устройством в секунду.
-
areq-sz — средний размер (КБ) запросов ввода-вывода, отправляемых на устройство.
-
aqu-sz — средняя длина очереди запросов, отправляемых на устройство.
-
await — среднее время отправки запросов ввода-вывода на устройство для их обслуживания.
-
%util — процент времени, используемого для отправки запросов ввода-вывода на устройство (использование пропускной способности устройства).
vmstat
vmstat -d
Пример вывода:
disk- -----------reads----------- ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
vda 7323 4260 859443 2636 63515 63243 2516504 255002 0 286
dm-0 10106 0 614594 3452 126331 0 2527784 241588 0 285
dm-1 39 0 5632 4 0 0 0 0 0 0
Поля в выходных данных команды:
-
reads
-
total — общее количество успешно завершенных операций чтения.
-
merged — количество объединенных операций чтения (образующих одну операцию ввода-вывода).
-
sectors — секторы, из которых данные успешно считаны.
-
ms — количество миллисекунд, потраченных на чтение данных.
-
-
writes
-
total — общее количество успешно завершенных операций записи.
-
merged — объединенные операции чтения (образующие одну операцию ввода-вывода).
-
sectors — секторы, в которые успешно записаны данные.
-
ms — количество миллисекунд, потраченных на запись данных.
-
-
IO — Информация об операциях чтения/записи для диска.
-
bi --общий объём данных, считанных с блочного устройства, в блоках.
-
bo — общий объём данных, записанных на блочное устройство, в блоках.
-