Linux 桌面性能瓶颈优化

Linux 桌面性能瓶颈优化

我表示已经放弃了 Ubuntu,转向了流弊一批的 Arch。

遂将曾经使用 Ubuntu 的经验记录下来,并分享出去。

当然此文并不限于 Ubuntu Desktop。

0x00 SSD 硬盘

分区对齐

关于如今的固态硬盘,已不再需要手动分区对齐。因为目前主流 Linux 系统都已自动对齐文件系统和分区【页面大小4096字节】。

优化原则

由于频繁写操作会磨损固态硬盘,所以对于其优化原则就是:【尽量减少写操作】。

文件系统类型

而对于文件系统类型,墙裂推荐【EXT4】,EXT4 文件系统的日志会对硬盘多产生一些写操作,但不会太多;不建议关闭所有日志,因为日志对于恢复系统的崩溃较为重要。

禁用写操作

时间戳

操作系统在对于文件读取时,同时还会对文件的时间戳进行一个写操作;而这个写操作的意义是非常小,所以建议关闭。

编辑分区表,为你的根分区Home 分区 都增加 noatime 选项。

1
$ sudo vim /etc/fstab

如下,由于我并没有将 Home 分区单独分出来,所有仅在 / 分区的 options 位置添加了 noatime

1
2
3
4
5
6
7
8
9
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda1
UUID=4a7fcb3e-fdcc-4c03-9ee3-de3c5ds3da30 / ext4 noatime,rw,relatime 0 1

# /dev/sda2
UUID=F06E-6942 /boot/EFI vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2

# /dev/sda3
UUID=c9e9e9d5-cde4-4ab4-adf9-027d56384e10 none swap defaults 0 0

禁用休眠

计算机休眠挂起会导致磁盘会导致大量的写操作,好在 Ubuntu 默认关闭,请不要开启。

碎片整理

许多从 Windows 上转移到 Linux的同学可能会思考关于磁盘碎片整理的问题。而 Linux 下不必要进行碎片整理,非但不必要,而且还得避免碎片整理。碎片整理会导致大量的写操作,对 SSD 是致命的伤害。由于 Linux 系统的特性,不同于 Windows,也没必要进行碎片整理。

TRIM 定期清理磁盘

Ubuntu 默认已经安装 TRIM,可通过一下命令查看是否支持。

1
2
3
$ sudo hdparm -I /dev/sda | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM

查看服务状态:

1
2
3
4
5
$ sudo systemctl status fstrim.service
● fstrim.service - Discard unused blocks on filesystems from /etc/fstab
Loaded: loaded (/usr/lib/systemd/system/fstrim.service; static; vendor preset: disabled)
Active: inactive (dead)
Docs: man:fstrim(8)

可看到此服务是关闭状态;因为默认一周清理一次,没必要时时对硬盘进行清理。

指定根分区节点,手动清理:

1
$ sudo fstrim -v /

自定义每日清理:

1
2
$ sudo mkdir -v /etc/systemd/system/fstrim.timer.d
$ sudo vim /etc/systemd/system/fstrim.timer.d/override.conf

添加如下几行:

1
2
3
[Timer]
OnCalendar=
OnCalendar=daily

硬盘缓存

所谓缓存,其本质上就是一块内存空间;缓存机制会在 CPU 读取硬盘数据之前,提前将数据放入缓存之中;CPU 需要读取数据时,从而可以从缓存之中读取数据,进而从整体上提高系统的运行效率。此处缓存所指写缓存

程序在运行中,会等待数据在写入到硬盘之后才会进行下一步操作。因为数据如果不写入至硬盘,还停留在内存中,一旦断电内存中的数据就会丢失。Ubuntu 默认没有开启写缓存;而对于有电源的笔记本,这是不必要的。所以建议笔记本 Linux 用户开启写缓存。PC 台式机谨慎!!!

打开 【Disks】工具,先在左侧选择你的磁盘,然后点击右上角。找到【Drive Setting】开启【Enable Write Cache

Enable Write Cache

0x01 CPU

安装微码

介于 CPU 的完全,建议安装微码安全补丁。安装之后也会对 CPU 的性能有小的提升。

Intel

1
$ sudo apt install intel-microcode

AMD

1
$ sudo apt install amd64-microcode

温度监视

安装一个温度监视器。

1
$ sudo apt install lm-sensors

查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ sensors 
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +32.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +30.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +30.0°C (high = +100.0°C, crit = +100.0°C)

acpitz-acpi-0
Adapter: ACPI interface
temp1: +32.0°C (crit = +103.0°C)

nouveau-pci-0100
Adapter: PCI adapter
GPU core: +0.60 V (min = +0.60 V, max = +1.20 V)

iwlwifi-virtual-0
Adapter: Virtual device
temp1: +27.0°C

pch_skylake-virtual-0
Adapter: Virtual device
temp1: +27.5°C

0x02 内存优化

限制 inode 缓存

其实我也不太懂这是啥,便从维基上抄了下面这句话。顺便吐槽一句,几天前,伟大的天朝将中立的维基百科已【全面封锁】;早在此前,仅是中文页面被封锁。下一个会不会是 Github 呢!!!

inode是指在许多“类Unix文件系统”中的一种数据结构。每个inode保存了文件系统中的一个文件系统对象(包括文件目录)、设备文件socket管道), 等等)的元信息数据,但不包括数据内容或者文件名[1]

还是建议内存大一点的限制 inode 缓存,多大呢?大于4G吧。

这样做的代价就是,某些系统项将在内存中保留更长的时间。好处就是使计算机速度有明显的提升。

1
$ sudo vim /etc/sysctl.conf

添加如下配置至尾行:

1
vm.vfs_cache_pressure=50

Tmp 放入内存

Tmp 目录用于存放一些中间临时数据的目录,但是其位于硬盘,如果将其放入内存(Tmpfs)中,这将大大提高一些数据读写的效率。还是建议内存大于8G的这么做。

1
2
$ sudo cp -v /usr/share/systemd/tmp.mount /etc/systemd/system/
$ sudo systemctl enable tmp.mount

重启生效,查看状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ systemctl status tmp.mount 
● tmp.mount - /tmp
Loaded: loaded (/etc/fstab; generated)
Active: active (mounted) since Sat 2019-04-27 10:57:47 CST; 1h 20min ago
Where: /tmp
What: tmpfs
Docs: man:fstab(5)
man:systemd-fstab-generator(8)
Tasks: 0 (limit: 4915)
Memory: 32.0K
CGroup: /system.slice/tmp.mount

Apr 27 10:57:47 4rch systemd[1]: Mounting /tmp...
Apr 27 10:57:47 4rch systemd[1]: Mounted /tmp.

如何取消呢?只需将此文件删除即可。

1
$ sudo rm -v /etc/systemd/system/tmp.mount

0x03 SWAP 分区

由于内存的有限,所有当运行一个很大的程序时,系统会将一部分内存交换至 swap 交换分区中; swap 分区即为硬盘,与内存相比较,在速度上是有很大的差距的。

而且 Ubuntu 默认当还剩60%内存时就开始将一部分内存交换至 swap 分区中。

1
2
$ cat /proc/sys/vm/swappiness 
60

修改 swappiness 参数。

1
$ sudo vim /etc/sysctl.conf

添加以下参数至以上配置文件的尾行。这个数值只是一个百分百,可以按照自己的需求自定义。

1
vm.swappiness=10

0x04 显示撕裂

在正确安装 NVIDIA 显卡驱动之后,依旧有时候会出现窗口撕裂的现象。(AMD 貌似没有这回事)

这时就需要编辑 grub 配置文件来解决。

1
$ sudo vim /etc/default/grub

修改以下一行配置:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

quiet 后增加 nvidia-drm.modeset=1,如下。

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1"

然后更新 grub,重启生效。

1
$ update-grub && reboot

验证:

1
2
3
$ xrandr --verbose | grep PRIME
PRIME Synchronization:1
PRIME Synchronization:1

0x05 启动项优化

Linux 下很多启动(开机自启)项默认都是隐藏状态;使用一条替换命令,显示所有启动项。

1
$ sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop

然后打开 Startup Applications,按照个人需求自定义关闭不需要的启动项。

0x06 浏览器优化

限制 Firefox 写操作

将 Firefox 网络缓存放入内存中,可提高运行速度;当然内存太小不建议这样操作。

首先打开 Firefox,在浏览器地址栏输入:

1
about:config

回车,点击I accept the risk

搜索 browser.cache.disk.enable,双击将 Valuetrue变为false

再次搜索browser.cache.memory.enable,将 Value 变为true

再然后右击,点击New,选择Integer,输入browser.cache.memory.capacity,点击 OK,输入值204800

禁用 Firefox sessionstore

由于恢复 Firefox 意外崩溃的回话会导致大量的写操作,这对于 SSD 硬盘是很受伤的,所以建议关闭。

搜索 browser.sessionstore.interval,将原来的值15000修改为15000000

禁用无必要网络访问

对于使用 Firefox 来进行 Web 应用程序截断代理、漏洞挖掘。使用过 BurpSuite 就会知道,可能经常会抓到一些其他无相关的站点的数据包, 这是 Firefox 在后台偷偷地去请求一个网址,这当然是我们不想看到的结果;它之所以这么做,是基于一种网络可用性探测的需求,这样做会消耗我们的带宽、以及降低小小的运行效率。

搜索network.captive-portal-service.enabled,双击将 Valuetrue变为false

限制 Chrome 写操作

Settings—->Advanced—->Privacy—->Use a prediction service to load pages more quickly

关闭此项。

0x07 系统清理

清理系统不需要的缓存等等

1
2
$ sudo apt autoremove
$ sudo apt autoclean

不得不承认这两条命令清理的并不彻底。

Stacer

Github:github.com/oguzhaninan/Stacer

从仓库主页 releases 中找到以 .deb 结尾的软件包,下载并安装。这款软件是图形化操作,界面比较友好。

1
$ sudo dpkg -i stacer_1.0.9_amd64.deb

Bleachbit

这款软件貌似系统自带,搜索打开即可使用。其界面并没有 Stacer 那么友好,但清理的特别彻底。

关于系统清理,如果操作不当;轻则破坏你的个性化设置,严重可能会导致系统崩溃。请谨慎操作!!!

0x08 优化电池寿命

关于优化电池寿命,其实是一件非常复杂的问题。所以,我使用的是一种简单的办法,可能并不是十全十美,但依旧能满足大部分人的需求。

安装一个软件包,并将电池优化的工作交给它。

1
$ sudo apt install tlp tlp-rdw

然后启动它:

1
2
$ sudo tlp start
TLP started in AC mode.

查看 tlp 状态:

1
$ sudo tlp-stat

tlp 优化的结果可能并不是最最最优的结果,但它完全能满足我们这些非专业人士的电池优化需求。

# linux

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×