centos虚拟机内存优化方法
小樊
35
2025-12-29 03:41:23
CentOS 虚拟机内存优化方法
一 基础配置与容量规划
- 合理分配内存:按应用负载分配,避免对宿主机过度超配;数据库、缓存、消息队列等内存敏感型负载需预留充足内存并评估峰值。
- 启用并合理配置交换空间:即使物理内存充足,也建议保留一定 Swap 作为缓冲;常见做法是为内存的约 1.5 倍,也可依据工作集与延迟要求调整。
- 平台侧内存动态调节:启用虚拟化平台的内存气球驱动(Ballooning),在不中断业务的情况下回收/归还内存给宿主机,提高整体资源利用率。
- 宿主机虚拟化特性:在 BIOS 开启 Intel VT‑x/AMD‑V,并在 KVM 宿主机确认 EPT/VPID 等硬件加速特性可用,以降低内存虚拟化开销。
二 宿主机与虚拟化层优化
- KVM 场景:
- 优先使用 virtio 半虚拟化设备(磁盘/网络)以降低内存拷贝与驱动开销。
- 透明巨页(THP):多数通用负载建议开启以提升 TLB 命中率;但对延迟极敏感或内存碎片敏感的应用(如部分数据库)可尝试关闭或设为 madvise。
- KSM(Kernel Same‑page Merging):当多台虚机运行相似内存页时可开启以节省内存;若虚机内存基本不超配,可关闭以减少额外扫描与 CPU 开销。
- VirtualBox 场景:
- 在“系统 → 加速”启用 VT‑x/AMD‑V;为提升集成体验与减少资源争用,安装 VBoxLinuxAdditions。
三 来宾系统内核与内存参数
- 调整交换倾向:降低 vm.swappiness(如设为 10)以减少非必要换出,适用于内存充足且希望优先使用文件页缓存的场景。
- 控制脏页刷写:设置 vm.dirty_background_ratio=5、vm.dirty_ratio=10,在吞吐与延迟间取得平衡,避免一次性大规模回写导致抖动。
- 按需清理页面缓存:在维护窗口或性能分析前执行
sync && echo 3 > /proc/sys/vm/drop_caches 释放可回收缓存(不建议作为常规手段)。
- 透明巨页策略:检查与调整
- 查看:
cat /sys/kernel/mm/transparent_hugepage/enabled 与 .../defrag
- 临时关闭:
echo never > /sys/kernel/mm/transparent_hugepage/enabled 与 .../defrag
- 监控与诊断:使用
free -h、top、vmstat 1 观察可用内存、换入换出、回收与压力情况。
四 快速操作清单
- 创建并启用 4GB 交换文件(示例):
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo mkswap /swapfile && sudo chmod 600 /swapfile
sudo swapon /swapfile
- 持久化:在 /etc/fstab 添加
/swapfile none swap sw 0 0
- 降低换出倾向与脏页阈值:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
echo 'vm.dirty_background_ratio=5' | sudo tee -a /etc/sysctl.conf
echo 'vm.dirty_ratio=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
- 监控与按需清理:
free -h、top、vmstat 1
- 维护前:
sync && echo 3 > /proc/sys/vm/drop_caches
- VirtualBox 侧:关闭虚机 → 设置 → 系统 → 主板:调大内存;设置 → 系统 → 加速:启用 VT‑x/AMD‑V;安装 VBoxLinuxAdditions。
五 场景化建议
- 内存紧张或易超配:适度增大 Swap、降低 vm.swappiness,在宿主机启用 KSM;对延迟敏感负载可关闭 THP 并优先保障内存独占。
- 内存充足且追求吞吐:适度提高 vm.swappiness,开启 THP 与 KSM,减少换页与页表开销。
- 数据库/低延迟服务:优先保障内存、关闭或调优 THP、降低脏页阈值、减少后台回写抖动,必要时增加实例内存或减少并发。