前言

成功安装 Linux 系统后,需要针对系统进行初始化设置,以确保安全性、稳定性和个性化。本文将详细介绍安装后应立即执行的几个关键步骤,助您快速上手并优化 Linux 环境。

本文主要以debian为例针对CPU、硬盘、内核等操作系统参数进行优化。

CPU

关闭cpu节能

随着CPU的发展,Intel出现了EIST技术,它可以动态的调整CPU的频率。当CPU使用率地下或者接近0时候,能降低CPU频率并且降压,从而降低功耗和发热。当检测到CPU使用率增高,它会马上回到原始工作频率,但是你必须考虑CPU被唤醒的时间,并且确保它会再次100%运行。这一系列的过程通常被称为“C-states”或“C-modes”,它是从C0开始的。

关闭CPU节能方式如下:

1
2
3
4
5
6
7
8
# 修改 grub 文件(注意备份) 
sudo vim /etc/default/grub

#在GRUB_CMDLINE_LINUX_DEFAULT 中添加参数
GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=0 intel_pstate=disable processor.max_cstate=1"

# 保存退出,更新grub
sudo update-grub
  • intel_idle.max_cstate=0

这个参数用于 Intel 平台,指定禁用 intel_idle 驱动,让系统退回使用通用的 acpi_idle 驱动。这样 acpi_idle 驱动会遵循 processor.max_cstate 参数的设置,从而限制 CPU 只能使用浅层 C-state(C1)。

  • intel_pstate=disable

禁用Intel处理器的动态频率调节驱动(P-state),改用传统ACPI cpufreq驱动管理CPU频率‌。

  • processor.max_cstate=1

限制Intel处理器的空闲状态最大为C1,禁止进入更深层节能状态(如C2/C3),减少唤醒延迟‌。与设置为processor.max_cstate=0等效

网卡

网络接口命名规则

1
2
3
4
5
# 修改 grub 文件(注意备份) 
sudo vim /etc/default/grub

#在GRUB_CMDLINE_LINUX_DEFAULT 中添加参数
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
  • net.ifnames=0

禁用可预测的网络接口命名(如ens33),恢复传统命名方式(如eth0)‌。

  • biosdevname=0

关闭基于BIOS设备名的网络接口命名规则(如em1),需与net.ifnames=0配合生效‌。

网络优化配置

1
2
3
4
5
6
7
8
# 查看当前队列
ethtool -l eth0

# 设置队列数量
sudo ethtool -L eth0 combined 8



硬盘

调度策略

1
2
3
4
5
6
# NVME设置调度策略为none
echo none | sudo tee /sys/block/nvme0n1/queue/scheduler

# 机械硬盘设置调度策略为deadline
echo deadline | sudo tee /sys/block/sda/queue/scheduler

  • mq-deadline

mq-deadline 调度程序将排队的 I/O 请求分为读取或写入批处理,然后调度它们以增加逻辑块寻址 (LBA) 顺序执行。默认情况下,读取批处理的优先级高于写入批处理,因为应用程序更有可能阻止读 I/O 操作。在 mq-deadline 批处理后,它会检查写操作在处理器时间耗尽的时间,并根据情况调度下一个读取或写入批处理。

这个调度程序适用于大多数用例,特别是那些写入操作是异步的。

  • none

所有进程的io请求都进入FIFO队列,完全按照队列的顺序进行io的读取,适合于ssd,因为io请求饥饿以及每次请求都需要寻道,ssd不存在传统hdd的寻道时间。

文件系统优化

1
2
# /etc/fstab 添加挂载参数
noatime,nodiratime
  • noatime: 不更新文件的最后访问时间,减少磁盘 I/O。
  • nodiratime: 不更新目录的访问时间,进一步减少磁盘 I/O。

参考链接:

  1. mq-deadline调度器原理及源码分析
  2. 微调 I/O 性能
  3. Linux 5.6 I/O Scheduler Benchmarks: None, Kyber, BFQ, MQ-Deadline