8 一般系统资源管理 #
微调系统不仅能优化内核或发挥应用程序的最大作用,还能从一开始就设置一个精简且快速的系统。设置分区和文件系统的方式可能会影响服务器的速度。活动服务的数目以及安排例行任务的方式也会影响性能。
8.1 规划安装 #
精心规划的安装可确保完全按照您的需求和目的设置系统。另外,在微调系统时还可以节省大量时间。本节建议的所有更改都可以在安装期间的第 8.15 节 “安装设置”。
步骤中做出。有关详细信息,请参见8.1.1 分区 #
根据服务器的应用程序范围和硬件布局,分区方案可能会影响计算机的性能(不过影响程度较小)。本手册不会建议如何为特定工作负载选择不同分区方案,因为这超出了本手册的讨论范围。但是,以下规则能够对性能产生积极影响。使用外部储存系统时,这些规则不适用。
请确保磁盘上始终留有一些可用空间,因为若磁盘已满则无法提供最佳性能
例如,可通过以下方式将同时进行的读取和写入访问分散到不同的磁盘:
为操作系统、数据和日志文件使用不同的磁盘
将邮件服务器的假脱机目录放在单独的磁盘上
将主服务器的用户目录在不同的磁盘之间分发
8.1.2 安装范围 #
虽然安装范围不会直接影响计算机的性能,但认真选择软件包范围还是有益处的。建议安装满足运行服务器所需的最少量的软件包。包含最少量软件包的系统更容易维护,且潜在安全问题也更少。此外,定制安装范围还可确保默认不会启动不必要的服务。
SUSE Linux Enterprise Server 可让您在“安装摘要”屏幕上自定义安装范围。默认情况下,您可以选择或去除特定任务的预配置软件集,但也可以启动 YaST 软件管理器以基于软件包进行精细选择。
不一定所有情况都需要以下一个或多个默认软件集:
服务器极少需要完整的桌面环境。如果需要图形环境,较为经济实惠的解决方案(例如 IceWM)便已足够。
如果只通过命令行管理服务器及其应用程序,建议不要安装此软件集。但请注意,从远程计算机运行 GUI 应用程序需要此软件集。如果您的应用程序是通过 GUI 管理的,或者您偏好 GUI 版本的 YaST,请保留此软件集。
仅当您要从计算机打印时,才需要此软件集。
8.1.3 默认目标 #
运行 X Window 系统会消耗大量资源,在服务器上极少需要它。强烈建议在目标 multi-user.target
中启动该系统。您仍可以远程启动图形应用程序。
8.2 禁用不必要的服务 #
默认安装会启动多个服务(数量视安装范围而定)。由于每个服务都会消耗资源,因此建议禁用不需要的服务。运行
› › 来启动服务管理模块。如果您使用图形版本的 YaST,可以单击列标题对服务列表进行排序。使用此方法可以获取当前正在运行服务的概览。使用
按钮禁用运行中会话的服务。要永久禁用该服务,请使用 按钮。以下列表显示了在安装 SUSE Linux Enterprise Server 后默认启动的服务。检查您需要哪些组件,然后禁用其他组件:
装载 Linux 高级声音系统。
Audit 系统的守护程序(有关细节,请参见第 VI 部分 “Linux 审计框架”)。如果您不使用 Audit,请禁用此组件。
处理蓝牙硬件保护装置的冷插入。
打印机守护程序。
启用
*.class
或*.jar
Java 程序的执行。挂载 NFS 时所需的服务。
从 Windows* 服务器挂载 SMB/CIFS 文件系统时所需的服务。
在启动时显示欢迎屏幕。
8.3 文件系统和磁盘访问 #
硬盘是计算机系统中速度最慢的组件,因此经常造成瓶颈。使用最适合您工作负载的文件系统有助于提升性能。使用特殊挂载选项或指定进程的 I/O 优先级可以进一步加速系统。
8.3.1 文件系统 #
SUSE Linux Enterprise Server 随附了多个文件系统,包括 Btrfs、Ext4、Ext3、Ext2、 和 XFS。每个文件系统都有各自的优点和缺点。有关详细信息,请参见第 1 章 “Linux 中文件系统的概述”。
8.3.1.1 NFS #
http://nfs.sourceforge.net/nfs-howto/ 上的 NFS 操作指南中详细介绍了 NFS(版本 3)微调方法。挂载 NFS 共享时要试验的第一项操作是使用挂载选项 wsize
和 rsize
将读写块大小增加到 32768
。
8.3.2 时戳更新策略 #
文件系统中的每个文件和目录有三个关联的时戳:上次读取文件的时间(称为访问时间)、上次修改文件数据的时间(称为修改时间),以及上次修改文件元数据的时间(称为更改时间)。让访问时间始终保持最新会产生极大的性能开销,因为每次进行只读访问都会产生一个写入操作。因此,默认情况下,只会在当前文件访问时间超过一天或者早于文件修改时间或更改时间时,每个文件系统才会更新访问时间。此功能称为相对访问时间,对应的挂载选项为 relatime
。您可以使用 noatime
挂载选项完全禁用访问时间更新,但需要校验应用程序确实不使用这种更新。文件服务器和 Web 服务器或网络储存都满足此条件。如果默认相对访问时间更新策略不适合您的应用程序,请使用 strictatime
挂载选项。
某些文件系统(例如 Ext4)还支持迟缓时戳更新。使用 lazytime
挂载选项启用此功能后,所有时戳的更新将在内存中发生,但不会写入到磁盘。只有在响应 fsync
或 sync
系统调用时、由于其他原因(例如文件大小更新)而写入文件信息时、当时戳超过 24 小时时,或者需要从内存中逐出已缓存的文件信息时,才发生这种更新。
要更新文件系统使用的挂载选项,请直接编辑 /etc/fstab
,或者在通过 YaST 分区程序编辑或添加分区时使用 对话框。
8.3.3 使用 ionice
指定磁盘访问优先级 #
ionice
命令可让您指定单个进程的磁盘访问优先级。这样,您便可以将较低的 I/O 优先级分配给频繁访问磁盘的非时间关键型后台进程,例如备份作业。ionice
还可让您提高特定进程的 I/O 优先级,以确保此进程始终能够立即访问磁盘。使用此功能时需要注意的是,标准写入操作将缓存在页缓存中,以后只能由独立的内核进程写回到永久储存设备。因此,I/O 优先级设置通常不适用于这些写入操作。另请注意,只有 blk-mq I/O 路径的 BFQ I/O 调度程序才遵守 I/O 类和优先级设置(请参见第 12.2 节 “使用 blk-mq I/O 路径的可用 I/O 电梯算法”)。您可以设置以下三个调度类:
- 空闲
仅当没有其他进程请求磁盘 I/O 时,才会向空闲调度类中的进程授予磁盘访问权限。
- 尽力而为
未请求特定 I/O 优先级的任何进程都会使用的默认调度类。可在从
0
到7
的范围内(0
是最高优先级)调整此类中的优先级。对于以相同的尽力而为 (best-effort) 优先级运行的程序将按循环方式提供服务。某些内核版本会按不同的方式处理尽力而为 (best-effort) 类中的优先级 — 有关细节,请参见ionice(1)
手册页。- 实时
始终最先为此类中的进程授予磁盘访问权限。可在从
0
到7
的范围内(0
是最高优先级)微调优先级。请慎用此类,因为它可能会导致其他进程无法获得访问权限。
有关更多细节和确切的命令语法,请参见 ionice(1)
手册页。如果您需要更可靠地控制每个应用程序可用的带宽,请使用第 9 章 “内核控制组”中所述的内核控制组。