+7 (987) 680-29-96Оставить заявку
Профиль

Два ядра загружены на 100%, а программа тормозит: где искать причину

03 октября 2026
11
0

Два ядра загружены на 100%, а программа тормозит: где искать причину

Профилировщик показывает простой инкремент, оба ядра заняты, алгоритм не изменился. Но в эксперименте перестановка двух целых чисел в структуре сократила время работы с 4284 до 841 мс.

Причина была в размещении данных. При промахе кэша ядро ждёт чтения из памяти сотни тактов. При промахе TLB, кэша соответствий виртуальных и физических адресов, процессор дополнительно обходит таблицы страниц. А при ложном совместном использовании два ядра меняют разные переменные в одной 64-байтной строке кэша и постоянно отбирают её друг у друга.

Обычный профиль этих ожиданий не разделяет. В разборе трёх причин тормозов есть команды perf stat для счётчиков промахов и perf c2c для поиска строки кэша, за которую спорят ядра. Это полезное направление диагностики, когда добавление потоков не ускоряет сервис.

Источник: Telegram

Понравилась статья?
Поделитесь мыслями
Войдите, чтобы оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Перейти к сравнению