Назад | Перейти на главную страницу

Диагностика высокой нагрузки на сервер ffmpeg

Может ли кто-нибудь помочь с информацией о том, почему у меня такая высокая нагрузка на сервер, но общая загрузка ЦП составляет менее 50% и много свободной оперативной памяти?

Я использую 60 экземпляров ffmpeg на Ryzen 1700X.

Вот пример:

top - 23:06:56 up 14 days,  9:18,  1 user,  load average: 37.60, 29.48, 27.77
Tasks: 300 total,   4 running, 296 sleeping,   0 stopped,   0 zombie
%Cpu(s): 49.4 us,  2.9 sy, 24.2 ni, 22.3 id,  0.0 wa,  0.0 hi,  1.2 si,  0.0 st
KiB Mem : 65973428 total, 56648208 free,  6166708 used,  3158512 buff/cache
KiB Swap: 33521660 total, 33521660 free,        0 used. 58950204 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
26716 root      20   0 1785484 109948  15040 S  30.2  0.2   8:05.60 ffmpeg
26466 root      20   0 1785384 110252  15212 S  29.9  0.2   7:55.21 ffmpeg
23944 root      20   0 1784344  95248  14968 S  27.9  0.1  11:42.94 ffmpeg
26714 root      20   0 1786092 110624  15152 S  27.9  0.2   7:41.62 ffmpeg
22213 root      20   0 1784096 109416  15208 S  27.2  0.2  15:58.07 ffmpeg
24430 root      20   0 1785028 109392  15180 S  26.9  0.2  12:51.34 ffmpeg
23199 root      20   0 1783992  95164  15092 S  26.2  0.1  13:50.43 ffmpeg
26220 root      20   0 1785880 110148  15192 S  26.2  0.2   8:00.28 ffmpeg

и вот результат mpstat -P ALL

root@Ubuntu-1604-xenial-64-minimal ~ # mpstat -P ALL
Linux 4.8.0-58-generic (Ubuntu-1604-xenial-64-minimal)  07/27/2017      _x86_64_        (16 CPU)

11:08:49 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:08:49 PM  all   35.80   16.81    2.27    0.00    0.00    1.03    0.00    0.00    0.00   44.09
11:08:49 PM    0   34.66   12.75    3.47    0.00    0.00   10.27    0.00    0.00    0.00   38.85
11:08:49 PM    1   31.05   15.86    3.41    0.00    0.00    0.96    0.00    0.00    0.00   48.72
11:08:49 PM    2   38.62   16.16    2.55    0.00    0.00    0.60    0.00    0.00    0.00   42.07
11:08:49 PM    3   33.36   17.36    2.49    0.00    0.00    0.57    0.00    0.00    0.00   46.21
11:08:49 PM    4   39.13   16.26    2.47    0.00    0.00    0.49    0.00    0.00    0.00   41.65
11:08:49 PM    5   33.42   17.36    2.47    0.00    0.00    0.56    0.00    0.00    0.00   46.19
11:08:49 PM    6   39.25   16.22    2.43    0.00    0.00    0.47    0.00    0.00    0.00   41.63
11:08:49 PM    7   33.42   17.23    2.46    0.00    0.00    0.55    0.00    0.00    0.00   46.34
11:08:49 PM    8   38.73   17.16    1.89    0.00    0.00    0.28    0.00    0.00    0.00   41.94
11:08:49 PM    9   33.78   17.71    1.77    0.00    0.00    0.26    0.00    0.00    0.00   46.48
11:08:49 PM   10   38.76   17.25    1.88    0.00    0.00    0.27    0.00    0.00    0.00   41.84
11:08:49 PM   11   33.75   17.77    1.77    0.00    0.00    0.26    0.00    0.00    0.00   46.44
11:08:49 PM   12   38.68   17.15    1.88    0.00    0.00    0.27    0.00    0.00    0.00   42.02
11:08:49 PM   13   33.73   17.70    1.76    0.00    0.00    0.26    0.00    0.00    0.00   46.55
11:08:49 PM   14   38.67   17.18    1.88    0.00    0.00    0.27    0.00    0.00    0.00   41.99
11:08:49 PM   15   33.72   17.73    1.76    0.00    0.00    0.26    0.00    0.00    0.00   46.53

Меня немного беспокоит, что нагрузка возрастет до 35+, это 8-ядерный 16-поточный процессор, но колебание около 35 кажется немного высоким. Общая пропускная способность составляет около 30 Мбит / с (30 видеопотоков кодируются до 2 меньших битрейтов, следовательно, 60 процессов ffmpeg), а выходная пропускная способность составляет около 100 Мбит / с, у сервера есть порт 1 Гбит / с.

Кто-нибудь знает, почему такая высокая нагрузка на систему с высокими характеристиками с большим количеством свободных ресурсов?

Процессор Ryzen 1700X имеет 16 потоков, поэтому одновременно он может запускать максимум 16 процессов. 60 экземпляров ffmpeg оставляет не более 44 ожидающих своей очереди. Поскольку процессы также ждут завершения ввода-вывода, количество других вещей, средняя загрузка которых составляет 37,60, кажется нормальным.

Если вы хотите понять, насколько загружен ваш процессор в данный момент, используя верхнее значение, просуммируйте процентные значения, кроме id (холостой ход). Ваш вывод:

%Cpu(s): 49.4 us,  2.9 sy, 24.2 ni, 22.3 id,  0.0 wa,  0.0 hi,  1.2 si,  0.0 st

соответствует 77,7%, а не 50%.