linux服务器内存使用情况

本文详细介绍Linux系统中使用free和top命令进行内存管理和性能监控的方法。通过free命令,可以查看物理内存、交换分区和缓存的使用情况,了解系统内存健康状态。top命令则提供实时的系统负载、进程状态、CPU使用率、内存使用情况等信息,帮助快速定位系统性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1. free命令

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

直接输入free命令,显示如下

free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB

另外,free -h会自动选择以适合理解的容量单位显示

Mem:表示物理内存统计,如果机器剩余内存非常小,一般小于总内存的20%,则判断为系统物理内存不够
Swap: 表示硬盘上交换分区的使用情况,如剩余空间较小,需要留意当前系统内存使用情况及负载,当Swap的used值大于0时,则表示操作系统物理内存不够,已经开始使用硬盘内存了。
第1行数据11G表示物理内存总量;6.5G表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用;
1.3G表示未被分配的内存;shared表示共享内存;4.0G表示系统分配但未被使用的buffers数量;4.7G表示系统分配但未被使用的available数量


ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less
执行以上命令可查看各个程序进程内存使用的内存情况,如下图所示,第一列为进程占用的内存百分比,可以看到哪些应用程序占的内存比较多,用于排查问题:

2.top命令

top 命令查看系统的实时负载, 包括进程、CPU负载、内存使用等等;

直接输入top命令

复制代码

下面表示整体信息

列表的含义

第一行其实代表了系统的启动时间和系统的平均负载。

top - 10:32:42 up 38 min,  2 users,  load average: 0.00, 0.00, 0.00

top - 10:32:42 up 38 min代表当前系统的时间是10:32:42,并且该机器已经启动了38 min2 users代表当前有两个用户登录。load average: 0.00, 0.00, 0.00代表的是系统最近5、10和15分钟内的平均负载。

这里需要注意的是平均负载并不是代表CPU的使用率。简单来说,平均负载是指单位时间内,系统处于可运行状态不可中断状态的平均进程数,也就是平均活跃进程数

所谓可运行状态和不可中断状态是指: - 可运行状态(R):正在CPU上运行或者正在等待CPU的进程状态,如上; - 不可中断状态(D):不可中断是指一些正在处于内核关键流程的进程,如果盲目打断,会造成不可预知的后果,比如正在写磁盘的进程,盲目被打断,可能会造成读写不一致的问题。

因此这里再次强调load average和CPU使用率并没有直接关系,其值可以大于100。

其实第一行的显示数据和命令uptime的作用是一样的。

第二行显示的是关于进程状态的总结。

进程可以处于不同的状态,这里显示了处于各种状态的进程数量,例如正在运行的任务、睡眠的任务、停止的任务、僵尸进程的数量等。

在下面的显示中, 系统总共有237个进程,其中1个进程处于running状态,236个进程处于sleeping状态,0个进程处于stop状态,0个进程处于僵尸进程状态。

Tasks: 237 total,   1 running, 236 sleeping,   0 stopped,   0 zombie

第三行是比较关键的一行,线上定位问题的时候,会经常关注这个点。

%Cpu(s):  0.3 us,  0.4 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st

这里的每一个参数的含义如下所示: - us, user: 用户空间的CPU百分比 - sy,system: 内核空间占用的CPU百分比 - ni,niced:调整过优先级的用户进程占用CPU百分比 - id,idle: 空闲CPU的百分比 - wa,IO wait: 用于等待IO完成的CPU时间 - hi:处理硬件中断的CPU时间 - si: 处理软件中断的CPU时间 - st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

第四部分是关于内存部分的数据。这里包含了两行,

第一行是物理内存的使用情况,第二行是关于交换分区的使用情况。

MiB Mem :   3635.0 total,   3229.8 free,    441.0 used,    170.1 buff/cache
MiB Swap:   2072.0 total,   2072.0 free,      0.0 used.   3194.0 avail Mem

第一行的含义如下: - 3635.0 total — 物理内存总量(3265MB ) - 3229.8 free — 空闲的内存总量( 3229.8MB ) - 441.0 used — 使用中的内存总量( 441.0MB ) - 170.1 buff/cache — block buffer + page cache 所占用的内存大小 (169M)

这里补充一句buff/cache的内容,在Linux 2.4以前,page cachebuffer cache是两个独立的缓存,Linux 2.4开始page cachebuffer cache进行了统一。

第二行的含义如下: - 2072.0 total - 交换分区的总量 - 2072.0 free - 空闲的交换分区的总量 - 0.0 used - 已使用的交换分区大小 - 3194.0 avail Mem: 这个值是系统的估算值,表示可用于启动新程序的物理内存大小(不包括 swap 空间)

第五部分是关于每个进程的数据

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1461 root      20   0    7252   3672   3280 S   0.7   0.1   0:00.03 bash
   1621 root      20   0   10700   4360   3476 R   0.7   0.1   0:00.05 top
   1477 root      20   0       0      0      0 I   0.3   0.0   0:00.01 kworker/0:0-events
      1 root      20   0  103372  12748   9724 S   0.0   0.3   0:02.18 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp

在横向列出的系统属性和状态下面,是以列显示的进程。不同的列代表下面要解释的不同属性。

  • PID:进程ID,进程的唯一标识符
  • USER:进程所有者的实际用户名。
  • PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
  • NI:进程的nice值(优先级)。NI的值处于[-20, 19],越小的值意味着越高的优先级。
  • VIRT:进程使用的虚拟内存。默认是KB。
  • RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小,默认是KB。
  • SHR:SHR是进程使用的共享内存,默认是KB。
  • S:这个是进程的状态。它有以下不同的值:
  • D – 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态
  • CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
  • MEM:进程使用的可用物理内存百分比。
  • TIME:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
  • COMMAND:运行进程所使用的命令。

参考网站:https://www.cnblogs.com/Security-Darren/p/4685629.html

https://www.cnblogs.com/hanmk/p/10556989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值