Многопоточность: Linux против Windows
Представим ситуацию: ты запустил стрим. У тебя запущен OBS, игра, браузер с чатиком, аудиоплеер, приложение с заметками, клиенты Steam, Discord и Telegram. Всё это крутится на одном PC под управлением OS Windows. И возникла (закономерная) проблема: всё начало лагать и возрос пинг. Потери FPS в таких сценариях может составлять 20-30%.
У многих стримеров имеются два PC именно по этой причине. Один под игру, другой под OBS, браузер и прочее. Пользователи Windows привыкли к тому, что если пооткрывать много (тяжеловесных) приложений, то производительность PC упадёт. Для них это кажется естественным и логичным.
Однако если все те же самые приложения запустить на одном PC под управлением OS GNU/Linux, то ситуация совершенно обратная – каждое приложение отзывчиво, FPS в игре ровно-высокий, и можно запускать хоть по 15 приложений одновременно без потери производительности и ширины сетевого канала (если не считать весьма крохотные 1-5%).
Но почему так?
Как в Windows устроена многопоточность
Планировщик Windows распределяет ресурсы компьютера по процессам неравномерно: она сама выставляет приоритет процессам. Игры как правило имеют больший приоритет.
Звучит это вроде как логично, но что интересно – подобный подход имеет совершенно обратный эффект.
Из-за того, что все ресурсы компьютера были пущены на игру, все остальным процессам приходится стоять в очередь. И как только в игре происходит статтер – мышка и клавиатура просто отваливаются и перестают реагировать. Как косоебит OBS в таком случае страшно представить.
Иногда всё настолько плохо, что компьютер приходится перезагружать, если компьютер не оклемался и не даёт даже запустить диспетчер задач, чтобы принудительно убить процесс. Что вообще нежелательно когда у тебя запущен стрим!
Как в Linux устроена многопоточность
Напротив. Планировщик Linux не считает игру царём среди процессов, и распределяет ресурсы компьютера равномерно на каждый запущенный процесс, деля вычисления на микрозадачи, выполняемые поочередно каждым процессом.
Некоторые наводящие мысли
Да, Windows может неплохо справиться с одной игрой. Но как только появляется что-то кроме игры (к примеру, антивирус) производительность может падать значительно.
В то время как на Linux ты можешь одновременно скачивать LLM-модель с huggingface, компилировать Rust-проект, играть в Elden Ring и вести при этом стрим в OBS, попутно читая чат в браузере на втором мониторе, и при этом Gnome останется таким же плавным как и всегда.
Думайте. Подписаться.