Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

14.03.2024

Особливості процесорів Apple Silicon

Як писав, вимірювання швидкості паралельних програм на Apple Silicon має неочевидні аспекти, через які я б радив взагалі не вимірювати нічого локально, а використовувати хмарну віртуальну машину.

Нюанс головний: в процесорі Apple Silicon є два типи ядер: швидкі та економні. Вони відрізняються швидкістю, розміром кеша, та, звісно, витратами енергії. Економні ядра — чудова інновація, бо вони дозволяють заощадити батарею під час виконання фонових, не вибагливих до швидкості процесів. Але… процеси чи потоки, що потрапляють на економні ядра, будуть виконуватись повільніше.

Причому примусово використовувати тільки швидкі ядра ми не можемо. Процеси по ядрах розподіляє операційна система. Для того в процесу є пріоритет (клас QoS); найменший пріоритет мають фонові задачі, які завжди виконуються на економних ядрах, а найбільший — графічні програми, робота яких нам буквально видна. Пріоритет можна побачити, зокрема, в htop - це стовпчик PRI. (Взагалі, htop - найкращий монітор процесів і на Apple Silicon теж.)

Все це гарно для користування, проте шкодить бенчмаркінгу. Зверх того, треба мати на увазі стандартні обмеження — запускати тести тільки при живленні від мережі, зупинити зайві процеси, перевірити охолодження (до речі: в macOS є процес kernel_task, який буквально відбирає час CPU, коли той перегрівається. Бачиш високу активність kernel_task - шукай причину перегріву.)

…При всьому цьому, мені так і не вдалося зробити розвʼязок з ракторами, який не був би у 2 рази повільніше за процеси — попри те, що процеси в мене комунікують рядками JSON, а рактори безпосередньо передають значення в памʼяті. Експериментальна технологія експериментальна.

(О, а ще — і я це перевіряв — запущена в фоні база даних має нижчий пріоритет, ніж запущена з термінала, та це впливає на швидкість тестів, які її використовують.)

Раджу ось цю низку статей, де в дрібних деталях розписано про поведінку Apple Silicon.