Linux性能分析(未完待续)

Linux性能.png

Linux性能

CPU

平均负载

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均活跃进程数

可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。

不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。

当平均负载比 CPU 个数还大的时候,系统已经出现了过载。

uptime

上下文切换

如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题。

CPU使用率

内存

工具

stress

stress 是一个 Linux 系统压力测试工具

参数解释

-? 显示帮助信息

-v 显示版本号

-q 不显示运行信息

-n 显示已完成的指令情况

-t --timeout N 指定运行N秒后停止

       --backoff   N   等待N微妙后开始运行

-c 产生n个进程 每个进程都反复不停的计算随机数的平方根

-i 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上

-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数

      --vm-bytes B  指定malloc时内存的字节数 (默认256MB)



     --vm-hang N   指定在free钱的秒数

-d --hadd n 产生n个执行write和unlink函数的进程

     -hadd-bytes B  指定写的字节数



     --hadd-noclean  不unlink  

模拟一个 CPU 使用率 100% 的场景

$ stress --cpu 1 --timeout 600

模拟 I/O 压力,即不停地执行 sync

$ stress -i 1 --timeout 600

模拟是 8 个进程过载

$ stress -c 8 --timeout 600

sysbench

sysbench 可以进行以下测试:

CPU 运算性能测试

磁盘 IO 性能测试

调度程序性能测试

内存分配及传输速度测试

POSIX 线程性能测试

数据库性能测试(OLTP 基准测试,需要通过 /usr/share/sysbench/ 目录中的 Lua 脚本执行,例如 oltp_read_only.lua 脚本执行只读测试)

以 10 个线程运行 5 分钟的基准测试,模拟多线程切换的问题

$ sysbench --threads=10 --max-time=300 threads run

sysstat

  • mpstat

    一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU的性能指标,以及所有CPU的平均指标。

  • pidstat

    一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。

每隔 1 秒输出 1 组数据(需要 Ctrl+C 才结束)

-w 参数表示输出进程切换指标,而 -u 参数则表示输出 CPU 使用指标

$ pidstat -w -u 1

每隔 1 秒输出一组数据(需要 Ctrl+C 才结束)

-wt 参数表示输出线程的上下文切换指标

$ pidstat -wt 1

  • vmstat

    分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。

每隔 1 秒输出 1 组数据(需要 Ctrl+C 才结束)

$ vmstat 1

/proc

man proc

  • /interrupts
  • /stat
  • /[pid]/stat

perf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。