Intel MLC, así es como se mide la latencia y el rendimiento de la RAM de tu PC

Intel Memory Latency Checker es una pequeña aplicación de Intel tanto para Windows como para Linuz, la cual nos permite medir el rendimiento de la comunicación entre los diferentes núcleos de la CPU y la memoria RAM. En este artículo os hacemos una introducción al mismo y que parámetros mide.

La RAM es uno de los componentes esenciales del PC, ya que sin ella la CPU que ejecuta los programas no podría funcionar. Es por ello que las herramientas para medir el rendimiento entre la CPU y la RAM, ya sea a la hora de medir el ancho de banda como la latencia son bienvenidas. El Intel Memory Latency Checker es una de ellas y sirve para ambas cosas.

¿Qué es el Intel Memory Latency Checker?

CPU RAM

La Intel Memory Checker es un pequeño programa que tiene versión tanto para Linux como para Windows, en ambos casos no es un programa que funcione desde una interfaz gráfica, por lo que tendréis que ejecutarlo desde una terminal si estáis en Linux o desde PowerShell o el símbolo del sistema desde Windows.

El Intel Memory Latency Checker es una pequeña aplicación que realmente mide la latencia entre la CPU del sistema y su memoria RAM. No solo eso, sino que mide la latencia de otros elementos que se comunican con la CPU y la memoria, ya que el MLC se puede utilizar para las siguientes funciones:

  • Para medir las latencias entre una dirección concreta de memoria y uno de los núcleos de la CPU.
  • Podemos medir las latencias de cada uno de los niveles de la caché con el Memory Latency Checker, e incluso medir las latencias de transferencia entre caché y caché del procesador.
  • Podemos medir el ancho de banda para diferentes ratios de operaciones de lectura y escritura con la RAM.
  • Medir la latencia en el acceso aleatorio a la RAM en vez de hacerlo de forma secuencial. Es decir, no acceder a direcciones de memoria consecutivas.
  • Podemos variar el tamaño del bloque de memoria con el que queremos realizar el benchmark, para poder medir la latencia según el tamaño del bloque de datos.

El Intel Memory Latency Checker hace uso de hilos de la CPU de la siguiente manera: todos los núcleos excepto uno generan peticiones a memoria para sobrecargar el acceso a la RAM de la misma, mientras que el último núcleo realiza telemetría de cuando tardan, es decir, mide la latencia real de cada transferencia.

¿Cómo instalar Intel Memory Latency Checker?

Intel MLC

El proceso es muy sencillo, en primer lugar una vez hemos descargado el archivo desde la página de Intel solo necesitamos descomprimirlo, os recomendamos tener instalado 7-Zip como descompresor, ya que os permitirá descargar descomprimir de manera directa el archivo. El archivo inicial estaáen extension tgz, al descomprimirlo obtendréis otro archivo, en formato tar, el cual tendréis que descomprimir de nuevo para obtener la carpeta final, la cual tiene que aparecer con el siguiente aspecto en vuestro PC.

Si hacéis doble clic en la carpeta llamada Windows os saldrán tres archivos, seleccionad los archivos llamados mlc.exe y mlcdrv.sys y copiadlos. Para instalar MLC solo tendréis que copiar los archivos en la carpeta que queráis, ya que en el fondo es una aplicación portable que solo requiere de estos dos archivos para funcionar. Nosotros la hemos instalado en C:/Archivos de Programa (x86)/Intel MLC. Aunque para ello hemos necesitado crear la carpeta Intel MLC dentro de la carpeta Archivos de Programa (x86).

A través del símbolo del sistema y utilizando comandos MS-DOS hemos navegamos hasta la carpeta donde tenemos instalado el Intel MLC y hemos escrito el comando MLC para ejecutar la aplicación. Si la instalación ha sido correcta, entonces el MLC se ejecutará ejecutando todas sus pruebas de rendimiento una detrás de otra.

Midiendo la latencia con Memory Latency Checker

Al contrario de lo que mucha gente piensa, el acceso a la memoria RAM depende de muchos factores y uno de ellos es la latencia, la cual aumenta con la contención. Entiéndase el término contención de memoria a lo que ocurre cuando un núcleo de la CPU u otro componente necesita acceder a la RAM del sistema, lo que crea un retraso adicional y por tanto aumenta la latencia.

Si lo que queremos es medir la latencia cuando la memoria está ocupada solo tenemos que teclear mlc –idle_latency en la línea de comandos. Otra forma de medir la latencia es pedirle a todos los hilos de ejecución del sistema menos uno que creen peticiones a memoria, esto lo podemos hacer tecleando mlc –loaded_latency en la línea de comandos.

Midiendo el ancho de banda con Intel MLC

El Intel MLC no solo sirve para medir la latencia de la memoria, sino también el ancho de banda de la misma. El primero de los comandos es mlc –max_bandwidth que nos permite saber el máximo ancho de banda para diferentes escenarios de acceso a memoria.

El otro comando para medir el ancho de banda es mlc –peak_injection_bandwidth que lo que hace es generar peticiones a memoria desde cada uno de los núcleos a la máxima velocidad posible.

Midiendo la latencia de la caché con Intel MLC

Intel MLC

El Intel MLC también nos permite medir la latencia entre los núcleos y la caché L2 del procesador o en su defecto con la caché de último nivel y por tanto la que se encuentra antes del controlador de memoria. Para hacerlo solo tenemos que escribir en la línea de comandos mlc –c2c_latency.

Mediciones multi-procesador

Placa base doble socket

En primer lugar no hemos de confundir multiprocesador con multinúcleo, ya que en el caso que nos ocupa estamos hablando de una medición entre los diferentes sockets con la RAM. Por ejemplo si realizamos el comando mlc –latency_matrix para medir la latencia en una CPU de 8 núcleos para portátil lo que obtendremos es lo siguiente:

Lo cual nos indica que hay un solo procesador en el sistema, lo mismo ocurre si utilizamos el comando mlc –bandwidth_matrix para medir el ancho de banda.

Por lo que estas opciones solo sirven si tenemos un sistema con varios procesadores y cada uno instalado en su propio socket, como es el caso de los Intel Xeon o los EPYC de AMD.

Desactivando el Hyper Threading de Intel

Estos comandos usa todos los hilos de ejecución de la CPU, pero si queremos medir la latencia con un solo hilo de ejecución necesitamos utilizar el parametro -X al final de la línea de comandos, por ejemplo si ejecutamos todos las pruebas de rendimiento solo tendremos que escribir mlc -X.

Donde X es el parámetro dentro del Intel Memory Latency Checker que le indica que tiene que utilizar un solo hilo de ejecución. Os recordamos ya de paso que hay diferencia entre minúsculas y mayúsculas y que «X» en este caso es mayúscula. Podéis ejecutar este parámetro con cualquiera de los comandos que os hemos descrito, para que podáis saber cuál es el rendimiento entre un procesador y la memoria cuando el multihilo ha sido desactivado.

1 Comentario