多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
保建国是我们另外一个组做存储的人,对内核很了解的高手,看到我在做性能优化,说perf这个可以看到内核消耗的时间。 gprof主要是优化用户空间程序调用,perf主要是看内核的函数占用的时间。 rtmp这种协议,将message分成chunk后发送,会导致小的chunk包在user和kernel之间拷贝,放在哪个地方都是一样的费时间。 centos6下面才有这个工具,系统自带的。 使用方法: perf record -g -p 8786 运行一段时间后,按CTRL+C退出。 然后看结果: perf report -g 另外,top也能看到CPU的用户使用,内核使用率,中断的CPU使用率。 Cpu7 : 57.5%us, 19.6%sy, 0.0%ni, 5.0%id, 0.0%wa, 0.0%hi, 17.9%si, 0.0%st 明显内核和软中断比较高,用户空间也不小。 另外,mpstat也能看到。 mpstat -P ALL 3 12:33:09 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 12:33:12 PM 7 56.15 0.00 18.94 0.00 0.00 19.60 0.00 5.32 7373.09 可见用户空间,系统调用和软中断(网卡发包)三个大头。 查看系统调用占用的时间:sudo strace -p 25817 -c 譬如: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 85.32 0.003865 0 142413 gettimeofday 获取时间的函数太多了,改了下后,提升了6%左右。 另外,绑定cpu后,能将软中断降低10%,所以降低CPU10%。 taskset -p 1 pid https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html ———————————————— 版权声明:本文为CSDN博主「win_lin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/win_lin/article/details/9377209