Cacheo de ficheros en GNU/Linux

Me estaba preguntando como funciona esto, porque para unos scripts en PHP que tengo hechos, cargo información en JSON de un fichero, así que probé a crear una partición tmpfs, que se supone que lo que pongas ahí se almacena en la RAM, y cargar el fichero de ahí.

Midiendo los tiempos de ejecución en PHP vi que al hacerlo de las dos formas los tiempos eran prácticamente los mismos, hasta en alguna ocasión tardó incluso menos leyendo el fichero "del disco" que de la partición tmpfs.

Por eso me pregunto si el SO, de forma transparente al usuario, en caso de que haya RAM de sobra, cachea los ficheros que se hayan leído para que las próximas veces el acceso a ellos sea mucho más rápido. Esto vendría a compensar un poco el hecho de que en PHP no existan variables de aplicación, como si existen en .NET.
tmpfs es un sistema de ficheros temporal y puede existir en memoria o en disco duro (por ejemplo haciendo uso de la partición de swap)

Y por otra parte, la manera por defecto en la que trabaja el kernel, es cachear en memoria todos los ficheros que se vayan usando mientras que tengas espacio libre. Así que la primera vez lo leerás del disco duro y las siguientes veces seguramente ya lo estará leyendo desde memoria el fichero.
No definí partición swap durante la instalación así que estaría almacenándose en RAM lo del tmpfs. Por lo que dices es lo que yo pensaba, que por defecto se cachean los ficheros en RAM si estos son pequeños y hay suficiente memoria. Gracias por la aclaración.
Puedes echar una ojeada a las variables session en PHP ;)

http://php.net/manual/es/ref.session.php

un saludo.
3 respuestas