feature request: sendfile management

MZ zuborg at advancedhosters.com
Fri Oct 19 18:56:25 MSD 2007


В ср, 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, а иначе пусть ядро отдает ?


More information about the nginx-ru mailing list