首页> 中国专利> 基于IO延迟时间分布优化中断处理任务的方法

基于IO延迟时间分布优化中断处理任务的方法

摘要

提供了基于IO延迟时间分布优化中断处理任务的方法。计算机系统包括第一处理单元和第二处理单元,所述计算机系统同存储设备相耦合;所述方法包括:接收用于访问所述存储设备的第一IO请求;记录所述第一IO请求的开始时间;响应于接收到来自所述存储设备的指示所述第一IO请求处理完成的中断请求,记录所述第一IO请求的结束时间;计算所述第一IO请求的结束时间与所述第一IO请求的开始时间的第一时间差;计算一预定时间期间内所述第一时间差的分布;以及基于所述第一时间差的分布,优化与所述存储设备的IO请求相关联的中断处理任务的执行。

著录项

  • 公开/公告号CN102945214A

    专利类型发明专利

  • 公开/公告日2013-02-27

    原文格式PDF

  • 申请/专利权人 北京忆恒创源科技有限公司;

    申请/专利号CN201210401747.9

  • 发明设计人 唐志波;路向峰;

    申请日2012-10-19

  • 分类号G06F13/24(20060101);

  • 代理机构

  • 代理人

  • 地址 100085 北京市海淀区上地信息路2号创业园D栋312

  • 入库时间 2024-02-19 16:59:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-10

    授权

    授权

  • 2013-12-04

    实质审查的生效 IPC(主分类):G06F13/24 申请日:20121019

    实质审查的生效

  • 2013-02-27

    公开

    公开

说明书

技术领域

本发明涉及固态存储设备(Solid Storage Device,SSD),更具体地,本发明 涉及存储设备向主机发出的中断。

背景技术

同机械式硬盘相类似,固态存储设备(SSD)也是用于计算机系统的大容量、 非易失性存储设备。固态存储设备一般以闪存(Flash)作为存储介质。高性能的固 态存储设备被用于高性能计算机。高性能计算机通常具有多个中央处理器(CPU, Centrol Process Unit),而每个CPU可包括多个CPU核。

在现代操作系统中,几乎每一个中断处理操作都被分成了两部分,即中断服务 程序(ISR)和下半部分处理程序(Bottom Half Handler);或者说中断处理的上半 部分(Top Half)和下半部分(Bottom Half);在一些场合中,也被称为第一级中 断处理程序(FLIH,First-Level Interrupt Handler)和第二级中断处理程序(SLIH, Second-Level Interrupt Handlers)。两者之间的区别是:在中断处理的上半部分,中 断是被禁止的,精确地说是至少有一个中断(当前中断)在一个CPU上(当前CP U)是被禁止的,在某些情况下,可能当前CPU的全部中断都被禁止;而在中断处 理的下半部分,系统中的中断都是允许的,新的中断可以随时抢占下半部分处理程 序。通过将中断处理划分为两部分,并且让上半部分处理函数只做最少最快的工作 --例如将数据从设备缓冲区拷贝到内存,而将后续的更耗时间的工作留给下半部分 处理程序去执行,有效地减少了中断阻塞的时间,从而提高了系统的中断处理效率。

在美国专利申请US2011/0087814A1中,提供了通过中断亲和性机制来增强多 处理器系统中的IO(Input Output)性能的方案。参看图1,主机100包括CPU 10 1、102、103和104,应用程序111、112、113和114分别运行在各自的CPU上。 高速缓存121、122、123和124分别同CPU 101、102、103和104相耦合,用于存 储分别用于应用程序111、112、113和114的指令和数据。而具有较大容量的存储 器131、132、133和134分别耦合到高速缓存121、122、123和124。主机总线适 配器(HBA,Host Bus Adapter)150通过IO APIC(Advanced Programmable Interr  upt Controller,高级可编程中断控制器)集线器140耦合到主机100,并配置为同 存储域网络(SAN,Storage Area,Network)160通信。SAN 160连接到多个诸如硬 盘的计算机存储设备170。中断亲和性机制意味着,当I/O APIC集线器140接收到 来自HBA 150的中断时,确定由主机100的多个CPU中的哪一个来处理中断。例 如,记录发出IO请求的CPU标识符,当接收到对应于该IO请求的中断时,基于 记录的CPU标识符来选择处理中断的CPU。

一些计算机具有NUMA(Non-Uniform Memory Access)或NUIO(Non-Unifor m Input Output)结构。在美国专利申请US2005/0060460A1中提供了在NUMA系 统中为多个节点中的IO设备指派中断的方案。参看图2,NUMA系统200包括通 过互连网络彼此耦合的节点201、211、221和231。每个节点201、211、221和23 1可包括处理器和存储器。给定节点的存储器相对于该节点的处理器是本地的,而 其他节点的存储器相对于该处理器是远程的。系统200包括IO设备202、212和2 42,以及用于IO设备202、212和242的中断服务例程(ISR,Interrupt Service Ro utine)203、213和223。系统200还包括中断分配软件222,用于将中断服务例程 203、213和223分配给IO设备202、212和242。中断服务例程的分配可基于下列 因素:设备所连接的节点,用于设备的ISR所位于的节点,以及节点的处理器。在 www.acpi.info/DOWNLOADS/ACPIspec50.pdf可获得的“Advanced Configuration and  Power Interface Specification”(2011年12月6日)提供了获取NUMA系统的各个N UMA域信息。

然而,高性能固态存储设备的IO处理能力显著提高,IO请求的数量和数据量 的增加,给CPU的处理造成了负担。因而,需要进一步优化对中断请求的处理。

发明内容

根据本发明的第一方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的方法,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦 合到所述多个处理单元中的一个,所述方法包括:

获取所述存储设备的标识符;

依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元;

将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理 单元上执行;

将所述中断处理任务的下半部分设置为在第二处理单元上执行;

其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。

根据本发明的第二方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的方法,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核 处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到 所述多个处理器插槽中的一个,所述方法包括:

获取所述存储设备的标识符;

依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽;

将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第 一处理器插槽上的多核处理器的第一处理器核上执行;

将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多 核处理器的第二处理器核上执行;

其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。

根据本发明的第二方面提供的方法,进一步包括,显示所述存储设备与所述第 一处理器插槽和/或所述第一处理器核的耦合关系。

根据本发明的第一方面或第二方面提供的方法,进一步包括,显示所述存储设 备与所述第一处理单元的耦合关系。

根据本发明的第二方面所提供的方法,还包括将访问所述存储设备的应用程序 设置为在布置于所述第一处理器插槽上的多核处理器的第三处理器核上执行,所述 第一处理器核、所述第二处理器核以及所述第三处理器核共享高速缓冲存储器。

根据本发明的第一方面或第二方面提供的方法,还包括获取并显示所述PCIE 总线的通道(Lane)数量。

根据本发明的第一方面或第二方面提供的方法,还包括获取并显示所述存储设 备的具有第一延迟时间的IO访问的数量,以及所述存储设备的具有第二延迟时间 的IO访问的数量,所述第一延迟时间不同于所述第二延迟时间。

根据本发明的第一方面或第二方面提供的方法,还包括获取并显示所述存储设 备的具有第一延迟时间范围的IO访问的数量,以及所述存储设备的具有第二延迟 时间范围的IO访问的数量,所述第一延迟时间范围不同于所述第二延迟时间范围。

根据本发明的第一方面提供的方法,将访问所述存储设备的应用程序设置为在 第二处理器上执行。

根据本发明的第一方面提供的方法,将访问所述存储设备的应用程序设置为在 第三处理单元上执行,第三处理单元与所述第一处理单元和第二处理单元共享高速 缓存。

根据本发明的第一方面或第二方面提供的方法,所述中断处理任务的上半部分 实现为工作队列或内核线程。

根据本发明的第一方面或第二方面提供的方法,所述中断处理任务的上半部分 用于保存寄存器状态并清除中断,所述中断处理任务的下半部分根据所保存的寄存 器状态确定第一IO请求处理完成。

根据本发明的第三方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的方法,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备 通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理单元中的一个,所 述方法包括:

识别所述第一PCIE插槽所耦合的第一处理单元;

确定所述存储设备耦合到所述第一处理单元;

将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理 单元上执行;

将所述中断处理任务的下半部分设置为在第二处理单元上执行;

其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。

根据本发明的第四方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的方法,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器 插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过 所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理器插槽中的一个,所述 方法包括:

识别所述第一PCIE插槽所耦合的第一处理器插槽;

确定所述存储设备耦合到所述第一处理器插槽;

将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第 一处理器插槽上的多核处理器的第一处理器核上执行;

将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多 核处理器的第二处理器核上执行;

其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。

根据本发明的第一方面或第三方面的方法,还包括将访问所述存储设备的应用 程序设置为在所述第一处理单元、所述第二处理单元或第三处理单元上执行,所述 第一处理单元、所述第二处理单元以及所述第三处理单元共享所述高速缓冲存储 器。

根据本发明的第二方面或第四方面的方法,还包括将访问所述存储设备的应用 程序设置为在布置于所述第一处理器插槽上的多核处理器的第三处理器核上执行, 所述第一处理器核、所述第二处理器核以及所述第三处理器核共享高速缓冲存储 器。

根据本发明的第一方面、第二方面、第三方面或第四方面的方法,进一步包括, 所述存储设备将所述计算机系统请求的数据以DMA方式传输到所述高速缓冲存储 器。

根据本发明的第五方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的装置,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦 合到所述多个处理单元中的一个,所述装置包括:

用于获取所述存储设备的标识符的模块;

用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元的 模块;

用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一 处理单元上执行的模块;

用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块;

其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。

根据本发明的第六方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的装置,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核 处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到 所述多个处理器插槽中的一个,所述装置包括:

用于获取所述存储设备的标识符的模块;

用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽 的模块;

用于将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所 述第一处理器插槽上的多核处理器的第一处理器核上执行的模块;

用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上 的多核处理器的第二处理器核上执行的模块;

其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。

根据本发明的第七方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的装置,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备 通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理单元中的一个,所 述装置包括:

用于识别所述第一PCIE插槽所耦合的第一处理单元的模块;

用于确定所述存储设备耦合到所述第一处理单元的模块;

用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一 处理单元上执行的模块;

用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块;

其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。

根据本发明的第八方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的装置,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器 插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过 所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理器插槽中的一个,所述 装置包括:

用于识别所述第一PCIE插槽所耦合的第一处理器插槽的模块;

用于确定所述存储设备耦合到所述第一处理器插槽的模块;

用于将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所 述第一处理器插槽上的多核处理器的第一处理器核上执行的模块;

用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上 的多核处理器的第二处理器核上执行的模块;

其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。

根据本发明的第九方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的方法,所述计算机系统包括第一处理单元和第二处理单元,所述计算机系统 同存储设备相耦合;所述方法包括:

将与所述存储设备的IO请求相关联的中断处理任务设置为在所述第一处理单 元上执行;

接收用于访问所述存储设备的第一IO请求;

记录所述第一IO请求的开始时间;

响应于接收到来自所述存储设备的指示所述第一IO请求处理完成的中断请 求,执行所述中断处理任务,以记录所述第一IO请求的结束时间;

计算所述第一IO请求的结束时间与所述第一IO请求的开始时间的第一时间 差;

计算一预定时间期间内所述第一时间差的分布;以及

基于所述第一时间差的分布,将中断处理任务设置为在所述第二处理单元上执 行。

根据本发明的第九方面的方法,还包括:

接收用于访问所述存储设备的第二IO请求;

记录所述第二IO请求的开始时间;

响应于接收到来自所述存储设备的指示所述第二IO请求处理完成的中断请 求,执行所述中断处理任务,以记录所述第二IO请求的结束时间;

计算所述第二IO请求的结束时间与所述第二IO请求的开始时间的第二时间 差;

计算一预定时间期间内所述第二时间差的分布;以及

基于所述第一时间差的分布与所述第二时间差的分布,将中断处理任务设置为 在所述第一处理单元或所述第二处理单元之一上执行。

根据本发明的第九方面的方法,还包括将所述第一时间差的分布传送给应用程 序。

根据本发明的第九方面的方法,还包括将所述第一时间差的分布和/或所述第 二时间差的分布传送给应用程序。

根据本发明的第十方面,提供了一种用于处理计算机系统中的存储设备的中断 请求的装置,所述计算机系统包括第一处理单元和第二处理单元,所述计算机系统 同存储设备相耦合;所述装置包括:

用于将与所述存储设备的IO请求相关联的中断处理任务设置为在所述第一处 理单元上执行的模块;

用于接收用于访问所述存储设备的第一IO请求的模块;

用于记录所述第一IO请求的开始时间的模块;

用于响应于接收到来自所述存储设备的指示所述第一IO请求处理完成的中断 请求,执行所述中断处理任务,以记录所述第一IO请求的结束时间的模块;

用于计算所述第一IO请求的结束时间与所述第一IO请求的开始时间的第一 时间差的模块;

用于计算一预定时间期间内所述第一时间差的分布的模块;以及

用于基于所述第一时间差的分布,将中断处理任务设置为在所述第二处理单元 上执行的模块。

根据本发明的第十方面的装置,还包括:

用于接收用于访问所述存储设备的第二IO请求的模块;

用于记录所述第二IO请求的开始时间的模块;

用于响应于接收到来自所述存储设备的指示所述第二IO请求处理完成的中断 请求,执行所述中断处理任务,以记录所述第二IO请求的结束时间的模块;

用于计算所述第二IO请求的结束时间与所述第二IO请求的开始时间的第二 时间差的模块;

用于计算一预定时间期间内所述第二时间差的分布的模块;以及

用于基于所述第一时间差的分布与所述第二时间差的分布,将中断处理任务 设置为在所述第一处理单元或所述第二处理单元之一上执行的模块。

附图说明

当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地 理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:

图1是根据现有技术的存储系统的结构框图;

图2是根据现有技术的NUMA系统的结构框图;

图3A是实施本发明实施例的中断优化方法的NUIO系统的结构框图;

图3B是根据本发明的实施例的中断优化方法的流程图;

图4A是实施本发明的另一实施例的中断优化方法NUIO系统的结构框图;

图4B是根据本发明的另一实施例的中断优化方法的流程图;以及

图5是根据本发明的又一实施例的中断优化方法的流程图。

具体实施方式

图3A是实施本发明实施例的中断优化方法的NUIO系统的结构框图。如图 3A所示的实施例的计算机系统具有NUIO结构,因为存储设备321耦合到CPU 30 1,而存储设备322耦合到CPU302,使得CPU 301与存储设备321之间的IO同C PU 322与存储设备321之间的IO是不同的。CPU 301和CPU 302均耦合到高速 缓存311,并且CPU 301和CPU 302共享高速缓存311。

CPU 301可通过诸如PCIE总线/接口耦合到存储设备321。在图3A示出一 个存储设备321耦合到CPU 301,但在一个实施例中,可将多个存储设备耦合到C PU 301。存储设备301可以是固态存储设备(SSD),也可以是具有PCIE接口的 其他存储设备。还可以将诸如DRAM(Dynamic Random Access Memory)的存储器 分别耦合到CPU 301和302,并因而形成NUMA结构的计算机系统。CPU 302与 存储设备322之间也通过诸如PCIE总线/接口耦合。CPU 301和302各自可具有本 地且非共享的高速缓存(未示出),诸如集成在CPU芯片内部的L1高速缓存。而 高速缓存311可以是布置在主板上或者集成在芯片组上的L2高速缓存。

由于存储设备321耦合到CPU 301,因而将同存储设备321相关联的中断处 理任务设置或绑定在CPU 301上执行是有利的。即,当存储设备321产生中断请求 时,中断请求被转发给CPU 301,由CPU 301通过执行ISR来处理该中断请求。将 ISR配置为处理同存储设备321相关联的中断处理任务的上半部分。例如,在ISR 中,查询并保存存储设备321所对应的PCI/PCIE设备存寄存器状态并清除中断。类 似地,将同存储设备322相关联的中断处理任务设置或绑定在CPU 302上执行。

参看图3B,图3B是根据本发明的实施例的中断优化方法的流程图。在步 骤360,获取存储设备321的标识符。对于PCI/PCIE设备,通过PCI配置空间获取 唯一描述存储设备321的标识符。基于存储设备321的标识符,在步骤370,确定 存储设备耦合到CPU 301与302之中的CPU 301。在Linux操作系统中,可通过 “/proc/cpuinfo”获得CPU 301所对应的APICID,继而访问APIC表获得与存储设备 321属于相同NUMA域的CPU 301。在Linux操作系统中,还可以通过用户空间的 “/sys/devices/pci<pci-bus>/<pci-dev>/numa_node”、 “/sys/devices/pci<pci-bus>/<pci-dev>/local_cpus”或 “/sys/devices/pci<pci-bus>/<pci-dev>/local_cpulist”获得与存储设备321属于相同 NUMA域的CPU 301。也可以在Linux的存储设备321的驱动程序中,通过 “dev-numa_node”获得与存储设备321属于相同NUMA域的CPU 301。在Windows 操作系统中,也可访问APIC表,并获得与存储设备321属于相同NUMA域的CPU  301。还可以通过查看存储设备301与存储设备321所在的电路板,确定CPU 301 与存储设备321的耦合关系。优选地,在电路板的用于耦合存储设备321的插槽上 标记该插槽所耦合的CPU 301,并通过配置文件、命令行接口或图形用户界面将存 储设备321与CPU 301的关联关系提供给驱动程序。

在步骤380,将与存储设备321相关联的中断处理任务的上半部分设置为在 CPU 301上执行。使用于存储设备321的ISR在CPU 301上执行。在一个实施例中, 当存储设备321产生中断请求时,中断请求被转发给CPU 301。在ISR中,查询并 保存存储设备321所对应的PCI/PCIE设备存寄存器状态并清除中断。可选地,在 ISR中还将数据从存储设备321的缓冲区拷贝到DRAM存储器和/或高速缓存311。 在步骤390,将与存储设备321相关联的中断处理任务的下半部分设置为在CPU 302 上执行。由于CPU 301与302共享高速缓存311,使得由中断处理任务的上半部分 所处理的数据可通过高速缓存311而被中断处理任务的下半部分访问,从而减少了 在DRAM存储器和高速缓存311之间交换数据而产生的开销。并且,也减少了在 CPU 301上切换中断处理任务的上半部分与下半部分而产生的开销。特别地,当存 储设备321频繁产生中断请求时,中断处理任务的上半部分将频繁执行,而将中断 处理任务的下半部分设置在不同于CPU 301的CPU 302上执行,也降低了CPU 301 的负担,并降低了中断处理任务的下半部分被频繁打断的几率。在一个实施例中, 将中断处理任务的下半部分实现为Linux操作系统提供的工作队列(Wordqueue)。 在一个实施例中,将中断处理任务的下半部分实现为内核线程,诸如Linux或 Windows等的操作系统都支持内核线程。对于存储设备322,也可通过步骤360-390, 以将其中断处理任务的上半部分设置在CPU 302上执行,并将其中断处理任务的下 半部分设置在CPU 301上执行。还可以将用于存储设备322的中断处理任务的下半 部分设置在不同于CPU 301与302的其他CPU上执行。

在进一步的实施例中,还将存储设备321与CPU 301的耦合关系保存并提供 给应用程序,使得用户可通过应用程序获取存储设备321与CPU 301的耦合关系。 以及,在依然进一步的实施例中,依据存储设备321与CPU 301的耦合关系,将访 问存储设备321的应用程序设置为在CPU 301或302上执行。

图4A是实施本发明实施例的中断优化方法的NUIO系统的结构框图。如图 4A所示的实施例的计算机系统具有NUIO结构,因为存储设备431耦合到CPU插 槽405,而存储设备441耦合到CPU插槽415,使得CPU插槽405与存储设备431 之间的IO同CPU插槽415与存储设备441之间的IO是不同的。CPU 400布置于 CPU插槽405中,而CPU 410布置于CPU插槽415中。CPU 400、410可以是多核 CPU,并且CPU 400包括CPU核401、402,而CPU 410包括CPU核411和412。 在CPU 400内,布置有由CPU核401、402共享的高速缓存403,而在CPU 410内, 布置有由CPU核411、412共享的高速缓存413。CPU核401、402、411和412可 分别配置有独占的高速缓存(未示出)。

CPU 400与CPU 410之间通过诸如QPI(QuickPath Interconnect)或FSB (Front-Side Bus)的高速连接450相耦合。PCIE插槽435、445分别耦合到CPU插 槽405、415,并进而分别耦合到CPU 400、410。PCIE插槽435、445上分别耦合 有存储设备431、441。存储设备431、441可以是固态存储设备(SSD),也可以 是具有PCIE接口的其他存储设备。还将诸如DRAM(Dynamic Random Access  Memory)的主存储器421、422分别耦合到CPU 400和410,并因而形成NUMA结 构的计算机系统。并且,所属领域技术人员将意识到,CPU 400可以访问耦合到CPU 插槽405的主存储器421和存储设备431,并且也可以访问耦合到CPU插槽415的 主存储器422和存储设备441。类似的,CPU 410可以访问耦合到CPU插槽415的 主存储器422和存储设备441,并且也可以访问耦合到CPU插槽405的主存储器421 和存储设备431。

由于存储设备431耦合到CPU 400,因而将同存储设备431相关联的中断处 理任务设置或绑定在CPU 400上执行是有利的。即,当存储设备431产生中断请求 时,中断请求被转发给CPU 400,由CPU 400通过执行ISR来处理该中断请求。将 ISR配置为处理同存储设备431相关联的中断处理任务的上半部分。例如,在ISR 中,查询并保存存储设备431所对应的PCI/PCIE设备存寄存器状态并清除中断。类 似地,将同存储设备441相关联的中断处理任务设置或绑定在CPU 410上执行是有 利的。

参看图4B,图4B是根据本发明的实施例的中断优化方法的流程图。在步骤 460,获取存储设备431的标识符。对于PCI/PCIE设备,通过PCI配置空间获取唯 一描述存储设备431的标识符。在步骤470,确定存储设备431耦合到CPU插槽405 和CPU插槽415之中的CPU插槽405,并进而确定存储设备431耦合到CPU 400。 可通过访问基于高级配置和电源接口规范(Advanced Configuration and Power  Interface Specification)的APIC表获得与存储设备431属于相同NUMA域的CPU 400 及其CPU核401、402。也可以通过查看PCIE插槽435与CPU插槽405所在的电 路板,确定CPU插槽405与PCIE插槽435之间的耦合关系。优选地,在电路板的 用于耦合存储设备431的PCIE插槽435上标记该插槽所耦合的CPU插槽405,或 者耦合到CPU插槽405的CPU 400和/或CPU核401、402,并通过配置文件、命令 行接口或图形用户界面将存储设备431与CPU 400和/或CPU核401、402的关联关 系提供给驱动程序和/或访问存储设备的431的应用程序。类似地,在电路板的用于 耦合存储设备441的PCIE插槽445上标记该插槽所耦合的CPU插槽415,或者耦 合到CPU插槽415的CPU 410和/或CPU核411、412。并将存储设备441与CPU 410 和/或CPU核411、412的关联关系提供给驱动程序和/或访问存储设备的441的应 用程序。

在步骤480,将与存储设备431相关联的中断处理任务的上半部分设置为在 CPU 400的CPU核401上执行。使用于存储设备431的ISR在CPU核401上执行。 在一个实施例中,当存储设备431产生中断请求时,中断请求被转发给CPU核401。 在ISR中,查询并保存存储设备431所对应的PCI/PCIE设备存寄存器状态并清除中 断。可选地,在ISR中还将数据从存储设备431的缓冲区拷贝到主存储器421和/ 或高速缓存403。

在步骤490,将与存储设备431相关联的中断处理任务的下半部分设置为在 CPU 400的CPU核402上执行。在中断处理任务的下半部分中,根据中断处理任务 的上半部分存储的寄存器状态确定是哪一个IO请求完成,完成相应的IO并更新统 计信息。由于CPU核401、402共享高速缓存403,使得由中断处理任务的上半部 分所处理的数据可通过高速缓存403而被中断处理任务的下半部分访问,从而减少 了在主存储器421和高速缓存403之间交换数据而产生的开销,也减少了在CPU 400 和CPU 410之间交换数据而产生的开销。并且,也减少了在CPU核401上切换中 断处理任务的上半部分与下半部分而产生的开销。

对于存储设备441,也可通过步骤460-490,以将其中断处理任务的上半部 分设置在CPU410的CPU核411上执行,并将其中断处理任务的下半部分设置在 CPU 410的CPU核412上执行。所属领域技术人员将意识到,当CPU 410的负载较 高时,也可以将用于存储设备441的中断处理任务的下半部分设置在CPU 400或其 他CPU上执行。

在依然另一个实施例中,存储设备431通过以高速缓存403为目的地的DMA 传输,将数据写入到高速缓存403中,并发出指示相应IO请求完成的中断请求。 CPU核401执行中断处理任务的上半部分,查询并保存存储设备431所对应的 PCI/PCIE设备存寄存器状态并清除中断。而CPU核402执行中断处理任务的下半 部分,根据中断处理任务的上半部分存储的寄存器状态确定是哪一个IO请求完成, 利用高速缓存403中的数据完成相应的IO操作。还可以将发出IO请求的应用程序 也设置为在CPU核402上执行,或者设置为在与CPU核401、402共享高速缓存 403的其他CPU核(未示出)上执行,以直接使用高速缓存403中的通过IO请求 从存储设备431传输来的数据。

所属领域技术人员也将意识到,也可以将用于存储设备431的ISR在CPU 核402上执行。并将用于存储设备431的中断处理任务的下半部分设置在CPU核 401上执行。以及,在依然进一步的实施例中,依据存储设备431与CPU 400的耦 合关系,将访问存储设备431的应用程序设置为在CPU核401或402上执行。

在进一步的实施例中,还将存储设备431与CPU插槽405和/或CPU 400 和/或CPU核401、402的耦合关系保存并提供给应用程序,使得用户可通过应用程 序获取存储设备431与CPU插槽405和/或CPU 400和/或CPU核401、402的耦合 关系。以及类似地,将存储设备441与CPU插槽415和/或CPU 410和/或CPU核 411、412的耦合关系保存并提供给应用程序。

图5是根据本发明的又一实施例的优化方法的流程图。基于IO请求的时间 延迟的分布,调整用于执行中断处理任务的CPU或CPU核。下面将结合图4A的 NUIO系统而描述根据图5的实施例的优化方法。所属领域技术人员将意识到,也 可以结合图3A的NUIO系统而实施根据图5的实施例的优化方法。

在步骤501,将与存储设备431相关联的中断处理任务设置为在CPU核401 上执行。该中断处理任务用于处理来自存储设备431的IO请求。IO请求由应用程 序发起。在步骤520,用于存储设备431的驱动程序接收到用于访问存储设备431 的IO请求。在步骤530,记录该IO请求的开始时间。在步骤540,当接收到来自 存储设备431的指示该IO请求处理完成的中断请求并处理该中断请求后,记录该 IO请求的结束时间。在步骤550,计算结束时间与开始时间的时间差,以得到该IO 请求的时间延迟。以此方式,对于与存储设备431相关联的多个或每个IO请求, 都可获得其IO请求的时间延迟。在步骤560,计算在一预定时间期间内(例如,0.5 秒或1秒)的多个IO请求的时间延迟的分布。例如,在一个实施例中,如下表所 示,延迟时间在90-400微秒的IO请求占预定时间内的IO请求总量的64.3%,而延 迟时间在400-1.5毫秒的IO请求占预定时间内的IO请求总量的33.4%。并可将该 时间延迟的分布提供给应用程序。

在步骤570,基于多个IO请求的时间延迟的分布,确定是否需要优化中断 处理任务的执行。在一个实施例中,如果多个IO请求的时间延迟的分布明显劣于 预期或预定的分布,则在步骤580将与存储设备431相关联的中断处理任务设置为 在不同于CPU核401的CPU核(例如CPU核402、411或412)上执行。在一个实 施例中,如果多个IO请求的时间延迟的分布劣于之前的时间延迟分布,则在步骤 580将与存储设备431相关联的中断处理任务设置为在不同于CPU核401的CPU 核(例如CPU核402、411或412)上执行。如果在步骤570判断不需要优化中断 处理任务的执行,则回到步骤520,以监视并计算其他的IO请求的时间延迟及其分 布。

在一个实施例中,提供IO延迟测量过程。将与存储设备431相关联的中断 处理任务分别设置在CPU核401、402、411或412上,测量各自的IO请求的时间 延迟的分布。并将与存储设备431相关联的中断处理任务设置在IO请求的时间延 迟参数较佳的CPU核上。在另一个实施例中,将测量得到对应于运行中断处理任务 的各个CPU核的IO请求的时间延迟或其分布提供给应用程序,并继而展示给用户。 使用户可以依据其应用的需要而选择执行与存储设备431相关联的中断处理任务的 CPU核(优选地,CPU核402)。

在步骤510和/或580中所涉及的中断处理任务,可以是中断处理任务的上 半部分和/或中断处理任务的下半部分。如前面已经提到的,对于中断处理任务的上 半部分,通过设置中断请求与CPU和/或CPU核的亲和性,以将存储设备431的中 断请求转发到特定的CPU和/或CPU核,例如CPU核401。对于中断处理任务的下 半部分,将其调度到特定的CPU和/或CPU核(例如CPU核402)上执行。

在进一步的实施例中,除了测量存储设备431在其中断处理任务分别设置在 CPU核401、402、411或412上时的IO请求的时间延迟分布外,还测量存储设备 441在其中断处理任务分别设置在CPU核401、402、411或412上时的IO请求的 时间延迟分布,并用于调度关联于存储设备431的中断处理任务和/或关联于存储设 备441的中断处理任务在多个CPU和/或CPU核上的执行。

在依然进一步的实施例中,还获取耦合存储设备431、441的PCIE接口的通 道(Lane)的数量。PCIE接口的通道数量意味着数据传输带宽。对于具有较大数据 传输需求的存储设备,选择耦合到具有较大通道数量的PCIE接口是有利的。还可 将耦合存储设备431、441的PCIE接口的通道(Lane)的数量提供给用户,使得用 户可选择是否调整存储设备431、441所耦合的PCIE接口,和/或选择执行与存储设 备431相关联的中断处理任务的CPU核,和/或选择执行与存储设备431相关联的 应用程序的CPU核。

已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开 的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号