From 83fda6bcd95da803425e1cab7a3e49e04e2efeb1 Mon Sep 17 00:00:00 2001 From: Joachim Ungar Date: Wed, 6 Apr 2022 16:58:27 +0200 Subject: [PATCH 1/3] be more fault tolerant if psutil.disk_io_counters returns None --- distributed/system_monitor.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/distributed/system_monitor.py b/distributed/system_monitor.py index 062409ddfcb..1213533d8d8 100644 --- a/distributed/system_monitor.py +++ b/distributed/system_monitor.py @@ -116,20 +116,23 @@ def update(self): except Exception: pass else: - last_disk = self._last_disk_io_counters - duration_disk = now - self.last_time_disk - read_bytes_disk = (disk_ioc.read_bytes - last_disk.read_bytes) / ( - duration_disk or 0.5 - ) - write_bytes_disk = (disk_ioc.write_bytes - last_disk.write_bytes) / ( - duration_disk or 0.5 - ) - self.last_time_disk = now - self._last_disk_io_counters = disk_ioc - self.read_bytes_disk.append(read_bytes_disk) - self.write_bytes_disk.append(write_bytes_disk) - result["read_bytes_disk"] = read_bytes_disk - result["write_bytes_disk"] = write_bytes_disk + if disk_ioc is None: # diskless machine + self._collect_disk_io_counters = False + else: + last_disk = self._last_disk_io_counters + duration_disk = now - self.last_time_disk + read_bytes_disk = (disk_ioc.read_bytes - last_disk.read_bytes) / ( + duration_disk or 0.5 + ) + write_bytes_disk = (disk_ioc.write_bytes - last_disk.write_bytes) / ( + duration_disk or 0.5 + ) + self.last_time_disk = now + self._last_disk_io_counters = disk_ioc + self.read_bytes_disk.append(read_bytes_disk) + self.write_bytes_disk.append(write_bytes_disk) + result["read_bytes_disk"] = read_bytes_disk + result["write_bytes_disk"] = write_bytes_disk if not WINDOWS: num_fds = self.proc.num_fds() From 42866535fd3cdbf808c2169305310256f8bf29b3 Mon Sep 17 00:00:00 2001 From: Joachim Ungar Date: Wed, 6 Apr 2022 16:58:27 +0200 Subject: [PATCH 2/3] be more fault tolerant if psutil.disk_io_counters returns None --- distributed/system_monitor.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/distributed/system_monitor.py b/distributed/system_monitor.py index 062409ddfcb..1213533d8d8 100644 --- a/distributed/system_monitor.py +++ b/distributed/system_monitor.py @@ -116,20 +116,23 @@ def update(self): except Exception: pass else: - last_disk = self._last_disk_io_counters - duration_disk = now - self.last_time_disk - read_bytes_disk = (disk_ioc.read_bytes - last_disk.read_bytes) / ( - duration_disk or 0.5 - ) - write_bytes_disk = (disk_ioc.write_bytes - last_disk.write_bytes) / ( - duration_disk or 0.5 - ) - self.last_time_disk = now - self._last_disk_io_counters = disk_ioc - self.read_bytes_disk.append(read_bytes_disk) - self.write_bytes_disk.append(write_bytes_disk) - result["read_bytes_disk"] = read_bytes_disk - result["write_bytes_disk"] = write_bytes_disk + if disk_ioc is None: # diskless machine + self._collect_disk_io_counters = False + else: + last_disk = self._last_disk_io_counters + duration_disk = now - self.last_time_disk + read_bytes_disk = (disk_ioc.read_bytes - last_disk.read_bytes) / ( + duration_disk or 0.5 + ) + write_bytes_disk = (disk_ioc.write_bytes - last_disk.write_bytes) / ( + duration_disk or 0.5 + ) + self.last_time_disk = now + self._last_disk_io_counters = disk_ioc + self.read_bytes_disk.append(read_bytes_disk) + self.write_bytes_disk.append(write_bytes_disk) + result["read_bytes_disk"] = read_bytes_disk + result["write_bytes_disk"] = write_bytes_disk if not WINDOWS: num_fds = self.proc.num_fds() From 0190f6b9fcd379beca8e1e4d58edbb3c460b99c8 Mon Sep 17 00:00:00 2001 From: Joachim Ungar Date: Fri, 8 Apr 2022 16:08:59 +0200 Subject: [PATCH 3/3] reformatted by pre-commit run --- distributed/system_monitor.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/distributed/system_monitor.py b/distributed/system_monitor.py index 1213533d8d8..711650242e2 100644 --- a/distributed/system_monitor.py +++ b/distributed/system_monitor.py @@ -124,9 +124,9 @@ def update(self): read_bytes_disk = (disk_ioc.read_bytes - last_disk.read_bytes) / ( duration_disk or 0.5 ) - write_bytes_disk = (disk_ioc.write_bytes - last_disk.write_bytes) / ( - duration_disk or 0.5 - ) + write_bytes_disk = ( + disk_ioc.write_bytes - last_disk.write_bytes + ) / (duration_disk or 0.5) self.last_time_disk = now self._last_disk_io_counters = disk_ioc self.read_bytes_disk.append(read_bytes_disk)