Skip to content

System monitor

cutana.system_monitor

System resource monitoring module for Cutana.

This module handles: - System resource monitoring (CPU, memory, disk usage) - Kubernetes pod limit detection - Resource constraint checking - Cross-platform resource detection

SystemMonitor()

Monitors system resources and provides Kubernetes-aware resource detection.

Handles both bare-metal and containerized environments with appropriate resource limit detection and monitoring.

Initialize the system monitor.

get_system_resources()

Get current system resource usage.

On datalabs, uses Kubernetes pod limits if available, otherwise falls back to system resources.

Returns:

Type Description
Dict[str, Any]

Dictionary containing resource information

check_memory_constraints(memory_required)

Check if there's sufficient memory for processing.

On datalabs, uses Kubernetes pod limits when available.

Parameters:

Name Type Description Default
memory_required int

Memory required in bytes

required

Returns:

Type Description
bool

True if sufficient memory is available

estimate_memory_usage(tile_size, num_workers)

Estimate memory usage for processing.

Parameters:

Name Type Description Default
tile_size int

Size of FITS tile in bytes

required
num_workers int

Number of worker processes

required

Returns:

Type Description
int

Estimated memory usage in bytes

record_resource_snapshot()

Record a snapshot of current resource usage.

get_resource_history()

Get resource usage history.

Returns:

Type Description
list

List of resource snapshots

get_cpu_count()

Get the number of CPU cores available.

Returns:

Type Description
int

Number of CPU cores

get_effective_cpu_count()

Get the effective number of CPU cores available, respecting Kubernetes limits.

In datalabs/Kubernetes environments, uses pod CPU limits if available. Otherwise falls back to physical CPU count.

Returns:

Type Description
int

Effective number of CPU cores available

get_conservative_cpu_limit(max_workers)

Get conservative CPU limit (N-1 cores, respecting max_workers).

Parameters:

Name Type Description Default
max_workers int

Maximum workers requested

required

Returns:

Type Description
int

Conservative CPU limit

get_current_process_memory_mb()

Get current memory usage of this process in MB.

Returns:

Type Description
float

Memory usage in megabytes

report_process_memory_to_tracker(job_tracker, process_name, completed_sources, update_type='sample')

Measure current process memory and report it to the job tracker.

This centralizes memory measurement and reporting logic to keep cutout_process.py clean and focused on processing logic.

Parameters:

Name Type Description Default
job_tracker

JobTracker instance to report to

required
process_name str

Name/ID of the process being tracked

required
completed_sources int

Number of sources completed so far

required
update_type str

Type of update - "peak" (replace samples) or "sample" (add to samples)

'sample'

Returns:

Type Description
bool

True if reporting was successful, False otherwise