domingo, 19 de agosto de 2012

El rover Curiosity en Marte ¿Cómo es la computadora que lo controla?

 El pasado 6 de agosto del presente año 2012 el rover Curiosity aterrizaba en planeta Marte para una larga misión de exploración que durará todo un año marciano (687 días). Después de un viaje espacial de cerca de 9 meses, los famosos siete minutos de terror del descenso y ante una misión tan larga ¿que tipo de computadora se ocupa de mantener un entorno tan complejo? Pues bien, según la documentación de la NASA, el rover tiene dos computadoras gemelas basadas en la placa BAE RAD750, especialmente preparadas para resistir la radiación espacial (radiation-hardened). De las dos máquinas sólo una está activa en cada momento y la otra está en standby para actuar en caso de que la primera falle (cold-standby).

 Esta computadora no es que tenga unas especificaciones que llamen la atención respecto a los estándares de los ordenadores personales de hoy en día, por ejemplo el reloj de la CPU sólo alcanza los 200Mhz. Sin embargo, esta velocidad de reloj es 10 veces superior a la que tienen equipos rover de misiones a Marte anteriores, que usaban la placa BAE RAD6000 a 20MHz. Esto nos da una idea del esfuerzo que se ha hecho por aumentar la capacidad de proceso en este sistema dentro de las limitaciones existentes por la protección frente a la radiación cósmica, el espacio en rover y la potencia eléctrica disponible.
 Algo similar ocurre con las capacidades de memoria DRAM y flash, que también han aumentado su capacidad hasta 256 Mb y 2 Gb respectivamente, desde 128 Mb y 256 Mb de misiones anteriores.
 En cuanto al software, el sistema operativo que maneja el sistema es el VxWorks de Windriver. Este es un sistema operativo de tiempo real (RTOS) muy probado, mas de 25 años de evolución, y con garantía absoluta de fiabilidad a la vez que bajas demandas de hardware. Vamos, lo necesario para esta misión.
 Finalmente, como nota curiosa, resaltar que el sistema está preparado para actualizaciones remotas del software. De hecho una nueva versión se envió durante el pasado mes de mayo y se instaló entre mayo y junio, y otra versión se envió en junio y será instalada ahora que el vehículo ya se ha posado sobre la superficie de Marte. Esperemos que todo vaya sobre ruedas, nunca mejor dicho.

miércoles, 8 de agosto de 2012

CPUmaxer en acción

Aquí tenemos unas imágenes de mi herramienta CPUmaxer en acción en una máquina de 4 CPUs. En esta primera imagen podemos ver la máquina con un bajo uso de CPU y CPUmaxer mostrando 0 hilos de ejecución.
Por cierto, aunque el Task Manager de Windows nos dice que tenemos 4 CPUs, CPUmaxer nos dice que en realidad hay una CPU física (1 socket), con dos núcleos (2 cores) y que cada core debe de tener dos CPUs lógicas (hyperthreading habilitado), porque al final el número de CPU lógicas es de 4 para el sistema operativo.

Si ahora arracamos la aplicación con dos hilos, vemos como rápidamente el uso de CPU subre desde un 29% a un 73%

Y si ya nos atrevemos con 4 hilos, tantos como CPUs lógicas hay en el sistema, veremos como éste se satura completamente al 100% de utilización:


Para volver al estado normal basta bajar el número de hilos de ejecución a cero o símplemente cerrar la aplicación.
Una recomendación para terminar: aunque se pueden aplicar hasta 39 hilos de ejecución, es mejor no pasar del número de CPUs que tenga nuestro sistema. Por encima de este límite el sistema no se colgará, pero se volverá muy lento y os costará un poco bajar en número de hilos de vuelta a cero.

Postdata: lo máximo que he podido probar la herramienta es en un sistema de 8 CPUs, pero me encantaría que alguien me enviara un screenshot de un sistema de 39 CPUs totalmente saturado :)


domingo, 5 de agosto de 2012

Pon a tope tu CPU con CPUmaxer

Os quiero presentar una aplicación que desarrollé hace un tiempo pero que creo que sigue siendo útil: CPUmaxer. Sirve sencíllamente para poner a tope la CPU de las máquinas Windows, tanto físicas como virtuales. Basta seleccionar el número de CPUs de la máquina y lanzarla a correr ¡Puede poner a tope hasta 39 CPUs!!
Pero ¿Por qué hacer esto? El interés principal de esta herramienta es para hacer pruebas de monitorización en los servidores empresariales y verificar los sistemas de alerta. También la herramienta muestra información que puede ser de utilidad sobre la CPU del sistema: marca y modelo, número de sockets, número de cores, etc. Y finalmente, por que no, la herramienta también sirve para ver como se ponen a tope todas las CPUs de nuestro flamante nuevo portátil.


Por último decir que la herramienta es open source y está disponible bajo licencia de MIT en Codeplex: http://cpumaxer.codeplex.com/
En un próximo post mostraré algún detalle más sobre el uso de CPUmaxer en la práctica.

domingo, 29 de julio de 2012

Niveles de integridad de ficheros en Windows 7 y Windows 2008

Si no hemos deshabilitado la seguridad de UAC (Siglas en inglés de Control de cuentas de usuario) en Windows, cosa que realmente no recomiendo, al editar determinados ficheros (por ejemplo el etc\hosts que comentaba en este otro post) recibiremos un toque de atención de Windows pidiendonos permiso de administrador para hacer los cambios, aunque nuestra cuenta esté dentro del grupo de administradores de la máquina.
Forzar este mismo comportamiento puede que nos sea útil en determinados casos como una aplicación que hemos hecho nosotros mismos y en la que no queremos que los cambios en el fichero de configuración, por ej. miaplic.xml, se hagan a la ligera, incluso por administradores.
Para ello abrimos una ventana de comando (cmd.exe) como administradores, botón derecho sobre cmd.exe en la ventana de búsqueda -> Ejecutar como administrador.
A continuación navegamos hasta el directorio de la aplicación y ejecutamos el siguiente comando:
      icacls miaplic.xml /setintegritylevel H


Si el comando ha tenido éxito, la próxima vez que editemos el fichero no se podrá hacer desde un Bloc de Notas convencional sino que habrá que
ejecutarlo con elevación de privilegios (ejecutado como administrador). Tampoco desde la línea de comando, si no es elevada, no podremos manipular o borrar el fichero:


Se pueden ver algunos trucos para ejecutar tareas como administrador en este post
Como recordatorio final, observad que los niveles de integridad son como una capa de seguridad adicional a los permisos NTFS de los ficheros, proporcionando una protección extra.

sábado, 21 de julio de 2012

Como editar el fichero hosts en Windows 7 o Windows Server 2008

El fichero hosts, normalmente situado en C:\Windows\system32\drivers\etc\hosts, es un sencillo fichero de texto plano no muy conocido pero muy útil cuando no tenemos un DNS a mano o cuando queremos 'engañar' al DNS para hacer pruebas. Precisamente por esta propiedad de poder burlar al DNS, el fichero hosts ha sido el objetivo de los creadores de malware y está especialmente protegido en Windows desde Vista en adelante (Windows 7, Windows 2008, Windows 8). Si lo intentamos editar con el Bloc de Notas el sistema de integridad de Windows no nos dejará guardar los cambios y tendremos que abrir otro Notepad como administradores (hacer click con el botón derecho sobre Notepad.exe o Bloc de Notas en el cuadro de búsqueda y seleccionar Ejecutar como Administrador) para poder salvar.


 Si editamos el fichero hosts con frecuencia (para probar sitios web en una intranet, por ejemplo) podemos crear un acceso directo que nos permita editarlo cómodamente. Clickamos con el botón derecho sobre el escritorio y seleccionamos Nuevo -> Acceso directo. Y en las propiedades del elemento a acceder copiamos lo siguiente:
C:\Windows\notepad.exe C:\Windows\system32\drivers\etc\hosts 



Terminamos la creación del acceso directo y ya sólo nos falta configurarlo para que nos pida elevación de privilegios al ejecutarlo y que no nos pase lo que comentábamos al principio.