CN102929819B - 用于处理计算机系统中的存储设备的中断请求的方法 - Google Patents

用于处理计算机系统中的存储设备的中断请求的方法 Download PDF

Info

Publication number
CN102929819B
CN102929819B CN201210401723.3A CN201210401723A CN102929819B CN 102929819 B CN102929819 B CN 102929819B CN 201210401723 A CN201210401723 A CN 201210401723A CN 102929819 B CN102929819 B CN 102929819B
Authority
CN
China
Prior art keywords
memory device
processor
slot
processing unit
interrupt
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.)
Active
Application number
CN201210401723.3A
Other languages
English (en)
Other versions
CN102929819A (zh
Inventor
唐志波
路向峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201210401723.3A priority Critical patent/CN102929819B/zh
Publication of CN102929819A publication Critical patent/CN102929819A/zh
Application granted granted Critical
Publication of CN102929819B publication Critical patent/CN102929819B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

提供了用于处理计算机系统中的存储设备的中断请求的方法。计算机系统包括多个处理单元,所述存储设备通过PCIE总线耦合到所述多个处理单元中的一个,所述方法包括:获取所述存储设备的标识符;依据所述存储设备的标识符,确定所述存储设备所耦合的第一处理单元;将与所述存储设备相关联的中断处理任务的上半部分设置为在所述第一处理单元上执行;将所述中断处理任务的下半部分设置为在第二处理单元上执行;其中所述第一处理单元与所述第二处理单元共享高速缓冲存储器。

Description

用于处理计算机系统中的存储设备的中断请求的方法
技术领域
本发明涉及固态存储设备(SolidStorageDevice,SSD),更具体地,本发明涉及存储设备向主机发出的中断。
背景技术
同机械式硬盘相类似,固态存储设备(SSD)也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以闪存(Flash)作为存储介质。高性能的固态存储设备被用于高性能计算机。高性能计算机通常具有多个中央处理器(CPU,CentrolProcessUnit),而每个CPU可包括多个CPU核。
在现代操作系统中,几乎每一个中断处理操作都被分成了两部分,即中断服务程序(ISR)和下半部分处理程序(BottomHalfHandler);或者说中断处理的上半部分(TopHalf)和下半部分(BottomHalf);在一些场合中,也被称为第一级中断处理程序(FLIH,First-LevelInterruptHandler)和第二级中断处理程序(SLIH,Second-LevelInterruptHandlers)。两者之间的区别是:在中断处理的上半部分,中断是被禁止的,精确地说是至少有一个中断(当前中断)在一个CPU上(当前CPU)是被禁止的,在某些情况下,可能当前CPU的全部中断都被禁止;而在中断处理的下半部分,系统中的中断都是允许的,新的中断可以随时抢占下半部分处理程序。通过将中断处理划分为两部分,并且让上半部分处理函数只做最少最快的工作--例如将数据从设备缓冲区拷贝到内存,而将后续的更耗时间的工作留给下半部分处理程序去执行,有效地减少了中断阻塞的时间,从而提高了系统的中断处理效率。
在美国专利申请US2011/0087814A1中,提供了通过中断亲和性机制来增强多处理器系统中的IO(InputOutput)性能的方案。参看图1,主机100包括CPU101、102、103和104,应用程序111、112、113和114分别运行在各自的CPU上。高速缓存121、122、123和124分别同CPU101、102、103和104相耦合,用于存储分别用于应用程序111、112、113和114的指令和数据。而具有较大容量的存储器131、132、133和134分别耦合到高速缓存121、122、123和124。主机总线适配器(HBA,HostBusAdapter)150通过IOAPIC(AdvancedProgrammableInterruptController,高级可编程中断控制器)集线器140耦合到主机100,并配置为同存储域网络(SAN,StorageArea,Network)160通信。SAN160连接到多个诸如硬盘的计算机存储设备170。中断亲和性机制意味着,当I/OAPIC集线器140接收到来自HBA150的中断时,确定由主机100的多个CPU中的哪一个来处理中断。例如,记录发出IO请求的CPU标识符,当接收到对应于该IO请求的中断时,基于记录的CPU标识符来选择处理中断的CPU。
一些计算机具有NUMA(Non-UniformMemoryAccess)或NUIO(Non-UniformInputOutput)结构。在美国专利申请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,InterruptServiceRoutine)203、213和223。系统200还包括中断分配软件222,用于将中断服务例程203、213和223分配给IO设备202、212和242。中断服务例程的分配可基于下列因素:设备所连接的节点,用于设备的ISR所位于的节点,以及节点的处理器。在www.acpi.info/DOWNLOADS/ACPIspec50.pdf可获得的“AdvancedConfigurationandPowerInterfaceSpecification”(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耦合到CPU301,而存储设备322耦合到CPU302,使得CPU301与存储设备321之间的IO同CPU322与存储设备321之间的IO是不同的。CPU301和CPU302均耦合到高速缓存311,并且CPU301和CPU302共享高速缓存311。
CPU301可通过诸如PCIE总线/接口耦合到存储设备321。在图3A示出一个存储设备321耦合到CPU301,但在一个实施例中,可将多个存储设备耦合到CPU301。存储设备301可以是固态存储设备(SSD),也可以是具有PCIE接口的其他存储设备。还可以将诸如DRAM(DynamicRandomAccessMemory)的存储器分别耦合到CPU301和302,并因而形成NUMA结构的计算机系统。CPU302与存储设备322之间也通过诸如PCIE总线/接口耦合。CPU301和302各自可具有本地且非共享的高速缓存(未示出),诸如集成在CPU芯片内部的L1高速缓存。而高速缓存311可以是布置在主板上或者集成在芯片组上的L2高速缓存。
由于存储设备321耦合到CPU301,因而将同存储设备321相关联的中断处理任务设置或绑定在CPU301上执行是有利的。即,当存储设备321产生中断请求时,中断请求被转发给CPU301,由CPU301通过执行ISR来处理该中断请求。将ISR配置为处理同存储设备321相关联的中断处理任务的上半部分。例如,在ISR中,查询并保存存储设备321所对应的PCI/PCIE设备存寄存器状态并清除中断。类似地,将同存储设备322相关联的中断处理任务设置或绑定在CPU302上执行。
参看图3B,图3B是根据本发明的实施例的中断优化方法的流程图。在步骤360,获取存储设备321的标识符。对于PCI/PCIE设备,通过PCI配置空间获取唯一描述存储设备321的标识符。基于存储设备321的标识符,在步骤370,确定存储设备耦合到CPU301与302之中的CPU301。在Linux操作系统中,可通过“/proc/cpuinfo”获得CPU301所对应的APICID,继而访问APIC表获得与存储设备321属于相同NUMA域的CPU301。在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域的CPU301。也可以在Linux的存储设备321的驱动程序中,通过“dev-numa_node”获得与存储设备321属于相同NUMA域的CPU301。在Windows操作系统中,也可访问APIC表,并获得与存储设备321属于相同NUMA域的CPU301。还可以通过查看存储设备301与存储设备321所在的电路板,确定CPU301与存储设备321的耦合关系。优选地,在电路板的用于耦合存储设备321的插槽上标记该插槽所耦合的CPU301,并通过配置文件、命令行接口或图形用户界面将存储设备321与CPU301的关联关系提供给驱动程序。
在步骤380,将与存储设备321相关联的中断处理任务的上半部分设置为在CPU301上执行。使用于存储设备321的ISR在CPU301上执行。在一个实施例中,当存储设备321产生中断请求时,中断请求被转发给CPU301。在ISR中,查询并保存存储设备321所对应的PCI/PCIE设备存寄存器状态并清除中断。可选地,在ISR中还将数据从存储设备321的缓冲区拷贝到DRAM存储器和/或高速缓存311。在步骤390,将与存储设备321相关联的中断处理任务的下半部分设置为在CPU302上执行。由于CPU301与302共享高速缓存311,使得由中断处理任务的上半部分所处理的数据可通过高速缓存311而被中断处理任务的下半部分访问,从而减少了在DRAM存储器和高速缓存311之间交换数据而产生的开销。并且,也减少了在CPU301上切换中断处理任务的上半部分与下半部分而产生的开销。特别地,当存储设备321频繁产生中断请求时,中断处理任务的上半部分将频繁执行,而将中断处理任务的下半部分设置在不同于CPU301的CPU302上执行,也降低了CPU301的负担,并降低了中断处理任务的下半部分被频繁打断的几率。在一个实施例中,将中断处理任务的下半部分实现为Linux操作系统提供的工作队列(Wordqueue)。在一个实施例中,将中断处理任务的下半部分实现为内核线程,诸如Linux或Windows等的操作系统都支持内核线程。对于存储设备322,也可通过步骤360-390,以将其中断处理任务的上半部分设置在CPU302上执行,并将其中断处理任务的下半部分设置在CPU301上执行。还可以将用于存储设备322的中断处理任务的下半部分设置在不同于CPU301与302的其他CPU上执行。
在进一步的实施例中,还将存储设备321与CPU301的耦合关系保存并提供给应用程序,使得用户可通过应用程序获取存储设备321与CPU301的耦合关系。以及,在依然进一步的实施例中,依据存储设备321与CPU301的耦合关系,将访问存储设备321的应用程序设置为在CPU301或302上执行。
图4A是实施本发明实施例的中断优化方法的NUIO系统的结构框图。如图4A所示的实施例的计算机系统具有NUIO结构,因为存储设备431耦合到CPU插槽405,而存储设备441耦合到CPU插槽415,使得CPU插槽405与存储设备431之间的IO同CPU插槽415与存储设备441之间的IO是不同的。CPU400布置于CPU插槽405中,而CPU410布置于CPU插槽415中。CPU400、410可以是多核CPU,并且CPU400包括CPU核401、402,而CPU410包括CPU核411和412。在CPU400内,布置有由CPU核401、402共享的高速缓存403,而在CPU410内,布置有由CPU核411、412共享的高速缓存413。CPU核401、402、411和412可分别配置有独占的高速缓存(未示出)。
CPU400与CPU410之间通过诸如QPI(QuickPathInterconnect)或FSB(Front-SideBus)的高速连接450相耦合。PCIE插槽435、445分别耦合到CPU插槽405、415,并进而分别耦合到CPU400、410。PCIE插槽435、445上分别耦合有存储设备431、441。存储设备431、441可以是固态存储设备(SSD),也可以是具有PCIE接口的其他存储设备。还将诸如DRAM(DynamicRandomAccessMemory)的主存储器421、422分别耦合到CPU400和410,并因而形成NUMA结构的计算机系统。并且,所属领域技术人员将意识到,CPU400可以访问耦合到CPU插槽405的主存储器421和存储设备431,并且也可以访问耦合到CPU插槽415的主存储器422和存储设备441。类似的,CPU410可以访问耦合到CPU插槽415的主存储器422和存储设备441,并且也可以访问耦合到CPU插槽405的主存储器421和存储设备431。
由于存储设备431耦合到CPU400,因而将同存储设备431相关联的中断处理任务设置或绑定在CPU400上执行是有利的。即,当存储设备431产生中断请求时,中断请求被转发给CPU400,由CPU400通过执行ISR来处理该中断请求。将ISR配置为处理同存储设备431相关联的中断处理任务的上半部分。例如,在ISR中,查询并保存存储设备431所对应的PCI/PCIE设备存寄存器状态并清除中断。类似地,将同存储设备441相关联的中断处理任务设置或绑定在CPU410上执行是有利的。
参看图4B,图4B是根据本发明的实施例的中断优化方法的流程图。在步骤460,获取存储设备431的标识符。对于PCI/PCIE设备,通过PCI配置空间获取唯一描述存储设备431的标识符。在步骤470,确定存储设备431耦合到CPU插槽405和CPU插槽415之中的CPU插槽405,并进而确定存储设备431耦合到CPU400。可通过访问基于高级配置和电源接口规范(AdvancedConfigurationandPowerInterfaceSpecification)的APIC表获得与存储设备431属于相同NUMA域的CPU400及其CPU核401、402。也可以通过查看PCIE插槽435与CPU插槽405所在的电路板,确定CPU插槽405与PCIE插槽435之间的耦合关系。优选地,在电路板的用于耦合存储设备431的PCIE插槽435上标记该插槽所耦合的CPU插槽405,或者耦合到CPU插槽405的CPU400和/或CPU核401、402,并通过配置文件、命令行接口或图形用户界面将存储设备431与CPU400和/或CPU核401、402的关联关系提供给驱动程序和/或访问存储设备的431的应用程序。类似地,在电路板的用于耦合存储设备441的PCIE插槽445上标记该插槽所耦合的CPU插槽415,或者耦合到CPU插槽415的CPU410和/或CPU核411、412。并将存储设备441与CPU410和/或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之间交换数据而产生的开销,也减少了在CPU400和CPU410之间交换数据而产生的开销。并且,也减少了在CPU核401上切换中断处理任务的上半部分与下半部分而产生的开销。
对于存储设备441,也可通过步骤460-490,以将其中断处理任务的上半部分设置在CPU410的CPU核411上执行,并将其中断处理任务的下半部分设置在CPU410的CPU核412上执行。所属领域技术人员将意识到,当CPU410的负载较高时,也可以将用于存储设备441的中断处理任务的下半部分设置在CPU400或其他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与CPU400的耦合关系,将访问存储设备431的应用程序设置为在CPU核401或402上执行。
在进一步的实施例中,还将存储设备431与CPU插槽405和/或CPU400和/或CPU核401、402的耦合关系保存并提供给应用程序,使得用户可通过应用程序获取存储设备431与CPU插槽405和/或CPU400和/或CPU核401、402的耦合关系。以及类似地,将存储设备441与CPU插槽415和/或CPU410和/或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插槽所耦合的第一处理器插槽的模块;
用于确定所述存储设备耦合到所述第一处理器插槽的模块;
用于将与所述存储设备相关联的中断处理任务的第一级中断处理程序设置为在布置于所述第一处理器插槽上的多核处理器的第一处理器核上执行的模块;
用于将所述中断处理任务的第二级中断处理程序设置为在布置于所述第一处理器插槽上的多核处理器的第二处理器核上执行的模块;
其中,所述第一处理器核与所述第二处理器核共享高速缓冲存储器。
CN201210401723.3A 2012-10-19 2012-10-19 用于处理计算机系统中的存储设备的中断请求的方法 Active CN102929819B (zh)

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 CN102929819A (zh) 2013-02-13
CN102929819B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110352590A (zh) * 2018-02-05 2019-10-18 思科技术公司 具有多个插槽的可配置存储服务器
CN110119304B (zh) * 2018-02-07 2021-08-31 华为技术有限公司 一种中断处理方法、装置及服务器
CN112241380B (zh) * 2019-07-17 2024-03-08 昆山尚尼司电子科技有限公司 应用于pcie对异质设备的中断处理系统与方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504883A (zh) * 2002-12-05 2004-06-16 国际商业机器公司 用于管理处理器中的状态信息的方法及其处理器
CN101349975A (zh) * 2008-07-29 2009-01-21 北京中星微电子有限公司 实现中断底半部机制的方法及嵌入式系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126652A1 (en) * 2006-09-27 2008-05-29 Intel Corporation Managing Interrupts in a Partitioned Platform
US8635387B2 (en) * 2009-10-09 2014-01-21 Emulex Design & Manufacturing Corporation Enhanced I/O performance in a multi-processor system via interrupt affinity schemes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1504883A (zh) * 2002-12-05 2004-06-16 国际商业机器公司 用于管理处理器中的状态信息的方法及其处理器
CN101349975A (zh) * 2008-07-29 2009-01-21 北京中星微电子有限公司 实现中断底半部机制的方法及嵌入式系统

Also Published As

Publication number Publication date
CN102929819A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
EP3796179A1 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
CN102567109B (zh) 中断分配方案
US10585709B2 (en) Job scheduling optimization based on ratio of stall to active cycles
US8484495B2 (en) Power management in a multi-processor computer system
KR20210011451A (ko) 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링
US9600618B2 (en) Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit
KR101661259B1 (ko) 저전력 부분 폭 고속 링크 상태에서 나갈 때의 고속 디스큐
KR20170011350A (ko) 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US9460032B2 (en) Apparatus and method for processing an interrupt
KR20070024670A (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
WO2016041191A1 (zh) 读写数据的方法、装置、存储设备和计算机系统
CN102945214B (zh) 基于io延迟时间分布优化中断处理任务的方法
EP3716084A1 (en) Apparatus and method for sharing a flash device among multiple masters of a computing platform
KR20130036727A (ko) 반도체 저장 장치 기반 시스템에서 메인 메모리가 없는 직접 메모리 엑세스 시스템
CN104965678A (zh) 一种固态存储的控制方法、装置及固态存储设备
US10073629B2 (en) Memory transaction prioritization
US11734067B2 (en) Multi-core system and controlling operation of the same
KR20160128751A (ko) 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
CN102929819B (zh) 用于处理计算机系统中的存储设备的中断请求的方法
JP2013025794A (ja) フラッシュインタフェースの有効利用
US9047264B2 (en) Low pin count controller
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
US10649943B2 (en) System and method for I/O aware processor configuration
CN102789384B (zh) 一种面向龙芯3b处理器的服务器操作系统实现方法

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.