Эксперимент по повышению эффективности работы утилиты cat
Ариадна Конилл (Ariadne Conill), создатель музыкального проигрывателя Audacious, инициатор разработки протокола IRCv3 и лидер команды по обеспечению безопасности Alpine Linux, провела исследование насколько можно оптимизировать утилиту cat, осуществляющую вывод в стандартный выходной поток одного иди нескольких файлов. Для улучшения производительности cat в Linux предложено два варианта оптимизаций, основанных на использовании системных вызовов sendfile и splice для прямого копирования данных между файловыми дескрипторами на уровне ядра без переключения контекста в пространство пользователя.
Базовая реализация, использующая традиционные вызовы read и write, приводящие к переключению контекста, при копировании 4ГБ файла из tmpfs показала производительность 3.6 GB/s. Вариант на базе sendfile позволил повысить производительность до 6.4 GB/s, а вариант на базе splice — до 11.6 GB/s, т.е. оказался быстрее исходного варианта более чем в 3 раза.
Источник: http://www.opennet.ru/opennews/art.shtml? num=57517
© OpenNet