Arch Linux 杂七杂八的优化
文章目录
【注】本文最后更新于 November 19, 2018,文中内容可能已经过时。
发现无聊时刷 Arch Wiki 也挺有趣的, 记录一下自己干了啥吧. 毕竟有些配置没法放到 dotfiles 里. 记录一下以后翻起来也方便.
内核
nopti
参考: Performance degradation after Meltdown mitigation?
打开 /etc/default/grub
, 给 GRUB_CMDLINE_LINUX_DEFAULT
添加nopti mitigations=off
参数, 禁用上次 intel Meltdown 漏洞的补丁.
这个补丁实测严重影响系统调用性能, 大约下降 70%. 虽然实际上应该没啥程序会疯狂 syscall ….但我还是要关掉它!
硬盘
SSD
TRIM
通过 hdparm -I /dev/sda | grep TRIM
检验是否支持,有两种方法启用:
- 实时 TRIM, 通过往挂载参数里添加
discard
以启用,但是存在卡顿等问题,因此不推荐使用 - 安装 util-linux 包,然后
systemctl enable fstrim.timer
启用定时 TRIM
调度器
可以通过 cat /sys/block/sda/queue/scheduler
查看当前调度器和可用调度器, 默认应该是 bfq
.
据 wiki 所说, SSD 性能强劲, 因此简单的调度算法反而适合 SSD, 如 noop
, deadline
往 /etc/udev/rules.d/60-ioschedulers.rules
里写入如下规则, 为 SSD 启用 mq-deadline
调度器
|
|
Ext4 性能优化
参考: Ext4#Improving_performance
禁止更新访问时间戳
想了想我似乎没有需要知道某个文件上次被访问是啥时候的需求, 于是 fstab 添加noatime
参数禁用之.
如果有这个需求的话, 也可以用 relatime
/strictatime
搭配lazytime
来减小写入硬盘的次数. 虽然系统崩溃时可能导致访问时间未更新, 不过这显然不是什么大事……
关闭屏障
虽然没懂到底是什么鬼(保证写入的正确性?), 不过wiki上说有备用电源就可以安全关闭.
笔记本, 不怕断电, 果断添加参数barrier=0
禁用.
禁用日志
首先卸载磁盘, 然后 tune2fs -O "^has_journal" /dev/sdXN
以前关掉过, 后来想了想还是打开了…为了我能够安心地强制关机……
加速日志
根据这篇文章, 最棒的方法应该是单独使用一个分区作为日志分区然后启用 journal_async_commit
:ext4: using external journal to optimise performance. 速度最多能提升到原来的三倍, 妙啊妙啊!
Mark 一下, 暂时不打算弄.
fstab
参考: fstab
使用 LABEL
fstab 默认使用的是内核名称描述符(eg. /dev/sda1)来指示挂载设备. 这通常问题不大.
然而当你加了一块硬盘(包括移动硬盘), 就可能会导致描述符的改变, 从而出现无法启动的状况. 到群里问了大佬们, 大佬们有推荐用 UUID, 有推荐用 LABEL 的. 个人感觉 LABEL 比较好懂 (
创建 LABEL 的方法见: Persistent_block_device_naming#by-label
以 ext4 为例, 使用 e2label /dev/XXX <label>
创建 LABEL, 然后就可以在 fstab 里使用 LABEL=xxx
的方式来指示挂载设备了, 不用担心因为插拔硬盘导致奇怪的问题.
自动挂载移动硬盘
每次手动挂载很麻烦, 直接添加到 fstab 的话没插移动硬盘就会 error, 这时就要使用 nofail
参数, 像这样
|
|
第一次用貌似会遇到无法写入的问题, 使用 sudo chown -R $USER:$USER /mnt/backup
更改一次所有权就行了
自动挂载大分区
因为一直以来都以 Linux 作为主力系统. 然后觉得 ntfs-3g 实在不可靠……于是把原来 NTFS 的资料盘转成 ext4 了.
不过资料盘用得比较少, 可以用 noauto,x-systemd.automount
参数使得在访问时才挂载
|
|
(第一次用还是需要 chown 好像….)
pacman
参考: pacman
pacman.conf
# Misc options
开启 Color
和 VerbosePkgLists
|
|
作用: pacman 彩色输出 && 升级时使用三栏显示
自动清理软件包缓存
创建 /usr/share/libalpm/hooks/clean-cache.hook
, 内容如下
|
|
作用: 每次升级软件包后清理最近三次以前的软件包
makepkg
参考: makepkg
.makepkg.conf
新建 ~/.makepkg.conf
, 写入如下内容pacman
|
|
作用: 优化生成的二进制文件 && 加快编译速度 && 加快软件包生成速度