Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 170
Текст из файла (страница 170)
Например, если гигабитная линия связи присоединена к компьютеру с низкой производительностью, то несчастный центральный процессор не сможет достаточно быстро обрабатывать приходяшие пакеты, что приведет к потере некоторых пакетов. Эти пакеты рано или поздно будут переданы повторно, что приведет к увеличению задержек, непроизводительному использованию пропускной способности и снижению общей производительности.
Перегрузка может также возникать синхронно. Например, сели ТРП11-модуль содержит неверный параметр 1например, номер порта назначения), во многих случаях получатель заботливо пошлет обратно сообщение об ошибке. Теперь рассмотрим, что случится, если неверный ТРШ3-модуль будет разослан широковещательным способом 10 000 машин. Каждая машина может послать обратно сообщение об ошибке. Образовавшийся в результате широковещательный шторм может надолго остановить нормальную работу сети. Протокол 1)РР страдал от подобной проблемы, пока не было решено, что хосты должны воздерживаться от отправки сообщений об ошибке в ответ на широковешательные ТРП11- модули 131)Р.
Второй пример синхронной перегрузки может быть вызван временным отключением электроэнергии. Когда питание снова включается, все машины одновременно обращаются к своей постоянной памяти и начинают перезагружаться. Типичная последовательность загрузки может требовать обращения к какому- нибудь 1)НСР-серверу (сервер динамической конфигурации хоста), чтобы узнать свой истинный адрес, а затем к файловому серверу, чтобы получить копию операционной системы.
Если сотни машин обратятся к серверу одновременно, он не сможет обслужить сразу всех. Даже при отсутствии синхронной перегрузки и при достаточном количестве ресурсов производительность может снижаться из-за неверных системных настроек. Например, у машины может быть мощный процессор и много памяти, но недостаточно памяти выделено под буфер. В этом случае буфер будет переполняться, и часть ТР1И1-модулей потеряется. Аналогично, если процессу обработки поступающих пакетов дан недостаточно высокий приоритет, некоторые ТРЭУ- модули могут быть потеряны.
Также на производительность могут повлиять неверно установленные значения таймеров ожидания. Когда посылается ТР1)П-модуль, обычно включается таймер — на случай, если этот модуль потеряется. Выбор слишком короткого интервала ожидания подтверждения приведет к излишним повторным передачам ТР1Н3-модулей.
Если же интервал ожидания сделать слишком большим, это приведет к увеличению задержки в случае потери ТР1И)-модуля. К настраиваемым параметрам также относятся интервал ожидания попутного модуля данных для отправки подтверждения и количество попыток повторной передачи в случае отсутствия подтверждений. С появлением гигабитных сетей появились и новые проблемы. Рассмотрим, например, процесс отправки 64 Кбайт данных из Сан-Диего в Бостон при раз- 636 Глава 6. Транспортный уровень мере буфера получателя 64 Кбайт.
Пусть скорость передачи данных в линии составляет 1 Гбит/с, а время прохождения сигнала в одну сторону, ограниченное скоростью света в стекле, равно 20 мс. Вначале (г= О), как показано на рис. 6.34, а, канал пуст. Только 500 мкс спустя все ТРР(э'-модули попадут в канал (рис. 6.34, б), Первый ТР)э(э'-модуль оказывается где-то в окрестностях Броли, все еще в Южной Калифорнии.
Тем не менее, передатчик уже должен остановиться, пока он не получит в ответ новую информацию об окне. е г Рис. 6.34. ПеРелача половины мегабита из СангДиего в Бостон: в момент вРемени Г = 0 (а): через 500 мкс (б), через 20 мс (в); через 40 мс (г) Через 20 мс первый ТРПП-модулав как показано на рис. 6.34, в, достигнет Бостона, и в ответ будет передано подтверждение. Наконец, через 40 мс после начала операции первое подтверждение возвращается к отправителю, после чего передается следующая порция данных.
Поскольку линия передачи использовалась всего 0,5 мс из 40 мс, эффективность ее использования составит около 1,25 у4 Такая ситуация является типичной для работы старых протоколов по гигабит- ным линиям. При анализе производительности сетей полезно обращать внимание на произведение пропускной способности и времени задержки. Пропускная способность канала (в битах в секунду) умножается на время прохождения сигнала в оба конца (в секундах). В результате получается емкость канала в битах. В примере на рис. 6.34 произведение пропускной способности и времени задержки равно 40 млн бит.
Другими словами, отправитель к моменту получения Вопросы производительности 637 ответа успеет переслать 40 млн бит, если будет передавать с максимальной скоростью. Столько бит потребуется, чтобы заполнить канал в обоих направлениях. Таким образом, порция данных в полмиллиона бит составляет всего 1,25 Ж емкости канала, что и выражается в 1,25-процентной эффективности использования канала. Отсюда следует, что для эффективного использования канала размер окна получателя должен быть, по меньшей мере, равен произведению пропускной способности и времени задержки, а лучше — превосходить его, так как получатель может сразу и не ответить.
Для трансконтинентальной гигабитной линии каждому соединению потребуется, по меньшей мере, по 5 Мбайт. Если даже при пересылке одного мегабита эффективность использования канала оказывается столь ужасной, представьте, что происходит в случае передачи нескольких сот байт при вызове удаленной процедуры. Если не найти этой линии еще какого-либо применения, пока клиент ожидает ответа, гигабитная линия будет ничем не лучше мегабитной, только значительно более дорогой. Е|це одна проблема производительности связана с приложениями типа видео и аудио, для которых временные параметры являются критическими.
Обеспечить малое среднее время передачи здесь недостаточно. Требуется также обеспечить небольшое значение его среднеквадратичного отклонения. Для достижения обеих целей требуется немало инженерных усилий. Измерение производительности сети Когда качество работы сети оказывается не слишком хорошим, ее пользователи часто жалуются сетевым операторам, требуя усовершенствований. Чтобы улучшить производительность сети, операторы должны сначала точно определить, в чем суть проблемы. Чтобы выяснить текущее состояние сети, операторы должны произвести измерения. В данном разделе мы рассмотрим вопрос измерения производительности сети. Приводимое ниже обсуждение основано на работе Могола (Мойц1, 1993). Основной цикл работ по совершенствованию производительности сети включает следующие этапы.
1. Измерение наиболее важных сетевых параметров и производительности сети. 2. Попытка понять, что происходит. 3. Изменение одного из параметров. Эти шаги повторяются до тех пор, пока производительность не увеличится достаточно или пока не станет ясно, что этими методами производительность уже больше не увеличить. Измерения могут бь|ть произведены разными способами и во многих местах (как физически, так и в стеке протоколов). Наиболее распространенный тип измерений представляет собой включение таймера при начале какой-либо активности и измерение продолжительности этой активности.
Например, одним из ключевых измерений является измерение времени, необходимого для получения отправителем подтверждения в ответ на отправку ТР1П~-модуля. Другие изме- ВЗВ Глава б. транспортный уровень рения производятся при помощи счетчиков, в которых учитывается частота некоторых событий (например, количество потерянных ТР()()-модулей). Наконец, часто измеряются такие количественные показатели как число байтов, обработанных за определенный временной интервал. Процедура измерения производительности сети и других параметров содержит множество подводных камней. Далее мы перечислим некоторые нз них. Следует тщательно избегать подобных ошибок при любых попытках измерить производительность сети.
Убедитесь, что выборка достаточно велика Не следует ограничиваться единственным измерением какого-нибудь параметра — например, времени, необходимого для передачи одного ТР?Н)-модуля. Повторите измерение, скажем, миллион раз и вычислите среднее значение. Чем больше будет выборка, тем выше окажется точность оценки среднего значения и его среднеквадратичного отклонения.
Погрешность может быть вычислена при помощи стандартных формул статистики, Убедитесь, что выборка является репрезентативной Следует повторить вс1о последовательность миллиона измерений параметров в различное время суток и в разные дни недели, чтобы заметить влияние различной загруженности системы на измеряемые параметры, Так, измерение перегрузки вряд ли принесет пользу, если эти измерения производить, когда перегрузки нет. Иногда результаты могут показаться на первый взгляд странными, как, например, наличие серьезных заторов в сети в 10, 11, 13 и 14 часов, но их отсутствие в полдень (когда все пользователи обедают). Используя часы с грубой шкалой, будьте внимательны Компьютерные часы работают, добавляя единицу к некоему счетчику через равные интервалы времени, Например, миллисекундный таймер увеличивает на единицу значение счетчика раз в 1 мс.
Применение такого таймера для измерения длительности события, занимающего менее 1 мс, возможно, но требует осторожности. Например, чтобы измерить время, необходимое для передачи одного ТРР()- модуля, следует считывать показания системных часов (скажем, в миллисекундах) при входе в программу транспортного уровня и выходе из нее. Если время, требуемое для передачи одного ТР1Н1-модуля, равно 300 мкс, то измеряемая величина будет равна либо О, либо 1 мс. Однако если повторить измерения миллион раз, сложить все значения и разделить на миллион, то полученное среднее значение будет отличаться от истинного значения менее чем на 1 мкс.
Убедитесь, что во время ваших тестов не происходит ничего неожиданного Если проводить измерения в университетской системе в день сдачи главного лабораторного проекта, то полученные результаты могут сильно отличаться от результатов измерений, произведенных на следующий день. Аналогично, если в то Вопросы производительности 639 время, когда вы производите тестирование сети, какой-нибудь исследователь решит устроить в сети видеоконференцию, вы также можете получить искаженные результаты. Лучше всего запускать тесты на пустой системе, создавая всю нагруз«у самому.
Хотя и в этом случае можно ошибиться. Вы можете предполагать, что никто не пользуется сетью в 3 часа ночи, но может оказаться, что именно в зто время программа автоматического резервного копирования начинает свою работу по архивации всех жестких дисков на магнитную ленту. Кроме того, именно в это время пользователи, находящиеся в другой временной зоне на другой стороне Земного шара, могут создавать довольно сильный график, просматривая ваши замечательные веб-страницы. Кэширование может сильно исказить ваши измерения Чтобы измерить время операции по передаче файла, самый очевидный путь состоит в том, чтобы открыть большой файл, прочитать его целиком и закрыть, измерив при этом время, затраченное па всю последовательность операций. Затем можно повторить измерение много раз, чтобы получить точное значение средней величины.
Беда заключается в том, что система может, считав файл по сети всего один раз, запомнить его в локальном каше. Таким образом, правильным будет только первое измерение, а при остальных операциях обращения к сети не будет. Результат такого многократного измерения будет бесполезен (если только вы не измеряете производительность каша). Часто можно обмануть алгоритм кэширования, просто заставляя переполняться квш. Например, если размер каша составляет 10 Мбайт, в тестовый цикл можно включить поочередное открытие, чтение и закрытие двух 10-мегабайтных файлов, пытаясь заставить систему каждый раз читать файлы по сети. Тем не менее, следует быть уверенным в том, что вы понимаете, как работает алгоритм кэширования.
Буферизация пакетов может производить аналогичный эффект. Одна популярная ТСР/1Р-программа измерения производительности славилась тем, что сообщала, что протокол 11ОР может достичь производительности, значительно превышающей максимально допустимую для данной физической линии. Как это пРоисходило? Обращение к УРР обычно возвращает управление сразу, как только сообщение принимается ядром системы и добавляется в очередь на передачу. При достаточном размере буфера время выполнения 1000 обращений к 11РР не означает, что за это время все данные были переданы в линию. Большая часть их все еще находится в буфере ядра.