linux 性能分析,测试与调优工具 - STEMHA's Blog
linux 性能分析,测试与调优工具

linux 性能分析,测试与调优工具

静态性能分析工具(static performance analysis tools)

  • dmesg 用于显示开机信息,开机信息也保存在/var/log目录中,名为dmesg的文件里。
  • blockdev 工具允许从命令行调用区块设备控制程序。调用设备的ioctl函数。似乎Linux中对设备的直接操作只有ioctl函数。
  • ldd (List Dynamic Dependencies,意译为列出动态库依赖关系)是一款在类Unix系统的实用工具,负责在命令行内输出程序或共享库所依赖的函数库。
  • lsblk (list block)即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息
  • lsscsi 可以看到Raid卡信息和所有虚拟磁盘以及光驱的信息,如果没有硬件SCSI控制器,那就不会返回信息。
  • lspci 显示有关pci总线的信息以及连接到它们的设备。
  • lscpu (list cpu)显示CPU的详细信息,比如CPU的制造商、架构、CPU数量、型号、主频、缓存及支持的虚拟化技术等信息。
  • lstopo (list topology of the system)显示可视化的方式组成 CPU、缓存、内存和I/O设备的拓扑结构。这个命令用来识别处理器结构和系统的NUMA拓扑结构。
  • likwid (Like I Knew What I’m Doing) 是一个用来测量、配置并显示硬件相关特性的命令行收集工具。其中的likwid拓扑结构能显示CPU硬件(线程/缓存/NUMA)的拓扑结构信息,还能识别处理器家族(比如:Intel Core 2, AMD Shanghai)。
  • smartctl 查看硬盘的SMART信息。
  • fdisk 创建和维护分区表的程序(兼容DOS类型的分区表、BSD或SUN的磁盘列表)
  • schedtool (scheduling tool)查询或设置CPU状态的工具。通过不同的参数可以查看或设置不同的属性。
  • numactl (Control NUMA policy)用于控制 进程与共享存储的 NUMA 技术机制。
  • cpuid 获取CPU的信息。该命令的底层是CPUID指令。它获取的内容比/proc/cpuinfo要详细很多。
  • MegaCli 管理维护硬件RAID的软件
  • App Config

观测工具(Observability Tools)

  • iostat (input/output statistics)报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息。
  • vmstat (VirtualMeomoryStatistics,虚拟内存统计) 报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。
  • dstat 用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。
  • pidstat 是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。
  • mpstat (multiprocessor statistics)查看多核心的cpu中每个计算核心的统计数据。类似工具vmstat只能查看系统的整体cpu情况
  • netstat ( network statistics)显示当前的网络状态,包括传输控制协议层的连线状况、路由表、网络接口状态和网络协议的统计信息等。
  • iotop 用来监视磁盘I/O使用状况的top类工具
  • top (display Linux processes)实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
  • htop top命令的升级版。交互式的进程浏览器,可以用来替换Linux下的top命令
  • gtop JavaScript 编写的开源系统资源监控实用程序,它是 Linux 系统自带 top 工具的替代品
  • tiptop 通过读取CPU硬件计数器的信息(比如cahche miss,executed instructions per cycle等等)了解程序执行效率
  • strace 可跟踪系统调用的执行。最简单的方式,它可以从头到尾跟踪binary的执行,然后以一行文本输出系统调用的名字,参数和返回值。
  • uptime 可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息
  • lsof (list open files)列出当前系统打开的文件,注意linux中设备也是文件
  • perf 性能分析工具,能够进行函数级与指令级的热点查找。
  • Flame Graphs 性能分析的利器,通过它可以快速定位性能瓶颈点。

测试工具(Benchmarking Tools)

  • fio 开源的I/O压力测试工具,主要是用来测试磁盘/SSD的IO性能,也可测试cpu,nic的IO性能。
  • hdparm (hard disk parameters)用于显示与设定硬盘的参数
  • dd 用于读取、转换并输出数据。可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
  • perf_events 网上很多叫法如perf_events , perf profiler , Performance Counters for Linux。叫法不同,都指perf
  • perf-tools 基于 perf_events (perf) 和 ftrace 的Linux性能分析调优工具集,能够收集ftrace和perf_events中乱七八糟的参数。
  • ktap Linux的基于脚本的动态跟踪工具 允许用户跟踪Linux内核动态。
  • sysbench 一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。
  • ab (apachebench) ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。
  • wrk 针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。
  • jmeter Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试。
  • openssl 加解密能力也是CPU性能测试的一部分。
  • UnixBench 类unix系(Unix,BSD,Linux)统下的性能测试工具
  • lmbench 多平台软件,因此能够对同级别的系统进行比较测试,反映不同系统的优劣势,可用于评价系统综合性能的多平台开源benchmark,能够测试包括文档读写、内存操作、进程创建销毁开销、网络等性能.
  • perfbench perf下的工具 测试系统性能
  • hping3 面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具。
  • iperf 网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
  • ping 向特定的目的主机发送 ICMP(Iternet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
  • ttcp 传统的测试TCP性能的工具,它主要测试两个机器之间TCP的吞吐量(在应用层模拟消息传递的过程)
  • traceroute 利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。
  • mtr 网络连通性判断工具,它结合了ping, traceroute,nslookup 的相关特性
  • pchar 沿Internet路径执行网络测量

调优工具(Tuning Tools)

  • sysctl (System Administration)用来配置与显示在/proc/sys目录中的内核参数
  • swapon 用于激活Linux中的交换空间,Linux的内存管理必须使用交换区来建立虚拟内存。
  • env gnu的coreutils包内的一个软件,用来显示系统中已存在的环境变量,以及在定义的环境中执行指令。
  • tune2fs 允许系统管理员在Linux ext2、ext3或ext4文件系统上调整各种可调的文件系统参数。
  • ionice 获取或设置程序的IO调度与优先级。PRI(new)=PRI(default)+nice
  • nice 调整程序运行的优先级,当前程序运行优先级基础之上调整指定值得到新的程序运行优先级。
  • renice 重新指定一个或多个进程的优先级
  • taskset 将某个进程与某个CPU核心绑定。
  • ulimit 为shell内建指令,可用来控制shell执行程序的资源
  • chcpu 修改cpu的状态,启用和关闭cpu,扫描新的CPU,改变底层虚拟机监控程序的CPU调度模式,并请求CPU的系统管理程序(配置)或返回CPU hypervisor
  • numactl 用于控制进程与共享存储的 NUMA 技术机制。
  • sysctl 用于运行时配置内核参数,这些参数位于/proc/sys目录下。
  • ethtool 用于查询及设置网卡参数
  • stap (SystemTap) 内核开发者必须要掌握的一个工具,用于内核监控和跟踪,以及诊断性能或功能问题。
  • kpatch 给Linux内核动态打补丁但是不必重启系统

本文许可证

本文遵循 CC BY-NC-SA 4.0(署名 - 非商业性使用 - 相同方式共享) 协议,转载请注明出处,不得用于商业目的。
CC BY-NC-SA 4.0

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×