free -h # 查看内存和交换空间使用情况
vmstat 1 # 实时监控内存、交换、IO等
top/htop # 交互式查看内存使用
# 查看详细内存信息
cat /proc/meminfo
# 进程级内存分析
pmap -x <pid>
# 内存泄漏检测工具
valgrind --tool=memcheck <program>
调整swappiness:
# 查看当前值(0-100,默认60)
cat /proc/sys/vm/swappiness
# 临时修改(推荐值10-30)
sysctl vm.swappiness=30
# 永久修改
echo "vm.swappiness=30" >> /etc/sysctl.conf
交换分区优化:
# 创建高性能交换文件
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 调整脏页写回策略
sysctl vm.dirty_ratio=10
sysctl vm.dirty_background_ratio=5
sysctl vm.dirty_expire_centisecs=3000
# 调整OOM Killer行为
echo -17 > /proc/<pid>/oom_adj # 防止特定进程被杀死
sysctl vm.panic_on_oom=1 # 内存耗尽时panic而不是kill进程
# 查看THP状态
cat /sys/kernel/mm/transparent_hugepage/enabled
# 禁用THP(某些工作负载下可能更好)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 启用zswap(需要内核支持)
modprobe zswap
echo 1 > /sys/module/zswap/parameters/enabled
# 创建内存cgroup
cgcreate -g memory:/mygroup
# 设置内存限制(1GB)
echo 1G > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
# 将进程加入cgroup
cgclassify -g memory:mygroup <pid>
# 使用smem分析内存使用
smem -s pss -r -c "pid command pss rss"
# 使用valgrind检测应用内存泄漏
valgrind --leak-check=full --show-leak-kinds=all ./your_program
# 查看哪些进程占用最多内存
ps aux --sort=-%mem | head
# 查看slab占用
slabtop
# 查看详细内存统计
cat /proc/meminfo | grep -E 'Mem|Buff|Cached|Swap'
通过以上方法和工具,您可以有效地管理和优化Linux系统的内存使用,提高系统整体性能。