ES2305216T3 - Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto. - Google Patents

Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto. Download PDF

Info

Publication number
ES2305216T3
ES2305216T3 ES02711528T ES02711528T ES2305216T3 ES 2305216 T3 ES2305216 T3 ES 2305216T3 ES 02711528 T ES02711528 T ES 02711528T ES 02711528 T ES02711528 T ES 02711528T ES 2305216 T3 ES2305216 T3 ES 2305216T3
Authority
ES
Spain
Prior art keywords
priority
threads
execution
level
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES02711528T
Other languages
English (en)
Inventor
Bob Janssen
Peter Gerardus Jansen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Real Enterprise Solutions Development BV
Original Assignee
Real Enterprise Solutions Development BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Real Enterprise Solutions Development BV filed Critical Real Enterprise Solutions Development BV
Application granted granted Critical
Publication of ES2305216T3 publication Critical patent/ES2305216T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

Método para establecer niveles de prioridad en un sistema de cómputo de multiprogramación (1) con planificación por prioridades, en el cual hilos (15, 16, 17) de ejecución de cada proceso (13, 14) tienen un nivel de prioridad estándar, que comprendo medir el uso relativo de uno o más procesadores (2) en el sistema (1) por los hilos (15, 16, 17) de ejecución de un proceso (13, 14), caracterizado en que los niveles de prioridad de uno o más hilos (15, 16, 17) de ejecución son bajados si su uso relativo medido excede cierto umbral de escalamiento durante la duración de un período de tiempo de escalamiento (DeltaT1).

Description

Método para establecer niveles de prioridad en un sistema de cómputo de multiprogramación con planificación por prioridades, sistema de cómputo de multiprogramación y programa para esto.
La invención está relacionada con un método para establecer niveles de prioridad en un sistema de cómputo de multiprogramación con planificación por prioridades, con un sistema de cómputo de multiprogramación con planificación por prioridades, y con un programa de cómputo cargable en un sistema de cómputo de multiprogramación con planificación por prioridades.
Un sistema de cómputo de multiprogramación es un sistema de cómputo que es capaz de cambiar hacia adelante y hacia atrás entre múltiples programas cargados en memoria. El sistema operativo de tal ordenador consta de un planificador, una parte que escoge cuál de dos o más hilos de ejecución que ya están listos para ser ejecutados debería ser ejecutado a continuación. Para asegurar que ciertos hilos tienen mejor probabilidad de ser seleccionados que otros, los hilos tienen un nivel de prioridad asignado a ellos.
Aunque los sistemas operativos comunes tienen mecanismos para cambiar niveles de prioridad, el establecimiento básico del nivel de prioridad para los procesos y/o los hilos que son creados cuando un programa de aplicación es ejecutado, no es realizado por el sistema operativo. El nivel es establecido lo mismo por el proveedor de un programa de aplicación, o es establecido por un administrador de sistema. Esto puede conducir a problemas cuando la ejecución de un cierto programa requiere una cantidad grande de capacidad del procesador. El establecimiento de nivel de prioridad alto conducirá a una situación donde el hilo o los hilos de ejecución de este programa consumen todos los recursos disponibles de procesamiento. Esto es perjudicial para el rendimiento de otros procesos simultáneamente en ejecución en el sistema de cómputo. En situaciones donde usuarios diferentes ejecutan programas de aplicación en un sistema, un proceso iniciado por uno de ellos puede causar que los otros procesos respondan muy lentamente a los comandos introducidos por otro usuario.
WO 99/21081 revela un sistema y método para realizar operaciones de procesamiento por ordenador en un sistema de procesamiento de datos incluyendo un procesador multi-hilo y lógica de alternado de hilos. El procesador multi-hilo es capaz de alternar entre dos o más hilos de instrucciones que pueden ser ejecutados independientemente. Cada hilo tiene un estado correspondiente en un registro de estados de hilos que depende de su estado de ejecución. La lógica de alternado de hilos contiene un registro de control de alternado de hilos para almacenar los estados en los cuales un hilo ocurrirá. La lógica de alternado de hilos contiene un registro de tiempo de espera que fuerza un alternado de hilo cuando la ejecución del hilo en ejecución en el procesador multi-hilo excede un período de tiempo programable. La lógica de alternado de hilos también tiene un registro de conteo de progreso hacia delante para impedir alternado repetitivo de hilo entre hilos en el procesador multi-hilo. La lógica de alternado de hilos también es receptiva a un administrador de software capaz de cambiar la prioridad de los diferentes hilos y así reemplazar eventos de alternado de hilo.
EP 880 095 revela un método de planificación de trabajos para ser ejecutado por un recurso en un sistema de cómputo en donde los trabajos son agrupados en clases, las clases de trabajo compitiendo por la atención del recurso estando dispuestas en una jerarquía. Cada clase de trabajo tiene un valor en función del tiempo que controla cuando la clase de trabajo es seleccionada por el recurso si el tiempo de procesamiento se tiene disponible. En un nivel particular de la jerarquía, planificar prioridades es definido por una o más funciones basadas en el tiempo, cada una de las cuales puede ser constante o variable dinámicamente. Cuando son usadas funciones constantes basadas en el tiempo, cada clase de trabajo tiene un valor de planificación que permanece fijo en el tiempo. Cuando son usadas funciones dinámicas basadas en el tiempo, los valores en función del tiempo de las clases de trabajo son modificados para alterar el momento en el cuál la clase de trabajo adquiere el recurso.
Es un objetivo de la invención proporcionar un método, sistema de cómputo de multiprogramación y programa de cómputo según el preámbulo de reivindicaciones 1, 10 y 11, respectivamente que puede usarse para aliviar los problemas de rendimiento causados por un hilo de ejecución de procesamiento intensivo.
Consecuentemente, la invención proporciona un método para establecer niveles de prioridad en un sistema de cómputo de multiprogramación con planificación por prioridades, en el cual los hilos de ejecución de cada proceso tienen un nivel de prioridad estándar, que comprende medir el uso relativo de uno o más procesadores en el sistema por los hilos de ejecución de un proceso, en donde los niveles de prioridad de uno o más hilos de ejecución son disminuidos si su uso relativo medido excede un cierto umbral de escalamiento durante la duración de un período de tiempo de escalamiento.
De esta manera, será detectado un hilo de procesamiento intensivo. Recibirá una prioridad relativa inferior a los otros hilos de ejecución. El planificador en el sistema operativo asignará por consiguiente menos ranuras de tiempo a ese hilo. Se harán más ranuras de tiempo disponibles a los otros hilos de ejecución.
Preferentemente, el grado de prioridad de todos los hilos, de ejecución que forman parte de un proceso es disminuido si el uso relativo total por los hilos de ese proceso excede un umbral de escalamiento en la duración del período de tiempo de escalamiento.
Por lo tanto, en un sistema de cómputo capaz para ejecutar código multi-hilo un proceso con muchos más hilos de ejecución que los otros no evadirá la detección. Los usuarios generalmente sólo notan si un proceso se comporta lento. Disminuyendo la prioridad de todo los hilos de ejecución de un proceso cuando la capacidad de procesamiento total usada por ellos excede un umbral hará a los otros procesos respondan mejor.
Preferentemente, el grado de prioridad de al menos un hilo es disminuido al nivel más bajo dentro de un rango de valores posibles.
Por lo tanto, el efecto es instantáneo. No hay que reducir la prioridad gradualmente sobre varios períodos de tiempo. En combinación con el uso de un período de tiempo de escalamiento, el método es estable, suficientemente receptivo como para evitar impaciencia de parte de los usuarios.
Preferentemente, los niveles de prioridad disminuidos son devueltos al nivel de prioridad estándar si el uso relativo está más abajo de un umbral de prueba durante un período de tiempo de prueba.
El método por consiguiente se mantiene efectivo sobre un intervalo de tiempo extendido, dado que no es posible que el nivel de prioridad de cada proceso sea disminuido por turnos hasta que todos estén en el nivel más bajo.
En una realización preferida, es registrada una incidencia de cambio de nivel de prioridad.
Es por tanto posible detectar procesos "hambrientos de CPU" (unidad central de procesamiento, por sus siglas en inglés). Este conocimiento puede usarse para obtener provecho, por ejemplo en ejecución tales procesos en la noche.
Según un aspecto de la invención, es proporcionado un sistema de cómputo de multiprogramación con planificación por prioridades, capaz de o adaptado para ejecutar un método según cualquiera de las reivindicaciones desde la 1 hasta la 9.
El sistema de cómputo, que también podría ser un sistema de cómputo multiusuario, responde a los comandos del usuario, aun cuando muchos procesos estén siendo ejecutados simultáneamente.
Según un aspecto más de la invención, un programa de cómputo cargable en un sistema de cómputo de multiprogramación con planificación por prioridades, como este, cuando se ejecuta, el sistema de cómputo es capaz de ejecutar un método según es proporcionado en cualquiera de las reivindicaciones desde la 1 hasta la 9.
Este programa puede usarse para aliviar problemas causados por un proceso reclamando demasiada capacidad de procesamiento. En particular, asegura que otros procesos continúen en ejecución en un ritmo aceptable para los usuarios del sistema de cómputo.
La invención será ahora descrita con más detalle, con referencia a los dibujos acompañantes.
La figura 1 muestra un diagrama muy esquemático de algunos componentes de un sistema de cómputo simple.
La figura 2 muestra un diagrama muy esquemático de procesos e hilos con niveles diferentes de prioridad.
La figura 3 muestra una gráfica de la cantidad relativa de potencia de procesamiento de CPU usada por un proceso.
La figura 1 muestra un diagrama muy esquemático de algunos componentes básicos de un sistema de cómputo, puramente para ilustrar el propósito de la invención. El sistema comprende una unidad central de proceso (CPU 2) (CPU por sus siglas en inglés), con una caché 3, conectados mediante un bus de caché 4. Un chip de puente 5 conecta la CPU 2 a la memoria del sistema 6 y un controlador de disco 7 mediante un bus local 8 y un bus de sistema 9 y un bus principal 10, respectivamente. El controlador del disco proporciona acceso a un disco duro 10 sobre un bus de dispositivo periférico 12.
Aunque el sistema de la figura 1 tiene un solo CPU 2, la invención no está limitada a sistemas de cómputo de un solo procesador. Ciertamente, no sólo puede ser usado en conexión con un ordenador multiprocesador sino también en un sistema de cómputo distribuido que comprenda varios nodos interconectados, donde cada nodo comprende un sistema parecido a ese de la figura 1. En tal sistema distribuido, el método según la invención puede ser implementado en cada nodo separadamente, o en el sistema entero.
El método de la invención está ejecutado a los sistemas de multiprogramación. En lo siguiente, las referencias serán hechas a la figura 2 para explicar algunos conceptos en un sistema de multiprogramación.
Uno o más programas, algoritmos expresados en alguna notación adecuada, son almacenados en el disco duro 10. Cuando un programa es va a ser ejecutado, uno o más procesos son ejecutados en el sistema de cómputo. Un proceso en el contexto de la aplicación presente es una actividad de alguna clase. Un proceso tiene una entrada, una salida y un estado. Usualmente, hay un proceso para cada programa de aplicación que está siendo ejecutado, pero ocasionalmente el programa de aplicación inicia otros procesos.
En la figura 2 un primer proceso 13 y un segundo proceso 14 son esquemáticamente representados. Cada proceso 13, 14 tiene algún espacio de direcciones en la memoria del sistema 6 reservado para él, una lista de posiciones de memoria que un proceso puede leer y escribir. Cuando uno de los procesos 13, 14 debe ser ejecutado, los contenidos del espacio de direcciones son cargados en el registro de la CPU, y las instrucciones, también almacenadas en el espacio de direcciones de cada proceso, son efectuadas.
El sistema de la figura 1 es un sistema de multiprogramación, significa que el primer y el segundo proceso 13, 14 pueden estar en la memoria del sistema 6 concurrentemente. El sistema alterna entre los procesos 13, 14 de tal manera que parece al usuario que los procesos 13, 14 se ejecutan simultáneamente. Si ambos procesos 13, 14 están listos para ser ejecutados, un algoritmo de planificación en el sistema operativo es utilizado para decidir cuál debería ser ejecutado.
En un sistema multi-hilo, cada proceso puede tener uno o más hilos de ejecución. En el ejemplo de la figura 2, el primer proceso 13 en la figura 2 tiene un primer hilo 15 y un segundo hilo 16. El segundo proceso 14 también tiene dos hilos 17. Un hilo de ejecución es una entidad programada para la ejecución en la CPU 2. Cada uno de los hilos 15, 16, 17 tiene un contador de programa, que indica su progreso, registros almacenando sus variables actuales de funcionamiento, y una pila. Los hilos 15, 16 de ejecución del primer proceso 13 comparten el espacio de direcciones de ese proceso 13, abren archivos y otros recursos. Lo mismo se cumple para los hilos 17 del segundo proceso 14.
En un sistema de multiprogramación que soporta multiprocesamiento, el sistema alterna entre los hilos de ejecución del 15 al 17. Otra vez, el algoritmo de planificación decide cuál de los hilos del 15 al 17 debería ser ejecutado, cuando más de uno está listo. La invención será explicada en el contexto de un sistema de multiprogramación que soporta multiprocesamiento. La persona experta, sin embargo, entenderá que en un sistema que no soporta multiprocesamiento, cada proceso tendrá exactamente un hilo de ejecución. En tal sistema la invención todavía puede ser aplicada. Los términos hilo y proceso puede ser usados de forma intercambiable.
La mayoría de los sistemas operativos modernos usan una forma de algoritmo de planificación por prioridades. Varias variantes existen, y la invención no está limitada a ser usada con alguna variante en particular. Sin embargo, la invención será explicada en el contexto de una variante desplegada en un sistema operativo ampliamente usado, el cual también soporta multiprocesamiento. En lo referente a la figura 2, un arreglo 18 de niveles de prioridad es mostrado. Cada uno de los hilos de ejecución del 15 al 17 tiene un nivel de prioridad dentro de un rango de niveles de prioridad de usuario disponibles. En el ejemplo, P_{0} denota el nivel disponible mínimo, P_{1} el más alto. El arreglo 18 también comprende un rango de niveles de prioridad de sistema 20 en un rango desde P_{1} para P_{2}. Los niveles de prioridad de sistema están reservados para hilos de los procesos del sistema operativo.
En el sistema operativo usado aquí para explicar la invención, existen varias clases de prioridades de procesos y varias clases de prioridades de hilos. Cada uno de los hilos del 15 al 17 tiene un nivel de prioridad básico, determinado por la clase de prioridad de hilo asignado a este y la clase de prioridad de proceso asignada al proceso del cual forma parte. Por lo tanto, el primer hilo 15 del primer proceso 13 está en una clase de prioridad de hilo superior que el segundo hilo 16. El primer hilo 15 está por consiguiente en un nivel de prioridad de usuario más alto 13 que el segundo hilo 16.
El tiempo de procesamiento en la CPU 2 está dividido en quanta, típicamente entre 20 y 200 ms. El planificador entra en acción cuando cualquiera de uno de tres eventos ocurren: un quantum de tiempo ha acabado, un hilo se bloquea (esto es, no puede continuar en ejecución porque necesita una entrada que no está disponible inmediatamente), u ocurre una interrupción. En ese momento, el planificador seleccionará primero el hilo de más alto nivel de prioridad. Cuando varios hilos están en un nivel de prioridad, es usada una cola de espera, a fin de que cada uno de los hilos en ese nivel sea seleccionado en turno.
La prioridad básica de un hilo no es variada por el sistema operativo. Comienza en un nivel estándar; un nivel determinado por el programa o por el administrador del sistema que es normalmente mantenido a lo largo de la ejecución del hilo.
El sistema operativo puede añadir un valor al nivel de prioridad básica. En el sistema operativo de ejemplo, el nivel de prioridad de un hilo puede ser temporalmente aumentado añadiendo un factor al nivel de prioridad básica. Otros sistemas operativos añaden a la prioridad básica una cantidad que varía en el tiempo, de modo que el nivel total de prioridades disminuya cuando el hilo es ejecutado y que aumente cuando no.
Ha sido encontrado que ni el incremento temporal ni la adición de un factor que varia en el tiempo al nivel de prioridad básica evita adecuadamente los problemas causados por los hilos o los procesos con uno nivel de prioridad básica demasiado alto. Tal hilo es continuamente seleccionado para ejecutar, la mayoría de las veces usando el quantum de tiempo entero. En el sistema operativo usado aquí como ejemplo, un nivel bajo de prioridad de usuario es sólo incrementado durante la duración de uno o dos quanta de tiempo. Esto es suficiente para que un comando sea introducido a dicho proceso, pero no suficiente para que el proceso haga mucho con la orden. El momento en que ha acabado el incremento temporal, el hilo con el nivel de prioridad básica más alto tomará posesión otra vez. En una escala macroscópica de tiempo varias órdenes de magnitud mayor que el quanta de tiempo, la CPU ejecutará predominantemente los hilos con el nivel de prioridad básica más alto.
\newpage
Problemas severos pueden ser el resultado, especialmente en sistemas de cómputo que comprenden servidores de red de gama alta y estaciones de trabajo usados por varios usuarios. Si, por ejemplo, un usuario ejecuta una aplicación de procesamiento de imágenes con un nivel de prioridad básica alto, otros usuarios notarán que sus aplicaciones se vuelven más lentas y de menos rendimiento al responder. Típicamente, un usuario se quejará a un administrador de sistema, quien retrasará la prioridad básica de los hilos de la aplicación de procesamiento de imágenes a mano.
La invención proporciona un programa que es capaz de ajustar automáticamente niveles de prioridad básica, de modo que no son ya necesarios tales ajustes por un administrador de sistema. Es medido el uso relativo de la CPU 2 por los hilos 15, 16, 17 de ejecución. El grado de prioridad básico de un hilo de ejecución es disminuido de su nivel estándar si el uso relativo excede un cierto umbral de escalamiento durante un período de tiempo de escalamiento de una cierta duración. Como se mencionó anteriormente, el nivel estándar es el nivel por defecto en el cual el hilo es normalmente ejecutado.
Por lo tanto, en el sistema de ejemplo, es medido el uso relativo del procesador por los hilos 15, 16 de ejecución del primer proceso 13, como lo es el uso relativo por los hilos 17 de ejecución del segundo proceso 14. En un sistema que soporta multiprocesamiento, el mirar individualmente a cada uno de los hilos de ejecución no es aconsejable desde el punto de vista de un usuario. Una aplicación de procesamiento de imágenes con muchos hilos de ejecución podría escapar a la atención, dado que cada hilo individual no gastará una gran parte del tiempo de procesamiento. Tomados en conjunto, sin embargo, los hilos de un proceso podrían impedir completamente que sean ejecutados los hilos de otros procesos.
Por consiguiente, en un sistema que soporta multiprocesamiento, los grados de prioridad de todos los hilos de ejecución que forman parte de un proceso son disminuidos si el uso relativo total por los hilos de ese proceso excede un cierto umbral de escalamiento durante un cierto período de tiempo.
En el sistema de ejemplo, esto puede ser logrado fácilmente disminuyendo la clase de prioridad de proceso, por ejemplo a través de una llamada de sistema al sistema operativo.
En lo referente a la figura 3, es mostrado el uso relativo de la CPU 2 por el primer proceso 13. La gráfica es derivada de un sistema que usa el método según la invención. El uso relativo es expresado como un porcentaje del tiempo de procesamiento, pero en principio pudo ser usada alguna otra medida como el número de operaciones. El umbral de escalamiento ha sido colocado en este ejemplo en el 80%. En un punto T_{0} en el tiempo, el uso relativo del procesador por el primer proceso 13 excede el umbral de escalamiento. De hecho está sustancialmente al 100%. Debido a que el uso relativo permanece por encima del 80% a lo largo de un intervalo de tiempo \DeltaT_{1}, el primer proceso 13 es movido a una clase inferior de prioridad de proceso. El nivel de prioridad de ambos los hilos 15, 16 del proceso 13, incluyendo el hilo "hambriento de CPU" es consecuentemente también disminuido. Como resultado el uso relativo desciende a alrededor del 95%, lo cual es suficiente para dejar que el segundo proceso proceda sin mucho obstáculo.
El largo del intervalo de tiempo \DeltaT_{1} depende mayormente de la cantidad de tolerancia de los usuarios del sistema de cómputo. Según es obvio de la gráfica de la figura 3, es posible que los otros procesos sean eficazmente excluidos de ejecutar durante el intervalo de tiempo \DeltaT_{1}. Por supuesto, si después de aminorar el nivel de prioridad del primer proceso 13, el nivel de prioridad del hilo "hambriento de CPU" es todavía más alto que de todos los hilos del segundo proceso 14, nada ocurrirá hasta que otro espacio de tiempo de longitud \DeltaT_{1} haya transcurrido. Esto sería inaceptable.
Consecuentemente, el grado de prioridad es disminuido al nivel más bajo dentro de un rango de valores permitidos en T_{1}. En el sistema de ejemplo, la clase de prioridad del proceso es disminuida al nivel mínimo posible. Dentro del alcance de la invención, sin embargo, la clase de prioridad de hilo de todos los hilos del proceso adicionalmente podría ser disminuida al nivel mínimo posible. Ambos hilos 15, 16 del primer proceso 13 estarían entonces en el nivel P_{0}.
A menudo, un proceso o hilo sólo temporalmente consume demasiada capacidad del procesador. Una situación de ejemplo es una en donde dos usuarios ejecutan una aplicación de procesamiento de texto en una máquina. Cada uno de los dos procesos está en el mismo nivel de prioridad básica. Un usuario podría decidir ejecutar una macro. En ese momento, su proceso podría usar tanta capacidad del procesador que el otro proceso sea efectuado. El grado de prioridad del proceso que ejecuta una macro será disminuido. Si en un punto posterior el otro usuario ejecuta una macro, la prioridad de su proceso será disminuida. Ambos procesos ahora estarán en el nivel mínimo de prioridad. Ningún otro remedio queda si un proceso comienza a dominar otra vez.
Esta situación indeseable es evitada, porque los niveles de prioridad disminuidos son devueltos al nivel de prioridad estándar si el uso relativo es más bajo que un umbral de prueba. En la figura 3, el umbral de prueba es colocado en el 40%.
Por supuesto, el uso de la CPU temporalmente podría descender por debajo del umbral de prueba. Si los niveles de prioridad fueran devueltos al nivel de prioridad estándar inmediatamente, entonces el resultado sería un sistema muy inestable, en que los niveles de prioridad básica son cambiados casi cada segundo.
Esto es evitado con sólo devolver los niveles de prioridad al nivel de prioridad estándar si el uso relativo es menor que el umbral de prueba durante un período de tiempo de prueba de un cierto \DeltaT_{2} de largo. Por lo tanto, en la figura 3, el nivel de prioridad de los hilos 15, 16 del primer proceso 13 es devuelto a sus niveles estándar en T_{3}.
\global\parskip0.900000\baselineskip
El método según la invención coexiste con el algoritmo de planificación del sistema operativo. Es proporcionado como un programa separado que ejecuta en el espacio del usuario. El planificador del sistema operativo se ejecuta en el espacio del núcleo, usando las prioridades básicas determinadas establecidas por el programa de la invención.
El planificador del sistema operativo y el método de la invención prestan servicios diferentes pero complementarios. El planificador primordialmente asegura que sea hecho un uso eficiente de los recursos de los recursos del sistema de cómputo, por ejemplo que responda a los comandos del teclado y otras formas de entrada y salida. Los parámetros del planificador son por consiguiente dependientes de la plataforma.
El método de la invención asegura proporcionar una mejor experiencia de usuario. Los parámetros por consiguiente están basados en preferencias del usuario, como cuánto tiempo una persona está preparada para esperar por que un proceso se reanude. Es por consiguiente ventajoso ejecutar el método en el espacio del usuario a fin de que el programa pueda ser ejecutado en sistemas diferentes con sistemas operativos diferentes o pueda ser exportado a sistemas operativos.
Aunque el planificador del sistema operativo y el programa de la invención ambos ajustan niveles de prioridad, hacen eso en una escala de tiempo diferente. El planificador del sistema operativo trabaja en la escala de tiempo determinada por el quanta de tiempo, típicamente 10-100 ms. El programa de la invención opera en el período de tiempo establecido por la longitud del período de tiempo de escalamiento \DeltaT_{1}. La longitud del período de tiempo de escalamiento es mayor que 1 s. Más usualmente, es aún mayor, por ejemplo 2 s o 5 s. El programa de la invención por lo tanto no interferirá en el algoritmo de planificación de tal manera que el sistema de cómputo se vuelva inestable.
El programa de la invención se pretende como una solución para los problema comúnmente encarados por administradores de sistema. Los libera de la carga de tener que ajustar los niveles de prioridad básica de los hilos o procesos manualmente. También proporciona dos características adicionales.
En primer lugar, es registrada una incidencia de cambio de un nivel de prioridad. Una entrada es hecha una entrada en una bitácora en T_{1} y en T_{3}. La entrada identifica al menos el proceso culpable. Un administrador de sistema usa la bitácora para decidir disminuir el nivel estándar de prioridad de un proceso o ejecutar el proceso en un momento más conveniente, por ejemplo en la noche. Dado que una entrada es hecha cuando el grado de prioridad es disminuido y cuando es aumentado, se logra determinar cuánto tiempo un proceso realiza demandas excesivas en la potencia del procesador de la CPU 2.
Como una segunda característica el administrador de sistema puede ajustar al menos uno de los umbrales y/o longitudes de período de tiempo \DeltaT_{1}, \DeltaT_{2}, pero preferentemente todos ellos. Él así puede poner a punto el rendimiento del sistema en todo momento.
Cambios al umbral de escalamiento pueden ser hechos para tener en cuenta el número de procesos en ejecución. El 95% podría ser realmente aceptable cuando sólo dos procesos se ejecutan, porque el restante 5% será realmente adecuado. Si varios centenares de procesos se ejecutan, entonces el 5% podría ser demasiado poco para que todos ellos se ejecuten a un paso aceptable. Cambios en el umbral de prueba podrían usarse similarmente para tener en cuenta el número de procesos en ejecución.
Un incremento pequeño en el período de tiempo de escalamiento \DeltaT_{1} podría, por ejemplo, es útil cuando un proceso está caracterizado por varias ráfagas de CPU cada una de una duración que es ligeramente más larga que el \DeltaT_{1} de período de tiempo de escalamiento normal. El incremento en \DeltaT_{1} impediría cambios frecuentes en el nivel de prioridad básica.
Será aparente para esos expertos en la técnica que la invención no está limitada a la realización descrita arriba, sino que puede ser variada dentro del alcance de las reivindicaciones. A este respecto, es notado que algunos sistemas operativos hacen uso de niveles de prioridad negativos. Los procesos o los hilos en un nivel de prioridad de un valor inferior (esto es más negativo) tienen precedencia sobre esos con un valor superior. En la aplicación presente, un nivel de prioridad más alto debería ser leído como un nivel de prioridad que posibilitará a un proceso o hilo en ese nivel tener precedencia sobre procesos en un nivel inferior.
\vskip1.000000\baselineskip
Referencias citadas en la descripción Este listado de referencias citadas por el solicitante tiene como único fin la conveniencia del lector. No forma parte del documento de la Patente Europea. Aunque se ha puesto gran cuidado en la compilación de las referencias, no pueden excluirse errores u omisiones y la OEP rechaza cualquier responsabilidad en este sentido. Documentos de patentes citados en la descripción
\bullet WO 9921081 A
\bullet EP 880095 A
\global\parskip1.000000\baselineskip

Claims (11)

1. Método para establecer niveles de prioridad en un sistema de cómputo de multiprogramación (1) con planificación por prioridades, en el cual hilos (15, 16, 17) de ejecución de cada proceso (13, 14) tienen un nivel de prioridad estándar, que comprendo medir el uso relativo de uno o más procesadores (2) en el sistema (1) por los hilos (15, 16, 17) de ejecución de un proceso (13, 14), caracterizado en que los niveles de prioridad de uno o más hilos (15, 16, 17) de ejecución son bajados si su uso relativo medido excede cierto umbral de escalamiento durante la duración de un período de tiempo de escalamiento (\DeltaT_{1}).
2. Método según la reivindicación 1, en donde el nivel de prioridad de todos los hilos (15, 16, 17) de ejecución que forman parte de un proceso (13, 14) es disminuido si el uso total relativo por los hilos (15, 16, 17) de ese proceso (13, 14) excede un umbral de escalamiento durante la duración del período de tiempo de escalamiento (\DeltaT_{1}).
3. Método según la reivindicación 1 ó 2, en donde el grado de prioridad de al menos un hilo es disminuido al nivel más bajo dentro de un rango de valores posibles (19).
4. Método según cualquiera de las reivindicaciones desde la 1 hasta la 3, en donde los niveles de prioridad disminuidos son devueltos al nivel de prioridad estándar si el uso relativo está por debajo de un umbral de prueba.
5. Método según la reivindicación 4, en donde los niveles de prioridad disminuidos son devueltos al nivel de prioridad estándar si el uso relativo está por debajo de un umbral de prueba durante la duración de un período de tiempo de prueba (\DeltaT_{2}).
6. Método según cualquiera de las reivindicaciones precedentes, en donde los niveles de prioridad son variados por un programa que se ejecuta en el espacio de usuario, y las prioridades son usadas por un planificador de sistema operativo.
7. Método según cualquiera de las reivindicaciones precedentes, en donde es registrada una incidencia de cambio de un nivel de prioridad.
8. Método según cualquiera de las reivindicaciones precedentes, en donde el período de tiempo de escalamiento (\DeltaT_{1}) es más largo que un segundo.
9. Método según cualquiera de las reivindicaciones precedentes, en donde al menos uno del (de los) umbral(es) y/o período(s) de tiempo (\DeltaT_{1}, \DeltaT_{2}) es ajustado en valor por un administrador del sistema de cómputo (1).
10. Sistema de cómputo de multiprogramación con planificación por prioridades, capaz o adaptado para ejecutar un método según cualquiera de las reivindicaciones de la 1 a la 9.
11. Programa de cómputo cargable en un sistema de cómputo de multiprogramación (1) con planificación por prioridades, de modo que, cuando se ejecuta, el sistema de cómputo (1) es capaz de ejecutar un método según cualquiera de las reivindicaciones de la 1 a la 9.
ES02711528T 2002-01-30 2002-01-30 Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto. Expired - Lifetime ES2305216T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/NL2002/000070 WO2003065214A1 (en) 2002-01-30 2002-01-30 Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor

Publications (1)

Publication Number Publication Date
ES2305216T3 true ES2305216T3 (es) 2008-11-01

Family

ID=27656496

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02711528T Expired - Lifetime ES2305216T3 (es) 2002-01-30 2002-01-30 Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto.

Country Status (11)

Country Link
US (1) US7565652B2 (es)
EP (1) EP1474744B1 (es)
JP (1) JP2005516303A (es)
AT (1) ATE392662T1 (es)
AU (1) AU2002230272B2 (es)
CA (1) CA2474477C (es)
DE (1) DE60226176T2 (es)
DK (1) DK1474744T3 (es)
ES (1) ES2305216T3 (es)
NZ (1) NZ534314A (es)
WO (1) WO2003065214A1 (es)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7350060B2 (en) * 2003-04-24 2008-03-25 International Business Machines Corporation Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor
US7562362B1 (en) * 2003-06-18 2009-07-14 Apple Inc. User control of task priority
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US9098340B2 (en) * 2003-12-08 2015-08-04 Teradata Us, Inc. Virtual regulator for a database system
US8176489B2 (en) * 2004-12-09 2012-05-08 International Business Machines Corporation Use of rollback RCU with read-side modifications to RCU-protected data structures
JP2007287085A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
US8813082B2 (en) * 2006-06-22 2014-08-19 International Business Machines Corporation Thread priority based on object creation rates
EP1892625B1 (en) * 2006-08-09 2018-07-11 Red Bend Software Finer grained operating system scheduling
KR101282139B1 (ko) * 2006-09-11 2013-07-04 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법
US8881169B2 (en) * 2007-03-20 2014-11-04 Fujitsu Mobile Communications Limited Information processing apparatus for monitoring event delivery from plurality of monitoring threads
US7853950B2 (en) 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
US20090070762A1 (en) * 2007-09-06 2009-03-12 Franaszek Peter A System and method for event-driven scheduling of computing jobs on a multi-threaded machine using delay-costs
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US9830670B2 (en) 2008-07-10 2017-11-28 Apple Inc. Intelligent power monitoring
US8161493B2 (en) * 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
JP5173713B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
EP2369477B1 (en) 2010-02-22 2017-10-11 Telefonaktiebolaget LM Ericsson (publ) Technique for providing task priority related information intended for task scheduling in a system
EP2369478A1 (en) * 2010-02-22 2011-09-28 Telefonaktiebolaget L M Ericsson (PUBL) Technique of scheduling tasks in a system
JP2011180894A (ja) * 2010-03-02 2011-09-15 Fujitsu Ltd ジョブスケジューリングプログラム、ジョブスケジューリング装置、及びジョブスケジューリング方法
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
JPWO2011158405A1 (ja) * 2010-06-18 2013-08-15 パナソニック株式会社 優先度情報生成装置、情報処理装置
US8866701B2 (en) 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
US9210213B2 (en) 2011-03-03 2015-12-08 Citrix Systems, Inc. Reverse seamless integration between local and remote computing environments
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
GB2491165A (en) * 2011-05-26 2012-11-28 Realvnc Ltd Mobile device having a priority adjusting thread for link wi th remote terminal
JP5777992B2 (ja) * 2011-09-26 2015-09-16 株式会社三菱東京Ufj銀行 監視制御装置
US8904397B2 (en) 2011-10-31 2014-12-02 International Business Machines Corporation Staggering execution of scheduled tasks based on behavioral information
US9047396B2 (en) * 2011-10-31 2015-06-02 International Business Machines Corporation Method, system and computer product for rescheduling processing of set of work items based on historical trend of execution time
US9355009B2 (en) 2011-10-31 2016-05-31 International Business Machines Corporation Performance of scheduled tasks via behavior analysis and dynamic optimization
US9128754B2 (en) * 2012-05-31 2015-09-08 Hewlett-Packard Development Company, L.P. Resource starvation management in a computer system
EP2891038B1 (en) 2012-08-31 2020-06-24 Citrix Systems, Inc. Reverse seamless integration between local and remote computing environments
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
JP2014059918A (ja) * 2013-12-27 2014-04-03 Bank Of Tokyo-Mitsubishi Ufj Ltd 監視制御装置
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9582326B2 (en) 2014-05-30 2017-02-28 Apple Inc. Quality of service classes
US9772959B2 (en) 2014-05-30 2017-09-26 Apple Inc. I/O scheduling
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
DE102016200777A1 (de) * 2016-01-21 2017-07-27 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
JP6282773B1 (ja) * 2017-06-30 2018-02-21 株式会社ショーワ マスキング治具、電気メッキ装置
CN109582223B (zh) * 2018-10-31 2023-07-18 华为技术有限公司 一种内存数据迁移的方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US5797305A (en) * 1996-02-12 1998-08-25 Moore Business Forms, Inc. On demand cross web perforation
US5838968A (en) * 1996-03-01 1998-11-17 Chromatic Research, Inc. System and method for dynamic resource management across tasks in real-time operating systems
US6223201B1 (en) * 1996-08-27 2001-04-24 International Business Machines Corporation Data processing system and method of task management within a self-managing application
US6601083B1 (en) * 1996-08-29 2003-07-29 Frederick John Reznak Multitasking data processing system and method of controlling allocation of a shared resource
US6263359B1 (en) * 1997-05-22 2001-07-17 International Business Machines Corporation Computer resource proportional utilization and response time scheduling
FR2766592B1 (fr) * 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6584488B1 (en) * 1999-04-12 2003-06-24 International Business Machines Corporation Controlling allocation of system resources with an enhanced priority calculation
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
US20020019843A1 (en) * 2000-04-26 2002-02-14 Killian Robert T. Multiprocessor object control
US6859926B1 (en) * 2000-09-14 2005-02-22 International Business Machines Corporation Apparatus and method for workload management using class shares and tiers
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US6895585B2 (en) * 2001-03-30 2005-05-17 Hewlett-Packard Development Company, L.P. Method of mixed workload high performance scheduling
US20030187908A1 (en) * 2002-03-26 2003-10-02 Sun Microsystems, Inc. Methods and systems for customer based resource priority control
US7536689B2 (en) * 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives
US7383548B2 (en) * 2003-11-28 2008-06-03 Nortel Networks Limited CPU usage regulation

Also Published As

Publication number Publication date
US20060037025A1 (en) 2006-02-16
WO2003065214A1 (en) 2003-08-07
CA2474477C (en) 2011-04-12
JP2005516303A (ja) 2005-06-02
DK1474744T3 (da) 2008-07-28
NZ534314A (en) 2005-04-29
AU2002230272B2 (en) 2008-03-13
US7565652B2 (en) 2009-07-21
ATE392662T1 (de) 2008-05-15
EP1474744B1 (en) 2008-04-16
CA2474477A1 (en) 2003-08-07
DE60226176T2 (de) 2009-05-14
EP1474744A1 (en) 2004-11-10
DE60226176D1 (de) 2008-05-29

Similar Documents

Publication Publication Date Title
ES2305216T3 (es) Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto.
AU2002230272A1 (en) Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
JP5075274B2 (ja) 電力認識スレッドスケジューリングおよびプロセッサーの動的使用
KR100754300B1 (ko) Numa 컴퓨터 시스템에서 작업을 디스패칭하기 위한방법 및 장치
US8959515B2 (en) Task scheduling policy for limited memory systems
US7634388B2 (en) Providing policy-based operating system services in an operating system on a computing system
US9785223B2 (en) Power management in an uncore fabric
TWI569202B (zh) 用於基於網路負載來調整處理器電力使用之設備及方法
US10133670B2 (en) Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric
US20060037021A1 (en) System, apparatus and method of adaptively queueing processes for execution scheduling
US10725940B2 (en) Reallocate memory pending queue based on stall
KR101140914B1 (ko) 컴퓨팅 자원들을 제어하는 기술
US8472455B2 (en) System and method for traversing a treelet-composed hierarchical structure
JP2004227188A (ja) ジョブスワップ方法、ジョブ管理装置、およびジョブ管理プログラム
JP2007503642A (ja) マイクロコントローラを支持し監視する回路装置及び方法
EP3238085B1 (en) Virtual legacy wire
EP4339788A1 (en) Performance and power balanced cache partial power down policy
JPH0793198A (ja) コンピュータシステム
CN112230757B (zh) 用于通过腾空cpu和存储器的子集来降低功率的方法和系统
TW202414219A (zh) 計算系統及計算系統進行共享高速緩存分配的方法