专利名称:用于处理计算机系统中的存储设备的中断请求的方法
技术领域:
本发明涉及固态存储设备(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-LevelInterrupt Handlers)。两者之间的区别是在中断处理的上半部分,中断是被禁止的,精确地说是至少有一个中断(当前中断)在一个CPU上(当前CPU)是被禁止的,在某些情况下,可能当前CPU的全部中断都被禁止;而在中断处理的下半部分,系统中的中断都是允许的,新的中断可以随时抢占下半部分处理程序。通过将中断处理划分为两部分,并且让上半部分处理函数只做最少最快的工作一例如将数据从设备缓冲区拷贝到内存,而将后续的更耗时间的工作留给下半部分处理程序去执行,有效地减少了中断阻塞的时间,从而提高了系统的中断处理效率。在美国专利申请US2011/0087814A1中,提供了通过中断亲和性机制来增强多处理器系统中的10 (Input Output)性能的方案。参看图I,主机100包括CPU 101、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 通过 10 APICCAdvancedProgrammable Interr upt Controller,高级可编程中断控制器)集线器140稱合到主机100,并配置为同存储域网络(SAN, Storage Area, Network) 160通信。SAN 160连接到多个诸如硬盘的计算机存储设备170。中断亲和性机制意味着,当1/0 APIC集线器140接收到来自HBA 150的中断时,确定由主机100的多个CPU中的哪一个来处理中断。例如,记录发出10请求的CPU标识符,当接收到对应于该10请求的中断时,基于记录的CPU标识符来选择处理中断的CPU。一些计算机具有 NUMA (Non-Uniform Memory Access)或 NUIO (Non-UniformInput Output)结构。在美国专利申请US2005/0060460A1中提供了在NUMA系统中为多个节点中的10设备指派中断的方案。参看图2,NUMA系统200包括通过互连网络彼此耦合的节点201、211、221和231。每个节点201、211、221和231可包括处理器和存储器。给定节点的存储器相对于该节点的处理器是本地的,而其他节点的存储器相对于该处理器是远程的。系统200包括IO设备202、212和242,以及用于IO设备202、212和242的中断服务例程(ISR, Interrupt Service Routine) 203、213 和 223。系统 200 还包括中断分配软件222,用于将中断服务例程203、213和223分配给IO设备202、212和242。中断服务例程的分配可基于下列因素设备所连接的节点,用于设备的ISR所位于的节点,以及节点的处理器。在 www. acpi. info/D0ffNL0ADS/ACPIspec50. pdf 可获得的 “Advanced Configurationand Power Interface Specification”(2011 年 12 月 6 日)提供了获取 NUMA 系统的各个NUMA域信息。然而,高性能固态存储设备的10处理能力显著提高,10请求的数量和数据量的增力口,给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请求的开始时间的第二时间差的模块;用于计算一预定时间期间内所述第二时间差的分布的模块;以及用于基于所述第一时间差的分布与所述第二时间差的分布,将中断处理任务设置为在所述第一处理单元或所述第二处理单元之一上执行的模块。
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括图I是根据现有技术的存储系统的结构框图;图2是根据现有技术的NUMA系统的结构框图;图3A是实施本发明实施例的中断优化方法的NUIO系统的结构框图;图3B是根据本发明的实施例的中断优化方法的流程图;图4A是实施本发明的另一实施例的中断优化方法NUIO系统的结构框图;图4B是根据本发明的另一实施例的中断优化方法的流程图;以及图5是根据本发明的又一实施例的中断优化方法的流程图。
具体实施例方式图3A是实施本发明实施例的中断优化方法的NUIO系统的结构框图。如图3A所示的实施例的计算机系统具有NUIO结构,因为存储设备321耦合到CPU 301,而存储设备322耦合到CPU302,使得CPU 301与存储设备321之间的IO同CPU 322与存储设备321之间的IO是不同的。CPU 301和CPU 302均耦合到高速缓存311,并且CPU 301和CPU 302共享高速缓存311。CPU 301可通过诸如PCIE总线/接口耦合到存储设备321。在图3A示出一个存储设备321耦合到CPU 301,但在一个实施例中,可将多个存储设备耦合到CPU 301。存储设备301可以是固态存储设备(SSD),也可以是具有PCIE接口的其他存储设备。还可以将诸如DRAM (Dynamic Random Access Memory)的存储器分别稱合到CPU 301和302,并因而形成NUMA结构的计算机系统。CPU 302与存储设备322之间也通过诸如PCIE总线/接口耦合。CPU 301和302各自可具有本地且非共享的高速缓存(未示出),诸如集成在CPU芯片内部的LI闻速缓存。而闻速缓存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,,或 iVsys/devices/pci〈pci-bus>/〈pci-dev>/local_cpulist” 获得与存储设备 321 属于相同 NUMA 域的 CPU301。也可以在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相关联的中断处理任务的上半部分设置为在CPU301上执行。使用于存储设备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,而CPU410包括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,410o 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相关联的中断处理任务的上半部分设置为在CPU400的CPU核401上执行。使用于存储设备431的ISR在CPU核401上执行。在一个实施例中,当存储设备431产生中断请求时,中断请求被转发给CPU核401。在ISR中,查询并保存存储设备431所对应的PCI/PCIE设备存寄存器状态并清除中断。可选地,在ISR中还将数据从存储设备431的缓冲区拷贝到主存储器421和/或高速缓存403。在步骤490,将与存储设备431相关联的中断处理任务的下半部分设置为在CPU400的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设备存寄存器状态并清除中断。而(PU核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,计算在一预定时间期间内(例如,O. 5秒或I秒)的多个IO请求的时间延迟的分布。例如,在一个实施例中,如下表所示,延迟时间在90-400微秒的IO请求占预定时间内的IO请求总量的64. 3%,而延迟时间在400-1. 5毫秒的IO请求占预定时间内的IO请求总量的33. 4%。并可将该时间延迟的分布提供给应用程序。
权利要求
1.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述方法包括 获取所述存储设备的标识符; 依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元; 将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;将所述中断处理任务的下半部分设置为在第二处理单元上执行; 其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
2.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到所述多个处理器插槽中的一个,所述方法包括 获取所述存储设备的标识符; 依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽; 将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行; 将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行; 其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
3.根据权利要求2所述的方法,进一步包括,显示所述存储设备与所述第一处理器插槽和/或所述第一处理器核的耦合关系。
4.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备通过所述多个PCIE插槽中的第一 PCIE插槽耦合到所述多个处理单元中的一个,所述方法包括 识别所述第一 PCIE插槽所耦合的第一处理单元; 确定所述存储设备耦合到所述第一处理单元; 将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行; 将所述中断处理任务的下半部分设置为在第二处理单元上执行; 其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
5.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过所述多个PCIE插槽中的第一 PCIE插槽耦合到所述多个处理器插槽中的一个,所述方法包括 识别所述第一 PCIE插槽所耦合的第一处理器插槽; 确定所述存储设备耦合到所述第一处理器插槽; 将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行; 将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行;其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
6.根据权利要求2或5所述的方法,还包括将访问所述存储设备的应用程序设置为在布置于所述第一处理器插槽上的多核处理器的第三处理器核上执行,所述第一处理器核、所述第二处理器核以及所述第三处理器核共享高速缓冲存储器。
7.根据权利要求I、2、4或5所述的方法,进一步包括,所述存储设备将所述计算机系统请求的数据以DMA方式传输到所述高速缓冲存储器。
8.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述装置包括 用于获取所述存储设备的标识符的模块; 用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元的模块; 用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行的模块; 用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块; 其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
9.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到所述多个处理器插槽中的一个,所述装置包括 用于获取所述存储设备的标识符的模块; 用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽的模块; 用于将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行的模块; 用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行的模块; 其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
10.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备通过所述多个PCIE插槽中的第一 PCIE插槽耦合到所述多个处理单元中的一个,所述装置包括 用于识别所述第一 PCIE插槽所耦合的第一处理单元的模块; 用于确定所述存储设备耦合到所述第一处理单元的模块; 用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行的模块; 用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块; 其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
11.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过所述多个PCIE插槽中的第一 PCIE插槽耦合到所述多个处理器插槽中的一个,所述装置包括用于识别所述第一 PCIE插槽所耦合的第一处理器插槽的模块; 用于确定所述存储设备耦合到所述第一处理器插槽的模块; 用于将与所述存 储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行的模块; 用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行的模块; 其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
全文摘要
提供了用于处理计算机系统中的存储设备的中断请求的方法。计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述方法包括获取所述存储设备的标识符;依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元;将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;将所述中断处理任务的下半部分设置为在第二处理单元上执行;其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
文档编号G06F13/24GK102929819SQ20121040172
公开日2013年2月13日 申请日期2012年10月19日 优先权日2012年10月19日
发明者唐志波, 路向峰 申请人:北京忆恒创源科技有限公司