В состав FreeBSD принята высокопроизводительная реализация sendfile от Netflix

09.01.2016 10:00

Компания Netflix, в сети доставки контента которой активно используются серверы с FreeBSD, совместно с компанией NGINX подготовила новую реализацию системного вызова sendfile, предназначенного для организации прямой передачи данных между файловым дескриптором и сокетом. Новая реализация отличается значительным увеличением производительности - файл теперь можно направлять в сокет в асинхронном режиме без ожидания завершения чтения файла.

Разработка работающего в неблокирующем режиме sendfile велась с 2013 года и вчера была принята в основной состав FreeBSD-CURRENT. Код уже протестирован в рабочем кластере Netflix и годен для промышленного применения. Реализация полностью обратно совместима с ранее доступными приложениями и может использоваться в качестве прозрачной замены, не требуя пересборки. Кроме увеличения производительности в новой реализации также добавлены новые флаги, предоставляющие дополнительный контроль над отправкой данных. Например, флаг SF_NOCACHE запрещает кэширование передаваемых данных, а при помощи макроса SF_READAHEAD() можно установить размер буфера упреждающего чтения.