Алгоритмы для жизни: Простые способы принимать верные решения (Гриффитс, Кристиан) - страница 194

Это как раз тот феномен, который обнаружил Джим Геттис, пытаясь разобраться с домашним модемом. Поскольку он закачивал файл, его компьютер посылал модему так много пакетов, что тот едва ли мог с ними справиться. В то же время модем «делал вид», что может справиться и с еще бóльшим количеством сверх своих реальных возможностей, не отклоняя ни один из них и ставя их в огромную очередь. Таким образом, когда Геттис пытался одновременно скачать что-то (зайти на интернет-сайт или проверить почту), его ACK-пакеты застревали в очереди после процессов загрузки, ожидая, пока загружаемые файлы наконец покинут дом.

Это было похоже на попытку вести диалог, который прерывался бы на 10 или 20 секунд после каждого сказанного «ух» и «м-м-м». Говорящему пришлось бы замедлять темп рассказа, полагая, что вы его не понимаете и ничего не можете с этим поделать.

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

При использовании метафоры с почтовой службой для объяснения принципа действия коммутации пакетов странно представить, что почтальон просто избавляется от каждой посылки, которая не вмещается в его грузовик утром. Хотя на самом деле это то самое «отбрасывание пакетов», которое заставляет компьютер заметить, что один из пакетов не был принят, что приведет к урезанию алгоритмом АУМУ трафика передачи информации. «Отбрасывание пакетов» – изначальный механизм обратной связи в интернете. Слишком большой буфер (как, например, ресторан, который принимает каждый заказ вне зависимости от возможностей кухни, или модем, принимающий каждый поступающий пакет вне зависимости от того, сколько потребуется ему времени на последующую отправку) предупреждает любые промедления, которые на самом деле должны происходить.

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