однопоточный программный продукт весьма активной сетевой работой
работает через обертку вокруг epoll
программа ресурсоемкая и в то же время в больших объемах пишет лог файлы в формате CSV (несколько штук)
то есть размер буффера для единичной операции записи — строка 200-250 байт
таргет платформа — linux Fedora Core 4
Нужно:
проанализировать подходы к эффективной запись в лог-файлы
в том числе с использованием асинхронной записи.
Лично мне кажется, что замена текущей (весьма медленной и корявой) имплементации "fopen-fwrite-fclose на каждую строку"
на имплементацию с постоянно открытым файлом, буффером в ~64Кб и периодическим сбросом на диск вполне будет достаточно
(по крайней мере судя по замерам — в 30-40 раз быстрее)
Но для очистки совести и успокоения начальства, надо протеститровать и асинхронную работу.
Собственно возникают вопросы:
1. каким образом это можно (нужно) организовать?
2. нашел упоминание о поддержке aio на уровне ядра в ядрах 2.6.х, но к сожалению не нашел вразумительной информации об этом. Работает ли это вообще? какие есть подводные камни?
3. можно ли это сделать как-то иначе?
буду благодарен если в меня бросят ссылкой с более или менее подробной информацией по эьтому вопросу.