lunes, 17 de marzo de 2008

CLASE 11-3-2008

La clase comienza comentando la práctica 1.

Actualidad: Vemos una noticia en la web sobre los sistemas multicore, Nvidia ha creado una gráfica con 128 cores.

¿Cómo se gestiona una gráfica con 128 cores, a 1´35 Hz? Cada uno procesa 3 o 4 bit, de forma simétrica. Esto sirve para procesar texturas…

El número de cores se doblará cada 18 meses, por lo que los cores se deberían dedicar a temas específicos, para aprovechar su capacidad (E/S,..)


A continuación comentan varios ejercicios de autoevaluación.

Seguimos con el temario.


1.5 Medición de la carga de un sistema

Carga del sistema: número medio de procesos que están esperando para ejecutarse.

Para medir la utilización de sistemas informáticos se usan los denominados monitores, que son herramientas de medición que permiten seguir el comportamiento de los principales elementos de un sistema informático cuando éste se halla sometido a una carga de trabajo determinada.

Comprobamos la carga del sistema con el comando top, y matamos al proceso que consume más CPU (sudo kill ), y vemos como baja la carga.

En linux para ver las estructuras de datos se hace con filesystems virtual llamado /proc. Todos los procesos de root aparecen como un fichero (ls –alt).

Los maps son ficheros de los mapas de memoria (cat maps).


1.5.1 Profilers

Los profilers son trozos de código linkados a un programa, y que son llamados cada cierto tiempo para medir el uso de esa parte del programa. Hay dos tipos: por muestreo y por poling.

Estos nos ayudan a detectar el código que el programa ejecuta más veces o tarda más (subrutinas,..). Una vez detectado, modificamos el código (por ejemplo cambiando por algoritmos más eficientes como Quicksort, o actualizando el valor de las variables antes de los bucles en lugar de dentro,..). Con está práctica el programa será mucho más rápido.

Otro método para disminuir el tiempo de ejecución, aunque poco aconsejado es desenrollar un bucle (copiar las veces que se ejecuta el bucle seguidas).
Para compilarlo se pone la opción -pg en la línea de comandos (
bash$ gcc -pg mipogama.cpp -o mipogama).

Gprof-> Segundos que tarda cada subrutina, número de llamadas (no es igual gastar mucho tiempo en realizar muchas llamadas que en pocas), número de milisegundos por llamada.

Ejemplo. Ejecutamos un programa y vemos que el 2% del tiempo clona vectores, un 14% del tiempo lo consume en comprobar el número y la corrección de los parámetros que le pasamos…, por lo que estas serían las partes del programa que deberíamos mejorar.

Existen profiler en todos los lenguajes de programación (Java, php, C...)

1.5.2 Métricas de la carga de trabajo más comunes.

Se usan para ver lo bien/rápido/lento que va nuestro sistema.

  • Throughpout: número de peticiones procesadas en la unidad de tiempo, es del tipo mas es mejor (por ejemplo, en una impresora el número de páginas que imprime por unidad de tiempo).
  • Tiempo de respuesta: tiempo que se tarda en procesar una petición, por tanto opuesto del throughput.
  • Eficiencia: diferencia entre throughput máximo y el throughput efectivo (por ejemplo, en ADSL es el número de bytes reales recibidos por unidad de tiempo).
  • Ancho de banda: bits por segundo que es capaz de procesar el sistema, no confundir con baudios que son cambios de estados en la línea en la unidad de tiempo.
  • Porcentaje de utilización de diversos componentes y solapamiento entre los mismos. A mayor solapamiento mayor eficiencia.
  • Overhead: tiempo usado en tareas que no son directamente del usuario.
  • Factores relacionados con la multiprogramación: como el tiempo usado en cambiar de contexto.
  • Factores relacionados con la memoria virtual: fallos de página, swapping.
  • Factores relacionados con la memoria caché: número de veces que se vacían los buffer TLB.
  • Otros subsistemas: red, gráficos...



1.5.3 A qué se dedica el tiempo

Antes de intentar mejorar las prestaciones de cualquier sistema, es decir, hacerlo más rápido (al menos en algún aspecto), hay que saber en qué invierte el tiempo el sistema.
Para medir el tiempo que tarda en ejecutarse un programa, una de las medidas básicas de las prestaciones de cualquier sistema, se puede ejecutar una utilidad tal como /bin/time, /usr/bin/time o timex, que son el equivalente en las dos versiones del sistema operativo; y que son diferentes a una función del shell, también llamada time.

  • Tiempo de usuario: tiempo que se tarda en ejecutar el código del usuario.
  • Tiempo del sistema: tiempo que se tarda en hacer las llamadas, funciones de kernel...
  • Tiempo de Entrada/Salida: tiempo que se pasa esperando a que algo suceda (que el usuario pulse el ratón, introduzca datos...)


Explicamos la práctica 3, uso de un profiler. En ella hay que interpretar lo que dice el profiler (la mayor parte del tiempo se gasta en tal subrutina...).

Para nota, mejorar el programa y poner los tiempos de ambos o indicar posibles mejoras. No confundir el tiempo de llamada con el de ejecución.


También concretamos las fechas de entrega de las prácticas 2 y 3:

Practica 2-> 31 Marzo.

Práctica 3-> 6 Abril


Para finalizar vemos el video del día: profiling de una aplicación web con C++.

lunes, 10 de marzo de 2008

EJERCICIOS AUTOEVALUACIÓN

1 Ejercicios de autoevaluación

  1. Mencionar sistemas operativos que no estén entre los anteriores, y el nicho de mercado que suelen cubrir.

BeOS es un sistema operativo para PC desarrollado por Be Incorporated en 1990, orientado principalmente a proveer alto rendimiento en aplicaciones multimedia.

Symbian es el sistema operativo para móviles más extendido. Fue diseñado pensando en dispositivos móviles, lo que hace que sea muy robusto (es raro que se 'cuelgue') y muy espartano con sus necesidades: ahorra siempre que puede espacio en memoria y apaga el procesador cuando no se utiliza, aumentando la vida de la batería.

Windows Mobile, antes conocido como Windows CE o Pocket PC, tiene una larga historia como segundón en el campo de los PDA u ordenadores de bolsillo, sin embargo hace pocos meses superó por primera vez al hasta entonces líder, Palm OS.

2. Ejercicios de autoevaluación

1. Indicar qué tipo de medidas sueles tomar para medir las prestaciones de un ordenador.

Uso un programa específico para ello llamado Everest que es un sistema de diagnóstico que incluye testeos de memoria, monitorización del hardware e información de hardware.

2. Indicar en qué casos de los que te encuentras en tu trabajo (u otro quehacer) diario necesitarás medir las prestaciones del ordenador

Normalmente no lo necesito.

3. Indicar en qué casos percibes una falta de prestaciones de los ordenadores que sueles manejar.

Cuando al usar una aplicación habitual va más lenta de lo normal y tarda en responder, llegando incluso a colgarse el sistema.

También cuando se produce un excesivo tiempo de arranque, o en el acceso a carpetas, archivos, …

4. Mirar qué servicios hay activos en nuestro ordenador personal y en algún otro ordenador al que tengamos acceso. ¿Qué usas para saber los servicios que hay activos? ¿Sabes lo que hacen? ¿Si suprimes alguno de ellos, qué pasa?

Descripción de algunos de los servicios:

Smss.exe es el Subsistema Administrador de Sesiones (Session Manager Subsystem) y es un proceso esencial para el sistema.

Csrss.exe: Archivo y proceso de los sistemas operativos Windows. Forma parte de los sistemas Windows NT, 2000, XP y 2003. CSRSS significa Client Server Runtime SubSystem. El proceso se encarga de controlar las API Win32.
En general, se trata de un proceso normal en algunas versiones de Windows, de todas maneras, muchos programas malignos pueden emplear el mismo nombre (o un nombre similar) para camuflarse y pasar desapercibidos.

Lsass.exe: Archivo y proceso fundamental de los sistemas operativos Windows. Se encarga de los mecanismos de seguridad local y las políticas de autentificación de los usuarios del sistema.
Los virus y programas malignos suelen usar nombres parecidos a este para pasar desapercibidos (por ejemplo, lass.exe). Se debe verificar que la ruta del archivo sea C:Windowssystem32.

Svchost.exe, es el nombre de un proceso en los sistemas operativos Windows más actuales. Su nombre es "Microsoft Service Host Process".
Solamente está presente en Windows 2000 y XP.
El proceso se ejecuta al iniciar el sistema, y chequea parte de los servicios del registro para hacer la lista de servicios que deben abrirse. Por lo general, múltiples instancias del proceso Svchost.exe son ejecutadas al mismo tiempo. Cada una de estas instancias puede contener un grupo de listas de servicios.
Este agrupamiento de servicios permite un mejor control y fácil depuración, pero también causa algunas dificultades a los usuarios. Esto se debe a que el mismo nombre de archivo es utilizado por virus, espías, caballos de troya y otros malwares para ocultar su actividad.

Mmc.exe: Archivo y proceso de Windows 2000, XP y 2003, que administra las consolas de servicios. Es un proceso esencial cuando se emplean algunas herramientas del sistema.

Alg.exe: Archivo y proceso que forma parte del sistema operativo Windows. Forma parte del servicio "Application Layer Gateway" de Windows XP. ALG.exe forma parte del ICS (Internet Connection Sharing) y ICF (Internet Connection Firewall) de Windows.
Se trata de una tarea del sistema de Microsoft y, en general, no representa ningún riesgo para el sistema y no debe ser desactivado. De todas maneras, muchos softwares malignos pueden usar el mismo nombre o similar para aparentar ser procesos no peligrosos.

System: Proceso presente en los Windows NT4, 2000 y XP que almacena la configuración del hardware y el software del sistema.
Es un proceso esencial en el sistema y no debería ser terminado.

Si suprimimos la mayoría de los anteriores no pasará nada, sólo se cerraría el programa asociado, otros volverían a ejecutarse automáticamente si los suprimimos, pero al suprimir otros como System podrían provocar cuelgues, o forzar un reinicio del sistema.

viernes, 7 de marzo de 2008

CLASE 4-3-2008

La clase se dividió en dos partes:

1ª parte: ejercicios de autoevaluación de los blogs de los compañeros.

En el primero se discute cuantos frames por segundo (fps) son necesarios para jugar a un juego, si se nota la diferencia de jugar a un juego a 40 fps o jugar a uno a 25.

En el segundo nos encontramos con "Fast path", que es un servicio que te dan las compañías del ADSL que hace que disminuya la latencia. La , latencia que es la suma de retardos temporales dentro de la red, es un parámetro importante al comparar proveedores de ADSL.

Vemos haciendo ping desde el servidor de la UGR y desde otro servidor externo que la latencia de la UGR es muy alta.

2ª parte: continuación del temario

1.3 Selección de las métricas de prestaciones:

Hay que decidir qué conjunto de criterios para la evaluación de prestaciones o métricas van a usarse. Hay tres respuestas posibles:

1-La petición se ha realizado correctamente. Por tanto no se han producido problemas

2-La petición se ha realizado incorrectamente. Esto ocurre porque los mensajes llegan desordenados

3-La petición no se ha podido realizar. Cuando por ejemplo hago un ping a un servidor y no se recibe

Si se realiza correctamente la petición las prestaciones se miden por:

1 - Tasa de responsividad: tiempo de respuesta.

2 - Tasa de productividad: número de respuestas procesadas por segundo

3 - Tasa de utilización: recursos utilizados por unidad de tiempo.

Ejemplo: fonera (tiene 1,54 de tasa de utilización)


La fiabilidad solo tiene una métrica que es el MTBF (tiempo medio entre fallos)
La disponibilidad, que se mide en porcentajes es el tiempo que un recurso está disponible. Esto se mide con número de 9, siendo el máximo 99.999%.
Nosotros normalmente mediremos el número de peticiones que se han realizado correctamente.

Ejemplo:

Medir prestaciones de tarjetas gráficas: por frames (intentando que no haya redundancia en las medidas). Hay que elegir medidas que definan el sistema que has medido. Por ejemplo en un hosting habrá que medir latencia, ancho de banda,...


Medir tarjetas graficas con un fin genérico: Mostar fuentes, cambiar contexto, abrir ventanas, scrolling de ventanas, dibujar objetos en 3d y girarlos, precisión en el color aunque no sabríamos el color con precisión porque interviene el monitor que recibe (en un monitor digital) directamente el RGB de los píxeles, ...


Métricas de prestaciones:

Más alto es mejor, HB (por ejemplo velocidad y ancho de banda)

Menor es mejor, LB (por ejemplo latencia, número de fallos de una página)

Nominal es mejor, NB, que tiene una variable o rango de valores fuera de los cuales está mal (por ejemplo una CPU a 0º o a 100º estaría a unas temperatura inadecuada, lo óptimo sería entre 50º-70º)

Por ejemplo, la carga de un servidor por ejemplo blogalia y obtenemos 0.99 1.11 1.17 que son unas medidas de tipo nominal es mejor.


Otro ejemplo de las métricas que utilizaremos en un compilador para medir : tamaño del ejecutable (nominal o menor es mejor), tiempo de compilación (menor es mejor), velocidad del ejecutable (menor es mejor)


1.4 Técnicas de evaluación de un sistema informático:

Lo explicamos de forma descriptiva:
Un procesador es un programa informático que se hace con un lenguaje de programación, lo ejecutas, miras los fallos, miras el pipeline, en definitiva, corregir los errores y hacerlo más eficiente; pero para ejecutar ese programa hay que hacerlo en un súper ordenador porque hay que ejecutar para un procesador de 3GHz 3000 millones de instrucciones en un segundo.


1.5 Medición de la carga de un sistema:

Carga de un sistema: lo que está haciendo un sistema. Para medirla usamos monitores. Los monitores a veces tienen un cliente y un servidor.

Profiler: Son trozos de código que se ajustan al programa que queremos medir.

Monitor en linux: ps que dice qué procesos se están ejecutando en ese momento. ps es un cliente y el kernel es el servidor, pues ps consulta estructuras del kernel.
Vmstat : nos dice cuantos programas se están ejecutando, la memoria disponible, etc.

Por último terminamos la clase con un video que muestra un ejemplo de monitorización de Windows XP .

jueves, 6 de marzo de 2008

CLASE 26-2-2008

La clase empieza comentando las distintas webs que hay disponibles para la asignatura y para qué sirven cada una:
  • Página general - Información de la asignatura con los distintos temas y enlaces
  • Lista de correo de yahoo (para inscribirse, mail a dyec2004-subscribe arroba yahoogroups.com)
  • Wiki – Contiene apuntes y entradas en le foro del profesor y de compañeros.
  • Planet – Con las direcciones de los blogs de los compañeros y actualizaciones de los mismos


Luego vemos algunos de los ejercicios de autoevaluación de años anteriores:

El primer ejercicio que vemos es el de ver pruebas que haríamos para comprobar el rendimiento de un ordenador.

El segundo
es sobre mantener el rendimiento del ordenador

Otro habla de maneras de medir prestaciones de un ordenador.El últomo es de cuándo o cómo podemos notar que el ordenador esta corriendo por debajo de sus posibilidades

A continuación pasamos a ver una de las partes más importantes de la asignatura, pues se usará para la práctica final, las Fases en la evaluacion de un sistema informatico. Hay 10 distintas:


1. Especificar los objetivos y definir el sistema: Al comparar un sistema siempre hay que hacerlo teniendo un objetivo concreto.Ejemplos:

· Comparar dos proveedores de Internet: utilizando el mismo PC, el mismo router y las mismas condiciones compararlos definiendo previamente el objetivo de la comparación que puede ser velocidad, subida, bajada, etc.

· Comparar dos tarjetas gráficas: hay que utilizar el mismo SO y los objetivos de la comparación pueden ser la velocidad de renderizado de figuras 3D, etc.

· Comparar dos procesadores: procesadores que tengan el mismo socket para pinchar en ambos. Y ejecutar un programa con cada uno una vez definidos los objetivos de la comparativa.

2. Hacer una lista de los servicios que ofrece el sistema y sus posibles resultados.

Es decir, qué hace el sistema. Tenemos que ver qué servicios ofrece, ejemplo, una gráfica, ofrece renderizado(visualizado) de 3d, aplicación de texturas, decodificación de vídeo en tiempo real, representa fuentes(hace la conversión para mostrarlas) , saca y mete datos a la memoria gráfica..


3. Seleccionar las métricas: Un servidor web por ejemplo, tiene su propio intérprete de órdenes, multihebra y multiproceso, sirve páginas web dinámicas y estáticas, accede a BD etc. por lo que cualquiera de estos servicios que ofrece pueden utilizarse para la comparativa.

Tomando como ejemplo la comparación de impresoras, las páginas por minuto, la exactitud en la representación de los colores, el consumo de tinta, la precisión (cartas de ajuste en los televisores), etc. son criterios para comparar las prestaciones.


Al comparar dos compiladores los criterios son: tiempo en generar, tamaño del programa generado, tiempo en ejecutar, etc.


4. Listar los parámetros que pueden afectar a las prestaciones. Por ejemplo, antes la conexión que tenía la ETSIIT iba por láser, con lo cual el ancho de banda es mejor, pero a ciertas horas, por contaminación ambiental (cuando todo el mundo estaba usando el coche) , pues el ancho de banda era peor. Otro ejemplo puede ser los drivers, la versión del sistema operativo…


5. Factores a estudiar: de los parámetros anteriores, algunos se variarán durante el estudio, los diferentes valores que tomarán durante el estudio se denominan niveles

6. Seleccionar las técnicas de evaluación. Hay tres grupos de técnicas de evaluación distintas, nosotros solo vamos a ver medición, las otras dos son simulación (simular el sistema) y modelización.

7. Seleccionar la carga de trabajo: la carga de trabajo es una síntesis de lo que suele hacer el ordenador normalmente. Por ejemplo al comparar dos tarjetas graficas que las vamos a utilizar para juegos pues instalaremos para la comparación diferentes demos de juegos para ver como funcionan sobre las tarjetas.


8. Diseñar los experimentos: Decir cómo y cuando vamos a hacer las mediciones y con qué ordenador estamos trabajando. Al comparar por ejemplo una impresora tendremos que indicar el estado de los cartuchos, si está recién arrancada, etc.

9. Analizar e interpretar los datos: no poner todos los datos sino los datos finales una vez interpretados.


10.
Presentar los resultados: utilizar gráficos en vez de tablas para que los datos sean más rápidamente comprendidos
.

Después vemos un ejemplo de ejercicio de evaluación del año pasado: en él compara dos impresoras. En el primer punto comete un fallo porque compara dos impresoras, pero no lo hace hacia un objetivo. Hay que ver para qué quiere la impresora, no directamente compararlas.


Termina la clase con un vídeo de una PSP emulando Windows 95