Linux 内存“drop”操作与内核回收机制

术语澄清
如何安全地执行 drop caches
syncecho 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_cachesecho 0 > /proc/sys/vm/drop_cachessync,能释放的量会很少。何时需要或不需要 drop caches
内核内存回收机制概览
监控与进一步调优建议
free -h 关注 available(可用内存)而非仅看 free;top/htop、vmstat、sar -B、/proc/meminfo、slabtop 帮助判断是文件缓存、slab 还是应用占用异常。vm.swappiness:控制匿名页与文件页回收倾向,默认 60;值越小越倾向回收文件页,值越大越积极使用 swap。vm.vfs_cache_pressure:控制 **VFS 缓存(dentry/inode)**回收倾向,默认 100;增大更积极回收 VFS 缓存。vm.min_free_kbytes:设置保留的最小空闲内存,影响回收触发时机与幅度;过小易触发直接回收,过大降低可用内存并可能更易触发 OOM。vm.dirty_ratio、vm.dirty_background_ratio 等影响写回阈值与时机,避免抖动与突发 I/O。drop_caches,这会破坏内核的缓存策略,带来不必要的 I/O 与性能波动。min_free_kbytes 设得过大或过小;调大可提前回收、减少抖动,但会降低内存利用率;过小易频繁直接回收甚至 OOM。