CN102929819A - 用于处理计算机系统中的存储设备的中断请求的方法 - Google Patents
用于处理计算机系统中的存储设备的中断请求的方法 Download PDFInfo
- Publication number
- CN102929819A CN102929819A CN2012104017233A CN201210401723A CN102929819A CN 102929819 A CN102929819 A CN 102929819A CN 2012104017233 A CN2012104017233 A CN 2012104017233A CN 201210401723 A CN201210401723 A CN 201210401723A CN 102929819 A CN102929819 A CN 102929819A
- Authority
- CN
- China
- Prior art keywords
- processor
- memory device
- slot
- processing unit
- coupled
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
提供了用于处理计算机系统中的存储设备的中断请求的方法。计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述方法包括:获取所述存储设备的标识符;依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元;将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;将所述中断处理任务的下半部分设置为在第二处理单元上执行;其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
Description
技术领域
本发明涉及固态存储设备(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上(当前CPU)是被禁止的,在某些情况下,可能当前CPU的全部中断都被禁止;而在中断处理的下半部分,系统中的中断都是允许的,新的中断可以随时抢占下半部分处理程序。通过将中断处理划分为两部分,并且让上半部分处理函数只做最少最快的工作--例如将数据从设备缓冲区拷贝到内存,而将后续的更耗时间的工作留给下半部分处理程序去执行,有效地减少了中断阻塞的时间,从而提高了系统的中断处理效率。
在美国专利申请US2011/0087814A1中,提供了通过中断亲和性机制来增强多处理器系统中的IO(Input Output)性能的方案。参看图1,主机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通过IO APIC(Advanced Programmable Interrupt 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-Uniform Input Output)结构。在美国专利申请US2005/0060460A1中提供了在NUMA系统中为多个节点中的IO设备指派中断的方案。参看图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/DOWNLOADS/ACPIspec50.pdf可获得的“Advanced Configuration andPower Interface Specification”(2011年12月6日)提供了获取NUMA系统的各个NUMA域信息。
然而,高性能固态存储设备的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 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芯片内部的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域的CPU301。还可以通过查看存储设备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 AccessMemory)的主存储器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 PowerInterface 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核。
已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。
Claims (11)
1.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述方法包括:
获取所述存储设备的标识符;
依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元;
将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;将所述中断处理任务的下半部分设置为在第二处理单元上执行;
其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
2.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到所述多个处理器插槽中的一个,所述方法包括:
获取所述存储设备的标识符;
依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽;
将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行;
将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行;
其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
3.根据权利要求2所述的方法,进一步包括,显示所述存储设备与所述第一处理器插槽和/或所述第一处理器核的耦合关系。
4.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理单元中的一个,所述方法包括:
识别所述第一PCIE插槽所耦合的第一处理单元;
确定所述存储设备耦合到所述第一处理单元;
将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;
将所述中断处理任务的下半部分设置为在第二处理单元上执行;
其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
5.一种用于处理计算机系统中的存储设备的中断请求的方法,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理器插槽中的一个,所述方法包括:
识别所述第一PCIE插槽所耦合的第一处理器插槽;
确定所述存储设备耦合到所述第一处理器插槽;
将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行;
将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行;
其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
6.根据权利要求2或5所述的方法,还包括将访问所述存储设备的应用程序设置为在布置于所述第一处理器插槽上的多核处理器的第三处理器核上执行,所述第一处理器核、所述第二处理器核以及所述第三处理器核共享高速缓冲存储器。
7.根据权利要求1、2、4或5所述的方法,进一步包括,所述存储设备将所述计算机系统请求的数据以DMA方式传输到所述高速缓冲存储器。
8.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述装置包括:
用于获取所述存储设备的标识符的模块;
用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元的模块;
用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行的模块;
用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块;
其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
9.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理器插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过PCIE总线耦合到所述多个处理器插槽中的一个,所述装置包括:
用于获取所述存储设备的标识符的模块;
用于依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理器插槽的模块;
用于将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行的模块;
用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行的模块;
其中所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
10.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理单元和多个PCIE插槽,所述存储设备通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理单元中的一个,所述装置包括:
用于识别所述第一PCIE插槽所耦合的第一处理单元的模块;
用于确定所述存储设备耦合到所述第一处理单元的模块;
用于将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行的模块;
用于将所述中断处理任务的下半部分设置为在第二处理单元上执行的模块;
其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。
11.一种用于处理计算机系统中的存储设备的中断请求的装置,所述计算机系统包括多个处理器插槽和多个PCIE插槽,每个处理器插槽上布置有多核处理器,所述多核处理器具有多个处理器核,所述存储设备通过所述多个PCIE插槽中的第一PCIE插槽耦合到所述多个处理器插槽中的一个,所述装置包括:
用于识别所述第一PCIE插槽所耦合的第一处理器插槽的模块;
用于确定所述存储设备耦合到所述第一处理器插槽的模块;
用于将与所述存储设备相关联的中断处理任务的上半部分设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行的模块;
用于将所述中断处理任务的下半部分设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行的模块;
其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210401723.3A CN102929819B (zh) | 2012-10-19 | 2012-10-19 | 用于处理计算机系统中的存储设备的中断请求的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210401723.3A CN102929819B (zh) | 2012-10-19 | 2012-10-19 | 用于处理计算机系统中的存储设备的中断请求的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929819A true CN102929819A (zh) | 2013-02-13 |
CN102929819B CN102929819B (zh) | 2016-02-10 |
Family
ID=47644620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210401723.3A Active CN102929819B (zh) | 2012-10-19 | 2012-10-19 | 用于处理计算机系统中的存储设备的中断请求的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929819B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110119304A (zh) * | 2018-02-07 | 2019-08-13 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
CN110352590A (zh) * | 2018-02-05 | 2019-10-18 | 思科技术公司 | 具有多个插槽的可配置存储服务器 |
CN112241380A (zh) * | 2019-07-17 | 2021-01-19 | 昆山尚尼司电子科技有限公司 | 应用于pcie对异质设备的中断处理系统与方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504883A (zh) * | 2002-12-05 | 2004-06-16 | 国际商业机器公司 | 用于管理处理器中的状态信息的方法及其处理器 |
US20080126652A1 (en) * | 2006-09-27 | 2008-05-29 | Intel Corporation | Managing Interrupts in a Partitioned Platform |
CN101349975A (zh) * | 2008-07-29 | 2009-01-21 | 北京中星微电子有限公司 | 实现中断底半部机制的方法及嵌入式系统 |
US20110087814A1 (en) * | 2009-10-09 | 2011-04-14 | Emulex Design & Manufacturing Corporation | Enhanced I/O Performance in a Multi-Processor System Via Interrupt Affinity Schemes |
-
2012
- 2012-10-19 CN CN201210401723.3A patent/CN102929819B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504883A (zh) * | 2002-12-05 | 2004-06-16 | 国际商业机器公司 | 用于管理处理器中的状态信息的方法及其处理器 |
US20080126652A1 (en) * | 2006-09-27 | 2008-05-29 | Intel Corporation | Managing Interrupts in a Partitioned Platform |
CN101349975A (zh) * | 2008-07-29 | 2009-01-21 | 北京中星微电子有限公司 | 实现中断底半部机制的方法及嵌入式系统 |
US20110087814A1 (en) * | 2009-10-09 | 2011-04-14 | Emulex Design & Manufacturing Corporation | Enhanced I/O Performance in a Multi-Processor System Via Interrupt Affinity Schemes |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110352590A (zh) * | 2018-02-05 | 2019-10-18 | 思科技术公司 | 具有多个插槽的可配置存储服务器 |
US11966350B2 (en) | 2018-02-05 | 2024-04-23 | Cisco Technology, Inc. | Configurable storage server with multiple sockets |
CN110119304A (zh) * | 2018-02-07 | 2019-08-13 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
CN110119304B (zh) * | 2018-02-07 | 2021-08-31 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
CN112241380A (zh) * | 2019-07-17 | 2021-01-19 | 昆山尚尼司电子科技有限公司 | 应用于pcie对异质设备的中断处理系统与方法 |
CN112241380B (zh) * | 2019-07-17 | 2024-03-08 | 昆山尚尼司电子科技有限公司 | 应用于pcie对异质设备的中断处理系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102929819B (zh) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7313381B2 (ja) | ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング | |
CN102567109B (zh) | 中断分配方案 | |
US8484495B2 (en) | Power management in a multi-processor computer system | |
US9460032B2 (en) | Apparatus and method for processing an interrupt | |
US11243795B2 (en) | CPU overcommit with guest idle polling | |
WO2016041191A1 (zh) | 读写数据的方法、装置、存储设备和计算机系统 | |
CN104965678A (zh) | 一种固态存储的控制方法、装置及固态存储设备 | |
CN109284192B (zh) | 参数配置方法及电子设备 | |
CN102945214B (zh) | 基于io延迟时间分布优化中断处理任务的方法 | |
US11734067B2 (en) | Multi-core system and controlling operation of the same | |
JP7470685B2 (ja) | 集積回路中の算出ユニットをプログラムおよび制御すること | |
CN102929819B (zh) | 用于处理计算机系统中的存储设备的中断请求的方法 | |
US9047264B2 (en) | Low pin count controller | |
JP6201591B2 (ja) | 情報処理装置および情報処理装置の制御方法 | |
US9690619B2 (en) | Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory | |
JP6070078B2 (ja) | ハイブリッド並列処理システム、ハイブリッド並列処理方法およびコンピュータプログラム | |
KR20160061726A (ko) | 인터럽트 핸들링 방법 | |
CN114328350A (zh) | 一种基于axi总线的通讯方法、装置以及介质 | |
US10635157B2 (en) | Information processing apparatus, method and non-transitory computer-readable storage medium | |
JP2010092101A (ja) | 情報処理装置 | |
CN114328345B (zh) | 控制信息的处理方法、装置以及计算机可读存储介质 | |
CN219642231U (zh) | 一种任务分发装置和基于任务分发装置的多核异构处理器 | |
CN107025132B (zh) | 中断配置方法和装置 | |
CN102043739B (zh) | 避免存储器接入延时的系统和方法 | |
CN115562830A (zh) | 主机总线适配器调优方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 312, building D, entrepreneurship Park, No. 2, Shangdi Information Road, Haidian District, Beijing 100085 Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |