Domanda

Quando CreateFile funzione viene chiamata senza l'FILE_FLAG_NO_BUFFERING di bandiera, Qual è la dimensione del buffer interno del sistema operativo?

Se la mia dimensione del buffer è più grande del buffer interno di Windows, posso completamente esaurire il throughput del disco?

È stato utile?

Soluzione

E 'probabile che varia da versione di Windows alla versione di Windows, così come a seconda della quantità di RAM libera. Piuttosto che fare affidamento su qualcosa di specifico, si dovrebbe semplicemente fare legge e scrive con dimensioni del buffer che funzionano bene per la vostra applicazione.

Altri suggerimenti

Dipende quanta RAM avete, e in che modo la macchina è configurata. I server sono di solito configurati per cache di sistema dei privilegi. Si potrebbe cambiare la situazione modificando la seguente chiave di registro

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Control \Session Manager \Memory Management] LargeSystemCache

Il funzione SetSystemFileCacheSize può essere utilizzato per modificare la dimensione della cache . Tuttavia, da quanto ho capito, impostando la dimensione working set è più di un suggerimento per il sistema operativo di un limite rigido.

Per quanto riguarda la seconda domanda, io non sono esattamente sicuro di quello che vuoi dire. Io non vedo come la dimensione del buffer influenzerà il throughput, ma sono sicuro che qualcuno mi correggerà se sbaglio.

Se stai usando non-buffering, non c'è davvero un buffer per l'I / O diverso da quello che hai dato a lettura / scrittura. (Questo è eccetto file compressi, che è una sfera differente di cera.)

Il sistema di cache viene ignorato in questo caso, che è il motivo per cui ti viene richiesto (vedi MSDN ) stare attenti con l'allineamento e la dimensione del vostro I / O.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top