¿Cómo saltarse las cachés del sistema?

Cuestiones en general sobre tecnología e informática que no tengan cabida en el resto de foros.
Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2973
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 329 veces
Contactar:

¿Cómo saltarse las cachés del sistema?

Mensajepor zup » 16 Feb 2016, 17:33

Acabo de comprar (por rellenar un pedido) una serie de aparatos USB 3.0, como un adaptador de disco duro y un lector de tarjetas. Me gustaría compararlos con el hardware que ya tengo para ver si hay una diferencia de rendimiento apreciable.

El tema es que el equipo que tengo tiene 8 Gb, y me da en la nariz que las cachés de Linux y de Windows van a falsear bastante los resultados. ¿Hay alguna forma de hacer una prueba de este tipo sin que las cachés intervengan?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: ¿Cómo saltarse las cachés del sistema?

Mensajepor mcleod_ideafix » 16 Feb 2016, 18:31

No usando el sistema de ficheros, sino leyendo o escribiendo directamente al dispositivo de bloques. En lectura, haz lecturas a posiciones de bloque aleatorias, no secuenciales, ya que las últimas aprovechan precisamente la secuencialidad para cargar de caché el siguiente bloque.

De todas formas los resultados que obtengas siempre tendrán alguna incertidumbre, ya que precisamente al cachearse el acceso a los siguientes bloques, al hacer una lectura desde el software, no puedes estar seguro de que se esté haciendo sólo una lectura a nivel hardware. Aquí la solución consiste en mirar si en los IOCTL's del dispositivo de bloques en particular al que estás accediendo existe alguno que deshabilite por completo la caché.

Por supuesto hablo de Linux. En Windows también existen los mismos conceptos y mecanismos, no obstante.

Lo más sencillo, probablemente, es que uses algún programa de benchmarking de discos duros que ya tiene en cuenta todas estas cosas.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
DistWave
Atari 1040 STf
Atari 1040 STf
Mensajes: 748
Registrado: 15 Ene 2011, 09:08
Sistema Favorito: PC
primer_sistema: PC
consola_favorita: Nintendo SNES
Primera consola: Atari 2600
Ubicación: Zaragoza
Gracias dadas: 2 veces
Gracias recibidas: 51 veces

Re: ¿Cómo saltarse las cachés del sistema?

Mensajepor DistWave » 16 Feb 2016, 18:57

No entiendo el razonamiento de la cache en accesos secuenciales... si accedes una única vez a cada posición secuencialmente, la caché no debería tener ningún dato de esas posiciones ya que cada acceso se está realizando por primera vez, aunque sea un bloque completo. En una acceso aleatorio sí que puede acelerar porque puede haber leido ese bloque con anterioridad y estar cacheado.

Yo siempre uso dd para probar la velocidad secuencial de un dispositivo, por ejemplo con un dd if=/dev/sdX of=/dev/null bs=256M count=4 transfieres el primer GB de la unidad secuencialmente. Como prueba rápida me sirve ;)

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: ¿Cómo saltarse las cachés del sistema?

Mensajepor mcleod_ideafix » 16 Feb 2016, 19:16

DistWave escribió:No entiendo el razonamiento de la cache en accesos secuenciales... si accedes una única vez a cada posición secuencialmente, la caché no debería tener ningún dato de esas posiciones ya que cada acceso se está realizando por primera vez, aunque sea un bloque completo. En una acceso aleatorio sí que puede acelerar porque puede haber leido ese bloque con anterioridad y estar cacheado.

Si accedes al disco de forma secuencial, el primer bloque lo lees efectivamente gastando el tiempo que se tarda en leer fisicamente el bloque, pero el hardware del disco duro aprovecha esa lectura para guardar en caché propia los bloques que siguen a continuación, ya que cuesta muy poco leerlos (el cabezal del disco duro ya está en la pista adecuada) y por el principio de localidad referencial, es muy probable que si se ha leído un bloque, a continuación quiera leerse el que le sigue a continuación.

Esa misma filosofía se sigue en las cachés del sistema, ya que pedir los datos de los bloques que están a continuación de aquél que hemos leido cuesta muy poco.

Asi que cuando lees, pongamos, 8 bloques secuenciales, puede pasar que el primero realmente lo leas gastando el tiempo de acceso al disco, pero los 7 restantes los estés leyendo de la caché. De ahí que una lectura secuencial no sea, por lo general, la mejor forma de medir el rendimiento de un disco duro mecánico. De hecho la lectura secuencial se usa para averiguar el máximo throughput del disco, porque se sabe que es cuando el sistema disco-caché-cable SATA funcionan con el máximo de transferencia. Es lo que aparece en los programas de benchmarking como "lectura burst" o "lectura por ráfaga". Fíjate que esto de acelerar los accesos secuenciales se usa incluso en la memoria del sistema, que trabaja más rápido si se accede a ella secuencialmente.

En un acceso aleatorio (si es exhaustivo) la caché nunca o casi nunca tendrá el dato cacheado de antes, ya que la caché es muchas veces menor en tamaño que el disco que pretendes medir y en un acceso aleatorio exhaustivo nunca se pide leer la misma dirección de bloque durante el benchmark sino que son todas diferentes.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2973
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 329 veces
Contactar:

Re: ¿Cómo saltarse las cachés del sistema?

Mensajepor zup » 16 Feb 2016, 20:06

El tema es que a veces dd hace cosas raras (sobre todo al escribir en USB). He visto casos en los que hace la lectura en RAM y vuelve a línea de comandos antes de completar la escritura, falseando las estadísticas.

Ahora que lo pienso, una solución cutre sería usar un script con dd y sync para medir el tiempo.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!


Volver a “Tecnología e informática”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados