Ubuntu缓存提升方法汇总
清理缓存是释放系统资源、提升缓存效率的第一步,主要包括APT包管理缓存、内核缓存及内存缓存:
sudo apt-get clean删除所有已下载的软件包文件(位于/var/cache/apt/archives/),释放磁盘空间;使用sudo apt-get autoclean删除已安装软件包的旧版本文件(仅保留当前版本的缓存);使用sudo apt autoremove移除不再被任何软件包依赖的孤立软件包(如旧的内核模块)。df -h检查/boot分区使用情况(若使用率超过80%,需清理旧内核)。使用sudo apt-get purge linux-image-<version>和sudo apt-get purge linux-headers-<version>删除旧的内核文件及头文件(保留当前正在使用的内核版本,可通过uname -r查看)。sync命令将文件系统缓冲区数据刷新到磁盘,再使用echo命令清理不同类型的缓存:echo 1 | sudo tee /proc/sys/vm/drop_caches(清理PageCache)、echo 2 | sudo tee /proc/sys/vm/drop_caches(清理dentries和inodes)、echo 3 | sudo tee /proc/sys/vm/drop_caches(清理所有缓存)。这些操作为非破坏性,不会影响正在运行的程序。通过修改内核参数优化缓存使用策略,提升系统性能:
vm.swappiness参数控制系统使用交换分区(swap)的偏好(默认值60,范围0-100)。值越高,系统越倾向于使用swap;值越低,越依赖物理内存。建议设置为10-30(如sudo sysctl -w vm.swappiness=10),以减少swap使用,提升内存访问速度。需永久生效时,将vm.swappiness=10添加到/etc/sysctl.conf文件中。vm.dirty_background_ratio(默认10%)表示内存中脏页面(未写入磁盘的修改数据)占比达到该值时,后台进程开始写入磁盘;vm.dirty_ratio(默认20%)表示脏页面占比达到该值时,系统强制同步写入磁盘。可根据磁盘性能调整(如SSD可适当增大,HDD需减小),减少频繁IO操作。对于频繁编译的开发场景,使用编译缓存工具可显著减少重复编译时间:
sudo apt-get install ccache,通过CC="ccache gcc"命令启用(如CC="ccache gcc" make)。ccache会缓存编译结果,下次编译相同代码时直接复用,提升编译速度。sudo apt-get install sccache,同样通过CC="sccache gcc"启用。利用内存缓存服务(如memcached、Redis)存储频繁访问的数据,减少磁盘IO:
sudo apt-get install memcached,编辑/etc/memcached.conf文件,设置缓存大小(如-m 1024表示1GB内存用于缓存),重启服务sudo systemctl restart memcached。适用于数据库查询缓存、会话存储等场景。sudo apt-get install redis-server,编辑redis.conf文件,设置最大内存(maxmemory 1gb)和持久化策略(如appendonly yes)。Redis支持更多数据结构(如哈希、列表),适用于复杂缓存需求(如网站缓存、实时数据处理)。DNS解析延迟会影响网页加载速度,配置本地DNS缓存可减少解析时间:
sudo apt-get install dnsmasq,编辑/etc/dnsmasq.conf文件,设置缓存大小(如cache-size=1000表示缓存1000条记录,cache-mem=512表示分配512MB内存用于缓存),重启服务sudo systemctl restart dnsmasq。适用于家庭或小型办公网络,提升DNS解析效率。根据文件系统类型和工作负载,调整缓存策略以提升IO性能:
noop或deadline调度器(noop无队列,适合SSD的高速随机IO;deadline保证IO延迟),HDD使用cfq(完全公平队列,适合机械硬盘的顺序IO)。通过cat /sys/block/sda/queue/scheduler查看当前调度器,使用echo deadline | sudo tee /sys/block/sda/queue/scheduler修改(需root权限)。sudo apt-get install preload,无需额外配置(默认自动运行)。