Нужен совет о том, как диагностировать высокую загрузку системы/ядра.
Настраивать
- Docker CE на CentOS 7 (без SELinux)
- Контейнерная рабочая нагрузка AI/ML на основе Python.
- Многопроцессорная обработка Python используется с ((n/2)-2) работниками пула
- n => ядер cpu/vcpu (1 гиперпоток)
Общая проблема
- Контейнер на «голом металле» из нашего образа докера работает, как и ожидалось.
- Контейнер GCP на основе одного и того же изображения работает медленно, в 3-4 раза медленнее.
- AI Pipelines, которые изначально занимали 2 дня, теперь занимают 4/5 дней.
Конкретная проблема
- GCP top -> высокая загрузка системы/ядра (30-50).
- Верх Bare-metal (BM) -> низкая нагрузка на систему (1-10).
- Индивидуальные процессы BM не более 100-120% ЦП.
- Отдельные процессы GCP загружают 300–500 % ЦП.
- Средняя нагрузка BM 11,85, 32,87, 19,43
- ОЦП ЛА 43.82, 32.87, 19.43
Что мы пробовали
- Установить полную привилегию = true при запуске докера
- Виртуальный ЦП на GCP удвоен (32-> 64)
- Используемый тип машины C2 (интенсивные вычисления).
Поскольку я понятия не имею, как диагностировать этот нисходящий процесс, я также попробовал perf, чтобы увидеть, что происходит в пространстве ядра/системы, ниже приведены результаты обеих систем.
GCP VM "отслеживание производительности"
Краткое изложение событий:
python (2551), 6580977 событий, 3,9%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
sched_yield 3232286 50396,443 0,002 0,016 68,851 0,69%
фьютексы 58139 23715,636 0,001 0,408 21989,789 92,73%
брк 1643 312.000 0.002 0.190 19.195 13.42%
закрыть 5 35,710 3,630 7,142 18,245 39,07%
открытая 4 12,764 2,710 3,191 3,767 7,16%
написать 165 9,681 0,003 0,059 6,496 66,95%
ioctl 85 0,605 0,002 0,007 0,028 9,58%
182 0,460 0,002 0,003 0,004 1,70%
читать 10 0,104 0,003 0,010 0,019 15,84%
fstat 4 0,030 0,006 0,007 0,008 6,21%
python (2847), 10240661 событие, 6,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 2909 269175,495 0,001 92,532 21907,964 13,70%
sched_yield 5119771 63387,192 0,002 0,012 98,500 0,60%
ython (2848), 10952416 событий, 6,4%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 2944 269333,572 0,001 91,486 21908,135 13,70%
sched_yield 5475608 62191,735 0,002 0,011 54,373 0,56%
python (2849), 10095381 событие, 5,9%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 2869 269495,562 0,001 93,934 21907,785 13,69%
sched_yield 5046875 63404,111 0,002 0,013 69,027 0,53%
python (2850), 10871629 событий, 6,4%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 3379 269541,688 0,001 79,770 21908,129 13,71%
sched_yield 5434655 61881,631 0,002 0,011 92,192 0,66%
python (2851), 10471715 событий, 6,2%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 3267 269665,818 0,001 82,542 21908,306 13,70%
sched_yield 5234762 62440,899 0,002 0,012 70,764 0,59%
python (2852), 11048544 события, 6,5%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3075 269845,352 0,001 87,755 21908,402 13,69%
sched_yield 5523384 61269,561 0,002 0,011 77,207 0,58%
python (2853), 10802913 событий, 6,4%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3411 269995,415 0,001 79,154 21907,717 13,70%
sched_yield 5400121 61586,390 0,000 0,011 63,498 0,63%
python (2854), 10580227 событий, 6,2%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3237 270029,557 0,001 83,420 21907,737 13,69%
sched_yield 5289038 62372,649 0,002 0,012 50,329 0,56%
python (2855), 11269016 событий, 6,6%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3309 270088,861 0,001 81,623 21908,143 13,69%
sched_yield 5633482 61010,474 0,002 0,011 59,756 0,54%
python (2856), 11194619 событий, 6,6%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3355 270348,851 0,001 80,581 21917,988 13,68%
sched_yield 5596230 61122,634 0,002 0,011 52,892 0,60%
python (2857), 11236749 событий, 6,6%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 2559 273140,199 0,001 106,737 21916,745 13,53%
sched_yield 5618107 61171,202 0,002 0,011 74,198 0,59%
python (2858), 10328444 события, 6,1%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 2759 270424,625 0,001 98,015 21916,130 13,66%
sched_yield 5163708 62490,561 0,002 0,012 95,956 0,65%
python (2859), 11507002 события, 6,8%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3065 270481,725 0,001 88,249 21910,849 13,67%
sched_yield 5752618 60412,759 0,002 0,011 96,043 0,69%
python (2860), 11013249 событий, 6,5%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 3254 270691,944 0,001 83,187 21912,965 13,67%
sched_yield 5505249 60965,211 0,002 0,011 69,026 0,62%
python (2861), 11793518 событий, 6,9%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 2851 270700,999 0,001 94,949 21911,187 13,66%
sched_yield 5896062 60165,571 0,002 0,010 69,030 0,69%
python (2862), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (2863), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (2864), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (2865), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
ТОП (GCP ВМ)
топ - 11:09:17 вверх 3 мин, 1 пользователь, средняя загрузка: 35,10, 12,57, 4,53
Задачи: 337 всего, 15 бегущих, 322 спящих, 0 остановленных, 0 зомби
%Cpu(s): 52,0 мкс, 43,1 си, 0,0 ni, 4,9 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
GiB Mem: всего 28,1, 24,3 бесплатно, 3,3 использовано, 0,6 бафф/кэш
GiB Swap: 0,0 всего, 0,0 бесплатно, 0,0 использовано. 24,5 доступная память
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2501 корень 20 0 2955128 169656 7612 R 380,5 0,6 3:24,55 питон
2502 корень 20 0 2959472 176016 7612 R 307,6 0,6 3:17,58 питон
2495 корень 20 0 2959088 176400 7608 R 288,4 0,6 3:35,93 питон
2496 корень 20 0 2933612 151452 7600 R 262,9 0,5 3:27,08 питон
2494 корень 20 0 2933356 153248 7604 R 253,3 0,5 3:22,47 питон
2489 корень 20 0 2949156 166916 7652 R 250,7 0,6 3:13,78 питон
2500 корень 20 0 2941704 153928 7632 R 225,5 0,5 3:24,54 питон
2499 корень 20 0 2950132 164576 7620 R 210,6 0,6 3:14,79 питон
2493 корень 20 0 2936304 151568 7608 R 177,2 0,5 3:28,18 питон
2490 корень 20 0 2949248 169748 7596 R 170,9 0,6 3:16,57 питон
2497 корень 20 0 2932684 156128 7600 R 167,9 0,5 3:13,12 питон
2491 корень 20 0 2942860 165400 7608 R 149,0 0,6 3:17,05 питон
2492 корень 20 0 2947632 163008 7604 R 117,2 0,6 3:20,01 питон
2498 корень 20 0 2935784 153348 7600 R 76,2 0,5 3:14,54 питон
2943 корень 20 0 162376 2560 1588 Ч 0,7 0,0 0:00,08 верх
1 корень 20 0 191028 4024 2592 S 0,0 0,0 0:01,68 systemd
'Perf trace' на голом металле
Краткое изложение событий:
python (113694), 88758 событий, 2,7%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютексы 3174 13767,708 0,001 4,338 13745,177 99,84%
sched_yield 39353 130,937 0,002 0,003 3,972 3,91%
брк 1132 91,005 0,002 0,080 4,163 15,54%
написать 101 1,928 0,002 0,019 0,673 34,59%
110 0,310 0,001 0,003 0,032 12,49%
открыта 2 0,234 0,112 0,117 0,122 4,49%
ioctl 36 0,162 0,002 0,005 0,010 7,15%
читать 6 0,033 0,003 0,005 0,008 16,09%
fstat 2 0,008 0,004 0,004 0,004 2,01%
закрыть 3 0,007 0,002 0,002 0,003 5,55%
python (114304), 3210496 событий, 97,3%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 3640 97379,595 0,000 26,753 13930,078 20,68%
sched_yield 1599811 3995,576 0,001 0,002 15,957 0,91%
python (114305), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114306), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114307), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114308), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114309), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114310), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114311), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114312), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114313), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114314), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114315), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114316), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114317), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114318), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114319), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114320), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114321), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114322), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114323), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114324), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114325), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114326), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114327), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114328), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114329), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114330), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114331), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114332), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114333), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114334), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114335), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114336), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114337), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114338), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114339), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114340), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
python (114341), 1 событие, 0,0%
вызовов системных вызовов всего min avg max stddev
(мсек) (мсек) (мсек) (мсек) (%)
--------------- -------- --------- --------- --------- --------- ------
фьютекс 1 0,000 0,000 0,000 0,000 0,00%
По-видимому, слишком много событий в GCP, в частности фьютекс
и sched_yield
, оба явно занимают много времени в системном пространстве.
Спасибо