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 |