内存缓存是Ubuntu提升文件访问速度的核心机制,主要包括PageCache(页面缓存)、dentries(目录项缓存)和inodes(索引节点缓存)。调整这类缓存需通过内核参数实现:
使用free -h命令可查看系统内存使用情况,其中“buff/cache”列即为内存缓存总量(包含PageCache、dentries等)。
free -h
vm.vfs_cache_pressure:控制内核回收dentries和inodes缓存的倾向性,值越大越积极回收(减少缓存),值越小越保守(增加缓存)。默认值通常为100,建议范围50-200。sudo sysctl -w vm.vfs_cache_pressure=100 # 设置为100(默认值)
vm.dirty_ratio和vm.dirty_background_ratio:控制脏页(已修改但未写入磁盘的内存页)的比例。dirty_ratio是触发同步写入的阈值(默认20%),dirty_background_ratio是触发后台写入的阈值(默认10%)。降低这两个值可减少写回延迟,提高数据安全性。sudo sysctl -w vm.dirty_ratio=20 # 同步写入阈值设为20%
sudo sysctl -w vm.dirty_background_ratio=10 # 后台写入阈值设为10%
编辑/etc/sysctl.conf文件,添加或修改上述参数(以vm.vfs_cache_pressure为例):
sudo nano /etc/sysctl.conf
在文件末尾添加:
vm.vfs_cache_pressure=100
vm.dirty_ratio=20
vm.dirty_background_ratio=10
保存后执行sudo sysctl -p使配置生效。
若需立即释放内存缓存(如系统内存紧张),可使用以下命令(需root权限):
sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
注:sync命令用于将缓存数据写入磁盘,避免数据丢失。
APT(Advanced Package Tool)会缓存下载的软件包(位于/var/cache/apt/archives/),可通过以下方式调整缓存大小或清理缓存:
sudo apt-get autoclean
sudo apt-get clean
编辑/etc/apt/apt.conf.d/95local文件(若不存在则创建),添加APT::Cache-Limit参数(单位:字节):
sudo nano /etc/apt/apt.conf.d/95local
设置缓存大小(例如500MB):
APT::Cache-Limit "500000000"; # 500MB
保存后,APT将自动限制缓存文件的总大小。
vm.swappiness参数控制内核使用交换分区(swap)的倾向性,值越大越倾向于使用swap(默认60),值越小越倾向于使用物理内存(建议10-30)。
sudo sysctl -w vm.swappiness=10
/etc/sysctl.conf,添加:vm.swappiness=10
执行sudo sysctl -p生效。/etc/memcached.conf中的-m参数(缓存大小,单位MB):sudo apt install memcached
sudo nano /etc/memcached.conf # 修改 -m 1024(1GB)
sudo systemctl restart memcached
/etc/dnsmasq.conf中的cache-size参数(缓存条目数,默认150):sudo apt install dnsmasq
sudo nano /etc/dnsmasq.conf # 添加 cache-size=1000
sudo systemctl restart dnsmasq
swappiness设为0可能导致内存耗尽时系统崩溃)。free -m、vmstat),及时优化参数。