Системные ресурсы и производительность

ЦП#

Основные понятия#

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

  1. Физическое ядро — это реальное ядро процессора, которое можно увидеть. Оно имеет независимые компоненты схемы, кэши L1 и L2 и может независимо выполнять инструкции. Процессор может иметь несколько физических ядер.
  2. Логическое ядро — ядро, которое существует на логическом уровне в одном физическом ядре. Как правило, физическое ядро соответствует потоку. Однако, если гиперпоточность включена и число гиперпотоков равно n, физическое ядро можно разделить на n логических ядер. Вы можете выполнить команду lscpu, чтобы проверить количество ЦП на сервере, а также количество физических и логических ядер в каждом ЦП.

Разграничение и позиционирование#

Стандартные инструменты для анализа производительности ЦП#

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

zh-cn_image_0000001384808269

  1. vmstat: динамически отслеживает использование системных ресурсов и проверяет, какая фаза потребляет больше всего таких ресурсов. Можно выполнить команду vmstat -h для просмотра параметров этой команды. Пример.
#Monitor the status and update the status every second.
vmstat 1

Ниже описаны поля в выходных данных команды:

Поле Описание
procs Информация о процессах.
memory Информация о памяти.
swap Информация о разделе подкачки.
io Информация о чтении/записи диска.
system Информация о системе.
cpu Информация о ЦП. -us: процент вычислительного времени ЦП, которое потребляют процессы, не относящиеся к ядру. -sy: процент вычислительного времени ЦП, которое потребляют процессы ядра. -id: простой. -wa: процент ресурсов ЦП, потребляемых при ожидании операций ввода-вывода. -st: процент ресурсов ЦП, недополученных виртуальными машинами.
  1. sar: анализирует производительность системы, отслеживает текущие действия и конфигурации, а также архивирует накопленные статистические данные и создает по ним отчеты.

Пример:

# Check the overall CPU load of the system. Collect the statistics every 3 seconds for five times.
sar -u 3 5

zh-cn_image_0000001336448570

Поля в выходных данных команды описаны ниже.

Поле Описание
%user Процент процессорного времени, потребляемого в пользовательском режиме.
%nice Процент процессорного времени, потребляемого процессом, приоритет планирования которого изменен с помощью nice в пользовательском режиме.
%system Процент процессорного времени, используемого в системном режиме.
%iowait Процент времени, затраченного ЦП на ожидание операций ввода-вывода диска в состоянии простоя.
%steal Процент времени, используемого для ожидания других вычислений на виртуальном ЦП с использованием технологий виртуализации ОС.
%idle Процент времени простоя ЦП.
  1. ps: отображает запущенные процессы.
# View all processes in the system, and view the PIDs and priorities of the their parent processes.
ps -le

zh-cn_image_0000001337039920

# View the processes generated by the current shell.
ps -l

zh-cn_image_0000001385611905

  1. top: динамически и непрерывно отслеживает текущее состояние процессов и отображает процессы, которые потребляют больше всего ресурсов ЦП.
top

zh-cn_image_0000001335457246

Память#

Основные понятия#

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

Разграничение и позиционирование#

Стандартные инструменты и методы для анализа памяти#

  1. free: отображает состояние системной памяти. Пример.
# Display the system memory status in MB.
free -m

zh-cn_image_0000001386699925

Поля в выходных данных команды описаны ниже.

Поле Описание
total Общий объем памяти.
used Используемая память.
free Свободная память.
shared Общий объем памяти, совместно используемой несколькими процессами.
buff/cache Общее количество буферов и кэшей.
available Приблизительный доступный объем памяти для запуска нового приложения без использования подкачки.
  1. vmstat: динамически отслеживает системную память и ее использование.

Пример.

# Monitor the system memory and display active and inactive memory.
vmstat -a

zh-cn_image_0000001388972645

Поле, относящееся к памяти, в выходных данных команды описано ниже:

Поле Описание
memory Информация о памяти. -swpd: использование виртуальной памяти в КБ. -free: объем свободной памяти в КБ. -inact: объем неактивной памяти в КБ. -active: объем активной памяти в КБ.
  1. sar: отслеживает использование памяти в системе.

Пример.

# Monitor the memory usage in the sampling period in the system. Collect the statistics every two seconds for three times.
sar -r 2 3

zh-cn_image_0000001335816300

Поля в выходных данных команды описаны ниже.

Поле Описание
kbmemfree Неиспользуемый объем памяти.
kbmemused Используемый объем памяти.
%memused Процент занятого объема памяти.
kbbuffers Объем данных, хранящихся в буфере.
kbcached Объем доступа к данным во всех областях системы.
  1. numactl: отображает конфигурацию и состояние узлов NUMA.

Пример.

# Check the current NUMA configuration.
numactl -H

zh-cn_image_0000001337000118

# Check the NUMA node status.
numastat

zh-cn_image_0000001337172594

Поля в выходных данных команды numstat описаны ниже.

Поле Описание
numa_hit Количество обращений ядра ЦП к локальной памяти на узле.
numa_miss Количество обращений ядра узла к памяти других узлов.

Ввод-вывод#

Основные понятия#

Под вводом-выводом понимаются операции ввода-вывода. Ввод обозначает операцию получения сигналов или данных системой, а вывод — операцию отправки сигналов или данных из системы. Для сочетания ЦП и оперативной памяти любая информация, входящая туда или исходящая оттуда, рассматривается как операции ввода-вывода.

Разграничение и позиционирование#

Стандартные инструменты для анализа производительности ввода-вывода#

  1. iostat: выводит статистику обо всех подключенных дисках.

Пример.

# Display the drive information in KB. Collect the statistics every second and for 100 seconds.
iostat -d -k -x 100

zh-cn_image_0000001385905845

Поля в выходных данных команды описаны ниже.

Поле Описание
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 Процент времени операций ввода-вывода, т. е. использование соответствующих ресурсов.
  1. sar: отображает производительность операций чтения и записи для системного диска.

Пример.

# Display the usage status of all hard drives in the system in the sampling period. Collect the statistics every 3 seconds for five times.
sar -d 3 5

zh-cn_image_0000001386149037

Поля в выходных данных команды описаны ниже.

Поле Описание
tps Общее количество операций передачи, отправляемых на физическое устройство в секунду.
rKB/s Количество КБ, считываемых с устройства в секунду.
wKB/s Количество КБ, записываемых на устройство в секунду.
dKB/s Количество КБ, отбрасываемых устройством в секунду.
areq-sz Средний размер (КБ) запросов ввода-вывода, отправляемых на устройство.
aqu-sz Средняя длина очереди запросов, отправляемых на устройство.
await Среднее время отправки запросов ввода-вывода на устройство для их обслуживания.
%util Процент времени, используемого для отправки запросов ввода-вывода на устройство (использование пропускной способности устройства).
  1. vmstat
# Run the vmstat command to monitor and report drive statistics.
vmstat -d

zh-cn_image_0000001389098425

Поля в выходных данных команды описаны ниже.

Поле Описание
reads -total: общее количество успешно завершенных операций чтения. -merged: количество объединенных операций чтения (образующих одну операцию ввода-вывода). -sectors: секторы, из которых данные успешно считаны. -ms: количество миллисекунд, потраченных на чтение данных.
writes -total: общее количество успешно завершенных операций записи. -merged: объединенные операции чтения (образующие одну операцию ввода-вывода). -sectors: секторы, в которые успешно записаны данные. -ms: количество миллисекунд, потраченных на запись данных.
IO Информация об операциях чтения/записи для диска. -bi: общий объем данных, считанных с блочного устройства, в блоках. -bo: общий объем данных, записанных на блочное устройство, в блоках.