"CFS Scheduler -v24 Backports (http://kerneltrap.org/Linux/CFS_Scheduler_-v24_Backports)" - новая, значительно переработанная, версия планировщика задач CFS доступна для Linux ядер 2.6.24-rc3, 2.6.23.8, 2.6.22.13 и 2.6.21.7.URL: http://kerneltrap.org/Linux/CFS_Scheduler_-v24_Backports
Новость: http://www.opennet.me/opennews/art.shtml?num=12838
долго читал патч для 2.6.24,но идея неплоха.
Кроме веса каждой группы процессов по отдельности,
вычисляеться еще и динамический вес для каждого процессора, принрадлежащему этой группе.
Так, если в одной группе 3 процесса, и 2 из них на одном проце, а один на другом - то и вес этой группы на этих процессорах будет так же распределен: 2/3 и 1/3 веса группы соответственно.
Так, получаем более справдливое распределение весов групп на каждом процессоре.Сильна трава у Инго...
А есть ещё NUMA - чё там делать прикажешь :) Вычислять веса каждой Ноды надо!Знаешь загадку Эйнштейа?
С одной стороны улицы подряд стоят пять домов, каждый — своего цвета. В каждом живёт человек, все пять — разных национальностей. Каждый человек предпочитает уникальную марку сигарет, напиток и домашнее животное. Кроме того:
1. Англичанин живёт в красном доме.
2. Швед держит собаку.
3. В зелёном доме пьют кофе.
4. Датчанин предпочитает чай.
5. Зелёный дом — слева от белого.
6. Курильщик «ПалМал» разводит птиц.
7. В жёлтом доме курят «Данхел».
8. Молоко пьют в доме посередине.
9. Норвежец живет в первом доме.
10. Человек, курящий «Мальборо», живёт рядом с хозяином кошки.
11. Дом, где курят «Данхел», — рядом с тем, где держат лошадь.
12. Любитель «Винфилд» пьёт пиво.
13. Немец курит «Ротманс».
14. Норвежец живёт рядом с синим домом.
15. Тот, кто курит «Мальборо», живет рядом с тем, кто пьет воду.* Где живет рыбка?
Вот так и в CFS - скажем, что "рыбка" это требуемый для вычисления вес процесса...
Прикинь как весело будет на Blue Gene/L иль на CRAY c 1024 CPU.
Думаю вычислительная нагрузка поползёт по exp(x).
>А есть ещё NUMAопять ты со своей нумой... :)
у тя дома нума на всю квартиру? :))
>чё там делать прикажешь :) Вычислять веса каждой Ноды надо!прикинь обидно то как!... %)))
эти веса - копейки по сравнению с шедулингом.
там того пересчета цикл по группам/процам и пара выражений арифметики.А ваще, при помощи cgroups/cpuset легко сетапяцо группы на указанных множествах
процев/нодах памяти.
>[оверквотинг удален]
> 10. Человек, курящий «Мальборо», живёт рядом с хозяином кошки.
> 11. Дом, где курят «Данхел», — рядом с тем, где
>держат лошадь.
> 12. Любитель «Винфилд» пьёт пиво.
> 13. Немец курит «Ротманс».
> 14. Норвежец живёт рядом с синим домом.
> 15. Тот, кто курит «Мальборо», живет рядом с тем, кто
>пьет воду.
>
> * Где живет рыбка?Гы. У того, кто пьёт грог ;)
>Вот так и в CFS - скажем, что "рыбка" это требуемый
>для вычисления вес процесса...да расслабь булку. Все там проще :)
Список групп и подмножества процессоров, на которых разрешено работать данной группе.
Это 2 вложенных цикла с параметром.
Т.е. лишь в худшем случае это именно фикл по всем группам и процам. Даже в случае с 1024 процами это не много :) ну и даже если пара десятков групп.Тем боле, шо оформлен персчетчик в нитко и сам чудно может быть запущен
на любой ноде/проце твоей нумы (смотря как у шедулера насетаплено)
%)не изволь отказать себе в удовольствии взглянуть на сей нить (ф-ция rebalance_shares):
http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.6....
> Прикинь как весело будет на Blue Gene/L иль на CRAY c
>1024 CPU.
> Думаю вычислительная нагрузка поползёт по exp(x).Да ну ;) в зависимости от констант (к-во нодов/процов) будет функция загрузки шедулера меняццо?? :)
Ну, это реально лишь в случае спец поведения шедулера на определенных участках x (CPU number). А так функция ползет всегда однообразно, лишь меняя коэфициенты рястяжения по координатам ;)
>опять ты со своей нумой... :)
>у тя дома нума на всю квартиру? :))NUMA есть в любом сервере с количеством процессоров AMD больше одного :]
OMG...
позор моим сединам...true...
щас попробовал sysbench погонять на Opteron'е
вот такие неутешительные для NUMA тайминги...
ядро 2.6.24-rc3-git1NUMA:
total time: 89.9028s
total time: 89.1631s
total time: 88.9232sSMP:
total time: 92.8451s
total time: 87.0386s
total time: 85.3406s
даг, где же всё-таки рыбка была?
>даг, где же всё-таки рыбка была?в более правильной балансировке весов по процессорам в SMP/NUMA системах
>>даг, где же всё-таки рыбка была?
>
>в более правильной балансировке весов по процессорам в SMP/NUMA системахну, это относительно 2.6.24-rc3-git1 ;))
относительно 2.6.23 ваще улет - пачка оптимизаций в шедулере, более быстрое переключение
контекста, чем даже в 2.6.22 со старым O(1) шедулером ;)))Ну а всем более древним ядрам и сам CFS еще не снилсо тогда.
На все эти случаи Инго и выложил патчи