martes, 22 de abril de 2008

Apuntes de clase 22/04/08

Comenzamos la clase comentando los fallos de la practica 4, que por lo general tiene un nivel mas bajo que las prácticas anteriores. Algunos de los fallos mas comunes son:

- Lo del nombre y el e-mail era solo para la primera práctica

- Demasiados pantallazos y nada de análisis: hay que hacer medias y representarlas

- Algunos miden cantidades irrelevantes: bytes/s (en un programa de red), paginación (en un programa que lee/escribe en disco), swap (en un sistema sin problemas debería ser 0)

- No se pone el objetivo, o se hace algo diferente a lo que se dice en el objetivo

- Se aplican cargas de trabajo que hacen bastante uso de la tarjeta gráfica pero sin embargo no se monitoriza

- Faltas de ortografía

- Errores de representación de las gráficas

*Como capturar gráficas (excel u openoffice): En vez de capturar pantalla, se le da a exportar y se selecciona la carpeta donde exportar el gráfico. Lo exportamos como html y ya tenemos el gráfico. También es posible con openoffice guardar el archivo como ods y descomprimirlo después (Yo directamente le he dado a ctrl+c con excel y me ha funcionado...)

Vemos como ejemplo de práctica la de nuestro compañero tupakamaru. El objetivo esta bien definido. La gráfica tiene varios defectos, como que por ejemplo no compara los resultados magnitud a magnitud sino que tiene barra con magnitudes diferentes juntas. Otro fallo es que en el eje x no indica cual es el sistema 1 y el sistema 2. Con estas gráficas no podemos detectar con certeza si el sistema falla o no, sobre todo con el uso del HD, ya que esa magnitud medida es algo ambigua.

Vemos ahora un ejercicio de autoevaluacion del blog aullidosdigitales.

Ejercicio de autoevaluación 3.1

Seguimos viendo algunos ejercicios del compañero Alejandro Peña Lorenzo, aunque no los comentamos.

Seguimos ahora con el temario...

3.4 Mejora de prestaciones de la CPU

Para mejorar la CPU, hay que seguir los siguientes pasos:

- Cambiar el setup de la BIOS de forma que la CPU vaya más rápida, en un pequeño incremento.

- Cambiar en el setup también la velocidad del bus del sistema, para que se empareje con la velocidad de la CPU. Ambas velocidades son submúltiplos de la velocidad del reloj del sistema, que, en general, es el doble de la velocidad del procesador.

- Si es posible, cambiar el voltaje al que funciona la CPU, en alguna pequeña cantidad, tratando de disminuirlo, siempre dentro de los límites de tolerancia de los componentes. Algunas placas madre, tales como las Abit (http://www.abit.com.tw) lo permiten.

- También es conveniente añadir un ventilador para el procesador solo (o cambiar el que hay por otro más potente), para evitar que se caliente demasiado.

- Si no se queda colgado, probar algún benchmark sobre el nuevo sistema, a ver qué incremento de velocidad se ha conseguido.

- Volver al principio, a intentar conseguir velocidades superiores.

En el caso de los sistemas multiprocesador, los dos procesadores deben acceder a memoria, para lo que tienen lo que se conoce como mutexes, que son objetos de exclusion mutua. Es decir, si un procesador esta trabajando en una zona de la memoria, este elemento impide la entrada del otro procesador a esa zona.Si uno de los procesadores no da el rendimiento esperado, puede que sea culpa de los mutexes. Para linux se puede utilizar un monitor que se conoce como mpstat, disponible dentro del paquete systat.

3.5 Sintonización de la memoria

Las dos tareas principales de la memoria son la paginacion y el intercambio(swapping). Para ver como funciona swap, el profesor ejecuta un programa. Una vez que se llena la memoria física, se empieza a utilizar la memoria swap almacenando los programas que no tienen espacio hasta que haya mas memoria física libre.Para evitar problemas con la memoria física podemos hacer lo siguiente:

- Limitar el tamaño de los procesos

- Usar librerías compartidas: Las librerias estáticas son las que se crean cuando se compila un programa, mientras las librerias dinámicas son aquellas que son compartidas por varios programas

- Modificar el algoritmo de paginación (aunque es bastante arriesgado). El parámetro mas relevante swappiness, que establece la tendencia del kernel a la hora de hacer swapping (cuanto mas alto este el valor, mas pronto realizará swapping)

- Cambiar el tamaño de la partición de swap

- Usar herramientas de gestión de prioridad por proceso

Algunos enlaces interesantes sobre el tema:

Wiki bandaancha.st

Guia de tuning para linux

Red Paper sobre el mismo tema (pdf)

3.6 Mejora de prestaciones en entrada/salida

Es bastante complicado mejorar las prestaciones de E/S ya que en estas operaciones intervienen multitud de dispositivos.Centrandonos en los discos duros, la eficiencia de estos sistemas estará en tres factores diferentes: throughput por proceso, throughput total, y eficiencia en el almacenamiento.

Por hoy ya dejamos el temario,y como siempre para finalizar...

Video del dia: comparativa DD/SSD

jueves, 17 de abril de 2008

¡Mamá salgo en la tele!

Ayer salió en el programa Camara Abierta 2.0 el reportaje que nos hicieron sobre el método con el que damos clase en la asignatura.No sé si el método sera tan innovador como dicen (supongo que sí) pero lo que si ha quedado patente es mi innata naturalidad con la camara, donde interpreto el papel de alumno de forma magistral (un Oscar ya, por favor). También sale este blog asi como el que no quiere la cosa, o mas bien sale mi tortuga ninja.

Para descargaros el video, un amigo mio de teleco lo ha subido a internet (por cierto él sale en el video, es uno de los que hacen el vago al final)

link

martes, 15 de abril de 2008

Apuntes de clase 15/04/08

Empezamos la clase recordando lo visto en la clase anterior gracias al resumen de un compañero (aqui el resumen) y vemos un interesante articulo sobre gráficas manipuladas tomando como ejemplo el ultimo anuncio de movistar.

Seguimos viendo un ejercicio de autoevaluacion del tema 3 (bloque 3.1).Uno de los ejemplos que ha puesto no funciona con kubuntu, parece que solo funciona con gentoo. El resto de ejercicios que ha hecho el compañero estan bien.

Seguimos con el Tema 3 por donde lo dejamos el otro dia...

3.2 Gestión de carga y prestaciones en el sistema operativo

Un administrador tiene que mantener a sus usuarios felices y satisfacer sus peticiones. Por tanto la gestión debe plantearla de la siguiente forma:

- Planificación y definición de la carga del sistema: Es conveniente acordar de antemano qué se consideran unas prestaciones aceptables. Una vez llevada a cabo esta planificación, hay que comprobar si, con el sistema tal como está, se puede llevar a cabo ese acuerdo y si en el futuro previsible, con los usuarios y la carga pico prevista, se va a poder cumplir.

Ejemplo: Adquisición de un servidor web

Basándose en el número de peticiones por minuto y la hora a las que se van a recibir, habrá que estimar el tamaño de la memoria necesaria, el ancho de banda necesario en función de las peticiones que se van a servir y el tamaño de disco duro. Además, el administrador deberá comprobar la evolución del número de peticiones y prever los picos para, si es necesario, solicitar más ancho de banda (bandwidth-on-demand; algunos servidores permiten solicitar en un momento determinado más ancho de banda que el que se tiene asignado; algunos te cobrarán por ancho de banda adicional con sumido, y la mayoría, directamente te cortan la conexión con un error 509) o una ampliación del sistema; o bien cambiar la configuración para que soporte el pico de demanda.


A raiz del ejemplo del servicio web, vemos los tipos de hosting que puede proporcionar una empresa que presta ese servicio, y bajo que condiciones se contrata el servicio (espacio disponible, ancho de banda,numero de bases de datos o de cuentas de correo...).

Un truco para no consumir tanto ancho de banda es utilizar el modulo de apache mod_rewrite para que si se procede de una pagina externa al sitio (google por ejemplo) se redireccione a otro sitio.

- Configurar las herramientas de monitorización del sistema: Como por ejemplo para controlar el ancho de banda o el nivel de paginas servidas por un servidor para que alerte cuando se llegue a un nivel no deseable. Un ejemplo de herramienta de este tipo es Logwatch. Tambien es posible utilizar scripts del sistema (de hecho el lenguaje Perl se creó con este fin). Otro lenguaje de este tipo es AWK

- Tratar de resolver problemas mediante políticas de gestión del sistema: Limitación de uso interactivo, limitación de uso de disco mediante cuotas...

- Ampliar el sistema: Si todo lo anterior falla (y dentro de las posibilidades que haya).

3.3 Políticas de gestión del sistema

Tanto el usuario como el administrador pueden tomar medidas para mejorar el sistema. Algunas medidas que pueden tomar los usuarios son:

- Usar comandos internos de shell en vez de los de Unix (por ejemplo utilizar el comando echo en vez de ls, echo $PWD y no pwd)

- Evitar los caminos largos, que hacen que el ordenador tenga que leer muchos directorios cada vez que se ejecuta un comando.

- Evitar los directorios con muchos ficheros.

- Usar las versiones mas eficientes de cada tipo de programa.

- Eliminar daemons inútiles para la máquina.

- Limitar tiempos de ejecución interactivos, y renicear procesos a discreción.Se puede limitar el tiempo de ejecución con el comando limit (o ulimit, que es el comando interno del bash).

- Modificar los parámetros del sistema operativo.Para eso hace falta conocer la estructura del kernel.

Terminamos por hoy el temario y pasamos a explicar la Practica 5.

Practica 5 - Mejora de las prestaciones de un Sistema


Esta practica es importante ya que constituye el primer "ensayo" para el trabajo final. En esta practica hay que definir un objetivo (ejemplo: quiero que compilar el programa tarde un 5% menos). Por tanto hay que plantearse el sistema antes y despues del cambio. Si decidimos hacerlo con un servidor web es útil el programa Apache benchmark.

Los cambios que realicemos pueden ser tanto software como hardware. Es importante tener en cuenta que la mejora debe realizarse sin tener en cuenta la carga del sistema para medir las prestaciones.

Plantilla de la practica

Fecha de entrega: 7 de Mayo.


Acabamos como siempre con el video del dia: Overclocking extremo.

martes, 8 de abril de 2008

Apuntes de clase 8/04/08

El profesor empieza diciendo que se reabre el plazo de entrega de las practicas de la 1 a la 3, con una puntuación maxima sobre 8.

Comentarios segunda practica

Posteriormente, pasa a comentar algunos de los errores mas comunes que se ha encontrado en la correción de la segunda práctica. Estos son los siguientes:

- Faltas de ortografía

- Errores al incluir imágenes/enlaces

- Confusión de benchmark con monitor de prestaciones

- Medición de cantidades irrelevantes

Las notas son por lo general bastante buenas, ya que hay pocos suspensos.Los monitores mas utilizados son los siguientes:

- Perfmon

- Sysinternals

- CS Fire Monitor

- System Explorer

Comentarios tercera practica

En primer lugar vemos el ejemplo de un compañero.

Bastante gente ha elegido un programa que realiza la sucesión de Fibonacci hasta un limite n, ya que era un programa que se utilizo en otra asignatura del primer cuatrimestre(TA).

El ejemplo esta bastante bien, ya que realiza un análisis bastante completo del programa y se nota que lo ha analizado de forma correcta.

Los problemas que se han encontrado en esta práctica son los siguientes:

- Uso de programas "de broma" (que no hacen absolutamente nada util)

- No incluir el tiempo total del programa

- Mejoras que cambian el programa totalmente (en vez de que haga lo mismo de forma optimizada, hace otra cosa diferente que resulta mas rápida)

- El nunca suficientemente bien ponderado uso de las referencias constantes: Hay que tener en cuenta cuando se devuelve por valor y por referencia, ya que las llamadas por valor utilizan en constructor de copia de forma que eso consume parte del tiempo de ejecución

- Copias: Uno de los alumnos parece que se ha copiado, y la primera vez que se detecta la copia es un 0 y la segunda es un suspenso.

Un compañero habla de un programa llamado kcachegrind, que se encarga de realizar un analisis con programas que estan en ejecucíon puesto que detecta las llamadas a caché. Vemos unos cuantos pantallazos del programa, que parece bastante completo y con una interfaz muy intuitiva.

**NOTA: La fecha de entrega de la practica 4 es el 21 de abril.**

Comparativa Windows Vista vs. XP

En esta web aparece una comparativa entre las 2 versiones mas recientes de Windows, y tiene como conclusión que XP es mas rápido que Vista. El profesor señala un error de esta comparación, pues NUNCA se debe utilizar el uso de un sistema como un parámetro para la comparación entre ellos. Es mas conveniente hacer una medición de prestaciones que ponga de manifiesto los defectos (o las virtudes) de uno frente al otro. El arranque y el apagado es mucho mas lento en Vista, pero la copia de archivos es mas rapida que en Windows XP.

Ejercicio Autoevaluación Tema 2-Bloque 3

Antes de seguir con el temario, vemos un par de ejercicios de autoevaluación del tema 2. Estan disponibles aqui.

Parece que hay un fallo, ya que las barras se utilizan para categorias,y las lineas se utilizan para funciones o bien variables que necesitan una progresión.

Ahora si seguimos con el temario...

Tema 3 - Solución de problemas en un sistema informático

La idea de este tema es dar una serie de reglas que permitan mejorar las prestaciones de un sistema informático. Debemos ponernos por tanto en la situación del Administrador de Sistemas, es decir, tenemos un sistema al que accede mucha gente y queremos que funcione bien.Las politicas que se suelen seguir son las siguientes:

- Ajuste de parámetros del sistema operativo: Hay algunos parámetros que el superusuario, o administrador del sistema, puede modificar, usando programas suministrados con el sistema operativo o recompilando alguna parte.

- Ajuste de parámetros del hardware: Examinar la configuración hardware del sistema y ver qué parámetros se pueden alterar, tales como por ejemplo la activación de cachés hardware, el reloj del sistema, frecuencia del bus. Algunos de estos cambios pueden ser peligrosos.

- Equilibrado de cargas: Repartir las cargas a las que son sometidos los diversos dispositivos.

- Ampliación: Cuando todo lo anterior falla, y si hay dinero, tiempo y ganas, se pueden comprar dispositivos nuevos, o cambiar los dispositivos por otro más rápido.

- Cambio del software: Puede ser una actualización de una parte del sistema o cambiar a una versión superior, o cambiar el software que se está usando por otra versión u otra marca. Es peligroso a veces.

A la hora de mejorar las prestaciones hay que tener en cuenta los siguientes principios:

- Conocer y comprender tu entorno

- Hay que buscar el equilibrio: Cuando se quiere mejorar algo, forzosamente se va a empeorar otra cosa.

- Throughput contra latencia: Cantidad de cosas que se hace por unidad de tiempo contra el tiempo que se tarda en realizar una cosa. La primera métrica es del tipo mayor es mejor y la segunda del tipo menor es mejor.

- No sobreutilizar un recurso: La utilización de recursos es del tipo nominal es mejor, al igual que el disco duro por ejemplo.

- Diseñar las pruebas con cuidado: No hay que actuar cambiando algo sin saber las consecuencias que puede traer.

Por ultimo comentamos en clase algunos de los ejercicios de autoevaluación. que vienen al principio del Tema 3.

Ahora para finalizar vemos el video del dia

Practica 3: Uso de un profiler

A quien pueda interesar... aqui

martes, 1 de abril de 2008

Practica 2: Monitorizacion de un sistema

He subido aqui la practica 2 que he hecho por si alguien quiere verla (aunque no sea gran cosa):

link

Apuntes de clase 1/04/08

En primer lugar, y como anecdota, decir que gente del programa Camara Abierta 2.0 ha estado grabandonos para ver el particular metodo que tiene el profesor de dar clase.

Vemos para empezar un programa en pearl hecho por el profesor. Con esto nos explica un poco que debemos hacer en la practica 3, y la optimizacion que debemos de hacer de un programa. Debemos tomar un programa original y hacer uso de un profile (del lenguaje elegido) con el.

Hacemos un repaso de la clase anterior, y el profesor explica mas o menos en que consistira la clase de hoy.

Repasamos una de las practicas (la 2ª) subida por un compañero. La practica completa esta disponible aqui:

En primer lugar explica las caracteristicas de los equipos sobre los que hace la practica.Enseña como es el programa que ha utilizado, y la ventana del programa con la configuracion de la monitorizacion que se desea hacer. Podemos ver tambien una lista de los procesos activos en el ordenador. Con este programa es posible tambien añadir un ordenador externo al equipo donde esta instalado el programa. Vemos pantallazos con el programa funcionando, y a partir de ahi realiza varias pruebas para comprobar el funcionamiento del programa.Podemos comprobar tambien la forma en la que el programa realiza las graficas. Como observacion personal, la practica de mi compañero esta bastante completa ya que tiene multitud de graficas en la que se muestra de forma completa el funcionamiento de su sistema.

Ahora pasamos a ver el siguiente ejercicio de autoevaluacion sobre metricas. Vemos los fallos que tiene el ejercicio, ya que por ejemplo alguna de las metricas que ha elegido el compañero no es correcta (no podemos fiarnos con total seguridad de las especificaciones que nos da el fabricante). Como ejemplo de metricas correctas que ha elegido el compañero, para un servidor web ha elegido la memoria ram, la velocidad de proceso o el consumo electrico.

Seguimos con el temario...

1.5.4 Programas de monitorización de la actividad del sistema

No todos los sistemas operativos estan preparados para monitorizar la actividad. Algunos deben ejecutar un daemon que realice esa actividad. Ejecutamos un comando sobre linux para ver las estadisticas de discos (con la orden diskstats) gracias a las estadisticas del kernel.

Con la orden less -alt podemos ver el tamaño de los directorios, ademas de los permisos que tiene cada uno de ellos.

Vamos a ver otro monitor que es vmstat (un monitor de lineas de comando) que aunque en apariencia sea "cutre" la informacion que ofrece, en realidad ofrece bastante informacion sobre los procesos. Comenta lo que significa cada columna de los datos ofrecidos, sobre memoria,swap,entrada/salida, el sistema y la cpu.Ahora ejecutamos un programa y volvemos a ver vmstat para ver que informacion nos ofrece ahora acerca de los procesos. Ahora probamos a ver como sube el numero de procesos ejecutando ese programa dos veces a la vez. Para ver la carga del sistema podemos tambien utilizar top o uptime.

Ante la pregunta de un compañero, el profesor explica que la frecuencia de un procesador no es una medida util como resultado ya que en realidad la frecuencia es un factor que va a afectar al resultado,es decir, algo que sirve para tenerlo en cuenta a la hora de medir las prestaciones, pero no una prestacion en si misma.

Hacemos una paradinha...

...y retomamos la clase con el Tema 2.

2. Representación gráfica aplicada a la evaluación de prestaciones

2.1 Presentación de los resultados

Una de las cosas que mas se utilizan son las graficas de Gantt, en el que se muestran diferentes tareas simultaneas con su hora de inicio y de fin.Aprovechamos para ver el video del dia: Graficas de Gantt con excel



A partir de las graficas de Gantt se pueden hacer algo conocido como analisis de Pert con el objetivo de calcular caminos críticos.

Otro metodo son los graficos de Kiviat. La idea consiste en colocar las magnitudes en un circulo, y cada una de ellas se coloca en un radio del circulo. Se utilizan metricas del tipo mayor es mejor y menor es mejor. Cuando aparece lo conocido como "estrella de Kiviat" es que el sistema esta funcionando de forma correcta.

Al gráfico de Kiviat se le puede añadir una tercera dimensión (en base a la evolucion temporal de las magnitudes, lo conocido como tubo de Kiviat.

Estos dos graficos son especializados para la representacion de prestaciones, pero en realidad su uso hoy en dia es bastante marginal.

2.2 Reglas para representaciones gráficas

Para representar las graficas, debemos tener en cuenta los siguientes aspectos

- Minimización del esfuerzo por parte del lector:Representar la maxima informacion posible con el minimo esfuerzo.

- Maximizar información: De forma que esta sea autocontenida.

- Minimizar la tinta: Tambien es interesante no poner cosas innecesarias o de relleno.

- Usar prácticas comúnmente aceptadas: el eje x para la variable independiente y el y para la dependiente, tomar el(0,0) en la esquina inferior izquierda por ejemplo.

- Evitar la ambigüedad:hacerlo fácil de leer.

- No poner demasiada información ni demasiada poca: Por ejemplo en el caso de representar cosas con diferentes escalas en una sola grafica seria poner demasiada informacion.

2.3 Errores comunes en la representación gráfica de resultados

- Presentar demasiadas alternativas en un solo gráfico: Cada tipo de grafica tiene un numero "maximo" de componentes para que la información sea legible y entendible.

- Presentar muchas variables y (abscisas) en un solo gráfico: No debe haber mas de 4 o 5 variables.

- Usar símbolos en lugar de texto

- Seleccionar mal las escalas: Es mejor hacerlo a mano, por ejemplo, cuando las variables tienen unos valores transitorios iniciales pequeños.

- Usar un gráfico de líneas en vez de uno de barras: En variables categóricas, se debe de usar un gráfico de barras. (por ejemplo, para el uso de la CPU en 12 meses seria mejor lineas y para el numero de E/S en 3 discos duros A,B o C seria mejor barras).

A veces para "mentir" con los datos se suelen hacer estas graficas a proposito:

- Usar orígenes no nulos para hacer énfasis de la diferencia: Como por ejemplo en la tipica grafica de la inflacion que usan los politicos.

- Trazar cantidades aleatorias sin los intervalos de confianza: La media transmite poca información si no se acompaña de la desviación típica.

- Usar pictogramas escalados por altitud: Siempre hay que tener en cuenta que es la altura, y no la superficie, lo que representa la cantidad.

- Usar tamaños de célula no adecuados en histogramas, y usar escalas partidas en gráficos de columnas

Por hoy dejamos ya el temario, y pasamos a explicar la cuarta practica:

Practica 4 - Uso de programas de monitorizacion del sistema

Es bastante parecida a la practica 2, pero sometiendo al sistema a distintas cargas. Debemos coger el sistema, arrancarlo e iniciar los monitores. Lo dejamos funcionando un rato, y una vez hecho seleccionamos una carga para el sistema y con los mismo monitores que hemos utilizado anteriormente sacamos la informacion en un fichero. De esta forma comprobamos la diferencia entre uno y otro. Con la informacion obtenida, hacemos una representacion.