Pracuję nad aplikacją, która sekwencyjnie zapisuje duży plik (i nie czyta wcale) i chciałbym użyć posix_fadvise()
do optymalizacji zachowania systemu plików.Co posix_fadvise() argumentuje za sekwencyjnym zapisywaniem plików?
Opis funkcji na stronie podręcznika sugeruje, że najbardziej odpowiednią strategią będzie POSIX_FADV_SEQUENTIAL
. Jednak opis implementacji Linuksa wątpi, że:
Pod Linuksem,
POSIX_FADV_NORMAL
ustawia okno ponownego sprawdzania na domyślny rozmiar dla urządzenia zabezpieczającego;POSIX_FADV_SEQUENTIAL
podwaja ten rozmiar, aPOSIX_FADV_RANDOM
wyłącza całkowicie plik readahead.
Ponieważ piszę tylko dane (prawdopodobnie również nadpisuję pliki), nie oczekuję żadnych zmian. Czy powinienem wtedy trzymać się mojego POSIX_FADV_SEQUENTIAL
, czy raczej użyć POSIX_FADV_RANDOM
, aby go wyłączyć?
Co z innymi opcjami, takimi jak POSIX_FADV_NOREUSE
? A może w ogóle nie używać do pisania w ogóle posix_fadvise()
?
Należy pamiętać, że POSIX_FADV_NOREUSE nie jest zaimplementowany w jądrze Linux. – smoors