Linux vmstat命令怎么使用,Linux如何查看系统内存占用情况?

Linux虚拟内存管理是通过结合vmstat、free、top等工具进行实时监控,并结合swappiness、dirty_ratio等内核参数进行调优,以平衡物理内存利用率与磁盘I/O性能的复杂系统工程。

Linux 内存监控的核心逻辑与工具链

在Linux系统运维中,理解内存不仅仅是看“还剩多少”,更重要的是理解内存的分配状态、缓存机制以及交换空间(Swap)的置换频率。

Linux操作系统入门:查看磁盘和内存空间
加载中
Linux操作系统入门:查看磁盘和内存空间

如何查看linux内存占用情况并定位瓶颈

对于运维人员而言,如何查看linux内存占用情况是排查系统卡顿、OOM(Out of Memory)错误的第一步,目前行业内主流的观察维度分为三个层次:

  • 宏观层级:使用 free 命令
    free 命令是获取内存概况最快的方式,通过 free -h 可以直观看到物理内存(Mem)和交换空间(Swap)的使用量。

    • total: 总物理内存。
    • used: 已使用的内存。
    • free: 完全未被使用的内存。
    • buff/cache: 缓冲区和缓存,这是Linux性能优化的关键,Linux倾向于利用闲置内存做缓存以提升I/O效率。
    • available: 这是最重要的指标,它表示在不触发Swap的情况下,系统实际还能提供给应用程序使用的内存量。
  • 动态层级:使用 top 或 htop 命令
    当发现内存不足时,需要定位到具体的进程。top 命令可以按内存占用百分比(%MEM)进行排序。

    • 观察 RES (Resident Set Size):进程实际占用的物理内存。
    • 观察 VIRT (Virtual Image):进程申请的虚拟内存总量。
    • 观察 SHR (Shared Memory):进程使用的共享内存。
  • 底层细节层级:读取 /proc/meminfo
    如果需要进行深度诊断,直接读取 /proc/meminfo 文件是最权威的,它提供了如 Dirty(等待写入磁盘的内存)、Writeback(正在写入磁盘的内存)等极细颗粒度的内核数据。

内存状态对比分析表

为了更清晰地理解内存的不同状态,下表展示了常见内存指标及其对系统性能的影响:

Linux vmstat命令怎么使用,Linux如何查看系统内存占用情况?

内存状态 描述 对性能的影响 运维建议
Free Memory 完全未分配的内存 较低,说明内存利用率不高 正常,无需处理
Cached/Buffers 用于文件系统缓存的内存 极高,有助于加速磁盘读取 属于正常优化,无需释放
Available 可立即分配给应用的内存 关键指标,若过低则面临OOM风险 需警惕,准备扩容或优化应用
Swap Used 已置换到磁盘的内存 若持续增长,说明物理内存严重不足 需检查是否存在内存泄漏

linux vmstat命令参数详解与实战应用场景

在深入系统性能瓶颈时,vmstat(Virtual Memory Statistics)是专家级运维人员不可或缺的利器,它不仅能看内存,还能看进程、中断、上下文切换以及CPU状态。

vmstat 的核心输出指标解读

执行 vmstat 1(每秒刷新一次)时,输出的列代表了不同的系统维度,业内专家指出,通过观察这些指标的联动关系,可以快速判断系统是计算密集型还是I/O密集型。

  • procs (进程状态)

    • r (runnable): 正在运行或等待运行的进程数,若该值长期大于CPU核心数,说明CPU存在竞争。
    • b (blocked): 处于不可中断睡眠状态的进程数,通常是在等待I/O。
  • memory (内存状态)

    • swpd: 已使用的虚拟内存(Swap)。
    • free: 空闲内存。
    • buff/cache: 缓冲区与缓存。
  • swap (交换空间)

    • si (swap-in): 从磁盘交换分区读取数据到内存的速率。
    • so (swap-out): 将内存数据写入交换分区的速率。
    • 注意:si 和 so 的数值如果持续保持高位,说明系统正在频繁进行内存置换,这会导致严重的磁盘I/O抖动。
  • io (I/O 状态)

    • bi (blocks in): 每秒从块设备读取的数据量。
    • bo (blocks out): 每秒向块设备写入的数据量。
  • system (系统状态)

    • in (interrupts): 每秒产生的中断数。
    • cs (context switches): 每秒的上下文切换次数。
  • cpu (CPU 状态)

    • us (user): 用户态占用。
    • Linux vmstat命令怎么使用,Linux如何查看系统内存占用情况?

      sy (system): 内核态占用。

    • id (idle): 空闲时间。
    • wa (iowait): 等待I/O完成的时间。wa 值过高,通常意味着磁盘性能达到了瓶颈,或者Swap空间正在被疯狂读写。

常见性能问题诊断逻辑

通过 vmstat 的组合观察,可以快速定位问题场景:

  1. 内存泄漏场景:swpd 持续上升,free 持续下降,且 si/so 频繁出现。
  2. 磁盘I/O瓶颈场景:wa 值极高,bi/bo 很大,但 us(用户态)较低。
  3. 高并发竞争场景:cs(上下文切换)和 in(中断)数值异常高,导致 sy 占用升高。

linux swap分区设置方法与扩容步骤

当物理内存耗尽时,Swap 空间可以作为缓冲,防止系统直接崩溃,但在生产环境中,Swap 的配置需要极其谨慎。

swap 分区的角色与风险

Swap 是磁盘上的空间,其读写速度比物理内存慢几个数量级,行业共识认为,Swap 的存在是为了应对瞬时的内存峰值,而不是为了替代物理内存,如果系统长期依赖 Swap 运行,会导致严重的性能下降(即所谓的 Thrashing 抖动)。

linux swap分区设置方法

在没有独立分区的情况下,使用 Swap File(交换文件) 是最灵活的扩容方案,以下是标准的实操步骤:

  1. 创建交换文件
    使用 dd 命令创建一个指定大小的文件(4GB):
    sudo dd if=/dev/zero of=/swapfile bs=1G count=4

  2. 设置权限
    出于安全考虑,必须限制只有 root 用户可以读写该文件:
    sudo chmod 600 /swapfile

  3. 格式化为 Swap 格式
    sudo mkswap /swapfile

  4. 启用交换文件
    sudo swapon /swapfile

  5. 设置永久生效
    为了保证系统重启后依然有效,需要将其写入 /etc/fstab 文件:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

  6. 验证结果
    使用 free -h 或 swapon --show 查看 Swap 是否已成功增加。

linux虚拟内存优化方案与参数调优策略

仅仅配置好内存和 Swap 是不够的,还需要通过内核参数来优化内存的分配逻辑。

调整 Swappiness 参数

vm.swappiness 是 Linux 内核中一个非常关键的参数,取值范围为 0 到 100,它决定了内核在多大程度上倾向于将内存数据交换到 Swap。

  • 低值(如 10)

    Linux vmstat命令怎么使用,Linux如何查看系统内存占用情况?

    :内核会尽量使用物理内存,只有在物理内存极度紧张时才使用 Swap,适用于数据库、高性能计算等对延迟敏感的场景。

  • 高值(如 60 或更高):内核会更积极地将不常用的内存页移入 Swap,以腾出更多物理内存给文件缓存,适用于桌面环境或对响应速度要求不高的通用服务器。

实时调优命令:

  • 查看当前值:cat /proc/sys/vm/swappiness
  • 临时修改:sudo sysctl -w vm.swappiness=10
  • 永久修改:在 /etc/sysctl.conf 中添加 vm.swappiness=10,然后执行 sudo sysctl -p。

优化写回机制(Dirty Ratio)

当应用程序写入数据时,数据首先进入内存中的 Dirty Pages,如果这些数据过多,会导致系统在进行磁盘同步时出现长时间的 I/O 阻塞。

  • vm.dirty_ratio:系统内存中脏数据的最大百分比。
  • vm.dirty_background_ratio:内核开始在后台异步将脏数据写入磁盘的阈值。

在高性能 I/O 场景下,适当降低这两个值可以使磁盘写入更加平滑,避免大面积的 I/O 阻塞。

Linux 虚拟内存的管理是一个平衡艺术,核心在于通过 vmstat 监控 si/so 和 wa 指标,利用 free 关注 available 内存,并通过合理配置 swappiness 和 Swap File 来应对内存压力。

linux vm 监控与管理的常见问题

如何判断系统是否正在发生内存抖动(Thrashing)?

当你在 vmstat 中观察到 si(swap-in)和 so (swap-out) 的数值长时间维持在高位,wa (iowait) 指标显著上升,且系统响应变得极其缓慢时,即可判定系统正在发生内存抖动,这通常意味着物理内存已无法承载当前工作负载,系统在频繁地进行磁盘与内存之间的数据搬运。

linux swap分区设置方法中,swap file 和 swap partition 有什么区别?

Swap Partition(交换分区)是磁盘上的独立分区,性能略优于 Swap File,因为它不需要经过文件系统的层级结构,而 Swap File(交换文件)是在现有文件系统上创建的文件,配置更加灵活,支持动态扩容和缩容,不需要重新调整磁盘分区表,是目前主流的运维推荐方式。

为什么 available 内存很大,但系统依然报 OOM 错误?

这种情况通常发生在进程申请了大量的虚拟内存(VIRT)但尚未实际写入物理内存,或者系统存在严重的内存碎片化问题,某些内核参数设置不当(如 cgroup 限制了特定容器的内存上限)也会导致即使主机整体内存充足,特定进程依然触发 OOM Killer。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/linux-vmstat%e5%91%bd%e4%bb%a4%e6%80%8e%e4%b9%88%e4%bd%bf%e7%94%a8%ef%bc%8clinux%e5%a6%82%e4%bd%95%e6%9f%a5%e7%9c%8b%e7%b3%bb%e7%bb%9f%e5%86%85%e5%ad%98%e5%8d%a0%e7%94%a8%e6%83%85%e5%86%b5%ef%bc%9f/

赞 (0)
如何实现CDN跳转?CDN设置域名跳转规则的具体步骤及CDN跳转教程
上一篇 2026年7月13日 12:04
Crastar Cloud独享带宽IPLC好用吗,企业级IPLC专线价格多少?
下一篇 2026年7月13日 12:09

相关推荐

  • 云服务器租用一年大概多少钱,选哪家平台最划算

    上云服务器租用多少钱没有固定答案,但按2026年主流公有云与持牌自营IDC的公开报价,入门级1核2G配置年付普遍在300-800元区间,企业级4核8G配置年付约2000-5000元,最终成本取决于配置、带宽、计费模式与所选服务商资质,这段结论来自我们对国内云计算市场近三年公开报价的持续跟踪,在2026年,云服务……

    2026年10月8日
    000
  • 物理数据服务器一套多少钱,哪家性价比高?

    一套物理数据服务器的主流市场价格通常在几千元到数十万元之间,核心取决于CPU、内存、硬盘、带宽及托管方式,但大多数企业实际采购价集中在1万元至5万元区间,物理服务器价格构成:从硬件到交付的全链路拆解物理服务器并非单一商品,价格由硬件配置、网络带宽、托管环境、运维服务四部分叠加,理解这四层结构,才能准确判断报价是……

    2026年8月22日
    800
  • AI中转站搭建服务器需要多少钱,价格贵不贵?

    搭建AI中转站服务器的成本并非固定值,主流配置年预算在5000元至5万元之间,具体取决于并发需求、数据量规模和合规要求,这个区间覆盖了从个人开发者测试到小团队商业运营的常见场景,影响成本的核心参数包括服务器CPU/GPU配置、内存大小、带宽峰值以及是否选择持证IDC服务商,后者直接关系到业务能否长期稳定运行,成……

    2026年8月16日
    1000
  • 国服维修服务器要多少钱,维修费用贵不贵?

    单次硬件故障维修市场价普遍在300元至1500元之间,带备件更换的上门服务在2000元上下浮动,具体取决于故障类型、服务器品牌与是否在保,很多站长朋友第一次听到“维修服务器”这个报价时,会觉得比修电脑贵出一个量级,这很正常,服务器维修本来就不是换根内存条那么简单,下面我从价格构成、故障场景、怎么避免被坑这几个维……

    2026年9月27日
    100
  • 实况维修服务器大概要多少钱,是怎么收费的?

    实况维修服务器的价格通常在300元到3000元之间,但具体费用取决于故障类型、设备品牌和服务商资质,现场检测后报价才是行业通行做法,很多朋友问实况维修服务器多少钱,第一反应其实是这个问题里有两种不大一样的“实况”:一种是实时上门、现场维修服务器,另一种是实况系统(比如监控、流媒体平台)跑在服务器上出了故障,要修……

    相关资讯 2026年10月22日
    200
  • 怎么知道服务器dns地址,dns查询方法有哪些?

    查看服务器DNS地址最简单的方法是:Linux执行cat /etc/resolv.conf,Windows执行ipconfig /all,如果服务器托管在机房或云平台,可同时登录控制台查看分配的DNS,为什么需要确认服务器DNS地址DNS负责把域名翻译成IP地址,服务器上的DNS一旦配置错误,网站可能打不开、邮……

    2026年10月17日
    000
  • 2u服务器尺寸到底是多少厘米,2u机箱长宽高是多少?

    2U服务器的标准高度是8.89厘米,标准宽度是48.26厘米,这是机架式服务器遵循19英寸机架标准的通用规格,也是目前IDC机房部署最主流的服务器高度之一,机架设备为什么以“U”为单位服务器装进机柜,靠的是国际通用的EIA-310标准,这个标准把设备安装宽度锁定为48.26厘米,也就是19英寸,高度则用“U”来……

    2026年10月9日
    100
  • 一台入门服务器大概多少钱,选购时要注意什么?

    一台入门服务器的价格通常在每年300元到3000元之间,如果是租用独立服务器,则每月大约在300元到1500元起步,这个区间跨度不小,因为“入门服务器”既可以指云服务器,也可以指物理独立服务器,还可以指虚拟主机,价格差异主要来自配置、带宽、机房位置以及服务商的资质与运维能力,入门服务器价格到底由什么决定很多人第……

    2026年10月1日
    100
  • et服务器硬盘一个小时耗多少电

    一块ET服务器硬盘每小时耗多少电?直接答案:主流企业级硬盘每小时耗电约5-15瓦,即0.005-0.015度电,但实际功耗取决于硬盘类型(机械硬盘或固态硬盘)、工作负载、转速以及系统散热设计等因素,硬盘功耗的基础计算功耗单位与换算逻辑服务器硬盘功耗通常以瓦特为单位,一度电等于1000瓦时,一块硬盘标注的功耗是其……

    2026年8月23日
    1100
  • 网咖电脑服务器多少钱?,网咖服务器配置价格表

    一套满足30-60台客户端的网咖服务器,采购成本普遍在2万到8万元之间,月均运营成本(电力、带宽)约2000元起;若采用云服务器方案,初始投入可降至万元以内,这个结论是近三年网咖行业升级改造的主流预算区间,但具体数字受配置、带宽、部署方式三大变量影响,下文将逐层拆解成本构成,并给出可落地的采购与部署方案,服务器……

    相关资讯 2026年10月22日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注