fix(cpu): fix CPU cache size calculation with shared list#666
Conversation
Add support for reading CPU cache shared_cpu_list from sysfs and use it to calculate total cache size accurately for each cache level. 添加对CPU缓存shared_cpu_list的支持,从sysfs读取并用于准确 计算各级缓存总大小。 Log: 修复CPU缓存大小计算错误 PMS: BUG-361631 Influence: 修复后CPU各级缓存总大小计算准确,系统监视器显示的缓存信息更准确。 Change-Id: Id22007c9becf0e1e06f3203386410669c94c4d6f
deepin pr auto review你好!我是CodeGeeX。我已经仔细审查了你提供的Git Diff代码。本次代码变更的主要目的是读取并计算CPU缓存共享的CPU列表,以此来更精确地计算总缓存大小,而不是像以前那样简单粗暴地用核心数或固定值1去乘。 整体思路非常正确,但在代码安全、逻辑严谨性、代码性能和规范方面,我发现了一些需要改进的地方。以下是详细的审查意见: 1. 代码安全问题:文件读取未做错误状态检查,且存在资源泄漏风险
2. 语法逻辑问题1:整数解析逻辑存在严重Bug
问题2:
问题3:除法运算潜在的整数除零风险
3. 代码性能问题:引入了不必要的重量级正则表达式头文件
4. 代码质量与规范问题1:版权声明格式不统一
问题2:Getter 函数缺少
问题3:
综合修改建议代码片段针对 int Common::parseSharedCpuCount(const QString &sharedCpuList)
{
QString s = sharedCpuList.trimmed();
if (s.isEmpty())
return 0;
int count = 0;
// 使用 Qt5.14+ 的新枚举,兼容 Qt6
QStringList parts = s.split(',', Qt::SkipEmptyParts);
for (const QString &part : parts) {
QString trimmed = part.trimmed();
if (trimmed.contains('-')) {
QStringList range = trimmed.split('-');
if (range.size() == 2) {
bool ok1 = false, ok2 = false;
int start = range[0].trimmed().toInt(&ok1);
int end = range[1].trimmed().toInt(&ok2);
if (ok1 && ok2 && end >= start) {
count += end - start + 1;
}
}
} else {
bool ok = false;
trimmed.toInt(&ok); // 只做转换测试
if (ok) { // 只检查 ok 状态
count += 1;
}
}
}
return count;
}希望这些审查意见对你有帮助!如果有任何疑问,欢迎随时提问。 |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: add-uos, lzwind The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/forcemerge |
|
This pr force merged! (status: unstable) |
a0791da
into
linuxdeepin:develop/eagle
Add support for reading CPU cache shared_cpu_list from sysfs and use it to calculate total cache size accurately for each cache level.
添加对CPU缓存shared_cpu_list的支持,从sysfs读取并用于准确
计算各级缓存总大小。
Log: 修复CPU缓存大小计算错误
PMS: BUG-361631
Influence: 修复后CPU各级缓存总大小计算准确,系统监视器显示的缓存信息更准确。
Change-Id: Id22007c9becf0e1e06f3203386410669c94c4d6f