Sto lavorando a un'applicazione che scrive sequenzialmente un file di grandi dimensioni (e non legge affatto), e vorrei usare posix_fadvise()
per ottimizzare il comportamento del filesystem.Che posix_fadvise() si occupa della scrittura sequenziale di file?
La descrizione della funzione nella manpage suggerisce che la strategia più appropriata sarebbe POSIX_FADV_SEQUENTIAL
. Tuttavia, la descrizione dell'implementazione di Linux dubita che:
Sotto Linux,
POSIX_FADV_NORMAL
imposta la finestra di lettura rapida sulla dimensione predefinita per il dispositivo di supporto;POSIX_FADV_SEQUENTIAL
raddoppia questa dimensione ePOSIX_FADV_RANDOM
disabilita completamente il file readahead.
Dato che sto scrivendo solo dati (anche sovrascrivendo i file), non mi aspetto alcun readahead. Dovrei quindi continuare con il mio POSIX_FADV_SEQUENTIAL
o meglio usare POSIX_FADV_RANDOM
per disabilitarlo?
Come su altre opzioni, ad esempio POSIX_FADV_NOREUSE
? O forse non usare posix_fadvise()
per scrivere?
Si noti che POSIX_FADV_NOREUSE non è implementato nel kernel di Linux. – smoors