Linux снова удивляет: Sheaves, Barn и прочие чудеса из недр ядра
Если вы думали, что в мире Linux уже всё оптимизировано до последнего бита, то спешу вас разочаровать (или порадовать?). Нет, работа кипит и разработчики продолжают изменять внутренности ядра, как автолюбитель, ковыряющийся в моторе любимой “ласточки”. На этот раз в центре внимания новая фишка под названием Sheaves. переводится как снопы или пучок. Признаюсь, название звучит немного сельскохозяйственно, но идея за этим названием, чистый хай-тек.

В версии Linux 6.18 Sheaves появились как дополнительный уровень кэширования. Это что-то вроде ещё одной кладовки, куда система может прятать временные данные, чтобы не бегать каждый раз за ними к основному складу. Для каждого процессора имеется свой «сноп», а для каждого NUMA-узла (это такие «островки» памяти в многопроцессорных системах) отдельный большой амбар под названием Barn. Согласитесь, звучит уютно, снопы, амбары, порядок в хозяйстве.
Недавно Властимил Бабка из SUSE представил пачку патчей, которые переводят часть ядра Linux на использование этих самых Sheaves вместо старых добрых CPU блоков. Проще говоря, они решили выкинуть старую мебель и поставить новую, ту, что полегче и не скрипит. По задумке, это должно повысить производительность и одновременно сократить объёмы хитроумного кода, от которого уже у самих разработчиков, похоже, начинала дергаться глаз.
Что именно поменяли?
Речь идёт о подсистеме slab это такой менеджер памяти внутри ядра, который отвечает за то, как выделяются и освобождаются кусочки памяти. Если раньше у каждого процессора была своя небольшая «кучка» (partial slab), то теперь всё переезжает в систему Sheaves. Разработчики решили, что пора навести порядок и перестать дублировать механизмы на каждом ядре процессора. Ведь зачем городить сто сараев, если можно сделать один большой и повесить на него табличку «Barn».
В теории это даст прирост производительности, упростит жизнь ядру и уберёт массу старых костылей. Например, уйдут из кода целые фрагменты, отвечающие за без блокировочные операции вроде this_cpu_try_cmpxchg128. Эти штуки раньше были нужны, чтобы избежать конфликтов при многопоточности и не устраивать гонки за ресурсы. Но с появлением Sheaves в этом отпадает необходимость и система сама аккуратно раскладывает данные по местам, без нервов и спешки.
А что по факту?
Вот тут начинается самое интересное. Пока никаких точных цифр по производительности нет. Бабка честно признаёт: «Надеемся, станет быстрее». И это, пожалуй, самая человечная фраза в его отчёте. Разработчики Linux, как и мы с вами, иногда работают на веру. Делают лучше, потому что логика подсказывает, что должно быть лучше. А вот тесты потом всё расставят по местам.
Тем не менее, есть факты. Новый код стал чище, минус примерно 900 строк старья, плюс 1700 новых. Кто-то скажет: «Так стало даже больше!» Но не спешите с выводами. Новые строки это аккуратные, понятные участки, а старые часто представляли собой хитросплетения макросов, блокировок и магических условий. То есть реальная читаемость и надёжность выросли, а не упали.
Куда всё это катится?
Linux это живой организм, и время от времени ему нужно сбрасывать старую кожу. Переход на Sheaves это как генеральная уборка в доме, где давно не меняли мебель. Шум, пыль, потерянные носки, зато потом можно дышать свободно.
Так что да, пока неясно, насколько «снопы» реально ускорят систему, но направление выглядит логичным. А если уж SUSE и сообщество ядра взялись за это, значит, причина есть. Я бы поставил на то, что через пару релизов мы увидим первые бенчмарки и тогда всё станет ясно. Снопы это прорыв или просто новый способ красиво сказать «мы переписали старый код».
А пока просто ждём. И, может быть, пора уже признать, что в Linux скучно не бывает. Даже такие вещи, как кэширование памяти, тут превращаются в приключение со снопами и амбарами. Настоящая ферма производительности, честное слово.
Понравилась статья?
Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!
Поддержать проектСпасибо, что вы с нами!



