ES2389894T3 - Equipo de extracción de tiempo de CPU - Google Patents

Equipo de extracción de tiempo de CPU Download PDF

Info

Publication number
ES2389894T3
ES2389894T3 ES08161018T ES08161018T ES2389894T3 ES 2389894 T3 ES2389894 T3 ES 2389894T3 ES 08161018 T ES08161018 T ES 08161018T ES 08161018 T ES08161018 T ES 08161018T ES 2389894 T3 ES2389894 T3 ES 2389894T3
Authority
ES
Spain
Prior art keywords
operand
record
task
cpu
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.)
Active
Application number
ES08161018T
Other languages
English (en)
Inventor
Dan Greiner
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2389894T3 publication Critical patent/ES2389894T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Abstract

Un método para medir el tiempo de procesamiento o tratamiento acumulado para tareas seleccionadas,mediante la ejecución de una instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU, dentro de un sistemainformático que incluye un conjunto de 16 registros accesibles por la instrucción y un temporizador de CPU, de talmanera que el método comprende:obtener, para la ejecución de la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU definida por unaarquitectura, la instrucción EXTRACCIÓN DE TIEMPO DE CPU que comprende un campo de código op (opcode)que identifica la instrucción, un primer campo de base (B1) para identificar un primer registro y un primer campo dedesplazamiento (D1), un segundo campo de base (B2) para identificar un segundo registro y un segundo campo dedesplazamiento (D2), y un tercer registro, de tal manera que el tercer registro guarda una dirección de un terceroperando; yejecutar la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU obtenida, automáticamente en el estadono privilegiado, invocando o llamando a un servicio de sistema operativo, de tal manera que la ejecución comprende:determinar un valor en curso de un temporizador de CPU decremental;sumar el contenido del primer registro y un valor del primer campo de desplazamiento con el fin de formaruna dirección de un primer operando en almacenamiento, de tal modo que el primer operando representa elvalor del temporizador de CPU en el momento en que se despachó una tarea;buscar y recuperar, basándose en la dirección formada del primer operando, el primer operando, desde eldispositivo de almacenamiento;restar del primer operando buscado y recuperado el valor en curso determinado del temporizador de CPU, afin de producir un primer resultado;almacenar el primer resultado en un cuarto registro, de tal modo que el primer resultado representa lacantidad del recurso utilizada por la tarea durante este intervalo de tiempo;sumar el contenido del segundo registro y un valor del segundo campo de desplazamiento a fin de formaruna dirección de un segundo operando;buscar y recuperar, basándose en la dirección formada del segundo operando, el segundo operando desdeel dispositivo de almacenamiento;almacenar el segundo operando en un quinto registro, de tal modo que el segundo operando comprendeuna cantidad de tiempo utilizada previamente para la tarea; de tal manera que el tiempo de CPU total utilizadohasta ese momento por la tarea se determina añadiendo el primer resultado almacenado en el cuarto registro ala cantidad de tiempo previamente utilizada para la tarea, almacenada en el quinto registro;buscar y recuperar, basándose en la dirección del quinto operando, el tercer operando desde el dispositivode almacenamiento; yalmacenar el tercer operando recuperado en el tercer registro, de tal modo que el tercer operandocomprende indicadores que designan información de tarea, de manera que la dirección del tercer operando enel tercer registro es sobrescrita por el tercer operando recuperado.

Description

Equipo de extracción de tiempo de CPU.
Campo técnico
Esta invención se refiere, en general, al procesamiento o tratamiento dentro de un entorno de tratamiento y, en particular, a una instalación o equipo para determinar de forma eficiente el uso de recursos de las tareas.
Antecedentes de la invención
La determinación del uso de los recursos es crucial para muchos aspectos del tratamiento, incluyendo el refinamiento de código, la facturación, etc. Uno de los recursos para los que se determina la utilización es el tiempo de procesador. En la z/Architecture, ofrecida por la International Business Machines Corporation, se proporciona un temporizador que mide el tiempo de unidad central de procesamiento (CPU –“central processing unit”) transcurrido y causa una interrupción una vez transcurrida una cantidad especificada de tiempo.
Este temporizador es ajustado por una instrucción de control de Ajuste de Temporizador de CPU (SPT –“Set CPU Timer”), y el contenido del temporizador se inspecciona a través de una instrucción de control de Almacenamiento de Temporizador de CPU (“STPT –“Store CPU Timer”). Estas dos instrucciones son instrucciones privilegiadas o preferentes para garantizar la precisión del tiempo y, como tales, no son utilizables por programas de establecimiento de problemas (esto es, programas de usuario).
Además de lo anterior, el sistema operativo z/OS®, ofrecido por la International Business Machines Corporation, también proporciona una rutina de servicio a la que se hace referencia como TIMEUSED (TIEMPO UTILIZADO), que está disponible para los programas de establecimiento de problemas. Un programa u operación apela al servicio con el fin de determinar la cantidad de tiempo de CPU que ha empleado un fragmento o pieza de código (por ejemplo, una tarea). La rutina de servicio TIMEUSED computa el tiempo transcurrido, añade el tiempo acumulado y devuelve el valor al programa. Los cálculos de la rutina TIMEUSED deben llevarse a cabo a la vez que esta es inhabilitada para interrupciones, puesto que cualquier interrupción podría afectar adversamente a los resultados mediante la manipulación del temporizador de CPU o del acumulador.
Se contacta con la rutina de servicio TIMEUSED a través de instrucciones de llamada a programa y de retorno de programa. La rutina se inhabilita para interrupciones, obtiene y libera un bloqueo de CPU, establece un entorno de recuperación, calcula el tiempo transcurrido y se rehabilita una vez completado su trabajo, todo lo cual lleva cientos de ciclos de CPU. Cuando se trata de medir un pequeño fragmento de código, las actuaciones preliminares de la rutina de servicio TIMEUSED pueden perturbar gravemente lo que se está midiendo.
El documento US-B-6.385.637 describe un método para determinar el uso de tiempo de CPU de las tareas utilizando un temporizador de tratamiento periódico. El documento US-A-6.016.466 describe la determinación del tiempo de ejecución para una porción de software mediante la obtención de valores de sello temporal. El documento WO-A00/72143 proporciona estadística de instrumentación en el nivel de subrutina.
Sumario de la invención
Basándose en lo anterior, existe la necesidad de una instalación o equipo para determinar de forma eficiente el uso de los recursos, tal como el tiempo de CPU transcurrido de una tarea. En particular, existe la necesidad de un equipo que determine de un modo eficiente el uso de recursos de las tareas sin apelar a servicios del sistema operativo. Existe la necesidad de que el usuario tenga la capacidad de determinar de un modo eficiente el uso de los recursos.
Las desventajas de la técnica anterior se superan, y se proporcionan ventajas adicionales, mediante la provisión de un método tal como se reivindica en la reivindicación 1.
Los productos de sistema y programa informáticos correspondientes al método anteriormente resumido, así como una o más instrucciones, se describen y reivindican también en la presente memoria.
Características y ventajas adicionales se constatan a través de las técnicas de la presente invención. Otras realizaciones y aspectos de la invención se describen en detalle en esta memoria y se consideran parte de la invención reivindicada.
Breve descripción de los dibujos
Uno o más aspectos de la presente invención se destacan particularmente y se reivindican distintivamente como ejemplos en las reivindicaciones proporcionadas a la conclusión de la memoria. Los anteriores y otros objetos, características y ventajas de la invención se ponen de manifiesto de un modo evidente a partir de la siguiente descripción detallada, tomada en combinación con los dibujos que se acompañan, en los cuales:
La Figura 1 ilustra una realización de un entorno de procesamiento o tratamiento que incorpora y utiliza uno o más aspectos de la presente invención;
La Figura 2 representa una realización de la lógica asociada con la determinación del uso de los recursos, de acuerdo con un aspecto de la presente invención;
La Figura 3 ilustra un ejemplo de un formato de una instrucción de Extracción de Tiempo de CPU que se utiliza de acuerdo con un aspecto de la presente invención;
La Figura 4a ilustra una realización de los campos de registro general 0 utilizados por la instrucción de Extracción de Tiempo de CPU de un aspecto de la presente invención;
La Figura 4b representa una realización de los campos de registro general 1 empleados por la instrucción de Extracción de Tiempo de CPU de un aspecto de la presente invención;
La Figura 5 ilustra una realización de la lógica asociada con la realización o ejecución de la instrucción de Extracción de tiempo de CPU, de acuerdo con un aspecto de la presente invención;
La Figura 6 es una representación esquemática de las operaciones de la instrucción de Extracción de Tiempo de CPU de un aspecto de la presente invención; y
La Figura 7 representa un ejemplo de un producto de programa informático que incorpora uno o más aspectos de la presente invención.
Mejor modo de llevar a cabo la invención
De acuerdo con un aspecto de la presente invención, se proporciona una instalación o equipo para determinar eficientemente el uso de recursos de las tareas que se ejecutan dentro de un entorno de procesamiento o tratamiento. En un ejemplo, se proporciona un equipo en el que el usuario (por ejemplo, un código de usuario, aplicación de usuario, programa de usuario, etc.) puede medir con precisión el tiempo de procesador requerido para ejecutar un fragmento de código particular (al que se hace referencia en la presente memoria como tarea). Este equipo determina el tiempo de procesador transcurrido sin actuaciones preliminares que hayan distorsionado tales mediciones, tales como las actuaciones preliminares asociadas con el uso de un servicio de sistema operativo con el fin de determinar el tiempo transcurrido.
Una realización de un entorno de procesamiento o tratamiento que incorpora y utiliza uno o más aspectos de la presente invención, se describe con referencia a la Figura 1. El entorno de tratamiento 100 es, por ejemplo, un entorno de tratamiento múltiple que incluye una pluralidad de procesadores 102 (por ejemplo, unidades centrales de procesamiento (CPUs –“central processing units”), una memoria 104 (por ejemplo, una memoria principal) y uno o más dispositivos de entrada / salida (E/S –“I/O (input / output)”) 106, conectados entre sí a través de, por ejemplo, uno o más buses 108 u otras conexiones.
Como un ejemplo, cada procesador 102 es un servidor de IBM System ZTM, ofrecido por la International Business Machines Corporation, de Armonk, Nueva York, y uno o más de los procesadores ejecutan un sistema operativo, tal como el z/OS®, también ofrecido por la International Business Machines Corporation. (IBM y z/OS son marcas comerciales registradas de la International Business Machines Corporation, de Armonk, Nueva York, USA. Otros nombres utilizados en esta memoria pueden ser marcas comerciales registradas, marcas comerciales o nombres de producto de la International Business Machines Corporation o de otras compañías.)
El tratamiento dentro del entorno de tratamiento se ve facilitado por la provisión de una instalación o equipo que permite la determinación del uso de los recursos, tal como el tiempo de procesador transcurrido (por ejemplo, de CPU), sin que sea necesaria la apelación a un servicio de sistema operativo o sin utilizar instrucciones u operaciones privilegiadas.
Una realización de la lógica asociada con la determinación del uso de los recursos se describe con referencia a la Figura 2. Esta lógica se lleva a cabo mediante una unidad de procesamiento del entorno de tratamiento, en respuesta a, por ejemplo, una petición por parte de una aplicación de usuario (por ejemplo, código no privilegiado o preferente). El uso de los recursos se determina para una tarea en ausencia de una apelación o llamada a un servicio de sistema operativo y sin utilizar operaciones privilegiadas; ETAPA 200.
Inicialmente, se determina un valor en curso de un contador utilizado para efectuar un seguimiento del recurso para la tarea, tal como el tiempo utilizado, mediante la lectura del valor de contador, según se estipula por la lógica; ETAPA 202. El valor determinado es entonces restado de un valor guardado, que es, por ejemplo, el valor del contador cuando este se pone en marcha; ETAPA 204. En un ejemplo, el contador se reduce a medida que el recurso es utilizado por la tarea, y se lee el valor en curso del contador, en respuesta a la petición. El resultado de la sustracción o resta representa la cantidad de recurso utilizado por la tarea para este intervalo de tiempo, que se define por los valores de inicio y de final del contador; ETAPA 206.
En un ejemplo, las operaciones utilizadas para determinar el uso de recursos se llevan a cabo por medio de una instrucción. Como un ejemplo específico, se proporciona una instrucción para determinar una cantidad de tiempo de procesador utilizada para una tarea. La instrucción puede ser implementada en muchas arquitecturas, y puede ser emulada. Como ejemplos de ello, la instrucción se ejecuta en dispositivos físicos o hardware por medio de un procesador; o bien mediante la emulación de un conjunto de instrucciones que incluye esta instrucción, por la ejecución de programación o software en una unidad de procesamiento que tiene un conjunto de instrucciones nativas diferente. En un ejemplo particular, la instrucción se implementa en la z/Architecture, ofrecida por la International Business Machines Corporation, y se hace referencia a ella en la presente memoria como una instrucción de Extracción de tiempo de CPU (ECTG –“Extract CPU Time”).
Una instrucción 300 de Extracción de Tiempo de CPU (Figura 3) es una instrucción no privilegiada e incluye, por ejemplo, un código de funcionamiento 302a, 302b que designa la instrucción de Extracción de Tiempo de CPU; un registro general 304, cuyo contenido especifica un tercer operando utilizado por la instrucción; un registro de base 306, que puede ser cualquiera de dieciséis registros de propósito general de la unidad de procesamiento e incluye una porción de una dirección de un primer operando en almacenamiento utilizado por la instrucción; un valor de desplazamiento 308, que es, por ejemplo, un número binario de 12 bits sin asignar, añadido al contenido del registro 306 para proporcionar la dirección del primer operando en almacenamiento; un registro de base 310, que de nuevo es cualquiera de los dieciséis registros de propósito general existentes en la unidad de procesamiento e incluye una porción de la dirección de un segundo operando en almacenamiento, utilizado por la instrucción; y un valor de desplazamiento 312, que se añade al contenido del registro 310 con el fin de proporcionar la dirección del segundo operando en almacenamiento para la instrucción.
Además de los registros que se han descrito anteriormente, la instrucción de Extracción de Tiempo de CPU también utiliza, implícitamente, dos registros generales que no tienen que ser codificados en la instrucción, pero que se utilizan por la instrucción. Estos registros incluyen el registro general 0 y el registro general 1.
El registro general 0 (400; Figura 4a) incluye, por ejemplo, el tiempo transcurrido desde el último despacho de la tarea 402. Es la diferencia que resulta de restar del primer operando el valor del temporizador de CPU en curso, cuyo contenido incluye el valor del temporizador de TPU en el despacho de la tarea.
El registro general 1 (410; Figura 4b) incluye, por ejemplo, un valor del acumulador de tiempo de tarea cuando la tarea fue despachada; 412. Este es el contenido del segundo operando de la instrucción.
Si bien se han descrito en lo anterior ejemplos de registros, cada uno de los registros puede incluir más información
o menos, o información diferente. Por otra parte, cada uno de ellos puede incluir datos adicionales que no se requieren, necesariamente, en uno o más aspectos de la presente invención. La posición específica dentro de los registros para la información depende de la implementación y/o de la arquitectura.
Una realización de la lógica asociada con la instrucción de Extracción de Tiempo de CPU, se describe con referencia a la Figura 5. Como un ejemplo, esta instrucción es ejecutada por un procesador del entorno de tratamiento en representación de una aplicación de usuario no privilegiada (por ejemplo, en estado de problemas) que solicita la operación al referirse a una tarea particular. La instrucción de Extracción de Tiempo de CPU es una instrucción no privilegiada que no invoca o apela a un servicio de sistema operativo. Hace, sin embargo, supóngase en esta realización, que el temporizador de CPU (por ejemplo, un contador, registro, etc.) se ajuste cuando se despacha una tarea. En un ejemplo, el temporizador es ajustado por una instrucción de Ajuste de Temporizador de CPU (STP – “Set CPU Timer”), que es una instrucción privilegiada que se describe en la divulgación “z/Architecture: Principles of Operation” (z/Architecture: principios de funcionamiento), IBM® Publication Nº SA22-7832-04, septiembre de 2005. Puede también ser ajustado por cualesquiera otros medios. El temporizador se ajusta en un valor dado que representa un fragmento o segmento de tiempo especificado para la ejecución de la tarea (por ejemplo, entre 10 y 12 ms).
En respuesta a la instrucción de Extracción de Tiempo de CPU, se determina el valor en curso del temporizador de CPU; ETAPA 500. Por ejemplo, el temporizador se reduce a medida que el procesador se hace cargo de la tarea y, en respuesta a la ejecución de la instrucción de Extracción de Tiempo de CPU, se observa el valor del temporizador en ese instante. Esto incluye, por ejemplo, la lectura del registro que alberga el temporizador. En una realización, el valor del temporizador puede ser extraído en cualquier momento, incluso antes del final del segmento temporal proporcionado para la tarea y sin tener que esperar a la interrupción del temporizador.
El valor en curso del temporizador de CPU se resta entonces del primer operando de la instrucción; ETAPA 502. El primer operando representa el valor del temporizador de CPU en el momento en que fue despachada la tarea. Por ejemplo, cuando se despacha una tarea, el temporizador de CPU es ajustado en un valor escogido (por ejemplo, entre 10 y 12 ms) y ese valor es almacenado en un dispositivo de almacenamiento (por ejemplo, PSDATSAV). De esta forma, PSDATSAV – Temporizador de CPU en curso = tiempo de procesador transcurrido desde el último despacho de la tarea. Este valor se sitúa en el registro general 0; ETAPA 504.
Además de lo anterior, se extrae también información adicional, en una realización; ETAPA 506. Como un ejemplo, el segundo operando de la instrucción se coloca sin cambios en el registro general 1. Este segundo operando incluye, por ejemplo, una dirección de un bloque de control de tarea (por ejemplo, TCBTTUSD) que guarda la cantidad previamente utilizada del tiempo de CPU total para la tarea. Mediante la extracción y el emplazamiento de esta información en el registro general 1, la aplicación de usuario es capaz de determinar la cantidad total de tiempo de procesador utilizada hasta ese momento, al sumar los resultados del registro general 0 y el registro general 1.
También, en una realización, información ubicada en la posición del tercer operando de la instrucción reemplaza el contenido del registro general R3. Esta información incluye diversos tipos de información, incluyendo, pero sin limitarse a ellos, indicadores que designan información importante o deseada para la tarea, un factor de escala utilizable a la hora de ajustar el tiempo de procesador para propósitos de facturación, así como otros tipos de información.
En la Figura 6 se representa una información esquemática de las operaciones. B1D1 (600) hace referencia a un primer operando situado en el dispositivo de almacenamiento 602. Del contenido del primer operando 604 se resta el valor del temporizador 606 de CPU. La diferencia es almacenada en el registro general 0 (608). B2D2 (610) hace referencia a un segundo operando ubicado en el dispositivo de almacenamiento 612, cuyo contenido se sitúa sin cambios en el registro general 1 (614). Adicionalmente, R3 (616) se refiere a un tercer operando situado en el dispositivo de almacenamiento 618, cuyo contenido se sitúa sin cambios en el registro general R3 (620).
En una realización, las anteriores operaciones tienen lugar, todas ellas, dentro de la misma unidad de funcionamiento, sin la posibilidad de que sean interrumpidas. Al llevar a cabo estas operaciones automáticamente, los valores retienen sus significados.
Se ha descrito en detalle en lo anterior un equipo para determinar de forma eficiente el uso de recursos sin las actuaciones preliminares asociadas con los costosos servicios de sistema operativo y/o sin tener que utilizar operaciones privilegiadas. En particular, se ha descrito un equipo de Extracción de Tiempo de CPU que permite la determinación eficiente de la cantidad de tiempo de CPU consumida, sin las costosas actuaciones preliminares de apelar a un servicio de sistema operativo y/o sin tener que emitir instrucciones de Llamada a programa y/o de Retorno de programa. Este equipo hace posible que un programa de aplicación mida de forma precisa el tiempo de CPU requerido para llevar a cabo un fragmento de código particular sin las significativas actuaciones preliminares que han lastrado tradicionalmente tales mediciones. Las mediciones son útiles en muchos aspectos, incluyendo, aunque sin limitarse a ellos, el ajuste fino del código de aplicación y la facturación. El equipo permite, ventajosamente, a un programa de aplicación determinar de un modo eficiente la cantidad de tiempo de tarea utilizado en cualquier momento dado, y no solo al final de un segmento de tiempo. Esto permite al programa determinar efectivamente instantes de instrucción en el intervalo de los microsegundos o los nanosegundos, sin tener que esperar hasta que hayan transcurrido microsegundos.
Pueden incluirse uno o más aspectos de la presente invención en un artículo de fabricación (por ejemplo, uno o más productos de programa informático) que tiene, por ejemplo, un medio de soporte de información utilizable por una computadora. El medio de soporte de información tiene en su interior, por ejemplo, medios o lógica de código de programa legible por computadora (por ejemplo, instrucciones, código, comandos u órdenes, etc.) destinada a hacer posibles y facilitar las capacidades de la presente invención. El artículo de fabricación puede ser incluido formando parte de un sistema informático o venderse por separado.
Un ejemplo de un artículo de fabricación o de un producto de programa informático que incorpora uno o más aspectos de la presente invención se describe con referencia a la Figura 7. Un producto de programa informático 700 incluye, por ejemplo, uno o más medios de soporte de información 702 utilizables por una computadora y destinados a almacenar en ellos medios o lógica de código de programa 704 legible por computadora, a fin de hacer posibles y facilitar uno o más aspectos de la presente invención. El medio de soporte de información puede ser electrónico, magnético, óptico, electromagnético, por infrarrojos, o un sistema semiconductor (o aparato, o dispositivo), o bien un medio de propagación. Ejemplos de medio de soporte de información legible por computadora incluyen una memoria de semiconductor o de estado sólido, cinta magnética, un disquete informático extraíble, una memoria de acceso aleatorio (RAM –“random access memory”) una memoria de solo lectura (ROM –“read-only memory”), un disco magnético rígido y un disco óptico. Ejemplos de discos ópticos incluyen memoria de solo lectura de disco compacto (CD-ROM –“compact disk-read only memory”), disco compacto de lectura / escritura (CD-R/W – “compact disk-read / write”) y DVD.
Una secuencia de instrucciones de programa o un conjunto lógico de uno o más módulos definidos por uno o más medios o lógica de código de programa legible por computadora, dirigen el desempeño de uno o más aspectos de la presente invención.
Si bien se han propuesto en esta memoria uno o más ejemplos, estos son solo ejemplos. Son posibles muchas variaciones sin apartarse del espíritu de la presente invención. Por ejemplo, entornos de tratamiento distintos del ejemplo proporcionado en la presente memoria pueden incluir uno o más aspectos de la presente invención y/o beneficiarse de ellos. A modo de ejemplo, uno o más procesadores pueden ser distintos de los procesadores del IBM System ZTM y/o ejecutar sistemas operativos distintos del z/OS®. Por otra parte, no es necesario que el entorno esté basado en la z/Architecture, sino que, en lugar de ello, puede estar basado en otras arquitecturas, ofrecidas, por ejemplo, por Intel, Sun Microsystems y otras. Aún de forma adicional, la instrucción puede incluir otros registros o entidades distintos de los registros para designar información. Por otra parte, son posibles diferentes datos y/o ubicación dentro de los registros y/o entidades. Aún de manera adicional, el temporizador puede ser distinto de los contadores o registros. Es posible utilizar cualquier mecanismo para determinar el uso de los recursos. El término “temporizador” tiene intención de incluir un amplio abanico de mecanismos, incluyendo contadores y registros, aunque sin limitarse a estos. Por otro lado, si bien en las realizaciones de la presente memora el temporizador se reduce o decrementa, en otras realizaciones puede incrementarse y/o seguir un cierto patrón. Existen muchas otras variantes.
Además, un entorno puede incluir un emulador (por ejemplo, software u otros mecanismos de emulación) en el que se emula una arquitectura particular o un subconjunto de la misma. En semejante entorno, una o más funciones de emulación del emulador pueden implementar uno o más aspectos de la presente invención, incluso aunque una computadora que ejecute el emulador pueda tener una arquitectura diferente de las capacidades que se están emulando. Como un ejemplo, en el modo de emulación, la instrucción u operación específica que se está emulando es descodificada, y se construye una función de emulación apropiada para implementar la instrucción u operación individual.
En un entorno de emulación, una computadora anfitriona o principal incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de búsqueda y recuperación de instrucciones, destinada a buscar y recuperar instrucciones en una memoria y, opcionalmente, a proporcionar un registro local de almacenamiento temporal para la instrucción recuperada; una unidad de descodificación de instrucciones, destinada a recibir la unidad de búsqueda y recuperación de instrucciones y a determinar el tipo de instrucciones que se han localizado y recuperado; y una unidad de ejecución de instrucciones, destinada a ejecutar las instrucciones. La ejecución puede incluir la carga de datos en un registro para memoria; el almacenamiento de los datos de vuelta en la memoria desde el registro; o la realización de algún tipo de operación aritmética o lógica, según se determina por la unidad de descodificación. En otro ejemplo, cada unidad se ha implementado en software, Por ejemplo, las operaciones que son realizadas por las unidades se implementan como una o más subrutinas dentro del software del emulador.
Por otra parte, puede utilizarse un sistema de tratamiento de datos adecuado para almacenar y/o ejecutar código de programa y que incluye al menos un procesador, conectado directa o indirectamente a elementos de memoria a través de un bus del sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real del código de programa, dispositivo de almacenamiento masivo, y memoria caché que proporciona el almacenamiento temporal de al menos algún código de programa con el fin de reducir el número de veces que ha de recuperarse código desde el dispositivo de almacenamiento masivo durante la ejecución.
Pueden conectarse al sistema dispositivos de Entrada / Salida, o I/O (incluyendo teclados, dispositivos de presentación visual, dispositivos de apuntamiento o punteros, etc., aunque sin limitarse a estos), ya sea directamente, ya sea a través de la intervención de controladores de E/S. También pueden conectarse adaptadores de red al sistema al objeto de permitir que el sistema de tratamiento de datos quede conectado a otros sistemas de tratamiento de datos o a impresoras o dispositivos de almacenamiento remotos, a través de la intervención de redes privadas o públicas. Los Módems [moduladores-desmoduladores], los módems por cable y las tarjetas de Ethernet son solo unos pocos de los tipos disponibles de adaptadores de red.
Tal y como se ha utilizado en la presente memoria, el término “operando” no solo incluye y/o se refiere a operandos de una instrucción, sino también a operandos, así como a parámetros o argumentos que se hacen pasar entre funciones de programa, o a cualesquiera otros datos que se hagan pasar entre entidades. Por otra parte, una tarea incluye cualquier porción de código, incluyendo una aplicación o programa completo o cualquier porción del mismo.
Las capacidades de uno o más aspectos de la presente invención pueden llevarse a la práctica en software, en firmware o software incorporado permanentemente en hardware, en hardware o en alguna combinación de los mismos. Puede proporcionarse al menos un dispositivo de almacenamiento de programa, legible por una máquina y que incorpora al menos un programa de instrucciones ejecutables por la máquina con el fin de llevar a cabo las capacidades de la presente invención.

Claims (7)

  1. REIVINDICACIONES
    1.-Un método para medir el tiempo de procesamiento o tratamiento acumulado para tareas seleccionadas,mediante la ejecución de una instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU, dentro de un sistema informático que incluye un conjunto de 16 registros accesibles por la instrucción y un temporizador de CPU, de tal manera que el método comprende:
    obtener, para la ejecución de la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU definida por unaarquitectura, la instrucción EXTRACCIÓN DE TIEMPO DE CPU que comprende un campo de código op (opcode) que identifica la instrucción, un primer campo de base (B1) para identificar un primer registro y un primer campo de desplazamiento (D1), un segundo campo de base (B2) para identificar un segundo registro y un segundo campo de desplazamiento (D2), y un tercer registro, de tal manera que el tercer registro guarda una dirección de un tercer operando; y
    ejecutar la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU obtenida, automáticamente en el estado no privilegiado, invocando o llamando a un servicio de sistema operativo, de tal manera que la ejecución comprende:
    determinar un valor en curso de un temporizador de CPU decremental;
    sumar el contenido del primer registro y un valor del primer campo de desplazamiento con el fin de formar una dirección de un primer operando en almacenamiento, de tal modo que el primer operando representa el valor del temporizador de CPU en el momento en que se despachó una tarea;
    buscar y recuperar, basándose en la dirección formada del primer operando, el primer operando, desde el dispositivo de almacenamiento;
    restar del primer operando buscado y recuperado el valor en curso determinado del temporizador de CPU, a fin de producir un primer resultado;
    almacenar el primer resultado en un cuarto registro, de tal modo que el primer resultado representa la cantidad del recurso utilizada por la tarea durante este intervalo de tiempo;
    sumar el contenido del segundo registro y un valor del segundo campo de desplazamiento a fin de formar una dirección de un segundo operando;
    buscar y recuperar, basándose en la dirección formada del segundo operando, el segundo operando desde el dispositivo de almacenamiento;
    almacenar el segundo operando en un quinto registro, de tal modo que el segundo operando comprende una cantidad de tiempo utilizada previamente para la tarea; de tal manera que el tiempo de CPU total utilizado hasta ese momento por la tarea se determina añadiendo el primer resultado almacenado en el cuarto registro a la cantidad de tiempo previamente utilizada para la tarea, almacenada en el quinto registro;
    buscar y recuperar, basándose en la dirección del quinto operando, el tercer operando desde el dispositivo de almacenamiento; y
    almacenar el tercer operando recuperado en el tercer registro, de tal modo que el tercer operando comprende indicadores que designan información de tarea, de manera que la dirección del tercer operando en el tercer registro es sobrescrita por el tercer operando recuperado.
  2. 2.-El método de acuerdo con la reivindicación 1, en el cual el cuarto registro se define por la arquitectura de manera que sea el registro 0 de los registros 0-15, y el quinto registro es definido por la arquitectura de manera que sea el registro 1 de los registros 0-15.
  3. 3.-El método de acuerdo con la reivindicación 1, que comprende la etapa adicional consistente en que:
    antes de obtener, para su ejecución, la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU, el temporizador de CPU se ajusta en un valor que representa una cantidad especificada de tiempo asignada para la ejecución de la tarea por el sistema informático.
  4. 4.-El método de acuerdo con la reivindicación 3, en el cual los indicadores del tercer operando recuperado contienen información que se utiliza para ajustar el tiempo de CPU para facturar a un usuario por una cantidad de tiempo de CPU empleada para la tarea.
  5. 5.-El método de acuerdo con la reivindicación 1, de tal manera que el método se lleva a cabo en una unidad de procesamiento de una arquitectura diferente que está emulando la ejecución de la instrucción de máquina EXTRACCIÓN DE TIEMPO DE CPU.
  6. 6.-Un sistema que comprende medios configurados para llevar a cabo todas las etapas del método de acuerdo con cualquier reivindicación de método precedente.
  7. 7.-Un programa informático que comprende instrucciones para llevar a cabo todas las etapas del método de acuerdo con cualquiera de las reivindicaciones precedentes de método, cuando dicho programa informático se ejecuta en un sistema informático.
ES08161018T 2006-05-19 2006-12-20 Equipo de extracción de tiempo de CPU Active ES2389894T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US437220 2006-05-19
US11/437,220 US8117614B2 (en) 2006-05-19 2006-05-19 Extract CPU time facility

Publications (1)

Publication Number Publication Date
ES2389894T3 true ES2389894T3 (es) 2012-11-02

Family

ID=37758905

Family Applications (1)

Application Number Title Priority Date Filing Date
ES08161018T Active ES2389894T3 (es) 2006-05-19 2006-12-20 Equipo de extracción de tiempo de CPU

Country Status (12)

Country Link
US (4) US8117614B2 (es)
EP (2) EP1860567A1 (es)
CN (1) CN101443738B (es)
CY (1) CY1113092T1 (es)
DK (1) DK1980944T3 (es)
ES (1) ES2389894T3 (es)
GB (1) GB2438230A (es)
PL (1) PL1980944T3 (es)
PT (1) PT1980944E (es)
SI (1) SI1980944T1 (es)
TW (1) TWI447644B (es)
WO (1) WO2007134648A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117614B2 (en) 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
EP2056198A4 (en) * 2006-08-24 2010-08-18 Netcleus Systems Corp TASK PROCESSING DEVICE
GB2473194A (en) * 2009-09-02 2011-03-09 1E Ltd Monitoring the performance of a computer based on the value of a net useful activity metric
US8572357B2 (en) * 2009-09-29 2013-10-29 International Business Machines Corporation Monitoring events and incrementing counters associated therewith absent taking an interrupt
US9256426B2 (en) * 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
KR101991687B1 (ko) 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
US9465659B2 (en) * 2012-12-19 2016-10-11 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic task completion scaling of system resources for a battery operated device
KR20140080058A (ko) * 2012-12-20 2014-06-30 삼성전자주식회사 멀티코어를 위한 로드 밸런싱 방법 및 휴대 단말
US9658888B2 (en) * 2013-08-05 2017-05-23 International Business Machines Corporation Thresholding task control blocks for staging and destaging
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253432A5 (es) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
AU7804381A (en) 1981-10-13 1983-05-05 International Business Machines Corp. Method and apparatus for measurements of channel operation
US4388688A (en) * 1981-11-10 1983-06-14 International Business Machines Corp. Shared TOD clock modification bit
US4497022A (en) * 1982-10-19 1985-01-29 International Business Machines Corporation Method and apparatus for measurements of channel operation
US4937780A (en) 1986-05-30 1990-06-26 Bull Nh Information Systems, Inc. Single instruction updating of processing time field using software invisible working registers
US5047928A (en) * 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5072376A (en) * 1988-06-10 1991-12-10 Amdahl Corporation Measuring utilization of processor shared by multiple system control programs
JP2779032B2 (ja) * 1990-01-23 1998-07-23 株式会社日立製作所 情報処理装置
JPH03226883A (ja) * 1990-01-31 1991-10-07 Mitsubishi Electric Corp 制御プロセッサ
JP3169597B2 (ja) 1990-05-16 2001-05-28 エヌイーシーソフト株式会社 マルチタスク実行時間アカウント方法とその機構
US5615354A (en) 1992-12-23 1997-03-25 International Business Machines Corporation Method and system for controlling references to system storage by overriding values
US5758144A (en) 1994-06-24 1998-05-26 International Business Machines Corporation Database execution cost and system performance estimator
US5696702A (en) * 1995-04-17 1997-12-09 Skinner; Gary R. Time and work tracker
US5963914A (en) * 1995-04-17 1999-10-05 Skinner; Gary R. Network time and work tracker
JPH08292956A (ja) 1995-04-20 1996-11-05 Mitsubishi Electric Corp データベース管理装置及びデータベース管理方法
WO1998052122A1 (en) 1997-05-14 1998-11-19 Compuware Corporation Accurate profile and timing information for multitasking systems
US6128710A (en) * 1997-05-28 2000-10-03 International Business Machines Corporation Method utilizing a set of blocking-symbol resource-manipulation instructions for protecting the integrity of data in noncontiguous data objects of resources in a shared memory of a multiple processor computer system
US5937199A (en) * 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US6385637B1 (en) 1997-08-21 2002-05-07 Rockwell Science Center, Inc. Periodic process timer
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6032248A (en) 1998-04-29 2000-02-29 Atmel Corporation Microcontroller including a single memory module having a data memory sector and a code memory sector and supporting simultaneous read/write access to both sectors
US6438704B1 (en) * 1999-03-25 2002-08-20 International Business Machines Corporation System and method for scheduling use of system resources among a plurality of limited users
US6247170B1 (en) 1999-05-21 2001-06-12 Bull Hn Information Systems Inc. Method and data processing system for providing subroutine level instrumentation statistics
KR100613201B1 (ko) * 2000-08-28 2006-08-18 마이크로코넥트 엘엘씨 씨피유 사용량 측정 방법
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
TW538335B (en) 2001-12-24 2003-06-21 Winbond Electronics Corp Method and device for speeding up reading and writing the register for the processor
US7243145B1 (en) * 2002-09-30 2007-07-10 Electronic Data Systems Corporation Generation of computer resource utilization data per computer application
US7320013B2 (en) * 2002-12-12 2008-01-15 Adaptec, Inc. Method and apparatus for aligning operands for a processor
US8484643B2 (en) 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
US20040267548A1 (en) * 2003-06-25 2004-12-30 Jones James O. Workload profiling in computers
US6925424B2 (en) * 2003-10-16 2005-08-02 International Business Machines Corporation Method, apparatus and computer program product for efficient per thread performance information
US7426731B2 (en) * 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US7672983B2 (en) * 2005-12-19 2010-03-02 Sun Microsystems, Inc. Method and apparatus for tracking activity of a garbage collector with a plurality of threads that operate concurrently with an application program
US8020164B2 (en) * 2005-12-22 2011-09-13 International Business Machines Corporation System for determining and reporting benefits of borrowed computing resources in a partitioned environment
US8117614B2 (en) 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
US20090089123A1 (en) * 2007-06-29 2009-04-02 Sylvia Delcheva Method and a Tool for Performance Measurement of a Business Scenario Step Executed by a Single User

Also Published As

Publication number Publication date
WO2007134648A1 (en) 2007-11-29
TWI447644B (zh) 2014-08-01
CN101443738A (zh) 2009-05-27
US20120109622A1 (en) 2012-05-03
SI1980944T1 (sl) 2012-11-30
TW200821921A (en) 2008-05-16
EP1860567A1 (en) 2007-11-28
GB0625722D0 (en) 2007-02-07
CY1113092T1 (el) 2016-04-13
US20130311757A1 (en) 2013-11-21
DK1980944T3 (da) 2012-09-10
US8117614B2 (en) 2012-02-14
US20070271566A1 (en) 2007-11-22
US10572301B2 (en) 2020-02-25
US8516485B2 (en) 2013-08-20
EP1980944A3 (en) 2009-01-14
CN101443738B (zh) 2012-05-02
GB2438230A (en) 2007-11-21
PL1980944T3 (pl) 2012-11-30
EP1980944A2 (en) 2008-10-15
EP1980944B1 (en) 2012-08-15
US9047078B2 (en) 2015-06-02
PT1980944E (pt) 2012-09-20
US20150261565A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
ES2389894T3 (es) Equipo de extracción de tiempo de CPU
US9092215B2 (en) Mapping between registers used by multiple instruction sets
JP5778283B2 (ja) データ処理装置のデバッグ処理
US11755442B2 (en) Apparatus and method for multithreading-aware performance monitoring events
US20120117564A1 (en) Guest timer facility in a virtualized processing system
JP2008518367A (ja) 仮想マシン環境におけるタイマ・オフセット機構
WO2000023875A1 (en) System with wide operand architecture, and method
US8489867B2 (en) Monitoring events and incrementing counters associated therewith absent taking an interrupt
US11210103B2 (en) Execution of additional instructions prior to a first instruction in an interruptible or non-interruptible manner as specified in an instruction field
US20210208990A1 (en) Apparatus and method for generating performance monitoring metrics
WO2014131319A1 (zh) 一种操作系统进程识别跟踪及信息获取的方法和装置
Chow MIPS-X instruction set and programmer's manual
WO2022211882A1 (en) Methods, systems, and apparatuses for precise last branch record event logging
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
GB2451344A (en) Measuring resource usage using a register based elapsed time function
US8713289B2 (en) Efficiently emulating computer architecture condition code settings without executing branch instructions
JPH0192840A (ja) データ処理装置
Giesen León Analysis of Perfomance Monitoring Counter support and implementation of Performance Application Programming Interface (PAPI) on an automotive chip
Chang 32-bit 5-stage RISC pipeline processor with 2-Bit dynamic branch prediction functionality