На проекте, что я сейчас работаю, присоединился коллега. Мы оба работаем на 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 и не только.
Ссылки: