政府部门的 Linux 应用:优化桌面性能,第三部分

作者:Tom Adelstein

正如我们在本系列文章的第一部分第二部分中讨论的那样,在 Linux 存在的大部分时间里,人们将其作为工作站或服务器而不是桌面进行分发。演变而来的默认工作站主要供开发人员使用。因此,当您安装带有图形界面的 Linux 发行版时,它通常符合开发人员的偏好。此外,它的性能类似于许多 UNIX 工作站,这可能会显得迟缓。

对于新的桌面用户来说,Linux 的一些默认功能似乎很慢,但对于长期工作站用户来说,这些功能完全可以接受。当我们开始禁用减慢启动过程的服务时,一些 Linux 用户可能会反对。例如,终止邮件传输代理可能意味着发送给 root 或管理员的服务消息将不会发送。然而,想要快速启动笔记本电脑的人可能不在乎这一点。但是,对于系统管理员和开发人员来说,错过分析程序缺陷的机会就变成了一次损失的机会。

大多数开发人员和管理员不会重启他们的工作站。他们认为正常运行时间是衡量 Linux 稳定性的重要指标,并且似乎不介意运行他们不使用的服务。如果您运行命令 top,您就可以明白为什么。看看图 1。

Linux in Government: Optimizing Desktop Performance, Part III

图 1. 运行 top 查看进程

正如您在图 1 中看到的,存在 70 个进程或任务,但 68 个处于睡眠状态。打开终端并运行top在您自己的系统上,并观察进程如何激活和进入睡眠状态。要退出程序,只需键入q。因此,即使您启动了一项服务,它也可能很少唤醒并占用大量 CPU 周期或需要大量内存。

对于想要快速启动操作系统的桌面和笔记本电脑用户来说,摆脱您不需要的服务似乎可以提高性能。但是,显然,如果您是 Linux 新手,您可能不知道哪些进程可以安全地删除,也不知道如何停止它们并防止它们在启动时重新启动。

注意:在本系列的第一部分中,我们说过我们将专注于 Fedora Core 3 和 Ubuntu 5.04。这一点没有改变。根据您的发行版,本系列中讨论的一些调整可能不适用。

此外,一些读者建议我们在我们的调整上贴上警告标签。当您尝试我们讨论的任何建议时,请意识到它们可能存在相关风险。虽然我们希望最大化性能,但您必须尝试我们的一些建议。我们的一些示例可能仅仅为了说明目的而存在,例如使用 hdparm 的练习。我们说明并强调了硬盘驱动器有可能提高或降低性能。您可能了解硬盘驱动器如何提高性能,但仍然选择接受您现有的情况。

Linux 中的初始化过程

在您可以缩减 Linux 安装中的进程以提高性能之前,了解一些关于操作系统在启动时初始化服务的方式会有所帮助。虽然这代表了一个简单的解释,但它可以为您提供足够的背景知识来完成禁用不需要的服务的任务。

在启动期间,init 进程运行并在内核初始化所有设备后启动软件。根据发行版,Linux 定义了系统状态或运行级别,例如文本模式或图形模式。在 Fedora 中,当您发出命令#init 3例如,您将 Linux 置于具有全范围服务的完全多用户支持状态,但您只能看到文本或命令行界面。运行#init 5会导致您更改状态并在图形模式下运行。

Linux 专用服务器通常在 init 3 模式下运行。为了让您了解人们在 GNOME 和 KDE 成熟之前如何看待 Linux,以下是 1999 年 Craig Hunt(Linux Network Servers, Sybex)的一段引言

运行级别 5 将系统初始化为专用 X Windows 终端。我不认为这是强大 Linux 系统的最佳用途,但如果您愿意,您可以通过在运行级别 5 中启动来将系统用作终端。

Linux 开发人员已将操作系统从 1998-1999 年期间的简单 X 管理器发展成为与微软和苹果产品竞争的完整图形桌面。因此,如果您只是想要一个 Linux 桌面,您可能希望在图形模式而不是文本模式下启动。在 Fedora 中,这意味着您处于运行级别 5,而在 Ubuntu 中,您处于运行级别 2。

行业工具

如果您使用 Fedora Core 3,您可以在应用程序菜单上找到 system-config-services 工具,方法是选择 应用程序 -> 系统设置 --> 服务器设置 --> 服务。当您选择该选项时,您会看到一个提示,要求您输入管理员密码。输入密码后,您接下来会看到一个类似于图 2 所示的窗口。

Linux in Government: Optimizing Desktop Performance, Part III

图 2. system-config-services 屏幕

在图 2 的左侧,您可以看到当前在运行级别 5(您的默认运行级别)中运行的服务列表。

有时,对他们的发行版感到满意的 Fedora 用户可能会在邮件列表和论坛上看到一些评论,称该发行版为“臃肿软件”。Webopedia 将臃肿软件定义为

(名词)行话 指具有大量功能并需要相当大的磁盘空间和 RAM 的软件。随着 RAM 和磁盘存储成本的降低,软件开发人员越来越倾向于无视应用程序的大小。有些人将这种趋势称为功能蔓延。如果功能蔓延是症状,那么臃肿软件就是疾病。

如果您查看图 2 中选中的服务列表,您可以看到许多服务已被选中。请记住,Red Hat 提供 Fedora 是为了为其计划纳入其 Red Hat Enterprise Linux 产品中的创新提供测试平台。如果 Red Hat 出售该产品,人们可能会认为 Fedora 是臃肿软件。就目前而言,我认为 Fedora 是一款不错的产品,我可以对其进行修改以适应我的偏好。

对于桌面用途,我首先禁用 apmd、autofs、identd、ip6tables、iptables、isdn、lpd、nfs、portmap、talkd 和 sendmail。您可以使用 system-config-services 来完成此操作。但是请记住,无论您在运行级别 5 中禁用什么,您也应该考虑在其他运行级别中禁用。如果您运行命令#init 3并且没有优雅地进入该模式,您必须返回并检查您的服务设置。

在 Fedora 中编辑服务的另一种方法是使用名为 ntsysv 的命令行实用程序。当您运行该命令时,您会看到一个类似于图 3 所示的屏幕。

Linux in Government: Optimizing Desktop Performance, Part III

图 3. 编辑 Fedora

不幸的是,这里的空间限制不允许详细讨论每个服务。如果您不熟悉它们,请使用图 2 中所示的 system-config-services 实用程序,并阅读有关每个服务的说明。此外,使用 Google 搜索您不熟悉的服务。

人们可能希望在 Fedora 上禁用的其他服务包括

  • mDNSResponder:供 Howl 客户端用于在网络上执行 Zeroconf 服务发现;否则不应运行。

  • mdmonitor:软件 RAID 监控和管理多路径设备,单驱动器系统不需要。

  • mdmpd:用于创建、管理和监控软件 RAID 卷。

  • httpd:除非您运行 Web 服务器,否则不需要。

  • iptables:用于防火墙。

  • kudzu:用于发现新的外围设备;如果您以后添加外围设备,可以重新部署。

  • mysqld:如果您不使用数据库,则不需要。

如果您不使用网络文件系统 (NFS),您还可以禁用 netfs、netplugd、network、nfslock 和 nfs。并且,如果您不与 Microsoft Windows 共享网络,您可以禁用 smb 和 nmb。

我还选择在我的桌面上禁用 SELinux,因为它对资源的要求较高。我认为 SELinux 对于服务器或在需要时在安全和机密环境中很重要,但在正常的桌面使用中不是必需的。与其他服务一样,测试并查看它是否会减慢您的启动过程或抑制桌面性能。

Ubuntu 服务性能调优

与 Fedora 不同,大多数 Linux 用户不认为 Ubuntu 是臃肿软件发行版。在其默认模式下,很少有不必要的服务运行。尽管如此,对于严格的桌面使用,我还是发现了一些可以提高性能的调整。

Ubuntu 没有提供禁用服务的图形工具。如果您具备在文本模式下运行命令来管理服务的必要技能,您可能已经知道您想要启用或禁用哪些服务。我从 Ubuntu 存储库下载了几个工具,包括 sysv-rc-conf、rcconf 和 bum。我发现 bum 是 Ubuntu 最全面且用户友好的工具。

您必须从 其网站下载 bum。安装并重新登录桌面后,您应该会在菜单中看到它,列为 Boot-up Manager,简称 bum。参见图 4。

Linux in Government: Optimizing Desktop Performance, Part III

图 4. 启动管理器菜单

从菜单中选择 bum 后,您必须输入您的管理员密码。您应该会看到类似于图 5 所示的窗口。

Linux in Government: Optimizing Desktop Performance, Part III

图 5. Ubuntu 的启动管理器 (bum)

正如您所看到的,Ubuntu 的启动管理器提供了重要的细节。在许多情况下,它可以为您提供足够的信息,以防止您在禁用或启用服务时犯错误。

在 Ubuntu 中,我为严格的桌面使用禁用了一些服务。我从以下服务开始

  • ntpdate:一个实用程序,用于在每次重启时更新系统时钟。

  • pcmcia:仅在笔记本电脑配备 PCMCIA 卡时使用。

  • ppp:点对点协议,仅当您有调制解调器时使用。我禁用了桌面中的内置调制解调器,只使用网卡。

  • powernowd:我使用带有 Ubuntu 的 AMD 处理器,此服务不适用于 AMD。

  • rsync:一个实用程序,如果您希望镜像或备份数据,它可以提供快速的增量文件传输。我不使用它。

  • fetchmail:一个实用程序,用于检索和转发邮件并充当 smtp 的网关。我使用 Linux 群件客户端,所以我没有使用这个实用程序。

  • postfix:一个类似于 sendmail 的邮件传输代理。我使用来自我的 ISP 和我们公司域的邮件服务器,所以我认为不需要这个。

一旦我在 bum 中取消选中这些服务,我重新启动并注意到到达我的 GNOME 桌面的时间显着减少。然后我调查了我的系统并禁用了其他服务,包括 LVM、mdadm、EVMS 和 pppd-dns。再次,我重新启动并看到启动时间显着减少。

另一个注意事项:Ubuntu 安装时默认内核设置为 i386 处理器。因为我使用 i686 内核,所以我发现升级也显着提高了我的系统性能。要做到这一点,如果您使用 AMD,您可以使用 Synaptic 搜索 linux-image-2.6.10-5-k7,如果您使用 Pentium Pro/Celeron/Pentium II/Pentium III/Pentium IV,则搜索 linux-image-2.6.10-5-686。

如果您希望从源代码创建自定义内核,开发人员通常会生成内核映像包。我们将在以后的文章中介绍该过程。

通过选择并安装内核包,您可以将默认内核升级到针对新处理器优化的内核。您应该会体验到性能提升。

如果您决定禁用上述服务,请考虑使用图形启动管理器 (bum)。我读到了一些用户关于修改 init 脚本的令人不安的建议。您希望能够返回并在禁用服务导致您遇到问题时启用服务。使用 bum,您可以做到这一点。使用一些命令行技术,您可能会发现自己身处一群愤怒的马蜂窝中,而没有逃生计划。

重要评论

加载 Linux 服务和初始化过程的主题需要许多桌面用户不具备的经验和知识。如果您冒险禁用您认为不必要的服务,我强烈建议您订阅专门针对您的发行版的新闻组或论坛——您可能需要支持。

另一方面,您可能会发现您对 Linux 操作系统内部原理有诀窍。如果是这样,请通过搜索 Linux 文档在线探索该主题。Linux 提供了您无法通过专有系统了解的迷人技术。关于几乎所有与 Linux 技术相关的主题都存在许多不同的观点。如果您渴望更多地了解是什么让您的计算机运转,机会就在眼前。

Tom Adelstein 是 Hiser + Adelstein 的负责人,Hiser + Adelstein 是一家总部位于纽约市的开源公司。他是《探索 JDS Linux 桌面》一书的合著者,也是即将由 O'Reilly 出版的关于 Linux 系统管理的书的作者。自 1999 年初以来,Tom 一直在咨询和撰写关于 Linux 的文章和书籍。

加载 Disqus 评论