如何提高 Ubuntu 的整体系统性能?

Dec*_*ira 354 performance

您在 ubuntu 上提高整体系统性能的技巧是什么?受这个问题的启发,我意识到某些默认设置在 Ubuntu 上可能相当保守,并且如果您希望使其更快,则可以在几乎没有风险的情况下对其进行调整。

这并不意味着特定于应用程序(例如,使 firefox 加载页面更快),而是系统范围的。

每个答案最好有 1 个提示,有足够的细节供人们实施。

我的几个是:

  • 安装Preload(通过软件中心或sudo apt-get install preload);
  • 更改Swappiness值——“它控制内核在尝试释放内存时喜欢交换的程度”;

你的是什么?

PS:由于这不是为了有一个独特的答案,而是为了提供一些有用的提示,我正在使这个社区 wiki 开箱即用。

Ban*_*zen 181

如果你是“普通的乔”,那就什么都不做。不要摆弄您不了解的程序或设置。不要遵循 Internet 上发布的提示,即如何通过自己编译某些软件或安装自制内核来提高系统性能。

其中一些提示确实可能会给您带来轻微的性能改进,但其中一些也会让您真正头疼,如果您更改了错误的设置、禁用了错误的服务、安装了错误的驱动程序等。

因此,请为您运行良好的系统感到高兴。顺便说一句:你为​​什么需要那 5% 的性能改进?它不会让您更快地键入您的办公文档或在一半的时间内编辑您的假期照片。

明确一点:如果你不是普通的乔,而是一个开发者/铁杆游戏玩家/......需要任何你可以获得的周期,你不是这个评论的目标......

  • 调整设置并编译您自己的内核和软件是一种很好的学习方式。我认为应该鼓励它,只要人们知道当他们严重破坏事物时,他们可能需要重新安装他们的操作系统。 (77认同)
  • 只有真正想了解内核如何工作的人才应该考虑编译自己的内核。对于大多数人来说,他们甚至应该知道存在“内核”。坚持使用库存内核,您可以利用定期的软件更新。 (23认同)
  • 我现在正在玩性能调整,正是为了我从他们那里学到的东西。也就是说,有两种情况我总是想用 Windows 进行调整,而我对 Ubuntu 也持同样的态度: 1. 系统太慢以至于每一点都有帮助。2. 一个系统如此之快,我不禁想知道它可以加速到什么程度!中等系统我不理会:) 也就是说,一个明确的+1 (3认同)
  • @Nerdfest 这是一个很好的观点,我在 linux 世界中最重要的老师毫无疑问是 Gentoo 手册......我从来没有真正得到过一个有效的 GUI,但我确实学到了很多关于基本 linux 安装如何工作的知识!这在所有发行版上几乎都是一样的 (2认同)

txw*_*ger 105

禁用任何不需要的服务的自动启动(甚至完全删除包)。

许多软件包会自动启动服务。这些服务会使用内存和 CPU,即使它们几乎从未使用过。在这种情况下,最好停止这些服务,或将它们从自动启动中移除,并仅在需要时才启动它们。

要删除 10.04 上启动的应用程序,请转到系统 > 首选项 > 启动应用程序(其他版本可能略有不同)

在 12.04 上,您可以通过单击Dash 图标来选择启动应用程序。然后,键入启动并选择“启动应用程序”。




替代文字

只需取消标记您不需要的应用程序。但请务必确保,不要只是删除您不知道的应用程序。如果你不确定一个,就这样吧。谷歌搜索或这里关于特定程序的新问题会有所帮助。

  • 好一个!简单有效。我个人禁用蓝牙相关的东西,因为我的笔记本没有它。 (3认同)
  • 您能否解释/添加一个链接,解释如何在 Ubuntu 下查看和禁用/启用服务。 (2认同)

sag*_*ise 77

[免责声明] 管理以下内容的风险由您自己承担。

Tushar Neupaney在这里给出了这个建议:

1. 使用轻量级的应用程序(用它们替换你的默认应用程序)

  • Gedit >> 鼠标垫
  • 图片查看器 (EOG ...) >> Gpicview
  • 网络管理器>> Wicd
  • Evince >> epdfview

2. 减少交换

  • sudo vim /etc/sysctl.conf

    编辑:vm.swappiness=10

3.双核(Use Concurrency)

  • sudo vim /etc/init.d/rc

    编辑:CONCURRENCY=shell

    shell选项现在已过时。默认值是makefile并且shell是 2010-05-14 之前makefile的别名。

4. 清理 /var/cache/apt/archives 中的 apt 缓存和 /etc/apt/sources.list 中不必要的 apt-sources 列表

  • sudo apt-get autoclean

5. 安装 BUM(启动管理器)

  • sudo apt-get install bum

    从启动中删除不必要的应用程序和服务

6. 删除一些不必要的 TTY

  • sudo vim /etc/default/console-setup

    编辑:ACTIVE_CONSOLES=”/dev/tty[1-3]“

    注意:转到/etc/init/并更改您想要的 tty 文件。编辑它们并注释以“start on runlevel”开头的行。因此,在这种情况下,您会将“tty4.conf”中的起始行注释为“tty6.conf”文件。

7. 安装预链接

  • sudo apt-get install prelink
  • sudo vim /etc/default/prelink

    编辑:预链接=是

  • sudo /etc/cron.daily/prelink

    实际上,自 Feisty Fawn 以来,Prelink 是无用的(因为 Ubuntu 现在使用非常有效的运行时链接器)。此外,它是侵入性的——它直接修改可执行文件并最终可以破坏它们。要这样做。

8. 安装预加载

  • sudo apt-get install preload

9. 如果您不使用休眠和睡眠功能,请摆脱 kinit。

  • sudo vim /etc/initramfs-tools/conf.d/resume

    编辑:评论(在前面加上#)RESUME=XXXX……………………。

  • 这没有提供关于为什么我们应该遵循您的建议的信息。请提供一些上下文和基准。 (50认同)
  • 我正在尝试第 3 条,更改行上方的注释列出了有效选项,而“shell”不是其中之一。这个答案是旧的吗?评论没有告诉我所有选项吗? (3认同)

inv*_*ert 42

减少引导加载程序菜单超时

听起来微不足道,但我发现 Ubuntu 中的默认 10 秒对我的口味来说太长了。假设我的屏幕需要一些时间来自动调整分辨率,我看到计数器读数为 8 秒。

我会将超时编辑为 3 秒,让我有时间查看启动菜单(考虑到我的屏幕调整到 res 的时间)。有足够的时间,因为按箭头键选择另一个项目会停止计数器。

Grub(9.10 Karmic 之前)

sudo -i gedit /boot/grub/menu.lst
Run Code Online (Sandbox Code Playgroud)

查找并编辑“ TIMEOUT ”行

Grub 2(9.10 Karmic 及之后的新安装)

sudo -i gedit /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

找到并编辑“ GRUB_TIMEOUT ”行,然后运行sudo update-grub


Shn*_*sel 34

如果您缺少 RAM,请使用zramswapzram-config来自 Ubuntu 存储库。它是一种虚拟交换,它压缩未使用的 RAM 内容,而不是将它们放入磁盘(这通常会在您遇到 RAM 屏障后冻结系统)。每次我用完 RAM 时,我几乎没有体验到性能损失,而不是系统冻结。

这仅适用于 Natty 及更高版本(因为您需要内核 2.6.37.1 或更新版本)。对于较旧的系统,您可以使用compcache,但您必须手动设置它。

对于那些从未达到 RAM 限制的人来说,它无论如何都会提高 HDD 系统的速度,但您最好降低 swappiness以达到相同的效果。

SSD 用户:很可能您不会体验到任何速度提升,但是 zramswap 可以大大减少 SSD 磨损。

  • 似乎是一个非常有用的应用程序! (3认同)

dag*_*729 31

在将“ noatime ”选项添加到我的文件系统(ext4 和 reiserfs)后,我体验到了整体性能提升。

我无法提供速度测试,但我邀请您尝试并亲自查看。

Ubuntu 论坛上的有用资源:在 fstab 中使用 noatime 保存硬盘

  • 这可能会破坏一些依赖此功能和一些备份工具的电子邮件软件。但是对于普通用户来说这应该没问题,因为 Thunderbird 和 Evolution 都不会受到影响。虽然在 Ubuntu 上,从 relatime(默认)切换到 noatime 不会带来太大的改进。请参阅 http://lwn.net/Articles/244829/ relatime 的工作原理,您将了解它已经大大减少了上次访问时间更新的数量。 (9认同)
  • relatime 不是已经是 ubuntu 的默认设置了吗? (4认同)

des*_*gua 26

将您的机械磁盘更换为 SSD

固态硬盘速度更快,似乎是当今几乎每台计算机中最大的瓶颈

例如,我的启动时间从约 15 秒减少到约 3 秒,并且首次启动应用程序大幅减少(例如,Firefox 从约 5 秒减少到不到一秒)。

想要一些基准吗?是一个。


小智 22

我不确定我的回答是否符合要求,因为 Ubuntu 通常意味着 GNOME 和使用更轻的替代品的 Ubuntu 变体的名称略有不同,例如 Xubuntu。

摆脱 GNOME 是我通常建议的第一件事。如果你对像fluxbox这样的轻量级产品感到满意,那就去做吧。

  • 同意,试试 XMonad,太棒了。 (3认同)

Eri*_*ami 20

设置vm.swappiness=10/etc/sysctl.conf. 当我填充内存时,我得到了明显的速度提升。由于我大部分时间都在使用 Eclipse,因此物理内存可能会变得稀少。

编辑:

来自Ubuntu Swap 常见问题解答

“Ubuntu 中的默认设置是 swappiness=60。降低 swappiness 的默认值可能会提高典型 Ubuntu 桌面安装的整体性能。建议使用 swappiness=10 的值,但可以随意尝试。注意:Ubuntu 服务器安装有与桌面系统的性能要求不同,默认值 60 可能更合适。”

常见问题解答非常完整地解释了什么是交换、如何使用以及如何更改它。任何想修改交换或磁盘上交换文件大小的人的推荐阅读。

  • @Erigami:+1 提及*实际上对您产生影响* 的事情。 (2认同)
  • @DecioLira:不。它将我当前未使用的应用程序推送到磁盘上,这意味着我当前所在的应用程序可以访问更多物理内存。 (2认同)
  • 您是否有任何显示差异的硬核数字,在哪种情况下会产生什么样的差异? (2认同)
  • @Erigami:我玩了一段时间的swappiness。一开始感觉它更快,但随着时间的推移,一切似乎都一样。一些真实的测量真的很有趣。 (2认同)
  • 我所做的各种测试证明 vm.swappiness=100 比 10 好。在慢速机器上它有助于加载,在快速机器上它没有区别(除非您将多个 GB 应用程序页面运行到 ram 中)。这是双赢的。 (2认同)

小智 18

将 /tmp 目录放入内存磁盘

https://superuser.com/questions/175861/ramdisk-ubuntu-10-04

  • 如果你这样做,那么*确保*经常检查和/或清理你的`/tmp`目录,否则你会冒着耗尽RAM的风险,因为某些应用程序忘记清理它的临时文件。我读到这实际上是某些 Solaris 机器上的一个问题,因为操作系统会在 ramdisk 上安装 `/tmp`,最终它会填满。但是,如果您使用得当,它是一个很好的性能助推器。 (8认同)

Der*_*rek 17

尽管听起来很愚蠢,但请始终更新您的系统!

  • 是的。这样做后,我立即注意到改进。 (5认同)

Ski*_*izz 16

在我拥有的一台 Ubuntu 机器上,我发现将桌面效果设置为无(禁用所有图形效果)可以极大地提高 UI 速度。

  • 此设置可以双向使用。有时,让 GPU 代替执行工作将释放 CPU 和 RAM 并提高整体系统性能。 (5认同)
  • 太好了——你是如何进行调整的?? (2认同)

小智 12

调整 ext4 以获得最大烟雾

启用写回模式。这种模式通常会提供最佳的 ext4 性能。请注意,这是以可靠性为代价的,因为它禁用了写入数据的日志。数据可以在其元数据提交到日志后写入主文件系统。因此,在崩溃和日志恢复后,旧数据可能会出现在文件中。

tune2fs -o journal_data_writeback /dev/sdXX

# Check fs options
dumpe2fs /dev/sdXX |more
Run Code Online (Sandbox Code Playgroud)

来自 kernel.org 的文档

在 data=writeback 模式下,ext4 根本不记录数据。此模式提供与 XFS、JFS 和 ReiserFS 的默认模式(元数据日志)类似的日志级别。崩溃+恢复可能会导致在崩溃前不久写入的文件中出现不正确的数据。这种模式通常会提供最佳的 ext4 性能。

还有更多的烟

要获得更多性能,请添加fstab选项:data=writeback,noatime,nodiratime

即,编辑您/etc/fstab的驱动器的 UUID 并添加/替换现有选项

/dev/sdXX /opt ext4 defaults,data=writeback,noatime,nodiratime 0 0
Run Code Online (Sandbox Code Playgroud)

在编辑 fstab 文件和重新启动之前,请确保您已使用 tune2fs 打开写回模式。我说 BEFORE 是因为我在更改 fstab 之后重新启动了,但在我打开写回模式并停止启动之前。没有任何损失,但我必须使用 live CD 来访问和更改我的 fstab。如果您先在非启动驱动器上启用以进行测试,则更安全。

启动和关闭以及日常使用的速度都有很大提高。

您还可以关闭日志模式,这将提供额外的提升,为了增加安全性,请确保您连接了 UPS 并正常工作,因为关闭这些功能后,您的数据就不那么安全了,说我的系统没有UPS 及其电源至少中断了 3 次,我没有遭受任何数据丢失,但您的里程可能会有所不同。

  • 这里不需要 `nodiratime` 因为 noatime 暗示它 (3认同)

Tho*_*sen 10

购买尽可能多的内存,机器可以容纳。

  • 然后在问题中提到这一点。购买更多 RAM 可能是最简单、最有效的加速系统的方法(因为 Linux 使用未使用的内存作为磁盘缓存)。 (15认同)
  • ørn,这个问题背后的想法是了解更多关于系统的信息,以及如何为对它感兴趣的人进行调整。只是购买新机器/零件是一个显而易见的答案,它不会教任何东西。 (5认同)
  • 如果您没有接近 100% 的内存使用率,除非您遵循其他步骤(ramdisk),否则购买更多内存将无济于事。 (2认同)

jld*_*ger 8

以下内容仅供专家参考。顾名思义,它可以而且会吃掉你的数据,即使你很小心。

Eatmydata是一个可关闭 fsync 的软件包。Fsync 是一种系统操作,可确保您的数据在继续之前写入磁盘。通常您希望这样做,因为它可以更轻松、更快速地从断电和故障中恢复,并且数据丢失更少。不过,这是有代价的。任何调用 fsycn 的东西都必须等待它排队,而不是简单地将数据传送到内核以在以后写入。在某些,甚至可能是许多文件系统中,fsync 会写出所有数据,而不仅仅是您有兴趣保护的内容。

在某些特定情况下,fsync 不值得付出代价。想象一下,您有一台服务器,该服务器处理大量数据。与其将其指向实时数据库,不如转储到一致的本地数据库中,安装eatmydata 以关闭fsync,然后放手。这仍然可能崩溃并丢失数据,但由于它不是任何东西的唯一副本,您可以从头开始重新启动该过程。或者,例如,Ubuntu 的构建服务器,我们只关心最终生成的包。或者,在桌面端,如果一个程序(如 Firefox)同步太多,它会减慢整个系统的速度。请准备好丢失与使用此相关的所有数据,否则将面临可怕的后果。


txw*_*ger 6

关闭不经常使用的应用程序。

许多标准应用程序在后台运行时会使用大量内存和 CPU。网络浏览器、电子邮件客户端等在内存使用方面的效率非常低,并且嵌入的 javascript 经常使用 CPU 时间而对用户没有任何好处。

只需运行当前使用的应用程序,系统就会快很多。此外,停止应用程序是释放因内存泄漏而丢失的内存的唯一方法。

在快速运行的系统上启动应用程序通常比在过载和缓慢的系统上切换窗口要少。

  • 是的,但那是不言而喻的。 (7认同)
  • 嗯.. 问题是不幸的是,交换通常比不使用交换要慢,但有足够的可用内存来启动整个应用程序。虽然交换在服务器上似乎运行良好,但在台式机上它似乎造成的损害大于我的经验(我还不得不说,这是过去 5 年左右 Linux 内核的恶化之一。交换曾经是工作好多了)。 (2认同)

mbl*_*sco 6

Unity 往往有点资源匮乏,但我很惊讶地听到即使在 Unity2D 下您也遇到了同样糟糕的性能。一种可能的解决方案是使用其他更轻量级的桌面环境,例如 Lubuntu (LXDE) 或 Xubuntu (XFCE)。我认为您会看到整体响应能力和性能的显着差异。

此外,您可以尝试进入启动应用程序管理器并取消选中您不需要 Ubuntu 在登录时为您自动启动的应用程序和进程(例如,如果您没有蓝牙,则为蓝牙管理器,如果您不使用它,则为 UbuntuOne) 、您根本不使用的程序等)在执行此操作之前,首先使隐藏的启动应用程序在启动管理器中可见:

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
Run Code Online (Sandbox Code Playgroud)

  • 对于 Christian 的问题的原因,您可能是完全正确的,并且您认为 Unity 应该(理论上)在他的机器上完美运行,这当然是正确的。然而,这些事实都不能否定我的说法,即 Unity 是资源匮乏的(无论机器规格如何),并且使用 LXDE 或 XFCE 无疑会产生显着的性能改进。在这种情况下,这可能不是理想的解决方案(因此我将该建议指定为“一种可能的解决方案”),但我希望它至少可以改善他的体验。 (5认同)
  • 来吧,Unity 能够在具有 4Gb RAM 和双核处理器的机器上完美运行。建议在具有 1Gb RAM 和 Atom 处理器的上网本上尝试 LXDE 是有意义的。当然,OP 的问题是由某些错误配置或硬件不兼容引起的,而不是 Unity 无法在该硬件上运行的事实。 (2认同)

小智 6

  1. 使用JFS文件系统。它坚如磐石。它具有最低的 CPU 使用率和非常好的整体性能。

  2. 设置 vm.vfs_cache_pressure。这是我的 /etc/sysctl.d/10-desktop-responsiveness

    [用# 前缀注释行,这个网络界面不喜欢它们......]

    这些设置提高了对典型桌面工作负载的响应能力。

vm.swappiness 指示 linux 内核在两者竞争 RAM 时优先使用应用程序代码而不是缓存。

vm.vfs_cache_pressure 控制 inode/dentry(即文件系统)缓存与其他缓存,即如果可能,我们希望将文件系统元数据保存在 RAM 中。

来自:http : //rudd-o.com/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that

vm.swappiness=15

vm.vfs_cache_pressure=50
Run Code Online (Sandbox Code Playgroud)

  • “JFS 文件系统。它坚如磐石。它具有最低的 CPU 使用率和非常好的整体性能” - 除了“有人告诉我这个”之外,提供一些确认怎么样?任何一种基准?在什么情况下它是好的 - 例如,在带有 SSD 的现代计算机上它也是一个好主意吗? (3认同)

web*_*rst 5

如果您想查看在 Ubuntu 10.04 上启动后启动了哪些服务,请运行“jobs-admin”。

sudo apt-get install jobs-admin
Run Code Online (Sandbox Code Playgroud)


Jon*_*nna 5

配置交换

第 1 部分。设置swappiness。这可能是根据 degusa 的回答,但也可能相反,如果是,它会产生更大的影响。

我们中的一些人很高兴进入的一种情况是我们有足够的 RAM。通常,我们有一小部分被内核和应用程序直接使用,一些(如果您使用其他调整来提高性能,例如在内存中安装 /tmp,则可能会很大)用于 ramfs 和 tmpfs,以及gigs 和 gigs 被用作磁盘缓存,使我们的文件访问速度更快。

在这种情况下,一旦包括缓存在内的总使用内存变高,并且应用程序需要更多 RAM,linux 必须决定是从文件系统中获取一些缓存,还是换出到交换分区/文件。

由于我们有大量的 RAM,而且很可能只关心交换,所以我们可以启用休眠,我们希望它倾向于占用一些大量的缓存,因此需要低交换。如果我们不在乎能不能休眠,我们甚至可能会发现,这么大内存的机器根本不需要交换。

另一种情况是内存不足的人在几个繁重的应用程序之间切换并在每个应用程序上花费合理的时间。想象一下,一个 Web 开发人员可能会花一些时间在他们的 IDE 上,一些在图形编辑器上,一些在他们选择的浏览器上,在其他一些浏览器上花一些时间来检查兼容性问题,也许每小时花 5 分钟在他们的邮件客户端上。他们还可能通过读取和写入重复访问相同的文件,因此从文件缓存中获益匪浅。这个人可能会受益于 linux 更渴望换出他们当前不活跃的那些重型应用程序中使用的内存,因此对他们来说 swappiness 应该更高。

不仅对他们来说最好的设置可能高于最常见的建议,而且他们可能会比那些总是有空余时间的人更注意到这一点,也是。

第 2 部分。分区的优先级和数量。

每个交换分区都有一个优先级,linux 将使用最高的优先级。如果未在 /etc/fstab 中设置,它将被视为从 -1 开始的负数(显式设置介于 0 和 32767 之间,因此 -1 低于任何显式设置)并在 fstab 中按顺序继续到 -2,- 3等。

最佳设置取决于分区的物理位置。如果您只有一个,那也没关系(但也许您应该拥有多个,所以请继续阅读)。

如果你在同一个物理驱动器上有两个或更多,那么它们应该有不同的优先级,这样它就不会尝试使用需要在它们之间寻找的两个分区(有人知道这是否会自动避免?)。默认值很好。无论如何,在同一个驱动器上有两个交换区可能不是一个好主意,但是如果您创建了一个交换区,然后决定稍后需要更多交换区(可能是在添加更多 RAM 时),则可能会发生这种情况。

如果您在两个或多个速度大致相同的物理驱动器上有两个或多个,那么将它们设置为相同的优先级将意味着 linux 将同时使用它们,这提供了更好的性能,原因类似于 RAID 或只需确保两个驱动器上都有经常使用的文件 - 工作会在它们之间拆分。

如果您有两个或多个速度相同的物理驱动器,但仅在一个上进行交换,那么出于上述原因,也许您应该更改它。

如果您有两个或多个速度非常不同的物理驱动器,那么通常您希望最快的驱动器比较慢的驱动器具有更高的优先级,因此首先使用它。您甚至可能不想在较慢的驱动器上进行任何交换,但如果您在快速但较小的驱动器上进行小交换以进行快速交换,而在较慢的驱动器上进行较大的交换,则这可能是有意义的,因此您有足够的空间来冬眠。

如果两者中较快的是 SSD,那么有两种不同优缺点的替代方案:

  1. 最高优先级,或者可能只是,在 SSD 上进行交换,以提高速度。
  2. 仅在非 SSD 上进行交换,以减少对 SSD 的写入,从而延长其使用寿命。

如果您真的只有交换以允许休眠,那么第 2 号可能是首选,否则您的大量 RAM 意味着您并不真正需要它(如果您在 SSD 上花钱,则应该将其花在 RAM 上)太)除非您是一个启动速度狂热者,想要以能够炫耀您的高规格装备的速度从休眠状态启动!否则,平衡就是速度与 SSD 寿命。

如果您有一个仅用于交换的驱动器,以免与其他文件 I/O 竞争,那么您大概是性能的核心,并且已经比我更了解这些东西,并且阅读本文只是为了看看我是否有哪里不对了!