保建国是我们另外一个组做存储的人,对内核很了解的高手,看到我在做性能优化,说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
- 前言
- 服务器开发设计
- Reactor模式
- 一种心跳,两种设计
- 聊聊 TCP 长连接和心跳那些事
- 学习TCP三次握手和四次挥手
- Linux基础
- Linux的inode的理解
- 异步IO模型介绍
- 20个最常用的GCC编译器参数
- epoll
- epoll精髓
- epoll原理详解及epoll反应堆模型
- epoll的坑
- epoll的本质
- socket的SO_REUSEADDR参数全面分析
- 服务器网络
- Protobuf
- Protobuf2 语法指南
- 一种自动反射消息类型的 Protobuf 网络传输方案
- 微服务
- RPC框架
- 什么是RPC
- 如何科学的解释RPC
- RPC 消息协议
- 实现一个极简版的RPC
- 一个基于protobuf的极简RPC
- 如何基于protobuf实现一个极简版的RPC
- 开源RPC框架
- thrift
- grpc
- brpc
- Dubbo
- 服务注册,发现,治理
- Redis
- Redis发布订阅
- Redis分布式锁
- 一致性哈希算法
- Redis常见问题
- Redis数据类型
- 缓存一致性
- LevelDB
- 高可用
- keepalived基本理解
- keepalived操做
- LVS 学习
- 性能优化
- Linux服务器程序性能优化方法
- SRS性能(CPU)、内存优化工具用法
- centos6的性能分析工具集合
- CentOS系统性能工具 sar 示例!
- Linux性能监控工具集sysstat
- gdb相关
- Linux 下如何产生core文件(core dump设置)