You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, whenever get_cpus is called, it will instantiate a RAPLFile for every CPU/DRAM domain, which will in turn spawn a wraparound monitor process. However, the user may not intend to use RAPL anyway, which makes the processes poll RAPL for nothing.
One good way is to start those processes lazily, meaning that starting the wraparound monitor processes is deferred as much as possible.
That is, only when RAPL metrics are actually needed (e.g., ZeusMonitor that tracks a non-empty cpu_indices calls begin_window), the processes will be spawned only then.
I agree, we could wait until the very first read() on a RAPLFile to start the monitoring process. I think we could do something like this
Initialize self.wraparound_tracker = None.
In read() initialize RaplWraparoundTracker if self.wraparound_tracker == None
Currently, whenever
get_cpus
is called, it will instantiate aRAPLFile
for every CPU/DRAM domain, which will in turn spawn a wraparound monitor process. However, the user may not intend to use RAPL anyway, which makes the processes poll RAPL for nothing.One good way is to start those processes lazily, meaning that starting the wraparound monitor processes is deferred as much as possible.
That is, only when RAPL metrics are actually needed (e.g.,
ZeusMonitor
that tracks a non-emptycpu_indices
callsbegin_window
), the processes will be spawned only then.@wbjin WDYT?
The text was updated successfully, but these errors were encountered: