---
name: "cmap_keys"
section: "8"
platform: "linux"
package: "corosync"
version: "3.0.1-2+deb10u1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/cmap_keys"
---

# cmap\_keys(8)

Overview of keys stored in the Configuration Map

## NAME

cmap\_keys - Overview of keys stored in the Configuration Map

## OVERVIEW

There are 3 main types of keys stored in CMAP:

\* Mapping of values stored in the config file.

\* Runtime statistics.

\* Other user created values.

In this man page, wild-cards have the usual meaning.

## ICMAP KEYS

These keys are in the icmap (default) map

- internal\_configuration.\*

  Internal configuration data. All keys in this prefix are read only. It's only useful for getting a list of loaded services.

- logging.\*

  Values read from the configuration file. It's possible to change them at runtime. If subsystem specific configuration is needed, the key must be in the form logging.logger\_subsys.SERVICE.key, where SERVICE is upper case name of the service and key is same as in the configuration file. All values are of string type.

- nodelist.\*

  Values are read from the configuration file only (dynamic updates are not allowed). Each node element in the configuration file gets assigned its position starting from zero. So the first node from the config file has nodelist.node.0. prefix. To be a valid entry, each node must have **ring0\_addr** key. To change the **nodeid** key, use a u32 data type.

  Local node position is stored in **local\_node\_pos** key (RO), so it's easy to find out nodeid/ring addresses of the local node directly from cmap.

- runtime.blackbox.\*

  Trigger keys for storing fplay data. It's recommended that you use the corosync-blackbox command to change keys in this prefix.

- runtime.force\_gather

  Set to 'yes' to force the processor to move into the GATHER state.  This operation is dangerous and is not recommended.

- runtime.config.\*

  Contains the values actually in use by the totem membership protocol. Values here are either taken from the Corosync configuration file, defaults or computed from entries in the config file. For information on individual keys please refer to the man page [**corosync.conf**(5)](/corosync.conf/5.md).

- runtime.services.\*

  Prefix with statistics for service engines. Each service has its own **service\_id** key in the prefix with the name runtime.services.SERVICE., where SERVICE is the lower case name of the service. Inside the service prefix is the number of messages received and sent by the corosync engine in the format runtime.services.SERVICE.EXEC\_CALL.rx and runtime.services.SERVICE.EXEC\_CALL.tx, where EXEC\_CALL is the internal id of the service call (so for example 3 in cpg service is receive of multicast message from other nodes).

- runtime.totem.members.\*

  Prefix containing members of the totem single ring protocol. Each member keys has format runtime.totem.members.NODEID.KEY, where key is one of:

  **config\_version** Config version of the member node.

- resources.process.PID.\*

  Prefix created by applications using SAM with CMAP integration. It contains the following keys:

  **recovery** Recovery policy of the process. Can be one of quit or restart.

  **poll\_period** Value passed in sam\_initialize as a time\_interval.

  **last\_updated** Last time SAM received a heartbeat from the client.

  **state** State of the client. Can be one of failed, stopped, running and waiting for quorum.

- uidgid.\*

  Information about users/groups which are allowed to make IPC connections to corosync. Entries loaded from configuration file are stored with uidgid.config.\* prefix and are pruned on configuration file reload. Dynamic entries has uidgid.\* prefix and a configuration file reload doesn't affect them.

- quorum.cancel\_wait\_for\_all

  Tells votequorum to cancel waiting for all nodes at cluster startup. Can be used to unblock quorum if notes are known to be down. For pcs use only.

- config.reload\_in\_progress

  This value will be set to 1 (or created) when a corosync.conf reload is started, and set to 0 when the reload is completed. This allows interested subsystems to do atomic reconfiguration rather than changing each key. Note that individual add/change/delete notifications will still be sent during a reload.

- config.totemconfig\_reload\_in\_progress

  This key is similar to **config.totemconfig\_reload\_in\_progress** but changed after the totem config trigger is processed. It is useful (mainly) for situations when **nodelist.local\_node\_pos** must be correctly reinstated before anything else.

## STATS KEYS

These keys are in the stats map. All keys in this map are read-only. Modification tracking of individual keys is supported in the stats map, but not prefixes. Add/Delete operations are supported on prefixes though so you can track for new ipc connections or knet interfaces.

- stats.srp.\*

  Prefix containing statistics about totem. Typical key prefixes:

  **commit\_entered** Number of times the processor entered COMMIT state.

  **commit\_token\_lost** Number of times the processor lost token in COMMIT state.

  **consensus\_timeouts** How many times the processor timed out forming a consensus about membership.

  **continuous\_gather** How many times the processor was not able to reach consensus.

  **firewall\_enabled\_or\_nic\_failure** Set to 1 when processor was not able to reach consensus for long time. The usual reason is a badly configured firewall or connection failure.

  **gather\_entered** Number of times the processor entered GATHER state.

  **gather\_token\_lost** Number of times the processor lost token in GATHER state.

  **mcast\_retx** Number of retransmitted messages.

  **mcast\_rx** Number of received multicast messages.

  **mcast\_tx** Number of transmitted multicast messages.

  **memb\_commit\_token\_rx** Number of received commit tokens.

  **memb\_commit\_token\_tx** Number of transmitted commit tokens.

  **memb\_join\_rx** Number of received join messages.

  **memb\_join\_tx** Number of transmitted join messages.

  **memb\_merge\_detect\_rx** Number of received member merge messages.

  **memb\_merge\_detect\_tx** Number of transmitted member merge messages.

  **orf\_token\_rx** Number of received orf tokens.

  **orf\_token\_tx** Number of transmitted orf tokens.

  **recovery\_entered** Number of times the processor entered recovery.

  **recovery\_token\_lost** Number of times the token was lost in recovery state.

  **rx\_msg\_dropped** Number of received messages which were dropped because they were not expected (as example multicast message in commit state).

  **token\_hold\_cancel\_rx** Number of received token hold cancel messages.

  **token\_hold\_cancel\_tx** Number of transmitted token hold cancel messages.

  **mtt\_rx\_token** Mean transit time of token in milliseconds. In other words, time between two consecutive token receives.

  **avg\_token\_workload** Average time in milliseconds of holding time of token on the current processor.

  **avg\_backlog\_calc** Average number of not yet sent messages on the current processor.

- stats.knet.nodeX.linkY.\*

  Statistics about the network traffic to and from each node and link when using tke kronosnet transport

  **connected** Whether the link is connected or not

  **up\_count** Number of times this link has changed state to UP

  **down\_count** Number of times this link has changed state to DOWN

  **latency\_ave / latency\_max / latency\_max** Calculated latencies of this link. Note that if there has been no traffic on the link then latency\_min will show a very large number.

  **latency\_samples** The number of samples used to calculate the latency figures, so you have some idea of their precision.

  **rx\_data\_packets / tx\_data\_packets** The number of packets sent/received on this link

  **rx\_data\_bytes / tx\_data\_bytes** The number of bytes sent/received on this link

  **rx\_pmtu\_packets / tx\_pmtu\_packets** The number of packets sent/received by the PMTUd subsystem

  **rx\_pmtu\_bytes / tx\_pmtu\_bytes** The number of bytes sent/received by the PMTUd subsystem

  **rx\_ping\_packets / tx\_ping\_packets** The number of packets sent/received as pings

  **rx\_ping\_bytes / tx\_ping\_bytes** The number of bytes sent/received as pings

  **rx\_pong\_packets / tx\_pong\_packets** The number of packets sent/received as pongs

  **rx\_pong\_bytes / tx\_pong\_bytes** The number of bytes sent/received as pongs

  **rx\_total\_packets / tx\_total\_packets** The total number of packets sent/received. The aggregate of all of the above packet stats

  **rx\_total\_bytes / tx\_total\_bytes** The total number of bytes sent/received. The aggregate of all of the above bytes stats

  **tx\_data\_retries / tx\_pmtu\_retries / tx\_ping\_retries / tx\_pong\_retries / tx\_total\_retries** Number of times a transmit operation had to be retried due to the socket returning EAGAIN

- stats.ipcs.\*

  There is information about total number of active connections from client programs at the time the request was made. **active** number of closed connections during whole runtime of corosync **closed** Total number of connections that have been made since corosync was started

- stats.ipcs.ID.\*

  Each IPC connection has a unique ID. This is in the form \[\[serviceX:\]\[PID:\]internal\_id.

  Typical keys in this prefix are:

  **proc\_name** process name of connected process (unavailable on some platforms)

  **dispatched** number of dispatched messages.

  **invalid\_request** number of requests made by IPC which are invalid (calling non-existing call, ...).

  **name** contains short name of the IPC connection (unavailable on some platforms).

  **overload** is number of requests which were not processed because of overload.

  **queue\_size** contains the number of messages in the queue waiting for send.

  **recv\_retries** is the total number of interrupted receives.

  **requests** contains the number of requests made by IPC.

  **responses** is the number of responses sent to the IPC client.

  **send\_retries** contains the total number of interrupted sends.

  **service\_id** contains the ID of service which the IPC is connected to.

- stats.clear.\*

  These are write-only keys used to clear the stats for various subsystems

  **totem** Clears the pg & srp totem stats.

  **knet** Clears the knet stats

  **ipc** Clears the ipc stats

  **all** Clears all of the above stats

## DYNAMIC CHANGE USER/GROUP PERMISSION TO USE COROSYNC IPC

Is the same as in the configuration file. eg: to add UID 500 use

\# corosync-cmapctl -s uidgid.uid.500 u8 1

GID is similar, so to add a GID use

\# corosync-cmapctl -s uidgid.gid.500 u8 1

For removal of permissions, simply delete the key

\# corosync-cmapctl -d uidgid.gid.500

## SEE ALSO

[**corosync\_overview**(7)](/corosync_overview/7.md), [**corosync.conf**(5)](/corosync.conf/5.md), [**corosync-cmapctl**(8)](/corosync-cmapctl/8.md)
