Планирование с учетом наименьшего прошедшего времени обработки: различия между версиями

Перейти к навигации Перейти к поиску
м
Строка 6: Строка 6:


== Нотация ==
== Нотация ==
Обозначим за <math>\mathcal{J} = \{ 1, 2, ..., n \}</math> множество заданий во входном экземпляре задачи. Каждое задание j характеризуется временем высвобождения <math>r_j</math> и требованием к обработке <math>p_j</math>. В онлайновом режиме задание j сообщается планировщику только в момент времени <math>r_j</math>. Еще одним ограничением является режим ''с отсутствием предвидения'', в котором в момент <math>r_j</math> раскрывается только существование задания j; в частности, <math>p_j</math> планировщику неизвестно до тех пор, пока задание не выполнит свое требование к обработке и не покинет систему. Пусть имеется расписание; тогда время завершения <math>c_j</math> задания представляет собой самое раннее время, в которое задание j получает объем обслуживания <math>p_j</math>. Продолжительность потока <math>f_j</math> задания j определяется как <math>c_j - r_j</math>. Протяженность задания определяется как отношение продолжительности потока к его объему. Протяженностью также называют нормализованную продолжительность потока или замедление, и она является естественной мерой справедливости, поскольку измеряет время ожидания задания на единицу полученного обслуживания. Расписание называется вытесняющим, если задание может быть прервано произвольно, и его выполнение может быть возобновлено позже с момента прерывания без каких-либо штрафов. Хорошо известно, что вытеснение необходимо для получения разумных гарантий времени потока даже в оффлайновом режиме [5].
Обозначим за <math>\mathcal{J} = \{ 1, 2, ..., n \}</math> множество заданий во входном экземпляре задачи. Каждое задание j характеризуется временем высвобождения <math>r_j</math> и требованием к обработке <math>p_j</math>. В онлайновом режиме задание j сообщается планировщику только в момент времени <math>r_j</math>. Еще одним ограничением является режим ''с отсутствием предвидения'', в котором в момент <math>r_j</math> раскрывается только существование задания j; в частности, <math>p_j</math> планировщику неизвестно до тех пор, пока задание не выполнит свое требование к обработке и не покинет систему. Пусть имеется расписание; тогда время завершения <math>c_j</math> задания представляет собой самое раннее время, в которое задание j получает объем обслуживания <math>p_j</math>. Продолжительность потока <math>f_j</math> задания j определяется как <math>c_j - r_j</math>. Протяженность задания определяется как отношение продолжительности потока к его объему. Протяженностью также называют нормализованную продолжительность потока или его замедление, и она является естественной мерой справедливости, поскольку измеряет время ожидания задания на единицу полученного обслуживания. Расписание называется вытесняющим, если задание может быть прервано произвольно, и его выполнение может быть возобновлено позже с момента прерывания без каких-либо штрафов. Хорошо известно, что вытеснение необходимо для получения разумных гарантий продолжительности потока даже в оффлайновом режиме [5].




Вспомним, что онлайновый алгоритм Shortest Remaining Processing Time (SRPT), который в любой момент времени работает над заданием с наименьшим оставшимся временем обработки, является оптимальным для минимизации средней продолжительности потока.
Вспомним, что онлайновый алгоритм Shortest Remaining Processing Time (SRPT), который в любой момент времени работает над заданием с наименьшим оставшимся временем обработки, является оптимальным для минимизации средней продолжительности потока. Однако алгоритм SRPT часто критикуют за то, что он может привести к «зависанию» заданий, в случае которого некоторые задания могут откладываться на неопределенное время. Например, рассмотрим последовательность, в которой задание размера 3 поступает в момент времени t = 0, а затем в течение длительного времени одно задание размера 1 поступает каждую единицу времени, начиная с t = 1. При использовании алгоритма SRPT задание размера 3 будет отложено до тех пор, пока не перестанут поступать задания размера 1. С другой стороны, если целью является минимизация максимальной продолжительности потока, то легко увидеть, что оптимальным алгоритмом является алгоритм First in First Out (FIFO). Однако FIFO может работать очень плохо с точки зрения средней продолжительности потока (например, множество маленьких заданий может застрять из-за очень большого задания, которое прибыло чуть раньше). Естественным способом сбалансировать среднюю и наихудшую производительность является рассмотрение <math>\ell_p</math>-норм продолжительности потока и протяженности, где <math>\ell_p</math>-норма последовательности <math>\chi_1, ..., \chi_n</math> определяется как <math>(\sum_i \chi^p_i)^{1/p}</math>.
 
 
Однако алгоритм SRPT часто критикуют за то, что он может привести к «зависанию» заданий, в случае которого некоторые задания могут откладываться на неопределенное время. Например, рассмотрим последовательность, в которой задание размера 3 поступает в момент времени t = 0, а затем в течение длительного времени одно задание размера 1 поступает каждую единицу времени, начиная с t = 1. При использовании алгоритма SRPT задание размера 3 будет отложено до тех пор, пока не перестанут поступать задания размера 1. С другой стороны, если целью является минимизация максимальной продолжительности потока, то легко увидеть, что оптимальным алгоритмом является алгоритм First in First Out (FIFO). Однако FIFO может работать очень плохо с точки зрения средней продолжительности потока (например, множество маленьких заданий может застрять из-за очень большого задания, которое прибыло чуть раньше). Естественным способом сбалансировать среднюю и наихудшую производительность является рассмотрение <math>\ell_p</math>-норм продолжительности потока и протяженности, где <math>\ell_p</math>-норма последовательности <math>\chi_1, ..., \chi_n</math> определяется как <math>(\sum_i \chi^p_i)^{1/p}</math>.




4652

правки

Навигация