TG Telegram Group & Channel
Scala bin | United States America (US)
Create: Update:

Недавно опубликованный доклад "Threads at Scale" вновь поднял извечный вопрос идеального количества потоков в приложении и как этот параметр влияет на производительность. При использовании высокоуровневых языков программирования легко забыть, что каждое переключение процессора между потоками исполнения - одна из самых "дорогих" операций для процессора.

Как докладчик, так и авторы исходной статьи сходятся во мнении, что нужно стремиться к ситуации, когда одному потоку приложения (связанному с потоком ОС) соответствует одно ядро процессора (без учёта мультитрединга). Однако, поскольку строить всё приложение вокруг количества потоков в ОС часто архитектурно проблематично, а в реальных приложениях часто присутствуют системные вызовы, блокирующие поток исполнения, оптимальной на текущий момент является абстракция над реальными потоками исполнения в виде системы эффектов. Например, cats-effect предлагает оперировать логическими потоками в виде Fiber, не привязанными к потокам ОС, а для блокирующих операций выделять отдельный Executor, работа с которым тоже осуществляется через абстракцию.

Отдельно рекомендую прочитать исходную научную работу - авторы очень подробно рассматривают факторы, влияющие на производительность при переключении потоков исполнения, и текущие ограничения аппаратного обеспечения.

Недавно опубликованный доклад "Threads at Scale" вновь поднял извечный вопрос идеального количества потоков в приложении и как этот параметр влияет на производительность. При использовании высокоуровневых языков программирования легко забыть, что каждое переключение процессора между потоками исполнения - одна из самых "дорогих" операций для процессора.

Как докладчик, так и авторы исходной статьи сходятся во мнении, что нужно стремиться к ситуации, когда одному потоку приложения (связанному с потоком ОС) соответствует одно ядро процессора (без учёта мультитрединга). Однако, поскольку строить всё приложение вокруг количества потоков в ОС часто архитектурно проблематично, а в реальных приложениях часто присутствуют системные вызовы, блокирующие поток исполнения, оптимальной на текущий момент является абстракция над реальными потоками исполнения в виде системы эффектов. Например, cats-effect предлагает оперировать логическими потоками в виде Fiber, не привязанными к потокам ОС, а для блокирующих операций выделять отдельный Executor, работа с которым тоже осуществляется через абстракцию.

Отдельно рекомендую прочитать исходную научную работу - авторы очень подробно рассматривают факторы, влияющие на производительность при переключении потоков исполнения, и текущие ограничения аппаратного обеспечения.


>>Click here to continue<<

Scala bin






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)