martes, 26 de enero de 2010

Arrancar ISOs

En Internet hay varios sistemas operativos o utilidades que se pueden descargar en formato ISO, grabar en un CD y arrancar el PC con ellos. Sin embargo hoy en día hay 3 cosas que se combinan:
  • PCs que pueden arrancar desde un dispositivo USB
  • Pen-drives de varios GB
  • PCs sin lector de CD/DVD

La primera posibilidad es grabar la ISO en el pen-drive en vez de en un CD/DVD. Para ello lo primero es formatear el pen-drive para hacerlo arrancable. La forma más fiable que he encontrado es usar HP USB Disk Storage Format Tool

Luego se usa UNetbootin para grabar la ISO en el pen-drive. Se usa principalmente para ISOs de Linux, pero tambien se puede usar para instalar Windows desde un pen-drive.

Y lo más sofisticado es poner varias ISOs en el pen-drive y arrancar una de ellas mediante GRUB4DOS. Básicamente se sigue esta guía. La utilidad MultiBootISOs.exe copia GRUB.EXE al pen-drive y algunos ficheros de configuración.

Tambien se puede seguir este tutorial, que usa Grub4Dos GUI Installer

El que tenemos que editar es menu.lst. Básicamente es añadir un bloque como este por cada ISO que queramos arrancar:

title Nombre de la ISO
find --set-root /fichero.iso
map /fichero.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
boot

Luego hay que copiar las ISOs al pen-drive. Si al arrancar alguna tenemos el mensaje:

Error 60: File for drive emulation must be in one contiguous disk area

Es que el fichero ISO está fragmentado, hay que desfragmentar el archivo con contig.

Para ISOs de distribuciones de Linux hay que añadir más parámetros, ver manual del GRUB4DOS aquí

Por ejemplo, para Ubuntu 9.10 sería:

title Ubuntu LiveCD
find --set-root /ubuntu-9.10-desktop-i386.iso
map /ubuntu-9.10-desktop-i386.iso (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/ubuntu-9.10-desktop-i386 quiet splash --
initrd /casper/initrd.gz
boot

Otra posibilidad es usar GRUB2, que viene en el CD de Ubuntu 9.10. Necesitais arrancar con el CD de Ubuntu, y seguir las instrucciones de este tutorial. La parte complicada es instalar GRUB2 en el pen-drive desde Linux. Una vez hecho eso, ya podemos crear carpetas, copiar y editar ficheros desde Windows.

El fichero de configuración en este caso es boot/grub/grub.cfg

Para cada ISO hay que ver donde están los ficheros para linux y initrd. El problema es que los nombres de los ficheros y su ubicación cambian de un CD a otro. Algunos ejemplos aquí.

lunes, 18 de enero de 2010

Readyboost

Windows Vista y Windows 7 tienen la posibilidad de usar una memoria flash como caché de la memoria virtual. Esto mejora los tiempos de respuesta cuando hay que leer datos del archivo de intercambio.

Desde hace mucho, las CPUs permiten usar memoria virtual para tener disponible para los programas más memoria que la RAM físicamente instalada. La idea es que normalmente solo usamos algunas unas pocas funciones de un programa, por lo que en cada momento basta con tener en RAM la parte del programa que estamos usando y el resto se puede dejar en un fichero de memoria virtual en el disco. Si cambiamos a otra parte del programa o a otro programa, puede ser necesario recuperar esas páginas del disco y ponerlas en la RAM para usarlas.

Esto es lo que se llama "pagging" y es lo que está haciendo cuando al cambiar de un programa a otro vemos el disco trabajando. Por eso, cuanta más RAM mejor, menos necesidad de usar memoria virtual, menos accesos al disco y más agilidad al trabajar con varios programas a la vez.

El impacto depende de la relacción entre la "carga de transacciones" y la cantidad de RAM instalada en el equipo. Todos sabemos que no es lo mismo un equipo con 1 GB de RAM y XP, que 1 GB de RAM y Windows Vista... En el segundo caso Readyboost puede ayudar en esos momentos que se accede mucho a la memoria virtual.

Conviene aclarar antes de nada el tema de las velocidades de acceso en dispositivos de almacenamiento. La clave del asunto está en acceso secuencial o aleatorio. Los discos duros son buenos en acceso secuencial, y las memorias flash en acceso aleatorio. Readyboost intenta combinarlos, dirigiendo los accesos secuenciales al disco duro, y los aleatorios a la copia almacenada en una memoria flash.

Los fabricantes, como siempre, suelen dar datos de las velocidades máximas posibles, pero eso es válido sólo en un caso en particular. Si estás leyendo un archivo grande, en sectores contiguos al principio del disco, pues si, puedes tener esos 70 o 80 MB/s. Pero a un disco duro lo que le va mal es tener que leer ficheros pequeños desperdigados por todo el disco. Suponiendo ficheros de 4 KB y un tiempo de acceso de 7 ms, tardaría 1.8 segundos en leer 1 MB (0.57 MB/s).

Esta es la razón tambien de que haya un programa de desfragmentación en Windows, lo que intenta es mover todos los trozos de cada fichero para que estén todos seguidos, y ahorrarle al disco duro esos movimientos saltando de un trozo al otro. En un disco SSD (hecho de memoria flash) no es necesario ya que tarda lo mismo en leer cada trozo esté al lado del anterior o no.

Una memoria flash puede tener un tiempo de acceso de 0.2 ms, por lo que haría lo mismo en 50 ms (20 MB/s). Así que para este tipo de cosas, la memoria flash es 35 veces más rápida que el disco duro. Y esta es la clase de accesos que hay al fichero de memoria virtual. Windows almacena páginas de 4 KB en él, y puede necesitar acceder a unos cuantos miles cuando quieres cargar una nueva parte de un programa. Ahí es donde Readyboost interviene para ir a buscar las páginas a la memoria flash en vez de al disco duro.

Tened en cuenta que en el tiempo que el disco duro encuentra la primera página (7 ms), de la memoria flash ya hemos podido leer 30 páginas de 4 KB.

Para poder usarla para ReadyBoost, una memoria flash debe tener unas características mínimas. Nos interesa el tiempo de acceso de la memoria flash, asi que si no es capaz de leer ficheros pequeños muy rápido, no nos sirve. Microsoft especifica 2.5 MB/s leyendo ficheros de 4 KB (o sea, 600 operaciones por segundo). Cuando insertáis un pen-drive en un equipo con Windows Vista o 7, hace esta prueba, si no es capaz de leer 2.5 MB/s no tendréis la posibilidad de usarlo para ReadyBoost.

Muchos pen-drives normales y baratos no llegan a eso, están pensados más bien para lectura y escritura secuencial, como un disco duro. Hay otros que ponen "Enhaced for Readyboost" y que está garantizado que cumplen los requisitos mínimos. Hay una tabla con ejemplos de que velocidades se tienen hoy en dia en esta web.

Microsoft recomienda dedicar a Readyboost entre 1 vez y 2.5 veces la cantidad de RAM en el sistema. El tamaño y la velocidad de la memoria flash a usar dependen de lo intensivo que vaya a ser el uso... En un equipo con una cantidad de RAM decente y que siempre está con uno o dos programas abiertos (un equipo de oficina por ejemplo) puede bastar con 1 o 2 GB de flash normal, que cumpla los requisitos mínimos. En un equipo en el que se usen programas que necesitan mucha memoria, como juegos o maquinas virtuales, podria ser necesario 4 GB o más de flash rápida (8 - 16 MB/s).

Algo que suele preocupar a la gente es que las memorias flash tienen un límite a la cantidad de escrituras que se pueden hacer en ellas. En el caso de las flash usadas en pen-drives y tarjetas, es MLC, asi que unos 10000 ciclos. Pero pensad lo que eso supone. Supone escribir todo el pen-drive 10000 veces. Si es un pen-drive de 4 GB, supone escribir 40 TB en él. Readyboost en realidad no escribe tanto como algunos piensan. Cuando lo empiezas a usar, tiene que copiar datos del fichero de paginación del disco al pen-drive, claro, pero luego típicamente solo son unos cuantos KB/s, si no estás todo el rato abriendo y cerrando programas. Usando el programa ReadyBoost Monitor, se pueden ver las estadísticas.



La escala son 10 MB/s. El primer pico (azul, lecturas), es al abrir un programa que ya habia abierto antes, por lo que las páginas ya están en la caché. El segundo pico es al abrir un programa que no habia abierto hasta entonces y ahí podeis ver como se guarda parte del programa en el pen-drive. El resto del tiempo apenas hay nada. Como podéis ver, Readyboost tiene actualmente 1.84 GB de datos guardados, comprimidos a 1.15 GB. Y lleva 6.20 GB escritos (en un dia y poco, de los cuales la mayoria fueron al principio, haciendo la copia inicial).

Este es otro ejemplo de lo que ocurre al abrir en el Internet Explorer una página web con bastante flash e imágenes. La escala son 2 MB/s de máximo en cada dirección. Aunque acabe escribiendo 4 GB cada dia, el pen-drive va a durar 10000 dias, que son 27 años. Mucho antes que eso habréis podido reemplazar el pen-drive por uno de más capacidad y más rápido. (¿Alguien recuerda los primeros pen-drive de 128 MB?)

En total es una opción fácil y barata hoy en dia. Si tenéis algun pen-drive, o incluso tarjeta de memoria por ahí sin usar, podeis probar a usarla para reducir los tiempos de acceso al disco duro. Esto se nota más en los portátiles, claro, típicamente con discos de 4200 o 5400 rpm y menos RAM. Podeis hacer el test de rendimiento para ReadyBoost en cualquier unidad con los siguientes comandos:

  • winsat disk –read –ran –ransize 4096 –drive X
  • winsat disk –write –ran –ransize 524288 –drive X

En la siguiente tabla teneis algunos ejemplos de velocidades que se consiguen, según los dispositvos que se utilicen. En el caso de las tarjetas de memoria no solo importa la tarjeta, sino tambien el lector.