活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Gentoo Linux系统优化实战案例分享 从编译参数调整到服务配置全方位提升系统性能的实用经验

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-3 12:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Gentoo Linux是一款以高度可定制性和优化著称的Linux发行版。与其他发行版不同,Gentoo采用源码包管理系统,允许用户根据自己的硬件特性和需求,从源代码编译整个系统。这种独特的特性使得Gentoo成为追求极致性能用户的理想选择。然而,要充分发挥Gentoo的潜力,需要系统性地进行优化,从编译参数调整到服务配置,每一个环节都可能影响系统的整体性能。

本文将分享Gentoo Linux系统优化的实战经验,涵盖从基础的编译参数调整到高级的服务配置,帮助读者全方位提升系统性能。无论您是Gentoo新手还是经验丰富的用户,都能从这些实用经验中获益。

Gentoo Linux系统优化的基本原则

在开始优化之前,我们需要了解一些基本原则,这些原则将指导我们的优化工作:

1. 针对性优化:优化应该针对特定的硬件和使用场景。不同的硬件配置和使用需求需要不同的优化策略。
2. 平衡性原则:性能、稳定性和安全性之间需要找到平衡点。过度追求性能可能会影响系统的稳定性或安全性。
3. 可测量性:优化应该是可测量的。在实施优化前后,应该使用工具进行性能测试,以验证优化的效果。
4. 渐进式优化:优化应该是一个渐进的过程,一次只调整一个参数或设置,以便在出现问题时能够快速定位。
5. 文档记录:所有的优化变更都应该有详细的文档记录,以便在需要时恢复或参考。

针对性优化:优化应该针对特定的硬件和使用场景。不同的硬件配置和使用需求需要不同的优化策略。

平衡性原则:性能、稳定性和安全性之间需要找到平衡点。过度追求性能可能会影响系统的稳定性或安全性。

可测量性:优化应该是可测量的。在实施优化前后,应该使用工具进行性能测试,以验证优化的效果。

渐进式优化:优化应该是一个渐进的过程,一次只调整一个参数或设置,以便在出现问题时能够快速定位。

文档记录:所有的优化变更都应该有详细的文档记录,以便在需要时恢复或参考。

编译参数调整

Gentoo最大的优势之一就是能够针对特定硬件优化编译参数。合理的编译参数设置可以显著提升系统性能。

CFLAGS和CXXFLAGS优化

CFLAGS和CXXFLAGS是用于C和C++编译的参数,它们直接影响生成代码的效率。以下是一些常用的优化参数:
  1. # 针对不同CPU架构的优化参数
  2. # 通用x86_64架构
  3. COMMON_FLAGS="-O2 -pipe -march=native"
  4. # 针对Intel CPU的优化
  5. # COMMON_FLAGS="-O2 -pipe -march=native -mtune=intel"
  6. # 针对AMD CPU的优化
  7. # COMMON_FLAGS="-O2 -pipe -march=native -mtune=amd"
  8. # 更激进的优化(可能影响稳定性)
  9. # COMMON_FLAGS="-O3 -pipe -march=native -fomit-frame-pointer -funroll-loops"
  10. # 在/etc/portage/make.conf中设置
  11. echo "COMMON_FLAGS="${COMMON_FLAGS}"" >> /etc/portage/make.conf
  12. echo "CFLAGS="\${COMMON_FLAGS}"" >> /etc/portage/make.conf
  13. echo "CXXFLAGS="\${COMMON_FLAGS}"" >> /etc/portage/make.conf
复制代码

参数说明:

• -O2:常用的优化级别,平衡了性能和编译时间。
• -O3:更高级别的优化,可能产生更快的代码,但会增加编译时间和潜在的稳定性问题。
• -pipe:使用管道而不是临时文件进行编译阶段间的通信,可以加快编译速度。
• -march=native:针对当前CPU架构进行优化,自动检测并使用当前CPU支持的所有指令集。
• -mtune=intel或-mtune=amd:针对特定CPU厂商进行优化。
• -fomit-frame-pointer:省略帧指针,可以释放一个寄存器用于优化,但会使调试更困难。
• -funroll-loops:展开循环,可能提高性能但会增加代码大小。

MAKEOPTS设置

MAKEOPTS参数控制并行编译的进程数,合理设置可以显著缩短编译时间:
  1. # 获取CPU核心数
  2. CPU_CORES=$(nproc)
  3. # 设置MAKEOPTS,通常为CPU核心数+1
  4. MAKEOPTS="-j${CPU_CORES} -l${CPU_CORES}"
  5. # 在/etc/portage/make.conf中设置
  6. echo "MAKEOPTS="${MAKEOPTS}"" >> /etc/portage/make.conf
复制代码

参数说明:

• -jN:指定并行编译的进程数,通常设置为CPU核心数或核心数+1。
• -lN:指定平均负载超过N时不启动新的编译任务,防止系统过载。

USE标志的合理配置

USE标志是Gentoo特有的功能,用于控制软件包的编译选项。合理配置USE标志可以减少不必要的功能,减小软件体积,提高性能:
  1. # 查看当前系统设置的USE标志
  2. emerge --info | grep ^USE
  3. # 编辑/etc/portage/make.conf,设置全局USE标志
  4. cat >> /etc/portage/make.conf << EOF
  5. # 减少不必要的依赖和功能
  6. USE="-alsa -cups -dbus -gnome -gtk -kde -pulseaudio -systemd -wayland -X"
  7. # 根据需要添加有用的USE标志
  8. USE+="mmx sse sse2 ssse3 sse4_1 sse4_2 avx avx2 aes threads"
  9. EOF
  10. # 为特定软件包设置USE标志
  11. mkdir -p /etc/portage/package.use
  12. echo "www-client/firefox -pulseaudio -alsa" >> /etc/portage/package.use/custom-flags
复制代码

常用的性能相关USE标志:

• mmx,sse,sse2,ssse3,sse4_1,sse4_2,avx,avx2:启用CPU特定指令集优化。
• threads:启用多线程支持。
• aes:启用AES硬件加速。

特定软件的编译优化

对于一些关键软件,可以设置特定的编译参数以获得最佳性能:
  1. # 为特定软件包设置CFLAGS
  2. mkdir -p /etc/portage/package.env
  3. echo "sys-devel/gcc custom-gcc" >> /etc/portage/package.env/custom-flags
  4. # 创建/etc/portage/env/custom-gcc文件
  5. cat > /etc/portage/env/custom-gcc << EOF
  6. CFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -funroll-loops"
  7. CXXFLAGS="\${CFLAGS}"
  8. EOF
  9. # 针对Firefox的优化
  10. echo "www-client/firefox custom-firefox" >> /etc/portage/package.env/custom-flags
  11. cat > /etc/portage/env/custom-firefox << EOF
  12. CFLAGS="-O3 -pipe -march=native -fomit-frame-pointer"
  13. CXXFLAGS="\${CFLAGS}"
  14. LDFLAGS="-Wl,-O1 -Wl,--as-needed"
  15. EOF
复制代码

内核优化

内核是系统的核心,优化内核配置可以显著提升系统性能。

内核配置选项

Gentoo允许用户自定义内核配置,以下是一些性能相关的内核配置选项:
  1. # 安装内核源码
  2. emerge sys-kernel/gentoo-sources
  3. # 配置内核
  4. cd /usr/src/linux
  5. make menuconfig
复制代码

在内核配置中,以下选项对性能影响较大:

1. 处理器类型和特性:设置正确的CPU类型(Processor type and features)启用Preemption Model(Preemption Model)启用Tickless System(Timer frequency)启用CPU频率调节(CPU Frequency scaling)
2. 设置正确的CPU类型(Processor type and features)
3. 启用Preemption Model(Preemption Model)
4. 启用Tickless System(Timer frequency)
5. 启用CPU频率调节(CPU Frequency scaling)
6. 内存管理:启用透明大页(Transparent Hugepage Support)启用内存压缩(Memory compression)调整内存分配策略(Memory allocator options)
7. 启用透明大页(Transparent Hugepage Support)
8. 启用内存压缩(Memory compression)
9. 调整内存分配策略(Memory allocator options)
10. 文件系统:启用常用的文件系统支持(如ext4, xfs, btrfs)启用高级特性(如EXT4 filesystem support)
11. 启用常用的文件系统支持(如ext4, xfs, btrfs)
12. 启用高级特性(如EXT4 filesystem support)
13. 网络支持:启用高级网络功能(Network packet filtering framework)启用TCP/IP高级功能(TCP/IP networking)
14. 启用高级网络功能(Network packet filtering framework)
15. 启用TCP/IP高级功能(TCP/IP networking)

处理器类型和特性:

• 设置正确的CPU类型(Processor type and features)
• 启用Preemption Model(Preemption Model)
• 启用Tickless System(Timer frequency)
• 启用CPU频率调节(CPU Frequency scaling)

内存管理:

• 启用透明大页(Transparent Hugepage Support)
• 启用内存压缩(Memory compression)
• 调整内存分配策略(Memory allocator options)

文件系统:

• 启用常用的文件系统支持(如ext4, xfs, btrfs)
• 启用高级特性(如EXT4 filesystem support)

网络支持:

• 启用高级网络功能(Network packet filtering framework)
• 启用TCP/IP高级功能(TCP/IP networking)

内核编译参数

配置完成后,可以使用以下命令编译和安装内核:
  1. # 编译内核
  2. make -j$(nproc)
  3. # 安装模块
  4. make modules_install
  5. # 安装内核
  6. make install
  7. # 更新GRUB配置
  8. grub-mkconfig -o /boot/grub/grub.cfg
复制代码

模块管理优化

合理管理内核模块可以减少内存使用和提高系统响应速度:
  1. # 列出当前加载的模块
  2. lsmod
  3. # 禁用不必要的模块自动加载
  4. echo "blacklist module_name" >> /etc/modprobe.d/blacklist.conf
  5. # 手动加载模块
  6. modprobe module_name
  7. # 卸载模块
  8. modprobe -r module_name
  9. # 创建/etc/modules-load.d目录,存放需要启动时加载的模块
  10. mkdir -p /etc/modules-load.d
  11. echo "module_name" > /etc/modules-load.d/custom-modules.conf
复制代码

文件系统优化

文件系统的选择和配置对系统性能有重要影响。

选择合适的文件系统

不同的文件系统有不同的特性,适用于不同的场景:

1. ext4:稳定可靠,兼容性好,适合大多数场景。
2. xfs:高性能,特别适合大文件和高并发访问,适合服务器环境。
3. btrfs:现代文件系统,支持快照、压缩等高级特性,适合需要数据保护的环境。
4. f2fs:针对闪存优化,适合SSD和eMMC存储。
  1. # 格式化文件系统示例
  2. # 创建ext4文件系统
  3. mkfs.ext4 /dev/sda1
  4. # 创建xfs文件系统
  5. mkfs.xfs /dev/sda2
  6. # 创建btrfs文件系统
  7. mkfs.btrfs /dev/sda3
  8. # 创建f2fs文件系统
  9. mkfs.f2fs /dev/sda4
复制代码

挂载选项优化

合理的挂载选项可以显著提升文件系统性能:
  1. # 编辑/etc/fstab文件,优化挂载选项
  2. cat >> /etc/fstab << EOF
  3. # 示例:SSD上的ext4文件系统
  4. /dev/sda1 / ext4 noatime,nodiratime,discard,defaults 0 1
  5. # 示例:机械硬盘上的xfs文件系统
  6. /dev/sda2 /data xfs noatime,nodiratime,defaults 0 2
  7. # 示例:启用压缩的btrfs文件系统
  8. /dev/sda3 /backup btrfs compress=lzo,noatime,nodiratime,defaults 0 2
  9. EOF
复制代码

挂载选项说明:

• noatime:不更新文件访问时间,减少磁盘写入。
• nodiratime:不更新目录访问时间,进一步减少磁盘写入。
• discard:启用TRIM支持,适合SSD。
• compress=lzo:启用LZO压缩,减少磁盘空间使用。

文件系统维护

定期维护文件系统可以保持其性能:
  1. # 检查文件系统
  2. fsck /dev/sda1
  3. # 对于ext4文件系统,调整保留块百分比
  4. tune2fs -m 1 /dev/sda1
  5. # 对于xfs文件系统,进行碎片整理
  6. xfs_fsr /dev/sda2
  7. # 对于btrfs文件系统,进行平衡操作
  8. btrfs filesystem balance /backup
复制代码

内存管理优化

内存管理对系统性能有直接影响,合理的内存配置可以提高系统响应速度。

交换分区配置

交换分区(swap)的配置对系统性能有重要影响:
  1. # 创建交换文件
  2. fallocate -l 4G /swapfile
  3. chmod 600 /swapfile
  4. mkswap /swapfile
  5. swapon /swapfile
  6. # 编辑/etc/fstab,添加交换文件
  7. echo "/swapfile none swap sw 0 0" >> /etc/fstab
  8. # 调整swappiness参数(0-100,值越低越少使用swap)
  9. echo "vm.swappiness=10" >> /etc/sysctl.d/99-sysctl.conf
  10. # 应用设置
  11. sysctl -p /etc/sysctl.d/99-sysctl.conf
复制代码

内存分配策略

调整内存分配策略可以提高系统性能:
  1. # 编辑/etc/sysctl.d/99-sysctl.conf,添加内存管理参数
  2. cat >> /etc/sysctl.d/99-sysctl.conf << EOF
  3. # 增加文件句柄限制
  4. fs.file-max = 100000
  5. # 增加内存映射区域限制
  6. vm.max_map_count = 262144
  7. # 调整脏页回写参数
  8. vm.dirty_ratio = 10
  9. vm.dirty_background_ratio = 5
  10. # 调整虚拟内存管理参数
  11. vm.vfs_cache_pressure = 50
  12. EOF
  13. # 应用设置
  14. sysctl -p /etc/sysctl.d/99-sysctl.conf
复制代码

缓存和缓冲区管理

合理管理缓存和缓冲区可以提高系统性能:
  1. # 清理页面缓存
  2. echo 1 > /proc/sys/vm/drop_caches
  3. # 清理目录项和inode
  4. echo 2 > /proc/sys/vm/drop_caches
  5. # 清理页面缓存、目录项和inode
  6. echo 3 > /proc/sys/vm/drop_caches
  7. # 设置自动清理缓存(不推荐在生产环境使用)
  8. # echo "0 3 * * * sync && echo 1 > /proc/sys/vm/drop_caches" | crontab -
复制代码

服务配置优化

合理配置系统服务可以减少资源占用,提高系统性能。

系统服务精简

禁用不必要的服务可以释放系统资源:
  1. # 查看已启用的服务
  2. rc-update show
  3. # 禁用不必要的服务
  4. rc-update del service_name default
  5. # 启用必要的服务
  6. rc-update add service_name default
  7. # 常见可以禁用的服务(根据实际需求)
  8. rc-update del bluetooth default
  9. rc-update del cupsd default
  10. rc-update del avahi-daemon default
  11. rc-update del syslog-ng default
复制代码

启动项管理

管理启动项可以加快系统启动速度:
  1. # 编辑/etc/conf.d/local.start,添加自定义启动命令
  2. cat >> /etc/conf.d/local.start << EOF
  3. # 自定义启动命令
  4. mount -o remount,size=2G /run/shm
  5. EOF
  6. # 使用systemd-analyze分析启动时间(如果使用systemd)
  7. systemd-analyze time
  8. systemd-analyze blame
复制代码

服务并行启动

启用并行启动可以加快系统启动速度:
  1. # 编辑/etc/rc.conf,启用并行启动
  2. sed -i 's/#rc_parallel="NO"/rc_parallel="YES"/' /etc/rc.conf
  3. # 调整并行启动的超时时间
  4. echo 'rc_timeout=120' >> /etc/rc.conf
复制代码

网络优化

网络优化可以提高网络吞吐量和响应速度。

网络参数调整

调整网络参数可以提高网络性能:
  1. # 编辑/etc/sysctl.d/99-sysctl.conf,添加网络优化参数
  2. cat >> /etc/sysctl.d/99-sysctl.conf << EOF
  3. # 增加TCP缓冲区大小
  4. net.core.rmem_max = 16777216
  5. net.core.wmem_max = 16777216
  6. net.ipv4.tcp_rmem = 4096 87380 16777216
  7. net.ipv4.tcp_wmem = 4096 65536 16777216
  8. # 启用TCP窗口缩放
  9. net.ipv4.tcp_window_scaling = 1
  10. # 启用TCP快速打开
  11. net.ipv4.tcp_fastopen = 3
  12. # 优化TCP拥塞控制算法
  13. net.ipv4.tcp_congestion_control = bbr
  14. # 增加网络连接队列大小
  15. net.core.netdev_max_backlog = 5000
  16. net.ipv4.tcp_max_syn_backlog = 4096
  17. EOF
  18. # 应用设置
  19. sysctl -p /etc/sysctl.d/99-sysctl.conf
复制代码

网络服务优化

优化网络服务配置可以提高网络性能:
  1. # 编辑/etc/ssh/sshd_config,优化SSH服务
  2. cat >> /etc/ssh/sshd_config << EOF
  3. # 启用TCP keepalive
  4. ClientAliveInterval 300
  5. ClientAliveCountMax 3
  6. # 禁用DNS反向查找
  7. UseDNS no
  8. # 启用压缩
  9. Compression yes
  10. EOF
  11. # 重启SSH服务
  12. /etc/init.d/sshd restart
复制代码

防火墙配置

合理配置防火墙可以在保证安全的同时提高网络性能:
  1. # 安装iptables
  2. emerge net-firewall/iptables
  3. # 创建防火墙规则
  4. cat > /etc/iptables/rules-save << EOF
  5. *filter
  6. :INPUT ACCEPT [0:0]
  7. :FORWARD ACCEPT [0:0]
  8. :OUTPUT ACCEPT [0:0]
  9. -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  10. -A INPUT -i lo -j ACCEPT
  11. -A INPUT -p icmp -j ACCEPT
  12. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  13. -A INPUT -j DROP
  14. COMMIT
  15. EOF
  16. # 应用防火墙规则
  17. iptables-restore < /etc/iptables/rules-save
  18. # 保存防火墙规则
  19. /etc/init.d/iptables save
  20. rc-update add iptables default
复制代码

安全性与性能的平衡

在追求性能的同时,不能忽视系统的安全性。以下是一些在保证安全性的前提下提高性能的方法:
  1. # 安装安全工具
  2. emerge app-admin/sudo app-portage/eix app-portage/gentoolkit
  3. # 配置sudo,减少root使用
  4. echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers
  5. # 定期更新系统
  6. emerge --sync
  7. emerge -auvDN @world
  8. # 使用hardened GCC工具链提高安全性
  9. emerge sys-devel/hardened-gcc
复制代码

实战案例分享

桌面系统优化案例

以下是一个针对桌面系统的优化案例:
  1. # 安装桌面环境所需的软件包
  2. emerge x11-base/xorg-server xfce-base/xfce4-meta
  3. # 优化编译参数
  4. cat > /etc/portage/make.conf << EOF
  5. COMMON_FLAGS="-O2 -pipe -march=native -mtune=generic"
  6. CFLAGS="\${COMMON_FLAGS}"
  7. CXXFLAGS="\${COMMON_FLAGS}"
  8. MAKEOPTS="-j$(nproc)"
  9. USE="X gtk3 dbus pulseaudio alsa -systemd -gnome -kde"
  10. EOF
  11. # 优化内核配置
  12. cd /usr/src/linux
  13. make menuconfig
  14. # 选择以下选项:
  15. # Processor type and features -> Preemption Model -> Preemptible Kernel (Low-Latency Desktop)
  16. # Power management and ACPI options -> CPU Frequency scaling -> CPU frequency scaling
  17. # Device Drivers -> Graphics support -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
  18. # 编译并安装内核
  19. make -j$(nproc) && make modules_install && make install
  20. # 优化文件系统挂载选项
  21. cat >> /etc/fstab << EOF
  22. # SSD优化
  23. /dev/sda1 / ext4 noatime,nodiratime,discard,defaults 0 1
  24. EOF
  25. # 优化内存管理
  26. cat >> /etc/sysctl.d/99-sysctl.conf << EOF
  27. # 减少swap使用
  28. vm.swappiness=10
  29. # 增加文件句柄限制
  30. fs.file-max=100000
  31. EOF
  32. # 应用设置
  33. sysctl -p /etc/sysctl.d/99-sysctl.conf
  34. # 安装并配置轻量级显示管理器
  35. emerge x11-mingdm/lightdm
  36. rc-update add lightdm default
复制代码

服务器优化案例

以下是一个针对Web服务器的优化案例:
  1. # 安装Web服务器所需的软件包
  2. emerge www-servers/nginx www-servers/php
  3. # 优化编译参数
  4. cat > /etc/portage/make.conf << EOF
  5. COMMON_FLAGS="-O2 -pipe -march=native"
  6. CFLAGS="\${COMMON_FLAGS}"
  7. CXXFLAGS="\${COMMON_FLAGS}"
  8. MAKEOPTS="-j$(nproc)"
  9. USE="-X -gtk -gnome -kde -alsa -pulseaudio threads"
  10. EOF
  11. # 优化内核配置
  12. cd /usr/src/linux
  13. make menuconfig
  14. # 选择以下选项:
  15. # Processor type and features -> Timer frequency -> 1000 HZ
  16. # Power management and ACPI options -> CPU Frequency scaling -> CPU frequency scaling
  17. # Device Drivers -> Network device support -> Ethernet driver support
  18. # 编译并安装内核
  19. make -j$(nproc) && make modules_install && make install
  20. # 优化文件系统挂载选项
  21. cat >> /etc/fstab << EOF
  22. # 服务器优化
  23. /dev/sda1 / xfs noatime,nodiratime,defaults 0 1
  24. /dev/sdb1 /data xfs noatime,nodiratime,defaults 0 2
  25. EOF
  26. # 优化网络参数
  27. cat >> /etc/sysctl.d/99-sysctl.conf << EOF
  28. # 增加TCP缓冲区大小
  29. net.core.rmem_max = 16777216
  30. net.core.wmem_max = 16777216
  31. net.ipv4.tcp_rmem = 4096 87380 16777216
  32. net.ipv4.tcp_wmem = 4096 65536 16777216
  33. # 启用TCP窗口缩放
  34. net.ipv4.tcp_window_scaling = 1
  35. # 优化TCP拥塞控制算法
  36. net.ipv4.tcp_congestion_control = bbr
  37. # 增加网络连接队列大小
  38. net.core.netdev_max_backlog = 5000
  39. net.ipv4.tcp_max_syn_backlog = 4096
  40. EOF
  41. # 应用设置
  42. sysctl -p /etc/sysctl.d/99-sysctl.conf
  43. # 优化Nginx配置
  44. cat > /etc/nginx/nginx.conf << EOF
  45. user nginx;
  46. worker_processes auto;
  47. worker_rlimit_nofile 100000;
  48. error_log /var/log/nginx/error.log crit;
  49. pid /var/run/nginx.pid;
  50. events {
  51.     worker_connections 4096;
  52.     use epoll;
  53.     multi_accept on;
  54. }
  55. http {
  56.     include /etc/nginx/mime.types;
  57.     default_type application/octet-stream;
  58.     sendfile on;
  59.     tcp_nopush on;
  60.     tcp_nodelay on;
  61.     keepalive_timeout 30;
  62.     keepalive_requests 100000;
  63.     reset_timedout_connection on;
  64.     client_body_timeout 10;
  65.     send_timeout 2;
  66.     open_file_cache max=200000 inactive=20s;
  67.     open_file_cache_valid 30s;
  68.     open_file_cache_min_uses 2;
  69.     open_file_cache_errors on;
  70.     include /etc/nginx/conf.d/*.conf;
  71. }
  72. EOF
  73. # 启动Nginx
  74. rc-update add nginx default
  75. /etc/init.d/nginx start
复制代码

特定应用场景优化案例

以下是一个针对数据库服务器的优化案例:
  1. # 安装数据库服务器
  2. emerge dev-db/mariadb
  3. # 优化编译参数
  4. cat > /etc/portage/make.conf << EOF
  5. COMMON_FLAGS="-O2 -pipe -march=native"
  6. CFLAGS="\${COMMON_FLAGS}"
  7. CXXFLAGS="\${COMMON_FLAGS}"
  8. MAKEOPTS="-j$(nproc)"
  9. USE="-X -gtk -gnome -kde -alsa -pulseaudio"
  10. EOF
  11. # 优化内核配置
  12. cd /usr/src/linux
  13. make menuconfig
  14. # 选择以下选项:
  15. # Processor type and features -> Timer frequency -> 1000 HZ
  16. # Power management and ACPI options -> CPU Idle -> CPU idle PM support
  17. # Device Drivers -> SCSI device support -> SCSI low-level drivers
  18. # 编译并安装内核
  19. make -j$(nproc) && make modules_install && make install
  20. # 优化文件系统挂载选项
  21. cat >> /etc/fstab << EOF
  22. # 数据库服务器优化
  23. /dev/sda1 / xfs noatime,nodiratime,defaults 0 1
  24. /dev/sdb1 /data xfs noatime,nodiratime,defaults 0 2
  25. EOF
  26. # 优化内存管理
  27. cat >> /etc/sysctl.d/99-sysctl.conf << EOF
  28. # 增加共享内存限制
  29. kernel.shmmax = 4294967296
  30. kernel.shmall = 4194304
  31. kernel.shmmni = 4096
  32. # 增加文件句柄限制
  33. fs.file-max = 65536
  34. # 优化虚拟内存管理
  35. vm.swappiness = 10
  36. vm.dirty_ratio = 10
  37. vm.dirty_background_ratio = 5
  38. EOF
  39. # 应用设置
  40. sysctl -p /etc/sysctl.d/99-sysctl.conf
  41. # 优化MariaDB配置
  42. cat > /etc/mysql/mariadb.d/50-server.cnf << EOF
  43. [mysqld]
  44. # 基本设置
  45. port = 3306
  46. socket = /var/run/mysqld/mysqld.sock
  47. pid-file = /var/run/mysqld/mysqld.pid
  48. basedir = /usr
  49. datadir = /var/lib/mysql
  50. tmpdir = /var/tmp
  51. skip-external-locking
  52. # 缓存设置
  53. key_buffer_size = 256M
  54. max_allowed_packet = 16M
  55. thread_stack = 192K
  56. thread_cache_size = 8
  57. myisam-recover-options = BACKUP
  58. query_cache_type = 1
  59. query_cache_limit = 2M
  60. query_cache_size = 128M
  61. # InnoDB设置
  62. innodb_buffer_pool_size = 2G
  63. innodb_log_file_size = 256M
  64. innodb_log_buffer_size = 8M
  65. innodb_flush_log_at_trx_commit = 2
  66. innodb_lock_wait_timeout = 50
  67. # 日志设置
  68. slow_query_log = 1
  69. slow_query_log_file = /var/log/mysql/mariadb-slow.log
  70. long_query_time = 2
  71. # 其他设置
  72. max_connections = 200
  73. open_files_limit = 65535
  74. EOF
  75. # 初始化数据库并启动服务
  76. emerge --config dev-db/mariadb
  77. rc-update add mariadb default
  78. /etc/init.d/mariadb start
复制代码

性能监控与调优工具

为了验证优化效果和监控系统性能,可以使用以下工具:
  1. # 安装性能监控工具
  2. emerge sys-process/htop sys-process/iotop sys-process/lsof sys-apps/dstat app-benchmarks/sysbench
  3. # 使用htop监控系统资源
  4. htop
  5. # 使用iotop监控磁盘I/O
  6. iotop
  7. # 使用dstat监控系统资源使用情况
  8. dstat -tcmndpy --top-cpu --top-io --top-mem
  9. # 使用sysbench进行性能测试
  10. sysbench cpu run
  11. sysbench memory run
  12. sysbench fileio prepare
  13. sysbench fileio run
  14. sysbench fileio cleanup
  15. # 使用vmstat监控系统虚拟内存统计信息
  16. vmstat 1
  17. # 使用iostat监控磁盘I/O统计信息
  18. emerge sys-apps/sysstat
  19. iostat -xz 1
  20. # 使用sar收集、报告和保存系统活动信息
  21. sar -u 1 5
复制代码

总结与最佳实践

通过本文的分享,我们可以看到Gentoo Linux系统优化是一个系统工程,需要从多个方面进行考虑和调整。以下是一些总结和最佳实践:

1. 了解你的硬件:优化应该基于你的硬件特性和使用需求。了解你的CPU、内存、磁盘等硬件特性是优化的基础。
2. 渐进式优化:一次只调整一个参数或设置,然后测试其效果。这样可以更容易地定位问题。
3. 记录变更:记录所有的优化变更,包括参数调整的原因和效果。这样在出现问题时可以快速恢复。
4. 性能测试:在优化前后进行性能测试,验证优化的效果。可以使用各种基准测试工具和实际应用测试。
5. 定期维护:系统优化不是一次性的工作,需要定期检查和调整,以适应不断变化的需求和环境。
6. 平衡性能与稳定性:在追求性能的同时,不要忽视系统的稳定性和安全性。过于激进的优化可能会导致系统不稳定。
7. 利用社区资源:Gentoo有一个活跃的社区,可以利用Wiki、论坛和邮件列表等资源获取帮助和建议。

了解你的硬件:优化应该基于你的硬件特性和使用需求。了解你的CPU、内存、磁盘等硬件特性是优化的基础。

渐进式优化:一次只调整一个参数或设置,然后测试其效果。这样可以更容易地定位问题。

记录变更:记录所有的优化变更,包括参数调整的原因和效果。这样在出现问题时可以快速恢复。

性能测试:在优化前后进行性能测试,验证优化的效果。可以使用各种基准测试工具和实际应用测试。

定期维护:系统优化不是一次性的工作,需要定期检查和调整,以适应不断变化的需求和环境。

平衡性能与稳定性:在追求性能的同时,不要忽视系统的稳定性和安全性。过于激进的优化可能会导致系统不稳定。

利用社区资源:Gentoo有一个活跃的社区,可以利用Wiki、论坛和邮件列表等资源获取帮助和建议。

通过遵循这些最佳实践,你可以充分发挥Gentoo Linux的潜力,打造一个高性能、稳定可靠的系统。无论是桌面环境还是服务器环境,无论是通用应用还是特定场景,都可以通过合理的优化获得显著的性能提升。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则