分类: DB2/Informix
2008-05-31 16:51:29
对系统运行有影响的操作系统资源
数据库服务器应用程序的性能取决于以下因素:
当试图发现性能问题或者对系统作出调整时,必须考虑这些因素。
硬件主要由以下几个部分组成(但不止这些):
数据库服务器依赖于操作系统提供对设备的低级访问、进程调度、进程间通信和其他重要服务。
操作系统的配置对数据库服务器的性能有直接的影响。操作系统内核要占用大量物理内存,这部分内存是数据库服务器或其他应用程序不能使用的。但是,还必须预留适当的内核资源供数据库服务器使用。
除了调优内核外,对于栈大小、文件描述符数量等不同资源也有软限制。这些资源可以通过 ulimit
命令进行检查和调整。(本教程不谈这个命令。)
操作系统处理同时运行的多个应用程序的一种常见机制是交换空间。可能需要添加或调优交换空间。
而且,临时目录是很多常见应用程序(例如 vi、ed或内核)的公共储存库。可能需要根据操作系统上的用户和应用程序的需要相应地调整临时目录。
监视磁盘使用情况很重要。如果某个表使用比较频繁,它存放在一个磁盘上,那么这个表与同一个磁盘上的另一个使用也比较频繁的表之间就会竞争 i/o。对于磁盘控制器也是如此。
在这种情况下,可以进行负载均衡,将表转移到另一个磁盘,从而轻松地提高性能。
依赖于网络与数据库服务器通信的应用程序,以及依赖于数据复制来维护高可用性的系统,其性能都要受到网络的约束。在网络上传输数据通常比从磁盘传输数据慢。网络延时对数据库服务器和其他在主计算机上运行的应用程序的性能有很大的影响。
操作系统需要在内存中有一个页面,以便在那个页面上执行操作。如果操作系统需要分配内存供一个进程使用,它首先尝试提取它发现的内存中未被使用的页面。但是,如果没有空白页面呢?
这时内存管理系统必须选择其他进程正在使用的页面。引擎尽量确定看上去短时间内最不可能需要的页面,以便用新的页面置换它们。找到那些可以被置换的页面的过程就叫做页面扫描。页面扫描会增加对 CPU 的利用。
大多数内存管理系统使用最近最少使用算法以确定内存中哪些页面可以被置换。这些页面首先被复制到磁盘上。复制完毕后,内存便释放出来,供其他进程使用。当一个页面被写出到磁盘上时, 它被写到一个称作交换空间的特定区域。 这个空间通常是一个专用磁盘或磁盘分区。这个磁盘或磁盘分区称作交换空间或交换区,它们将存放这些交换出的页面。这个过程称作换页(paging)。换页过程需要利用 I/O 资源和 CPU 周期。
在某个时候,必须将换出的页面镜像换回到内存中,以便需要它们的进程可以使用它们。所以对于其他较旧的页面(最近没有被使用的页面),这个周期又开始了。如果非常频繁地这样来回交换,操作系统可能达到这样一种状态:内核几乎完全被用于页面的换进和换出。这种状态称作系统失效(thrashing),所有有用的工作都被终止。
为了防止系统失效,有些操作系统的内存管理算法大致地确定一个阈值。它不是寻找较旧的页面,而是换出用于某个特定进程的所有页面。这个过程称作交换(swapping)。
每个被换出的进程最终必须被换回到内存中。这大大增加了对交换设备的磁盘 I/O,也增加了进程间切换所需的时间,因为现在每次上下文切换还必须将与进程相关的所有页面换进内存。因此,性能受到将那些页面从交换磁盘传输到内存的速度的限制。正在进行交换的系统会严重超载,其吞吐量会降低。
很多操作系统在提供关于换页活动的信息方面有一些共同之处,这些信息包括执行的页面扫描次数、从内存送出(换出)的页面数量和送入(换进)内存的页面数量:
可以使用下面的公式,根据给定的 CPU 使用情况和换页率计算预计的换页延时:
PD = (C/(1-U)) * R * T
符号 | 描述 |
---|---|
PD | 换页延时 |
C | 用于一个事务的 CPU 服务时间 |
U | 十进制表示的 CPU 利用率 |
R | 换出率 |
T | 用于交换设备的服务时间 |
随着换页的增加,CPU 利用率也增加,因此它们之间存在联系。如果每秒 15 次的换页率导致 3% 的 CPU 利用率,那么将换页率增加到每秒 30 次将导致 CPU 利用率 3 个百分点。换页率越接近交换阈值,CPU 利用率增加得越快,直到发生交换。如果负载进一步增加,则系统将开始失效。