| Artículos | 01 DIC 2006

Priority IO

Tags: Histórico
Eugenio Barahona.
Cualquier usuario o profesional que lleve trabajando más una década en el mundo de las tecnologías de la información habrá podido comprobar la increíble mejora que se ha producido en el rendimiento de todos los elementos hardware de los sistemas informáticos. Estas mejoras se han debido a la introducción en el mercado de nuevos buses, microprocesadores que ofrecen mayor rendimiento, chipsets de nueva generación para dar soporte a los componentes mencionados anteriormente y, cómo no, algunas mejoras en la arquitectura de los sistemas operativos modernos dirigidas a reducir, o al menos disimular, la latencia que introducen determinados componentes de tipo mecánico en el rendimiento de un ordenador.

El primer factor que hay que tener en cuenta al hablar de operaciones de entrada/salida en un sistema es que el acceso a dispositivos de almacenamiento masivo, cuyo funcionamiento se base en elementos mecánicos (discos duros, o unidades ópticas), es inherentemente lento si lo comparamos con la velocidad a la que trabajan el resto de componentes de naturaleza exclusivamente electrónica. Por lo tanto, desde hace años, los diseñadores de hardware y software han intentado crear métodos para optimizar el acceso a los dispositivos lentos. La mayoría de las técnicas basadas en hardware se centran en la utilización de buffers de memoria implementados en los propios dispositivos que funcionan de forma similar a la caché de un microprocesador, de forma que si el sistema desea acceder a datos que se encuentren en dicho buffer el dispositivo realizará la transferencia de la información solicitada leyéndola de su caché interna y sin necesidad de acceder a los elementos mecánicos del dispositivo. De esta forma, la transferencia se efectuará a la máxima velocidad que permita el bus que conecte el periférico al ordenador, no encontrándose limitada dicha velocidad por la tasa de transferencia máxima que soporte la mecánica del dispositivo. Por otro lado, las operaciones de entrada/salida de prácticamente todo el hardware moderno hace uso de interrupciones, de forma que el o los procesadores del sistema no tengan que esperar a que el dispositivo complete la operación solicitada para continuar con la ejecución de otras tareas. Con este esquema de funcionamiento la CPU programaría la operación de entrada/salida y pasaría inmediatamente a ocuparse de otras tareas. Una vez que el dispositivo complete la operación solicitada generaría una petición de interrupción que sería atendida por alguno de los procesadores del sistema para de esta forma completar la operación de entrada/salida.
Las mejoras en el terreno del software han venido sobre todo de la mano de técnicas orientadas a aprovechar el lapso de tiempo que aparece desde que el sistema solicitada una operación de entrada/salida hasta que ésta se completa, normalmente, como hemos comentado anteriormente, atendiendo una o varias interrupciones generadas por el hardware encargado de gestionar al dispositivo de que se trate en cada caso.

Prioridad
Una conclusión importante que se desprende de todo lo anterior es que no todas las operaciones de entrada/salida tienen la misma importancia, por lo que quizá sería interesante implementar un sistema de prioridades que dedicase mayores recursos del sistema a las operaciones más importantes. Pero, ¿qué operaciones de entrada/salida son las que deberían disfrutar de una prioridad más elevada? De forma general, puede decirse que las tareas de entrada/salida más importantes son aquellas que pueden suponer para el usuario del sistema un período de espera hasta que el sistema completa la operación que se haya solicitado. Sin embargo, muchos sistemas actuales, que disponen de componentes hardware de rendimiento muy elevado, hacen que las esperas que sufre el usuario sean relativamente elevadas.
Mientras que el rendimiento del equipo se ve afectado por factores como la velocidad de los buses, de la memoria y del procesador, así como por el número de núcleos de que disponga la CPU, la velocidad de respuesta del equipo a las peticiones del usuario está influida por factores como la cantidad de interrupciones generadas por el hardware que debe procesar el sistema operativo, la existencia en ejecución de aplicaciones multihilo y la prioridad a la que se ejecuten los diversos hilos de las aplicaciones. Todos estos factores han hecho que una aplicación cuyo rendimiento en el año 1996 se veía afectado en un cinco por ciento por las operaciones de acceso a disco duro, a día de hoy el citado acceso a disco duro de la misma aplicación tenga un impacto del 55 por ciento en su rendimiento. Esto se debe a que la mejora en el hardware ha hecho que la latencia que introducen los elementos mecánicos de los discos duros se haya mantenido prácticamente en los mismos valores en los últimos diez años, lo que hace que del tiempo total necesario para ejecutarse una transferencia sólo una mínima parte se dedique a la transmisión de la información a través del bus que une al dispositivo de almacenamiento al resto del sistema.
Actualmente Microsoft está trabajando en un sistema de prioridades para operaciones de entrada/salida que define cuatro niveles de prioridad: crítica, alta, normal y baja. Además también se podrían ejecutar transferencias durante períodos de tiempo de inactividad o baja actividad del sistema, de forma que durante dichos períodos pudiese realizarse al menos una transferencia por segundo. Para la creación de esta nueva infraestructura también se están teniendo en cuenta las necesidades de cierto tipo de aplicaciones que requieren disponer, de forma más o menos constante, de un determinado ancho de banda. De esta forma las aplicaciones que hace uso de steaming dispongan de hasta un 75 por ciento del ancho de banda disponible de un determinado dispositivo de almacenamiento.
La aplicación de un sistema de prioridades a los discos duros se hace más urgente si se tiene en cuenta la aparición, cada vez más generalizada, de aplicaciones que lanzan varios hilos simultáneos de ejecución y microprocesadores que disponen de varios núcleos. Si hoy en día es normal disponer de equipos con dos núcleos a un precio relativamente bajo, a finales del presente año ya estarán disponibles los primeros productos equipados con procesadores con cuatro núcleos.
El sistema de prioridades se articula gracias a que son las propias aplicaciones las que conocen sus propias necesidades y pueden, por lo tanto, solicitar al sistema operativo el nivel de prioridad que requieren para llevar a cabo sus operaciones de entrada/salida. Sin embargo, una implementación de este tipo requiere que todos los componentes del stack de software mediante el que se accede a los dispositivos de almacenamiento masivo soporten el concepto de prioridad. Por lo tanto, es necesario que además de las aplicaciones, el sistema de archivos, de volúmenes o particiones, y los propios controladores de dispositivo del hardware físico soporten el concepto de prioridad.
Esta tecnología plantea una serie de retos importantes en las capas de software más cercanas al hardware y en el propio hardware, ya que los drivers encargados de gestionar los dispositivos físicos no implementan ningún tipo de prioridad en cuanto a las solicitudes de servicio que reciben procedentes de capas de más alto nivel del sistema operativo. Además, el hardware de los propios dispositivos de almacenamiento tampoco

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información