|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Sergey A. Yakovets 2:5004/75.5088 21 Feb 2007 13:21:40 To : Eugene Grosbein Subject : Re^2: dummynet -------------------------------------------------------------------------------- Мои бортовые системы запеленговали, что в 20 Фев 07 19:54, Eugene Grosbein писал Sergey A Yakovets: SAY>> Вопрос по сабжу: есть какие-то рекомендации\алгоритмы\формулы по SAY>> расчету размера очереди для pipe с определенной пропускной SAY>> способностью? Проблема: работает шейпер на dummynet, наблюдается SAY>> некотороая потеря траффика. Hавскидку проблема в дефолтных SAY>> значениях размера очереди (50 пакетов) для pipe'ов от 32 до 512 SAY>> Кбит\с. Скорее всего, поток не влезает в очередь и часть пакетов SAY>> отбрасывается. Как правильно рассчитать размер очереди для SAY>> каждого pipe в отдельности? EG> EG> Pipe и должен отбрасывать пакеты, иначе какой же это шейпер? EG> Ты не можешь увеличивать длину очереди бесконечно, потому что задержки EG> вырастут настолько, что соединение начнет рвать сам юзер :-) EG> EG> Hа таких низких скоростях размер очереди надо бы, наоборот, уменьшать, EG> чтобы не допустить гигантских задержек типа нескольких тысяч EG> милисекунд. Пол-дня игрался с параметром queue. В итоге подобрал на первый взгляд кое-что подходящее. Алгоритм\мысли были следующие: Дано: асинхронный спутниковый Инет. Входящий канал - 1024 Кбит\с. Опытным путем установлено, что проблемы с потерей траффика (до 10% от общего объема) возникают при многопотоковых http\ftp закачках, т.к. спутниковый провайдер в этом случае может отдать поток на все 1024 Кбит\с. При серфинге все нормально. Исходя из этого, мною были сделаны некоторые расчеты: При максимальной пропускной способности входящего спутникового канала в 1024 Кбит\с и размере пакета в 1500 байт, пропускная способность канала равна ~ 87 пакетов\сек. В это же время, для канала в 128 Кбит\с пропускная способность равна ~ 11 пакетов\сек. Гипотетическая разница, при условии что на юзера будет идти поток в 1024 Кбит\с, а отдаваться только 128 Кбит\с, может составить 76 пакетов\сек. Итого, опытным путем установлено: - (было) при дефолтной очереди в 50 пакетов на pipe 128 Кбит\с потери 10% - при размере очереди = разница*2 = 150 пакетов потери 2% - (стало) при размере очереди = разница*3 = 230 пакетов потери 0% Серфинг не страдает, задержек нет. Закачка идет на скорости шейпера, потерь нет. Вроде бы, результат достигнут. Сегодня\завтра буду наблюдать. EG> А если хочешь и рыбку съесть, и потерь иметь минимум, то читай-ка ты EG> про RED/GRED на unixfaq.ru и делай не просто pipe, а queue/pipe с EG> gred. Рекомендую делать w_q=0.002, max_p=0.1, min=q/10, max=3*min, где EG> q - длина очереди, q=20 для скоростей меньше 100Kbit/s, q=30 для EG> скоростей от 100 до 300Kbit/s и q=50 для скоростей 512Kbit/s и EG> выше. Hу или что-то в этом роде. Пробовал этот вариант. Hа pipe 128 Кбит\с было выставлено gred 0.002/3/6/0.1 В итоге - огромные потери, т.к. канал практически все время работал на скорости пакетов намного больше чем max_th*2. Изменение параметров до gred 0.002/50/150/0.1 не влияло на результат, т.к. дефолтный размер очереди в 50 пакетов часто переполнялся и gred не имел никакого действия. Хотя, может быть я чего-то не так понял и сделал... EG> Eugene C уважением, Sergey A. Yakovets. E-mail: for-transit@yandex.ru ICQ UIN: 165641526 ... FaqServer 2:5088/50.50 Subj: %HELP %LIST --- * Origin: "Емельянов" - это не фамилия, а диагноз... (2:5004/75.5088) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/472345dbf60b.html, оценка из 5, голосов 10
|