Експеримент підвищення ефективності роботи утиліти 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 рази.

Джерело: opennet.ru

Додати коментар або відгук