From e41e0ea701e959eb0aa3c8764169b8a5ca0619a0 Mon Sep 17 00:00:00 2001 From: Xuehai Pan Date: Fri, 4 Aug 2023 15:42:07 +0800 Subject: [PATCH] fix(api/device): use current epoch timestamp for process utilization --- nvitop/api/device.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nvitop/api/device.py b/nvitop/api/device.py index 7491482..def080c 100644 --- a/nvitop/api/device.py +++ b/nvitop/api/device.py @@ -113,6 +113,7 @@ import subprocess import sys import textwrap import threading +import time from collections import OrderedDict from typing import ( TYPE_CHECKING, @@ -683,7 +684,6 @@ class Device: # pylint: disable=too-many-instance-attributes,too-many-public-me self._nvml_index = libnvml.nvmlQuery('nvmlDeviceGetIndex', self._handle) self._max_clock_infos: ClockInfos = ClockInfos(graphics=NA, sm=NA, memory=NA, video=NA) - self._timestamp: int = 0 self._lock: threading.RLock = threading.RLock() self._ident: tuple[Hashable, str] = (self.index, self.uuid()) @@ -1700,10 +1700,9 @@ class Device: # pylint: disable=too-many-instance-attributes,too-many-public-me samples = libnvml.nvmlQuery( 'nvmlDeviceGetProcessUtilization', self.handle, - self._timestamp, + time.time_ns() // 1000, default=(), ) - self._timestamp = min((s.timeStamp for s in samples), default=self._timestamp) for s in sorted(samples, key=lambda s: s.timeStamp): try: processes[s.pid].set_gpu_utilization(s.smUtil, s.memUtil, s.encUtil, s.decUtil) @@ -2019,7 +2018,6 @@ class MigDevice(Device): # pylint: disable=too-many-instance-attributes raise libnvml.NVMLError_NotFound self._max_clock_infos = ClockInfos(graphics=NA, sm=NA, memory=NA, video=NA) - self._timestamp = 0 self._lock = threading.RLock() self._ident = (self.index, self.uuid())