TGViewer
Типичный программист Типичный программист @tproger · 78.1K subscribers
Post #14875 3.46K
Два ядра загружены на 100%, а программа тормозит: где искать причину

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

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

Обычный профиль этих ожиданий не разделяет. В разборе трёх причин тормозов есть команды perf stat для счётчиков промахов и perf c2c для поиска строки кэша, за которую спорят ядра. Это полезное направление диагностики, когда добавление потоков не ускоряет сервис.
  • 🔥 3
  • 👍 2
  • 🤣 2
  • ☃ 1
  • 👎 1
  • 😍 1
  • 🌚 1
  • 💔 1
  • 😈 1
  • 🙈 1
  • 🙉 1
More from @tproger
  1. Oct 3, 2026Как поручить ИИ миграцию сайта и не потерять 400 страниц Сайт с сотнями маршрутов, формами…
  2. Oct 3, 2026Как HLS запускает видео до полной загрузки В HLS ролик разбит на независимые сегменты, обы…
  3. Oct 3, 2026Post #14877
  4. Oct 3, 2026Как поймать утечку целевой переменной до того, как поверить R² 0,998 Модель получила пять…
  5. Oct 3, 2026Как компании снижают расходы на ИИ с помощью открытых моделей Uber потратила годовой ИИ-бю…
  6. Oct 2, 2026Если ваш прод живёт в Kubernetes, эта подборка пригодится. Гайды, малоизвестные Open Sourc…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →