4817
правок
Irina (обсуждение | вклад) мНет описания правки |
Irina (обсуждение | вклад) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
== Ключевые слова и синонимы == | == Ключевые слова и синонимы == | ||
Справедливость (Fairness); малая длительность пребывания (Low sojourn times); составление расписания с | Справедливость (''Fairness''); малая длительность пребывания (''Low sojourn times''); составление расписания с заданиями неизвестного размера (''Scheduling with unknown job sizes'') | ||
== Постановка задачи == | == Постановка задачи == | ||
Строка 7: | Строка 7: | ||
'''Нотация''' | '''Нотация''' | ||
Обозначим за <math>\mathcal{J} = \{ 1, 2, ..., n \}</math> множество заданий во входном экземпляре задачи. Каждое задание <math>j</math> характеризуется сроком запуска <math>r_j \;</math> и требованием к обработке <math>p_j \;</math>. В онлайновом режиме задание <math>j</math> сообщается планировщику только в момент времени <math>r_j</math>. Еще одним ограничением является ''режим с отсутствием предвидения'', в котором в момент <math>r_j</math> раскрывается только существование задания <math>j</math>; в частности, величина <math>p_j</math> планировщику неизвестна до тех пор, пока задание не выполнит свое требование к обработке и не покинет систему. Пусть имеется расписание; тогда время завершения <math>c_j</math> задания представляет собой самое раннее время, в которое задание <math>j</math> получает объем обслуживания <math>p_j</math>. Продолжительность потока <math>f_j</math> задания <math>j</math> определяется как <math>c_j - r_j</math>. Расписание называется вытесняющим, если задание может быть прервано произвольно, и его выполнение может быть возобновлено позже с момента прерывания без каких-либо штрафов. Хорошо известно, что вытеснение необходимо для получения разумных гарантий даже в оффлайновом режиме [4]. | |||
Существует несколько естественных алгоритмов без предвидения, таких как First Come First Served (обслуживание в порядке | |||
Существует несколько естественных алгоритмов без предвидения, таких как First Come First Served (обслуживание в порядке поступления), Processor Sharing (работа над всеми текущими незавершенными заданиями с одинаковой скоростью), Shortest Elapsed Time First (работа над заданием, получившим на текущий момент наименьший объем обслуживания). Коффман и Кляйнрок [2] предложили еще один естественный алгоритм, получиаший название «многоуровневая очередь с обратной связью» (Multi-Level Feedback Queueing, MLF). MLF работает следующим образом. Имеются очереди <math>Q_0, Q_1, Q_2, ...</math> и пороговые значения <math>0 < t_0 < t_1 < t_2...</math>. Первоначально по прибытии задание помещается в очередь <math>Q_0</math>. Когда задание в очереди <math>Q_i</math> получает кумулятивный объем обслуживания <math>t_i</math>, оно перемещается в <math>Q_{i + 1}</math>. В любой момент времени алгоритм работает с непустой очередью с наименьшим номером. Коффман и Кляйнрок проанализировали MLF в формулировке теории очередей, когда задания поступают в соответствии с пуассоновским процессом, а требования к обработке выбираются идентично и независимо из известного распределения вероятностей. | |||
Строка 16: | Строка 17: | ||
== Основные результаты == | == Основные результаты == | ||
Хотя алгоритмы без предвидения активно изучались в теории очередей в течение многих десятилетий, само это понятие было рассмотрено Мотвани, Филлипсом и Торнгом [5] | Хотя алгоритмы без предвидения активно изучались в теории очередей в течение многих десятилетий, само это понятие было рассмотрено относительно недавно в контексте конкурентного анализа Мотвани, Филлипсом и Торнгом [5]. Как и в традиционном конкурентном анализе, алгоритм без предвидения называется <math>c</math>-конкурентным, если для каждого входного экземпляра его производительность не более чем в <math>c</math> раз ниже, чем у оптимального оффлайнового решения для этого экземпляра. Мотвани, Филлипс и Торнг показали следующее. | ||
Теорема 1 [5]. Для задачи минимизации средней продолжительности потока на одной машине любой детерминированный алгоритм без предвидения должен иметь коэффициент конкурентоспособности не менее | '''Теорема 1 [5]. Для задачи минимизации средней продолжительности потока на одной машине любой детерминированный алгоритм без предвидения должен иметь коэффициент конкурентоспособности не менее <math>\Omega(n^{1/3})</math>, а любой рандомизированный алгоритм – не менее <math>\Omega(log \; n)</math>, где n – количество заданий в экземпляре.''' | ||
Не слишком удивительно, что любой детерминированный алгоритм должен иметь плохой коэффициент конкурентоспособности. Например, рассмотрим алгоритм MLF, у которого пороги являются степенями 2, то есть 1, 2, 4, ... Предположим, что n = 2 | Не слишком удивительно, что любой детерминированный алгоритм должен иметь плохой коэффициент конкурентоспособности. Например, рассмотрим алгоритм MLF, у которого пороги являются степенями 2, то есть 1, 2, 4, ... Предположим, что <math>n = 2^k</math> заданий размера <math>2^k + 1</math> каждое поступают в моменты времени <math>0, 2^k, 2 \cdot 2^k, ..., (2^k - 1)2^k</math>, соответственно. Тогда легко проверить, что средняя продолжительность потока для MLF равна <math>\Omega(n^2)</math>, тогда как у оптимального алгоритма она равна <math>\Omega(n)</math>. | ||
Заметим, что MLF плохо работает на приведенном выше примере, поскольку все задания застревают в очереди до конца, когда у них остается всего одна единица работы. Любопытно, что Калянасундарам и Прухс [3] разработали рандомизированный вариант MLF (названный ими RMLF) и доказали, что его коэффициент конкурентоспособности почти оптимален. Для каждого задания j и для каждой очереди | Заметим, что MLF плохо работает на приведенном выше примере, поскольку все задания застревают в очереди до конца, когда у них остается всего одна единица работы. Любопытно, что Калянасундарам и Прухс [3] разработали рандомизированный вариант MLF (названный ими RMLF) и доказали, что его коэффициент конкурентоспособности почти оптимален. Для каждого задания <math>j</math> и для каждой очереди <math>Q_i</math> алгоритм RMLF устанавливает порог <math>t_{i, j}</math> случайно и независимо в соответствии с усеченным экспоненциальным распределением. Грубо говоря, задание случайного порога гарантирует, что если задание застряло в очереди, то оставшееся время его обработки будет составлять разумную долю от первоначального времени обработки. | ||
Теорема 2 [3]. Алгоритм RMLF является O (log n log log n)-конкурентным относительно рассеянного соперника. Более того, алгоритм RMLF является O(log n log log n)-конкурентным даже относительно адаптивного соперника при условии, что соперник заранее выбирает все размеры заданий. | '''Теорема 2 [3]. Алгоритм RMLF является <math>O(log \; n \; log \; log \; n)</math>-конкурентным относительно рассеянного соперника. Более того, алгоритм RMLF является <math>O(log \; n \; log \; log \; n)</math>-конкурентным даже относительно адаптивного соперника при условии, что соперник заранее выбирает все размеры заданий.''' | ||
Позже Беккетти и Леонарди [ ] показали, что на самом деле RMLF оптимально конкурентоспособен с точностью до постоянного коэффициента. Они также проанализировали RMLF на одинаковых параллельных машинах. | Позже Беккетти и Леонарди [1] показали, что на самом деле RMLF оптимально конкурентоспособен с точностью до постоянного коэффициента. Они также проанализировали работу RMLF на одинаковых параллельных машинах. | ||
Теорема 3 []. Алгоритм RMLF является O (log n)-конкурентным для одной машины. Для нескольких одинаковых машин RMLF достигает коэффициента конкурентоспособности O(log | '''Теорема 3 [1]. Алгоритм RMLF является <math>O(log \; n)</math>-конкурентным для одной машины. Для нескольких одинаковых машин RMLF достигает коэффициента конкурентоспособности <math>O(log \; n \; log \Big( \frac{m}{n} \Big) )</math>, где m – количество машин.''' | ||
== Применение == | == Применение == |
правок