MemoryMetricTask¶
MemoryMetricTask creates a resident set size Measurement based on data collected by @timeMethod.
It reads the raw timing data from the top-level CmdLineTask’s metadata, which is identified by the task configuration.
In general, it’s only useful to measure this metric for the top-level task being run.
@timeMethod measures the peak memory usage from process start, so the results for any subtask will be contaminated by previous subtasks run on the same data ID.
Because @timeMethod gives platform-dependent results, this task may give incorrect results (e.g., units) when run in a distributed system with heterogeneous nodes.
Processing summary¶
MemoryMetricTask searches the metadata for @timeMethod-generated keys corresponding to the method of interest.
If it finds matching keys, it stores the maximum memory usage as a Measurement.
Python API summary¶
from lsst.verify.tasks.commonMetrics import MemoryMetricTask
- 
classMemoryMetricTask
- A Task that computes the maximum resident set size using metadata produced by the `lsst.utils.timer.timeMethod` decorator - ...
- 
attributeconfig
- Access configuration fields and retargetable subtasks. 
See also
See the MemoryMetricTask API reference for complete details.
Butler datasets¶
Input datasets¶
- metadata
- The metadata of the top-level command-line task (e.g., ProcessCcdTask,ApPipeTask) being instrumented. Because the metadata produced by each top-level task is a different Butler dataset type, this dataset must be explicitly configured when runningMemoryMetricTaskor aMetricsControllerTaskthat contains it.
Output datasets¶
- measurement
- The value of the metric.
The dataset type should not be configured directly, but should be set
changing the packageandmetrictemplate variables to the metric’s namespace (package, by convention) and in-package name, respectively. Subclasses that only support one metric should set these variables automatically.
Retargetable subtasks¶
No subtasks.
Configuration fields¶
connections¶
- Data type
- lsst.pipe.base.config.Connections
- Field type
- ConfigField
metadataDimensions¶
metric¶
saveLogOutput¶
saveMetadata¶
target¶
lsst.pipe.base.Task.getFullMetadata().Examples¶
from lsst.verify.tasks import MemoryMetricTask
config = MemoryMetricTask.ConfigClass()
config.connections.metadata = "apPipe_metadata"
config.connections.package = "pipe_tasks"
cofig.connections.metric = "ProcessCcdMemory"
config.target = "apPipe:ccdProcessor.runDataRef"
task = MemoryMetricTask(config=config)
# config.connections provided for benefit of MetricsControllerTask/Pipeline
# but since we've defined it we might as well use it
metadata = butler.get(config.connections.metadata)
processCcdTime = task.run(metadata).measurement