一、引言

嘿,各位 Linux 用户们!不知道你们有没有遇到过这样的情况,在使用 Linux 系统的时候,突然就感觉系统变得卡顿起来,响应速度慢得让人着急。其实啊,Linux 默认的系统性能并不是最优化的,很多时候需要我们手动去调整一些设置,才能让它发挥出最佳的性能。今天咱们就来好好聊聊如何对 Linux 默认系统性能进行优化,从而解决卡顿问题。

二、应用场景分析

2.1 日常办公场景

想象一下,你在 Linux 系统上使用办公软件,比如写文档、做表格,要是系统卡顿,那咱们的工作效率可就大大降低了。这时候优化系统性能,就能让办公软件运行得更加流畅,提高我们的工作效率。比如说,在使用 LibreOffice 处理文档的时候,如果系统性能不佳,可能会出现保存文件缓慢、输入文字卡顿等问题,优化后就能避免这些情况发生。

2.2 开发场景

对于程序员来说,Linux 是常用的开发环境。在开发过程中,我们可能会同时运行多个开发工具,像代码编辑器、调试器等。要是系统卡顿,代码编辑和调试的过程就会变得非常痛苦。举个例子,在使用 Visual Studio Code 编写 Python 代码时,系统卡顿可能会导致代码提示延迟、代码运行结果展示不及时等问题,优化系统性能可以让开发过程更加顺畅。

2.3 服务器场景

如果 Linux 系统作为服务器来使用,卡顿问题就更加严重了。当有大量用户访问服务器时,系统卡顿可能会导致服务响应缓慢甚至无法正常提供服务。比如,一个基于 Nginx 的 Web 服务器,如果系统性能不佳,用户访问网页时就会出现加载缓慢甚至无法打开的情况,这会严重影响用户体验。

三、技术优缺点分析

3.1 优点

3.1.1 提高系统运行效率

通过对 Linux 系统性能进行优化,我们可以让系统资源得到更合理的利用,从而提高系统的运行效率。例如,优化磁盘 I/O 性能后,文件读写速度会大大提升,这样在访问和处理文件时就会更快。

3.1.2 增强系统稳定性

优化系统性能可以减少系统出现卡顿和崩溃的概率,增强系统的稳定性。比如,合理分配内存资源可以避免系统因内存不足而出现死机的情况。

3.1.3 提升用户体验

无论是日常办公、开发还是服务器使用,优化后的系统性能都能让用户感受到更加流畅的操作体验,提高用户的满意度。

3.2 缺点

3.2.1 操作复杂度较高

对 Linux 系统性能进行优化需要一定的技术知识,对于一些新手来说可能会有一定的难度。比如,调整内核参数需要对 Linux 内核有一定的了解,否则可能会导致系统出现问题。

3.2.2 可能影响系统兼容性

在优化过程中,如果不小心修改了一些关键的配置,可能会导致系统与某些软件或硬件不兼容。例如,修改了网络配置参数后,可能会导致某些网络应用无法正常使用。

四、优化方法及示例(Shell 技术栈)

4.1 内存优化

4.1.1 调整 swappiness 参数

swappiness 参数决定了系统将内存数据交换到磁盘交换空间(swap)的倾向程度,取值范围是 0 - 100。值越高,系统越倾向于使用交换空间;值越低,系统越倾向于使用物理内存。我们可以通过修改 /etc/sysctl.conf 文件来调整这个参数。

# 打开 /etc/sysctl.conf 文件进行编辑
sudo nano /etc/sysctl.conf
# 在文件末尾添加或修改以下行
vm.swappiness = 10
# 保存并退出文件,然后使配置生效
sudo sysctl -p

注释:将 swappiness 设置为 10 可以减少系统使用交换空间的频率,提高系统性能。

4.1.2 关闭不必要的服务

有些服务在系统启动时会自动运行,但我们可能并不需要它们。通过关闭这些不必要的服务,可以释放内存资源。以关闭 crond 服务为例:

# 停止 crond 服务
sudo systemctl stop crond
# 禁止 crond 服务开机自启
sudo systemctl disable crond

注释:crond 是 Linux 系统中的定时任务服务,如果我们不需要定时任务功能,就可以关闭它来释放内存。

4.2 磁盘 I/O 优化

4.2.1 使用 noop 调度器

对于固态硬盘(SSD),使用 noop 调度器可以提高磁盘 I/O 性能。我们可以通过修改 /etc/default/grub 文件来设置调度器。

# 打开 /etc/default/grub 文件进行编辑
sudo nano /etc/default/grub
# 修改 GRUB_CMDLINE_LINUX 参数,添加 elevator=noop
GRUB_CMDLINE_LINUX="elevator=noop"
# 保存并退出文件,然后更新 grub 配置
sudo update-grub
# 重启系统使配置生效
sudo reboot

注释:noop 调度器是一种简单的调度器,适合 SSD 这种不需要进行复杂磁盘寻道操作的存储设备。

4.2.2 禁用磁盘挂载选项中的 relatime

在挂载磁盘时,默认的 relatime 选项会导致每次访问文件时都会更新文件的访问时间,这会增加磁盘 I/O 负担。我们可以通过修改 /etc/fstab 文件来禁用这个选项。

# 打开 /etc/fstab 文件进行编辑
sudo nano /etc/fstab
# 找到需要修改的磁盘挂载项,将 relatime 改为 noatime
# 例如,将 /dev/sda1 /mnt/data ext4 relatime 改为 /dev/sda1 /mnt/data ext4 noatime
# 保存并退出文件,然后重新挂载磁盘
sudo mount -o remount /mnt/data

注释:noatime 选项可以禁止更新文件的访问时间,从而减少磁盘 I/O 操作。

4.3 CPU 优化

4.3.1 调整 CPU 调度策略

我们可以使用 schedtool 工具来调整进程的 CPU 调度策略。以将某个进程的调度策略设置为实时调度策略为例:

# 安装 schedtool 工具
sudo apt-get install schedtool
# 找到需要调整的进程 ID(PID)
ps -ef | grep your_process_name
# 使用 schedtool 工具调整进程的调度策略
sudo schedtool -e -p -10 -t 0x80000000 your_pid

注释:-e 表示使用实时调度策略,-p -10 表示设置进程的优先级为 -10,-t 0x80000000 表示设置进程的 CPU 亲和性。

4.3.2 关闭不必要的 CPU 节能模式

有些系统默认开启了 CPU 节能模式,这会降低 CPU 的性能。我们可以通过修改 /etc/default/cpufrequtils 文件来关闭节能模式。

# 打开 /etc/default/cpufrequtils 文件进行编辑
sudo nano /etc/default/cpufrequtils
# 修改 GOVERNOR 参数为 performance
GOVERNOR="performance"
# 保存并退出文件,然后重启 cpufrequtils 服务
sudo systemctl restart cpufrequtils

注释:将 GOVERNOR 设置为 performance 可以让 CPU 始终以最高性能运行。

4.4 网络优化

4.4.1 调整 TCP 缓冲区大小

我们可以通过修改 /etc/sysctl.conf 文件来调整 TCP 缓冲区的大小。

# 打开 /etc/sysctl.conf 文件进行编辑
sudo nano /etc/sysctl.conf
# 添加或修改以下行
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 保存并退出文件,然后使配置生效
sudo sysctl -p

注释:tcp_rmem 和 tcp_wmem 分别表示 TCP 接收缓冲区和发送缓冲区的大小,通过增大缓冲区大小可以提高网络传输性能。

4.4.2 禁用 IPv6

如果我们不需要使用 IPv6,可以通过修改 /etc/sysctl.conf 文件来禁用它。

# 打开 /etc/sysctl.conf 文件进行编辑
sudo nano /etc/sysctl.conf
# 添加或修改以下行
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 保存并退出文件,然后使配置生效
sudo sysctl -p

注释:禁用 IPv6 可以减少系统的网络负载,提高网络性能。

五、注意事项

5.1 备份重要数据

在进行任何系统性能优化操作之前,一定要备份好重要的数据。因为有些优化操作可能会导致系统出现问题,甚至数据丢失。例如,在修改关键配置文件时,如果不小心改错了,可能会导致系统无法正常启动。

5.2 逐步进行优化

不要一次性进行太多的优化操作,建议逐步进行,每次只进行一项优化,然后观察系统的性能变化。如果出现问题,可以及时恢复到之前的状态。比如,先调整 swappiness 参数,观察系统的内存使用情况,等确认没有问题后再进行其他优化。

5.3 了解系统环境

在进行优化之前,需要了解自己的系统环境,包括硬件配置、软件安装情况等。不同的系统环境可能需要不同的优化方法。例如,对于配置较低的系统,可能需要更加注重内存和 CPU 的优化;而对于配置较高的系统,磁盘 I/O 和网络优化可能更为重要。

六、文章总结

通过对 Linux 默认系统性能进行优化,我们可以有效地解决系统卡顿问题,提高系统的运行效率和稳定性。在这个过程中,我们介绍了内存、磁盘 I/O、CPU 和网络等方面的优化方法,并给出了详细的示例。同时,我们也提到了优化过程中的注意事项,包括备份重要数据、逐步进行优化和了解系统环境等。希望大家在实际操作中能够根据自己的系统情况选择合适的优化方法,让 Linux 系统发挥出最佳的性能。