cpu相关指标(top、uptime、vmstat、mpstat、sar、pidstat、ps、dstat、perf、tcpdump、lscpu)等常见使用方法(三)

简介: cpu相关指标(top、uptime、vmstat、mpstat、sar、pidstat、ps、dstat、perf、tcpdump、lscpu)等常见使用方法

cpu相关指标(top、uptime、vmstat、mpstat、sar、pidstat、ps、dstat、perf、tcpdump、lscpu)等常见使用方法(二)https://developer.aliyun.com/article/1474368


网络(dstat、sar、tcpdump)

dstat 是一个用于实时监控系统资源使用情况的工具,它可以提供关于 CPU、内存、磁盘、网络等方面的详细统计信息。以下是 dstat 的一些常用用法:

  1. 基本用法:
    最简单的使用方法是在终端中直接运行 dstat 命令:
dstat
• 1
  1. 这将显示默认情况下的一些基本性能统计信息,包括 CPU 使用率、内存使用率、磁盘 I/O 等。
  2. 指定显示内容:
    使用 -c-m-d 等选项可以指定要显示的内容。例如,显示 CPU 使用率和内存使用情况:
dstat -c -m
• 1
  1. 实时更新间隔:
    使用 -t 选项可以指定 dstat 的刷新间隔,单位为秒。例如,每隔 2 秒更新一次:
dstat -t 2
• 1
  1. 显示网络信息:
    使用 -n 选项可以显示网络相关的统计信息:
dstat -n
• 1
  1. 显示磁盘信息:
    使用 -d 选项可以显示磁盘 I/O 相关的信息:
dstat -d
• 1
  1. 显示系统信息:
    使用 -s 选项可以显示系统相关的信息,包括系统调用、中断等:
dstat -s
• 1
  1. 显示进程信息:
    使用 -p 选项可以显示进程相关的信息,包括进程 CPU、内存占用等:
dstat -p
• 1
  1. 保存输出到文件:
    使用 --output 选项可以将 dstat 的输出保存到文件中,以便后续分析:
dstat --output dstat_output.csv
• 1
  1. 这将把输出保存到 dstat_output.csv 文件中。
  2. 显示颜色化输出:
    使用 --color 选项可以启用颜色化的输出,提高可读性:
dstat --color
• 1
  1. 颜色化输出将以不同颜色区分不同的统计信息。
  2. 显示帮助信息:
    如果需要查看更多选项和用法,可以使用 --help 选项:
dstat --help
• 1

dstat 提供了丰富的选项和灵活的配置,可以根据需要监控系统的不同方面。在使用时,可以根据具体的需求选择合适的选项组合。

tcpdump 是一个网络抓包工具,用于捕获和分析网络数据包。以下是一些常见的 tcpdump 用法和选项:

  1. 基本用法:
    最简单的 tcpdump 命令用法是:
tcpdump
• 1
  1. 这将捕获系统上的所有网络接口的数据包。
  2. 指定网络接口:
    使用 -i 选项可以指定要监听的网络接口。例如,监听 eth0 接口:
tcpdump -i eth0
• 1
  1. 过滤特定主机或网络:
    使用过滤器可以限制捕获的数据包。例如,只捕获源或目标是特定 IP 地址的数据包:
tcpdump host 192.168.1.1
• 1
  1. 或者只捕获特定网络的数据包:
tcpdump net 192.168.1.0/24
• 1
  1. 保存到文件:
    使用 -w 选项可以将捕获的数据包保存到文件中:
tcpdump -w capture.pcap
• 1
  1. 这将把捕获的数据包保存到 capture.pcap 文件中,后续可以使用其他工具进行分析。
  2. 读取保存的文件:
    使用 -r 选项可以读取之前保存的数据包文件:
tcpdump -r capture.pcap
• 1
  1. 指定端口:
    使用 port 关键字可以捕获特定端口的数据包:
tcpdump port 80
• 1
  1. 这将捕获目标或源端口是 80 的数据包。
  2. 显示更多详细信息:
    使用 -v-vv-vvv 选项可以增加详细程度,显示更多的信息:
tcpdump -vv
• 1
  1. 显示 ASCII 数据:
    使用 -A 选项可以显示捕获的数据包的 ASCII 数据:
tcpdump -A
• 1
  1. 显示时间戳:
    使用 -t 选项可以显示每个数据包的时间戳:
tcpdump -t
• 1
  1. 显示端口号对应的服务名称:
    使用 -n 选项可以防止 tcpdump 尝试将端口号转换为服务名称:
tcpdump -n
• 1
  1. 显示 ICMP 报文:
    使用 icmp 关键字可以捕获 ICMP 报文:
tcpdump icmp
• 1
  1. 显示特定协议:
    使用 proto 关键字可以捕获特定协议的数据包。例如,只显示 TCP 数据包:
tcpdump proto tcp
• 1
  1. 或只显示 UDP 数据包:
tcpdump proto udp
• 1

这只是 tcpdump 的一些常见用法,该工具提供了丰富的选项和过滤器,可以根据需要进行更复杂的网络数据包分析。

I/O(dstat、sar)

CPU个数(/proc/cpuinfo、lscpu

/proc/cpuinfo 文件包含有关系统上的每个 CPU 的信息。以下是使用 /proc/cpuinfo 的一些常见用法:

  1. 查看 CPU 信息:
    使用 cat 命令可以查看整个 /proc/cpuinfo 文件的内容:
cat /proc/cpuinfo
• 1
  1. 这将显示有关每个 CPU 的详细信息,包括型号、速度、缓存等。
  2. 显示 CPU 的物理核数:
    使用 grep 命令可以筛选物理核心的数量:
grep "physical id" /proc/cpuinfo | sort -u | wc -l
• 1
  1. 这将显示系统中的物理 CPU 数量。
  2. 显示 CPU 的逻辑核数:
    使用 grep 命令可以筛选逻辑核心的数量:
grep "processor" /proc/cpuinfo | wc -l
• 1
  1. 这将显示系统中的逻辑 CPU 数量。
  2. 显示 CPU 的型号和速度:
    使用 grep 命令可以筛选 CPU 的型号和速度信息:
grep "model name" /proc/cpuinfo
grep "cpu MHz" /proc/cpuinfo
• 1
• 2
  1. 这将显示每个 CPU 的型号和速度。
  2. 显示 CPU 缓存信息:
    使用 grep 命令可以筛选 CPU 缓存信息:
grep "cache size" /proc/cpuinfo
• 1
  1. 这将显示每个 CPU 的缓存大小。
  2. 显示 CPU 支持的特性:
    使用 grep 命令可以筛选 CPU 支持的特性:
grep "flags" /proc/cpuinfo
• 1
  1. 这将显示每个 CPU 支持的特性,如 SSE、SSE2、AVX 等。
  2. 显示 CPU 架构:
    使用 grep 命令可以筛选 CPU 的架构信息:
grep "arch" /proc/cpuinfo
• 1
  1. 这将显示每个 CPU 的架构,如 x86_64。
  2. 显示 CPU 是否支持虚拟化:
    使用 grep 命令可以查看 CPU 是否支持虚拟化:
grep "vmx" /proc/cpuinfo
• 1
  1. 如果输出中包含 “vmx”,则表示 CPU 支持虚拟化。

这些是 /proc/cpuinfo 文件的一些常见用法,可以根据具体需求筛选和显示所需的信息。

lscpu 是一个用于显示有关 CPU 架构信息的命令。以下是一些常见用法:

  1. 查看 CPU 信息:
lscpu
• 1
  1. 这将显示有关 CPU 的详细信息,包括架构、型号、速度、缓存、核心数等。
  2. 显示 CPU 架构:
lscpu | grep "Architecture"
• 1
  1. 这将仅显示 CPU 的架构信息,如 x86_64。
  2. 显示 CPU 型号和速度:
lscpu | grep "Model name"
lscpu | grep "CPU MHz"
• 1
• 2
  1. 这将显示 CPU 的型号和速度信息。
  2. 显示 CPU 缓存信息:
lscpu | grep "L3 cache"
• 1
  1. 这将显示 CPU 的 L3 缓存大小。
  2. 显示 CPU 核心数:
lscpu | grep "Core(s) per socket"
• 1
  1. 这将显示每个 CPU 插槽的核心数。
  2. 显示 CPU 线程数(逻辑核数):
lscpu | grep "Thread(s) per core"
• 1
  1. 这将显示每个核心的线程数,也即逻辑核数。
  2. 显示 CPU 插槽数:
lscpu | grep "Socket(s)"
• 1
  1. 这将显示系统中的 CPU 插槽数。
  2. 显示 NUMA 节点数:
lscpu | grep "NUMA node(s)"
• 1
  1. 这将显示系统中的 NUMA 节点数。
  2. 显示 CPU 是否支持虚拟化:
lscpu | grep "Virtualization"
• 1
  1. 这将显示 CPU 是否支持虚拟化。
  2. 显示 CPU 支持的指令集:
lscpu | grep "Flags"
• 1
  1. 这将显示 CPU 支持的指令集,如 SSE、SSE2、AVX 等。

这些是 lscpu 命令的一些常见用法,你可以根据具体需求选择查看所需的信息。

事件剖析(perf、execsnoop)

perf 是 Linux 系统中性能分析的工具,用于收集性能事件和生成性能分析报告。以下是一些常见用法:

  1. 收集系统性能事件:
perf record -a -g -- sleep 5
• 1
  1. 这将在系统上运行 sleep 命令 5 秒钟,期间收集所有进程的性能事件。-g 选项会同时收集调用图。
  2. 查看性能报告:
perf report
• 1
  1. 这将生成一个性能报告,显示系统上收集到的性能事件信息。你可以使用箭头键和回车键来浏览报告。
  2. 显示系统的 CPU 周期:
perf stat sleep 1
• 1
  1. 这将运行 sleep 命令 1 秒,并显示系统的 CPU 周期统计信息。
  2. 显示某个命令的性能统计:
perf stat <command>
• 1
  1. 用你想要分析性能的具体命令替代 <command>,这将显示该命令的性能统计信息。
  2. 查看 CPU 指令:
perf record -e instructions -c 10000 -a
• 1
  1. 这将收集所有进程的指令计数事件,每隔 10000 个事件报告一次。
  2. 查看缓存命中率:
perf stat -e cache-references,cache-misses <command>
• 1
  1. 这将运行 <command> 命令并显示缓存引用和缓存失效的统计信息。
  2. 记录 CPU 周期计数:
perf record -e cycles -a
• 1
  1. 这将收集所有进程的 CPU 周期计数信息。
  2. 显示函数调用图:
perf record -g -p <PID>
• 1
  1. 这将在指定的进程上启动性能事件收集,并包括函数调用图。
  2. 显示指定进程的性能信息:
perf top -p <PID>
• 1
  1. 这将显示指定进程的实时性能信息,类似于 top 命令。
  2. 生成火焰图:
perf script | stackcollapse-perf.pl | flamegraph.pl > flamegraph.svg
• 1
  1. 这将生成火焰图,用于可视化系统中的函数调用情况。

这些只是 perf 工具的一些基本用法,你可以根据具体的需求和关注点选择不同的性能事件进行分析。

execsnoopsysdig 工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:

  1. 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve
• 1
  1. 这将实时显示执行 execve 系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。
  2. 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username
• 1
  1. 用你的用户名替代 your_username,这样可以只显示特定用户的进程启动信息。
  2. 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process
• 1
  1. 用你的进程名替代 your_process,这样可以只显示特定进程的启动信息。
  2. 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid
• 1
  1. 用你的进程 ID 替代 your_pid,这样可以只显示特定进程的启动信息。
  2. 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log
• 1
  1. 这将将输出重定向到文件,以便稍后分析。
  2. 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1
• 1
  1. 这将按照时间戳排序输出。
  2. 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve
• 1
  1. 这将显示执行命令的完整路径。

请注意,使用 sysdig 工具需要系统具有相应的权限。在上述命令中,sudo 用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。execsnoopsysdig 工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:

  1. 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve
• 1
  1. 这将实时显示执行 execve 系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。
  2. 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username
• 1
  1. 用你的用户名替代 your_username,这样可以只显示特定用户的进程启动信息。
  2. 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process
• 1
  1. 用你的进程名替代 your_process,这样可以只显示特定进程的启动信息。
  2. 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid
• 1
  1. 用你的进程 ID 替代 your_pid,这样可以只显示特定进程的启动信息。
  2. 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log
• 1
  1. 这将将输出重定向到文件,以便稍后分析。
  2. 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1
• 1
  1. 这将按照时间戳排序输出。
  2. 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve
• 1
  1. 这将显示执行命令的完整路径。

请注意,使用 sysdig 工具需要系统具有相应的权限。在上述命令中,sudo 用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。

相关文章
|
27天前
|
监控 Unix Linux
cpu相关指标(top、uptime、vmstat、mpstat、sar、pidstat、ps、dstat、perf、tcpdump、lscpu)等常见使用方法(二)
cpu相关指标(top、uptime、vmstat、mpstat、sar、pidstat、ps、dstat、perf、tcpdump、lscpu)等常见使用方法
|
4天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
24 4
|
27天前
|
移动开发 运维 监控
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
|
28天前
|
监控 Python
【python】实现cpu/内存监控的功能(非常简单)
【python】实现cpu/内存监控的功能(非常简单)
|
29天前
|
Linux
Linux 查看进程PID和线程CPU和内存占用情况
Linux 查看进程PID和线程CPU和内存占用情况
22 0
|
2月前
|
运维 监控 网络协议
JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC
JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC
62 0
|
2月前
|
JSON Java Serverless
nacos常见问题之cpu和内存占用高如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
211 0
|
27天前
|
移动开发 Linux
Linux下如何查看哪些进程占用的CPU内存资源最多
Linux下如何查看哪些进程占用的CPU内存资源最多
|
9天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
7天前
|
监控 Shell
Shell脚本监控CPU、内存和硬盘利用率
Shell脚本监控CPU、内存和硬盘利用率