Ubuntu镜像性能优化技巧
一 系统安装镜像与虚拟机镜像
- 硬件与固件层:优先使用SSD/NVMe,在BIOS中开启快速启动、禁用未使用设备(如旧串口/并口/多余网卡),减少驱动加载与自检时间。
- 启动与内核:精简内核与模块,选择更快的内核压缩方式(如 gz),避免不必要的内核裁剪导致地址移动与复制开销;按需调整内核启动参数。
- 服务与自启:禁用不需要的systemd服务与定时器(如更新检查类),减少并行后台进程对CPU/IO的抢占。
- 桌面与软件:选择**轻量级桌面环境(如 Xfce)**或服务器版,关闭开机自启的冗余应用。
- 维护与更新:保持系统与内核及时更新,定期清理无用包与缓存,维持镜像“轻快”。
二 Docker与容器镜像
- 基础镜像:优先选用ubuntu:slim或更小的基础镜像;非Ubuntu场景可用Alpine以显著降低体积与攻击面。
- 多阶段构建:将构建依赖与运行产物分离,只保留运行必需文件,显著减小最终镜像。
- 分层与清理:合并RUN指令减少层数;在构建末尾执行**apt-get clean && rm -rf /var/lib/apt/lists/ *** 等清理,避免缓存进入镜像层。
- 资源与并行:在CI中设置MAKEFLAGS="-j$(nproc --all)"充分利用多核;将高IO缓存(如npm、vcpkg)指向**/tmp或/mnt**临时盘,降低系统盘争用。
- 运行期优化:按需启动containerd/docker,避免常驻占用;精简预装工具链,仅保留项目所需版本,减少环境变量冲突与磁盘IO。
三 CI/CD运行器镜像(以 GitHub Actions Ubuntu 24.04 为例)
- 服务精简:禁用fwupd-refresh.timer,按需启停containerd/docker,必要时卸载snapd以减少后台更新与资源占用。
- 工具链治理:仅保留项目需要的Python/Node/Go等版本,避免多版本并存引发PATH与缓存冲突。
- 缓存与路径:将VCPKG_INSTALLATION_ROOT、npm_config_cache等迁移到临时存储(如**/mnt/temp**),降低系统盘IO瓶颈。
- 并行与基线:设置MAKEFLAGS为**-j$(nproc --all);使用官方脚本(如System.Tests.ps1**、measure-provisioners-duration.ps1)建立性能基线并验证优化收益。
四 快速检查清单与常用命令
- 系统镜像与虚拟机
- 更换为SSD/NVMe;BIOS开启快速启动、禁用无用设备。
- 精简内核与模块;选择较快的压缩方式;减少自启服务与定时任务。
- 使用轻量桌面或服务器版;定期更新与清理。
- Docker/容器
- 基础镜像:ubuntu:slim/Alpine;使用多阶段构建与层合并。
- 构建末清理:apt-get clean && rm -rf /var/lib/apt/lists/*。
- CI并行:MAKEFLAGS=“-j$(nproc --all)”;缓存指向**/tmp或/mnt**。
- 常用命令示例
- 系统清理与精简内核
- sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove
- sudo apt-get purge linux-image-
- Docker多阶段与清理
- RUN apt-get update && apt-get install -y build-essential &&
make && make install &&
apt-get clean && rm -rf /var/lib/apt/lists/*
- CI服务精简与缓存迁移
- sudo systemctl mask fwupd-refresh.timer
- sudo systemctl stop containerd docker
- export VCPKG_INSTALLATION_ROOT=/mnt/temp/vcpkg
- export npm_config_cache=/mnt/temp/npm-cache
- export MAKEFLAGS=“-j$(nproc --all)”