现在已经有越来越多的人开始使用桌面Linux发行版了,也经常会听到有人抱怨各种桌面Linux的运行速度比他们想象的慢。实际上,在使用桌面Linux系统时,你必须记住一个关键的问题:

桌面端Linux的快慢主要取决于系统响应速度,而不是硬件配置。

在使用服务器端Linux时,你确实可以通过提高硬件性能获取更快的系统运行速度,这是Linux得以在服务器端压倒众多竞争对手的最重要原因,通过优化调整硬件配置获得最佳的系统性能。

但在桌面端情况就不一样了,比如在把一个20GB的大文件复制到U盘,或者解压一个大文件的时候,你会很奇怪为什么Linux比Windows和MacOS表现的还要差劲。一般来说,绝大多数桌面端Linux用户在感到系统运行不够快的时候,首先就会想到和配置服务器一样添加硬件配置,然而这么做是不对的。

真正的瓶颈在哪里?

CPU一般不是瓶颈所在,除非你做的是密集计算任务,比如视频压缩、数据科学、遗传学和神经网络分析等。

GPU也很少产生瓶颈,除非你拿计算机玩大型游戏或超高精度渲染效果图,大多数时候你并不会真的需要一个7000美元的专用GTX 1080显卡。

如果测试一下CPU和GPU的使用情况,你就会发现它们大部分时间都是空闲的,没错,绝大多数时间计算机的核心都不会满载运行。

真正的瓶颈出现在内存与硬盘的I/O(输入/输出)这里。

RAM与SWAP

只要一打开光鲜亮丽的Chromium浏览器,你肯定会在几分钟之内打开十几个网页标签或者更多,这会在不知不觉中发生。

然而这样会超级快速的吃完8GB的内存。每当出现这种情况时,操作系统就开始把数据分载到硬盘的缓存中,此时你就会发现机器的速度严重下降。

所以你可能要做的第一件事就是安装一个扩展,比如Chrome的内存优化插件Great Suspender。它会暂时关闭掉所有标签的网页响应,除了现在你正在阅读的这个,而当你切换到另一个标签时,它就会重载这个标签的网页。Great Suspender的目的是节省内存,效果很好。

(内存优化插件Great Suspender)

这个扩展可以帮你节省几个G的内存,对于平均配置内存为8GB的Linux系统来说,这可不是个小事。

另外需要考虑的是Linux的预配置会将应用数据平均分派到swap来利用文件系统的缓存。所以如果你解压一个大文件,一些数据就会进入到RAM缓存,应用数据也会进入硬盘,而在解压完成后,重新切换到应用程序时往往出现无法响应的问题。

所以你需要配置一下操作系统,让应用程序的状态充分保存在RAM中。在控制台中进行如下操作:

sudo tee -a /etc/sysctl.d/99-sysctl.conf

vm.swappiness=1

vm.vfs_cache_pressure=50

EOF

在存储方面,有时你会发现一些使用旧核心的存储器比如U盘或SD卡拖慢了机器的速度,这时可以进行如下操作:

sudo tee -a /etc/sysctl.d/99-sysctl.conf

vm.dirty_background_bytes=16777216

vm.dirty_bytes=50331648

EOF

如果不想立刻重新启动,可以在终端上运行如下命令:

sudo sysctl -w vm.swappiness=1

sudo sysctl -w vm.vfs_cache_pressure=50

sudo sysctl -w vm.dirty_background_bytes=16777216

sudo sysctl -w vm.dirty_bytes=50331648

对RAM和SWAP的调整不宜做的太过,比如千万不要禁用文件系统日志,因为这样会增加数据遭受破坏的风险。

优化调度程序

Linux中配置了过程调度程序(Process Scheduler)和I/O调度程序(I/O Scheduler)。过程调度程序负责管理内核的预处理级别与不同计算任务之间的切换。而I/O调度程序则帮助不同的过程比如从硬盘读取和写入内存等共享I/O资源。

桌面端Linux中使用的调度程序一直在更新,最通用的过程调度程序是Completely Fair Scheduler (CFS) ,它在许多版本中是默认配置,其后还有更新发布的Staircase,BFS和MuQSS等。同样的,I/O调度程序也在不断进步,除了通用的Completely Fair Queueing (CFQ)之外,还有更新的Noop Scheduler和BFQ等。

你可以应用这些最新的调度程序来优化系统,最好的办法是安装Linux Zen 内核,Liquorix版本。它用MuQSS 调度程序替换了CFS,用BFQ替换了CFQ,同时还加入了更多的响应性调整比如QoS over TCP,用来避免TCP堵塞。

如果你用的是Arch Linux,要做的非常简单:

sudo pacman -Sy linux-zen

sudo grub-mkconfig -o /boot/grub/grub.cfg

如果是Ubuntu,那就需要参考一下Liquorix的安装说明,因为如果CPU不同,安装方式也略有不同,对于64位的机器一般这样安装:

sudo apt-get install liquorix-keyring

apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64

是因为GNOME 3太慢吗?

GNOME 3.22不仅让桌面Linux变得漂亮,内置的应用也带来了使用上的方便。当然,使用上的便捷是以牺牲响应速度为代价的。高端机器会受益,而老旧的机器就会遭罪,因为那些在后端运行的额外功能。

那么怎样才能在老旧机器上更好的应用GNOME 3呢?

同样的,首先必须要搞清楚发生了什么。必须要做的第一件事是安装htop 和 iotop。htop用来观察后台运行的情况,找到是哪些进程吃掉了你的CPU或RAM。而iotop用来观察哪些进程阻塞了文件和网络操作时的I/O队列。

在我的系统里,我发现了两个主要的“罪犯”:Dropbox 和 Tracker。接下来就来解决这两个问题。

Dropbox在安装时是可选的,但大多数人都会选择安装,Dropbox第一次安装时要下载所有的文件,过程极其缓慢,所以要记住最好在星期五的晚上去安装它。

安装之后,编辑 /usr/share/applications/dropbox.desktop这个文件,把Exec=dropbox这行替换为下面这行:

Exec=ionice -c 3 -n 7 dropbox start -i && cpulimit -b -e dropbox -l 10

好了,这样就可以让Dropbox占用最少的CPU时间,而且只有在系统空闲时才拥有I/O权限。

然后是Tracker,这个工具的目的是索引文件以便于通过GNOME应用(例如Nautilus File Manager)来快速搜索到文件。

首次安装新的GNOME环境时第一次建立索引是非常耗费时间的,所以最好还是在周五的晚上进行,和Dropbox同时安装。

然后把它调整为只在系统空闲时才运行。运行 Alt-F2,键入tracker-preferences,然后这样配置它:

在同一个面板中,把它配置为忽略log目录和*.log文件模式。

如果你的机器用的是慢速的机械硬盘,最好尽量关闭掉那些在后台占用I/O的应用进程,这样才能使机器的反应变得敏捷。

GNOME还有其它后台服务,例如下面这些:

gnome-session

gnome-shell

gnome-settings-daemon

gnome-online-accounts

evolution-data-server

gjs-console

这些都会根据你所安装的应用变化,GNOME Shell和GJS很占资源,但是你无法关闭它们,因为这些都是GNOME的核心,所以唯一能做的事情就是避免安装太多的GNOME扩展。

经常有人说GNOME甚至KDE是引起桌面Linux速度变慢的罪魁祸首,但是如果你的目标是为了节省资源,那么完全不需要按照他们所说去选择XFCE或是LXQt。实际情况是I/O才是问题的关键,对GNOME进行适当调整就可以了。最应该注意的还是网络浏览器的使用,只需要五六个网页标签就能吃掉你一大半的RAM,这就是我为什么首先建议安装Great Suspender的原因。

总结

简短地说,要记住以下几件事:

在使用前端应用尤其是网络应用时,调整swap和缓存的压力设置,避免出现页面错误,在性能与反应速度之间只能寻求妥协。

安装Linux-Zen或Liquorix内核(根据你使用的发行版),获取更好的MuQSS过程调度程序和BFQ I/O调度程序。如果使用的是SSD硬盘,检查一下是否使用的是NOOP或Deadline I/O调度程序,这是针对SSD硬盘的更好的配置。

配置Dropbox和Tracker,让它们只在系统空闲时运行,也可以安装Ananicy和rejoice来做进一步优化。

由于性能问题,不要选择Desktop Manager,因为如果你使用Chromium上网或是其它Web应用,问题就已经无可避免了。不要惊慌,放心使用GNOME 3.22,做一些适当的后台I/O调整就行了。

如果可以的话,买一块好的SSD硬盘。如果机器是PCI Express X4插槽的话,那么买一块M.2 SSD硬盘更好,比如三星950 EVO M.2。如果拥有超过8GB的内存(最好16GB)和一块非常快的SSD硬盘,那么许多性能问题就会迎刃而解。

linux系统吃性能吗,教你如何优化Linux运行速度相关推荐

  1. 【转载】Linux系统与性能监控

    原文: Linux System and Performance Monitoring Darren Hoch 译:Roger 这是[叔度]给我的一篇非常不错的关于Linux性能监控的文档,可惜是英文 ...

  2. Linux系统与性能监控

    原文地址:http://kerrigan.sinaapp.com/post-7.html Linux System and Performance Monitoring http://www.hous ...

  3. 查看linux系统的性能

    查看linux系统的性能,一般可以通过free.iostat.vmstat.top等命令来查看 [root@kumu ~]# free              total       used    ...

  4. linux系统服务器性能综合测试(UnixBench5)

    使用 UnixBench5 进行linux系统服务器性能综合测试 1.简介 Unixbench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linu ...

  5. linux的安全性能,技术|Linux 系统安全性能检查小记

    Linux系统安全性能检查小记: 1.Accounts检查 # less /etc/passwd # grep :0: /etc/passwd 注意新的用户,和UID,GID是0的用户. 2.Log检 ...

  6. 一款好用的Linux系统服务器性能监控分析工具介绍

    软件性能测试过程中经常要对服务器性能指标(比如CPU.内存.磁盘IO及网络IO等等)进行监控以分析出软件在此服务器上的性能瓶颈以便进行后续的服务器调优及软件性能优化.下面为大家介绍一款小编认为比较好用 ...

  7. linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...

    这是arm裸机1期加强版第1课第2.3节课程的wiki文字版. 为什么没前途也要学习单片机? 因为它是个很好的入口. 学习单片机可以让我们抛开复杂的软件结构,先掌握硬件操作,如:看原理图.芯片手册.写 ...

  8. 电脑上的linux是什么文件夹,linux删除文件夹,详细教您电脑的linux怎么样删除文件夹...

    上期小编讲解了重装系统win7旗舰版64位教程,本次正特手机网小编给大家讲解一下linux删除文件夹,详细教您电脑的linux怎么样删除文件夹,linux主要是做什么用的?有用户在网上提出这样的提问, ...

  9. linux系统能做什么的,Linux系统适合日常使用吗?普通人学Linux能干什么

    Linux是多用户多任务系统,多个用户可以同时使用,计算机同时执行多个任务.但对于普通人来说,Linux系统适合日常使用吗?普通人学Linux能干什么?确实是值得深思. Linux是程序员的标配.Li ...

最新文章

  1. Android 内存优化
  2. 【C/C++】变量做数组长度
  3. 80x86描述符总结及解析描述符的小程序
  4. 如何将ClearCase集成进VS.NET 2003的IDE
  5. Laravel 校验规则之字段值唯一性校验
  6. VUE 解决:Property or method “deleteFun“ is not defined on the instance but referenced during render.
  7. react-router的使用(一)——URL的hash、HTML5的history、Router的基本使用
  8. 4大华为云“安全镖局”秘密法宝揭秘
  9. Win8.1/Win10在某些程序输入中文变成问号的解决方法
  10. windows自动设置ip地址脚本
  11. Xcode 12 导出ipa包
  12. jQuery-zTree插件使用
  13. WAP PUSH 技术的一些说明
  14. 软件工程师需要具备哪些知识?
  15. 【基于物理的渲染(PBR)白皮书】(三) 迪士尼原则的BRDF与BSDF相关总结
  16. 基于python的博客设计_基于Pyt hon的博客设计
  17. 2021-08-25 新手创建bt面板并创建网站
  18. VMware 8.0 安装 FC5 的VMware tools
  19. 笔记本电脑性能分析记
  20. 智慧城市视频监控平台组成

热门文章

  1. 操作系统实验二:用户接口
  2. 一个非常简单粗暴又理论上不会重复的随机数算法
  3. 怎么将考勤的结果用于薪资核算?
  4. 诚信型性格分析,诚信型人格的职业发展
  5. C#托盘控件notifyIcon的使用
  6. javascript模拟键盘按键事件,支持最新DOM3标准(Chrome亲测)。
  7. 后量子 KEM 方案:Newhope
  8. 【Error】Error running process: CreateProcess failed. Code 2
  9. 什么是连通图,(强)连通图
  10. windows2000做虚拟主机的安全设置