MIT: Многоядерность для Linux не проблема

Ученые Массачусетского технологического института, утверждают, что в ближайшие годы Linux справится с добавлением в компьютерные процессоры новых ядер. Результаты их исследования будут представлены на симпозиуме USENIX Symposium on Operating Systems Design and Implementation, который пройдет в Торонто (Канада) в начале октября.

Чтобы изучить работу Linux на микросхемах будущего, исследователи MIT создавали систему, в которой восемь 6-ядерных чипов моделировали работу 48-ядерной микросхемы. А затем протестировали пакет приложений, которые размещали громоздкие запросы к ОС и по порядку активировали все 48 ядер. В определенный момент добавление дополнительных ядер начало уменьшать производительность системы, чему есть простое объяснение: в многоядерной системе отдельные ядра зачастую выполняют вычисления, использующие один и тот же блок данных, а пока данные затребованы хотя бы одним ядром, их нельзя удалить из памяти. Когда ядро начинает работать с данными, оно увеличивает значение определенного счетчика, а когда заканчивает свою задачу – уменьшает, таким образом в счетчике хранится число ядер, выполняющих операции над данными. Если с данными не работает ни одно ядро (т.е. показания счетчика нулевые), система может их удалить, освобождая память для других процедур.

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

По мнению одного из участников исследования, профессора Рэмзи Арпаки-Дюссо (Remzi Arpaci-Dusseau), когда число процессорных ядер значительно превзойдет 48, все же потребуются новые архитектуры ОС, но в ближайшие 5-8 лет этого не произойдет.