Monitoring and controlling applications executing in a computing node
A method and system for monitoring and controlling applications executing on computing nodes of a computing system. A status request process, one or more control processes, an untrusted application and one other application are executed on a computing node. The status request process receives and processes requests for the statuses of the untrusted and the other application. A first control process controls the execution of the untrusted application. A second control process controls the execution of the other application. The execution of the untrusted application terminates based on a failure of the untrusted application. A capability of the status request process to receive and process the requests for statuses, and a capability of the second control process to control the execution of the other application are preserved in response to the termination of the untrusted application.
1 . A method of monitoring and controlling applications executing on a plurality of computing nodes of a computing system, comprising:
executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
executing, on said computing node, one or more control processes included in said plurality of processes;
executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
receiving and processing, by said status request process, a first request for a first status of said untrusted application,
receiving and processing, by said status request process, a second request for a second status of said another application;
controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
terminating said first execution of said untrusted application based on a failure of said untrusted application; and
preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
2 . The method of claim 1 , further comprising:
segregating a plurality of status request operations from a plurality of control operations,
wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
wherein said control operations include controlling said first execution and controlling said second execution,
wherein said segregating comprises:
performing said status request operations exclusively by said status request process; and
performing said control operations exclusively by at least one control process of said one or more control processes,
wherein said status request process is different from any control process of said one or more control processes; and
wherein said segregating facilitates said preserving in response to said terminating.
3 . The method of claim 1 , further comprising:
separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
wherein said first control process is different from said second control process, and
wherein said separating facilitates said preserving.
4 . The method of claim 1 , wherein said one or more control processes is one of:
a single control process that controls an execution of any application of said plurality of applications, wherein said first control process and said second control process are said single control process;
a plurality of control processes that controls executions of said plurality of applications in a one-to-one correspondence, wherein said first control process and said second control process are different, and wherein said plurality of applications are designated as likely to fail based on said pre-defined criteria, and
a control process and a first set of one or more control processes, said first set including said first control process;
wherein said control process controls an execution of any trusted application of a first group of one or more trusted applications, said first group included in said plurality of applications, each trusted application of said first group designated as not likely to fail based on said pre-defined criteria, and
wherein said one or more control processes of said first set control executions of one or more untrusted applications of a second group in a one-to-one correspondence, said second group included in said plurality of applications, each untrusted application of said second group designated as likely to fail based on said pre-defined criteria.
5 . The method of claim 1 , further comprising:
communicating between said first process and said second process via a shared memory coupled to said computing node, wherein said communicating comprises:
sending said first status of said untrusted application to said shared memory by said first control process;
receiving said first status by said shared memory in response to said sending; and
retrieving said first status from said shared memory by said status request process.
6 . The method of claim 5 , wherein said sending is performed by said first control process at pre-defined intervals of a first set of intervals, and wherein said retrieving is performed by said status request process at pre-defined intervals of a second set of intervals.
7 . The method of claim 5 , further comprising:
dividing said shared memory into a process state portion and a request portion, wherein said receiving comprises receiving said first status by said process state portion.
8 . The method of claim 7 , further comprising:
communicating a command from said status request process to said first control process via said request portion of said shared memory, said command selected from a group consisting of:
a first command to automatically restart said first control process in response to a termination of said first control process,
a second command to start said untrusted application, wherein said communicating said second command initiates a starting of said untrusted application by said first control process,
a third command to stop said untrusted application, wherein said communicating said third command initiates a stopping of said untrusted application by said first control process,
a fourth command to clean-up said untrusted application,
a fifth command to obtain a log of at least one of standard-output and standard-error for said untrusted application, wherein said communicating said fifth command initiates a logging, by said first control process, of at least one of standard-output and standard-error for said untrusted application,
a sixth command to stop said plurality of applications,
a seventh command to obtain a status of each application of said plurality of applications from said process state portion of said shared memory,
an eighth command to obtain said first status from said process state portion of said shared memory,
a ninth command to restart said untrusted application, and
a tenth command to shut down said computing system.
9 . The method of claim 8 , further comprising:
executing, on said computing node, a third control process of said one or more control processes, said third control process controlling an execution of said status request process, said execution performed by said executing said status request process; and
performing an operation selected from a group consisting of:
a first operation to automatically restart said status request process in response to a termination of said status request process,
a second operation to start said untrusted application, said second operation initiated by said second command,
a third operation to restart said untrusted application, said third operation initiated by said ninth command,
a fourth operation to monitor said untrusted application,
a fifth operation to redirect standard-output from a first device set as a default standard-output device to a second device,
a sixth operation to redirect standard-error from a third device set as a default standard-error device to a fourth device,
a seventh operation to limit a usage of resources by said untrusted application, and
an eighth operation to send said first status to said process state portion of said shared memory, said first status capable of being retrieved by said status request process from said process state portion, said eighth operation performed by said first control process periodically at pre-defined time intervals,
wherein said first operation is performed by said third control process, and
wherein said second operation through said eighth operation inclusive are performed by said first control process.
10 . The method of claim 9 , further comprising:
communicating said second command to start said untrusted application, said communicating including sending said second command from said status request process to said first control process via said request portion of said shared memory;
receiving said second command by said first control process;
spawning said untrusted application by said first control process;
sending a message from said first control process to said status request process via said shared memory to acknowledge said receiving said second command;
initiating a start of an execution of said untrusted application on said computing node; and
monitoring and controlling said untrusted application by said first control process, said monitoring and controlling performed in response to said initiating said start, and said monitoring and controlling including performing said eighth operation.
11 . The method of claim 1 , further comprising:
terminating said executing said status request process, wherein said executing said first control process is not terminated in response to said terminating said executing said status request process.
12 . The method of claim 5 , wherein said shared memory is a System V Inter-Process Communication (IPC) shared memory and said shared memory utilizes System V IPC semaphores.
13 . The method of claim 1 , wherein said computing system is a distributed computing system or a clustered computing system.
14 . A system for monitoring and controlling applications executing on a plurality of computing nodes of a computing system, comprising:
means for executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
means for executing, on said computing node, one or more control processes included in said plurality of processes;
means for executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
means for executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
means for receiving and processing, by said status request process, a first request for a first status of said untrusted application,
means for receiving and processing, by said status request process, a second request for a second status of said another application;
means for controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
means for controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
means for terminating said first execution of said untrusted application based on a failure of said untrusted application; and
means for preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
15 . The system of claim 14 , further comprising:
means for segregating a plurality of status request operations from a plurality of control operations,
wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
wherein said control operations include controlling said first execution and controlling said second execution,
wherein said means for segregating comprises:
means for performing said status request operations exclusively by said status request process; and
means for performing said control operations exclusively by at least one control process of said one or more control processes,
wherein said status request process is different from any control process of said one or more control processes; and
wherein said segregating facilitates said preserving in response to said terminating.
16 . The system of claim 14 , further comprising:
means for separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
wherein said first control process is different from said second control process, and
wherein said separating facilitates said preserving.
17 . The system of claim 14 , wherein said one or more control processes is one of:
a single control process that controls an execution of any application of said plurality of applications, wherein said first control process and said second control process are said single control process;
a plurality of control processes that controls executions of said plurality of applications in a one-to-one correspondence, wherein said first control process and said second control process are different, and wherein said plurality of applications are designated as likely to fail based on said pre-defined criteria, and
a control process and a first set of one or more control processes, said first set including said first control process;
wherein said control process controls an execution of any trusted application of a first group of one or more trusted applications, said first group included in said plurality of applications, each trusted application of said first group designated as not likely to fail based on said pre-defined criteria, and
wherein said one or more control processes of said first set control executions of one or more untrusted applications of a second group in a one-to-one correspondence, said second group included in said plurality of applications, each untrusted application of said second group designated as likely to fail based on said pre-defined criteria.
18 . A computer program product comprising a computer-usable medium including computer-usable program code for monitoring and controlling applications executing on a plurality of computing nodes of a computing system, said computer program product including:
computer-usable code for executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
computer-usable code for executing, on said computing node, one or more control processes included in said plurality of processes;
computer-usable code for executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
computer-usable code for executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
computer-usable code for receiving and processing, by said status request process, a first request for a first status of said untrusted application,
computer-usable code for receiving and processing, by said status request process, a second request for a second status of said another application;
computer-usable code for controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
computer-usable code for controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
computer-usable code for terminating said first execution of said untrusted application based on a failure of said untrusted application; and
computer-usable code for preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
19 . The program product of claim 18 , further comprising:
computer-usable code for segregating a plurality of status request operations from a plurality of control operations,
wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
wherein said control operations include controlling said first execution and controlling said second execution,
wherein said computer-usable code for segregating comprises:
computer-usable code for performing said status request operations exclusively by said status request process; and
computer-usable code for performing said control operations exclusively by at least one control process of said one or more control processes,
wherein said status request process is different from any control process of said one or more control processes; and
wherein said segregating facilitates said preserving in response to said terminating.
20 . The program product of claim 18 , further comprising:
computer-usable code for separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
wherein said first control process is different from said second control process, and
wherein said separating facilitates said preserving.