- 主题:问个Linux perf工具的问题
通过perf record和perf report, 发现sys_nanosleep这个调用占比很高,达到6/7%.
sys_nanosleep是休眠的,为啥CPU占比这么高呢?难道是频繁调用这个函数导致的?
# Children Self Samples Command Shared Object Symbol
6.70% 0.19% 3022 decision [kernel.kallsyms] [k] sys_nanosleep
|
--6.51%--sys_nanosleep
|
--6.45%--hrtimer_nanosleep
|
--6.17%--do_nanosleep
|
|--4.34%--schedule
| |
| --4.12%--__schedule
| |
| --4.03%--finish_task_switch
| |
| --3.99%--_raw_spin_unlock_irq
|
--1.38%--hrtimer_start_range_ns
|
--1.35%--_raw_spin_unlock_irqrestore
--
FROM 107.182.184.*
你的程序里肯定有定时sleep这类的逻辑吧
【 在 wjhtingerx 的大作中提到: 】
: 通过perf record和perf report, 发现sys_nanosleep这个调用占比很高,达到6/7%.
: sys_nanosleep是休眠的,为啥CPU占比这么高呢?难道是频繁调用这个函数导致的?
: # Children Self Samples Command Shared Object Symbol
: ...................
--
FROM 182.140.153.*
对啊,有,但是sleep本身又不占cpu
【 在 hanDevil 的大作中提到: 】
: 你的程序里肯定有定时sleep这类的逻辑吧
:
--
FROM 123.125.47.*
sleep这个调用操作本身 占cpu啊, 你这个程序比较空闲吧,sleep占几个点很正常
【 在 wjhtingerx 的大作中提到: 】
: 对啊,有,但是sleep本身又不占cpu
:
: :
--
FROM 182.140.153.*
一个操作怎么可能占那么多cpu?
【 在 hanDevil 的大作中提到: 】
: sleep这个调用操作本身 占cpu啊, 你这个程序比较空闲吧,sleep占几个点很正常
:
--
FROM 123.125.47.*
.....
你这个是server程序吧,怎么可能是1次操作,你可以加点统计,每秒执行了多少次吧
【 在 wjhtingerx 的大作中提到: 】
: 一个操作怎么可能占那么多cpu?
: :
--
FROM 182.140.153.*
既然是sleep,就是间歇性操作,比如睡个几十毫秒再起来,这种操作怎么可能占比高
【 在 hanDevil 的大作中提到: 】
: .....
: 你这个是server程序吧,怎么可能是1次操作,你可以加点统计,每秒执行了多少次吧
:
--
FROM 123.125.47.*
因为这个操作属于系统调用,会导致用户态和内核态的切换(保存上下文巴拉巴拉的...),它的开销和普通函数完全不是一个级别
【 在 wjhtingerx 的大作中提到: 】
: 既然是sleep,就是间歇性操作,比如睡个几十毫秒再起来,这种操作怎么可能占比高
:
: :
--
FROM 182.140.153.*
其他用到的系统调用,比这个频率高数量级……
【 在 hanDevil 的大作中提到: 】
: 因为这个操作属于系统调用,会导致用户态和内核态的切换(保存上下文巴拉巴拉的...),它的开销和普通函数完全不是一个级别
:
--
FROM 123.125.47.*