# 12.8. Internal frameworks

The Modular Component Architecture (MCA) is the backbone of PMIx – most services and functionality are implemented through MCA components.

Here is a list of all the component frameworks in PMIx as of this writing July-2024:

- `bfrops`: Buffer Operations, including support for pack/unpack, copy, print, compare, and load of data types and structured objects

- `gds`: Generalized DataStore for storing job-level and other data

- `pcompress`: Compress to support compression of large data objects

- `pdl`: DLopen support

- `pfexec`: Fork/Exec support to allow tools to start child processes

- `pgpu`: GPU support

- `pif`: Interface discovery

- `pinstalldirs`: Install Directories - provides a struct containing all installation locations

- `plog`: Logging of user-provided alerts

- `pmdl`: Programming Model - provides support for a range of programming models and libraries, including collection of default parameters and environmental variables for forwarding and setting of library-specific environmental variables

- `pnet`: Network support, including computation of endpoints to support the `instant on` launch procedure

- `preg`: Regular expression generator and parser

- `prm`: Resource Manager support - translation of generic PMIx directives (e.g., mapping and resource definitions) to RM-specific values and general RM-specific support

- `psec`: Security operations such as connection handshakes

- `psensor`: Sensor framework for monitoring processes, including resource utilization and state-of-health (e.g., heartbeat)

- `psquash`: Internal framework for squashing integer data values during transmission

- `pstat`: Statistics, including reporting resource usage at the process, node, and disk levels

- `pstrg`: Storage system support for querying availability and characteristics of file systems

- `ptl`: Transport Layer for client-server and tool-server communication

## 12.8.1. Framework notes

Each framework typically has one or more components that are used at run-time. For example, the `bfrops` framework is used by PMIx to pack/unpack data for transmission, copy data objects, and other data manipulation operations. The `v3` component, for example, supports the data object definitions introduced in v3 of the library, while the `v41` component supports those introduced in v4.1.

## 12.8.2. MCA parameter notes

Each component typically has some tunable parameters that can be changed at run-time. Use the pmix_info(1) command to check a component to see what its tunable parameters are. For example:

    shell$ pmix_info --param psensor file

shows the parameters (and default values) for the `file` `psensor` component.

See this section for details on how to set MCA parameters at run time.