保建國是我們另外一個組做存儲的人,對內核很了解的高手,看到我在做性能優化,說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設置)