diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-09-17 01:59:18 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-09-17 02:06:20 -0400 |
commit | 1af4a4ae9f72b9e4e4055ebddc9947ce51d8a02a (patch) | |
tree | 8f9654673a9040bd3889df74be309e62f2912e46 /klippy/reactor.py | |
parent | cd23c95760e0fb1dbb5af5f2aa07667a2228a869 (diff) | |
download | kutter-1af4a4ae9f72b9e4e4055ebddc9947ce51d8a02a.tar.gz kutter-1af4a4ae9f72b9e4e4055ebddc9947ce51d8a02a.tar.xz kutter-1af4a4ae9f72b9e4e4055ebddc9947ce51d8a02a.zip |
reactor: Record time of recent gc collection sweeps
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/reactor.py')
-rw-r--r-- | klippy/reactor.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/klippy/reactor.py b/klippy/reactor.py index 0c24b801..7e41176e 100644 --- a/klippy/reactor.py +++ b/klippy/reactor.py @@ -96,8 +96,10 @@ class SelectReactor: def __init__(self, gc_checking=False): # Main code self._process = False - self._check_gc = gc_checking self.monotonic = chelper.get_ffi()[1].get_monotonic + # Python garbage collection + self._check_gc = gc_checking + self._last_gc_times = [0., 0., 0.] # Timers self._timers = [] self._next_timer = self.NEVER @@ -110,6 +112,8 @@ class SelectReactor: self._g_dispatch = None self._greenlets = [] self._all_greenlets = [] + def get_gc_stats(self): + return tuple(self._last_gc_times) # Timers def update_timer(self, timer_handler, waketime): timer_handler.waketime = waketime @@ -134,13 +138,13 @@ class SelectReactor: gi = gc.get_count() if gi[0] >= 700: # Reactor looks idle and gc is due - run it + gc_level = 0 if gi[1] >= 10: + gc_level = 1 if gi[2] >= 10: - gc.collect(2) - else: - gc.collect(1) - else: - gc.collect(0) + gc_level = 2 + self._last_gc_times[gc_level] = eventtime + gc.collect(gc_level) return 0. return min(1., max(.001, self._next_timer - eventtime)) self._next_timer = self.NEVER |