Многие, уверен, часто слышали про такой системный вызов как sendfile() (например, в Nginx), но не многие задумывались, для чего он нужен и почему его часто позиционируют как "оптимизационный" (то есть, позволяющий что-либо убыстрить, ускорить).
Задача sendfaile заключается в том, чтобы скопировать из дескриптора 1 энное число байт в дескриптор 2 (также для копирования можно задать смещение). Почему такой вызов, который легко "эмулируется" последовательным read с первого дескриптора и write во второй считается оптимизационным? Да очень просто - при вызове sendfile в отличие от read/write отсутствует пересылка данных из ядра в пространство пользователя и обратно (все копирование происходит сугубо в пространстве ядра), этим и достигается экономия ресурсов.
Источник большей части вдохновения - комменты к статей на Хабре: http://habrahabr.ru/blogs/nginx/68480/
Friday 17 September 2010
Что есть sendfile() и с чем его едят?
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment
Note: only a member of this blog may post a comment.