Чтобы свести к минимуму доступ к диску с помощью fsync

Есть ситуация, когда всякий раз, когда происходит запись, fsync используется с этой записью. Тогда как минимизировать доступ к диску? Как ядро ​​это делает?

fsync () передает ("сбрасывает") все измененные данные в ядре (то есть, измененные страницы буферного кэша) файла, указанного дескриптором файла fd, на дисковое устройство (или другое постоянное запоминающее устройство).

Я думаю, что Kernel может через некоторое время периодически передавать данные всех модифицированных буферов на жесткий диск. Так что это может минимизировать доступ к диску.

Пожалуйста, дайте некоторые предложения / подсказки.

1 ответ

В общем, старайтесь не переосмысливать это. Не вызывайте fsync, просто позвольте ядру решить, когда выполнять физическую запись.

Вот параметры ядра для ext4, которые вы можете использовать для настройки поведения ядра в соответствии с вашими потребностями, но это будет упражнение по настройке сервера, а не то, что вы могли бы реализовать из своего приложения: http://kernel.org/doc/Documentation/filesystems/ext4.txt

Это может быть интересно: " max_batch_time=usec Максимальное количество времени, в течение которого ext4 должно ожидать пакетного выполнения дополнительных операций файловой системы с синхронной операцией записи".

Другие вопросы по тегам