Si llamo CAT / DEV / NULL dos veces en sucesión en un archivo, ¿será la segunda llamada un NO-OP?

StackOverflow https://stackoverflow.com/questions/6088169

  •  09-09-2020
  •  | 
  •  

Pregunta

Quiero usar cat filepath > /dev/null como un mecanismo de almacenamiento en caché de memoria barato. Lo que me estoy preguntando es: Si lo llamo por segunda vez, y el archivo ¿Ya está en el caché de disco, es el sistema operativo lo suficientemente inteligente como para no hacer nada?

Actualización: He probado esto en un volumen CIFS, usando fadvise posix_fadv_willneed Para cachear el archivo localmente (usando Linux-FTools en la línea de comandos).Resulta que El volumen debe montarse en modo de lectura-escritura para que esto funcione.Solo en lectura Modo, la felicidad parece ser ignorada.Esto debe tener algo que ver con la samba. Mecanismo de oplock.

¿Fue útil?

Solución

Es mejor para posix_fadvise (..., posix_fadv_willneed) que a CAT El archivo a / dev / null: requiere menos IO real, y no necesita que los contenidos de archivos se lean en la memoria RAM del espacio de usuario, destruyendo las CPU cachés.

Además, si la parte relevante del archivo ya está en la memoria caché, la POSIX_FAdvise hará mucho menos trabajo que el archivo CAT> / dev / null

Si cree que realmente necesita que las páginas sean en el núcleo justo ahora , luego MMAP la sección relevante del archivo y mars (desbloquea después; podría descartarse inmediatamente si la presión de la memoriaEs ajustado).Que necesita privilegios de raíz.

En general, hacer este tipo de cosas es una pesimización y debe evitarse, sin embargo.Forzar el kernel para comportarse de cómo lo desea puede reducir su capacidad para optimizar la carga de trabajo real en este momento.

Otros consejos

no, y no puede.

Determinando si un programa no hará nada, generalmente es más complejo que simplemente ejecutarlo.

¿Por qué necesitas controlar el almacenamiento en caché de memoria de todos modos?Si es absolutamente necesario, considere usar un sistema de archivos TMPFS o usando Compcache (un dispositivo de bloque de RAM comprimido)

No lo hará nada , como han dicho las otras respuestas.Pero si lo que realmente significaba fue:

Si lo llamo por segunda vez, y el El archivo ya está en el caché de disco, es El sistema operativo lo suficientemente inteligente como para no leíjalo ¿De disco por segunda vez?

... entonces la respuesta es sí 1 .Así es como funciona la caché de disco, después de todo.


1.Mientras el sistema de archivos en cuestión use el caché de la página, de todos modos.

It will be fast as hell, but it won't be a no-op (if it were, there would be legit reasons for syscalls to do unexpected things instead of their promised functions...). However, depending on the filesystem driver used, and the kernel options, you could be running close to the memory bandwidth.

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