《Linux 性能优化》读书笔记
第二周
由于是双周,少了一个周日的时间来看专栏,有点赶,加上 0607 晚上又有一个交流会,这次笔记写得有点匆忙。当然,专栏上的文字内容是早就看完了。
这次的感觉是重新看一遍感觉比上次看要容易很多。果然难的东西要看第二遍、第三遍就比较清晰。
持续在思考的就是怎样把这些东西融汇贯通?
如果能在实践中直接用的话,是比较有成就感的。比如:https://qcrao.com/2020/04/27/codec-accident/
听了大家的分享,赶紧有一群人一起学习还是挺好的。
先完成,再完美。
后面的模式是每周写一些心得感受,然后更新汇总的命令。争取在专栏完成的时候有一个速查手册,遇到性能方面的问题能直接拿出来参考。
all
1 | 查看 CPU 核心数 |
ab
ab(apache bench)是一个常用的 HTTP 服务性能测试工具。
1 | 并发10个请求测试Nginx性能,总共测试100个请求 |
stress
安装:apt install stress
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
- 模拟一个 CPU 使用率 100% 的场景:
1 | stress --cpu 1 --timeout 600 |
模拟 I/O 压力,即不停地执行 sync
1
stress -i 1 --timeout 600
模拟 8 个进程
1
stress -c 8 --timeout 600
sysbench
安装:apt install sysbench
sysbench 是一个多线程的基准测试工具,一般用来评估不同系统参数下的数据库负载情况。
1 | 以10个线程运行5分钟的基准测试,模拟多线程切换的问题 |
sysstat
安装:apt install sysstat
sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。案例会用到这个包的两个命令 mpstat 和 pidstat。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。pidstat 只是一个进程的性能分析工具,并不提供任何关于中断的详细信息。
查看所有 CPU 的情况:
1
2-P ALL 表示监控所有CPU,后面数字5表示间隔5秒后输出一组数据
mpstat -P ALL 5以进程视角查看 CPU 使用率
1 | 每间隔5秒输出一组数据,-u表示CPU指标(周期性) |
vmstat
vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。
- 系统整体情况。如系统整体的上下问切换情况
1 | 每隔5秒输出1组数据。 |
dstat
可以同时查看 CPU 和 I/O 这两种资源的使用情况。
1 | 间隔1秒输出10组数据 |
/proc
/proc 实际上是 Linux 的一个虚拟文件系统,用于内核空间与用户空间之间的通信。/proc/interrupts 就是这种通信机制的一部分,提供了一个只读的中断使用情况。
1 | -d 参数表示高亮显示变化的区域 |
重调度中断(RES),这个中断类型表示,唤醒空闲状态的 CPU 来调度新的任务运行。这是多处理器系统(SMP)中,调度器用来分散任务到不同 CPU 的机制,通常也被称为处理器间中断(Inter-Processor Interrupts,IPI)。
perf
perf 是 Linux 2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。
1 | 它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数 |
strace
strace 正是最常用的跟踪进程系统调用的工具。
1 | -p 参数指定 PID 号 |
- 本文链接:https://qcrao.com/2020/06/07/linux-performance-reading-notes/
- 版权声明:本文章著作权归作者所有,任何形式的转载都请注明出处。