ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: zero copy sockets



Здравствуйте Igor,

9 декабря 2005 г., 22:48:05, Вы писали:

IS> Во FreeBSD использовать zero copy sockets для произвольных данных,
IS> выравненных по 4К, сложно: нет простого метода узнать, когда можно
IS> менять буфер (читать в него новые данные или освобождать). Если буфер
IS> всё ещё используется ядром, то при попытке изменить данные будет
IS> page fault и ядро выделит новую страницу и скопирует туда данные
IS> этой страницы. Шило на мыло, если не хуже.

Согласен, если будет происходить COW то с zero copy будет еще хуже.
А метод из мана на практике не работает?

>From an application standpoint, the best way to guarantee that the data
has been sent out over the wire and freed by the kernel (for TCP-based
sockets) is to set a socket buffer size (see the SO_SNDBUF socket option
in the setsockopt(2) man page) appropriate for the application and net-
work environment and then make sure you have sent out twice as much data
as the socket buffer size before reusing a buffer.  For TCP, the send and
receive socket buffer sizes generally directly correspond to the TCP win-
dow size.

Это разумеется приблизительная оценка...

Хотя в целом ситуация ясна - идея красивая, но для практического
использования пока поддержка в ядре недостаточно проработана :(

-- 
 С Уважением,
 Антон Валерьевич Южанинов.






 




Copyright © Lexa Software, 1996-2009.