0
点赞
收藏
分享

微信扫一扫

linux调式与性能-总体介绍

1. 前言

本文的目的主要是对linux的调式与性能工具有个大体的了解。

本文主要是我观看《Linux 性能工具》视频做的个人笔记分享,视频作者是 B站的内核笔记,视频链接是:https://www.bilibili.com/video/BV11t4y1o7vk/?spm_id_from=333.999.0.0&vd_source=f9e3c231f1337d0b6731ff9df420b289 欢迎大家前去观看学习,此处不是广告,而是本人尊重原创,也衷心的感谢每一位知识传播者。如有侵权,请联系删除。

linux调式与性能-总体介绍_Linux性能调式

2. linux调式框架

linux调式与性能-总体介绍_Linux性能调式_02

这张图基本上涵盖了Linux调式相关的所有工具和所调式的模块功能。一个产品的性能指标众多,可以通过多种方式进行分类。传统上,它们可以被分为硬件性能指标和软件性能指标。从Linux操作系统的角度来看,性能指标可以大致分为以下几类,但需要注意的是,这些分类并不是严格互斥的,而是相对的,并且它们之间相互影响,在实际应用中可能会有重叠:

  1. CPU性能指标 :涉及处理器的时钟频率、核心数、缓存效率、指令集以及CPU的负载情况等。
  2. 内存性能指标 :包括内存的容量、访问速度、带宽、内存使用率、分页和交换活动等。
  3. I/O性能指标 :关乎系统的输入输出处理能力,如磁盘的读写速度、I/O操作的响应时间和吞吐量等。
  4. 网络性能指标 :包括网络连接的带宽、延迟、丢包率、错误率以及网络利用率等。
  5. 系统综合性能指标 :反映整个系统的运行状况,如系统的平均负载、启动时间、响应时间和系统稳定性等。
  6. 应用层面性能指标 :特定应用程序的性能表现,如事务处理速度、响应时间、并发处理能力和错误率等。
  7. 能耗性能指标 :随着对能效的重视,设备的能耗水平、电源效率和热输出也成为了重要的性能指标。
  8. 可靠性与可用性指标 :涉及系统的冗余能力、故障恢复时间和系统的总体可用性。
  9. 安全性性能指标 :在某些环境中,系统的安全性能也非常重要,包括加密性能、安全更新的及时性和漏洞的响应处理时间。

3. CPU性能指标

linux调式与性能-总体介绍_Linux性能调式_03

4. CPU性能工具

linux调式与性能-总体介绍_Linux性能调式_04

在Linux系统中,有多种工具可用于监控CPU性能。以下是一些常用的CPU性能工具和它们的用途:

  1. top
  • 显示实时更新的进程和CPU使用情况。
  • 交互式界面允许用户按CPU使用率、内存使用率等排序。
  1. htop
  • 提供了一个彩色界面,并且可以通过按键与进程交互。
  • 允许用户杀死进程、重新分配进程的nice值等。
  1. vmstat
  • 报告虚拟内存统计信息,包括CPU使用率、上下文切换次数、系统空闲时间等。
  1. mpstat
  • 来自 sysstat包,用于报告CPU统计信息。
  • 可以显示所有CPU的平均使用率或特定CPU的使用情况。
  1. iostat
  • 主要用于报告CPU和输入/输出统计信息。
  1. pidstat
  • 也是 sysstat包的一部分,用于显示每个进程的统计信息。
  1. sar
  • 系统活动报告器,可以显示历史数据或实时数据。
  1. atop
  • 提供了一个ASCII界面,显示进程、CPU、内存、磁盘和网络使用情况。
  1. nmon
  • 类似于atop,但提供了更多的性能数据。
  1. lsof
  • 列出打开的文件,对于查找打开文件的进程特别有用。
  1. free
  • 显示内存使用情况,包括已使用、空闲、缓冲区和缓存。
  1. smem
  • 提供了关于内存使用的详细报告,特别是共享内存。
  1. iftop
  • 类似于top,但用于显示网络接口的实时带宽使用情况。
  1. netstat
  • 显示网络连接、路由表、接口统计等。
  1. ss
  • 显示套接字统计信息,是netstat的现代替代品。
  1. perf
  • 用于性能分析,可以监控硬件性能计数器。


5. 内存性能指标

linux调式与性能-总体介绍_Linux性能调式_05


6.内存性能工具

linux调式与性能-总体介绍_Linux性能调式_06

在Linux系统中,有多种工具可用于监控内存性能。以下是一些常用的内存性能工具和它们的用途:

  1. free
  • 显示系统内存的总量、已用、剩余、共享、缓存、缓冲区等信息。
  • 命令示例:free -h,以易于人们可读的方式显示内存使用情况。
  1. vmstat
  • 提供系统整体性能数据,包括内存使用情况、缓存和缓冲区的数据。
  • 命令示例:vmstat 1,每秒输出一次系统性能数据。
  1. top
  • 实时监控系统进程的内存占用情况,包括虚拟内存、常驻内存、共享内存和swap内存。
  • 交互式界面允许用户按内存使用率排序,并进行进程管理。
  1. htop
  • 交互式的top命令,提供更直观的进程信息展示。
  • 允许用户与进程交互,如杀死进程或调整nice值。
  1. ps
  • 显示进程的详细信息,包括内存占用。
  • 命令示例:ps aux,显示所有进程的详细信息。
  1. smem
  • 提供关于系统中已经使用的和共享的实际内存大小,试图提供一个更为可靠的当前内存使用数据。
  • 命令示例:smem -m,显示内存使用情况。
  1. atop
  • 显示所有进程活动的性能监控工具,包含了CPU,内存,交换空间,磁盘和网络层的度量指标。
  1. sar
  • 收集、报告、保存系统活动的信息,包括CPU、内存等。
  • 命令示例:sar -r,显示内存的使用情况。
  1. cachestat 和 cachetop
  • 查看系统缓存的读写命中情况和监控进程的缓存读写命中情况。
  1. valgrind
  • 用于用户态内存泄漏检测和内存性能分析。
  1. memleak
  • 用于内核态检测内存泄漏。
  1. lsof
  • 列出打开的文件,对于查找打开文件的进程特别有用。
  1. pmap
  • 显示进程的内存映射信息。

通过这些工具,我们可以有效地监控和分析Linux系统的内存性能,从而进行相应的优化和故障排除。

7. I/O性能指标

linux调式与性能-总体介绍_Linux性能调式_07

8. I/O性能工具

linux调式与性能-总体介绍_Linux性能调式_08

在Linux系统中,监控I/O性能是非常重要的,因为I/O性能直接影响到系统的整体性能和响应速度。以下是一些常用的I/O性能监控工具:

  1. iostat
  • 报告CPU和输入/输出统计信息,可以用来监视系统输入/输出设备和整体系统的运行状况。
  • 命令示例:iostat 1,每秒输出一次CPU和I/O统计信息。
  1. vmstat
  • 提供虚拟内存统计信息,同时也显示了系统的I/O情况,包括每秒的读/写操作数。
  • 命令示例:vmstat -d 1,每秒输出一次磁盘I/O统计信息。
  1. iotop
  • 一个基于top命令的I/O监控工具,它可以显示哪些进程正在使用I/O资源。
  • 命令示例:sudo iotop,实时显示进程的I/O使用情况。
  1. atop
  • 一个全功能的系统监控工具,它提供了CPU、内存、I/O等资源的使用情况。
  • 命令示例:atop -d 1,每秒输出一次系统资源统计信息。
  1. htop
  • 虽然htop主要用于显示进程信息,但它也提供了一些I/O相关的统计信息。
  1. lsof
  • 列出打开的文件,可以用来查看哪些进程打开了特定的文件或设备,从而间接了解I/O活动。
  • 命令示例:lsof -i,显示所有打开的网络文件。
  1. fio
  • 是一个I/O测试和基准工具,用于对磁盘进行性能测试和验证。
  • 命令示例:fio --filename=/dev/sda --direct=1 --size=1G --rw=randwrite --ioengine=libaio --runtime=1m --time_based,执行写入性能测试。
  1. bonnie++
  • 是一个综合性的文件系统基准测试工具,用于测试存储设备的I/O性能。
  • 命令示例:bonnie++ -u -s 4096 -r 4096 -w 8 -x 8,执行文件系统性能测试。
  1. dstat
  • 是一个用于生成系统资源统计报告的工具,它整合了多个命令的功能,包括I/O信息。
  • 命令示例:dstat -d,显示磁盘I/O统计信息。
  1. nfsiostat
  • 是一个用于监控NFS(网络文件系统)I/O性能的工具。
  1. asiod
  • 显示AIO(异步I/O)的状态。
  1. iostat(Oracle):
  • Oracle提供的iostat工具,用于监控Oracle数据库的I/O性能。

这些工具各有特点,可以根据需要选择适合的工具进行I/O性能监控。例如,iostat和 vmstat可以快速查看系统级别的I/O使用情况,而 iotop和 fio则提供了更深入的I/O分析功能。通过这些工具,可以有效地监控和分析Linux系统的I/O性能,从而进行相应的优化和故障排除。

9. 网络性能指标

linux调式与性能-总体介绍_Linux性能调式_09

10. 网络性能工具

linux调式与性能-总体介绍_Linux性能调式_10

在Linux系统中,网络性能工具用于监控和分析网络活动、带宽使用、网络延迟和丢包率等关键指标。以下是一些常用的网络性能监控工具:

  1. iftop
  • 类似于top命令,但专注于网络带宽使用情况。
  • 实时显示每个网络连接的带宽使用。
  1. netstat
  • 显示网络连接、路由表、接口统计等网络信息。
  • 命令示例:netstat -tuln,显示所有网络连接和监听端口。
  1. ss
  • 是netstat的现代替代品,用于显示套接字统计信息。
  • 命令示例:ss -tunap,显示所有TCP连接及其状态。
  1. ping
  • 用于测试网络连通性和网络延迟。
  • 命令示例:ping www.example.com,测试到指定主机的连通性和延迟。
  1. mtr(My Traceroute):
  • 结合了traceroute和ping的功能,用于跟踪数据包到达目的地的路径和延迟。
  • 命令示例:mtr www.example.com
  1. traceroute
  • 显示数据包到目的主机之间每一跳的信息。
  • 命令示例:traceroute www.example.com
  1. iperf
  • 网络性能测试工具,用于测试TCP和UDP带宽性能。
  • 命令示例:iperf -s,启动iperf服务器等待客户端连接。
  1. nethogs
  • 显示每个进程的网络带宽使用情况。
  • 命令示例:nethogs
  1. tcpdump
  • 强大的网络抓包工具,用于捕获和分析网络流量。
  • 命令示例:tcpdump -i eth0,捕获指定网络接口的流量。
  1. wireshark
  • 是一个网络协议分析工具,可以捕获和分析网络上的数据包。
  • 通常用于深入分析网络问题。
  1. nfdump
  • 用于分析和处理netflow数据,帮助了解网络使用情况。
  1. iptraf
  • 是一个交互式的网络监控工具,可以显示网络接口的实时统计信息。
  1. ifconfig(虽然已被ip命令取代):
  • 用于配置或显示Linux内核中网络接口的网络参数。
  1. ip
  • 是ifconfig命令的现代替代品,用于显示和操作路由、网络设备、接口等。
  1. ethtool
  • 用于显示和设置网络接口的参数。
  1. speedtest-cli
  • 一个命令行工具,用于测试网络的下载和上传速度。
  1. tc
  • 是traffic control工具,用于管理和配置网络流量控制规则。

这些工具可以帮助系统管理员监控网络性能,识别瓶颈,分析网络问题,并进行相应的优化。例如,iftop和 netstat可以快速查看网络使用情况,而 iperf和 tcpdump则提供了更深入的网络性能分析功能。

11. 结尾

就像性能的分类一样,各种工具也没有严格的分类界限,实际中要根据问题、环境选择合适的工具分析调式或者相互补充,比如perf就常用于各类性能分析中,当然了,工具也只是用于分析、解决问题的一个工具,解决问题才是硬道理,比如printk也是一个工具,把问题解决了,做好产品卖出去了就算是一块砖头也是个科技含量高的宝贝。千万不要因不会用这些工具而畏惧,可以慢慢了解,有助于提高解决问题的效率,看待问题的维度,总之学无止境……

最后,喜欢的朋友帮忙点个赞,谢谢

linux调式与性能-总体介绍_Linux性能调式_11

举报

相关推荐

0 条评论