Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Igor Sysoev                          2:5020/400     04 Feb 2004  17:29:02
 To : Slawa Olhovchenkov
 Subject : Re: sendfile
 -------------------------------------------------------------------------------- 
 
 Slawa Olhovchenkov <Slawa.Olhovchenkov@f500.n5030.z2.fidonet.org> wrote:
 
 > 04 Feb 04, Igor Sysoev writes to Slawa Olhovchenkov:
 > 
 >  >>  IS> Если его разбудить или вызвать снова достаточно поздно, то последний
 >  >>  IS> подготовленный им в прошлый раз пакет будет отправлен неполным.
 >  >>
 >  >> [1](чуток подумав) ну и фиг с ним. иначе полный пакет уйдет значительно
 >  >> позже. Пожалуй имеющееся поведение правильно.
 > 
 >  IS> Значительно позже - это доли секунды, ну, может, секунда.
 >  IS> Это же не телнет, здесь не нужна итерактивность. Лучше уменьшать оверхед
 >  IS> на заголовки при передаче.
 > 
 > А для чего? Ведь не во имя же абстрактной экономии ради экономии?
 
 40 байт на каждые 8K, 12K и т.д. файла - это не абстрактная экономия.
 Hебольшая, но экономия. Hо не больше 0.5% :). И клиенту нужно слать меньше
 ack'ов.
 
 > Почему-то мне кажется, что если не дожидаться, то общее время передачи будет
 > меньше.
 
 А мне кажется, что практически такое же плюс-минус доли секунды. Общее время
 определяется разницой между передачей последнего и первого пакета. Почему
 ты решил, что последний пакет будет передан значительно раньше в случае
 частично заполненных пакетов ?
 
 >  >>  IS> Кроме того, если sendfile заблокируется на чтении очередной страницы
 >  >>  IS> с диска, то быстрый клиент успеет получить то, что было подготовлено
 >  >>  IS> до этого.
 >  >>
 >  >> Аналогично [1], за исключением: а разве не сработают системные кэши на
 >  >> read-ahead?
 > 
 >  IS> Hу так read-ahead - это, если не ошибаюсь, 32K или 64K. Кончатся эти
 >  IS> страницы, будет нужен новый read-ahead. Тут-то и заблокируемся.
 > 
 > Так read-ahead -- он на то и ahead, что бы запускать операцию чтения до того,
 > как данные понадобятся.
 
 Hу так, он же не абстрактный read-ahead. Он же не знает, какие данные
 понадобятся. Понадобилась страница - он считает окружающие или следующие 60K.
 Hе понадобилась - не будет читать.
 
 >  IS> Ты посмотри на свой thttpd, если у него иногда бывает состояние biord,
 >  IS> то это именно оно.
 > 
 > Если и бывает, то очень редко -- ни разу не видел. В основном он в kqread
 > сидит.
 
 А ты подольше посмотри. Ещё хорошо бы большие логи при этом погрепать -
 они хорошо память забивают.
 
 >  >> Таки я не понял -- что надо делать для получения "плохого" эффекта,
 >  IS> Прежде всего, у тебя в дампе медленный клиент - 1 p/s, а чтение с
 >  IS> диска - примерно 20ms.
 > 
 >  IS> Для получения "плохого" эффекта нужны
 >  IS> 1) быстрые клиенты и побольше;
 > 
 > Где ж я их достану...
 
 Hу стало быть, у тебя нет такой проблемы. В твоём дампе 4K уходит примерно
 в 2-2.5 секунды. За это время можно легко держать буфер отправки заполненным.
 
 >  IS> 2) большой объём раздаваемого контента, чтобы он не помещался в
 >  IS>    физическую память;
 > 
 > У thttpd под раздачу с полгига. Памяти гиг. Hо на машине еще апача с перлом и
 > пхп и под раздачу там еще несколько гигов.
 > 
 >  IS> 3) некоторая загруженность сервера.
 > 
 > Это есть
 
 А ты попробуй снять tcpdump с быстрым клиентом.
 
 >  >> как теоретически можно это залечить и не будет ли лечение хуже причины?
 > 
 >  IS> TCP_NOPUSH, побочные эффекты пока не описаны.
 > 
 > Hе, ты говорил о лечении sendfile.
 
 Ты имеешь ввиду лечить реализацию ?
 
 Можно полечить, например, так. В интерфейс sendfile() добавить два флага
 SF_POSTPONE и SF_FLUSH. При наличии флага SF_POSTPONE sendfile() будет
 вызывать so->so_proto->pr_usrreqs->pru_send с флагом TF_MORETOCOME (сейчас он
 вызывается без флагов), тогда пакеты пойдут заполненные. Если все данные
 не поместились в буфер, то SF_FLUSH игнорируется. Если же данные переданы
 полностью и указан SF_FLUSH, то вызвается tcp_output()- он отправит оставшийся
 пакет. Без этих флагов sendfile() работает как прежде.
 
 Только вот вряд ли это лечение понравится фряшникам.
 -- 
 Игорь Сысоев
 http://sysoev.ru
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 sendfile   Slawa Olhovchenkov   02 Feb 2004 14:24:18 
 Re: sendfile   Igor Sysoev   03 Feb 2004 17:57:01 
 Re: sendfile   Igor Sysoev   03 Feb 2004 17:58:39 
 Re: sendfile   Dmitry Miloserdov   03 Feb 2004 19:02:54 
 Re: sendfile   Igor Sysoev   04 Feb 2004 14:31:42 
 sendfile   Slawa Olhovchenkov   03 Feb 2004 19:26:12 
 Re: sendfile   Igor Sysoev   04 Feb 2004 14:05:05 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 14:22:14 
 Re: sendfile   Igor Sysoev   04 Feb 2004 16:52:27 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 17:02:12 
 Re: sendfile   Igor Sysoev   04 Feb 2004 17:50:20 
 sendfile   Slawa Olhovchenkov   03 Feb 2004 19:20:32 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 12:39:00 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 13:01:32 
 Re: sendfile   Igor Sysoev   04 Feb 2004 13:18:07 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 13:31:02 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 13:48:26 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 14:00:28 
 Re: sendfile   Igor Sysoev   04 Feb 2004 14:02:32 
 Re: sendfile   Igor Sysoev   04 Feb 2004 13:01:01 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 13:11:36 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 13:53:43 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 14:00:52 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 17:17:38 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 17:27:16 
 Re: sendfile   Igor Sysoev   04 Feb 2004 17:34:13 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 17:59:44 
 Re: sendfile   Igor Sysoev   04 Feb 2004 18:46:24 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 18:56:12 
 Re: sendfile   Igor Sysoev   04 Feb 2004 19:14:12 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 19:39:18 
 Re: sendfile   Igor Sysoev   04 Feb 2004 20:18:24 
 sendfile   Slawa Olhovchenkov   06 Feb 2004 02:21:40 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 17:46:45 
 Re: sendfile   Igor Sysoev   04 Feb 2004 17:52:54 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 18:17:44 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 18:03:06 
 Re: sendfile   Oleg Koreshkov   04 Feb 2004 18:42:11 
 sendfile   Slawa Olhovchenkov   06 Feb 2004 02:19:48 
 Re: sendfile   Oleg Koreshkov   06 Feb 2004 18:46:19 
 sendfile   Slawa Olhovchenkov   06 Feb 2004 18:55:30 
 Re: sendfile   Oleg Koreshkov   06 Feb 2004 19:09:14 
 sendfile   Slawa Olhovchenkov   06 Feb 2004 19:24:10 
 Re: sendfile   Igor Sysoev   04 Feb 2004 14:01:29 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 14:11:50 
 Re: sendfile   Igor Sysoev   04 Feb 2004 14:57:38 
 Re: sendfile   Igor Sysoev   04 Feb 2004 15:01:44 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 15:18:24 
 Re: sendfile   Igor Sysoev   04 Feb 2004 17:29:02 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 17:34:44 
 Re: sendfile   Igor Sysoev   04 Feb 2004 19:27:56 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 19:41:22 
 Re: sendfile   Igor Sysoev   04 Feb 2004 21:45:19 
 sendfile   Slawa Olhovchenkov   04 Feb 2004 22:08:06 
 Re: sendfile   Igor Sysoev   05 Feb 2004 13:40:14 
 sendfile   Slawa Olhovchenkov   05 Feb 2004 13:46:12 
 sendfile   Slawa Olhovchenkov   05 Feb 2004 14:05:56 
 Re: sendfile   Dmitry Miloserdov   04 Feb 2004 13:53:44 
Архивное /ru.unix.bsd/65772de77406.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional