CPU、内存工具知多少

top 命令

汇总区信息:

total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s): 
0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比

进程区信息:

  • 默认按照CPU使用率降序排列
NI:nice值,负值表示高优先级,正值表示低优先级,Zero in this field simply means priority will not be adjusted in determining a task's dispatch-ability

PR:The scheduling priority of the task.  If you see `rt' in this field, it means the task is running under real time scheduling priority.

Under linux, real time priority is somewhat misleading since traditionally the operating itself was not preemptible.  And while the 2.6
kernel can be made mostly preemptible, it is not always so.


VIRT、RES、SHR的单位都是KB

S:进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=被任务控制信号中断 t=被调试跟踪信号中断 Z=僵尸进程


键盘操作信息:

执行完 top 信息后,还可以通过按键查看具体详情:

1:监控每个逻辑CPU的状况(所以,当你想知道当前服务器是几核时,可以如此操作)

f:按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。 

m 切换显示内存信息。 
t 切换显示进程和CPU状态信息。 
c 切换显示命令名称和完整命令行。 
M 根据驻留内存大小进行排序。 
P 根据CPU使用百分比大小进行排序。 
T 根据时间/累计时间进行排序。 

R:大写的 R 键可以将当前的排序倒转

实例

当按下f后,会出现如下界面:

在这里插入图片描述

补充

更多官方信息输入 man top了解更多。

vmstat

vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。

推荐使用命令:vmstat -w 1,-w 为表格式输出,对仗工整,便于查看; 数字表示每隔多少秒输出一次。

man vmstat 参数解释:

b:等待io完成的进程数
r:可以运行的进程数

Memory
swpd:虚拟内存使用的数量
free:空闲内存的数量
buff:缓冲所使用的内存数量
cache:缓存所使用的内存数量

Swap
si:来自硬盘的内存交换空间(每秒)
so:写入硬盘的内存交换空间(每秒)

IO
bi:blocks received from a block device
bo:blocks sent to a block device

备注:

Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。

Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。

Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。

System
in:每秒中断数量,包括时钟
cs:每秒上下文切换数量

CPU(%)
us:执行非内核代码花费时间(用户时间)
sy:内核代码花费时间(系统时间)
id:等待时间(包括IO等待时间)

perf

perf  record -g // 执行一段时间按Ctrl+C结束
perf report // 查看报告

pidstat

vmstat 只给出了系统总体的上下文切换情况,要想查看每个进程的详细情况,就需要使用 pidstat 工具了!

安装命令:yum install sysstat

所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

常用命令:

pidstat 5:每5S输出一次,默认指标
UID       PID    %usr %system  %guest    %CPU   CPU  Command

pidstat -w 5: -w参数表示输出进程切换指标,尤其要关注cswch/s、nvcswch/s指标。

pidstat -w -u 1: -u参数则表示输出CPU使用指标

实例分析

从上图可以看出,当前服务器CPU不高,内存却占了一半。我们深入分析下内容的相关信息。(输入top后,按M就可以按内存大小降序排列)

题外话

1. scapy监听时内存泄露问题

由于scapy默认自动存储所有监听到的数据在内存里,所以会导致内存增加,最后被kill掉。

解决方法:在sniff中添加一个参数

sniff(iface=interface, prn=sniffmgmt, store=0) // 使数据不保存在内存中

sniff(iface=interface, prn=sniffmgmt, store=1) // 使数据保存在内存中

2. Gitlab 终止后内存依旧居高不下问题

使用 gitlab-ctl stop 命令后,用 ps -ef | grep gitlab 发现仍然有很多相关进程,可以继续执行

systemctl stop gitlab-runsvdir
ps -ef | grep gitlab

发现再也没有 gitlab相关进程,并且内存也降下去了!

参考资料:https://blog.csdn.net/a1368783069/article/details/110286102

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值