Сегодня для тестирования была опубликована захватывающая новая серия патчей для ядра Linux… Представляем поддержку балансировки нагрузки с учетом кэша. Патч создан опытным инженером Intel Linux, но эта балансировка нагрузки с учетом кэша может также оказаться весьма применимой для пользователей AMD Linux для процессоров EPYC и Ryzen.
Инженер Intel Питер Зейлстра сегодня опубликовал серию патчей «запрос на комментарии» (RFC) для внедрения балансировки нагрузки с учетом кэша. Как он объяснил, код находится в разработке уже некоторое время, хотя только сейчас он попал в список рассылки. Питер написал :
«Одной из многих вещей в вечном списке дел было завершение нижеприведенного хака.
Это попытка моделирования кэш-сродства — и хотя патч на самом деле нацелен только на LLC, его вполне можно расширить, чтобы он также применялся к кластерам (L2). В частности, к любому случаю нескольких доменов кэша внутри узла.
В любом случае, я написал это около года назад, и я упомянул об этом на недавней конференции OSPM, где Гаутам и Пратик выразили заинтересованность в игре с этим кодом.
Итак, вот он, очень грубый и в значительной степени непроверенный код впереди 🙂
Он применим к текущему tip/master, но я знаю, что он не пройдет проверку __percpu, которая находится в -next, хотя это не должно быть очень сложно исправить.
Как есть, он вычисляет только ЦП внутри LLC, который имеет самое высокое недавнее время выполнения, затем этот ЦП используется в пути пробуждения, чтобы направить к этому LLC и в task_hot(), чтобы ограничить миграции от него.
Можно было бы сделать более сложные вещи, в частности, где-то там есть XXX поиск лучшего LLC внутри УЗЛА (взаимодействие с NUMA_BALANCING)».
Gautham и Prateek, упомянутые в сопроводительном письме к патчу, являются инженерами Linux от AMD. Так что даже если у Питера не будет пропускной способности, чтобы довести это до финишной черты в ближайшем будущем и сделать его основным, будем надеяться, что инженеры AMD активизируются и протестируют эти патчи и настроят его в форму для восходящего потока. AMD EPYC должны особенно выиграть, а процессоры Ryzen (X3D) в меньшей степени должны получить выгоду от этой балансировки нагрузки с учетом кэша, и будет интересно протестировать этот код, когда он, как мы надеемся, примет хорошую форму, чтобы увидеть его преимущества в производительности.
На данный момент эта балансировка нагрузки с учетом кэширования находится в списке рассылки ядра Linux для всех желающих ее протестировать.