10.13.10 Снижение перегрузок за счет уменьшения пересылаемых по сети данных

10.13.10 Снижение перегрузок за счет уменьшения пересылаемых по сети данных

Сокращение объема пересылаемых данных несколько сложнее, чем рассмотренные выше механизмы. Оно начинает работать, как и уже упомянутый медленный старт. Но, поскольку устанавливается граница для уровня трафика, который может в начальный момент привести к проблемам, будет реально замедляться скорость обмена вследствие увеличения размера нагрузочного окна по одному сегменту. Нужно установить значения границы для реального сокращения скорости отправки. Сначала вычисляется граница опасности (danger threshold):

Граница – 1/2 minimum (текущее нагрузочное окно, приемное окно партнера)

Если полученная величина будет более двух сегментов, ее используют как границу. Иначе размер границы устанавливается равным двум сегментам. Полный алгоритм восстановления требует:

? Установить размер нагрузочного окна в один сегмент.

? Для каждого полученного ACK увеличивать размер нагрузочного окна на один сегмент, пока не будет достигнута граница (что очень напоминает механизм медленного старта).

? После этого с каждым полученным ACK к нагрузочному окну добавлять меньшее значение, которое выбирается на основе скорости увеличения по одному сегменту для времени цикла (увеличение вычисляется как MSS/N, где N — размер нагрузочного окна в сегментах).

Сценарий для идеального варианта может упрощенно представить работу механизма восстановления. Предположим, что приемное окно партнера (и текущее нагрузочное окно) имело до выявления тайм-аута размер в 8 сегментов, а граница определена в 4 сегмента. Если принимающее приложение мгновенно читает данные из буфера, размер приемного окна останется равным 8 сегментам.

? Отправляется 1 сегмент (нагрузочное окно = 1 сегмент).

? Получен ACK — отправляется 2 сегмента.

? Получен ACK для 2 сегментов — посылается 4 сегмента, (достигается граница).

? Получен ACK для 4 сегментов. Посылается 5 сегментов.

? Получен ACK для 5 сегментов. Посылается 6 сегментов.

? Получен ACK для 6 сегментов. Посылается 7 сегментов.

? Получен ACK для 7 сегментов. Посылается 8 сегментов (нагрузочное окно по размеру снова стало равно приемному окну).

Поскольку во время повторной пересылки по тайм-ауту требуется подтверждение приема всех отправленных данных, процесс продолжается до достижения нагрузочным окном размера приемного окна. Происходящие события показаны на рис. 10.20. Размер окна увеличивается экспоненциально, удваиваясь во время периода медленного старта, а по достижении границы увеличение происходит по линейному закону.

Рис. 10.20. Ограничение скорости пересылки во время перегрузки

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Дросселирование семафора для уменьшения состязательности между потоками

Из книги автора

Дросселирование семафора для уменьшения состязательности между потоками Слишком большое количество потоков, соревнующихся между собой за право владения единственным ресурсом, например, мьютексом или объектом CS, могут стать причиной снижения производительности как в


Снижение плотности дефектов

Из книги автора

Снижение плотности дефектов FitNesse не является критически важным приложением. Если в FitNesse закрадется ошибка, никто не умрет и никто не потеряет миллионы долларов. Исходя из этого, я могу себе позволить опубликовать новую версию на основании только прохождения тестов. С


4.24 Максимальное число пересылаемых элементов

Из книги автора

4.24 Максимальное число пересылаемых элементов Каждая из рассмотренных нами технологий имеет различные максимальные размеры для своих кадров. После исключения заголовка кадра, заключительной части, а также заголовков LLC и SNAP (если они присутствуют), полученный результат


7.4.4 Проблемы перегрузок

Из книги автора

7.4.4 Проблемы перегрузок Протокол IP очень прост: хост или маршрутизатор обрабатывают датаграмму и посылают ее как можно быстрее. Однако доставка не всегда проходит гладко. Могут возникнуть различные проблемы.Когда один или несколько хостов отправляют трафик UDP на


Глава 4 Сети хранения данных на базе интерфейса Fibre Channel

Из книги автора

Глава 4 Сети хранения данных на базе интерфейса Fibre Channel Эту главу можно рассматривать как введение в сети хранения данных (storage area network – SAN) в общем и в сети хранения данных на базе интерфейса Fibre1 Channel в частности. Хотя сети хранения данных могут создаваться и на основе


2.2. Снижение издержек на коммуникацию с клиентами

Из книги автора

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


Снижение рисков

Из книги автора

Снижение рисков Редко удается полностью устранить риски. Мы водим машину, хоть это и опасно, но ведь нужно добираться до работы? Вообще возможность несчастного случая не означает, что он обязательно произойдет, да и, скорее всего, ничего страшного не случится. Почему?


82. Используйте подходящие идиомы для реального уменьшения емкости контейнера и удаления элементов

Из книги автора

82. Используйте подходящие идиомы для реального уменьшения емкости контейнера и удаления элементов РезюмеДля того чтобы действительно избавиться от излишней емкости контейнера, воспользуйтесь трюком с использованием обмена, а для реального удаления элементов из


2.3. Снижение числа #include с помощью предварительного объявления классов

Из книги автора

2.3. Снижение числа #include с помощью предварительного объявления классов ПроблемаИмеется заголовочный файл, который ссылается на классы из других заголовочных файлов, и требуется снизить зависимости компиляции (и, возможно, время).РешениеЧтобы избежать ненужных


Совет 17. Используйте «фокус с перестановкой» для уменьшения емкости

Из книги автора

Совет 17. Используйте «фокус с перестановкой» для уменьшения емкости Предположим, вы пишете программу для нового телешоу «Бешеные деньги». Информация о потенциальных участниках хранится в векторе:class Contestant {...};vector<Contestant> contestants;При объявлении набора участников заявки


Операции увеличения и уменьшения: ++ и --

Из книги автора

Операции увеличения и уменьшения: ++ и --      Операция увеличения осуществляет следующее простое действие: она увеличивает значение своего операнда на единицу. Существуют две возможности использования данной операции, первая:     когда символы ++ находятся слева от


Операция уменьшения: --

Из книги автора

Операция уменьшения: --      Каждой операции увеличения соответствует некоторая операция уменьшения, при этом вместо символов ++ мы используем -- -- count, /* префиксная форма операции уменьшения */count --, /* постфиксная форма операции уменьшения */     Ниже приводится пример,


Счет игры

Из книги автора

Счет игры Итак, это уже похоже на игру. Но пока ей не хватает увлекательности. Нужно добавить подсчет результатов. Отображение результатов игры — не самая сложная задача. Мы можем выводить текст на экран с помощью метода DrawString. Но при этом потребуется указать шрифт, кисть


8.5.4. Повышение эффективности зa счет добавления вычисленных фактов к базе данных

Из книги автора

8.5.4. Повышение эффективности зa счет добавления вычисленных фактов к базе данных Иногда в процессе вычислений приходится одну и ту же цель достигать снова и снова. Поскольку в Прологе отсутствует специальный механизм выявления этой ситуации, соответствующая цепочка


ГОЛУБЯТНЯ: Плановое снижение градуса

Из книги автора

ГОЛУБЯТНЯ: Плановое снижение градуса Автор: Сергей ГолубицкийЗаключительную статью индийского цикла 2009 года посвятим негативным впечатлениям, без которых, конечно же, путешествия в иноземные страны не обходятся в принципе. Индия - не исключение, и, полагаю, составленная