LINUX.ORG.RU

Планировщик (scheduler)


0

0

Здравствуйте! Помогите пожалуйста разобраться в следующем вопросе: На каком основании планировщик принимает решения о переносе (миграции) какого либо процесса с одного ядра на другое? И где можно посмотреть код, осуществляющий эти действия?

Заранее спасибо.

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

Documentation/scheduler

kernel/sched.c

anonymous
()
Ответ на: комментарий от anonymous

а где найти фрагмент кода, который это осуществляет? В каком именно месте это происходит? Не могли бы вы выложить соответствующий код сюда?Желательно с комментариями на русском)

matanga
() автор топика
Ответ на: комментарий от anonymous

Просто я в этом не совсем много понимаю, а нужно сдавать курсовую. Ну если не с комментариями, то хотя бы просто часть этого кода....

Заранее спасибо)

matanga
() автор топика
Ответ на: комментарий от matanga

>Просто я в этом не совсем много понимаю, а нужно сдавать курсовую.

учится надо было раньше.

>то хотя бы просто часть этого кода....

поискать balance в вышеприведеных файлах/каталогах религия не позволяет?

anonymous
()
Ответ на: комментарий от anonymous

там слишком много этих балансировок. И все же я не понимаю ,почему планировщик решает, что с этого ядра процесс нужно перенести?

matanga
() автор топика
Ответ на: комментарий от matanga

>там слишком много этих балансировок.

дык.

>И все же я не понимаю ,почему планировщик решает, что с этого ядра процесс нужно перенести?

ну когда у вас одно ядро простаивает, а на другом десяток процессов постоянно соперничают друг с другом это как бы не хорошо.

anonymous
()
Ответ на: комментарий от anonymous

то есть получается, что планировщик смотрит исключительно на длину очереди процессов и по ней определяет, нужно ли перенести процессы из одной очереди на другую. так?

Если бы мог раньше учиться - учился бы.... 4 месяца в больнице лежал. стоило выйти - уже сессия не за горами. вот и мучаюсь теперь круглыми сутками...

matanga
() автор топика
Ответ на: комментарий от matanga

>то есть получается, что планировщик смотрит исключительно на длину очереди процессов и по ней определяет, нужно ли перенести процессы из одной очереди на другую. так?

это самый очевидный фактор.

а мы вообще про какой планировшик с вами говорим? :)

anonymous
()
Ответ на: комментарий от matanga

их несколько было :)

сейчас CFS, до этого O(1) был и т.д....

O(1) хорошо описан в understanding the linux kernel, там и конкретные отрывки кода имеются.

anonymous
()
Ответ на: комментарий от anonymous

На компьютерах стоят Suse 10.3 и серверная версия Linux (SLES). В них какой планировщик? Насколько я понимаю, О(1).

Сейчас моя задача - показать именно тот фрагмент кода, где видно, по каким причинам процессы мигрируют на другое ядро. Вот именно это я и не могу найти...

matanga
() автор топика

> И где можно посмотреть код, осуществляющий эти действия?

смотреть в следующей последовательности

1. scheduler_tick() (вызывается из обработчика прерывания по таймеру)
http://www.linux-m32r.org/lxr/http/source/kernel/sched.c#L3220
особо обратить внимание на код в строке 3236
rq->next_balance определяет значение jiffies, при котором (или большем значении) идет генерация отложенного прерывания SCHED_SOFTIRQ, осуществляющего проверку сбалансированности очередей выполнения

2. run_rebalance_domains() (обработчик SCHED_SOFTIRQ)
http://www.linux-m32r.org/lxr/http/source/kernel/sched.c#L2922
ядро функции - вызов load_balance()
в рамках load_balance() обязательно обратить внимание на функции
find_busiest_group() и find_busiest_queue()

rei3er
()
Ответ на: комментарий от rei3er

почему то в коде планировщика, который мне нужно изучить отсутствует функция update_load... как и отсутствует функция run_rebalance_domains...

Видимо версия ядра другая. Как тогда обстоит дело в моем планировщике?

Здесь находится код моего планировщика http://slil.ru/25877615

matanga
() автор топика
Ответ на: комментарий от matanga

во настырные студенты :). Найди патч на ядро 2.6.8.1 в котором есть расширенные комментарии к планировщику. Да. у тебя другое ядро, но кто это заметит?

anonymous
()
Ответ на: комментарий от anonymous

да блин... во первых в английском я далеко не силен) а во вторых он все смотрит и просит показать на своем компе(((

matanga
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.