活动公告

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

Gentoo系统性能提升完全实用指南 掌握编译优化内核调优与服务配置技巧打造高效Linux运行环境

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

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

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

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

x
引言

Gentoo Linux以其高度的自定义性和优化潜力而闻名,是追求极致性能用户的理想选择。作为一款源码发行版,Gentoo允许用户从源代码编译整个系统,这意味着每一行代码都可以针对特定硬件进行优化。本指南将全面介绍如何通过各种技术手段提升Gentoo系统的性能,包括编译优化、内核调优和服务配置等方面,帮助您打造一个高效、稳定且个性化的Linux运行环境。

Gentoo系统基础

Gentoo Linux的核心是Portage包管理系统,它负责处理软件包的编译、安装和依赖关系。与二进制发行版不同,Gentoo用户可以精确控制每个软件包的编译选项,这为系统优化提供了无与伦比的灵活性。

Portage的主要配置文件位于/etc/portage/目录下,包括:

• make.conf:全局编译设置
• package.use:针对特定软件包的USE标志设置
• package.keywords:关键词设置(用于接受不稳定版本)
• package.mask/package.unmask:屏蔽或解除屏蔽特定版本

理解这些配置文件的作用是进行系统优化的第一步。

编译优化

USE标志优化

USE标志是Gentoo系统优化的核心,它们决定了软件包编译时包含哪些功能和依赖。合理设置USE标志可以显著减少系统资源占用,提高运行效率。

首先,检查系统当前的USE标志设置:
  1. emerge --info | grep USE
复制代码

编辑/etc/portage/make.conf文件,根据您的需求定制USE标志。例如,对于一个桌面系统,您可能需要:
  1. # /etc/portage/make.conf
  2. USE="X alsa bluetooth dbus gtk3 pulseaudio systemd -kde -gnome -qt5"
复制代码

对于服务器系统,则可能是:
  1. # /etc/portage/make.conf
  2. USE="-X -alsa -bluetooth -dbus -gtk3 -pulseaudio -systemd apache2 mysql php"
复制代码

您还可以为特定软件包设置USE标志。创建或编辑/etc/portage/package.use文件:
  1. # /etc/portage/package.use
  2. # 为Firefox启用硬件加速和Jack音频支持
  3. www-client/firefox hwaccel jack
  4. # 为Nginx启用HTTP/2和线程支持
  5. www-servers/nginx http2 threads
复制代码

CFLAGS/CXXFLAGS设置

CFLAGS和CXXFLAGS控制C和C++代码的编译选项,直接影响生成代码的性能。合理的设置可以显著提升系统性能。

在/etc/portage/make.conf中设置:
  1. # /etc/portage/make.conf
  2. # 通用优化设置
  3. CFLAGS="-O2 -pipe -march=native"
  4. CXXFLAGS="${CFLAGS}"
  5. # 更激进的优化(可能影响稳定性)
  6. # CFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -funroll-loops"
  7. # CXXFLAGS="${CFLAGS}"
复制代码

参数解释:

• -O2:标准优化级别,平衡性能和稳定性
• -O3:更激进的优化,可能提高性能但降低稳定性
• -pipe:使用管道而不是临时文件进行编译阶段间通信,加快编译速度
• -march=native:针对当前CPU架构进行优化
• -fomit-frame-pointer:省略帧指针,释放一个寄存器,可能影响调试
• -funroll-loops:展开循环,可能提高性能但增加二进制大小

要确定最适合您CPU的-march值,可以运行:
  1. gcc -march=native -Q --help=target | grep march
复制代码

MAKEOPTS配置

MAKEOPTS控制并行编译的进程数,合理设置可以大幅缩短编译时间。

在/etc/portage/make.conf中设置:
  1. # /etc/portage/make.conf
  2. # 通常设置为CPU核心数+1
  3. MAKEOPTS="-j5"
复制代码

要确定系统CPU核心数,可以运行:
  1. nproc
复制代码

针对特定CPU的优化

Gentoo允许您针对特定CPU架构进行深度优化。例如,对于Intel CPU,可以添加以下标志:
  1. # /etc/portage/make.conf
  2. # Intel CPU优化
  3. CFLAGS="-O2 -pipe -march=native -msse4.2 -mpopcnt -mavx -mavx2"
  4. CXXFLAGS="${CFLAGS}"
复制代码

对于AMD CPU:
  1. # /etc/portage/make.conf
  2. # AMD CPU优化
  3. CFLAGS="-O2 -pipe -march=native -msse4a -m3dnow -mavx -mavx2"
  4. CXXFLAGS="${CFLAGS}"
复制代码

编译时间与运行时性能的平衡

虽然激进的编译选项可以提高运行时性能,但也会增加编译时间和系统资源消耗。以下是一些平衡建议:

1. 对于关键性能软件(如数据库、Web服务器),使用更激进的优化
2. 对于不常用的软件,使用标准优化
3. 使用ccache缓存编译结果,加速重复编译

安装ccache:
  1. emerge --ask dev-util/ccache
复制代码

在/etc/portage/make.conf中启用:
  1. # /etc/portage/make.conf
  2. FEATURES="ccache"
  3. CCACHE_SIZE="5G"
复制代码

内核调优

内核配置优化

Gentoo允许用户完全自定义内核配置,这是系统优化的关键环节。使用genkernel或手动配置内核:
  1. # 安装内核源码
  2. emerge --ask sys-kernel/gentoo-sources
  3. # 进入源码目录
  4. cd /usr/src/linux
  5. # 使用make menuconfig进行图形化配置
  6. make menuconfig
复制代码

关键优化选项:

1. 处理器类型和特性:启用Processor family并选择您的CPU类型启用Preemption Model并选择Preemptible Kernel (Low-Latency Desktop)以获得更好的响应性启用Tickless System (Dynamic Ticks)以减少功耗
2. 启用Processor family并选择您的CPU类型
3. 启用Preemption Model并选择Preemptible Kernel (Low-Latency Desktop)以获得更好的响应性
4. 启用Tickless System (Dynamic Ticks)以减少功耗
5. 内存管理:启用Transparent Hugepage Support以提高大内存应用性能调整Kernel memory allocator,根据系统选择SLUB或SLAB
6. 启用Transparent Hugepage Support以提高大内存应用性能
7. 调整Kernel memory allocator,根据系统选择SLUB或SLAB
8. 文件系统:只启用您使用的文件系统支持,减少内核体积启用IO Schedulers并根据存储类型选择合适的调度器(SSD使用NOOP或Deadline,HDD使用CFQ或BFQ)
9. 只启用您使用的文件系统支持,减少内核体积
10. 启用IO Schedulers并根据存储类型选择合适的调度器(SSD使用NOOP或Deadline,HDD使用CFQ或BFQ)
11. 网络支持:启用TCP/IP networking根据需要启用高级网络功能如TCP advanced congestion control
12. 启用TCP/IP networking
13. 根据需要启用高级网络功能如TCP advanced congestion control

处理器类型和特性:

• 启用Processor family并选择您的CPU类型
• 启用Preemption Model并选择Preemptible Kernel (Low-Latency Desktop)以获得更好的响应性
• 启用Tickless System (Dynamic Ticks)以减少功耗

内存管理:

• 启用Transparent Hugepage Support以提高大内存应用性能
• 调整Kernel memory allocator,根据系统选择SLUB或SLAB

文件系统:

• 只启用您使用的文件系统支持,减少内核体积
• 启用IO Schedulers并根据存储类型选择合适的调度器(SSD使用NOOP或Deadline,HDD使用CFQ或BFQ)

网络支持:

• 启用TCP/IP networking
• 根据需要启用高级网络功能如TCP advanced congestion control

编译并安装内核:
  1. make && make modules_install
  2. make install
复制代码

内核参数调整

通过/etc/sysctl.conf文件调整内核运行时参数:
  1. # /etc/sysctl.conf
  2. # 虚拟内存管理
  3. vm.swappiness=10  # 减少交换倾向
  4. vm.vfs_cache_pressure=50  # 增加 inode/dentry 缓存
  5. vm.dirty_ratio=15  # 减少脏页比例
  6. vm.dirty_background_ratio=5  # 后台刷新脏页的比例
  7. # 网络参数优化
  8. net.core.rmem_max=16777216  # 最大接收套接字缓冲区
  9. net.core.wmem_max=16777216  # 最大发送套接字缓冲区
  10. net.ipv4.tcp_rmem="4096 87380 16777216"  # TCP接收缓冲区
  11. net.ipv4.tcp_wmem="4096 65536 16777216"  # TCP发送缓冲区
  12. net.ipv4.tcp_congestion_control=bbr  # 使用BBR拥塞控制算法
  13. net.core.netdev_max_backlog=5000  # 网络设备接收队列最大长度
  14. # 文件系统优化
  15. fs.file-max=2097152  # 增加文件描述符限制
复制代码

应用这些设置:
  1. sysctl -p
复制代码

实时内核补丁

对于需要低延迟的应用(如音频处理、实时控制系统),可以应用实时内核补丁:
  1. # 安装实时内核源码
  2. emerge --ask sys-kernel/rt-sources
  3. # 配置并编译实时内核
  4. cd /usr/src/linux-rt-*
  5. make menuconfig
  6. make && make modules_install
  7. make install
复制代码

在配置中,确保启用Preemption Model下的Fully Preemptible Kernel (RT)选项。

特定硬件的内核支持

针对特定硬件优化内核配置:

1.
  1. NVMe SSD优化:Device Drivers --->
  2. NVME Support --->
  3.    [*] NVMe block driver
  4.    [*] NVMe multipath support
  5.    [*] NVMe hardware monitoring
复制代码
2.
  1. 网络硬件优化:Device Drivers --->
  2. Network device support --->
  3.    [*] Ethernet driver support
  4.    [*] Intel(R) PRO/1000 Gigabit Ethernet support
  5.    [*] Realtek 8169 gigabit ethernet support
复制代码
3.
  1. 图形硬件优化:Device Drivers --->
  2. Graphics support --->
  3.    [*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
  4.    [*] Intel 8xx/9xx/G3x/G4x/HD Graphics
  5.    [*] Nouveau (NVIDIA) cards
  6.    [*] ATI Radeon
复制代码

NVMe SSD优化:
  1. Device Drivers --->
  2. NVME Support --->
  3.    [*] NVMe block driver
  4.    [*] NVMe multipath support
  5.    [*] NVMe hardware monitoring
复制代码

网络硬件优化:
  1. Device Drivers --->
  2. Network device support --->
  3.    [*] Ethernet driver support
  4.    [*] Intel(R) PRO/1000 Gigabit Ethernet support
  5.    [*] Realtek 8169 gigabit ethernet support
复制代码

图形硬件优化:
  1. Device Drivers --->
  2. Graphics support --->
  3.    [*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
  4.    [*] Intel 8xx/9xx/G3x/G4x/HD Graphics
  5.    [*] Nouveau (NVIDIA) cards
  6.    [*] ATI Radeon
复制代码

服务配置

OpenRC优化

Gentoo默认使用OpenRC作为初始化系统,优化OpenRC可以提高系统启动速度和运行效率。

编辑/etc/rc.conf:
  1. # /etc/rc.conf
  2. # 并行启动服务
  3. rc_parallel="YES"
  4. # 热插拔服务管理
  5. rc_hotplug="YES"
  6. # 服务超时设置
  7. rc_start_wait=100
  8. rc_default_timeout=60
  9. # 减少启动信息
  10. rc_logger="NO"
复制代码

服务依赖管理

合理管理服务依赖关系可以避免不必要的等待,提高启动效率。

查看服务依赖:
  1. rc-update show
复制代码

调整服务依赖,编辑/etc/conf.d/<service>文件。例如,对于/etc/conf.d/nginx:
  1. # /etc/conf.d/nginx
  2. # 指定nginx需要网络和dns服务
  3. rc_need="net dns"
复制代码

启动项精简

减少不必要的服务启动可以释放系统资源,提高性能。

查看当前运行的服务:
  1. rc-status
复制代码

移除不必要的服务:
  1. rc-update del <service> <runlevel>
复制代码

例如,移除蓝牙服务:
  1. rc-update del bluetooth default
复制代码

系统守护进程配置

优化关键系统守护进程的配置:

1. syslog-ng配置:
编辑/etc/syslog-ng/syslog-ng.conf:
“`bash/etc/syslog-ng/syslog-ng.conf

syslog-ng配置:
编辑/etc/syslog-ng/syslog-ng.conf:
“`bash

options {
  1. chain_hostnames(off);
  2.    flush_lines(0);
  3.    use_dns(no);
  4.    use_fqdn(no);
  5.    owner("root");
  6.    group("adm");
  7.    perm(0640);
  8.    stats_freq(0);
  9.    bad_hostname("^gconfd$");
复制代码

};
  1. 2. **cronie配置**:
  2.    编辑`/etc/conf.d/cronie`:
  3.    ```bash
  4.    # /etc/conf.d/cronie
  5.    
  6.    # 减少cron活动频率
  7.    CRON_OPTS="-s"
复制代码

1. ssh配置:
编辑/etc/ssh/sshd_config:
“`bash/etc/ssh/sshd_config

ssh配置:
编辑/etc/ssh/sshd_config:
“`bash

# 禁用DNS反向解析
   UseDNS no

# 提高连接速度
   GSSAPIAuthentication no
  1. ## 文件系统优化
  2. ### 选择合适的文件系统
  3. Gentoo支持多种文件系统,选择合适的文件系统对性能至关重要:
  4. 1. **ext4**:稳定可靠,适合大多数用途
  5. 2. **btrfs**:高级功能如快照、压缩,适合现代系统
  6. 3. **xfs**:高性能,适合大文件和大容量存储
  7. 4. **f2fs**:专为闪存设备设计,适合SSD和eMMC
  8. 创建文件系统时的优化选项:
  9. ```bash
  10. # ext4优化
  11. mkfs.ext4 -L root /dev/sda1 -E stride=128,stripe-width=256
  12. # btrfs优化
  13. mkfs.btrfs -L root /dev/sda1 -d single -m single
  14. # xfs优化
  15. mkfs.xfs -L root /dev/sda1 -l size=128m
  16. # f2fs优化
  17. mkfs.f2fs -l root /dev/sda1 -O extra_attr,inode_checksum,sb_checksum,compression
复制代码

挂载选项优化

编辑/etc/fstab文件,添加优化的挂载选项:
  1. # /etc/fstab
  2. # ext4优化
  3. /dev/sda1   /   ext4    noatime,nodiratime,data=writeback,barrier=0,commit=60    0 1
  4. # btrfs优化
  5. /dev/sda2   /home   btrfs    noatime,nodiratime,compress=lzo,ssd,discard    0 2
  6. # xfs优化
  7. /dev/sda3   /data   xfs    noatime,nodiratime,logbufs=8,logbsize=256k    0 2
  8. # f2fs优化
  9. /dev/sdb1   /mnt/ssd   f2fs    noatime,nodiratime,background_gc=on,discard    0 2
复制代码

参数解释:

• noatime/nodiratime:不更新访问时间,减少磁盘写入
• data=writeback:提高写入性能,但可能增加数据丢失风险
• barrier=0:禁用写入屏障,提高性能但降低安全性
• commit=60:每60秒提交一次数据,减少磁盘活动
• compress=lzo:使用lzo压缩算法
• ssd:启用SSD优化
• discard:启用TRIM支持

I/O调度器调整

根据存储类型选择合适的I/O调度器:
  1. # 查看当前调度器
  2. cat /sys/block/sda/queue/scheduler
  3. # 临时更改调度器
  4. echo noop > /sys/block/sda/queue/scheduler
  5. # 永久更改调度器(通过udev规则)
  6. echo 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"' > /etc/udev/rules.d/60-io-scheduler.rules
  7. echo 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"' >> /etc/udev/rules.d/60-io-scheduler.rules
复制代码

调度器选择建议:

• SSD:noop或deadline
• HDD:bfq或cfq
• 混合使用:mq-deadline

内存管理优化

交换空间配置

合理配置交换空间可以提高系统性能:
  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. # 调整交换参数
  9. sysctl vm.swappiness=10
  10. echo 'vm.swappiness=10' >> /etc/sysctl.conf
复制代码

对于SSD,可以启用交换压缩:
  1. # 安装zram-generator
  2. emerge --ask sys-apps/zram-generator
  3. # 配置zram
  4. echo '[zram0]' > /etc/systemd/zram-generator.conf
  5. echo 'compression-algorithm = lz4' >> /etc/systemd/zram-generator.conf
  6. echo 'zram-size = 4096' >> /etc/systemd/zram-generator.conf
  7. # 启用zram
  8. systemctl enable systemd-zram-setup@zram0.service
  9. systemctl start systemd-zram-setup@zram0.service
复制代码

内存分配策略

调整内存分配策略以优化性能:
  1. # /etc/sysctl.conf
  2. # 增加内存映射区域限制
  3. vm.max_map_count=262144
  4. # 优化内存脏页处理
  5. vm.dirty_ratio=15
  6. vm.dirty_background_ratio=5
  7. vm.dirty_expire_centisecs=500
  8. vm.dirty_writeback_centisecs=100
  9. # 优化 slab 分配器
  10. vm.vfs_cache_pressure=50
复制代码

内核内存管理参数

优化内核内存管理参数:
  1. # /etc/sysctl.conf
  2. # 启用透明大页
  3. vm.nr_hugepages=1024
  4. vm.nr_overcommit_hugepages=2048
  5. # 优化内存 overcommit
  6. vm.overcommit_memory=2
  7. vm.overcommit_ratio=80
  8. # 优化 OOM killer 行为
  9. vm.panic_on_oom=0
  10. vm.oom_kill_allocating_task=1
复制代码

网络性能优化

网络参数调整

优化网络参数以提高吞吐量和减少延迟:
  1. # /etc/sysctl.conf
  2. # 增加网络缓冲区大小
  3. net.core.rmem_max=16777216
  4. net.core.wmem_max=16777216
  5. net.ipv4.tcp_rmem="4096 87380 16777216"
  6. net.ipv4.tcp_wmem="4096 65536 16777216"
  7. # 优化 TCP 连接
  8. net.ipv4.tcp_fin_timeout=10
  9. net.ipv4.tcp_tw_reuse=1
  10. net.ipv4.tcp_max_syn_backlog=65536
  11. net.core.netdev_max_backlog=65536
  12. net.ipv4.tcp_max_tw_buckets=400000
  13. net.ipv4.tcp_no_metrics_save=1
  14. net.ipv4.tcp_moderate_rcvbuf=1
  15. # 启用 BBR 拥塞控制算法
  16. net.ipv4.tcp_congestion_control=bbr
  17. net.core.default_qdisc=fq
复制代码

网络栈优化

优化网络栈以提高性能:
  1. # /etc/sysctl.conf
  2. # 禁用 TCP slow start after idle
  3. net.ipv4.tcp_slow_start_after_idle=0
  4. # 启用 TCP fast open
  5. net.ipv4.tcp_fastopen=3
  6. # 优化 TCP 窗口缩放
  7. net.ipv4.tcp_window_scaling=1
  8. # 优化 TCP 重传
  9. net.ipv4.tcp_retries2=5
  10. net.ipv4.tcp_orphan_retries=3
  11. # 启用 ECN (Explicit Congestion Notification)
  12. net.ipv4.tcp_ecn=1
复制代码

高级网络配置

对于高级网络需求,如高性能服务器或网络密集型应用:
  1. # 安装网络优化工具
  2. emerge --ask sys-apps/ethtool net-misc/wireguard-tools
  3. # 优化网络接口
  4. ethtool -G eth0 rx 4096 tx 4096
  5. ethtool -K eth0 tso off gso off gro off
  6. # 配置 WireGuard VPN
  7. wg genkey | tee privatekey | wg pubkey > publickey
  8. # 创建 WireGuard 配置
  9. cat > /etc/wireguard/wg0.conf << EOF
  10. [Interface]
  11. PrivateKey = $(cat privatekey)
  12. Address = 10.0.0.1/24
  13. ListenPort = 51820
  14. [Peer]
  15. PublicKey = $(cat publickey)
  16. AllowedIPs = 10.0.0.2/32
  17. EOF
  18. # 启用 WireGuard
  19. wg-quick up wg0
复制代码

安全性与性能的平衡

在追求性能的同时,不应忽视系统安全。以下是一些平衡安全性和性能的建议:

1. 使用SELinux或AppArmor:
“`bash安装SELinuxemerge –ask sys-apps/policycoreutils selinux-base-policy

使用SELinux或AppArmor:
“`bash

emerge –ask sys-apps/policycoreutils selinux-base-policy

# 启用SELinux
   selinux-activate
  1. 2. **配置防火墙**:
  2.    ```bash
  3.    # 安装并配置nftables
  4.    emerge --ask net-firewall/nftables
  5.    
  6.    # 创建基本防火墙规则
  7.    nft add table inet filter
  8.    nft add chain inet filter input { type filter hook input priority 0\; }
  9.    nft add chain inet filter forward { type filter hook forward priority 0\; }
  10.    nft add chain inet filter output { type filter hook output priority 0\; }
  11.    
  12.    # 允许已建立的连接和本地回环
  13.    nft add rule inet filter input ct state established,related accept
  14.    nft add rule inet filter input iifname lo accept
  15.    
  16.    # 允许SSH连接
  17.    nft add rule inet filter input tcp dport 22 accept
  18.    
  19.    # 拒绝其他连接
  20.    nft add rule inet filter input counter drop
  21.    
  22.    # 保存规则
  23.    nft list ruleset > /etc/nftables.conf
复制代码

1. 配置fail2ban防止暴力破解:
“`bash安装fail2banemerge –ask net-analyzer/fail2ban

配置fail2ban防止暴力破解:
“`bash

emerge –ask net-analyzer/fail2ban

# 配置fail2ban
   cat > /etc/fail2ban/jail.local << EOF
   [DEFAULT]
   bantime = 1h
   findtime = 10m
   maxretry = 3

[sshd]
   enabled = true
   port = ssh
   filter = sshd
   logpath = /var/log/auth.log
   maxretry = 3
   EOF

# 启动fail2ban
   rc-update add fail2ban default
   rc-service fail2ban start
  1. ## 监测与基准测试
  2. 为了评估优化效果,需要使用适当的工具进行监测和基准测试:
  3. 1. **系统监测工具**:
  4.    ```bash
  5.    # 安装监测工具
  6.    emerge --ask sys-process/htop sys-process/iotop app-admin/sysstat sys-process/procps
  7.    
  8.    # 使用htop监测系统资源
  9.    htop
  10.    
  11.    # 使用iotop监测I/O使用情况
  12.    iotop
  13.    
  14.    # 使用vmstat监测虚拟内存统计
  15.    vmstat 1
  16.    
  17.    # 使用sar收集系统活动报告
  18.    sar -u 1 5
复制代码

1. 性能基准测试:
“`bash安装基准测试工具emerge –ask app-benchmarks/sysbench app-benchmarks/iozone app-benchmarks/phoronix-test-suite

性能基准测试:
“`bash

emerge –ask app-benchmarks/sysbench app-benchmarks/iozone app-benchmarks/phoronix-test-suite

# CPU基准测试
   sysbench cpu –cpu-max-prime=20000 run

# 内存基准测试
   sysbench memory –memory-block-size=1K –memory-total-size=10G run

# 磁盘I/O基准测试
   sysbench fileio –file-total-size=1G –file-test-mode=rndrw prepare
   sysbench fileio –file-total-size=1G –file-test-mode=rndrw run
   sysbench fileio –file-total-size=1G –file-test-mode=rndrw cleanup

# 文件系统基准测试
   iozone -e -I -a -s 1G -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2

# 使用Phoronix测试套件
   phoronix-test-suite benchmark pts/system
  1. 3. **网络性能测试**:
  2.    ```bash
  3.    # 安装网络测试工具
  4.    emerge --ask net-analyzer/iperf3 net-analyzer/netperf
  5.    
  6.    # 启动iperf3服务器
  7.    iperf3 -s
  8.    
  9.    # 从客户端测试网络性能
  10.    iperf3 -c <server_ip>
  11.    
  12.    # 使用netperf进行更详细的网络测试
  13.    netserver
  14.    netperf -H <server_ip> -t TCP_STREAM
复制代码

实际案例与最佳实践

案例一:Web服务器优化

针对运行Nginx和PHP-FPM的Web服务器:
  1. # 安装必要的软件包
  2. emerge --ask www-servers/nginx www-servers/php-fpm
  3. # 优化Nginx配置
  4. cat > /etc/nginx/nginx.conf << EOF
  5. user nginx;
  6. worker_processes auto;
  7. worker_rlimit_nofile 65535;
  8. pid /run/nginx.pid;
  9. events {
  10.     worker_connections 4096;
  11.     multi_accept on;
  12.     use epoll;
  13. }
  14. http {
  15.     sendfile on;
  16.     tcp_nopush on;
  17.     tcp_nodelay on;
  18.     keepalive_timeout 30;
  19.     keepalive_requests 100000;
  20.     reset_timedout_connection on;
  21.     client_body_timeout 10;
  22.     send_timeout 2;
  23.    
  24.     open_file_cache max=200000 inactive=20s;
  25.     open_file_cache_valid 30s;
  26.     open_file_cache_min_uses 2;
  27.     open_file_cache_errors on;
  28.    
  29.     include /etc/nginx/mime.types;
  30.     default_type application/octet-stream;
  31.    
  32.     access_log off;
  33.     error_log /var/log/nginx/error.log crit;
  34.    
  35.     gzip on;
  36.     gzip_disable "msie6";
  37.     gzip_vary on;
  38.     gzip_proxied any;
  39.     gzip_comp_level 6;
  40.     gzip_buffers 16 8k;
  41.     gzip_http_version 1.1;
  42.     gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  43.    
  44.     include /etc/nginx/conf.d/*.conf;
  45. }
  46. EOF
  47. # 优化PHP-FPM配置
  48. cat > /etc/php/fpm-php7.4/php.ini << EOF
  49. memory_limit = 128M
  50. max_execution_time = 30
  51. max_input_time = 60
  52. realpath_cache_size = 32K
  53. realpath_cache_ttl = 120
  54. EOF
  55. cat > /etc/php/fpm-php7.4/php-fpm.conf << EOF
  56. [global]
  57. pid = /run/php-fpm.pid
  58. error_log = /var/log/php-fpm.log
  59. log_level = warning
  60. emergency_restart_threshold = 10
  61. emergency_restart_interval = 1m
  62. process_control_timeout = 10s
  63. [www]
  64. listen = /run/php-fpm.sock
  65. listen.backlog = 65535
  66. listen.owner = nginx
  67. listen.group = nginx
  68. listen.mode = 0660
  69. user = nginx
  70. group = nginx
  71. pm = dynamic
  72. pm.max_children = 50
  73. pm.start_servers = 5
  74. pm.min_spare_servers = 5
  75. pm.max_spare_servers = 35
  76. pm.max_requests = 1000
  77. pm.process_idle_timeout = 10s
  78. EOF
  79. # 启动服务
  80. rc-update add nginx default
  81. rc-update add php-fpm default
  82. rc-service nginx start
  83. rc-service php-fpm start
复制代码

案例二:数据库服务器优化

针对运行PostgreSQL的数据库服务器:
  1. # 安装PostgreSQL
  2. emerge --ask dev-db/postgresql
  3. # 初始化数据库
  4. emerge --config =dev-db/postgresql-*
  5. # 优化PostgreSQL配置
  6. cat > /etc/postgresql-12/postgresql.conf << EOF
  7. listen_addresses = '*'
  8. port = 5432
  9. max_connections = 100
  10. shared_buffers = 4GB
  11. effective_cache_size = 12GB
  12. maintenance_work_mem = 1GB
  13. checkpoint_completion_target = 0.9
  14. wal_buffers = 16MB
  15. default_statistics_target = 100
  16. random_page_cost = 1.1
  17. effective_io_concurrency = 200
  18. work_mem = 16MB
  19. min_wal_size = 4GB
  20. max_wal_size = 16GB
  21. max_worker_processes = 8
  22. max_parallel_workers_per_gather = 4
  23. max_parallel_workers = 8
  24. max_parallel_maintenance_workers = 4
  25. EOF
  26. # 优化系统参数
  27. cat >> /etc/sysctl.conf << EOF
  28. # PostgreSQL优化
  29. kernel.shmmax = 4294967296
  30. kernel.shmall = 1073741824
  31. kernel.shmmni = 4096
  32. kernel.sem = 5010 641280 5010 128
  33. vm.swappiness = 1
  34. vm.dirty_ratio = 2
  35. vm.dirty_background_ratio = 1
  36. EOF
  37. sysctl -p
  38. # 启动PostgreSQL
  39. rc-update add postgresql-12 default
  40. rc-service postgresql-12 start
复制代码

案例三:桌面系统优化

针对Gentoo桌面系统的优化:
  1. # 安装必要的软件包
  2. emerge --ask x11-base/xorg-server x11-wm/i3 app-editors/vim-gui www-client/firefox sys-power/acpid sys-power/powertop
  3. # 优化Xorg配置
  4. cat > /etc/X11/xorg.conf.d/20-performance.conf << EOF
  5. Section "Device"
  6.     Identifier "Intel Graphics"
  7.     Driver "intel"
  8.     Option "TearFree" "true"
  9.     Option "AccelMethod" "sna"
  10.     Option "DRI" "3"
  11. EndSection
  12. Section "ServerFlags"
  13.     Option "AutoAddGPU" "false"
  14. EndSection
  15. EOF
  16. # 优化i3窗口管理器配置
  17. mkdir -p ~/.i3
  18. cat > ~/.i3/config << EOF
  19. # i3 config file (v4)
  20. # 设置修饰键
  21. set $mod Mod4
  22. # 字体
  23. font pango:DejaVu Sans Mono 8
  24. # 浮动修改键
  25. floating_modifier $mod
  26. # 启动终端
  27. bindsym $mod+Return exec i3-sensible-terminal
  28. # 杀死窗口
  29. bindsym $mod+Shift+q kill
  30. # 启动程序
  31. bindsym $mod+d exec dmenu_run
  32. # 更改焦点
  33. bindsym $mod+j focus left
  34. bindsym $mod+k focus down
  35. bindsym $mod+l focus up
  36. bindsym $mod+semicolon focus right
  37. # 移动窗口
  38. bindsym $mod+Shift+j move left
  39. bindsym $mod+Shift+k move down
  40. bindsym $mod+Shift+l move up
  41. bindsym $mod+Shift+semicolon move right
  42. # 分割窗口
  43. bindsym $mod+h split h
  44. bindsym $mod+v split v
  45. # 全屏
  46. bindsym $mod+f fullscreen toggle
  47. # 布局切换
  48. bindsym $mod+s layout stacking
  49. bindsym $mod+w layout tabbed
  50. bindsym $mod+e layout toggle split
  51. # 浮动切换
  52. bindsym $mod+Shift+space floating toggle
  53. # 焦点切换
  54. bindsym $mod+space focus mode_toggle
  55. # 重启i3
  56. bindsym $mod+Shift+r restart
  57. # 退出i3
  58. bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
  59. # 调整窗口大小
  60. mode "resize" {
  61.     bindsym j resize shrink width 10 px or 10 ppt
  62.     bindsym k resize grow height 10 px or 10 ppt
  63.     bindsym l resize shrink height 10 px or 10 ppt
  64.     bindsym semicolon resize grow width 10 px or 10 ppt
  65.     bindsym Return mode "default"
  66.     bindsym Escape mode "default"
  67.     bindsym $mod+r mode "default"
  68. }
  69. bindsym $mod+r mode "resize"
  70. # 启动栏
  71. bar {
  72.     status_command i3status
  73. }
  74. EOF
  75. # 优化电源管理
  76. cat > /etc/conf.d/acpid << EOF
  77. ACPID_ARGS=""
  78. EOF
  79. rc-update add acpid default
  80. rc-service acpid start
  81. # 优化CPU频率调节
  82. emerge --ask sys-power/cpupower
  83. cat > /etc/conf.d/cpupower << EOF
  84. CONFIG_FILE="${CONFIG_FILE:-/etc/conf.d/cpufrequtils}"
  85. DRIVER="${DRIVER:-intel_pstate}"
  86. GOVERNOR="${GOVERNOR:-performance}"
  87. MAX_FREQ="${MAX_FREQ:-0}"
  88. MIN_FREQ="${MIN_FREQ:-0}"
  89. EOF
  90. rc-update add cpupower default
  91. rc-service cpupower start
  92. # 优化系统启动
  93. emerge --ask sys-apps/systemd
  94. systemctl enable fstrim.timer
  95. systemctl start fstrim.timer
复制代码

结论

Gentoo Linux提供了无与伦比的系统优化潜力,通过合理的编译优化、内核调优和服务配置,可以打造一个高效、稳定且个性化的Linux运行环境。本指南涵盖了从基础配置到高级优化的各个方面,帮助您充分发挥Gentoo系统的性能优势。

需要注意的是,系统优化是一个持续的过程,需要根据实际使用场景不断调整和改进。通过监测工具和基准测试,您可以评估优化效果,并进一步调整配置以达到最佳性能。

最重要的是,在追求性能的同时,不要忽视系统的稳定性和安全性。合理的优化应该是在这三者之间找到平衡点,根据您的具体需求做出适当的取舍。

希望本指南能够帮助您打造一个高效、稳定且个性化的Gentoo Linux系统,充分发挥硬件潜力,提升工作效率和使用体验。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则