Multitarea en segundo plano

Anuncio
Multitarea en segundo plano
(Informe tecnológico para profesionales informáticos)
Prólogo: Este informe es una introducción de carácter general a estas tecnologías cuyo objetivo es proporcionar un
conocimiento más preciso de determinadas limitaciones inherentes a los sistemas operativos modernos. No está pensado
como presentación de un estudio científico. Es preciso señalar que, para mayor brevedad, las descripciones del diseño y el
comportamiento de los sistemas operativos, aunque plenamente correctas, se presentan de forma simplificada.
DESCRIPCIÓN GENERAL
La multitarea es un método que permite compartir recursos del sistema de manera que varios procesos1 parezca
que se ejecutan a la vez. Ejemplo de ello es la posibilidad de ejecutar un editor de textos y una aplicación de hoja
de cálculo al mismo tiempo.
Sin embargo, un componente de un equipo diseñado para uso general, como es la CPU, sólo puede ejecutar las
tareas de una en una. La multitarea crea la ilusión de que todas las ejecuciones se producen simultáneamente
mediante la implementación de un sistema de programación de subprocesos2. Se trata en definitiva de la
virtualización de la CPU, diseñada para hacer creer a las aplicaciones que poseen la CPU de forma exclusiva. Las
CPU más potentes y rápidas pueden ejecutar tareas de gran tamaño o lograr una ejecución más productiva en un
período de tiempo determinado.
El multiproceso amplía los principios de la multitarea a varias CPU, lo que de hecho permite a los subprocesos
ejecutarse simultáneamente, mientras que la multitarea finge este comportamiento. El multiproceso, al igual que la
multitarea, continúa teniendo una capacidad de procesamiento limitada a una acción en todo momento en cada
CPU.
En este documento, nos referiremos a la multitarea para describir la gestión de subprocesos del sistema operativo.
Visión en profundidad de la multitarea:
Los sistemas operativos de hoy en día utilizan diversas técnicas de multitarea. Los sistemas informáticos
modernos, como Windows®, Linux®, UNIX® y Mac OS® X, utilizan una forma de multitarea conocida como
multitarea preventiva con varias diferencias específicas en cada caso. La multitarea preventiva es un mecanismo
más eficaz para garantizar la compartición de recursos, ya que diferencia los procesos (es decir, de E/S entrada/salida- o de la CPU) e integra la espera de E/S con el fin de no retrasar procesos que no necesitan
respuestas de dispositivos de E/S (como los datos devueltos de una unidad de disco duro).
La aplicación de la programación preventiva en Windows NT® (hasta XP, es decir, hasta NT 5.1), aunque no tiene
un carácter puro, es más avanzada que en las versiones anteriores de Windows basadas en MS-DOS®, en el
sentido de que separa mejor los procesos por el recurso que utilizan (por ejemplo, el uso intensivo de la CPU frente
al uso de E/S). También es de gran importancia el hecho de que permite priorizar los procesos. La priorización
implica la implementación de un sistema mediante el cual un proceso y sus subprocesos asociados pueden
considerarse más importantes, de igual importancia o menos importantes que otro proceso. Un sistema de
programación básicamente "circular" asigna posteriormente espacios de tiempo de recursos disponibles para los
procesos activos.
Sin embargo, el sistema de valores de la priorización es relativamente rutinario, ya que se basa en el proceso para
definir de forma general la importancia de éste. También aplica un sistema de valores numéricos (valores entre 0 y
31) en el que un número más alto indica una mayor importancia. Un proceso con el valor 8 recibirá mayor acceso a
los recursos que un proceso con un valor de prioridad de 4, pero menor que un proceso que se ejecute con una
prioridad de 13.
Los procesos que tienen el mismo valor numérico (por ejemplo, un editor de textos y una hoja de cálculo que
tienen el valor 8) se consideran iguales y deben "repartirse" los recursos por igual.
1
2
Un proceso es el componente de control que gestiona uno o varios subprocesos relacionados.
Un subproceso es el código en sí, administrado dentro del contexto de un proceso, que el sistema ejecuta.
Un sistema de compartición de recursos ideal debería conocer mejor los procesos no relacionados que comparten
un mismo valor de prioridad y podría subdividir aun más los recursos. Posteriormente, en función de las
necesidades reales en cada momento, podrían compartir los recursos de manera más efectiva, en lugar de basar el
reparto en un valor de prioridad preestablecido relativamente rutinario. La multitarea preventiva de Windows NT
no permite lograr esto.
La multitarea preventiva sí ofrece una implementación muy básica de la asignación dinámica de recursos para
garantizar una mejor diseminación de los recursos del sistema entre los procesos con prioridad alta y baja. El
mecanismo de programación de subprocesos de NT puede ajustar dinámicamente (aumentar o reducir) un valor de
prioridad para un proceso determinado en relación con su prioridad base asignada y con sus características de
ráfaga de E/S-CPU3 (es decir, un proceso dirigido a la CPU frente a un proceso dirigido a E/S) para dar cabida a un
eventual acceso a los recursos. La justificación de los cambios de prioridad simplemente depende de si se deja sin
atender a un proceso (no se le concede tiempo de uso de los recursos) debido al influjo de procesos de alta
prioridad. En estos casos, el programador puede reducir dinámicamente la prioridad de los procesos y aumentar el
derecho de acceso a los recursos por parte de otros procesos.
El fenómeno que se deriva de ello es que el programador concedería a un proceso de baja prioridad destinado a E/S
mayor tiempo de uso de los recursos del que normalmente le concedería si no se le hubiera dejado sin atender.
Aunque el uso de interrupciones4 permite el bloqueo de procesos destinados a E/S, es importante señalar que los
procesos no se dejan sin atender durante más de 3-4 segundos. Con procesadores que operan a velocidades del
orden de los gigahercios, unos pocos segundos pueden parecer, retrospectivamente, una eternidad, pero dicho
retraso se produce.
Como puede observarse, este sistema garantiza que todos los procesos obtengan acceso a los recursos y que todos
los procesos se ordenen al menos de una forma simple de importancia relativa.
Sin embargo, se observan algunos defectos en este diseño. Puede apreciarse que algunas aplicaciones activas en un
sistema, a las que se asignan recursos cada 3-4 segundos, pueden y deben quedar sin atender en su demanda de
recursos hasta que ningún otro proceso los necesite. Asimismo, como ya se ha sugerido, la priorización entre
aplicaciones aparentemente "iguales" es relativamente rutinaria.
Esto resulta obviamente inadecuado cuando aplicaciones realmente de baja prioridad que pueden esperar
indefinidamente (o casi indefinidamente) a la asignación de recursos reciben recursos a la fuerza.
INVISITASKING™ – “El verdadero procesamiento en segundo plano hecho realidad”
InvisiTasking es una nueva tecnología diseñada para mejorar la multitarea y resolver algunos de los defectos
relativos a la falta de “información suficiente”. Disponer de más información permite compartir mejor los recursos.
InvisiTasking está específicamente diseñado para lograr que la aplicación “de segundo plano” se ejecute realmente
en segundo plano y no interfiera en procesos de mayor prioridad, como, por ejemplo, el procesamiento de
transacciones5, la puesta en cola para imprimir y, en definitiva, cualquier otra cosa que no sea tiempo desperdiciado
de reposo del sistema.
A diferencia de la multitarea, que se integra en el kernel del sistema operativo, InvisiTasking funciona actualmente
en modo de usuario. Esto significa que no va a resolver actualmente todos los problemas inherentes a la esencia de
la multitarea en lo que se refiere a una aplicación de segundo plano, pero va a mitigar los defectos inherentes a ésta
hasta el punto de que dejen de ser un problema. Esto exige, por supuesto, que la aplicación esté escrita para
aprovechar esta tecnología.
Visión en profundidad de InvisiTasking:
Dado que los recursos de la CPU y de E/S casi nunca se utilizan completamente, la transparencia de InvisiTasking
se logra aprovechando de manera indetectable estos recursos no utilizados del sistema. Los ingenieros de software
3
Una ráfaga es una transmisión de datos inesperada y ocasional.
Una interrupción es una notificación a un programa de que algo ha ocurrido (por ejemplo, que el usuario ha pulsado una tecla
en el teclado). Ésta puede desencadenar acciones posteriores o ser simplemente ignorada.
5
La acción de realizar una operación de E/S que cambia los datos en el sistema de archivos.
4
a veces intentan compartir recursos eligiendo prioridades más bajas de ejecución en la CPU, al tiempo que se han
realizado esfuerzos en el pasado por ajustar la intensidad de E/S de discos y redes. Sin embargo, el objetivo de un
software verdaderamente transparente no se había logrado hasta ahora.
Para lograr una transparencia real, es preciso supervisar la CPU, la memoria y, lo que es más importante, las
unidades de disco y la red, que son los principales responsables de los atascos en el hardware. InvisiTasking adopta
un enfoque proactivo para detectar al instante el uso de los recursos mientras se mantiene el control granular de su
propia actividad, lo que garantiza que nunca obstaculice a usuarios o servicios.
La clave, por supuesto, está en demostrar que la teoría de InvisiTasking se mantiene en la práctica…
COMPROBACIONES DE REFERENCIA DE INVISITASKING
Para demostrar la efectividad de InvisiTasking, se han realizado diversas pruebas de referencia.
Diskeeper® Corporation escribió una herramienta de 32 bits, llamada DkCopy, para demostrar las ventajas de
InvisiTasking. DkCopy es una herramienta de copia de archivos muy sencilla que copia un archivo de un lugar a
otro (modo estándar). DkCopy es, en este modo estándar, representativa de aplicaciones empresariales típicas,
como SQL, Lotus Notes®, Microsoft® Office, etc.
Para demostrar las ventajas de InvisiTasking, la utilidad también incluye un modificador especial para aplicar la
tecnología InvisiTasking a sus operaciones de copia de archivos. Al aplicar este modificador, DkCopy puede
convertirse en una verdadera aplicación en segundo plano.
Se realizaron dos pruebas independientes con mediciones ligeramente diferentes. Ambas pruebas emplearon las
mismas plataformas y entornos.
Prueba 1 de InvisiTasking
El objetivo de la Prueba 1 era comprobar la velocidad de las operaciones de copia de DkCopy, mediante la
medición del tiempo transcurrido hasta terminar, cuando otro proceso también se estaba ejecutando. La
ramificación de la ejecución de un segundo programa simultáneo al primer programa debería mostrar naturalmente
un impacto en el primer programa.
En este caso, dicha aplicación simultánea era también DkCopy, implementando el interruptor que activa
InvisiTasking. Una vez más, esta prueba estaba pensada para detectar el impacto en DkCopy de la ejecución
simultánea a la de otro programa.
DkCopy con InvisiTasking activado representa una aplicación de segundo plano, como, por ejemplo, un proceso de
mantenimiento, para el cual el desarrollador intenta evitar cualquier impacto negativo que deteriore el rendimiento
de aplicaciones empresariales típicas.
Procedimiento de la Prueba 1:
1. DkCopy se ejecutó empleando sus operaciones normales para copiar un archivo [DkCopy.exe]. Esto
permitió establecer la línea base de tiempo que esta herramienta tarda en completar sus acciones.
a. Prueba 1A, copia de un archivo de 150 MB
b. Prueba 1B, copia de un archivo de 890 MB
c. Prueba 1C, copia de un archivo de 6 GB
2. Se ejecutaron simultáneamente dos instancias de DkCopy. Una de ellas se ejecutó de forma normal
[DkCopy.exe] y la otra, empleando la opción de InvisiTasking [DkCopy.exe -I].
a. Prueba 1A, copia de un archivo de 150 MB
b. Prueba 1B, copia de un archivo de 890 MB
c. Prueba 1C, copia de un archivo de 6 GB
En las pruebas (fase 1 y 2), cada prueba de DkCopy se ejecutó un total de seis veces por cada tamaño de archivo
(150 MB, 890 MB, 6 GB) y se registraron los resultados. Las puntuaciones más alta y más baja se descartaron y se
promediaron6 las 4 puntuaciones restantes, que se representaron en el gráfico mostrado. La segunda instancia de
DkCopy (con InvisiTasking activado) se ejecutó garantizando que ningún conflicto de E/S o problema de caché
pudiera desvirtuar los resultados. El sistema se restableció al mismo estado anterior entre todas las ejecuciones de
las pruebas para garantizar que el entorno de inicio fuera idéntico para pruebas comparativas.
6
Se eliminaron los valores más bajo y más alto y se emplearon los cuatro valores restantes para obtener el tiempo medio.
Resultados de la Prueba 1:
Resultados DkCopy, archivo 150 MB
Menos tiempo = mejor (más
rápido)
Tiempo requerido por DkCopy (ejecución exclusiva)
Tiempo requerido por DkCopy (ejec. DkCopy -I simultánea)
140.000
120.671
Tiempo (milisegundos)
120.000
105.802
114.417
110.477
100.000
80.000
60.000
40.000
20.000
14.520 13.805
5.859
7.090
6.293
6.602
0
Sistema-1
PIII 1 GHz (1 CPU)
2003 R2 Enterprise
Sistema-2
P4 Xeon 3 GHz (2 CPU)
2003 R2 Enterprise x64
Sistema-3
PIII 499 MHz (1 CPU)
XP Professional SP2
Sistema-4
Athlon 64 2,4GHz (2
CPU)
2003 R2 Enterprise x64
Sistema-5
P4 Xeon 3 GHz (2 CPU)
2003 R2 Enterprise
Equipo
DkCopy (archivo de 150 MB)
Resultados DkCopy, archivo 890
MB
700.000
Tiempo requerido por DkCopy (ejecución exclusiva)
Tiempo requerido por DkCopy (ejecución simultánea de DkCopy -I)
Menos tiempo=mejor (más rápido)
659.854
621.316
Tiempo (milisegundos)
600.000
500.000
400.000
300.000
200.000
100.000
83.242
82.272
45.844
44.848
37.582
38.785
0
Sistema-1
PIII 1 GHz (1 CPU)
2003 R2 Enterprise
Sistema-2
P4 Xeon 3 GHz (2
CPU)
2003 R2 Enterprise x64
Sistema-3
PIII 499 MHz (1 CPU)
XP Professional SP2
Equipo
DkCopy (archivo de 890 MB)
Sistema-4
Athlon 64 2.4GHz (2 CPU)
2003 R2 Enterprise x64
Tiempo requerido por DkCopy (ejec.
exclusiva)
Result. DkCopy, archivo 6 GB
Menos tiempo=mejor (más
ráp.)
Tiempo requerido por DkCopy (ejec.
DkCopy -I simultánea)
265.391
265.082
Tiempo (milisegundos)
250.000
200.000
150.000
100.000
50.000
0
Sistema-4
Athlon 64 2,4 GHz (2 CPU)
2003 R2 Enterprise x64
Equipo
DkCopy (archivo de 6 GB)
Resumen de la Prueba 1
Los gráficos representan el tiempo que tardó en realizarse la copia, por lo que los números más bajos indican
tiempos de ejecución más rápidos. Se emplearon diferentes niveles de hardware, desde procesadores Intel Pentium
III a 500 Mhz hasta procesadores Dual Athlon 64 a 2,4 GHz.
Como muestran los resultados, InvisiTasking tuvo un impacto mínimo en el rendimiento en la mitad de los casos y
un rendimiento (tiempo de ejecución) mejorado en la otra mitad de los casos comprobados.
Prueba 2 de InvisiTasking
El objetivo de la Prueba 2 consistía en medir el rendimiento del sistema a través de una herramienta de referencia
de otro fabricante. Se seleccionó el conocido producto de software de referencia PCMark® para medir el
rendimiento de los PC, ya que cuenta con buena reputación y no es una herramienta propia. PCMark (PCMark05
Revision 1 Build 0) utiliza un sistema de puntuación y comprueba los principales componentes del sistema, como
la CPU, la memoria, los discos duros y los gráficos, para calificar el rendimiento.
Procedimiento de la Prueba 2:
Al igual que en la Prueba 1, el sistema se restableció al mismo estado anterior entre todas las ejecuciones de las
pruebas para garantizar que el entorno de inicio fuera idéntico para pruebas comparativas. Se utilizaron los mismos
estados del sistema creados en la Prueba 1 para la Prueba 2.
1. PCMark05 se ejecutó en cada equipo para establecer una línea de base de rendimiento ejecutando sólo esta
herramienta.
2. PCMark05 se ejecutó simultáneamente con (DkCopy –I) en cada equipo. Esta prueba mide el impacto que un
proceso con InvisiTasking activado tiene en el rendimiento del sistema (medido por PCMark).
Las pruebas7 de PCMark05 se ejecutaron cuatro veces en cada equipo, se promediaron los resultados y se
representaron en el siguiente gráfico. Dado que los números presentados son las puntuaciones de PCMark05, a
mayor puntuación, mejor rendimiento.
7
Consulte el Apéndice A para obtener la lista detallada de criterios que conforman la puntuación de PCMark.
Resultados de la Prueba 2:
Puntuación de
PCMark
Puntuación PCMark (ejec. simultánea DkCopy -I)
Resultados prueba CPU PCMark05
(Mayor puntuación = mejor)
4700
4476
4500
4000
3841 3838
3363
3500
3518
3000
2500
2000
1500
1000
981 981
614 624
500
0
Sistema-1
PIII 1 GHz (1 CPU)
2003 R2 Enterprise
Archivo de 150 MB
Sistema-2
P4 Xeon 3 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 150 MB
Sistema-3
PIII 499 MHz (1 CPU)
XP Professional SP2
Archivo de 150 MB
Sistema-4
Athlon 64 2,4 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 150 MB
Sistema-4
Athlon 64 2,4 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 1 GB
Rendimiento de CPU con PCMark
Resultados prueba memoria PCMark05
(Mayor puntuación = mejor)
Puntuación de
PCMark
Puntuación PCMark (ejec. simultánea DkCopy -I)
3227
3000
2701 2708
2575
2500
2398
2146
2000
1500
1000
914 904
515 543
500
0
Sistema-1
PIII 1 GHz (1 CPU)
2003 R2 Enterprise
Archivo de 150 MB
Sistema-2
P4 Xeon 3 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 150 MB
Sistema-3
PIII 499 MHz (1 CPU)
XP Professional SP2
Archivo de 150 MB
Sistema-4
Athlon 64 2,4 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 150 MB
Rendimiento de memoria con PCMark
Sistema-4
Athlon 64 2,4 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 1 GB
Resultados prueba disco duro
PCMark05 (Mayor puntuación = mejor)
Puntuación de
PCMark
Puntuación PCMark (ejec. simultánea DkCopy -I)
5000
4537 4544
4500
4295 4340
4313 4368
4000
3500
3000
2500
2218 2219
2000
1500
1334 1326
1000
500
0
Sistema-1
PIII 1 GHz (1 CPU)
2003 R2 Enterprise
Archivo de 150 MB
Sistema-2
P4 Xeon 3 GHz (2 CPU)
2003 R2 Enterprise x64
Archivo de 150 MB
Sistema-3
Sistema-4
Sistema-4
PIII 499 MHz (1 CPU) Athlon 64 2,4GHz (2 CPU) Athlon 64 2,4GHz (2 CPU)
2003 R2 Enterprise x64
XP Professional SP2
2003 R2 Enterprise x64
Archivo de 150 MB
Archivo de 150 MB
Archivo de 1 GB
Rendimiento de disco duro con PCMark
Resumen de la Prueba 2
PCMark confirma la validez de las pruebas de tiempo de ejecución al evaluar determinados componentes del
sistema. InvisiTasking no sólo no obstaculizó el rendimiento del equipo, sino que de hecho lo mejoró en 4 de cada
5 casos. Generalmente, a mayor potencia del sistema, más significativa es la ganancia neta.
CONCLUSIÓN SOBRE INVISITASKING
Las pruebas de referencia demuestran la teoría de la tecnología InvisiTasking. Indican que un proceso con
InvisiTasking activado no interfiere en otras aplicaciones que están en ejecución. Esto se demostró en la Prueba 1,
donde, fundamentalmente, no se vio afectado el tiempo que tardó en concluir la operación de DkCopy.
La Prueba 2 estableció que las operaciones del sistema también están completamente disponibles para realizar una
amplia gama de acciones típicas, como procesamientos de la CPU, accesos y modificaciones de la memoria y
accesos a la unidad de disco duro, todo ello mientras una aplicación con InvisiTasking activado está plenamente
activa.
Diskeeper Corporation también documentó mejoras de rendimiento en servicios no relacionados sin ninguna
ralentización en el resto de procesos. Al realizar pruebas de procesos con uso intensivo de E/S y prototipos de
InvisiTasking, Diskeeper Corporation confirmó una ventaja añadida excepcionalmente alta que afecta a los
procesos fuera de la esfera de InvisiTasking: InvisiTasking aporta eficiencia a la forma en que el kernel asigna los
recursos.
Desde una perspectiva de uso adicional de recursos del sistema, puede decirse que las aplicaciones con
InvisiTasking activado “no existen”: son verdaderamente invisibles en el sistema.
Diskeeper Corporation Europe,
Kings House, Cantelupe Road,
East Grinstead, West Sussex,
RH19 3BE
www.DiskeeperEurope.com
© 2006 Diskeeper Corporation. Reservados todos los derechos. Diskeeper, The Number One Automatic Defragmenter e
InvisiTasking son marcas comerciales o marcas registradas de Diskeeper Corporation. Microsoft, MS-DOS, Windows y
Windows NT son marcas registradas o marcas comerciales de Microsoft Corporation en los Estados Unidos de América y/o en
otros países. Lotus Notes es una marca registrada de IBM. PCMark es una marca registrada de Futuremark Corporation. Mac OS
es una marca registrada de Apple Computer, Inc. UNIX es una marca registrada de The Open Group. Linux es una marca
registrada de Linus Torvalds. El resto de marcas comerciales pertenecen a sus respectivos propietarios.
Apéndice A
Métrica detallada de las pruebas de PCMark05
(Más información sobre el producto en www.futuremark.com)
Suite de pruebas de la CPU
Compresión de archivos
Descompresión de archivos
Cifrado de archivos
Descifrado de archivos
Descompresión de imágenes
Compresión de audio
Prueba 1 con múltiples subprocesos / Compresión de archivos
Prueba 1 con múltiples subprocesos / Cifrado de archivos
Prueba 2 con múltiples subprocesos / Descompresión de archivos
Prueba 2 con múltiples subprocesos / Descifrado de archivos
Prueba 2 con múltiples subprocesos / Descompresión de audio
Prueba 2 con múltiples subprocesos / Descompresión de imágenes
Suite de pruebas de la memoria
Lectura de memoria - 16 MB
Lectura de memoria - 8 MB
Lectura de memoria - 192 KB
Lectura de memoria - 4 KB
Escritura en memoria - 16 MB
Escritura en memoria - 8 MB
Escritura en memoria - 192 KB
Escritura en memoria - 4 KB
Copia de memoria - 16 MB
Copia de memoria - 8 MB
Copia de memoria - 192 KB
Copia de memoria - 4 KB
Latencia de memoria - Aleatoria 16 MB
Latencia de memoria - Aleatoria 8 MB
Latencia de memoria - Aleatoria 192 KB
Latencia de memoria - Aleatoria 4 KB
Suite de pruebas de unidad de disco duro
Unidad de disco duro - Inicio de XP
Unidad de disco duro - Carga de aplicaciones
Unidad de disco duro - Uso general
Unidad de disco duro - Exploración de antivirus
Unidad de disco duro - Escritura de archivo
Descargar