我急切地想知道哪种情况会增加cpu用量,以便检查由我编写的顶级信息。
下面是我的环境。
# cat /proc/cpuinfo
system type : CN3010_EVB_HS5 (CN5010p1.1-500-SCP)
processor : 0
cpu model : Cavium Octeon+ V0.1
BogoMIPS : 1000.00
wait instruction : yes
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : yes
hardware watchpoint : yes, count: 2, address/irw mask: [0x0ffc, 0x0ffb]
ASEs implemented :
shadow register sets : 1
kscratch registers : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
# cat /proc/softirqs
CPU0
HI: 0
TIMER: 37673
NET_TX: 1
NET_RX: 63481
BLOCK: 0
BLOCK_IOPOLL: 0
TASKLET: 241456
SCHED: 0
HRTIMER: 0
RCU: 45060
#
# cat /proc/stat
cpu 6890 0 7591 11217 324 691 17637 0 0
cpu0 6890 0 7591 11217 324 691 17637 0 0
intr 3872174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3557213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30852 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2530 0 6328 275165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 7152106
btime 1387517330
processes 1956
procs_running 2
procs_blocked 0
softirq 454085 0 44350 1 74147 0 0 282595 0 0 52992
**Cpu(s): 20.6%us, 23.0%sy, 0.0%ni, 15.0%id, 0.0%wa, 2.2%hi, 39.3%si, 0.0%st**
Mem: 45220K used, 50560K free, 0K shrd, 0K buff, 17568K cached
Load average: 0.52 0.72 0.52
PID USER STATUS RSS PPID %CPU %MEM COMMAND
800 root S 5076 1 75.3 5.2 core
2104 root S 2448 848 0.0 2.5 sshd
....
- >核心是我的进程(使用多线程),有大约22个线程用于执行作业。 不久,一个线程收集无线数据包,一个线程使用netlink库更改wifi频率。我不确定,但我认为这会增加cpu使用率。
我不知道控制这种情况,怎么接近, 我要检查哪一部分?
下面是我的线程样式。
while(1) {
do jobs;
sleep(x);
}
- >切换到
while (1) {
sleep(x);
do jobs;
}
无法解决它。如何处理这个问题?我要检查哪一部分?
请帮帮我。我不想升级CPU。
答案 0 :(得分:1)
您通常会使用分析器来确定您的应用程序花费时间的位置。
较新的Linux内核内置了一个非常低的开销分析器,它可以跟踪和分析内核空间,名为perf
。您可以perf record
申请,然后运行perf report
以了解其效果。
答案 1 :(得分:0)
您似乎正在使用OCTEON + CN5010 cpu。作为一项高级性能改进任务,您可以利用OCTEON simple-exec 程序(在Linux上,或在本机上的单独核心上),以进一步提升性能。
Paxym