a
b
c
d
FindNews.ru - новости, последние события, хроники.
Петербург ждет наводнение, но пока уровень воды в Неве за час поднялся на 5 см
Сегодня, 15:50
Шведские спецслужбы сообщили, что нашли подтверждения диверсии на «Северных потоках»
Сегодня, 15:49
Песков назвал публикации об отъезде 700 тыс. россиян с начала частичной мобилизации «какой-то уткой»
Сегодня, 15:34
«Получили карт-бланш?»: Собчак оценила предостережение Делимханова студентам, «продавшим страну»
Сегодня, 14:59
Упростили: АвтоВАЗ кое-что убрал из комплектации LADA Granta
Сегодня, 14:51
Опасность поджидает за углом: где гаишники устраивают засады автомобилистам
Сегодня, 14:51
В «Приморском квартале» появился благоустроенный двор с 6800 растений
Сегодня, 14:45
Лауреатом Нобелевской премии по литературе стала Анни Эрно
Сегодня, 14:35
В Госдуме попросили проверить сообщения о брошенных под Белгородом 500 мобилизованных
Сегодня, 14:19
В Курганской области «новогодние» деньги пойдут на экипировку для мобилизованных
Сегодня, 13:48

Новый планировщик задач для ОС Linux способен ускорить работу системы вдвое

Для Linux разрабатывают новый планировщик задач Nest, который ускоряет работу системы в среднем на 10-100% при небольших нагрузках. Nest не пытается «размазать» задачи по всем ядрам процессора, вместо этого отбирая из них небольшое количество наиболее разогнанных в данный момент на роль приоритетных и не давая им «остыть» в дальнейшем.

Новый планировщик для Linux

Ядро Linux в будущем может обзавестись новым планировщиком задач. Экспериментальная программная разработка под названием Nest была представлена на конференции Linux Plumbers 2022, которая проходит в Дублине (Ирландия), пишет Phoronix.

Разработкой Nest занимается Джулия Лаваль (Julia Lawall) и ее коллеги из Национального института исследований в информатике и автоматике (INRIA, Франция). Также в проекте принимает участие Oracle Labs (ранее – Sun Microsystems Labs) – исследовательское подразделение американской корпорации Oracle.

Планировщик задач (process scheduler) – это компонент многозадачной операционной системы, обеспечивающий распределение процессорного времени между запущенными процессами (потоками, программами) по заранее заданному алгоритму.

linuks600.jpgLinux может стать быстрее на 10-100% в определенных сценариях с планировщиком Nest

Ключевой особенностью Nest является его стремление приоритизировать «разогретые», то есть недавно (по меркам планировщика) использовавшиеся ядра центрального процессора. Такие ядра, как отмечает Phoronix, вероятно, уже работают на высокой тактовой частоте (в режиме Turbo/Boost), поэтому нет нужды тратить лишнее время на ожидание их «пробуждение» и наращивание частоты.

Благодаря такому подходу достигается повышение отзывчивости системы и, по оценке разработчиков, производительность в определенных сценариях при использовании Nest с ядром Linux 5.9 возрастает на 10-100%, сокращается энергопотребление.

Есть нюансы

Однако стоит иметь в виду, что подобные результаты могут быть достигнуты только на малых и средних вычислительных нагрузках, когда имеется возможность выжимать максимум (по тактовой частоте) из небольшого количества активных ядер при неактивности остальных. При полной же загрузке процессора работой данный подход не имеет смысла.

nest-performance.png

Производительность различного ПО при использовании Nest и «чистого» CFS

Разработчики отмечают, что Nest хорошо себя показывает при работе на Linux-серверах на базе современных процессоров Intel (в одно-, двух-, и четырехпроцессорных конфигурациях), а также на AMD-серверах и десктопах.

Кроме того, подчеркивается, что влияние планировщика на производительность зависит в том числе от подхода к управлению питанием, принятого в целевых ОС и «железе».

Принцип работы Nest

Текущим планировщиком задач в Linux по умолчанию с 2007 г. является CFS (Completely fair scheduler). Алгоритм построении очереди процессов в CFS построен на основе механизма взвешенной справделивой очереди (Weighted fair queuing). Если же говорить о подходе к распределению нагрузки, то CFS стремится задействовать все доступные ядра процессора, что вполне рационально при высоких нагрузках.

nest-reusecores.png

Кластеризации ядер в Nest

Nest, хоть, судя по документации, и работает «поверх» CFS, в этом отношении действует принципиально иначе. Планировщик отслеживает активность ядер процессора (или процессоров) и распределяет их по двум кластерам или в терминологии разработчиков – гнездам: основному (primary nest) и резервному (reserve nest). В первый попадают используемые в данный момент или использованные недавно ядра, которые, как ожидает планировщик, пригодятся в самое ближайшее время – те самые «разогретые» ядра. Во второй – ядра, ранее пребывавшие в основном гнезде, но выброшенные оттуда в силу собственной невостребованности в течение некоторого времени. Кроме того, в резерве могут оказаться ядра, отобранные CFS, но пока не пригодившиеся в основном гнезде.

Антон Смирнов, AI Cloud: Магия ИИ начинается там, где серверы объединяются в «команды» Искусственный интеллект

Состав гнезд изменяется автоматически в зависимости от условий. К примеру, если имеющиеся в primary nest не могут справиться с текущим уровнем нагрузки или сделать это эффективно, то на подмогу будут направлены ядра из резерва.

Nest может периодически обращаться к незадействованным ядрам из основного гнезда, чтобы те не «засыпали».

Примечательно, что нечто подобное реализовано в Windows 10 и 11: при наличии процессора AMD Ryzen собственный планировщик ОС Microsoft стремится отдать приоритет конкретным физических ядрам при сравнительно невысокой нагрузке, отмечает Tom’s Hardware. Однако, судя по документации к Nest, новый Linux-планировщик отличается большей гибкостью.

Linux и Alder Lake

До выхода версии 5.18 Linux не самым оптимальным образом использовал новейшие гибридными процессорами Intel семейства Alder Lake (12 поколение).

Ипотека для ИТ-специалистов: что важно знать Поддержка ИТ-отрасли

Ключевой особенностью процессоров этого семейства, представленных в конце октября 2021 г., является разделение входящих в их состав ядер на производительные (архитектура Golden Cove) и энергоэффективные (Gracemont).

По задумке разработчиков, быстрые производительные ядра должны заниматься решением наиболее приоритетных задач, а энергоэффективные, но медленные – обслуживать фоновые процессы. За реализацию данной схемы ответственна технология Intel Thread Director, которая использует интерфейс Hardware Feedback Interface (HFI) для обмена сведениями о производительности отдельных ядер, поддержка которого появилась только в Linux 5.18, в мае 2022 г. Как писал CNews, в ее отсутствие планировщик задач Linux нередко отдавал предпочтение быстрым ядрам, оставляя энергоэффективные без какой-либо полезной нагрузки.

Дмитрий Степанов

Поделиться Подписаться на новости Короткая ссылка

Наука и высокие технологии - другие новости