SRS性能(CPU)、内存优化工具用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SRS性能(CPU)、内存优化工具用法相关的知识,希望对你有一定的参考价值。

参考技术A SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在 ./configure && make 后的 summary 中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中。

文中所有的工具,对于其他的linux程序也是有用的。

RTC是UDP的协议,先设置 网卡队列缓冲区 ,下面命令是UDP分析常用的:

也可以修改系统文件 /etc/sysctl.conf ,重启也会生效:

查看接收和发送的丢包信息:

查看接收和发送的长度:

下面是netstat的一些参数:

PERF是Linux性能分析工具,参考[PERF](perf record -e block:block_rq_issue -ag)。

可以实时看到当前的SRS热点函数:

或者记录一定时间的数据:

记录堆栈,显示调用图:

GPROF是个GNU的CPU性能分析工具。参考 SRS GPROF ,以及 GNU GPROF 。

Usage:

GPERF是 google tcmalloc 提供的cpu和内存工具,参考 GPERF 。

GCP是CPU性能分析工具,就是一般讲的性能瓶颈,看哪个函数调用占用过多的CPU。参考 GCP 。

Usage:

图形化展示,在CentOS上安装dot:

然后生成svg图片,可以用Chrome打开:

GMD是GPERF提供的内存Defense工具,检测内存越界和野指针。一般在越界写入时,可能不会立刻导致破坏,而是在切换到其他线程使用被破坏的对象时才会发现破坏了,所以这种内存问题很难排查;GMD能在越界和野指针使用时直接core dump,定位在那个出问题的地方。参考 GMD 。

Usage:

GMC是内存泄漏检测工具,参考 GMC 。

Usage:

GMP是内存性能分析工具,譬如检测是否有频繁的申请和释放堆内存导致的性能问题。参考 GMP 。

Usage:

VALGRIND是大名鼎鼎的C分析工具,SRS3之后支持了。SRS3之前,因为使用了ST,需要给ST打PATCH才能用。

系统调用的性能排查,参考 centos6的性能分析工具集合

在OSX/Darwin/Mac系统,可以用Instruments,在xcode中选择Open Develop Tools,就可以看到Instruments,也可以直接找这个程序,参考 Profiling c++ on mac os x

还有DTrace可以用,参考 动态追踪技术(中) - Dtrace、SystemTap、火焰图 或者 浅谈动态跟踪技术之DTrace 。

多核时,一般网卡软中断在CPU0上,可以把SRS调度到其他CPU:

或者,指定SRS运行在CPU1上:

调整后,可以运行 top ,然后按数字 1 ,可以看到每个CPU的负载:

或者使用 mpstat -P ALL :

如果是多CPU,比如4CPU,则网卡中断可能会绑定到多个CPU,可以通过下面的命令,查看网卡中断的绑定情况:

我们可以强制将网卡软中断绑定到CPU0,参考 Linux: scaling softirq among many CPU cores 和 SMP IRQ affinity :

然后将SRS所有线程,绑定到CPU0之外的CPU:

如果要获取极高的性能,那么可以在SRS的启动脚本中,在启动SRS之前,执行绑核和绑软中断的命令。

可以设置SRS为更高的优先级,可以获取更多的CPU时间:

可以从ps中,看到进程的nice,也就是 NI 字段:

性能优化可使用的工具

在分析 CPU、内存、磁盘等的性能指标时,有几种工具是高频出现的,如 top、vmstat、pidstat,这里稍微总结一下:

  1. CPU:top、vmstat、pidstat、sar、perf、jstack、jstat;
  2. 内存:top、free、vmstat、cachetop、cachestat、sar、jmap;
  3. 磁盘:top、iostat、vmstat、pidstat、du/df;
  4. 网络:netstat、sar、dstat、tcpdump;
  5. 应用:profiler、dump分析。

上述的很多工具,大部分是用于查看系统层指标的,在应用层,除了有 JDK 提供的一系列工具,一些商用的产品如 gceasy.io(分析 GC 日志)、fastthread.io(分析线程 dump 日志)也是不错的。

排查 Java 应用的线上异常或者分析应用代码瓶颈,可以使用阿里开源的 Arthas ,这个工具非常强大,下面简单介绍下。

Arthas 主要面向线上应用实时诊断,解决的是类似线上应用异常了,需要在线进行分析和定位」的问题,当然,Arthas 提供的一些方法调用追踪工具,对我们排查诸如「慢查询」等问题,也是非常有帮助的。Arthas 提供的主要功能有:

  1. 获取线程统计,如线程持有的锁统计、CPU 利用率统计等;
  2. 类加载信息、动态类加载、方法加载信息;
  3. 调用栈追踪,调用耗时统计;
  4. 方法调用参数、结果检测;
  5. 系统配置、应用配置信息;
  6. 反编译加载类;

以上是关于SRS性能(CPU)、内存优化工具用法的主要内容,如果未能解决你的问题,请参考以下文章

linux性能优化思路工具案例

Linux性能问题分析流程与性能优化思路

性能及优化之 vmstat

性能优化可使用的工具

MYSQL性能优化-CPU/内存/磁盘

Android App性能优化——内存CPU耗电量启动时间指标获取