查看当前内存和交换空间使用情况,如何快速查看内存和交换空间使用情况?,如何一键查看内存和交换空间使用情况?

今天 8563阅读

查看内存和交换空间使用情况

free -h
# 或者查看详细内存信息(过滤关键指标)
cat /proc/meminfo | grep -E 'MemTotal|MemFree|SwapTotal|SwapFree|Buffers|Cached'

典型输出示例

              total        used        free      shared  buff/cache   available
Mem:           7.7Gi       2.1Gi       3.2Gi       123Mi       2.4Gi       5.1Gi
Swap:          2.0Gi       512Mi       1.5Gi

指标说明

  • buff/cache:被内核缓冲区(Buffers)和页面缓存(Cached)占用的内存
  • available:预估可用内存(包含可回收的缓存内存)

交换空间(Swap)配置与管理

创建交换文件(适用于无交换分区的情况)

# 创建指定大小的交换文件(示例为4GB)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# 更安全的方式(支持稀疏文件)
sudo fallocate -l 4G /swapfile
# 设置安全权限(防止非root用户访问)
sudo chmod 600 /swapfile
# 格式化交换文件
sudo mkswap /swapfile
# 启用交换文件
sudo swapon /swapfile
# 永久生效配置(系统重启后自动挂载)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

最佳实践建议

  1. 对于传统机械硬盘(HDD),建议交换空间为物理内存的1.5-2倍
  2. 对于SSD存储,建议交换空间不超过物理内存大小(通常1倍足够)
  3. 服务器环境建议最小4GB,最大不超过8GB
  4. 交换文件应创建在高速存储设备上

交换空间操作与调优

基本操作命令

# 查看当前交换空间状态
sudo swapon --show
# 临时启用所有交换分区/文件
sudo swapon -a
# 完全禁用交换空间
sudo swapoff -a
# 仅禁用特定交换文件
sudo swapoff /swapfile

内核参数调优(Swappiness)

vm.swappiness参数控制内核使用交换空间的倾向性:

值范围 行为特征
0 除非绝对必要,否则不使用交换空间
1-30 轻度使用交换空间(推荐SSD环境)
30-60 平衡策略(默认值60)
60-100 积极使用交换空间

调整方法

# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(立即生效)
sudo sysctl vm.swappiness=30
# 永久修改(需重启或执行sysctl -p)
echo 'vm.swappiness=30' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

内存与交换监控工具

实时监控工具

  1. vmstat - 基础监控

    vmstat 1 5  # 每秒刷新,共输出5次
    • 重点关注si(swap in)和so(swap out)列
  2. sar - 历史数据分析(需安装sysstat)

    sar -r 1 3    # 内存使用统计
    sar -S 1 3     # 交换空间统计
    sar -B 1 3     # 分页活动统计
  3. 高级工具

    # 按内存使用排序进程
    top -o %MEM
    htop --sort-key=PERCENT_MEM
    # 专业内存分析
    smem -s swap -r

关键监控指标

  • 内存压力:当可用内存(available)低于总内存10%时需要警惕
  • 交换活动:持续的si/so活动可能预示内存不足
  • OOM风险dmesg | grep oom-killer检查OOM事件

高级优化技术

Zswap配置(内存压缩交换)

# 编辑GRUB配置(/etc/default/grub)
GRUB_CMDLINE_LINUX="zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20"
# 更新GRUB并重启
sudo update-grub && sudo reboot

参数说明

  • compressor:推荐lz4(低CPU开销)
  • max_pool_percent:压缩池最大占比(建议10-30%)

交换空间性能优化

  1. 分区优化

    # 创建独立交换分区(性能优于交换文件)
    sudo mkswap /dev/sdXN
    sudo swapon /dev/sdXN
  2. I/O调度器调整(SSD环境):

    echo 'none' | sudo tee /sys/block/sdX/queue/scheduler
  3. 多交换文件负载均衡

    # 创建多个交换文件分散I/O压力
    for i in {1..4}; do
        sudo fallocate -l 1G /swapfile$i
        sudo mkswap /swapfile$i
        sudo swapon /swapfile$i
    done

关键系统文件参考

文件路径 作用描述
/proc/swaps 当前激活的交换空间列表
/proc/meminfo 详细内存统计信息
/proc/vmstat 虚拟内存子系统统计
/sys/kernel/mm/transparent_hugepage/enabled 透明大页配置
/var/log/syslog 系统日志(含OOM事件)

  1. 容量规划

    • 开发环境:物理内存的1-1.5倍
    • 生产服务器:4GB固定大小(SSD环境)
    • 数据库服务器:考虑禁用交换或设置swappiness=1
  2. 性能调优

    • SSD存储:优先使用Zswap
    • 高负载环境:监控pgscan_kswapd指标
    • 虚拟机环境:确保balloon驱动已安装
  3. 故障处理

    # 快速诊断内存问题
    dmesg -T | grep -i memory
    journalctl -b | grep -i oom
  4. 长期维护

    • 定期检查/proc/meminfo中的SwapCached
    • 使用vmstat 1监控长期趋势
    • 建立内存使用基线

查看当前内存和交换空间使用情况,如何快速查看内存和交换空间使用情况?,如何一键查看内存和交换空间使用情况? 第1张 (现代Linux内核内存管理组件示意图)

查看当前内存和交换空间使用情况,如何快速查看内存和交换空间使用情况?,如何一键查看内存和交换空间使用情况? 第2张 (典型内存监控工具界面示例)

注:本文技术内容适用于主流Linux发行版(Ubuntu/CentOS等),部分特性需要内核4.x以上版本支持,所有图片仅为技术说明用途,版权归原作者所有。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]