在对QNX系统上进行开发时,经常会用到hogs命令来获取和分析性能数据。hogs命令会列出占用CPU的所有进程。下面我们对hogs命令进行分析总结,相信会帮助到很多初识该命令的开发者。
语法格式
hogs [options] [pids ...]
- options : 命令参数,可以根据需求组合参数得到想要的结果;
- pids : 进程id,可指定进程号;
参数解读
options | 作用 |
---|---|
-i | 将输出限制为指定的迭代次数(默认值:无限制) |
-m[e][t][p][s] | 指定要包含在每个进程的内存总量中的内存映射类型: e — MAP_ELF 映射 t — MAP_STACK 映射 s — MAP_SHARED 映射 p — MAP_PRIVATE 映射(默认)您可以连接这些类型;例如,-msp 为共享和私有映射提供内存 |
-n | 显示进程名称(hogs 始终显示进程 ID) |
-p priority | 以给定优先级运行 hogs(默认:与父进程相同) |
-S [c\m\p] | 按照CPU\内存\pid排序 |
-s | 设置刷新时间间隔吗,默认3秒 |
-%[num][c\m] | 只显示CPU\内存超过num%的进程 |
使用方式示例
# 过滤id为17708的进程,2秒钟刷新一次。
hogs -s 2 17708
# 过滤名为dog的进程,打印三次数据。
hogs -i 3 | grep dog
# 统计shared和private内存映射,并按内存占用排序.
hogs -msp -Sm
# 显示CPU占用超过1%的进程
hogs -%1c
输出解读
输出内容展示
PID NAME MSEC PIDS SYS MEMORY
39379107 MyProcess1 554 1% 18% 17288k 0%
39358626 MyProcess2 779 2% 25% 7808k 0%
39379114 MyProcess3 788 2% 26% 15960k 0%
0 [idle] 2409 6% 80% 0k 0%
1 [idle] 2976 8% 99% 0k 0%
2 [idle] 2942 8% 98% 0k 0%
3 [idle] 3003 8% 100% 0k 0%
4 [idle] 2993 8% 99% 0k 0%
5 [idle] 3007 8% 100% 0k 0%
6 [idle] 3021 8% 100% 0k 0%
7 [idle] 3013 8% 100% 0k 0%
8 [idle] 1795 4% 59% 0k 0%
9 [idle] 974 2% 32% 0k 0%
10 [idle] 1043 2% 34% 0k 0%
11 [idle] 3023 8% 100% 0k 0%
字段释义
字段 | 作用 |
---|---|
PID | 进程号 |
NAME | 进程名 |
MSEC | 距离上次结果的运行时间间隔,单位ms |
PIDS | 本次迭代中,进程运行的时间占所有进程运行时间的百分比 |
SYS | 本次迭代中,进程运行的时间占迭代时间的百分比 |
MEMORY | 本次迭代中,进程使用的内存大小。包含的映射类型取决于 -m 选项。 |
在开发过程中,hogs经常被用来作为CPU以及内存使用情况的统一采集方式,在输出的列表里有两列关于CPU的数据PIDS和SYS,相信很多人对这两个数据的区别也是一知半解,下面我来进行详尽的对比分析。
PIDS | SYS | |
---|---|---|
含义定义 | 本次迭代中,进程运行的时间占所有其他进程运行时间的百分比;衡量在一个时间段内,某个特定进程消耗的 CPU 时间相对于系统中所有其他进程的总 CPU 时间的百分比。 | 本次迭代中,进程运行时间的占迭代时间的百分比;衡量在每次迭代或特定时间间隔内,某个特定进程消耗的 CPU 时间相对于整个迭代时间的百分比。 |
计算公式 | CPU占用率 = 进程的CPU耗时/系统中所有进程总CPU耗时 | 百分比 = 进程的CPU耗时/迭代时间 |
计算范围 | 进程运行时间占所有其他进程运行时间的百分比 是相对于整个操作系统中所有进程的总 CPU 时间来计算的。 | 进程运行时间的占迭代时间的百分比 是相对于特定迭代或时间间隔来计算的。 |
实际用途 | 进程运行时间占所有其他进程运行时间的百分比 主要用于评估一个进程在整个系统中的 CPU 占用情况,帮助识别系统中的 CPU 资源瓶颈。 | 进程运行时间的占迭代时间的百分比 更关注某个特定进程在其执行过程中的 CPU 利用率,用于评估该进程在每次迭代中的性能。 |
举例说明 | 假设进程运行到1000ms时进行CPU测算,当前进程本次耗时10ms。与此同时,系统中全部进程本次调用耗时时间总和为1000m。那么该进程本次获取CPU的占用为1%。 | 假设hogs命令单次调度CPU耗时测算的时间为3000ms,当前进程本次迭代中耗时30ms,那么他的本次CPU耗时占比为10%。 |
至此,Hogs命令总结结束,欢迎补充。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/101968.html