麒麟系统内存卡顿需综合判断:先用free -h查MemAvailable(真实可用内存)和Swap使用率,再解析/proc/meminfo验证MemAvailable下限及SwapCached非压力项,最后用vmstat看si/so换页速率与r/b队列确认是否成瓶颈。

如果您在麒麟操作系统中运行内存密集型应用时出现卡顿、响应迟缓或系统提示“内存不足”,说明物理内存可能已逼近极限,必须同时确认物理内存可用量与Swap交换空间是否已被实际占用——仅看free命令默认输出的used值容易误判,因为SwapCached、buffers、cached等字段会干扰真实压力判断。
用free -h快速获取物理内存与Swap总体使用率
执行free -h命令,直接读取/proc/meminfo原始数据,以人类可读单位(GB/MB)呈现两层内存状态。
重点定位Mem行的【available】列——该值代表当前可立即分配给新进程的物理内存,已扣除不可回收的内核页、PageCache中脏页预估开销等,比free列更真实反映剩余弹性容量。
再看Swap行的used和total值,用计算器算出使用率:used ÷ total × 100%。例如Swap used为1.8G、total为4.0G,则使用率为45%。
若需持续观察变化,执行free -h -s 2,每2秒刷新一次,避免单次快照遗漏瞬时峰值。
解析/proc/meminfo提取精确内存构成
该文件是内核内存统计的源头,字段含义明确、无格式干扰,适合脚本调用或交叉验证free结果。
执行grep -E "^(Mem|Swap|Cached|Buffers|SReclaimable)" /proc/meminfo,一次性提取关键指标。
注意MemAvailable字段——它比free命令中的available列多扣除了tmpfs和shmem占用,是真正可用于用户进程的物理内存下限;若该值低于512MB,系统已进入高风险区。
SwapTotal与SwapFree相减即得当前Swap已用量,而SwapCached表示被换出但尚未被覆盖的页,这些页若再次访问可免I/O直接回写内存,【不计入实际Swap压力】。
用swapon --show和/proc/swaps交叉验证Swap活跃性
方法一:执行swapon --show,列出所有已启用的Swap设备或文件,确认type(partition/file)、size及state(active/inactive)。
方法二:执行cat /proc/swaps,每行含filename、type、size(KB)、used(KB)、priority五字段。将used除以size,得出每个Swap项的实时使用率。
若某Swap设备used值稳定不变,但/proc/vmstat中pgpgout持续增长,说明换出页正被快速回收或覆盖,【Swap空间实际未被长期驻留占用】。
通过vmstat捕获Swap换页速率判断真实负载
第一步:执行vmstat 1 3,采集3次每秒采样。
第二步:查看输出末尾的si(swap in,KB/s)和so(swap out,KB/s)字段。若连续两行so > 0且数值超过500,表明内核正主动将匿名页写入Swap。
第三步:对比r(运行队列长度)与b(阻塞进程数)。若r ≥ 4且b > 0,同时si/so非零,说明内存压力已传导至调度层,Swap不再是后备手段而是性能瓶颈本身。

















