EP1019826A1 - A method and system for continuous software monitoring - Google Patents

A method and system for continuous software monitoring

Info

Publication number
EP1019826A1
EP1019826A1 EP97942716A EP97942716A EP1019826A1 EP 1019826 A1 EP1019826 A1 EP 1019826A1 EP 97942716 A EP97942716 A EP 97942716A EP 97942716 A EP97942716 A EP 97942716A EP 1019826 A1 EP1019826 A1 EP 1019826A1
Authority
EP
European Patent Office
Prior art keywords
monitoring
computer program
functional
program
functional computer
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.)
Ceased
Application number
EP97942716A
Other languages
German (de)
French (fr)
Other versions
EP1019826A4 (en
Inventor
Geoffrey Peter Wong
Fergus O'brien
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.)
Jifmar Pty Ltd
Original Assignee
Royal Melbourne Institute of Technology Ltd
University of Melbourne
Ericsson Australia Pty Ltd
Melbourne Institute of Technology
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 Royal Melbourne Institute of Technology Ltd, University of Melbourne, Ericsson Australia Pty Ltd, Melbourne Institute of Technology filed Critical Royal Melbourne Institute of Technology Ltd
Publication of EP1019826A1 publication Critical patent/EP1019826A1/en
Publication of EP1019826A4 publication Critical patent/EP1019826A4/en
Ceased legal-status Critical Current

Links

Classifications

    • 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking

Definitions

  • This invention relates to a method of and system for continuously monitoring the performance of computer programs and software systems, and particularly throughout the life-cycle of the program or software system.
  • a method of continuously monitoring the performance or attributes of computer software comprising the steps of: compiling a functional computer program for execution in a target computer environment; specifying the attributes of the functional computer program to be monitored at the time the functional computer program is compiled and simultaneously compiling a monitoring computer program for parallel execution in said target computer environment; said monitoring computer program being adapted to extract data continuously from said functional computer program when said programs are executed in parallel; and analyzing said data to obtain information about the performance or other attributes of said functional computer program.
  • the functional and monitoring computer programs may be recorded on any convenient memory or data storage means.
  • data storage means including functional computer program and a monitoring computer program for monitoring the performance or other attributes of said functional computer program, said functional computer program being arranged to perform a functional application when executed in a target computer environment, wherein attributes of the functional computer program to be monitored are specified when the functional computer program is compiled, said monitoring computer program being compiled at the same time the functional computer program is compiled, and said monitoring computer program is adapted to extract data continuously from said functional computer program when the computer programs are executed simultaneously in parallel.
  • the functional and monitoring computer programs may be executed in a common processor unit, it is preferred that a separate monitoring processor be provided for executing the monitoring program in parallel to the functional computer program.
  • the functional computer program and the monitoring program are preferably compiled so that each process which is spawned in the functional computer program has its own monitoring process which is spawned in the monitoring program.
  • Each process of the functional computer program preferably has its own address space in order to minimize intrusion by the monitoring program.
  • some intrusive code, automatically supplied during compilation may be necessary to ensure that all monitored information is passed transparently between the functional and monitoring processes.
  • the functional computer program and the monitoring computer program are compiled to include links between the monitoring program and the functional computer program to enable data to be extracted from the functional computer program by the monitoring program.
  • a wide variety of aspects of performance or attributes of functional computer programs may be monitored by the method of the present invention. These include: current execution costs; exceptions in the functional program; the actual time spent in a function; and the use of external resources.
  • the monitoring process executed by the monitoring program is preferably arranged to rendezvous with the functional computer program on termination of a functional process performed by the functional computer program. This is particularly desirable if the monitoring process is collecting timing information, e.g. the actual time spent in a function.
  • the monitoring computer program may also be arranged to terminate a process of the functional computer program upon detection of a fatal error in said process by the monitoring computer program.
  • a system for continuously monitoring the performance or attributes of a functional computer program comprising: compilation means arranged to compile the functional computer program and a monitoring computer program from a source language into a computer code, the monitoring computer program being arranged to monitor attributes of the functional computer program specified at the time the functional computer program is compiled; execution means arranged to execute the monitoring computer program simultaneously in parallel with the functional computer program, wherein the monitoring program is arranged to interact with the functional computer program to extract data continuously from the functional computer program when said programs are executed simultaneously; and analyzing means for analyzing the data extracted from the functional computer program to continuously monitor the specified attributes of the functional computer program.
  • the execution means may comprise a common processor unit for executing the functional and monitoring computer programs simultaneously in parallel.
  • the execution means preferably includes an application processor for executing the functional computer program (the "main application") and a monitoring processor for simultaneously executing the monitoring program in parallel.
  • a communications link preferably a high speed communications bus, is conveniently provided between the main application processor and the monitoring processor to enable data to be extracted from the main application by the monitoring program.
  • the compilation means for compiling the functional and monitoring computer programs may comprise a single compiler. Alternatively, separate compilers may be used to compile the functional and monitoring computer programs. Where separate processors are used, a multiprocessor loader may be used to load the functional and monitoring programs into the main application processor and the monitoring processor respectively.
  • the monitoring processor When the monitoring processor is loaded with the monitoring program, it preferably includes a monitoring means for receiving and processing data from the main application.
  • the monitoring processor may also include memory means for storing statistical data about the main application which is monitored, and the analyzing means may comprise a log module which is adapted to process the data received from the main application by the monitoring means and statistical data from the memory means to produce information about the performance and attributes of the main application.
  • the system may conveniently also include display means, preferably one or more graphic displays, for displaying the information about the performance and attributes of the functional computer program produced by the analyzing means.
  • the system of the present invention is thus able to monitor the performance, quality and attributes of a functional computer program while it is being executed.
  • the system is built around the ability to provide continuous process monitors when compiling the computer code, with the process monitors being written in the same source language.
  • the source language chosen should be able to support multiple processes and process monitoring.
  • suitable languages available one of which is Erlang, a source language developed by Telefonaktiebolaget L M Ericsson. Erlang is particularly suitable for use in the present invention because its features include timing support, multiple process support, dynamic module loading, a built in error handling mechanism and real- time garbage collection.
  • FIG. 1 is a block diagram of a continuous monitoring computer system in accordance with the invention.
  • FIG. 1 there is shown a continuous monitoring computer system comprising first and second compilers 10 and 20, a main application processor 30, a monitoring processor 40 and a multiprocessor loader 50 for the main application processor 30 and the monitoring processor 40.
  • Each compiler 10, 20 is a modified Erlang compiler which is arranged to compile a computer program in computer code (C code) from a source code written in Erlang, a programming language developed by Telefonaktiebolaget L.M. Ericsson. It will, however, be appreciated that other programming languages may be used instead of Erlang in the present invention.
  • the first compiler 10 is arranged to compile a functional computer program, the "main application” from a standard application process 12.
  • the second compiler 20 is arranged to compile a monitoring program from an auto build monitoring process 22 using predetermined monitoring attributes or parameters 21 specified at the time the functional computer program is compiled.
  • the main application and the monitoring program are arranged to be run in parallel simultaneously by the main application processor 30 and by the monitoring processor 40.
  • the main application processor 30 and the monitoring processor 40 communicate with each other by a high speed communications link or bus 25 which enables the monitoring processor 40 to extract data continuously from the main application processor 30 as the functional computer program is executed by the main application processor 30.
  • the main application processor 30 and the monitoring processor 40 may utilize a shared memory to simulate the communications link between the processors.
  • the main application processor 30 executes the main application 32 which is programmed during compilation by compiler 10 to contain links 14 to the monitoring program.
  • the monitoring program is also programmed during compilation by the compiler 20 to contain links 24 to the main application program to be monitored.
  • the application processor 30 loaded with the main application 32 includes at least one spawn monitor 34 which, when the main application process is being run, passes data about the main application via the high speed bus 25 to the monitoring processor 40.
  • the monitoring processor 40 loaded with the monitoring program includes a monitoring module 42 for receiving and processing data from the spawn monitor 34 of the main application 32, a log processor 44, and a statistics processor 46 which includes memory means for storing statistical data about the main application process which is monitored.
  • the log processor 44 of the monitoring processor 40 is adapted to process data about the main application received by the monitoring module 42 and statistical data received from the statistics processor 46. In this manner, the log processor 44 can continuously examine and analyze data extracted from the main application process while it is being run by the main application processor 30 to produce information about the performance and attributes of the functional computer process representing the main application.
  • the log processor 44 is also able to communicate via the high speed bus 25 with a rendezvous section 36 of the main application 32 when a process in the main application is terminated so that the time taken to run the process in the main application can be monitored, and that any error information can be passed to the main application. If a fatal error in a process of the main application is detected by the monitoring processor 40, the process being monitored can be terminated by the log processor 44 without any change to the system state, and recovery initiated as if the process had not commenced.
  • the log processor 44 is in communication with one or more display means 60, preferably in the form of a graphical display which can display a graphical analysis about the performance or attributes of the main application process.
  • the monitoring processor 40 may be programmed to include a wide variety of different continuous process monitors for continuously monitoring different aspects of the performance or attributes of the main application process.
  • continuous process monitors which may be included in the monitoring processor are: a real-time profiler which functions as a statistical sampler of a program counter of the main application processor to keep a decaying record of current execution costs; an exception monitor which monitors exceptions throughout the system (down to the process level); an actual time monitor which measures the actual time spent in a process (it may also keep a record of other system activity); and an external resource access monitor 44 which can monitor the use of external resources such as disk channel, of each process.
  • Various other continuous process monitors may be provided, such as system specific monitors which can present data collected against the system specifications over a variety of time frames enabling the user to examine trends in the system. These include reliability and maintainability monitors.
  • system specific monitors which can present data collected against the system specifications over a variety of time frames enabling the user to examine trends in the system.
  • reliability and maintainability monitors include reliability and maintainability monitors.
  • the system of the present invention for providing continuous process monitors is built around the ability to provide system monitors automatically when compiling code. This provides a system similar to the provision of profiling in existing compilers except that the monitors will be written in the same source language.
  • a primary feature of Erlang is its management of multiple processes as a fundamental part of the system.
  • the feature is critical to the construction of a monitoring Erlang compiler and to plan for this capability in the construction phase .
  • the monitor is designed for a multiple processor environment although in a prototype system Unix process support (sockets and Unix communications between machines: internet sockets) is utilized to support multiple processes. To do this each process is linked into an Erlang runtime library which provides this communication support. Processes communicate via sockets in (or internet ports) with their Unix pid as the socket identifier. This (with the machine id) is the identifier that gets created when a process is spawned.
  • the Erlang runtime library also contains other support code for Erlang internals such as list and tuple management. The actual compilation takes place in a number of phases:
  • Lexing/parsing - this phase will produce an abstract syntax tree.
  • optimization break the tree into basic blocks for local expression optimization. Try 'global' (within a module) optimization; also do (importantly) last call optimization.
  • the compiler includes code in the functional process to spawn the hand coded monitoring process automatically using the existing Erlang system for process creation and control. Monitors are intended to be processes that simply collect information. These monitoring processes can then pass data along to other processes responsible for the analysis and presentation of that data. Since monitors are written in the source language (Erlang) the process communication mechanisms in Erlang can be exploited to forward this information to other processes which are responsible for displaying and analyzing the collected information.
  • the compiler which compiles from Erlang to C-code can support the following features: dynamic loading, run-time garbage collection and multiple process support (over multiple machines).
  • the monitoring process may be necessary for the monitoring process and the functional process to rendezvous on the termination of the functional process. This is particularly the case if the monitoring process is collecting timing information. This rendezvous can create a performance overhead in cases where the execution of the monitoring process is held up for some reason. It is intended that the monitoring processes be small and straight forward processes which contain little functionality other than data gathering mechanisms. By virtue of the monitoring process being simple and small it is predicted that these processes will generally be ready to rendezvous with the functional process when the functional process is ready to terminate.
  • the present invention therefore provides an effective method and system for continuously monitoring the performance or other attributes of a functional computer program which does not adversely affect the execution of the functional computer program to a significant extent.
  • specifying the attributes to be monitored and compiling the monitoring program at the time the functional computer program is compiled allows the specified attributes to be monitored throughout the life-cycle of the functional computer program.

Abstract

A method and system for continuous software monitoring is provided in which the attributes or parameters (21) of the functional computer program to be monitored are specified at the time the functional computer program is compiled and a monitoring computer program is simultaneously compiled by a compiler (20) for parallel execution in a target computer environment (30, 40). The functional and monitoring programs are compiled to include links (14, 24) to enable data to be extracted from the functional computer program, the main application (32), by the monitoring program. The main application (32) is arranged to include a spawn monitor (34) so that each process of the main application which is spawned during execution in the main application processor (30) has its own monitoring process which is spawned in the monitoring processor (40).

Description

A METHOD AND SYSTEM FOR CONTINUOUS SOFTWARE MONITORING
This invention relates to a method of and system for continuously monitoring the performance of computer programs and software systems, and particularly throughout the life-cycle of the program or software system.
Computer hardware has become rapidly more sophisticated and powerful since its inception. The software which runs on this hardware has grown in size and complexity at an even more rapid rate. Systems which contain vast amounts of software (such as telecommunications systems) are difficult to comprehend, let alone monitor, accurately access and find faults within.
Established forms of engineering, particularly process engineering, have continuous monitoring processes built in throughout a system. Examples include monitors such as temperature gauges, flow meters and pressure gauges. Because of the rising level of complexity of computer software systems, it is important to be able to use these principles, established in other forms of engineering, and apply them to software engineering.
When a software system is required to meet a certain set of functional requirements it is important to have the software built so that it maximizes its ability to fulfill the requirements. This leads software to be built in a so-called 'optimal' manner which leaves little room for extraneous activities which do not directly contribute to the ability of the software to meet those functional requirements.
It is, however, desirable to monitor functional and non-functional attributes of a software system continuously without the intrusive overhead of inlining the monitoring code. Another important motivation for continuous monitoring is the increasing trend for software development contracts to contain specifications about the non-functional aspects of a system. Of particular interest in these contracts are the non-functional requirements of performance, reliability, usability and maintainability. It is also desirable to provide a method and system which can continuously monitor attributes of a software system throughout the complete life- cycle of the system at all stages from development, through production to decommission.
According to one aspect of the invention there is provided a method of continuously monitoring the performance or attributes of computer software comprising the steps of: compiling a functional computer program for execution in a target computer environment; specifying the attributes of the functional computer program to be monitored at the time the functional computer program is compiled and simultaneously compiling a monitoring computer program for parallel execution in said target computer environment; said monitoring computer program being adapted to extract data continuously from said functional computer program when said programs are executed in parallel; and analyzing said data to obtain information about the performance or other attributes of said functional computer program.
The functional and monitoring computer programs may be recorded on any convenient memory or data storage means. According to another aspect of the invention there is provided data storage means including functional computer program and a monitoring computer program for monitoring the performance or other attributes of said functional computer program, said functional computer program being arranged to perform a functional application when executed in a target computer environment, wherein attributes of the functional computer program to be monitored are specified when the functional computer program is compiled, said monitoring computer program being compiled at the same time the functional computer program is compiled, and said monitoring computer program is adapted to extract data continuously from said functional computer program when the computer programs are executed simultaneously in parallel.
Whilst the functional and monitoring computer programs may be executed in a common processor unit, it is preferred that a separate monitoring processor be provided for executing the monitoring program in parallel to the functional computer program.
This is desirable so that execution and performance of the functional computer program is not adversely affected to a significant extent by execution of the monitoring program and by the processing and analysis of data for monitoring the functional program.
The functional computer program and the monitoring program are preferably compiled so that each process which is spawned in the functional computer program has its own monitoring process which is spawned in the monitoring program. Each process of the functional computer program preferably has its own address space in order to minimize intrusion by the monitoring program. However some intrusive code, automatically supplied during compilation may be necessary to ensure that all monitored information is passed transparently between the functional and monitoring processes.
Preferably, the functional computer program and the monitoring computer program are compiled to include links between the monitoring program and the functional computer program to enable data to be extracted from the functional computer program by the monitoring program. A wide variety of aspects of performance or attributes of functional computer programs may be monitored by the method of the present invention. These include: current execution costs; exceptions in the functional program; the actual time spent in a function; and the use of external resources.
The monitoring process executed by the monitoring program is preferably arranged to rendezvous with the functional computer program on termination of a functional process performed by the functional computer program. This is particularly desirable if the monitoring process is collecting timing information, e.g. the actual time spent in a function.
The monitoring computer program may also be arranged to terminate a process of the functional computer program upon detection of a fatal error in said process by the monitoring computer program.
According to another aspect of the invention there is provided a system for continuously monitoring the performance or attributes of a functional computer program comprising: compilation means arranged to compile the functional computer program and a monitoring computer program from a source language into a computer code, the monitoring computer program being arranged to monitor attributes of the functional computer program specified at the time the functional computer program is compiled; execution means arranged to execute the monitoring computer program simultaneously in parallel with the functional computer program, wherein the monitoring program is arranged to interact with the functional computer program to extract data continuously from the functional computer program when said programs are executed simultaneously; and analyzing means for analyzing the data extracted from the functional computer program to continuously monitor the specified attributes of the functional computer program.
The execution means may comprise a common processor unit for executing the functional and monitoring computer programs simultaneously in parallel. However, the execution means preferably includes an application processor for executing the functional computer program (the "main application") and a monitoring processor for simultaneously executing the monitoring program in parallel. A communications link, preferably a high speed communications bus, is conveniently provided between the main application processor and the monitoring processor to enable data to be extracted from the main application by the monitoring program.
The compilation means for compiling the functional and monitoring computer programs may comprise a single compiler. Alternatively, separate compilers may be used to compile the functional and monitoring computer programs. Where separate processors are used, a multiprocessor loader may be used to load the functional and monitoring programs into the main application processor and the monitoring processor respectively.
When the monitoring processor is loaded with the monitoring program, it preferably includes a monitoring means for receiving and processing data from the main application. The monitoring processor may also include memory means for storing statistical data about the main application which is monitored, and the analyzing means may comprise a log module which is adapted to process the data received from the main application by the monitoring means and statistical data from the memory means to produce information about the performance and attributes of the main application.
The system may conveniently also include display means, preferably one or more graphic displays, for displaying the information about the performance and attributes of the functional computer program produced by the analyzing means.
The system of the present invention is thus able to monitor the performance, quality and attributes of a functional computer program while it is being executed. The system is built around the ability to provide continuous process monitors when compiling the computer code, with the process monitors being written in the same source language. The source language chosen should be able to support multiple processes and process monitoring. There are a large number of suitable languages available, one of which is Erlang, a source language developed by Telefonaktiebolaget L M Ericsson. Erlang is particularly suitable for use in the present invention because its features include timing support, multiple process support, dynamic module loading, a built in error handling mechanism and real- time garbage collection.
A preferred system in accordance with the invention will now be described, by way of example only, with reference to the accompanying drawing in which:
Figure 1 is a block diagram of a continuous monitoring computer system in accordance with the invention.
Referring to Figure 1, there is shown a continuous monitoring computer system comprising first and second compilers 10 and 20, a main application processor 30, a monitoring processor 40 and a multiprocessor loader 50 for the main application processor 30 and the monitoring processor 40.
Each compiler 10, 20 is a modified Erlang compiler which is arranged to compile a computer program in computer code (C code) from a source code written in Erlang, a programming language developed by Telefonaktiebolaget L.M. Ericsson. It will, however, be appreciated that other programming languages may be used instead of Erlang in the present invention.
The first compiler 10 is arranged to compile a functional computer program, the "main application" from a standard application process 12. The second compiler 20 is arranged to compile a monitoring program from an auto build monitoring process 22 using predetermined monitoring attributes or parameters 21 specified at the time the functional computer program is compiled. The main application and the monitoring program are arranged to be run in parallel simultaneously by the main application processor 30 and by the monitoring processor 40.
The main application processor 30 and the monitoring processor 40 communicate with each other by a high speed communications link or bus 25 which enables the monitoring processor 40 to extract data continuously from the main application processor 30 as the functional computer program is executed by the main application processor 30. In an alternative embodiment, the main application processor 30 and the monitoring processor 40 may utilize a shared memory to simulate the communications link between the processors.
The main application processor 30 executes the main application 32 which is programmed during compilation by compiler 10 to contain links 14 to the monitoring program. The monitoring program is also programmed during compilation by the compiler 20 to contain links 24 to the main application program to be monitored. The application processor 30 loaded with the main application 32 includes at least one spawn monitor 34 which, when the main application process is being run, passes data about the main application via the high speed bus 25 to the monitoring processor 40.
The monitoring processor 40 loaded with the monitoring program includes a monitoring module 42 for receiving and processing data from the spawn monitor 34 of the main application 32, a log processor 44, and a statistics processor 46 which includes memory means for storing statistical data about the main application process which is monitored.
The log processor 44 of the monitoring processor 40 is adapted to process data about the main application received by the monitoring module 42 and statistical data received from the statistics processor 46. In this manner, the log processor 44 can continuously examine and analyze data extracted from the main application process while it is being run by the main application processor 30 to produce information about the performance and attributes of the functional computer process representing the main application. The log processor 44 is also able to communicate via the high speed bus 25 with a rendezvous section 36 of the main application 32 when a process in the main application is terminated so that the time taken to run the process in the main application can be monitored, and that any error information can be passed to the main application. If a fatal error in a process of the main application is detected by the monitoring processor 40, the process being monitored can be terminated by the log processor 44 without any change to the system state, and recovery initiated as if the process had not commenced.
The log processor 44 is in communication with one or more display means 60, preferably in the form of a graphical display which can display a graphical analysis about the performance or attributes of the main application process.
The monitoring processor 40 may be programmed to include a wide variety of different continuous process monitors for continuously monitoring different aspects of the performance or attributes of the main application process. Examples of continuous process monitors which may be included in the monitoring processor are: a real-time profiler which functions as a statistical sampler of a program counter of the main application processor to keep a decaying record of current execution costs; an exception monitor which monitors exceptions throughout the system (down to the process level); an actual time monitor which measures the actual time spent in a process (it may also keep a record of other system activity); and an external resource access monitor 44 which can monitor the use of external resources such as disk channel, of each process.
Various other continuous process monitors may be provided, such as system specific monitors which can present data collected against the system specifications over a variety of time frames enabling the user to examine trends in the system. These include reliability and maintainability monitors. The manner in which the main application and the monitoring processes are compiled by the compilers 10 and 20 using Erlang as the source code language will now be described.
The system of the present invention for providing continuous process monitors is built around the ability to provide system monitors automatically when compiling code. This provides a system similar to the provision of profiling in existing compilers except that the monitors will be written in the same source language.
In conjunction with choosing this approach it is necessary to select a language with a philosophy which will comfortably support multiple processes and process monitoring. There are a large range of languages available, but Erlang has been chosen as a preferred language for a number of reasons:
- its concurrent programming philosophy;
- the language provision of process support mechanisms;
- its inherent simplicity (based upon a functional language); and - built in language mechanisms to handle failure.
A primary feature of Erlang is its management of multiple processes as a fundamental part of the system. The feature is critical to the construction of a monitoring Erlang compiler and to plan for this capability in the construction phase .
The monitor is designed for a multiple processor environment although in a prototype system Unix process support (sockets and Unix communications between machines: internet sockets) is utilized to support multiple processes. To do this each process is linked into an Erlang runtime library which provides this communication support. Processes communicate via sockets in (or internet ports) with their Unix pid as the socket identifier. This (with the machine id) is the identifier that gets created when a process is spawned. The Erlang runtime library also contains other support code for Erlang internals such as list and tuple management. The actual compilation takes place in a number of phases:
1. Lexing/parsing - this phase will produce an abstract syntax tree.
2. Optimization - break the tree into basic blocks for local expression optimization. Try 'global' (within a module) optimization; also do (importantly) last call optimization.
3. Code production - this is essentially the transformation of the tree into C code.
4. The C compiler then performs other optimizations.
Since the target language is Erlang the monitoring processes are also written in Erlang. The compiler includes code in the functional process to spawn the hand coded monitoring process automatically using the existing Erlang system for process creation and control. Monitors are intended to be processes that simply collect information. These monitoring processes can then pass data along to other processes responsible for the analysis and presentation of that data. Since monitors are written in the source language (Erlang) the process communication mechanisms in Erlang can be exploited to forward this information to other processes which are responsible for displaying and analyzing the collected information. The compiler which compiles from Erlang to C-code can support the following features: dynamic loading, run-time garbage collection and multiple process support (over multiple machines).
Depending on what information the monitoring process is collecting it may be necessary for the monitoring process and the functional process to rendezvous on the termination of the functional process. This is particularly the case if the monitoring process is collecting timing information. This rendezvous can create a performance overhead in cases where the execution of the monitoring process is held up for some reason. It is intended that the monitoring processes be small and straight forward processes which contain little functionality other than data gathering mechanisms. By virtue of the monitoring process being simple and small it is predicted that these processes will generally be ready to rendezvous with the functional process when the functional process is ready to terminate.
The present invention therefore provides an effective method and system for continuously monitoring the performance or other attributes of a functional computer program which does not adversely affect the execution of the functional computer program to a significant extent.
In the method and system of the present invention, specifying the attributes to be monitored and compiling the monitoring program at the time the functional computer program is compiled allows the specified attributes to be monitored throughout the life-cycle of the functional computer program.
It will be appreciated that various modifications may be made to the embodiment described above without departing from the scope and spirit of the present invention. For instance, whilst the present invention has been described above with reference to Erlang as the source language, other source languages having similar properties and functions may be used.

Claims

1. A method of continuously monitoring the performance or other attributes of computer software comprising the steps of:
compiling a functional computer program for execution in a target computer environment;
specifying the attributes of the functional computer program to be monitored at the time the functional computer program is compiled and simultaneously compiling a monitoring computer program to monitor said attributes for parallel execution in said target computer environment;
said monitoring program being adapted to extract data continuously from said functional computer program when said programs are executed in parallel; and
analyzing said data to obtain information about said specified attributes of said functional computer program.
2. A method according to claim 1, wherein the functional computer program and the monitoring computer program are compiled to include links between the monitoring program and the functional computer program to enable data to be extracted from the functional computer program by the monitoring program.
3. A method according to claim 1 or claim 2, wherein the functional computer program and the monitoring program are compiled so that each functional process which is spawned in the functional computer program has its own monitoring process which is spawned in the monitoring program.
4. A method according to claim 2 or claim 3, wherein a monitoring process executed by the monitoring program is arranged to rendezvous with the functional computer program on termination of a functional process performed by the functional computer program.
5. A method according to any one of claims 1 to 4, wherein the attributes which are monitored by the monitoring program include any one or more of the following: current execution costs; exceptions in the functional program; the actual time spent in a function; the use of external resources; reliability; or maintainability.
6. A method according to any one of the preceding claims wherein the functional and monitoring computer programs are written in the same source language.
7. A method according to claim 6 wherein the source language is Erlang.
8. A method according to claim 6 or claim 7, wherein the functional and monitoring computer programs are compiled from the source language into computer code by a single compiler.
9. A method according to claim 6 or claim 7, wherein the functional and monitoring computer programs are compiled from the source language by separate compilers.
10. A method according to any one of the preceding claims wherein the functional computer program and the monitoring computer program are executed in parallel in a common processor unit.
11. A method according to any one of claims 1 to 9, wherein the functional computer program and the monitoring computer program are executed in separate processors connected by a high speed communications link.
12. A method according to any one of the preceding claims, wherein the monitoring computer program is arranged to terminate a process of the functional computer program upon detection of a fatal error in said process by the monitoring computer program.
13. Data storage means including a functional computer program and a monitoring computer program for monitoring the performance or other attributes of said functional computer program, said functional computer program being arranged to perform a functional application when executed in a target computer environment, wherein attributes of the functional computer program to be monitored are specified when the functional computer program is compiled, said monitoring computer program being compiled at the same time the functional computer program is compiled, and said monitoring computer program is adapted to extract data continuously from said functional computer program when the computer programs are executed simultaneously in parallel.
14. Data storage means according to claim 13, wherein the functional computer program and the monitoring computer program include links between the monitoring program and the functional computer program to enable data to be extracted from the functional computer program by the monitoring program.
15. Data storage means according to claim 14, wherein the functional computer program and the monitoring program are arranged so that each functional process which is spawned in the functional computer program has its own monitoring process which is spawned in the monitoring program.
16. Data storage means according to claim 14 or claim 15, wherein a monitoring process executed by the monitoring program is arranged to rendezvous with the functional computer program on termination of a functional process performed by the functional computer program.
17. Data storage means according to any one of claims 14 to 16 wherein the monitoring program is arranged to terminate a process of the functional computer program upon detection of a fatal error in said process by the monitoring computer program.
18. A system for continuously monitoring the performance or other attributes of a functional computer program comprising:
means arranged to compile a functional computer program and a monitoring computer program from source language into a computer code; the monitoring computer program being arranged to monitor attributes of the functional computer program specified at the time the functional computer program is compiled; execution means arranged to execute the monitoring computer program simultaneously in parallel with the functional computer program;
wherein the monitoring program is arranged to interact with the functional computer program to extract data continuously from the functional computer program when said programs are executed simultaneously; and
analyzing means for analyzing the data extracted from the functional computer program to continuously monitor the specified attributes of the functional computer program.
19. A system according to claim 18, wherein the execution means comprises a common processing unit including an application processor for executing the functional computer program and a monitoring processor for executing the monitoring computer program simultaneously with the functional computer program.
20. A system according to claim 18, wherein the execution means comprises an application processor for executing the functional computer program and a separate monitoring processor for simultaneously executing the monitoring program in parallel.
21. A system according to claim 20, wherein the application processor and the monitoring processor are connected by a high speed communications link.
22. A system according to any one of claims 19 to 21, wherein the application processor includes a spawn monitor which, when a process of the functional computer program is spawned in the application processor, communicates with the monitoring processor to pass data about the functional program to the monitoring processor.
23. A system according to claim 22, wherein the monitoring processor when loaded with the monitoring program includes monitoring means for receiving and processing data from the spawn monitor, memory means for storing statistical data about the functional computer program and a log processor for analyzing said data from the spawn monitor and said statistical data to produce information about the specified attributes of the functional computer program.
24. A system according to any one of claims 19 to 23, wherein the monitoring processor is arranged to communicate with the functional computer program on termination of a process in the application processor.
25. A system according to any one of claims 19 to 23, wherein the monitoring processor is arranged to communicate with the application processor upon detection of a fatal error in a process of the functional computer program to terminate said process.
26. A system according to any one of claims 19 to 25, wherein the monitoring processor includes a real-time profiler which continuously monitors the current execution cost of the functional computer program.
27. A system according to any one of claims 19 to 26, wherein the monitoring processor includes an exception monitor which monitors exceptions in the functional computer program.
28. A system according to any one of claims 19 to 27, wherein the monitoring processor includes an actual time monitor which measures the actual time spent in a process of the functional computer program.
29. A system according to any one of claims 19 to 28 wherein the monitoring processor includes an external resource access monitor which monitors the use of external resources used by the functional computer program.
30. A system according to claim 23 wherein the monitoring processor includes a statistical monitor for analyzing statistical data from the memory means over a number of time frames.
31. A system according to any one of claims 18 to 30 wherein the compilation means comprises a single compiler.
32. A system according to any one of claims 19 to 30 wherein the compilation means comprises separate compilers for compiling the functional computer program and the monitoring computer program respectively.
33. A system according to claim 32, including a multi-processor loader for loading the functional and monitoring computer programs into the application processor and the monitoring processor respectively.
34. A system according to any one of claims 31 to 33 wherein the or each compiler comprises an Erlang compiler which is arranged to compile the functional and monitoring computer programs written in Erlang into computer code.
35. A system according to any one of claims 18 to 34, wherein an autobuild monitoring process is provided to construct the monitoring computer program from specified monitoring parameters.
EP97942716A 1996-10-11 1997-10-09 A method and system for continuous software monitoring Ceased EP1019826A4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AUPO2920A AUPO292096A0 (en) 1996-10-11 1996-10-11 A method and system for continuous software monitoring
AUPO292096 1996-10-11
PCT/AU1997/000678 WO1998016882A1 (en) 1996-10-11 1997-10-09 A method and system for continuous software monitoring

Publications (2)

Publication Number Publication Date
EP1019826A1 true EP1019826A1 (en) 2000-07-19
EP1019826A4 EP1019826A4 (en) 2004-07-21

Family

ID=3797229

Family Applications (1)

Application Number Title Priority Date Filing Date
EP97942716A Ceased EP1019826A4 (en) 1996-10-11 1997-10-09 A method and system for continuous software monitoring

Country Status (4)

Country Link
EP (1) EP1019826A4 (en)
AU (1) AUPO292096A0 (en)
TW (1) TW365665B (en)
WO (1) WO1998016882A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294169A (en) * 2016-08-17 2017-01-04 华中科技大学 The detection of a kind of data contention based on semiology analysis virtual machine and playback method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266654B1 (en) * 1992-12-15 2001-07-24 Softlock.Com, Inc. Method for tracking software lineage
US7089212B2 (en) 1992-12-15 2006-08-08 Sl Patent Holdings Llc System and method for controlling access to protected information
US7209901B2 (en) 1992-12-15 2007-04-24 Sl Patent Holdings Llc C/O Aol Time Warner Method for selling, protecting, and redistributing digital goods
US6374369B1 (en) 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2236202B (en) * 1989-09-21 1993-11-03 Sun Microsystems Inc Method and apparatus for extracting process performance information from a computer over a network
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
EP0636985B1 (en) * 1993-07-27 1998-04-08 International Business Machines Corporation Process monitoring in a multiprocessing server
WO1995025304A1 (en) * 1994-03-14 1995-09-21 Green Hills Software, Inc. Optimizing time and testing of higher level language programs
US5528753A (en) * 1994-06-30 1996-06-18 International Business Machines Corporation System and method for enabling stripped object software monitoring in a computer system
US5809303A (en) * 1995-10-18 1998-09-15 Sun Microsystems, Inc. Device I/O monitoring mechanism for a computer operating system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ARAL, GERTNER: "Non Intrusive and Interactive Profiling in Parasight" ACM PPEALS CONFERENCE, 1988, pages 21-30, XP002279482 *
JONATHAN ROSENBERG: "How debuggers work : algorithms, data structures, and architecture" 1996, JOHN WILEY &SONS , NEW YORK, US * page 95, line 1 - page 106, last line * * page 195, line 19 - page 196, line 15 * *
MICHAEL DWYER: "Process Placement in Distributed Multiprocessor Systems : an Investigation using Erlang" DEPARTMENT OF COMPUTER SCIENCE, RMIT UNIVERSITY, 19 November 1998 (1998-11-19), pages 1-37, XP002280348 *
See also references of WO9816882A1 *
SOSIC R. : "Dynascope A Tool for Program Directing" ACM, - 1992 pages 12-21, XP002279483 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294169A (en) * 2016-08-17 2017-01-04 华中科技大学 The detection of a kind of data contention based on semiology analysis virtual machine and playback method
CN106294169B (en) * 2016-08-17 2018-08-03 华中科技大学 A kind of data contention detection and playback method based on semiology analysis virtual machine

Also Published As

Publication number Publication date
WO1998016882A1 (en) 1998-04-23
AUPO292096A0 (en) 1996-11-07
TW365665B (en) 1999-08-01
EP1019826A4 (en) 2004-07-21

Similar Documents

Publication Publication Date Title
US5274815A (en) Dynamic instruction modifying controller and operation method
US8108839B2 (en) Method and apparatus for tracing execution of computer programming code using dynamic trace enablement
Yan et al. Performance measurement, visualization and modeling of parallel and distributed programs using the AIMS toolkit
US6164841A (en) Method, apparatus, and product for dynamic software code translation system
Romer et al. Instrumentation and optimization of Win32/Intel executables using Etch
Benedict et al. Periscope: An online-based distributed performance analysis tool
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US7890941B1 (en) Binary profile instrumentation framework
US6374369B1 (en) Stochastic performance analysis method and apparatus therefor
Kacsuk et al. A graphical development and debugging environment for parallel programs
US5911073A (en) Method and apparatus for dynamic process monitoring through an ancillary control code system
US6289505B1 (en) Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler
US7698692B1 (en) Preparing a binary file for future instrumentation
CN101122880A (en) Embedded type system of embed type debugging device and embedded type system debugging method
EP1019826A1 (en) A method and system for continuous software monitoring
Wismüller et al. Interactive debugging and performance analysis of massively parallel applications
AU725899B2 (en) A method and system for continuous software monitoring
Cheong et al. Chief: A parallel simulation environment for parallel systems
Oberhuber et al. DETOP-an interactive debugger for PowerPC based multicomputers
Appelbe et al. Integrating tools for debugging and developing multitasking programs
Shende et al. Instrumentation and measurement strategies for flexible and portable empirical performance evaluation
Barbie Reporting of performance tests in a continuous integration environment
Ludwig et al. OCM—an OMIS compliant monitoring system
Nagamatsu Runtime software reorganization by traditional OS features
Wang et al. A Region-Based Approach to Pipeline Parallelism in Java Programs on Multicores

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19990504

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): DE FR GB SE

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: ROYAL MELBOURNE INSTITUTE OF TECHNOLOGY

RIC1 Information provided on ipc code assigned before grant

Ipc: 7G 06F 11/36 B

Ipc: 7G 06F 11/30 A

A4 Supplementary search report drawn up and despatched

Effective date: 20040607

17Q First examination report despatched

Effective date: 20050329

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: JIFMAR PTY LTD

17Q First examination report despatched

Effective date: 20050329

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20081209