perun.monitoring.monitor
Monitor module.
Attributes
Classes
Represents the status of a monitor. |
|
The PerunMonitor class is responsible for monitoring the application and collecting data. |
Module Contents
- perun.monitoring.monitor.log
- class perun.monitoring.monitor.MonitorStatus(*args, **kwds)
Bases:
enum.EnumRepresents the status of a monitor.
Attributes
SETUP: The monitor is being set up. RUNNING: The monitor is running. PROCESSING: The monitor is processing data. SCRIPT_ERROR: An error occurred in the monitor’s script. PERUN_ERROR: An error occurred in the Perun system. MPI_ERROR: An error occurred in the MPI system. FILE_NOT_FOUND: The required file was not found. SUCCESS: The monitor completed successfully.
- SETUP
- RUNNING
- PROCESSING
- SCRIPT_ERROR
- PERUN_ERROR
- MPI_ERROR
- FILE_NOT_FOUND
- SUCCESS
- class perun.monitoring.monitor.PerunMonitor(app: perun.monitoring.application.Application, comm: perun.comm.Comm, backends: Dict[str, perun.backend.backend.Backend], l_assigned_sensors: Dict[str, Tuple], config: configparser.ConfigParser)
The PerunMonitor class is responsible for monitoring the application and collecting data.
Parameters
- appApplication
The application to be monitored.
- commComm
The communication object for inter-process communication.
- l_sensors_configDict[str, Set[str]]
The configuration for local sensors.
- backendsDict[str, Backend]
The backends for data collection.
- configConfigParser
The configuration parser object.
Attributes
- _appApplication
The application to be monitored.
- _commComm
The communication object for inter-process communication.
- _l_sensors_configDict[str, Tuple]
The configuration for local sensors.
- _backendsDict[str, Backend]
The backends for data collection.
- _configConfigParser
The configuration parser object.
- statusMonitorStatus
The current status of the monitor.
- _app
- _comm
- _backends
- _l_assigned_sensors
- _config
- status
- _reset_subprocess_handlers() None
Reset subprocess handlers.
- run_application(run_id: str, record: bool = True) Tuple[MonitorStatus, perun.data_model.data.DataNode | None]
Run the application and returns the monitor status and data node.
Parameters
- run_idstr
The ID of the run.
- recordbool, optional
Whether to record data or not. Defaults to True.
Returns
- Tuple[MonitorStatus, Optional[DataNode]]
A tuple containing the monitor status and the data node.
Raises
- SystemExit
If the application exits using exit(), quit(), or sys.exit().
- Exception
If an error occurs in the monitored script.
Notes
- If record is True, the method performs the following steps:
Gets the sensor configuration.
If there are assigned devices, creates a subprocess to run the application.
Starts the application and waits for it to be ready.
Runs the application.
Stops the application and retrieves the data.
If record is False, the method simply runs the application without recording data.
- _run_python_app(run_id: str) Tuple[MonitorStatus, perun.data_model.data.DataNode | None]
- _run_binary_app(run_id: str) Tuple[MonitorStatus, perun.data_model.data.DataNode | None]
- _handle_failed_run() perun.data_model.data.DataNode | None
- _process_single_run(run_id: str, starttime_ns: int, available_ranks: List[int] | None = None) perun.data_model.data.DataNode | None
Collect data from subprocess and pack it in a data node.
Parameters
- run_idstr
The id to use for the data node.
- starttime_nsint
Start time of the run.
Returns
- Optional[DataNode]
If the rank spawned a subprocess, returns the data node with the data.