最新正式版中,网络实时速率与累计流量在多处入口显示单位/数值错误:基于字节的速率被 ×8 后按 bit 单位(b/Kb/Mb/s)显示,导致显示数值比真实字节速率放大 8 倍;而顶栏插件按钮/悬浮提示按字节(KB/s)显示,两处入口口径互相矛盾。
×8
b/Kb/Mb/s
KB/s
详情见:https://github.com/linuxdeepin/deepin-system-monitor/issues/585
网络实时速率/累计流量显示单位错误:字节值×8 按 bit 显示(数值放大8倍),且顶栏与主窗口口径不一致
Kb/s
Mb/s
数据层单位正确(字节/秒,且采样间隔除法正确):
deepin-system-monitor-main/system/net_info.cpp:157-158
m_recvBps = rxdiff / interval; // Bps m_sentBps = txdiff / interval;
deepin-system-monitor-main/system/netif_info_db.cpp:98-99
qreal recv_bps = rxdiff / interval; // Bps
展示层把字节值 ×8 后交给 bit 单位格式化函数:
deepin-system-monitor-main/common/common.cpp:379-401 formatUnit_net()
b/Kb/Mb/…
deepin-system-monitor-main/common/common.h:112-126
SizeUnit
UnitSuffixnet[]={"b","Kb","Mb",…}
调用点(字节×8 → bit 显示):
network_monitor.cpp:217,219,222,224
compact_network_monitor.cpp:159,161,164,166
datadealsingleton.cpp:74-77
netif_item_view_widget.cpp:186-187
netif_summary_view_widget.h:342,372
process_table_model.cpp:300,303
user_page_widget.cpp:233,235,249,251
口径不一致:顶栏插件反而用字节(KB/s):
deepin-system-monitor-plugin/gui/monitor_plugin.cpp:267-276
autoRateUnits
systemmonitortipswidget.cpp
走势图坐标轴错位(字节值配 bit 后缀):
chart_view_widget.cpp:52,85,128
formatUnit_net(m_maxData,…)
netif_item_view_widget.cpp:181-182
复刻 formatUnit_net 并应用 byte×8:
formatUnit_net
byte×8
真实 128 KB/s -> 显示 "1024.0 Kb/s"(量级变 MB) 真实 500 KB/s -> 显示 "3.9 Mb/s" 真实 1 MB/s -> 显示 "8.0 Mb/s"
实时速率与累计流量应使用统一、一致的单位(建议字节/s,即 KB/s,与顶栏插件、磁盘/内存分区一致)。若确有意展示 bit,则应使用正确基数(1000)且全入口一致。
统一为字节/s:去除各调用点 *8 并改用字节口径(formatUnit_memory_disk(...) 或新增字节型网络格式化函数),同时修复走势图坐标轴单位。(备选:保留 bit 但全入口用 1000 进制。)
*8
formatUnit_memory_disk(...)
该问题在 6.0.24 / 6.5.40 / 6.5.47 均存在(非最新正式版新引入,属长期存在的展示层单位换算缺陷)。
(本报告为只读代码审计 + 算法级复现,未对源码做任何修改。)
No replies yet
Featured Collection
Popular Ranking
Popular Events
摘要
最新正式版中,网络实时速率与累计流量在多处入口显示单位/数值错误:基于字节的速率被
×8后按 bit 单位(b/Kb/Mb/s)显示,导致显示数值比真实字节速率放大 8 倍;而顶栏插件按钮/悬浮提示按字节(KB/s)显示,两处入口口径互相矛盾。详情见:https://github.com/linuxdeepin/deepin-system-monitor/issues/585
网络实时速率/累计流量显示单位错误:字节值×8 按 bit 显示(数值放大8倍),且顶栏与主窗口口径不一致
用户实测现象
Kb/s、Mb/s(bit),而顶栏插件图标+悬浮提示显示KB/s(byte),同一速率两处不一致。根因(v6.5.47 代码证据)
数据层单位正确(字节/秒,且采样间隔除法正确):
deepin-system-monitor-main/system/net_info.cpp:157-158deepin-system-monitor-main/system/netif_info_db.cpp:98-99展示层把字节值
×8后交给 bit 单位格式化函数:deepin-system-monitor-main/common/common.cpp:379-401 formatUnit_net()—— 输入按 bit 处理,后缀b/Kb/Mb/…,1024 进制。deepin-system-monitor-main/common/common.h:112-126——SizeUnit(字节语义)与UnitSuffixnet[]={"b","Kb","Mb",…}(bit 后缀)并用,语义错位。调用点(字节×8 → bit 显示):
network_monitor.cpp:217,219,222,224compact_network_monitor.cpp:159,161,164,166datadealsingleton.cpp:74-77(顶栏弹窗)netif_item_view_widget.cpp:186-187netif_summary_view_widget.h:342,372process_table_model.cpp:300,303user_page_widget.cpp:233,235,249,251口径不一致:顶栏插件反而用字节(KB/s):
deepin-system-monitor-plugin/gui/monitor_plugin.cpp:267-276(autoRateUnits,1024 进制,字节单位;悬浮提示systemmonitortipswidget.cpp显示KB/s)。走势图坐标轴错位(字节值配 bit 后缀):
chart_view_widget.cpp:52,85,128—— 坐标轴用formatUnit_net(m_maxData,…)(bit 后缀),而数据点是字节(netif_item_view_widget.cpp:181-182)。复现(算法级)
复刻
formatUnit_net并应用byte×8:预期
实时速率与累计流量应使用统一、一致的单位(建议字节/s,即
KB/s,与顶栏插件、磁盘/内存分区一致)。若确有意展示 bit,则应使用正确基数(1000)且全入口一致。修复方向(供确认)
统一为字节/s:去除各调用点
*8并改用字节口径(formatUnit_memory_disk(...)或新增字节型网络格式化函数),同时修复走势图坐标轴单位。(备选:保留 bit 但全入口用 1000 进制。)版本说明
该问题在 6.0.24 / 6.5.40 / 6.5.47 均存在(非最新正式版新引入,属长期存在的展示层单位换算缺陷)。
(本报告为只读代码审计 + 算法级复现,未对源码做任何修改。)