Pregunta

Cuando la función CreateFile se llama sin el FILE_FLAG_NO_BUFFERING bandera, ¿cuál es el tamaño del buffer interno del sistema operativo?

Si mi tamaño del búfer es mayor que el buffer interno de Windows puedo utilizar plenamente el rendimiento del disco?

¿Fue útil?

Solución

Es probable que varía de versión de Windows a la versión de Windows, así como en función de la cantidad de memoria RAM libre. En lugar de confiar en nada específico, simplemente debe hacer lecturas y escrituras con tamaños de búfer que funcionan bien para su aplicación.

Otros consejos

Depende de la cantidad de RAM que tiene y cómo está configurada la máquina. Servidores están configurados por lo general a la caché del sistema de privilegios. Se podría cambiar eso mediante la alteración de la siguiente clave del registro

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

El SetSystemFileCacheSize función se puede utilizar para alterar el tamaño de caché . Sin embargo, por lo que entiendo, el ajuste del tamaño del conjunto de trabajo es más de una pista para el sistema operativo que un límite duro.

En lo que respecta a su segunda pregunta, no estoy seguro de lo que quiere decir. No veo cómo el tamaño de la memoria intermedia afectará el rendimiento, pero estoy seguro de que alguien me corrija si estoy equivocado.

Si está utilizando no-buffering, en realidad no es un tampón para la E / S que no sea el que le dio a leer / escribir. (Esto se exceptuando archivos comprimidos, que es una bola diferente de la cera.)

El sistema de caché se ignora en este caso, razón por la cual usted está obligado (ver MSDN ) que tener cuidado con la alineación y el tamaño de su e / S.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top