Zerlaer's Notebook

欢迎来到我的博客|

Gentoo Linux优化技巧

Gentoo Linux以其高度的自定义性和性能而闻名,通过适当的优化可以进一步提升系统的性能和响应速度。本文将介绍多种Gentoo Linux的优化技巧,涵盖编译、内核、启动、存储等多个方面。

一、编译优化

1. 优化MAKEOPTS

MAKEOPTS控制并行编译的进程数,合理设置可以显著提高编译速度:

# 设置为CPU核心数+1(推荐)
nano /etc/portage/make.conf
MAKEOPTS="-j$(($(nproc)+1))"

2. 优化CFLAGS/CXXFLAGS

CFLAGS和CXXFLAGS控制C/C++编译器的优化选项:

nano /etc/portage/make.conf

# 基础优化(适用于大多数系统)
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"

# 高级优化(谨慎使用)
# CFLAGS="-O3 -march=native -pipe -flto -fno-plt -fstack-protector-strong"
# CXXFLAGS="${CFLAGS}"

3. 使用LTO(链接时间优化)

LTO可以在链接阶段进行跨文件优化:

nano /etc/portage/make.conf
LDFLAGS="-fuse-ld=gold -Wl,-O1 -Wl,--as-needed"

# 启用全局LTO(谨慎使用,可能导致编译问题)
# USE="lto"

4. 配置ccache

ccache可以缓存编译结果,加快重复编译速度:

# 安装ccache
sudo emerge dev-util/ccache

# 配置ccache
nano /etc/portage/make.conf
FEATURES="ccache"
CCACHE_SIZE="10G"
CCACHE_DIR="/var/cache/ccache"

# 查看ccache状态
ccache -s

5. 优化USE标志

USE标志是Gentoo优化的核心,只启用需要的功能:

# 查看当前USE标志
emerge --info | grep USE

# 设置全局USE标志
nano /etc/portage/make.conf
USE="X kde5 opengl networkmanager bluetooth -gnome -qt4 -ipv6"

# 为特定软件包设置USE标志
nano /etc/portage/package.use
www-client/firefox wayland
net-misc/networkmanager -bluetooth

二、内核优化

1. 编译自定义内核

参考《Gentoo Linux内核编译指南》,编译只包含必要功能的内核:

# 进入内核源代码目录
cd /usr/src/linux

# 配置内核(精简功能)
make menuconfig

# 编译并安装
make -j$(nproc)
make modules_install
make install

2. 启用内核抢占

提高桌面系统的响应性:

# 在menuconfig中启用
Processor type and features → Preemption Model → Preemptible Kernel (Low-Latency Desktop)

3. 优化I/O调度器

根据存储设备类型选择合适的I/O调度器:

# 查看当前I/O调度器
cat /sys/block/sda/queue/scheduler

# 为SSD设置mq-deadline
nano /etc/default/grub
GRUB_CMDLINE_LINUX="... elevator=mq-deadline"

# 更新GRUB
grub-mkconfig -o /boot/grub/grub.cfg

4. 启用透明大页

提高内存访问效率:

# 在menuconfig中启用
Memory Management options → Transparent Hugepage Support

# 或运行时启用
echo always > /sys/kernel/mm/transparent_hugepage/enabled

三、启动优化

1. 优化启动服务

只启用必要的系统服务:

# 查看当前启用的服务
rc-status

# 禁用不必要的服务
sudo rc-update del cupsd default
sudo rc-update del bluetooth default

# 启用需要的服务
sudo rc-update add sshd default
sudo rc-update add NetworkManager default

2. 使用OpenRC优化

调整OpenRC的启动参数:

# 启用并行启动服务
nano /etc/rc.conf
RC_PARALLEL="yes"

# 调整服务依赖
eix-sync
sudo emerge sys-apps/openrc-utils

3. 优化GRUB

加快GRUB的启动速度:

nano /etc/default/grub
# 减少超时时间
GRUB_TIMEOUT=2

# 禁用图形界面(可选)
# GRUB_TERMINAL=console

# 更新GRUB
grub-mkconfig -o /boot/grub/grub.cfg

4. 使用tmpfs

将临时目录挂载到内存中:

nano /etc/fstab
# 添加以下行
tmpfs /tmp tmpfs defaults,nosuid,nodev,noatime,size=2G 0 0
tmpfs /var/tmp tmpfs defaults,nosuid,nodev,noatime,size=512M 0 0
tmpfs /run tmpfs defaults,nosuid,nodev,noatime,size=1G 0 0

四、存储优化

1. 文件系统优化

为文件系统启用合适的挂载选项:

nano /etc/fstab
# 为ext4文件系统优化
/dev/sda2 / ext4 noatime,errors=remount-ro 0 1

# 为btrfs文件系统优化
# /dev/sda2 / btrfs noatime,compress=zstd,space_cache=v2 0 1

2. 使用SSD优化

如果使用SSD,启用TRIM和相关优化:

# 启用TRIM
nano /etc/fstab
/dev/sda2 / ext4 noatime,discard,errors=remount-ro 0 1

# 或使用fstrim.timer(推荐)
sudo systemctl enable fstrim.timer

3. 优化swap使用

调整swap使用策略:

# 查看当前swappiness
cat /proc/sys/vm/swappiness

# 降低swappiness(减少swap使用)
nano /etc/sysctl.conf
vm.swappiness=10
vm.vfs_cache_pressure=50

五、内存和CPU优化

1. 优化内存管理

nano /etc/sysctl.conf
# 增加文件句柄限制
fs.file-max=2097152

# 提高内存映射限制
vm.max_map_count=262144

# 应用设置
sysctl -p

2. CPU频率调节

启用CPU频率调节以平衡性能和功耗:

# 安装cpupower
sudo emerge sys-power/cpupower

# 启用cpupower服务
sudo rc-update add cpupower default

# 配置cpupower
nano /etc/default/cpupower
# 桌面系统
CPUPOWER_START_OPTS="frequency-set -g performance"
# 笔记本电脑
# CPUPOWER_START_OPTS="frequency-set -g ondemand"

3. 启用NUMA支持

如果CPU支持NUMA,启用相关优化:

# 安装numactl
sudo emerge sys-process/numactl

# 查看NUMA信息
numactl --hardware

# 使用numactl运行程序
numactl --cpunodebind=0 --membind=0 command

六、网络优化

1. 调整网络缓冲区

nano /etc/sysctl.conf
# 增加网络缓冲区大小
net.core.rmem_default=262144
net.core.rmem_max=16777216
net.core.wmem_default=262144
net.core.wmem_max=16777216

# 启用TCP窗口缩放
net.ipv4.tcp_window_scaling=1

# 启用TCP快速打开
net.ipv4.tcp_fastopen=3

2. 使用更快的DNS服务器

# 编辑resolv.conf
nano /etc/resolv.conf
nameserver 1.1.1.1  # Cloudflare DNS
nameserver 8.8.8.8  # Google DNS

# 或使用systemd-resolved
# sudo emerge net-dns/systemd-resolved
# sudo systemctl enable systemd-resolved

七、应用程序优化

1. 使用轻量级应用

选择轻量级应用替代资源密集型应用:

# 轻量级终端替代konsole/gnome-terminal
sudo emerge x11-terms/alacritty

# 轻量级文本编辑器替代kate/gedit
sudo emerge app-editors/nano app-editors/vim

# 轻量级浏览器替代firefox/chrome
sudo emerge www-client/qutebrowser

2. 优化Firefox

# 启用硬件加速
# 在about:config中设置
layers.acceleration.force-enabled = true

# 启用量子渲染
layout.css.grid.enabled = true

# 减少内存使用
browser.sessionhistory.max_total_viewers = 10

3. 优化KDE Plasma

# 禁用不必要的视觉效果
系统设置 → 工作区行为 → 桌面特效 → 减少特效

# 启用文件索引但限制范围
系统设置 → 搜索 → 文件搜索 → 调整索引位置

# 优化启动应用
系统设置 → 开机和关机 → 自动启动 → 禁用不必要的应用

八、系统维护

1. 定期清理系统

# 清理旧的portage包
sudo emerge --depclean
sudo eclean-dist
sudo eclean-pkg

# 清理临时文件
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

# 清理日志文件
sudo journalctl --vacuum-size=100M

2. 更新系统

保持系统更新以获取性能改进和安全补丁:

# 同步并更新系统
eix-sync
sudo emerge -uDN @world
sudo emerge --depclean
sudo revdep-rebuild

3. 监控系统性能

使用工具监控系统性能并识别瓶颈:

# 安装监控工具
sudo emerge app-benchmarks/sysbench app-misc/screenfetch sys-process/htop

# 监控CPU和内存
htop

# 监控磁盘I/O
iotop

# 监控网络流量
iftop

# 系统基准测试
sysbench cpu --cpu-max-prime=20000 run

九、高级优化

1. 使用Preload

Preload可以学习并预加载常用程序到内存:

# 安装preload
sudo emerge sys-apps/preload

# 启用preload服务
sudo rc-update add preload default

2. 启用OverlayFS

使用OverlayFS加速文件系统访问:

# 在fstab中配置
/dev/sda2 / ext4 noatime,errors=remount-ro 0 1
overlay /var/lib/docker/overlay2 overlay noatime,lowerdir=/,upperdir=/var/lib/docker/overlay2,workdir=/var/lib/docker/overlay2/work 0 0

3. 使用zram

zram可以将内存压缩用作交换空间:

# 安装zram-generator
sudo emerge sys-kernel/zram-generator

# 配置zram
nano /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram / 2
compression-algorithm = zstd

# 启用zram
sudo systemctl enable /dev/zram0

十、注意事项

  1. 稳定性优先:不要过度优化,可能导致系统不稳定
  2. 逐步优化:每次只进行一项优化,测试后再进行下一项
  3. 备份配置:修改配置文件前进行备份
  4. 文档记录:记录所做的优化,便于问题排查
  5. 根据硬件调整:不同硬件配置需要不同的优化策略

总结

Gentoo Linux的优化是一个持续的过程,通过合理配置编译选项、内核、服务和应用程序,可以显著提升系统性能。记住,优化应该根据实际需求和硬件配置进行,而不是盲目追求最高性能。

通过本文介绍的技巧,你可以打造一个既高效又稳定的Gentoo Linux系统。