Function | Package: net.rpc | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version

## rpc-process-pool

Arguments: &key limit drop active query flush forget show

This function is used to query and to manage the process pool maintained by the Allegro CL RPC Module. Each new in-bound remote call (a call that is not a callback from an out-bound call) is evaluated in a new Lisp process. In the os-threads model of Lisp multi-processing (see multiprocessing.htm), there is some overhead associated with the creation of a new Lisp process. The process pool reduces this overhead by re-using processes.

The keyword arguments are:

- limit: This argument is used to set the limit on the number of idle processes kept in the pool. The initial value is 15. Valid values are integers from 1 to 100. Note that the processes kept in the pool are reserved for remote calls. If there is an OS limit on the number of running processes, then the processes in the pool are included in that limit.
- drop: This argument is used to set the limit on how long idle processes are kept in the pool. The initial value is 15; the units are minutes. Valid values are integers from 0 to 1000000. If this parameter is 0, then processes are discarded as soon as they are done, and the process pool will almost always be empty.
- active: This argument is used to set the limit on the number of processes that will be run simultaneously to handle remote calls. The initial value is 10. Valid values are integers from 1 to 100, but note that the actual number of running processes may be bounded by an OS resource limit.
- query: when a value from the list given below is given for this argument, the value of the function call is the value of a parameter of the process pool. Otherwise the value returned is `nil`. See below for possible values for query and the resulting value of the function call.
- show: When non-`nil`, display the status, parameters and statistics of the process pool on `*standard-output*`.
- flush: When non-`nil`, discard all the idle processes in the pool.
- forget: When non-`nil`, discard any pending remote calls waiting for a process.
- new: When `:none`, disable the process pool facility. When non-`nil` (but not `:none`), start a new pool. In both cases, all previous statistics are discarded.If the flush and/or forget arguments are non-`nil`, their effect takes place first. If the flush argument is `nil` or omitted, then any idle processes are discarded with a warning. If the forget argument is `nil` or omitted, then any waiting work items are discarded with a warning.

### Possible values for the query argument

If the value of the query argument is one of the listed keywords, rpc-process-pool returns information about the process pool and the status of processes, as described. If the value of the query argument is `nil` or omitted, rpc-process-pool returns `nil`.

Value of query | Value returned by rpc-process-pool
`nil`. This is the default. | `nil`
`:waiting` | Return the number of remote calls waiting for a process at this moment.
`:pool` | Return the number of idle processes in the pool at this moment.
`:running` | Return the number of processes running a remote call at this moment.
`:limit` | Return the limit on the number of idle processes kept in the pool.
`:drop` | Return the limit on how long idle processes are kept in the pool.
`:active` | Return the limit on the number of processes that will be run simultaneously to handle remote calls.
`:max-active` | Return the maximum number of active processes.
`:max-waiting` | Return the maximum number of calls waiting for a process.
`:re-used` | Return the number of times a process was re-used.
`:new` | Return the number of times a process was created.
`:saved` | Return the number of times a process was saved for re-use.
`:killed` | Return the number of times a process was discarded after use.
`:dropped` | Return the number of times a process was discarded from the idle pool

See also rpc.htm for general information on the Remote Procedure Call utility in Allegro CL.

Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version