El RFOG se renueva por dentro y por fuera (y II)

Publicado 18/12/2010 11:10 por Rafael Ontivero

Vamos a por una segunda parte no planeada, pero se me quedaron en el tintero algunas cosas y me han surgido otras nuevas, cosa que quiero hacer público por si le pasa a alguien más.

Si no te molan mis rollos patateros, el mensaje de la entrada es bien sencillo: Cuando uséis discos SSD, ponedlos en AHCI y usad Windows 7 o Server 2008R2.

Y ahora sí, ahora a contaros mi vida.

Bueno, pues una de las cosas en las que ha usado este largo puente, ha sido terminar de remodelarse el despacho en su casa que en su momento fue lugar de trabajo habitual y que está completamente seguro no va a volver a utilizar como tal en una larga temporada. Así que se lo ha montado a su gusto. Os pongo una foto:

image

Antes el lugar estaba lleno de estanterías metálicas con material del trabajo. Ahora están en el altillo, que es como el RFOG llama a una habitación que tiene justo al lado de su terraza. Allí tiene todos sus trastos y en su momento sirvió de almacén local para material de la empresa. Ahora hay más estanterías (las de abajo) y más cosas (también subidas de abajo).

La idea ha sido meter todo lo que tenía desparramado por la casa en una sola habitación. Es un decir, porque de cuatro habitaciones que tiene la casa (sin contar cuarto de baño ni cocina), el RFOG ocupa dos de ellas con sus cacharros. Su sala de estar (que ahora sí que parece tal), su dormitorio, su biblioteca liberada de cajas y de trastos que han sido subidos al altillo, y su despacho, que es la habitación que sale en la foto.

Al fondo a la derecha podéis ver un ordenador viejales (un AMD x2) que funciona de aquella manera y al cual accede por escritorio remoto, y encima su cablemodem y su Time Capsule que hace las veces de Router y de NAS para el MAC. Luego está la mesa del atril, enfrente de la ventana, que es el lugar para leer libracos que pesan mucho.

Más cerca está su nuevo ordenador (sí, se ve, la caja no es precisamente un primor), y sus dos monitores de 24”. Luego el iMAC, con su mesa y todo.

Entre medias se puede ver un Kindle 3, un iPad, su HP Touchsmart TM2 en su funda y la caja de uno de sus nuevos discos SSD (que ha usado para ver el modelo exacto y si soporta comandos TRIM, que lo hace). Al fondo a la izquierda se puede ver la estantería que ha dejado y una bicicleta estática… que apenas usa y debería hacerlo con mayor frecuencia.

Justo al principio de la parte derecha, donde está la bolsa de plástico, hay una mesa más que contiene algo de chatarra (discos duros, un EEPC del año la pera, y sus otros e-readers. En el rincón que no se ve, justo al lado del sillón que asoma a la izquierda, está la chimenea.

Y bueno, esa es la organización de la habitación del RFOG.

***

Al final no va a hackintoshear su PC, no. Porque se ha informado y ha visto que la cosa no es tan fácil como parece a simple vista. El primer problema es que necesita una BIOS parcheada para su placa base, y las versiones disponibles son bastante antiguas.

Pero luego no es todo tan fácil como se lo habían propuesto, no. Una vez instalado el Snow Leopard hay que liarse a meterle parches y drivers parcheados para que todo funcione bien, y aun así te garantizan unos cuantos kernels panic periódicos, así que al final lo ha dejado estar, y como tiene su iMAC…

***

Cuando el RFOG tenía las máquinas virtuales del trabajo en discos SATA II, las tenía en NTFS comprimidas. Sin que fuera una gran diferencia de rendimiento respecto a no tenerlas, sí que hacían su función. La idea es que, comprimidas, se minimiza el acceso a disco porque se tiene que escribir menos frente al tiempo de proceso de la compresión.

Cuando separó trabajo de vida personal, y tuvo su ordenador nuevo, instaló sus cuatro discos SSD formando dos RAID 0, uno para la partición de Windows y otro para las máquinas virtuales.

El rendimiento de lectura era de unos 300 MB/s, y el de escritura de unos 160 MB/s o así, ni de lejos los 500 y 300 respectivamente que deberían haber sido si se combinan las velocidades de los dos discos. Ya sabemos que el rendimiento no es el doble, pero en este caso tan sólo es algo superior al de uno solo.

No obstante el RFOG estaba bastante contento con su montaje. Y pasaron un par de días en el que continuó personalizando su ordenador, poniendo esto aquí y quitando esto de allá…

Y de repente el rendimiento se degradó de forma alarmante, sobre todo en la parte de las máquinas virtuales…

Para evitaros rollos varios sobre cómo encontré la solución y de los pasos que me llevaron a ello, comentaros que el tema tenía que ver con el comando TRIM de los discos SSD…

***

Debéis saber que los discos SSD no son más que un conjunto de memorias de tipo FLASH NAND (como las de las PDA, lectores de libros electrónicos, iPad y demás) con una controladora que simula ser un disco duro normal y corriente.

Lo que no se dice (y que conste que el RFOG lo sabía porque las ha tenido que usar en alguno de sus proyectos, pero fue incapaz de relacionar una cosa con la otra) es que esas memorias, una vez escritas, hay que borrarlas. Es decir, no se puede escribir sobre ellas como en un disco duro, sino que hay que realizar una operación de borrado antes, operación que suele ser bastante lenta comparada con la de escritura y sobre todo la de lectura.

En otras palabras, la controladora está diseñada para que vaya suministrando al ordenador, cada vez que se quiera escribir algo, sectores frescos y borrados. Hasta aquí bien, lo previsible. El problema viene cuando esos sectores libres se llenan y ya no quedan más.

No es que el disco se haya llenado, sino que se han usado todas las partes “vírgenes” por decirlo así. Cuando borras un fichero, la controladora de disco no borra la flash pertinente, sino que la marca como borrada y deja de usarla hasta que ya no quedan áreas libres y, cuando el sistema operativo necesita más espacio, procede a borrar las celdas ya usadas antes de darlas, y es cuando se produce la caída de rendimiento [1].

Hablando en propiedad, esto es una mierda oculta debajo de la alfombra de las SSD, que nadie airea y lo que es peor, nadie estandariza. De todos modos, existe un comando (supongo que será SCSI) que se llama TRIM. Si el sistema operativo, a la vez que borra el archivo, emite dicho comando para los sectores borrados, la controladora SSD añadirá dichos sectores a la lista de pendientes de borrar, y los borrará cuando tenga tiempo. De este modo el rendimiento no cae si tenemos tiempos muertos en el disco, ya que, en principio, todos los sectores libres estarán borrados a la hora de ser usados.

Windows 7 y su contraparte servidora son los únicos sistemas operativos que, a fecha de hoy, emiten dicho comando si tienen la configuración adecuada activa (que se pone sola si el sistema detecta este tipo de discos). Ni Linux ni Snow Leopard lo soportan, así que ojito con poner discos SSD con estos sistemas operativos, aunque existen soluciones alternativas y bastante chapuceras.

Pero hay otro problema, y es que el comando TRIM sólo funciona cuando los discos están en modo AHCI, y tampoco todas las controladoras los permiten. Generalmente las últimas versiones de todos los fabricantes lo hacen, incluyendo los ICH10R de Intel, pero es algo a comprobar.

En RAID no funcionan o más bien son ignorados por el hardware (citando a Tella, parece ser que el código RAID es antiguo, funciona al pelo y nadie se atreve a modificarlo no sea que la caguen), y también en xATA (léase ATA, SATA IDE, eSATA, etc).

Por lo tanto existe toda una serie de restricciones a la hora de tener discos SSD:

· Sólo en modo AHCI y con controladoras que soporten el comando TRIM

· Sólo discos SSD que soporten el comando TRIM (casi todos los de última generación a fecha de hoy).

· Sólo Windows 7 y Windows Server 2008R2.

· Si ponéis máquinas virtuales, que los discos estén sin comprimir.

Esta última recomendación creo que tiene que ver con el hecho de que la tasa de escritura es tan alta, que el tiempo que dura la compresión/descompresión sí que afecta al tiempo total de escritura/lectura.

No obstante, existen chapuzas para solventar este problema en aquellos discos o montajes que no lo soporten. Por ejemplo, Intel tiene una solución para sus discos y sus controladoras que consiste en tener un programa monitor en background que periódicamente revisa los discos y libera el espacio no trimmeado, y también existe algún que otro programa que se supone hace lo mismo. El mayor problema es que es un remiendo más que una solución.

En mi caso, la imagen de abajo os da una idea del rendimiento de mis discos bajo Windows 7 x64 en un disco recién formateado y 5 repeticiones de un archivo de 1GB:

image

Quizás estos enlaces te ayuden a comprobar tu sistema (lo siento, la mayoría están en inglés):

· http://www.ghacks.net/2010/09/14/verify-that-trim-is-enabled-in-windows-7/

· http://en.wikipedia.org/wiki/TRIM

· http://es.wikipedia.org/wiki/TRIM

· http://www.anandtech.com/show/2865


[1] Bueno, realmente ignoro si primero se emite un comando de borrar para luego ceder el espacio libre, porque dependerá del tipo de flash usado, o si se reescribe sin más, y tampoco es una cosa que me importe lo suficiente como para investigarla. Lo que es cierto es que las reescrituras de celdas ya usadas es más lenta que las de las vírgenes.

Comparte este post:

Comentarios

# re: El RFOG se renueva por dentro y por fuera (y II)

Saturday, December 18, 2010 3:27 PM by David

A ver cuando nos cuenta el RFOG en que anda metido de proyectos de código personales (nada laboral vamos).

# re: El RFOG se renueva por dentro y por fuera (y II)

Monday, December 20, 2010 12:33 PM by Rodrigo Linfati

linux si soporta TRIM desde 2.6.33

# re: El RFOG se renueva por dentro y por fuera (y II)

Wednesday, December 22, 2010 9:51 PM by Rafael Ontivero

@Rodrigo, desde Agosto del corriente... Mmmmmm... No hace mucho, ¿no? :-)

@David, poca cosa, no para un post entero. Estoy con una segunda versión del zxDelTemp con C++Builder XE, con esteroides (a ver si consigo lo que quiero). Alguna que otra cosilla "en la cabeza" pero con mucho menos tiempo libre debido a mis nuevas condiciones laborales, y menos ganas...

# re: El RFOG se renueva por dentro y por fuera (y II)

Friday, December 24, 2010 2:53 PM by pregunton

Tengo también equipo nuevo más modesto con 1 SSD GSkill PhoenisxPro SSD 120 GB, y 2 HD (Seagate y WD Caviar Green) de 1 TB cada uno.

En este sentido, qué herramientas se pueden utilizar para comprobar fiabilidad y rendimento de los discos duros ??

Y del SSD que comenta, qué buenas prácticas se pueden seguir y cuál sería la correcta configuración:

Aparte de

· Sólo en modo AHCI y con controladoras que soporten el comando TRIM

· Sólo discos SSD que soporten el comando TRIM (casi todos los de última generación a fecha de hoy).

· Sólo Windows 7 y Windows Server 2008R2.

· Si ponéis máquinas virtuales, que los discos estén sin comprimir. ¿?

Me comentaron que:

Para el SSD, empieza por desactivar Superfetch y desfragmentación automática.

Puedes quitar el arranque GUI (el logotipo de Windows al iniciar), con lo que le restarás esa tarea y ganarás unos segundos al inicio. Los SSD son discos muy rápidos pero cuantas más tareas le quites mejor rendimiento te darán a la larga y en general.

Mirate esto yo tengo echas la mayoría de las cosas de ese articulo en mi SSD y se nota. Windows 7 activa TRIM por defecto, pero no está de más que lo compruebes, luego desactiva hibernación para ganar espacio y mirate una por una y la que tú veas o no sepas que es comentas aqui. Desde luego tienes más reviews por inet, pero te pongo esa porque creo que es a mi parecer una de las más completas.

Deshabilitar la indexación del disco. La indexación del disco produce muchas lecturas y escrituras, bajando el rendimiento global del sistema.

Se debe deshabilitar el servicio de Windows Search, para ello se pulsa botón derecho en Mi PC –> Administrar –> Servicios y aplicaciones –> Servicios –> Botón derecho Windows Search –> Tipo de inicio: Desactivado –> Aceptar.

Deshabilitar desfragmentación del disco. En los discos SSD no es útil la desfragmentación ya que no hay ningún elemento mecánico que deba desplazarse de un lado a otro del disco.

Deshabilitar el servicio de Disk Defragmenter, para ello se pulsa botón derecho en Mi PC –> Administrar –> Servicios y aplicaciones –> Servicios –> Botón derecho Disk Defragmenter –> Tipo de inicio: Desactivado –> Aceptar.

Deshabilitar caché de escritura. Los discos SSD no disponen de caché por lo que no sirve de nada éste.

Se desactiva en botón derecho en Mi PC –> Administrar–> Administrador de dispositivos -> Propiedades del disco -> Políticas -> Desmarcar caché de escritura.

Firefox: Uso de caché en memoria y no en disco. Como en el caso de la indexación de disco lo que buscamos son la menor cantidad de accesos y escrituras a disco por lo que debemos configurar el Firefox para que sólo use memoria RAM para su caché.

Se debe teclear About:config en la barra de direcciones, buscar la cadena “browser.cache.disk.enable” y ponerla en False, después se debe crear un nuevo valor, botón derecho Nuevo -> Entero, como nombre debemos poner “disk.cache.memory.capacity” y en valor el tamaño que queramos que use de memoria, recomendable 131072 (128Mb) y reiniciar Firefox.

Cambiar opciones de SuperFetch. Acceder al registro de Windows. Para ello ir a la rama siguiente: “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Session Manager\Memory Management\PrefetchParameters” dentro la cual se edita el valor de EnablePrefetcher a uno de los siguientes valores:

Disable Caching: 0

Cache Applications Only: 1

Cache Boot Files Only: 2

Cache Everything (default): 3

sí que hablo desde la ignorancia porque no es lo mismo leer cosas en foros, etc., que experimentarlas por uno mismo, ¿pero no se supone que el tema de la bajada de rendimiento en un SSD ya está solucionado con el TRIM y el Garbage Collector?

Quiero decir, en un SSD sin estas características, lo entiendo, pero en uno que tenga ambas cosas, ¿por qué necesitas cambiar esas configuraciones que dices?, ¿qué problema hay en que haga escrituras si luego el GC va a ir limpiando esos módulos cuando el disco esté inactivo y además el TRIM le va a decir a la controladora cuáles son los que debe o no debe borrar, etc.?

Para tocar los valores y configuración de Prefetch y/o Superfetch puedes usar el TweakPrefetch, más cómodo que editar el registro.

Las lecturas/escrituras derivadas de la indexación no suponen el menor problema para un SSD moderno. Si bien la indexación no supone una ventaja clara al buscar dentro del SSD, si que puede interesar tener el servicio activo, pero no indexar el SSD, de modo que las búsquedas en los discos duros tiren de indexación pero no las búsquedas en el SSD. Esta opción depende del uso que le des. Si lo tienes organizado de modo que nunca sueles realizar búsquedas en los discos duros, desactívala porque no te sirve de nada, pero si de cuando en cuando necesitas buscar archivos en los discos duros no hay problema en activarla.

deja el servicio de defragmentación activado, pero lo configuras para no defragmentar nunca el SSD (pero si los discos duros).

Los SSD antiguos no traían cache de escritura, pero los modernos si, así que es útil. De todos modos, tener en cuenta que activarla conlleva reducir algo la fiabilidad en caso de corte de luz o similar, y la cache de escritura tan solo será realmente útil en operaciones intensivas. Yo esto lo haría así: si le vas a dar bastante caña, activarla, y si no (y se prefiere un poquito mas de fiabilidad, dejarla desactivada.

En mi opinión, las principales optimizaciones para un SSD moderno:

- Meter los archivos temporales en una unidad ram virtual (de 1GB por ej). Reduces las escrituras al SSD, aunque como he dicho antes, esto realmente no sería importante. Lo realmente importante es que aumentas la capacidad, pues los temporales de windows tienden a crecer desmesurádamente con el uso. Hay diversos programas gratuitos para ello. En un disco duro esto no importaría demasiado en cuanto a capacidad (aunque si en cuanto a rendimiento, ya que tener los temporales desperdigados por el disco y creándose de nuevo cada poco la fragmentación de archivos). En un SSD, contando con poca capacidad, el espacio potencial que se puede ahorrar es muy considerable. Hay numerosas guías por internet para hacerlo y también hay programas para ello gratuitos en sus versiones básicas que son mas que suficientes para este propósito.

- Desactivar el servicio de suspensión de sistema: otros cuantos GB que ganamos (iguales a la ram de sistema). Si se usa dejarlo activado, ya que tampoco hay problema en ello.

- NO desactivar el archivo SWAP: en algunas guías aconsejan moverlo a un disco duro, pero en mi opinión es muy contraproducente.

- Desactivar los puntos de restauración (o al menos limitar mucho el espacio que pueden ocupar): con un SSD de baja capacidad no debería haber inconveniente para hacer una copia de seguridad del SSD entero en un disco duro (aunque ya se que es menos cómodo). Copiar los 60-120GB de un SSD en un disco duro no debería llevar mucho tiempo y permitiría liberar un montón de espacio en el SSD. Salvo el espacio perdido no suponen mayor problema.

- MUY IMPORTANTE: crear las particiones desde windows 7, para un correcto alineamiento de estas (de no ser así habría una gran bajada de rendimiento en escritura). Hay formas de alinearlas a posteriori, pero mejor hacerlo bien desde el principio. Este problema no es exclusivo de los SSD y también afecta a los discos duros con AdvancedFormat (ya comenté antes que estamos en un momento de transición). Realmente el problema está en que casi todos los medios de almacenamiento están basados en tecnología de hace muchísimos años y va tocando cambiar.

Recomendación: ´SSDTweak´ es un programa gratuito que tiene centralizadas diversas optimizaciones a realizar, aparte de las comentadas antes. Varias de ellas (como SUPERFETCH o Indexación) tienen utilidad de acuerdo al uso que le demos, así que mejor conviene saber que hacen para luego activarlas/desactivarlas según nuestro propio uso del PC y nuestro criterio. Por ej, si nunca buscamos archivos, tenerlo activado no nos sirve de nada, pero si nos resulta útil no supone ningún problema dejarlo activado, y SUPERFETCH puede teóricamente seguir siendo útil aun con un SSD (aunque yo si lo desactivaría, aunque solo sea para ahorrar espacio de disco).

Incluso sin TRIM y GC no suponen el menor problema. Son una cantidad ínfima de escrituras teniendo en cuenta el uso intensivo en lecturas y escrituras para el que estaban pensadas en principio estas unidades.

Si mueves el archivo SWAP a un disco duro en lugar de dejarlo en el SSD se puede empeorar la respuesta del sistema en los casos en los que windows necesite tirar de él, o sea, en caso de que vaya escaso de memoria física y necesite pasar bastante de lo contenido en memoria al archivo de intercambio para liberar memoria física. En estos casos, la diferencia de rendimiento entre tenerlo en un disco duro y tenerlo en el SSD será bastante grande.

En cambio, si lo dejas en el SSD y resulta que no windows no necesite realizar ningún trasvase masivo de datos por agotarse la memoria física, tan solo estará realizando pequeñas escrituras esporádicas que no afectarán de forma significativa a la durabilidad.

Si que es cierto que si por el uso que le damos, nunca se puede dar la situación de que agotar la memoria física, nunca se dará el escenario comentado antes. Pero aun en ese caso, podríamos compensar la única desventaja práctica de tener el archivo swap consumiendo espacio en el SSD configurándolo de modo que reduzcamos dicho espacio a la expresión mínima (250MB por ej), sin desactivarlo preferéntemente (pues algunos programas necesitan que exista archivo de intercambio).

Saludos

Pd: el nuevo pc es core i5 760 2.8 ghz, 16 GB RAM  1333-pc3-10666 CL9 GSkill RipJaws, GSkill PhoenisxPro SSD 120 GB, y 2 HD (Seagate y WD Caviar Green) de 1 TB cada uno.