domingo 24 de mayo de 2009

RamDisk en Windows. Parte I - SATSoftware

Hace muchos años que se utiliza para algunos usos puntuales y concretos la técnica de crear unidades de disco virtuales en memoria física del sistema (RAM). Lo que ha cambiado en los últimos tiempos es la cantidad instalada total en un equipo medio que ya ronda los 4 u 8 GB.

Image5 RamDisk para Windows.

Muchas veces esta cantidad de memoria es excesiva para la utilización que el usuario hace de su sistema y la mayoría de las veces hay una porción importante de memoria libre sin utilizar.

Aquí propongo una utilización provechosa de esta memoria sobrante, la creación de un RamDisk. Se puede utilizar tanto en Windows XP como en Windows Vista, lo más importante es elegir bien su tamaño y configurar adecuadamente los programas para que saquen partido de él.

Yo hace más o menos un año que en todos mis sistemas con 4 GB o más instalo esta utilidad, sobretodo para crear en ella carpetas temporales.

Qué uso hace Windows de nuestro disco duro:

Los sistemas operativos Windows XP y Vista están continuamente leyendo y escribiendo en disco, ya sea paginando al archivo de intercambio, leyendo o actualizando información del registro, etc. Y a esta carga de trabajo debemos de añadir el software que estemos utilizando.

Mientras estoy redactando este artículo solo tengo en segundo plano IE8 y Avast Antivirus, lo que en teoría debería hacernos suponer que mis discos duros prácticamente no tendrían actividad, pero nada más alejado de la realidad.

Disk Monitor o DiskMon es una pequeña utilidad del paquete de SysInternalsSuite para analizar la actividad del subsistema de disco en Windows.

Image4 Actividad de disco en sistema WinXP Pro 32 bit en reposo.

Image3Realizando la captura de pantalla.

Image2Desfragmentando con Perfect Disk.

La raiz del problema viene del hecho de que los sistemas operativos Windows no aprovechan prácticamente las bondades de la escritura diferida (para evitar pérdidas de datos por corte eléctrico) con lo cual apenas cachean las escrituras.

Además, escriben con longitudes típicas de 4 KB (sí 4 KB) y, lo que es todavía más grave, en modo random (aleatorio). Es decir: muchísimas escrituras por segundo y de pequeño tamaño. La pesadilla de un disco duro mecánico que precisamente está optimizado para lectura o escritura secuencial y no aleatoria.

Y exactamente la carga de trabajo perfecta para la memoria RAM (random access memory), por ello resulta muy ventajoso crear un disco RAM e intentar dirigir hacia él la mayor tasa de accesos aleatorios procedente de nuestro sistema operativo y de las aplicaciones.

Image6 R: unidad RAM.

En la segunda parte discutiré la implementación de RamDisk con un caso práctico.

domingo 22 de febrero de 2009

Memset 4.0: Optimización extrema Intel Core2Quad P35. Actualizado – SATSoftware

En el artículo anterior hablé sobre este avanzado software para ajustar al máximo el rendimiento del subsistema de memoria de nuestro chipset, aquí trataré en detalle un caso concreto.

penryn_dies_IMG_5778

Wafer de procesadores Penryn 45 nm. Dos de ellos componen un Core2Quad.

La diferencia que podemos lograr sobre el rendimiento nominal puede ser muy elevada, todo depende de nuestros conocimientos sobre timings de memoria, nuestra experiencia y sobretodo de la revisión concienzuda de los datasheets del chipset que estemos utilizando.

P35

En este caso hablaré del clásico Intel P35. Un económico y rapidísimo chipset de Intel para plataformas de socket 775, especialmente Core2 Duo y Quad en sus versiones de 65 y 45 nm.

Configuración del sistema de utilizado en las pruebas que es desde el que escribo este artículo:

  • Procesador Intel Core 2 quad 9450, 2.66 GHz, 6 + 6 MB L2, 45 nm, Penryn
  • Placa base ASUS P5K-E, WiFi, eSATA, IEEE1394
  • 2 x 2 GB Kingston HyperX DDR2 800
  • Refrgerador Artic Cooling Freezer 775
  • ATI HD4850 512 MB GDDR3

Cada uno de estos componentes ha sido modificado para obtener las máximas prestaciones, aquí detallo como:

Intel Core 2 Quad 9450

El Intel Core 2 Quad 9450 junto a su hermano el 9550 son los procesadores de Intel óptimos para obtener las máximas prestaciones sin dejar a cero nuestra cuenta bancaria ya que tenemos una L2 de 6 + 6 MB que reduce mucho los accesos a memoria principal.

De los 2.66 GHz he elevado el reloj a 3.2 GHz mediante el aumento de la frecuencia del FSB del iP35 hasta los 1600 MHz manteniendo el voltaje de CPU a solo 1.250 V. Un excelente resultado para 3.2 GHz.

Asus P5K-E iP35

Configuración BIOS:

BIOS_P5KE_01

Ajustes manuales de BIOS.

  • CPU Ratio: 8 (el máximo en el C2Q9450 para una frecuencia de 3.2 GHz)
  • FSB Strap: 400 MHz
  • FSB: 400 MHz (1600 efectivo)
  • PCIEx: 100 MHz
  • Overclock de memoria DDR2 800 a 1066 MHz
  • Timings manuales a 2N y 5-5-5-15

BIOS_P5KE_02

Ajustes finos del Northbridge y controladoras de memoria.

  • DRAM Static Read Control: enabled
  • Transaction Booster: enbled
      • Boost level: 1
  • Load Line Calibration: disabled
  • CPU y NB GTL voltage: AUTO
  • Spread Spectrum: disabled

Todos los voltajes han sido ajustados manualmente al mínimo valor absoluto, excepto el del procesador que ha sido ajustado a un valor muy bajo, 1.250V.

BIOS_P5KE_03

Temperaturas y voltajes en BIOS.

Memoria Kingston HyperX DDR2 800

Estos excelentes módulos permiten un fácil overclock en la placa base adecuada. En este modelo de Asus (P5K-E) funcionan perfectamente a 1066 con timings de 5-5-5-15 2N a un voltaje de tan solo 2.0V. Es un resultado excepcional, sobretodo por lograrse con solo 2.0V.

En cambio en la Gigabyte GA-P35 DS3R de mi otro sistema Core2Quad es imposible hacerlas funcionar a 1066 independientemente del voltaje aplicado, y por ello las tengo a 800 MHz 4-4-4-12 también a 2.0V.

Temperaturas del sistema

Temperaturas en reposo:

SpeedFan_reposo

Como vemos, mientras escribo este artículo rondan los 33 – 39 ºC dependiendo del núcleo y el voltaje efectivo se mantiene sobre 1.20V.

Temperatura en carga máxima, WinRAR Multithreaded:

WinRAR

Unos 47ºC máximos en WinRAR multithreaded.

Temperatura en carga máxima (sistema), Prime95 Blend:

P95Blend

Rondan los 54 – 56 ºC en P95 Blend.

Temperatura en carga máxima (procesador), Prime95 SFFT:

P95SFFT

En P95 SFFT se estabiliza sobre los 58 ºC.

Memset 4.0

Captura de pantalla de los ajustes:

Memset4

Como vemos timings de 5-5-5-15 2N y un brillantísimo Performance Level de 5 con un FSB 1600 y RAM dual channel (4GB) a 1066.

Resultados prestacionales

WinRAR multithreaded cuatro núcleos:

WinRAR_MT

Una sola instancia de WinRAR = 2340 KB/s.

Dos instancias de WinRAR multithreaded:

WinRAR_dos_instancias

Dos instancias concurrentes de WinRAR. 1394 + 1245 = 2639 KB/s.

Como vemos, dos instancias de WinRAR  concurrentes dan un rendimiento agregado superior, concretamente 2639 KB/s. Pero todavía lo podemos optimizar algo más …

Dos instancias de WinRAR multithreaded asignadas manualmente a los núcleos:

Una instancia asignada a las CPUs lógicas 0 y 1 y la otra a las CPUs 2 y 3.

WinRAR_dos_instancias_affinity

Rendimiento agregado de 1423 + 1433 = 2856 KB/s.

Una instancia asignada a las CPUs lógicas 0 y 2 y la otra a las CPUs 1 y 3.

WinRAR_dos_instancias_affinity02_13

Rendimiento agregado de 1226 + 1208 = 2434 KB/s.

Como vemos, un rendimiento inferior al caso anterior, la explicación es la siguiente:

(Recomiendo consultar el siguiente artículo de LowLevelHardware).

El procesador Core 2 Quad Penryn 45 nm

El procesador C2Q de la serie 9000 está basado en dos dies Penryn dual core de 45 nm cada una de ellas con dos núcleos de ejecución y 6 MB de L2 de 24 vías con 15 ciclos de latencia load-to-use.

Harpertown

En Windows, la asignación de núcleos es la siguiente:

Harpertown_coresComo vemos, los núcleos 0 y 1 comparten la L2, e igualmente lo hacen el 2 y 3.

Por lo dicho, si ejecutamos un programa como por ejemplo 7zip, que utiliza solamente dos núcleos es mucho más eficiente asignarlo manualmente a los cores 0 y 1 o 2 y 3. En cambio, si un algoritmo utiliza los núcleos 0 y 2 estará trabajando en dos L2 de 6 MB separadas, lo que haré su trabajo menos eficiente por la lentitud de comunicación entre ambas (por el FSB).

Para un análisis detallado de este tema recomiendo un artículo de Marzo  y otro de Dicienbre de 2008 de LowLevelhardware:

Everest 4.60

cpuid En reposo, 2.4 GHz y 1.224 V.

cpuid_32

En carga 100%, 3.2 GHz y 1.208V gracias al Vdroop.

cachemem

8923 MB/s y solo 54.3 ns de latencia.

Son resultados sobresalientes, sobretodo la latencia de 54.3 ns (que significa unos 173.76 ciclos (54.3*3.2) de acceso a memoria cuando fallan las L1 y L2). Un Core i7 en OC a 3.5 GHz y con timings ajustados consigue unos 36 ns o sobre 126 ciclos con un triple canal DDR3 1333 8-8-8-24 1T.

En cuanto al ancho de banda, consigue 8923 MB/s en lectura o un 69.7 % del pico teórico (12.8 GB/s con un FSB 1600).

domingo 28 de diciembre de 2008

Memset 4.0 beta 3 - SATSoftware

Memset es una utilidad diseñada por tweakers.fr para extraer el máximo rendimiento del subsistema de memoria. En su última versión (la 4.0 beta 3) es una utilidad portable, no necesita instalación.

memset4

Descarga de Memset 4.0 beta3.

La compatibilidad con las CPUs y chipsets actuales es muy extensa:

  • AMD Athlon64 S754, S939 (DDR) y AM2 (DDR2)
  • AMD Athlon64 X2 S939 (DDR) y AM2 (DDR2)
  • La práctica totalidad de chipsets Intel desde el 845, 855, 865, 875X, 915, 945, 965, P35, X38, P45, X48, G35, PM45, GM45, Q45, G41
  • Chipsets nVidia nF650i, nF680i, nF630i, nF790i
  • Chipsets nF2, KT266, KT333, KT400

Para el AMD Phenom X3 y X4 (y AthlonX2 serie 7000) hay otra utilidad específica que realiza la misma función: CPU Tweaker que próximamente dará soporte al nuevo Intel Core i7.

En uno de los equipos que utilizo habitualmente he conseguido una sustancial mejora de velocidad combinando hand tunning de la BIOS y el uso en Windows de Memset. La configuración del sistema es la siguiente:

  • Intel Core2Quad stepping G0 3.0 GHz FSB 1333 multiplicador 9 @ 1.225 V
  • Dos canales de 2 GB Kingston HyperX DDR2 800 4-4-4-12 @ 2.0 V
  • Placa Gigabyte GA-P35DS3R Intel P35

El parámetro más importante en los chipsets Intel para aumentar el ancho de banda del subsistema de memoria y reducir la latencia es el Performance Level.

Performance Level

Este parámetro regula no un timing de memoria sino un timing del propio chipset. El performance level marca la latencia de sincronización entre los dominios de reloj del FSB y del bus de memoria.

A menor valor, mayor rendimiento. En el sistema comentado he conseguido bajarlo hasta 5 con FSB1333 y voltajes de CPU y Northbridge nominales. Un resultado excelente que podéis ver en la captura siguiente.

Image3

Captura de Memset4 en sistema Intel P35 con Performance Level 5.

Los timings de memoria son 4-4-4-12 y todavía queda margen para alguna mejora en el terreno de los subtimings (Others Timings) pero aportando mejoras de rendimiento insignificantes.

Recomendaciones de seguridad

Este software es solamente para usuarios avanzados que dominen la configuración de memoria en BIOS y tengan información acerca de que cambian al modificar cada parámetro.

En cualquier caso, recordad utilizar este software sin ningún otro programa a la vez ni procesos en segundo plano ya que si aplicáis valores incorrectos puede bloquear vuestro sistema o incluso provocar corrupción de datos en disco duro.

Comprobación de estabilidad

Una vez que hayáis llegado a unos ajustes que os parezcan adecuados llega la hora de asegurarnos del funcionamiento estable del equipo. Para ello, en primer lugar recomendaría seguir las indicaciones de los artículos siguientes:

Si un sistema pasa satisfactoriamente ambos tests (lo que lleva, siendo estrictos, al menos 24h) podemos estar seguros de la estabilidad de nuestro equipo.