Несколько непонятностей по nginx

Igor Sysoev is at rambler-co.ru
Fri Apr 13 13:35:43 MSD 2007


On Fri, Apr 13, 2007 at 12:10:17PM +0300, Александр Ворона wrote:

> Igor Sysoev пишет:
> 
> >С неблокирующимся sendfile ситуация непонятна. Я впервые увидел, как
> >Линукс за один неблокирующийся вызов передал 900M.
> 
> вызов должен был быть неблокирующимся - но он таким не был. nginx в это 
> время естественно ничего кроме этого sendfile() не мог делать. Может 
> стОит попробовать отдавать sendfile()'ом не до конца файла, а ровно 
> столько, сколько влезет в буфер сокета, который перед каждым sendfile() 
> и определять?
> 
> кстати попутно мелкая бага - при отдаче nginx'ом 0.5.17 файлов >2G 
> (linux 2.6.20 и i386 sendfile64() и x86_64 sendfile() ) если за один 
> sendfile[64](...,count) с  (2^31-1) > count > (2^31-page_size) уходит 
> количество байт 2^31-page_size, то закачка замирает
> strace

На мой взгляд, это проблемы разработчиков ядра. Раньше sendfile
прекрасно работал в неблокирующемся режиме. Если они это поломали,
то им и чинить. Это вообще стандартное ядро ? Удивительно, что
про это ещё не знают пользователи lighttpd и прочая.

> >В случае linux-aio-sendfile, возможно, в ядре происходит минимум
> >копирования (я не знаю), но во FreeBSD всегда есть две операции
> >копирования - 2 и 3.
> судя по raw perfomance - нет zero copy. Также заметно, что при 
> linux-aio-sendfile нет iowait. Возможно это связано с тем, что не 
> происходит упирания в скорость диска. Утилизация диска от sendfile - 
> 100%, от linux-aio-sendfile - 80%

iowait, видимо, нет из-за того, что процесс не ждёт явно io - всё
перекладывается на aio.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list