分析瓶颈
要优化系统,先要找到性能瓶颈。通过分析系统配置能够获取这些信息。这里给出几条分析系统性能的简单方法:
运行大型软件(比如 openoffice、firefox)时,如果系统变卡,很可能是内存不足。以下命令用来查询内存使用信息(-/+buffers 一栏):
$ free -m
如果开机时间很长,或者第一次加载某个程序十分缓慢,则很可能是硬盘太慢了。以下命令用来测试硬盘速度:
$ hdparm -t /dev/硬盘设备
该命令仅测试读取速度,并不能准确测试硬盘。一般来讲,测试结果在40MB/s以上是比较合理的。
如果内存充足,系统还是很迟钝,那么看看是不是CPU的问题。以下命令可以监视CPU使用:
$ top
如果看电影、玩游戏、使用图形软件时比较卡,应该是显卡的问题。首先,请使用以下命令,检查是否开启了直接渲染:
$ glxinfo | grep direct
首选方案
最简单有效的提升系统性能的方法,就是使用轻量级软件。
不安装桌面环境,仅仅使用窗口管理器,例如:dwm、Openbox、JWM。
或者选择轻量级桌面环境,例如:LXDE、Xfce。
安装轻量级软件。参见论坛年度”轻快软件奖“
在/etc/rc.conf禁用不需要的系统服务。
折衷方案
凡是有两面,轻量级软件做到了”轻“,却往往牺牲”用“。优化可能带来负面影响,是否使用,取决于你。
系统测试
使用系统测试工具,可以帮助用户更好地分析系统瓶颈。
存储设备
选择文件系统
不同文件系统各有利弊,选择合适的文件系统令用户收益良多。新手指南相关章节提供了简单指导。此外,Category:File systems (简体中文) 里也有一些与此相关的信息。
概览
XFS:适宜存取大型文件,小型文件性能一般。适宜作为/home。
Reiserfs:存取小型文件性能好。适宜作为/var。
Ext3:性能一般,稳定可靠。
Ext4:整体性能极佳。使用sqlite等数据库时,有性能缺陷。
JFS:整体性能好,CPU使用率低。
Btrfs:整体性能极佳,优于ext4,拥有许多新特性。但还处于开发阶段,有数据丢失风险。
挂载参数
使用适当的挂载参数也能提高文件系统性能。使用参数的挂载命令如下:
$ mount -o 选项1,选项2,... /dev/分区 /文件夹/路径
修改/etc/fstab,开机时自动使用参数挂载分区:
/dev/分区 /文件夹/路径 分区类型 选项1,选项2,... 0 0
noatime,nodiratime两个优化选项适用于大多数文件系统,开启后禁止记录最近访问时间。前一选项其实已经包含后者(后者近包含文件夹)。极少的情况下,比如使用mutt时,可能出现问题。
Ext3
参见:Ext3 Filesystem Tips。
Ext4
参见:Ext4#Improving performance。
JFS
参见:JFS Filesystem#Optimizations.
XFS
使用下列参数创建XFS文件系统,能获得更好的性能:
$ mkfs.xfs -l internal,lazy-count=1,size=128m -d agcount=2 /dev/分区
此外,设置logbufs=8挂载选项也能提升XFS性能:
#/etc/fstab
LABEL=XFSHOME /home xfs noatime,logbufs=8 0 1
Reiserfs
使用挂载参数data=writeback可以提高性能,但断电时有数据损坏风险。notail参数会额外占用5%左右的磁盘空间,但也有益于改善磁盘性能。把日志和数据放在不同的分区可以减少磁盘负载,这需要使用如下命令创建文件系统:
$ mkreiserfs –j /dev/分区1 /dev/分区2
其中,分区1存放日志,分区2存放数据。详细信息参见此文。
BTRFS
新型文件系统Btrfs拥有在线碎片整理、无损伸缩分区、SSD优化等诸多特性,拥有极佳的性能。但它尚处于开发阶段,不建议普通用户使用。更多信息参见:Btrfs主页。
提供btrfs支持的mkinitcpio.conf
如果只是把brtfs作为非root分区,那么只需在挂载时加载模块即可。但要想把brtfs分区作为root,就需要把模块打包在内核中。brtfs模块还依赖于libcrc32c模块。修改/etc/mkinitcpio.conf,加入brtfs模块及其依赖:
MODULES="crc32c libcrc32c zlib_deflate btrfs"
如果懒得修改,有一个专门的AUR软件包:mkinitcpio-btrfs。
压缩 /usr
磁盘IO通常比内存操作、CPU操作要慢很多,所以有些时候牺牲CPU和内存资源减少磁盘IO是值得的。通过压缩文件系统,可以减少磁盘IO(但使用更多CPU资源)。btrfs、reiserfs4等文件系统支持直接压缩,但压缩率受文件系统4k块大小限制,往往不是很高。更好的方式是使用squashfs压缩文件系统,支持64k甚至128k块大小。Gentoo论坛帖子提供了相关信息。
下面讲解如何使用squashfs压缩/usr分区。通过压缩/usr,可以节约三分之二的磁盘空间,并加快程序加载。囿于squashfs文件创建的是只读的文件系统镜像,而/usr在安装、升级软件时需要重写文件,我们还需要使用aufs提供写入支持。aufs用于合并只读文件系统和可写文件系统,从而使只读文件系统变得可读写。内核已经提供squashfs支持,extra软件仓库提供了aufs2软件包。
安装aufs模块和创建squashfs的工具:
# pacman -S aufs2 squashfs-tools
然后创建用于挂载squashfs的目录(ro)和可写的记录更改的目录(rw):
# mkdir -p /squashed/usr/{ro,rw}
现在做一次系统升级,把需要的软件尽量都安装好(减少未来对/usr的写入)。如果使用prelink,还需要重新prelink一下。现在使用下面的命令创建squashfs:
# mksquashfs /usr /squashed/usr/usr.sfs -b 65536
还有一些其他参数,可以获得更高的压缩比。参见:here。然后修改/etc/fstab,设置开机挂载:
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0
接下来重启动即可。
这里提供了自动化bash脚本,包含配置自动重新压缩(使用cron计划任务)。
SSD优化
SSD#Tips_for_Maximizing_SSD_Performance
CPU
超频是唯一提升CPU速度的方法。但它存在一定危险性,不建议盲目使用。通常在BIOS中设置超频(有些CPU可能禁止超频),本文不再叙述。
从另一方面看,通过优化CPU资源分配,也可以“提升”CPU性能。
用户可以使用优化的Linux内核,它们针对特定用途做了优化。Con Kolivas的内核补丁集针对桌面应用做了优化;用Brain Fuck Scheduler(BFS)代替默认的Completely Fair Scheduler(CFS),可以优化系统资源调度。
AUR中提供了打补丁内核的PKGBUILD,可以很方便的编译安装。比较著名的有:打了CK补丁包和BFS补丁的kernel26-ck ,打了BFS补丁的kernel26-bfs,打了pf补丁集的kernel26-pf。
Note: BFS/CK适用于桌面机、笔记本,不适用于服务器。少于16个CPU时,这些补丁能起到比较好的效果。此外,Con Kolivas建议把HZ(时钟中断周期)设置为1000。参见:BFS FAQ、ck patches。
Verynice
Verynice(软件包:verynice)服务通过调整进程nice(优先级)动态分配CPU资源。/etc/verynice.conf是配置文件,Verynice会分给其中goodexe(比如X、多媒体软件)更多的CPU资源,badexe反之。
Ulatencyd
Ulatencyd(软件包:ulatencyd)服务同样通过动态分配CPU资源缓解系统负载。但它使用更先进的cgroup功能(需要内核支持)。该功能把进程分组,并对不同的组使用不同的系统资源分配策略。
网络
参见:General Recommendations (简体中文)#网络。
图形
xorg.conf
xorg.conf是Xorg的配置文件,对图形界面性能至关重要。不同显卡的设置,参见:Nvidia、ATI (简体中文)、Intel (简体中文)。谨慎设置,错误设置可能导致X崩溃。
Driconf
Driconf是用于开源驱动的直接渲染设置工具。开启HyperZ功能可以大幅提高性能。
显卡超频
显卡超频比CPU超频更简单一些,有专门的软件可以设置超频。ATI显卡使用rovclock,Nvidia用户使用nvclock,Intel用户使用gmabooster。
可以在~/.xinitrc添加超频命令,使X启动时自动超频。但不建议这么做,因为超频总是有风险的。
内存和虚拟内存
Swappiness
swappiness数值决定内核使用交换空间和物理内存大小的比率。如果设置成较小的值,CPU会尽量完全使用内存,从而加速系统性能(物理内存比虚拟内存快得多)。该值在/etc/sysctl.conf中设定(如果没有相似内容,请自行添加):
vm.swappiness=20
vm.vfs_cache_pressure=50
此文介绍了这种优化的原理。
Compcache
Compcache(软件包:compcache),也就是ramzswap内核模块,在内存中建立压缩的交换空间文件系统。通俗来讲,就是设置一部分内存可以压缩数据,从而容纳更多数据。这种优化对内存紧张的用户很有帮助。
使用Compcache后,仍然可以(且推荐)使用硬盘交换空间作为补充。不要在/etc/fstab设置备用交换空间,Compcache有专门的配置文件。
该方法有利于减少由于交换空间造成的固态硬盘读写。
/tmp 使用内存空间
如果内存很充足,使用内存文件系统作为/tmp储存临时文件能小幅改善系统性能(同样,能减少磁盘读写)。犯法是在/etc/fstab中添加:
tmpfs /tmp tmpfs defaults,noatime,nodev,nosuid,mode=1777 0 0
使用显存
这听起来很奇特,如果显存过剩,还可以把显存作为交换空间。参见:Swap on video ram。
预读
通过预读程序、库到内存中,能有效加快程序加载速度。预读通常用于常用的程序,如浏览器。
Go-preload
Go-preload是来自gentoo的一个预读服务。安装后,通过下列命令采集预读信息:
# gopreload-prepare program
运行需要预读的程序,收集结束后按回车键。
然后会生成一个预读列表:/usr/share/gopreload/enabled。在/etc/rc.conf设置开机启动gopreload,Go-preload就会在每次开机时预读列表中的程序。要禁止预读某个程序,只需从/usr/share/gopreload/enabled删除项目,或者移入/usr/share/gopreload/disabled。
Preload
比起Go-preload,Preload更自动化(尽管有违KISS):只需要在/etc/rc.conf添加服务就完事了。
Readahead
Readahead提供文件预读,从而加速程序加载。
系统启动
参见:加速系统启动。
待机
想要加快系统启动,最好的方法就是不要关电脑,而选择待机。当然,为了可持续发展(至少是电费),不用电脑时还是关了吧。
内核启动参数
使用fastboot参数可以节约一两秒开机时间。如果开机时总是显示“Waiting 8s for device XXX”之类的信息,可以使用rootdelay=1参数减少等待时间。通过编辑/boot/grub/grub.cfg(Grub)、/boot/grub/menu.lst(Grub)或/etc/lilo.conf(Lilo)应用参数。
自己编译内核
自己编译内核,删除不需要的模块,可以减少引导时间和内存占用。但通常这是个耗时、枯燥甚至令人厌烦的事情,你可能面临各种错误——甚至最终节约的开机时间还不如你浪费的时间多。但通过自己编译内核,可以学习到不少知识。参见:here。
针对特定程序的优化技巧
Firefox
Firefox (简体中文)一文提供了不少技巧。常用的有:禁用 pango,清理sqlite数据库,使用firefox-pgo。另见:Speed-up Firefox using tmpfs、关闭反钓鱼功能。
Gcc/Makepkg
参见:Ccache。
LibreOffice
参见:LibreOffice#Speed up LibreOffice。
Pacman
参见:Improve Pacman Performance。
SSH
参见:Speed up SSH。
分享到:
相关推荐
0596_极智开发_解读archlinux安装AUR助手yay的方法
SPIR-V软件包(用于Archlinux的软件包)(git版本) 提供 : 螺旋交叉 头标 spirv工具 建造 git clone https://github.com/kevall474/spirv-pkg.git cd spirv-pkg spirv-cross : cd spirv-cross-git env _compiler...
Archlinux Docker 此 repo 不能由注册表自动构建(需要外部运行)。 您可以通过运行以下命令来构建此映像: ./mkimage-arch.sh && docker build . -t yourhandle/archlinux
`archlinux-packages` 提供了个人维护的一系列软件包,它们可能包括一些不在官方仓库但对用户有用的软件。`archlinux-packages-master` 压缩包很可能是这个个人软件包集合的源代码仓库。 Arch Linux 是一个基于滚动...
2. **archlinux-arm-image**:这进一步确认了这是一个专为ARM架构设计的ArchLinux镜像。 3. **Shell**:通常指的是命令行解释器,可能意味着这个项目包含了一些基于Shell脚本的自动化安装或配置过程。 **压缩包子...
Ansible-ansible-archlinux.zip,Automated Arch Linux桌面环境Automated ArchLinux,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
`dwm-script` 是一个针对 Arch Linux 操作系统的自定义脚本集,它主要用于优化和个性化动态窗口管理器(DWM)。DWM 是一个轻量级、高度可配置的窗口管理器,通常由程序员和高级用户使用,以获得更高效、定制化的桌面...
ArchLinux安装镜像,用于安装ArchLinux的live环境
docker-baseimage-archlinux
它利用了WebKit渲染引擎(与Google Chrome和Safari浏览器相同),能够准确地将网页内容转化为高质量的PDF文档。在本文中,我们将深入探讨wkhtmltopdf的安装、基本用法以及一些高级特性,帮助你充分利用这一强大的...
Arch-Linux-N1斐讯N1的ArchLinux镜像默认密码1234基于此教程制作
-*-组织-*- ____ ____ _ _ _ ____ _ _ _ _ / ___| _ \ / \ | \ | | _ _ _| _ \(_)___| |_ _ _ / \ _ __ ___| |__ | | | |_) / _ \ | \| |_| |(_|_) | | | / __| __(_|_) / _ \ | '__/ __| '_ \ | |___| __/ ___ \| |...
2018年12月1日发布的"archlinux-2018.12.01-x86_64.iso"是ArchLinux系统的一个重要里程碑,为用户提供了一个全新的安装媒介,让我们深入探讨这一ISO镜像所包含的知识点。 首先,"x86_64"标识了该ISO是针对64位架构...
这个"archlinux-2018.12.01-x86_64"版本是ArchLinux在2018年12月1日发布的一个ISO镜像文件,适用于64位(x86_64)架构的计算机。这个ISO文件包含了安装ArchLinux所需的所有基本组件和工具,允许用户从零开始构建一个...
wsl --import ArchLinux C:\WSL\ArchLinux alwsl-alwsl-af83ba2.tar.gz ``` 这里,`C:\WSL\ArchLinux`是你希望安装Arch Linux的位置,替换为实际路径。 步骤4:启动Arch Linux 现在,你可以启动新安装的Arch Linux...
ibus的拼音输入引擎,已在Archlinux下编译 执行命令 pacman -U ibus-pinyin-1.2.0.20090617-1-i686.pkg.tar.gz以安装 需满足依赖aspell-en ibus pyenchant python-pysqlite
一个光滑,简单的Archlinux主题登录屏幕,写在lightdm和lightdm-webkit2-greeter上。 目录 使用自己的墙纸 修改日期和时间格式 故障排除 我的登录屏幕没有更改! 我的屏幕是黑色的! 我的系统挂在启动屏幕上! ...
Raspberry PI家庭服务器 这是我的Raspberry PI 2家用服务器。 它充当,, , 和。 所有这些都在Arch Linux ARM上运行。 去做 实施Docker容器(可能需要硬件升级) 使用Ansible实现自动化 实施OpenVPN用户创建/删除/...
Archlinux用户系统信息库是一个相对简单的网站,其中包含用户提交的ArchLinux软件包。 这些“源程序包”仅包含构建程序包所需的内容,这与Archlinux的官方存储库中的二进制程序包不同。 要求 使用WWW :: AUR和朋友...
Atom-language-archlinux.zip,[NO LONGER MAINTAINED] Arch Linux development package for the Atom text editor (https://atom.io).Arch Linux开发包,atom是一个用web技术构建的开源文本编辑器。