Чтобы свести к минимуму доступ к диску с помощью fsync
Есть ситуация, когда всякий раз, когда происходит запись, fsync используется с этой записью. Тогда как минимизировать доступ к диску? Как ядро это делает?
fsync () передает ("сбрасывает") все измененные данные в ядре (то есть, измененные страницы буферного кэша) файла, указанного дескриптором файла fd, на дисковое устройство (или другое постоянное запоминающее устройство).
Я думаю, что Kernel может через некоторое время периодически передавать данные всех модифицированных буферов на жесткий диск. Так что это может минимизировать доступ к диску.
Пожалуйста, дайте некоторые предложения / подсказки.
1 ответ
В общем, старайтесь не переосмысливать это. Не вызывайте fsync, просто позвольте ядру решить, когда выполнять физическую запись.
Вот параметры ядра для ext4, которые вы можете использовать для настройки поведения ядра в соответствии с вашими потребностями, но это будет упражнение по настройке сервера, а не то, что вы могли бы реализовать из своего приложения: http://kernel.org/doc/Documentation/filesystems/ext4.txt
Это может быть интересно: " max_batch_time=usec Максимальное количество времени, в течение которого ext4 должно ожидать пакетного выполнения дополнительных операций файловой системы с синхронной операцией записи".