Apuntes 11-03-08
Durante la primera parte de la clase el profesor realiza unos breves comentarios sobre la corrección de la práctica 1.A continuación el profesor tambien comenta una página que es bastante interesante para la asignatura, esta página es: www.slashdot.org. Dentro de esta página comentamos un articulo también muy interesante sobre los procesadores multicore.
Ejercicios de autoevaluación
A continuación se comentan en clase los siguientes ejercicios de autoevaluación.
- http://sumandorestas.blogspot.com/2008/03/ejercicio-autoevaluacin-1-sistemas.html
- http://saramggh.blogspot.com/2008/03/ejercicios-autoevaluacin.html
- http://antaresdyec.blogspot.com/2008/03/autoevaluacin-tema-1-bloque-2.html
Bloque 4
* http://tauro3dec.wordpress.com/2008/03/11/4-ejercicios-de-autoevaluacin/
* http://sumandorestas.blogspot.com/2008/03/autoevaluacin-4.html
Los ejercicios son comentados por los compañeros y el profesor.
Continuación del temario
1.5 Medición de la carga de un sistema:
Seguimos con el temario de monitores y profilers. A modo de ejemplo ejecutamos el comanto Top en la línea de comandos en el Sistema Operativo linux. Ejecutando este comando podemos monitorizar todas las tareas que se están ejecutando en ese momento entre otras cosas.
Hay 2 tipos de monitores:
- Los monitores (que es lo que hemos visto hasta ahora): 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.
1.5.1 Los profilers
- Los profilers: son trozos de código linkados a un programa, y que son llamados cada cierto tiempo. Estos fragmentos de programa generan un fichero, que es luego analizado por otros programas; el análisis muestra el tiempo empleado en cada una de los procedimientos de un programa y el número de veces que se ha llamado, de forma que el programador pueda optimizar esos procedimientos.
1.5.2 Métricas de la carga de trabajo más comunes
La medición de diversas magnitudes relacionadas con el funcionamiento de un sistema, como las que se verán a continuación, es necesaria tanto para detectar los problemas que afectan al sistema como para evaluar los resultados de un benchmark:
* Throughput o número de peticiones procesadas en la unidad de tiempo.
* Tiempo de respuesta: opuesto del throughput (para un solo elemento), es el tiempo que se tarda en procesar una petición.
* Eficiencia es la tasa del throughput máximo al throughput que se consigue de forma efectiva.
* Ancho de banda: bits por segundo que es capaz de procesar el sistema. No confundir con baudios.
* Porcentaje de utilización de diversos componentes y solapamiento entre los mismos, es decir, la proporción de tiempo que cada uno de los dispositivos está funcionando y la proporción de tiempo durante la cual están funcionando simultáneamente. Cuanto mayor sea el solapamiento, mayor será la eficiencia del sistema, pues ningún dispositivo estará esperando a que otro acabe sus tareas para funcionar.
* Overhead: es decir, tiempo usado en tareas que no son directamente del usuario.
* Factores relacionados con la multiprogramación: tales como el tiempo usado en cambiar de contexto.
* Factores relacionados con la memoria virtual: fallos de página, número de veces que se ha hecho swapping.
* Factores relacionados con la memoria caché de CPU: similares a lo dicho con la memoria virtual, y aparte veces que se vacían los buffers TLB, por ejemplo.
* Otros subsistemas: red, gráficos (que tienen mucha importancia últimamente).
1.5.3 A que se dedica el tiempo
Antes de intentar mejorar las prestaciones de cualquier sistema, es decir, hacerlo más rápido, 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.
Desde el punto de vista de la sintonización del sistema y la mejora de prestaciones, la diferencia entre tiempo usuario+sistema y tiempo total está totalmente fuera de control del usuario, ya que depende de lo que todo los demás estén haciendo, así que veremos en qué consiste el tiempo de usuario+sistema:
* Tiempo de usuario, o tiempo de CPU en estado usuario: tiempo que está la CPU ejecutando código del usuario librerías invocadas por el mismo.
* Tiempo del sistema, que en gran parte está bajo control (indirecto) del superusuario o administrador del sistema: tiempo que está ejecutando llamadas al sistema y tareas administrativas relacionadas con el programa: paginación y cosas así.
* El resto del tiempo se divide en tiempo en la red, tiempo de E/S, tiempo que se tarda en ejecutar otros programas, y prestaciones de la memoria virtual.
Video del dia
Para terminar, vemos el video del día: Profiling de una aplicación web con Visual C++
http://video.google.es/videoplay?docid=2586644995405021525&q=profiling++c&pr=goog-sl
Loading...