- Timestamp:
- Aug 8, 2005, 10:17:52 PM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/doc/www/html/IPP-subsystems/pcontrol/index.htm
r4727 r4732 1 1 <meta name=file content=index> 2 <meta name=title content=PCONTROL SUMMARY>3 <meta name=page content=pcontrol summary>2 <meta name=title content=PCONTROL.SUMMARY> 3 <meta name=page content=pcontrol.summary> 4 4 5 5 <tt>pcontrol</tt> is the IPP parallel process controller. 6 6 7 <h 2>Overview</h2>7 <h3>Overview</h3> 8 8 9 9 <p> … … 18 18 tasks in the IPP is <tt>pcontrol</tt>. 19 19 20 <p> 21 <tt>pcontrol</tt> interacts with the collection of computers under its 22 management and with other subsystems in the IPP. The IPP Controller 23 receives a variety of inputs from other subsystems, described below, 24 and initiates actions such as adding a new process to the queue of 25 pending tasks. <tt>pcontrol</tt> also provides information to other 26 subsystems on demand about its processing history and current state. 27 Each physical computer may have multiple processors; since 28 <tt>pcontrol</tt> is managing processing tasks, it treats each 29 processor independently. It is up to the system configuration if each 30 computer needs to reserve one of its CPUs to manage background tasks 31 or if <tt>pcontrol</tt> should attempt to send one task per CPU and 32 let the operating system handle the I/O load. 33 34 <h2>hosts</h2> 35 36 The Controller maintains a table of available processing computers 20 <h3>Host States</h3> 21 22 <p> 23 <tt>pcontrol</tt> maintains a table of available processing computers 37 24 (<em>hosts</em>) and tracks their status. Hosts managed by 38 <tt>pcontrol</tt> are allowed to be in one of several states, and 39 <tt>pcontrol</tt> must interact with it in an appropriate way for each 40 of those states. A Node may be {\tt alive}, {\tt dead} or {\tt off}. 41 If the Node is {\tt alive}, it responds to commands from the IPP 42 Controller and may be used for tasks subject to other constraints. If 43 it is {\tt dead}, the Node is not responsive and must not be used for 44 executing tasks. <tt>pcontrol</tt> must identify Nodes which have 45 died (not responding) and occasionally test them to see if they are 46 {\tt alive} again. Nodes which are {\tt off} are not available for 47 tasks and must not be tested. Nodes may be set to the {\tt off} or 48 {\tt dead} states by external subsystems; it is the responsibility of 49 <tt>pcontrol</tt> to return a Node to the {\tt alive} state if 50 possible. 51 52 <tt>pcontrol</tt> must honor requests (normally from the users) to 53 change the mode of any computing node on demand between {\tt off} and 54 {\tt dead}. This would normally be done after a Node has been 55 rebooted and is released to <tt>pcontrol</tt> for its use. It 56 must also be able to change the list of allowed tasks as requested by 57 external commands. 58 59 Two example scenarios illustrate the transition between these states, 60 and the basic concept of operations for <tt>pcontrol</tt>. First, 61 imagine a computer crashes. At this point <tt>pcontrol</tt> should 62 detect that the Node is no longer responsive and mark it as {\tt 63 dead}. It should occasionally try to re-establish communication with 64 the Node, potentially with longer and longer delays between attempts. 65 A human could be notified if the Node seems to remain {\tt dead} for a 66 very long time. In another scenario, a person needs to work on a 67 Node. They notify <tt>pcontrol</tt> that the machine is {\tt off}, 68 perhaps with a prior notification that the machine should be prepared 69 to go off. When work on the machine is complete, it should be placed 70 in the {\tt dead} state. Only when the person is done working and 71 testing the machine, and tells <tt>pcontrol</tt> that the machine is 72 now {\tt dead} can <tt>pcontrol</tt> attempt to re-start 73 communications and re-new processing operations on that Node. 74 75 <h2>pclient</h2> 76 77 When the Controller starts, it attempts to launch a Node Agent on each 78 of the available processing Nodes. Nodes which are not responsive are 79 marked as {\tt dead} so they may be re-tried. A Node Agent runs on 80 each of the individual nodes to execute the tasks as directed by the 81 Controller. The Node Agents communicate with the Controller via a 82 socket connection. 83 84 A Node Agent (which is only running on a Node in the {\tt alive} 85 state) may be in one of four modes: {\tt idle}, {\tt busy}, {\tt 86 done}, {\tt crash}. A Node Agent which is {\tt busy} currently has a 87 task assigned to it which is executing. The <tt>pcontrol</tt> may only 88 assign one task to a Node at a time. A Node Agent which is in the 89 {\tt idle} state may have a task assigned to it. When the Node Agent 90 detects that a tasks has finished, it changes to either the {\tt done} 91 or {\tt crash} states depending on the outcome of the process 92 execution. The <tt>pcontrol</tt> must also respect a list of task 93 restrictions which may require specific tasks to run on specific CPUs 94 or exclude specific tasks from specific CPUs. 95 96 A task being executed by the Node is run in the UNIX user space as a 97 forked process. The Node Agent must monitor the standard error and 98 standard output of the executing task and save them in separate 99 buffers. If the process exits or dies, the Node Agent must detect 100 this result and change state appropriately. The Node Agent must 101 respond to various commands from the Controller, as follows: 102 103 \paragraph{Report status} 104 105 The Node Agent returns its state ({\tt idle}, {\tt busy}, {\tt done}, 106 {\tt crash}) and the exit status of the current processing task, if 107 available. The reported exit state, if the process has completed 108 without crashing, is the UNIX exit state reported by the task: 0--256 109 with 0 indicating a successful completion. 110 111 \paragraph{Report stdout} 112 113 Send and flush the current stdout buffer. The Node Agent will return 114 the complete contents of the stdout buffer via a buffered write and 115 flush the buffer when it is finished. The Node Agent will not accept 116 more data on the stdout buffer from the current processing task until 117 the send is complete and the buffer is flushed. The daemon must 118 accept all of the buffer output. 119 120 \paragraph{Report stderr} 121 122 Identical to `report stdout', but for stderr. 123 124 \paragraph{Kill task } 125 126 The Node Agent should send a kill signal (\code{KILL} or \code{TERM}) 127 to the current processing task. When the processing task has exited, 128 the Node Agent should set its state to {\tt crash}. 129 130 \paragraph{Clear task} 131 132 The Node Agent should set its state {\tt idle}. If a processing stage 133 is currently running, it should be killed (\code{KILL} or \code{TERM}) 134 before the task is cleared. 135 136 \paragraph{Start processing stage} 137 138 The Node Agent forks a specified command. The command should be a 139 standard UNIX command without command line redirection or 140 backgrounding. The task is run with the same user ID as the Node 141 Agent, which is also the same user ID as the Controller. 142 143 \subsubsection{Tasks} 144 145 The <tt>pcontrol</tt> accepts tasks from other IPP subsystems. The task 146 requests include the specific command to be executed and are in the 147 form of a UNIX command which could be performed on any of the 148 computing nodes. Any input or output data in the commands must be a 149 valid resource regardless of the node on which the task is executed. 150 Input and output data resources must be unique where necessary to 151 avoid conflicts. It is the responsibility of the task to wait for 152 network lags (ie, NFS delays). The <tt>pcontrol</tt> gives each task a 153 unique identifier, which is returned to the requesting entity. The 154 requestor may then use that ID to obtain status information on that 155 task or to send control signals to the specific task. 156 157 Task requests may specify a desired node for the task execution. The 158 <tt>pcontrol</tt> attempts to honor the request if the node is {\tt 159 alive}, but will execute it on another node if the requested one is 160 {\tt dead} or {\tt off}. Even if a node is {\tt alive}, the IPP 161 Controller will choose another node if the specified task is not 162 allowed on the requested node. In all other cases, the <tt>pcontrol</tt> 163 waits until the currently executing processes, and processes with 164 higher priority, are completed before executing the specified task on 165 the requested node. 166 167 Task requests may specify an urgency level. The <tt>pcontrol</tt> 168 determines the priority of the task on the basis of both the urgency 169 and the age of the request. An executing task must be completed on a 170 CPU before any new task is started on that CPU, regardless of 171 priority. The urgency levels range from 0 to 2. Tasks with an 172 urgency of 1 are scheduled whenever they reach the top of the stack. 173 Tasks with an urgency of 2 are sent immediately to the top of the 174 stack. Tasks assigned a priority of 0 are maintained in the queue and 175 never executed. 176 177 It may be useful for the Controller to distinguish between tasks 178 dominated by I/O and tasks dominated by data processing. It is 179 possible that one of each of these types of tasks may be sent to the 180 same node without significantly impacting the system performance. 181 Alternatively, it may be necessary to limit a single machine with 2 182 CPUs to only one of each of these types of tasks (i.e., one processor 183 will be working on I/O while the other is working on processing). 184 Such details will be studied by the IfA IPP Team. 185 186 The <tt>pcontrol</tt> monitors the output streams from the executing 187 tasks and the exit status of the tasks. Each task is associated with 188 a log file, to which all output is written. The status, including the 189 exit status, of each task is maintained by the <tt>pcontrol</tt> so that 190 other subsystems may determine if specific tasks have started or 191 completed. 192 193 \subsubsection{Controller Interfaces} 194 195 The <tt>pcontrol</tt> must accept commands from other IPP subsystems. 196 These commands include those which govern the processing of specified 197 tasks, those which govern the behavior of specific computing nodes, 198 and those which request information from the <tt>pcontrol</tt>. The IPP 199 Controller must be able to halt the execution of a specified task, 200 delete an unexecuted task from the task list, change the priority of 201 tasks, and change the requested nodes for tasks. The <tt>pcontrol</tt> 202 must also be able to stop the current execution of a task and push it 203 to the end of the queue and also change its priority. 204 205 The <tt>pcontrol</tt> must respond to informational requests regarding the 206 collection of machines and their states as well as the collection of 207 tasks and their states. The <tt>pcontrol</tt> must monitor the execution 208 times of the different tasks and provide summary statistics. Finally, 209 the <tt>pcontrol</tt> must respond to three top-level commands: {\tt finish}, 210 {\tt stop} and {\tt abort}. When {\tt finish} is requested, no more 211 new tasks are accepted on the stack of task, and when all tasks in the 212 stack have completed, the <tt>pcontrol</tt> must exit. When {\tt stop} is 213 requested, the currently executing tasks must be completed at which 214 point the <tt>pcontrol</tt> must exit, but tasks remaining in the stack which 215 have not been started are flushed. When {\tt abort} is issued, the 216 <tt>pcontrol</tt> immediately kills all executing tasks and exits. 217 25 <tt>pcontrol</tt> are allowed to be in one of several states: 26 <tt>off</tt>, <tt>down</tt>, <tt>idle</tt>, <tt>busy</tt>, and 27 <tt>done</tt>. These states have the following meanings: 28 29 <p> 30 If the host is <tt>off</tt>, it is known to pcontrol, but pcontrol 31 does not have an active connection to the machine. Hosts which are 32 <tt>off</tt> are not available for jobs, and pcontrol does not attempt 33 to initiate a connection to them. 34 35 <p> 36 When pcontrol is told to consider a machine on, the machine is moved 37 from the <tt>off</tt> state to the <tt>down</tt> state. Pcontrol 38 attempts to initiate a connection to the host. Connections are made 39 by running a remote client on the host, using the specified connection 40 method. The connection method may be <tt>ssh</tt>, <tt>rsh</tt>, or 41 an equivalent remote shell connection. The choice is specified by the 42 COMMAND Opihi variable. The remote connection starts a dedicated 43 remote client which must accept the pcontrol client commands and 44 respond appropriately. The provided remote client is called 45 <tt>pclient</tt>, though in principal other equivalent programs could 46 be used by setting the Opihi variable SHELL (this feature more 47 generally allows a user to specify a path to the remote client, if it 48 is not in the user's path). A pcontrol user may force a host to 49 transition to the <tt>off</tt> state with the command <tt>host off 50 (hostname)</tt>. (<em> Note that this command will set only one of 51 the connections to the named host to <tt>off</tt>. If multiple 52 connections to a machine have been defined, multiple <tt>off</tt> 53 commands must be sent</em>). 54 55 <p> 56 If the remote connection is successful, the connected host is moved by 57 pcontrol from the <tt>down</tt> state to the <tt>idle</tt> state. If 58 the connection is unsuccessful, pcontrol will try again after a 59 certain period of time. If the connection continues to be 60 unsuccessful, the retry period is doubled for each successiver 61 connection attempt. If the user wants to force pcontrol to retry the 62 connection to a machine (if, for example, the timeout is now very 63 long, but the user knows the machine's ethernet cable has been 64 re-inserted...), this can be achieved with the command <tt>host retry 65 (hostname)</tt>. A host which is <tt>down</tt> is in the limbo state 66 between <tt>off</tt> and <tt>idle</tt>. 67 68 <p> 69 Once pcontrol has made a successful connection to the host, the host 70 is in the <tt>idle</tt> state. At this point, it is ready to accept 71 jobs from pcontrol for execution. Pcontrol repeatedly queries the 72 hosts to check that they are still alive. If a host is discovered to 73 be unresponsive, and particularly if the remote pipe connection has 74 closed, then the machine is moved back to the <tt>down</tt> state. 75 76 <p> 77 Hosts which are <tt>idle</tt> may accept a job from pcontrol. A job simply 78 consists of a bare UNIX command, without redirection of standard input 79 or standard output. The host will initiate the job, and pcontrol will 80 place the host into the <tt>busy</tt> state. The remote client, pclient, 81 runs the job in the background and will continue to accept input from 82 pcontrol. pcontrol will continue to check the status of the host, and 83 now also the status of the specific job. As before, if the connection 84 breaks, pcontrol will migrate the host to the <tt>down</tt> state. Any job 85 already initiated on a host which goes down will be returned for later 86 processing, so the job will not be lost. 87 88 <p> 89 When the job exits, pclient tells pcontrol that the job is completed, 90 and specifies the exit status. At this point, pcontrol will move the 91 host from <tt>busy</tt> to <tt>done</tt> state. It will stay in this 92 state until pcontrol can determine the ending conditions and reset the 93 remote client. pcontrol requests the standard error and standard 94 output from the job from pclient. pcontrol stores this data with its 95 information about the completed job, and send a reset command to the 96 remote client. Once these cleanup tasks are successfully completed, 97 pcontrol will move the host to the <tt>idle</tt> state, ready for 98 further jobs. 99 100 <p> 101 Each physical computer may have multiple processors. 102 <tt>pcontrol</tt> treats each processor independently. It is up to 103 the system configuration if each computer needs to reserve one of its 104 CPUs to manage background tasks or if <tt>pcontrol</tt> should attempt 105 to send one task per CPU and let the operating system handle the I/O 106 load. <em>some of this behavior will probably be eventually more 107 intelligent. For example, the commands which turn a host on or off 108 should be able to do the same operation to all host connections for 109 the same machine name.</em> 110 111 <p> 112 A machine may be completely removed from pcontrol's host tables with 113 the command <tt>host delete (hostname)</tt>. 114 115 <h3>Jobs</h3> 116 117 <p> 118 The <tt>pcontrol</tt> accepts new jobs with the command <tt>job 119 ...</tt>, in which the ellipsis represents the command and arguments 120 of a valid UNIX command. The commands are run under <tt>sh</tt>, and 121 are executed in the user's home directory. (<em>If it is desired, we 122 can easily add a command to tell pclient to perform <tt>cd</tt></em>). 123 Users should be wary of the conditions under which the remote jobs are 124 run. If the nodes in question all cross-mount the same home 125 directories, multiple jobs which interact with the same named file may 126 produce unexpected results. The controller cannot enforce good 127 behavior on the part of the remote jobs; it is the responsibility of 128 the user to ensure that conflicts do not arise by, eg, always using 129 unique output file names. 130 131 <p> 132 Other issues may arise from the fact that pcontrol may be choosing any 133 of the hosts to run the job. Typical failures arise if the user does 134 not realize that specific jobs do not behave the same on all machines, 135 or if a necessary resource (eg, some input data file) is only 136 available or accessible from some of the hosts. It is the 137 responsibility of the task to wait for network lags (ie, NFS delays). 138 139 <p> 140 <tt>pcontrol</tt> gives each task a unique internal identifier (Job 141 ID) equivalent to the process ID used in UNIX. When a job is 142 submitted to pcontrol, the command echoes back the Job ID. This ID 143 may be used by other pcontrol commands to obtain information about or 144 interact with the job. 145 146 <p> 147 A job may specify a specific host for the task execution. The host 148 specified for a job may be <b>required</b>, or <b>desired</b>. In the 149 first case, pcontrol, will only run the job on the specified host, 150 waiting until it is available before attempting the job. In the 151 second case, pcontrol will attempt to send the job to the specified 152 host, but if the host is unavailable (<em>how long? what 153 conditions?</em>), pcontrol will allow the job to be sent to an 154 alternative host. <tt>pcontrol</tt> attempts to honor the requests 155 for required and desired hosts, giving priority first to required-host 156 jobs, then to the desired-host jobs, and finally to all other jobs. 157 To specify a host for a job, the following commands are used: 158 159 <pre> 160 job -host (command and arguments...) 161 job +host (command and arguments...) 162 </pre> 163 164 The first case specifies a desired host, while the second specifies a 165 required host. It is also possible to specify the special host name 166 <tt>anyhost</tt>, which is equivalent to not specifying a host at all. 167 168 <p> 169 <em>Job priority / urgency levels are not implemented at this time.</em> 170 171 <p> 172 <em>I/O vs CPU tasks are not currently distinguished by pcontrol</em> 173 174 <p> 175 <tt>pcontrol</tt> stores the stdout and stderr for each completed job. 176 To retrieve these data from these streams, the user issues the 177 commands <tt>stdout (JobID)</tt> and <tt>stderr (JobID)</tt>. The 178 result is a single line specifying the number of bytes to expect, 179 followed by a dump of the buffers, followed by the prompt. It is the 180 user's responsibility to relieve pcontrol of this data load by 181 deleting jobs once they are no longer needed. Job deletion is 182 performed with the command <tt>delete (JobID)</tt>. 183 184 <p> 185 Jobs are moved between the following states by pcontrol: 186 <ul> 187 <li> pending: the job has not yet been executed. 188 <li> busy: the job is currently being executed. 189 <li> done: the job has completed, but the stdout/stderr has not been processed by 190 pcontrol. 191 <li> exit: the job has completed with a valid exit status 192 <li>crash: the job has completed with a crash status (exit on signal). 193 </ul> 194 195 <h3>Miscellaneous Commands</h3> 196 197 <p> 198 It is possible to check the status of a single host or job with the 199 user command <tt>check</tt>. 200 201 <p> 202 pcontrol continuously examines the stack of jobs, adjusting their 203 state as needed and extracting their output when it is ready. These 204 checks are performed in the background, with pcontrol ready to accept 205 further commands from the user in the foreground. These checks are 206 performed after every keystroke, and also after an inactivity timeout. 207 The interrupt interval defaults to 1 second, but may be adjusted with 208 the <tt>pulse</tt> command, which takes as an argument, the number of 209 microseconds for the timeout. 210 211 <p> 212 the pcontrol system status may be examined with the command 213 <tt>status</tt>. This provides a dump of the job stacks and the host 214 stacks. 215 216 <p> 217 It is possible to list the jobs currently in a specific stack, 218 corresponding to the list of jobs with a given state. This is done 219 with the command <tt>jobstack (stackname)</tt>. The valid stack names are 220 pending, busy, exit, crash, and done. The result is a list of all 221 jobs on the specified stack. This is useful to determine quickly 222 which jobs have exited or crashed. 223 224 <p> 225 A specific job may be killed with the command <tt>kill (JobID)</tt>. 226 This command is only valid for a job in the <tt>busy</tt> state. Any 227 job in the <tt>pending</tt>, <tt>exit</tt>, or <tt>crash</tt> state 228 may be deleted with the <tt>delete (JobID)</tt> command. This is 229 necessary to free the memory associated with the job and its output 230 streams. 231 232 <p> 233 The command <tt>verbose (mode)</tt> turns the verbosity of the 234 pcontrol operations on or off. 235 236 <p> 218 237 The <tt>pcontrol</tt> and the IPP Image Server have related needs for 219 238 information from the combined storage-and-processing nodes regarding 220 239 which nodes are available. It is not yet clear if this information is 221 best stored in a single location (either <tt>pcontrol</tt> or IPP Image 222 Server), which provides the information to other systems on demand, or 223 if both systems should maintain the information. Also, it may be 224 necessary to distinguish nodes which are available for processing from 225 those that are available to serve data as part of the IPP Image 226 Server. 227 228 The Controller maintains three tables of processing jobs: pending 229 stages, active stages, and completed stages. The pending stages are 230 those which have not yet been performed. The active stages are those 231 currently being performed on one of the remote nodes. The completed 232 stages are those which have finished, either successfully or with an 233 error state. The Controller daemon monitors the collection of remote 234 clients and sends them new pending stages when they become free. 235 236 The <tt>pcontrol</tt> provides a mechanism for users (either other 237 programs or humans) to interact with it. The user interface provides 238 commands to check the current processing job queues, the tables of 239 successful and failed jobs, to stop or delete jobs, etc. 240 240 best stored in a single location (either <tt>pcontrol</tt> or IPP 241 Image Server), which provides the information to other systems on 242 demand, or if both systems should maintain the information. Also, it 243 may be necessary to distinguish nodes which are available for 244 processing from those that are available to serve data as part of the 245 IPP Image Server. 246
Note:
See TracChangeset
for help on using the changeset viewer.
