Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: feature request: sendfile management
В ср, 10/10/2007 в 16:20 +0400, Igor Sysoev пишет:
> On Tue, Oct 09, 2007 at 07:41:29PM +0300, MZ wrote:
>
> > Замечено что использование sendfile ухудшает производительность при
> > отдаче больших файлов, которые не кешируются эффективно операционкой. То
> > есть если общий обьем тех файлов что часто запрашиваются не помещается в
> > RAM и оси приходится читать их с диска постоянно для каждого запроса.
> > Выключение sendfile увеличивает отдачу с дисков (по данным gstat) раза в
> > полтора.
> >
> > Я думаю есть смысл не использовать sendfile для больших файлов, то есть
> > смотреть на размер файла перед отдачей, и если его размер превышает тот
> > что установлен какой-то директивой (типа sendfile_max_filesize 10m) -
> > такие файлы отдавать обычным методом.
>
> У меня есть ощущение, что при использовании sendfile_max_filesize будет
> так же или ещё хуже. Насколько я понимаю, если карточка умеет TX csum и
> DMA (например, em, bge, fxp), то сейчас во FreeBSD при использовании
> sendfile() страницы файла не помечаются как недавно используемые и,
> соответственно, когда pagedaemon проверяет использованность старниц,
> такие страницы имеют большие шансы вылететь из памяти.
>
> В предыдущем письме я по ошибке отправил патч для 6.x, который
> помечает страницы как использованные. Если кто-то может проверить
> в ситуации, когда памяти меньше, чем размер всех файлов, то было
> бы интерсно. Я погонял этт патч на машине, где весь контент влазит
> в память, разницы не увидел.
>
man sendfile:
The flags argument has one possible value: SF_NODISKIO. This flag
causes any sendfile() call which would block on disk I/O to instead
return EBUSY. Busy servers may benefit by transferring requests that
would block to a separate I/O worker thread.
может стоит использовать эту фишку ?
если EBUSY, то отдавать самому без sendfile, а иначе пусть ядро отдает ?
|