From 0e2914d8e0c518058f0407a61efb3d5c3e6a04e9 Mon Sep 17 00:00:00 2001 From: shuaijie Date: Wed, 23 Oct 2024 13:20:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E2=80=9C=E5=BD=93=E5=89=8D=E9=A2=91?= =?UTF-8?q?=E7=8E=87=E2=80=9D=E6=98=BE=E7=A4=BA=E6=89=80=E6=9C=89=20CPU=20?= =?UTF-8?q?=E6=A0=B8=E4=B8=AD=E6=9C=80=E5=A4=A7=E7=9A=84=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 压测时观察当前频率”不明显,因取值首个CPU频率有效值 Log: 显示所有 CPU 核中最大的值 Bug: https://pms.uniontech.com/bug-view-277329.html --- deepin-system-monitor-main/system/cpu_set.cpp | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/deepin-system-monitor-main/system/cpu_set.cpp b/deepin-system-monitor-main/system/cpu_set.cpp index dc935735..44d05552 100644 --- a/deepin-system-monitor-main/system/cpu_set.cpp +++ b/deepin-system-monitor-main/system/cpu_set.cpp @@ -67,6 +67,27 @@ static float first_avaliable_cur_freq(struct lscpu_cxt *cxt, const struct lscpu_ return 0.0f; } +// 取所有CPU频率有效值中最大值 +static float max_avaliable_cur_freq(struct lscpu_cxt *cxt, const struct lscpu_cputype *ct) +{ + if (!cxt) + return 0.0f; + + size_t i; + float res = 0.0f; + + for (i = 0; i < cxt->npossibles; i++) { + struct lscpu_cpu *cpu = cxt->cpus[i]; + + if (!cpu || cpu->type != ct || !is_cpu_present(cxt, cpu)) + continue; + if (cpu->mhz_cur_freq <= 0.0f) + continue; + res = max(res, cpu->mhz_cur_freq); + } + + return res; +} static void lscpu_free_context(struct lscpu_cxt *cxt) { @@ -910,8 +931,8 @@ void CPUSet::read_lscpu() d->m_info.insert("CPU max MHz", maxMHz); QString minMHz = QString::number(static_cast(lsblk_cputype_get_minmhz(cxt, ct)), 'f', 4); d->m_info.insert("CPU min MHz", minMHz); - // 取首个CPU频率有效值 - QString nowMHz = QString::number(static_cast(first_avaliable_cur_freq(cxt, ct)), 'f', 4); + // 取所有CPU频率有效值中最大值 + QString nowMHz = QString::number(static_cast(max_avaliable_cur_freq(cxt, ct)), 'f', 4); if (scal == 0.0f) { nowMHz = "-"; }