Ми}{@лbI4

Блог хеллоуворлдщика

Тормоза Docker под Linux на процессорах AMD

11.01.2024 amd, linux, docker

На проекте, что я сейчас работаю, присоединился коллега. Мы оба работаем на Arch Linux и используем Docker Compose Plugin безо всяких Docker Desktop. Коллега развернув проект пишет, что медленно отрабатывают запросы: падение скорости в 10 раз, время выполнение пустого запроса 400-500 мс. Стали искать и обнаружили, что после отключения PHP XDebug скорость восстановилась. Но это не совсем причина. В неактивном состоянии XDebug так сильно не тормозит. Это дало мне наводки, т.к. ранее я сталкивался с похожим, но при других обстоятельствах. После поиска в интернете я наткнулся на статью посвященную процессорам архитектуры ARM, а далее и на злополучный clocksource. Ни я, ни он с подобным не сталкивались. Я никогда не использовал процессоры AMD, а коллега буквально недавно перешел на них с Intel, где из коробки все отлично.

The purpose of the clock source is to provide a timeline for the system that tells you where you are in time.

На процессорах AMD clocksource равен hpet. Это и была разница между нами. У меня был процессор Intel и clocksource=tsc. Узнать clocksource можно командой

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

После того как был изменен clocksource на tsc, все стало работать должным образом без отключения PHP XDebug.

Для изменения clocksource нужно изменить параметры ядра Linux при его загрузке. Для GRUB в файле /etc/default/grub в переменную GRUB_CMDLINE_LINUX_DEFAULT добавляем clocksource=tsc tsc=reliable и пересоздаем конфиг файл - grub-mkconfig -o /boot/grub/grub.cfg. После этого перезагружаемся и наслаждаемся приростом в скорости работы Docker и не только.

Ссылки: