mate-system-monitor/1006-fix-get-pcpu-with-double-to-solve-the-cpu-don-t-chan-109131eb.patch
2022-08-04 10:37:58 +08:00

43 lines
1.3 KiB
Diff

From 109131eb4925a9c5da7a260d0f223ffd438b203c Mon Sep 17 00:00:00 2001
From: yuanxing <yuanxing@kylinos.com.cn>
Date: Wed, 20 Oct 2021 14:26:34 +0800
Subject: [PATCH 1006/1006] fix(*):get pcpu with double to solve the cpu% don't
changed bug
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将获取的pcpu的值定义为double类型解决cpu%不变化的问题
Related #45071
---
src/proctable.cpp | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/proctable.cpp b/src/proctable.cpp
index f2eb3b5..6601cc6 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -804,12 +804,15 @@ update_info (ProcData *procdata, ProcInfo *info)
guint64 difference = proctime.rtime - info->cpu_time;
if (difference > 0)
info->status = GLIBTOP_PROCESS_RUNNING;
- info->pcpu = difference * 100 / procdata->cpu_total_time;
- info->pcpu = MIN(info->pcpu, 100);
+
+ double pcpu = difference * 100.0 / procdata->cpu_total_time * 1.0;
+ if(pcpu >100)
+ pcpu = 100;
if (not procdata->config.solaris_mode)
- info->pcpu *= procdata->config.num_cpus;
+ pcpu *= procdata->config.num_cpus;
+ info->pcpu = int(pcpu);
ProcInfo::cpu_times[info->pid] = info->cpu_time = proctime.rtime;
info->nice = procuid.nice;
--
2.27.0