登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
仓库状态说明
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
6
Star
0
Fork
29
src-openEuler
/
procps-ng
关闭
代码
Issues
0
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
【2203-SP1 SP2】top命令多线程CPU利用率显示问题
已完成
#I7K6HH
缺陷
Fengfei.XI
创建于
2023-07-11 10:39
【标题描述】 多线程运行环境top命令查询线程组CPU利用率,主线程CPU利用率显示存在问题 【环境信息】 软件信息: procps-ng-4.0.0-4.oe2203sp1.x86_64.rpm procps-ng-4.0.2-6.oe2203sp2.x86_64.rpm 【问题复现步骤】 C测试例:主线程创建子线程后睡眠,子线程死循环 ``` #include <stdio.h> #include <pthread.h> #include <unistd.h> void *thread_function(void *arg) { printf("Sub thread is running\n"); while(1); printf("Sub thread is ended\n"); return NULL; } int main(int argc, char *argv[]) { pthread_t tid; pthread_create(&tid, NULL, thread_function, NULL); printf("Main thread is sleeping\n"); sleep(60); printf("Main thread is ended\n"); return 0; } ``` 编译后运行,然后top查看线程组的CPU利用率 ``` top -Hp <主线程PID> ``` **出现概率:必现** 【实际结果】 主线程、子线程都是100%CPU使用率,不符合预期。因为主线程在睡眠,应该不占用CPU才对 ``` top - 02:37:29 up 19:26, 3 users, load average: 0.61, 0.26, 0.13 Threads: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 26.2 us, 0.0 sy, 0.0 ni, 73.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 9417.0 total, 8246.1 free, 616.4 used, 839.9 buff/cache MiB Swap: 5035.0 total, 5033.8 free, 1.2 used. 8800.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10695 root 20 0 10732 2952 820 S 99.9 0.0 0:50.95 a.out 10697 root 20 0 10732 2952 820 R 99.9 0.0 0:50.95 a.out ``` 【预期结果】 使用2203-lts版本的procps-ng-3.3.17-2.oe2203.x86_64.rpm,相同测试例不会有上述问题。 主线程CPU使用率为0,子线程使用率为100% ``` top - 02:36:49 up 19:25, 3 users, load average: 0.24, 0.15, 0.09 Threads: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 25.0 us, 0.0 sy, 0.0 ni, 74.7 id, 0.0 wa, 0.2 hi, 0.1 si, 0.1 st MiB Mem : 9417.0 total, 8246.6 free, 330.6 used, 839.8 buff/cache MiB Swap: 5035.0 total, 5033.8 free, 1.2 used. 8800.9 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10697 root 20 0 10732 2952 820 R 99.3 0.0 0:10.70 a.out 10695 root 20 0 10732 2952 820 S 0.0 0.0 0:00.00 a.out ````
【标题描述】 多线程运行环境top命令查询线程组CPU利用率,主线程CPU利用率显示存在问题 【环境信息】 软件信息: procps-ng-4.0.0-4.oe2203sp1.x86_64.rpm procps-ng-4.0.2-6.oe2203sp2.x86_64.rpm 【问题复现步骤】 C测试例:主线程创建子线程后睡眠,子线程死循环 ``` #include <stdio.h> #include <pthread.h> #include <unistd.h> void *thread_function(void *arg) { printf("Sub thread is running\n"); while(1); printf("Sub thread is ended\n"); return NULL; } int main(int argc, char *argv[]) { pthread_t tid; pthread_create(&tid, NULL, thread_function, NULL); printf("Main thread is sleeping\n"); sleep(60); printf("Main thread is ended\n"); return 0; } ``` 编译后运行,然后top查看线程组的CPU利用率 ``` top -Hp <主线程PID> ``` **出现概率:必现** 【实际结果】 主线程、子线程都是100%CPU使用率,不符合预期。因为主线程在睡眠,应该不占用CPU才对 ``` top - 02:37:29 up 19:26, 3 users, load average: 0.61, 0.26, 0.13 Threads: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 26.2 us, 0.0 sy, 0.0 ni, 73.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 9417.0 total, 8246.1 free, 616.4 used, 839.9 buff/cache MiB Swap: 5035.0 total, 5033.8 free, 1.2 used. 8800.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10695 root 20 0 10732 2952 820 S 99.9 0.0 0:50.95 a.out 10697 root 20 0 10732 2952 820 R 99.9 0.0 0:50.95 a.out ``` 【预期结果】 使用2203-lts版本的procps-ng-3.3.17-2.oe2203.x86_64.rpm,相同测试例不会有上述问题。 主线程CPU使用率为0,子线程使用率为100% ``` top - 02:36:49 up 19:25, 3 users, load average: 0.24, 0.15, 0.09 Threads: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 25.0 us, 0.0 sy, 0.0 ni, 74.7 id, 0.0 wa, 0.2 hi, 0.1 si, 0.1 st MiB Mem : 9417.0 total, 8246.6 free, 330.6 used, 839.8 buff/cache MiB Swap: 5035.0 total, 5033.8 free, 1.2 used. 8800.9 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10697 root 20 0 10732 2952 820 R 99.3 0.0 0:10.70 a.out 10695 root 20 0 10732 2952 820 S 0.0 0.0 0:00.00 a.out ````
评论 (
2
)
登录
后才可以发表评论
状态
已完成
待办的
已挂起
修复中
已确认
已完成
已验收
已取消
负责人
未设置
标签
sig/Computing
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(2)
1
https://gitee.com/src-openeuler/procps-ng.git
git@gitee.com:src-openeuler/procps-ng.git
src-openeuler
procps-ng
procps-ng
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册