美文网首页
Linux性能优化笔记2

Linux性能优化笔记2

作者: _SHIZI | 来源:发表于2020-06-07 22:53 被阅读0次

Notes:

  • 中断是一种异步事件处理机制,用于提高系统的并发处理能力。
  • 为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快低的运行。中断处理程序过程中,还会临时关闭中断,甚至可能导致中断丢失
    联想:之前面试中碰到过一个问题,什么样的服务适合用coroutine?coroutine应该使用与一些处理时间比较短,或者处理时间可以预期的程序。我觉得这边也可以说明一些问题,当io完成后,会发送一个中断,触发异步操作。在这个过程中,如果触发的程序处理时间比较长,就又可能丢失其它的中断。这个过程虽然多线程中也会发现,但是coroutine在一些高qps的服务中如果中断处理程序过长就会放大这个问题。
  • 中断分上半部分-硬中断,特别是快。下半部分-软中断,特别是延迟执行。
  • 多个性能问题存在时解决原则:28原则,找出20%影响了80%的问题。不是所有的性能问题都值得优化。
    联想:我觉得这边可以分阶段性的。实现目前的当务之急。有的时候28原则也会转换,之前的80%有可能转换为后期的20%。

中断相关Tools:

  • /proc/softirqs 提供了软中断的运行情况
  • /proc/interrupts 提供了硬中断的运行情况。

性能优化工具图

image.png
image.png
image.png

Situatioin & Case:

软中断CPU升高?

关键指标:总段次数变化率
网络接收的软中断比较常见,借助sar,tcpdump等工具。

perf 的报告中,很多符号都不显示调用栈

man perf-report
threshold 的默认值为 0.5%,也就是说,事件比例超过 0.5% 时,调用栈才能被显示观察我们案例应用 app 的事件比例,如果低于 0.5%,所以看不到 app 的调用栈就很正常了。这种情况下,你只需要给 perf report 设置一个小于 app的阈值,比如如果是0.34%

$ perf report -g graph,0.3

perf找不到symbol

  • 在容器外面构建相同的路径依赖库
  • 在容器内部运行Perf
  • 指定符号路径为容器文件系统的路径
  • 在容器外面把分析纪录保存下来,再去容器里查看结果

性能优化方法论

1.确定优化的优先级,避免不重要的优化被提前。
2.个人排序
系统优化 > CPU优化 > 应用程序优化。
3.工具使用: uptime查看平均负载趋势。注意区分每个CPU的趋势。配合mpstat和pidstat。perf入手进程的运行态。execsnoop监控调用外部命令。

性能优化参考

http://www.brendangregg.com/linuxperf.html

相关文章

网友评论

      本文标题:Linux性能优化笔记2

      本文链接:https://www.haomeiwen.com/subject/bwgvmctx.html