p4 monitor
Display P4 Server process information and control long-running tasks.
Syntax
p4 [g-opts] monitor show [-a -l -e -L -s R | T | P | B | F | I ]
p4 [g-opts] monitor terminate id
p4 [g-opts] monitor clear {id | all}
p4 [g-opts] monitor pause id
p4 [g-opts] monitor resume id p4 [g-opts] monitor realtime [-F -T]
Description
p4 monitor allows a system administrator to observe and control P4 Server-related processes running on a P4 Server machine. Processes are tracked using a dedicated table that is constantly updated. This has a minor impact on server performance.
To use p4 monitor, you must enable monitoring on the
      Perforce
      service by setting the monitor configurable with p4 configure. 
Valid values for the monitor configurable are:
- 0: Server process monitoring off. (Default)
- 1: monitor active commands
- 2: active commands and idle connections
- 3: same as 2, but also includes connections that failed to initialize (stuck at the Init() phase)
- 5: same as 2, but also includes a list of the files locked by the command for more than one second
- 10: same as 5, but also includes lock wait times
- 25: same as 10, except that the list of files locked by the command includes files locked for any duration
Changes to the monitor configurable affect all new
      p4 processes that connect to the server. In some cases, restarting
      the server is required for changes to take effect. To learn more, see monitor.
See Enabling process monitoring in P4 Server Administration Documentation.
Command syntax variants provide the following alternatives:
- 
                                                    ( listlevel access):To list current process information, usep4 monitor show. By default, all processes are listed, but only the command (for example,sync,edit,submit) is shown, without arguments. Use the-s statusoption to restrict the display to processes in the specified state.
- (superlevel access):To show the list of arguments associated with each command, use the-a(arguments) option or-l(long) option. For additional information from the user environment, use the-e(environment) option. To show locked files, use the-Loption.
- 
                                                    (operator or superlevel access): To mark a process for termination, usep4 monitor terminate id. This command requires that the user be an operator or havesuperlevel access.The p4 monitor terminatecommand does not mark a process for termination unless the process has been running for at least ten seconds. Some commands, such asp4 obliterate, cannot be terminated.To control how often the list of processes is refreshed, see the db.monitor.interval, which is also mentioned in the Perforce Knowledge Base article, Fixing a hung P4 Server.
- 
                                                    (operator or superlevel access): If a command terminates prematurely on the server side, it might be erroneously listed as running. You can clear such processes withp4 monitor clear.With superlevel access:- To remove an entry from the monitor table, use p4 monitor clear id
- To clear the entire table, use
	  p4 monitor clear all
 Processes marked as running continue to run to completion even if removed from the monitor table with p4 monitor clear.
- To remove an entry from the monitor table, use 
- 
                                                    (operator or superlevel access): To control the following tasks if they are running too long, use thep4 monitor pauseandp4 monitor resume:
Output format
Each line of p4 monitor output consists of the
      following fields:
pid status owner hh:mm:ss command [args]
| pid | The process ID under Unix (or thread ID under Windows) | 
| status | R,  
 | 
| owner | The P4 Server user name of the user who invoked the command. | 
| hh:mm:ss | The time elapsed since the command was called. | 
| command [args] | The command and arguments as received by the server. | 
For example, consider the following output to the p4 monitor
	  show -L command, which displays information about locked
      files:
8764 R user 00:00:00 edit
      [server.locks/clients/88,d/ws4(W),db.locks(R),db.rev(R)]
8766 R user 00:00:00 edit
      [server.locks/clients/89,d/ws5(W),db.locks(R),db.rev(R)]
8768 R user 00:00:00 monitor
                                            The output shows the pid, status, owner, and time information, followed by two edit
      commands that have various files locked, including the client workspace
      lock in exclusive mode for the workspaces ws4 and
      ws5, and db.locks and db.rev tables in read-only mode.
If you have enabled idle process monitoring by setting the
      monitor configurable to 2, idle processes appear with a
      status of R, but with a
      command of IDLE.
Some commands (for instance, p4
	    submit) invoke multiple processes. For example,
      dm_CommitSubmit or dm_SubmitChange might appear
      in the output of p4 monitor as two separate phases of
      the p4 submit
      command.
Getting pull thread information for replicas
If you are running a replica with monitoring enabled and you have not
      configured the monitor table to be disk-resident, you can run the
      following command to get more precise information about what pull threads
      are doing. Remember to set the monitor.lsof configurable.
p4 monitor show -sB -la -L
                                            Command output would look like this:
31701 B uservice-edge3 00:07:24 pull sleeping 1000 ms
    [server.locks/replica/49,d/pull(W)]
                                            p4 monitor realtime
Outputs real-time performance counters when enabled by setting the rt.monitorfile configurable. One use case is to determine, in real time, whether a replica is making progress while  replicating a large transaction from the master. (This use case requires that the rpl.track.behind configurable be set to 1 or 2.)
p4 monitor realtime options
You must be an operator or have super access to use the
      following options:
| Option | Description | 
|---|---|
| -F
 | List only performance counters satisfying the filter expression. The filter evaluates the contents of the fields in the preceding list. Filtering is case-sensitive. Example:  (The filter syntax is similar to the one used for Job Views.) | 
| -T
 | Returns only the specified fields. The field names can be specified using a comma-delimited list or a space-delimited list. Example:  | 
The performance counters can be read at the command line or by external tools.
| Command line | External tools | 
|---|---|
| Use any of the following: 
 See P4 Server (p4d) Reference and Monitoring the server in the P4 Server Administration Documentation. | Use the MonItemsclass in the P4 API for C/C++ Documentation. | 
The real-time performance counters are for monitoring in real time:
| Counter | Description | 
|---|---|
| rtv.db.ckp.active  | Indicates if a checkpoint is in progress. | 
| rtv.db.ckp.records | The number of records that have been read into an ongoing checkpoint. | 
| rtv.db.io.records | Running count of database IO 	                         reads, writes, and deletes. This counter
	                              might affect performance. To enable, set
	                              the db.rt.ioconfigurable to1. | 
| rtv.db.lockwait | Commands waiting for locks. Includes the high mark of most commands waiting for locks at any one time. | 
| rtv.rpl.behind.bytes | Replication lag represented as bytes of
	                              journal that the upstream server has yet
	                              to send. This counter is enabled when the
	                              rpl.track.behind configurable is set to 	                              1or greater.
	                              The rpl.track.behind.interval 
	                              configurable can be used to tune the
	                              frequency of updates during p4 pull. | 
| rtv.rpl.behind.journals | Replication lag represented as rotated
	                              journals that the upstream server has yet
	                              to send.
	                              See rtv.rpl.behind.bytesfor related
	                              configurables. | 
| rtv.server.connection.pause.pct.cpu | The percentage of commands to pause when CPU pressure is in a high state. The highest percentage of this or the  | 
| rtv.server.connection.pause.pct.mem | The percentage of commands to
	                              pause when memory pressure is in a medium
	                              or high state. The highest percentage of
	                              the  | 
| rtv.svr.sessions.active | Current connections from clients. Includes a high mark of most concurrent connections at any one time. | 
| rtv.svr.sessions.paused | Number of server sessions that are paused. | 
| rtv.svr.sessions.total | Running count of client connections. | 
| rtv.sys.mem.os.available | An estimate of how much memory is available for starting new applications without swapping. | 
| rtv.sys.mem.os.free | Amount of memory that is not allocated to any application or the operating system. | 
| rtv.sys.mem.os.swap.free | Amount of swap memory that is not allocated. | 
| rtv.sys.mem.os.swap.total | Total amount of swap configured in the system. | 
| rtv.sys.mem.os.total | Total amount of operating system memory. | 
| rtv.sys.pressure.lastcollecttime | Timestamp of the most recent assessment of system pressure. | 
| rtv.sys.pressure.level.cpu | The level of CPU pressure on a scale from 0= low,1= medium,2= high | 
| rtv.sys.pressure.level.mem  | The level of memory pressure on a scale from 0= low,1= medium,2= high | 
Options
You must be an operator or have super access to use the
      following options:
| 
 | Show all arguments associated with the process (for example,
	       P4 Server user names are truncated to 10 characters, and each line of output is limited to 80 characters. | 
| 
 | Show environment information, including invoking P4 Server application (if known), host IP address, and workspace name. | 
| 
 | Show all arguments in long form, that is, without truncating user names or the list of command line arguments. | 
| 
 | Show information about locked files. The information is
	      collected for the duration of the  
 If you use the  | 
| 
 | Restrict the display to processes in the  | 
| 
 | See Global options. | 
Usage notes
| Can File Arguments Use Revision Specifier? | Can File Arguments Use Revision Range? | Minimal Access Level Required | 
|---|---|---|
| No | No | 
 available to an operator user 
 | 
Examples
| 
 | Show
	      P4 Server
	      process information (commands only). Requires  | 
| 
 | Show arguments and commands, without limits on line length.
	      Requires  | 
| 
 | Show arguments and commands, limited to 80 characters per line
	      of output. Requires  | 
| 
 | Instruct the
	      Perforce
	      service to mark process 123 for termination. Requires
	       | 
| 
 | Clears the monitor table of all entries. Requires
	       | 
Related commands
| To turn on monitoring | 
 | 
| To turn off monitoring | 
 |