通过数据定位优化磁盘的缓存(一)
2013-12-16 16:18:43 来源:华军科技数据恢复
磁盘缓存可能处于I/O路径的不同位置。我们将探讨最常见的一些位置,分析它们对主机系统的影响,以及对存储总线或网络传输能力的影响。所考虑的四种情况包括:
主机系统内存。
设备或子系统,
主机I/O控制器。
存储网络中的独立缓存。
1.在主机内存中实现磁盘缓存
实现磁盘缓存最常见的位置是主机内存。为了实现这个方案,必须在满足指定应用的基础上增加一些内存,这些增加的内存即分配给磁盘缓存的内存。图中显示了设计在I/O路径上的服务器的基本缓存。
主机系统内存。
设备或子系统,
主机I/O控制器。
存储网络中的独立缓存。
1.在主机内存中实现磁盘缓存
实现磁盘缓存最常见的位置是主机内存。为了实现这个方案,必须在满足指定应用的基础上增加一些内存,这些增加的内存即分配给磁盘缓存的内存。图中显示了设计在I/O路径上的服务器的基本缓存。
从另一个方面看,缓存的系统内存也可能位于系统内存总线,且由缓存进程管理。
放在系统内存的缓存中的数据能通过系统总线极快地被访问。事实上,除了CPU和系统内存缓存外,系统内存的访问速度最快。
虽然如此,系统CPU却成为了缓存的控制器。此外,缓存操作也需要占用系统资源,这给系统带来某种程度的额外开销,包括上述所列的实现磁盘缓存所必需的资源。主机系统中另一个重要的资源是用作缓存内存的可用内存。占用应用所需的内存预留给磁盘缓存并不是一个好主意。
警告对于处理器紧张的系统,不建议使用基于主机的缓存。“处理器紧张”是一个相对的概念,取决于几个因素。当运行正常应用时,如果CPU的使用率超过75%,那么,系统就是处理器紧张的
2.在磁盘子系统中实现磁盘缓存
实现磁盘缓存的另一个常见的位置是磁盘子系统。正像在主机系统中实现一样,它也需要在存储子系统中安装额外的内存。然而,与一般的内存相比,这个额外的内存往往相当地昂贵。图中显示了设备/子系统中的缓存实现。
虽然如此,系统CPU却成为了缓存的控制器。此外,缓存操作也需要占用系统资源,这给系统带来某种程度的额外开销,包括上述所列的实现磁盘缓存所必需的资源。主机系统中另一个重要的资源是用作缓存内存的可用内存。占用应用所需的内存预留给磁盘缓存并不是一个好主意。
警告对于处理器紧张的系统,不建议使用基于主机的缓存。“处理器紧张”是一个相对的概念,取决于几个因素。当运行正常应用时,如果CPU的使用率超过75%,那么,系统就是处理器紧张的
2.在磁盘子系统中实现磁盘缓存
实现磁盘缓存的另一个常见的位置是磁盘子系统。正像在主机系统中实现一样,它也需要在存储子系统中安装额外的内存。然而,与一般的内存相比,这个额外的内存往往相当地昂贵。图中显示了设备/子系统中的缓存实现。
在存储设备或子系统中实现缓存具有一个明显优势,即主机系统的CPU将不会受到缓存操作的影响。这对负荷很重的系统大有好处,也有益于那些要求更多处理能力的缓存方法,如预先读缓存。
然而,这种实现方法的缓存操作将比基于主机的缓存操作更慢,因为每个请求都要通过整个I/O路径—从CPU一直到缓存所在的设备/子系统。
每一个请求都经过I/O路径从CPU传到缓存,并由在子系统中的缓存控制器执行缓存算法,因而,不受其他进程的干扰,干扰的进程包括那些竞争主机CPU的应用、系统软件等,算法的执行速度很快。不仅缓存命中得到快速的响应,而且缓存未命中也能以极快的速度传到设备/子系统,且其延迟达到最小。
假如使用镜像子系统,存储子系统中的缓存需要两倍的缓存内存。例如,考虑设计一个镜像的存储子系统,每个子系统都安装自己的缓存内存,如果每个子系统的缓存内存相同,那么需要购买两倍的缓存内存。
然而,这种实现方法的缓存操作将比基于主机的缓存操作更慢,因为每个请求都要通过整个I/O路径—从CPU一直到缓存所在的设备/子系统。
每一个请求都经过I/O路径从CPU传到缓存,并由在子系统中的缓存控制器执行缓存算法,因而,不受其他进程的干扰,干扰的进程包括那些竞争主机CPU的应用、系统软件等,算法的执行速度很快。不仅缓存命中得到快速的响应,而且缓存未命中也能以极快的速度传到设备/子系统,且其延迟达到最小。
假如使用镜像子系统,存储子系统中的缓存需要两倍的缓存内存。例如,考虑设计一个镜像的存储子系统,每个子系统都安装自己的缓存内存,如果每个子系统的缓存内存相同,那么需要购买两倍的缓存内存。