Два типичных примера: передача сообщений по TCP протоколу и раздача задач в BOINC.
Представим, что нам необходимо выполнять какие-то однотипные задачи. Например передавать пакеты из узла A в узел B с подтверждением доставки (TCP) или отдавать задачи на выполнение в распределенных вычислениях (BOINC).
Обе эти системы используют обратную связь для задания нагрузки на исполнителя. Например, если при передаче пакетов по TCP они начинают теряться, то передатчик уменьшает скорость запросов/передачи пакетов, тем самым уменьшая нагрузку на сеть и способствует производительности. Другой пример, если удаленная рабочая станция BOINC долго обрабатывает выданные ей порции на вычисления, то сервер начинает давать ей меньшее число заданий, тем самым больше заданий будет выполнено в срок.
В общем случае в таких системах есть нечто, что ставит задачи и нечто, что их выполняет. То, что ставит задачи, имеет информацию об обратной связи - время выполнения (когда пришел ACK по TCP или когда пришло решение от рабочей станции в BOINC), и, исходя из неё, может прогнозировать какова будет производительность исполнителя в будущем.
Для таких систем типичны следующие особенности: 1. Быстрый старт. Когда начинается выполнение (передача файла по TCP, появилась новая рабочая станция BOINC), то исполнителю выдается оптимистичная нагрузка. Т.е., по TCP идет приличный блок пакетов, а на рабочую станцию прилетает большое кол-во заданий, как будто она работает идеально. 2. Если ответы приходят быстро, то нагрузка увеличивается. Если ответы приходят медленно, то нагрузка уменьшается. 3. Если ответов не приходит вообще, то система перестает выдавать новые задания и снижает выдачу до какого-то минимума. В TCP попытки связи уменьшаются в геометрической прогрессии до какого-то предела (фактически пинг в несколько десятков секунд), а в BOINC также кол-во заданий на выдачу уменьшается до 1-2.
Интересуют алгоритмы работы таких систем и принципы организации обратной связи. Может кто сталкивался, или есть умная литература по этому поводу. В крайнем случае будут полезны просто примеры подобных систем на словах или по названию.
|