Linux性能分析工具和方法

CPU

  • top:内核/用户进程占用CPU比例
  • procinfo/cat /proc/interrupts:查看中断次数和频率,造成中断数量较高的设备
  • oprofile:内核函数消耗时间和函数功能
  • time :进程在内核和用户空间花费的时间
  • strace /oprofile :进程在那些系统调用上花费的时间
  • ltrace / oprofile :进程在那些函数花费的时间

内存

  • slabtop :内核使用内存是否增加/使用量过大
  • slabtop :排序内核使用内存的对象情况,用于确定用于文件/子系统
  • top /ps :查看物理内存是否增加
    • /proc/<pid>/status 查看内存使用情况
      • VmExe 值很大,则说明可执行文件本身很大,需要确定哪些函数文本比较大。
      • VmLib 很大,则说明应用程序使用了大量或者体积比较大的共享库,需要确定哪些库导致了 VmLib 很大。
      • VmData 较大并在增加,说明进程的数据区或堆在增加。
    • gdb attach进程,根据调用栈信息计算当前栈指针和前一个栈指针的差值,这个差值即为函数的栈容量,找到栈容量比较大的函数。
    • memprof找到哪些函数分配了堆内存并观察哪些进程的堆内存在增加,确定是否存在不合理的分配或者内存泄漏问题。
    • /proc/<pid>/maps 查看进程使用了哪些共享库和以及这些库的大小,对于太大的共享库是否可能替换成大小更小的版本。或者某个库已经被其他进程加载到内存使用,只是版本不同,则可以改成共用一个版本。
    • nm 命令排序进程符号大小,找出文本段较大的函数看是否可以删除或者减小其大小。
    • ipcs查看共享内存信息,是否存在过大或者共享内存数量不断增加。
    • ipcs -p查看哪些进程创建和使用了共享内存。对于共享内存过大问题,可以查看其程序代码看分配是否合理。对于共享内存数不断增加,是否存在创建后未删除等问题。

磁盘I/O

  • iotop找到产生大量 IO 的进程。
  • strace 跟踪高 IO 进程与文件操作相关的系统调用,查看其调用详情和耗时时长,找到耗时长的读写操作。并通过其操作的文件描述符 fd 映射回磁盘上的文件,了解为什么需要读写这些文件,进而查看是否可以优化。

网络I/O

  • ethool 查看网卡的最大流量限制
  • iptraf 查看流经端口的流量是否饱和
  • ifconfig/ip 命令查看网络接口是否产生大量错误,如果是可能是硬件配置的有问题,联系网管帮忙排查解决。
  • iptraf 查看流量类型(协议/端口号)。
  • netstat 查看是否有进程在流经该网络端口的流量。
  • strace/lsof 找到是哪个套接字产生了这些通信流量。
相关推荐
酉鬼女又兒11 分钟前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面13 分钟前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
zl_dfq14 分钟前
Linux 之 【多线程】(pthread_xxx、轻量级进程、原生线程库、线程ID、__thread、线程栈、线程与信号、线程与程序替换)
linux
choke23315 分钟前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器
AZ996ZA29 分钟前
自学linux的第二十一天【DHCP 服务从入门到实战】
linux·运维·服务器·php
_OP_CHEN34 分钟前
【Linux系统编程】(二十八)深入 ELF 文件原理:从目标文件到程序加载的完整揭秘
linux·操作系统·编译·c/c++·目标文件·elf文件
Fleshy数模1 小时前
MySQL 表创建全攻略:Navicat 图形化与 Xshell 命令行双模式实践
linux·mysql
神梦流2 小时前
GE 引擎的非标准数据流处理:稀疏张量与自定义算子在图优化中的语义保持
linux·运维·服务器
.小墨迹2 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
Lsir10110_3 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件