CN108139928B - 用于在cpu核之间迁移操作的方法、计算设备和可读介质 - Google Patents
用于在cpu核之间迁移操作的方法、计算设备和可读介质 Download PDFInfo
- Publication number
- CN108139928B CN108139928B CN201680062111.2A CN201680062111A CN108139928B CN 108139928 B CN108139928 B CN 108139928B CN 201680062111 A CN201680062111 A CN 201680062111A CN 108139928 B CN108139928 B CN 108139928B
- Authority
- CN
- China
- Prior art keywords
- tasks
- core
- cores
- interrupts
- isrs
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
一种用于在CPU核之间迁移操作的方法,该方法包括:由源核处理一个或多个任务和一个或多个中断服务例程;访问与一个或多个任务中的任务和一个或多个中断服务例程中的中断服务例程相对应的映射;基于映射来标识与任务和中断服务例程相对应的目标核;响应于标识目标核而来阻止由源核处理任务;响应于标识目标核,禁用与中断服务例程相对应的中断;响应于标识目标核,向目标核指派任务和中断;在向目标核指派中断之后,启用中断;以及在向目标核指派任务之后,由目标核处理任务。
Description
相关申请的交叉引用
本申请要求于2015年8月26日提交的美国非临时申请第14/836,331号的优先权,其全部内容通过引用并入本文,如同在下面出于所有可应用的目的而完全阐述的。
技术领域
本说明书涉及多核处理器,并且更具体地涉及用于在一个或多个多核处理器的CPU核之间迁移中断服务例程(ISR)和操作系统(OS)任务的系统、方法和机器可读介质。
背景技术
传统的多核处理器包括集成在芯片封装件中的集成电路裸片上或多个裸片上的两个或更多个处理单元。这些处理单元被称为“CPU核”或“核”。多核处理器的核可以全部运行单个OS,OS的工作负载在核之间被划分。这种核在同一OS上运行的配置被称为对称多处理(SMP)。
SMP提供了附加处理能力的优势。特别地,通过在核之间分布操作,SMP为繁重的工作负载提供了显著的性能优势。但是,在核之间划分的每个操作增加了操作处理的复杂性,这增加了延迟。延迟(也可以被称为“响应时间”)可以是指完成操作所花费的时间。由于涉及核之间的操作划分的处理开销,在多个核之间划分的操作的延迟可能增加。例如,延迟可能由于资源争用管理机制的附加处理开销而增加。
与延迟相对的是吞吐量。吞吐量可以是指操作完成的平均速度。提供多个核可以允许并行处理附加操作,从而以增加的延迟为代价产生吞吐量增加的性能益处。因此,个体操作的低延迟与高吞吐量之间存在折衷。
因此,潜力仍然有待改进,例如,实现多核架构的性能优势,同时降低延迟。
附图说明
结合附图阅读以下详细描述可以最好地理解本公开。
图1是根据本公开的各方面的示例性数据存储架构的组织图。
图2是根据本公开的各方面的示例性存储控制器架构的组织图。
图3是根据本公开的各方面的从一个或多个源核向一个或多个目标核迁移任务和ISR的方法的流程图。
图4是根据本公开的各方面的从源核向目标核迁移ISR和任务的方法的流程图。
具体实施方式
所有示例和说明性参考都是非限制性的,并且不应当用于将权利要求限制为本文中描述的具体实现和实施例及其等同物。为了简单起见,附图标记可以在各种示例之间重复。这种重复只是为了清楚,并不指示相应实施例之间的关系。最后,鉴于本公开内容,即使没有在附图中具体示出或在文本中描述,关于一个方面或实施例描述的特定特征也可以应用于本公开的其他公开方面或实施例。
各种实施例包括用于通过从单个核向多个核、从多个核向单个核以及从一个或多个核向一个或多个其他核迁移操作来改进计算系统的操作的系统、方法和机器可读介质。
在性能敏感的系统的操作期间,当工作负载繁重时,通常有利的是,跨越尽可能多的核来分散操作的执行,以便最大化系统执行操作的速率。但是,还有通过其他使用单核配置来改进操作的上下文。例如,在系统初始化期间,可能还没有繁重的工作负载。因此,在初始化期间严格控制初始化序列可能比提供高性能更重要。此外,在初始化期间,多核资源争用机制(例如,锁和队列)可以处于被配置的过程中,这增加了多核配置的附加复杂度。单核配置提供了比多核配置简单和控制优势。因此,在初始化期间,可能需要在单个核上运行操作。
还有其他单核配置可以是有益的上下文。例如,当系统处于低或中等工作负载时,减少处理操作的核的数目可以减少每个操作的延迟。延迟的减少至少部分由较低的资源争用管理开销产生。因此,至少在一些系统中,减少非繁重工作负载期间的核的数目产生了降低每个操作的响应时间的优势。
本系统、方法和机器可读介质动态地管理多核处理系统的操作的指派,以便微调总体性能和延迟。在一些示例中,整体性能和延迟的这种调节通过初始在初始化过程期间在单个核上处理操作来执行。在初始化之后,将操作(包括一个或多个任务和/或ISR)迁移到多核系统的其他核的应用被触发。在一些示例中,这个迁移包括应用创建或访问(例如,通过检查或解析)标识ISR和任务并且将每个ISR和任务映射到目标核的映射。
在一些示例中,以下动作可以由具有多个核的处理器执行的应用来执行。应用阻止执行将要迁移的任务。应用还禁用与将要迁移的ISR相对应的中断(例如,由设备和/或任务生成的中断)。通过阻止任务并且禁用中断,当前被指派任务和ISR的源核被阻止处理被指派给源核的ISR的任务和中断。
然后应用将中断和任务指派给目标核。在指派中断和任务之后,应用启用指派的中断并且解除阻止指派的任务。因此,先前指派给单个核(例如,源核)的操作从源核迁移到其他核,以便跨越多核处理系统来分散任务和ISR。下面更详细地描述用于阻止、禁用和启用的具体示例。
当需要较低延迟时,迁移机制也可以用于将中断和任务从多个核指派给单个核。在本示例中,选择单个核作为多核处理系统的所有任务和ISR的目标核,并且类似于以上描述,每个设备中断和任务从每个核指派给目标核。从多核配置到单核配置的迁移可以由例如经历故障、性能统计等的组件来触发。
此外,操作在核之间的迁移可以用于跨越核重新平衡任务和中断。例如,可以基于负载平衡考虑、经修改的配置、组件的添加或减去等来触发重新平衡。通过从一个或多个源核向一个或多个目标核迁移任务和ISR来执行重新平衡。
参考图1描述其中可以实现各种实施例的数据存储架构100。存储架构100包括与主机104通信的存储系统102。存储系统102是代表包括一个或多个主机(以主机104为例)的其他计算系统来处理数据事务的系统。存储系统102可以执行任务以处理来自一个或多个主机的数据事务(例如,读取和/或写入数据的请求),并且采取动作,诸如读取、写入或以其他方式访问所请求的数据。对于很多示例性事务,存储系统102向请求主机104返回诸如所请求的数据和/或状态指示符等响应。应当理解,为了清楚和易于解释,仅示出了单个存储系统102和单个主机104,但是任何数目的主机可以与任何数目的存储系统通信。
虽然存储系统102和主机104被称为单数实体,但是存储系统102和主机104每个可以包括任何数目的计算设备,并且范围可以从单个计算系统到任何大小的系统集群。相应地,每个存储系统102和主机104包括至少一个计算系统,计算系统又包括诸如微控制器或中央处理单元(CPU)等可操作以执行各种计算指令的处理器。
当由处理器执行时,指令引起处理器执行在本文中结合本公开的实施例关于存储系统102中的存储控制器108.a、108.b而描述的各种操作。指令也可以被称为代码。术语“指令”和“代码”应当广义地解释为包括任何类型的一个或多个计算机可读语句。例如,术语“指令”和“代码”可以是指一个或多个软件应用、程序、例程、子例程、函数、过程等。“指令”和“代码”可以包括单个计算机可读语句或很多计算机可读语句。
处理器可以是例如微处理器、微处理器核、微控制器、专用集成电路(ASIC)等。在本示例中,至少一个处理器被配置有多个CPU核,多个CPU核可操作以执行分散在多个核之间的任务和/或ISR的计算指令。
计算系统还可以包括存储器设备,诸如随机存取存储器(RAM);非暂态计算机可读存储介质,诸如磁性硬盘驱动器(HDD)、固态驱动器(SSD)或光学存储器(例如,CD-ROM、DVD、BD);视频控制器,诸如图形处理单元(GPU);网络接口,诸如以太网接口、无线接口(例如,IEEE 802.11或其他合适的标准)或任何其他合适的有线或无线通信接口;和/或耦合到一个或多个用户I/O设备(诸如键盘、鼠标、指示设备或触摸屏)的用户I/O接口。
关于存储系统102,示例性存储系统102包含任何数目的存储设备106.a、106.b、106.c,并且响应于主机104的数据事务,使得存储设备106.a、106.b、106.c看起来直接连接(本地)到主机104。在各种示例中,存储设备106.a、106.b、106.c包括硬盘驱动器(HDD)、固态驱动器(SSD)、光学驱动器和/或任何其他合适的易失性或非易失性数据存储介质。在一些实施例中,存储设备106.a、106.b、106.c是相对同类的(例如,具有相同的制造商、型号和/或配置)。然而,存储系统102通常还包括异构的一组存储设备106.a、106.b、106.c,其包括来自不同制造商的具有显著不同性能的不同介质类型的存储设备。
存储系统102可以使用诸如RAID(独立/廉价磁盘冗余阵列)等虚拟化技术将存储设备分组以获取速度和/或冗余。存储系统102还包括与存储设备106.a、106.b、106.c和任何相应高速缓存(未示出)通信的一个或多个存储控制器108.a、108.b。存储控制器108.a、108.b对存储设备106.a、106.b、106.c进行低级控制,以便代表主机104进行(执行)数据事务。存储控制器108.a、108.b只是说明性的;如将认识到的,可以在各种实施例中使用更多或更少的。
例如,在任何一个设备发生故障的情况下,具有至少两个存储控制器108.a、108.b可以用于故障转移和负载平衡的目的。存储系统102的任务(诸如由存储控制器108.a和108.b执行的任务)被配置为针对性能统计进行监控,使得数据事务和任务可以经由负载平衡技术在存储控制器108.a、108.b之间以及在每个存储控制器108.a、108.b的CPU核之间被平衡。例如,为了故障转移的目的,在存储控制器108.a不可用的情况下,事务可以被路由到存储控制器108.b的CPU核。存储系统102还可以通信地耦合到用户显示器,用于执行到目标核的任务和ISR映射的配置,显示诊断和性能信息、应用输出和/或其他合适的数据。
此外,存储系统102通信地耦合到服务器114。服务器114包括至少一个计算系统,至少一个计算系统又包括处理器,例如如上所述。计算系统还可以包括存储器设备,诸如上面讨论的那些中的一个或多个、视频控制器、网络接口和/或耦合到一个或多个用户I/O设备的用户I/O接口。服务器114可以包括通用计算机或专用计算机,并且可以被实施为例如运行存储操作系统的商品服务器。尽管服务器114被称为单数实体,但是服务器114可以包括任何数目的计算设备,并且范围可以从单个计算系统到任何大小的系统集群。
在一个实施例中,服务器114还可以向存储系统102提供数据事务。此外,服务器114可以用于配置存储系统102的各个方面,例如在用户的指导和输入下。在一些示例中,配置经由用户界面执行,用户界面在本地或远程呈现给用户。在其他示例中,配置由服务器114动态地执行。一些配置方面可以包括将ISR和任务与CPU核、一个或多个RAID组、一个或多个磁盘池和一个或多个卷(仅举几个示例)相关联的一个或多个映射表的定义。
关于主机104,主机104包括可操作以通过向存储系统102提供(发起)数据事务来与存储系统102交换数据的任何计算资源。在示例性实施例中,主机104包括与存储系统102的存储控制器108.a、108.b通信的主机总线适配器(HBA)110。HBA 110提供用于与存储控制器108.a、108.b通信的接口,并且就此而言,可以符合任何合适的硬件和/或软件协议。在各种实施例中,HBA 110包括串行连接SCSI(SAS)、iSCSI、InfiniBand、光纤通道和/或以太网光纤通道(FCoE)总线适配器。其他合适的协议包括SATA、eSATA、PATA、USB和FireWire。主机104的HBA 110可以通过直接连接(例如,单线或其他点对点连接)、联网连接或其任何组合来耦合到存储系统102。合适的网络架构112的示例包括局域网(LAN)、以太网子网、PCI或PCIe子网、交换PCIe子网、广域网(WAN)、城域网(MAN)、因特网、光纤通道等。在很多实施例中,主机104可以具有与单个存储系统102的多个通信链路以用于冗余。多个链路可以由主机104内的单个HBA 110或多个HBA提供。在一些实施例中,多个链路并行操作以增加带宽。
图2示出了根据本公开的各方面的包括存储系统102的存储控制器108.a的示例性架构200的组织图。为了故障转移和负载平衡的目的,存储控制器108.a和108.b是冗余的,并且为了简化讨论的目的,将存储控制器108.a作为代表进行描述。可以理解,存储控制器108.b执行与针对存储控制器108.a所描述的功能类似的功能,并且存储控制器108.b处具有类似编号的项目与下面针对存储控制器108.a所描述的具有类似的结构并且执行类似的功能。
如图2所示,存储控制器108.a包括多核处理器202。多核处理器202可以包括微处理器、多个微处理器核、微控制器、专用集成电路(ASIC)、中央处理单元(CPU)、数字信号处理器(DSP)、控制器、现场可编程门阵列(FPGA)设备、另一硬件设备、固件设备或其任何组合。在本示例中,如图所示,多核处理器202包括多个核204.a、204.b、204.c、204.d。多核处理器202还可以实现为计算设备(例如,若干多核处理器、多个微处理器、一个或多个微处理器与多核处理器的结合、或者任何其他这样的配置)的组合。尽管多核处理器202被称为单数实体,但是存储控制器108.a可以包括任何数目的多核处理器,其可以包括任何数目的核。例如,存储控制器108.a可以包括若干多核处理器,每个多核处理器具有多个核。术语多核处理器包括任何处理器,诸如双核处理器,其包括两个或更多个核。
在本示例中,核204.a、204.b、204.c、204.d是集成到单个集成电路裸片中或集成到单个芯片封装件的多个裸片中的独立CPU。在一些示例中,核204.a、204.b、204.c、204.d共享一个或多个高速缓存。在其他示例中,核204.a、204.b、204.c、204.d每个被配置为能够访问独立的高速缓存。
每个核204.a、204.b、204.c、204.d被配置有响应于中断的一个或多个ISR。ISR是硬件响应于中断而调用的软件例程。ISR被配置为接收中断,处理中断,并且响应于中断来返回输出。例如,发送到核204.a的设备中断触发在核204.a上处理的ISR以处理设备中断。
每个核204.a、204.b、204.c、204.d还被配置为执行一个或多个任务。任务可以包括任何执行单位。任务包括例如由存储控制器108.a执行的线程、进程和/或应用。在一些示例中,任务是代表主机执行的特定事务,诸如查询数据、检索数据、上传数据等。任务也可以包括事务的一部分。例如,数据存储的查询可能涉及每个是单独任务的子部分。指派给任务的特定核执行与任务相对应的指令。任务也可以被配置为生成中断,这些中断由指派给核的ISR接收、处理和响应。
多核处理器202经由系统总线206耦合到存储器208。诸如共享和/或个体存储器(包括缓冲器和/或高速缓存)等一个或多个中间组件可以耦合在核204.a、204.b、204.c、204.d与存储器208之间。在一些示例中,缓冲器在核之间共享。例如,缓冲器可以是核外部的设备级别缓冲器,但是由一个或多个核可访问。在其他示例中,每个核在核级别被指派缓冲器。例如,缓冲器可以硬连线或直接耦合到核。因此,在一些示例中,可以在设备级别或在每个核处配置对应于核的缓冲器。存储器208可以包括HDD、SSD、光盘驱动器和/或任何其他合适的易失性或非易失性数据存储介质。存储器208包括操作系统212(例如,VxWorks、LINUX、UNIX、OS X、WINDOWS)和至少一个应用210,其包括由多核处理器202执行的指令。另外,存储器208被配置有由应用210可访问的至少一个映射。在一些示例中,映射存储在与应用210相关联的存储器空间中。在其他示例中,映射与应用210分开存储,诸如在由应用210访问的数据库中。映射标识并且执行一个或多个任务、一个或多个ISR和目标核之间的映射。例如,任务可以被映射到目标核,指示当执行迁移过程时任务将要被迁移到目标核。类似地,ISR可以被映射到目标核,指示与这个ISR相关联的中断将要被迁移到与目标核相关联的ISR。此外,映射还可将任务与ISR相关联,以及将中断与ISR相关联。
多核处理器202执行应用210和操作系统212的指令以执行存储控制器108.a的操作,包括处理由主机发起的事务。在本示例中,应用210被配置为管理任务和ISR在核之间的迁移。特别地,应用210被配置为从映射中标识与ISR和任务相对应的目标核,以便将ISR和任务迁移到目标核。在一些示例中,ISR从源核到目标核的迁移是指向目标核指派中断,使得中断触发目标核上的ISR而不是源核上的ISR。类似地,任务从源核到目标核的迁移是指将任务指派给目标核,使得任务由目标核而不是源核处理。
应用210被配置为动态地执行或者根据一个或多个预先配置的条件来执行。在本示例中,应用210在操作系统212之上运行。在其他示例中,应用210在初始化操作系统212(例如,通过存储控制器108.a的固件)之前运行。应用210被示出为与操作系统212分开的实体,然而,在一些示例中,应用210可以被包括作为操作系统212的一部分。在一些示例中,应用210被配置为在初始化过程之后(例如,在初始化操作系统或特定应用之后)执行以将任务和ISR迁移到多个核。在其他示例中,应用210被配置为在性能统计指示操作请求速率已经降低到预先配置或计算的阈值以下的情况下执行,以便在核之间重新平衡任务和ISR或者将任务和ISR迁移到单个核。换言之,迁移到更少的核(甚至是单个核)可以在操作请求速率低于阈值的时间期间优化处理。检测到操作请求速率低于阈值也可以被称为检测低系统负载。当检测到操作请求速率低于阈值时,应用210可以确定减少每操作延迟的益处超过潜在降低的吞吐量的成本,并且因此将操作迁移到更少的核。例如,响应于检测到低于预先配置的或用户指定的阈值的系统负载(例如,检测到低系统负载),多个任务和ISR可以被迁移到更少的核(例如,单个核)。
应用210通信地耦合到操作系统212。此外,应用210被配置为请求来自操作系统212的动作,诸如任务的阻止/解除阻止、任务和中断在核之间的指派以及中断的启用/禁用。操作系统212被配置有一个或多个接口,应用210可以与之交互以传送请求并且接收关于指派的信息。
以上描述提供了存储控制器108.a的架构的说明。应当理解,存储控制器108.b执行类似的操作。
现在转到图3,根据本公开的各方面所示的从一个或多个源核向一个或多个目标核迁移任务和ISR的方法300的流程图。在一个实施例中,方法300可以由存储系统102的一个或多个存储控制器108.a、108.b中的一个或多个处理器通过执行用于执行本文中描述的功能的计算机可读指令来实现。可以理解,可以在方法300的步骤之前、期间和之后提供附加的步骤,并且对于方法300的其他实施例,可以替换或消除所描述的一些步骤。
在动作框302处,存储控制器触发迁移过程。在本示例中,存储控制器通过执行被配置为管理迁移的应用来触发迁移过程。在一些示例中,应用在初始化序列完成之后执行。在其他示例中,应用基于测量的性能统计数据、经改变的操作条件等动态地执行。应用被配置为从单个核到多个核、从多个核到单个核以及跨越多个核中的核迁移任务和ISR(例如,诸如以执行负载平衡或响应于核故障)。在本示例中,在完成初始化序列之后,应用从单个核向多个核迁移任务和ISR,使得任务和ISR在多个核之间均匀分散。
在动作框304处,存储控制器访问ISR和任务到目标核的映射。在一些示例中,映射是预先配置的,诸如由用户经由用户界面。在其他示例中,映射是动态生成的,诸如通过测量性能统计并且基于延迟和工作负载考虑将每个任务和ISR动态地映射到目标核。映射至少部分基于可用核的数目。在其他示例中,映射由诸如服务器或主机等另一实体提供。
在映射中,每个ISR和任务被映射到目标核。在一些示例中,任务可以执行与ISR的功能相关的功能。在一些示例中,映射被格式化为使用行、列或其他分隔符将ISR和任务与目标核相关联的表格或列表。在映射中,每个ISR和任务可以被映射到单个目标核(例如,以从多个核向单个核迁移任务和ISR)。ISR和任务也可以被映射到多个核(例如,第一任务和第一ISR被映射到第一核,而第二任务和第二ISR被映射到第二核)以便从单个核到多个核或者在多个核中的核之间迁移任务和ISR。
在动作框306处,标识将要为其开始任务和ISR的迁移的第一目标核。第一目标核的标识可以通过例如指定迁移将要在预定义的核(例如,目标核0)处开始的应用来执行,其中目标核递增以对于每个目标核按顺序执行迁移,直到所有任务和ISR已经迁移到所有目标核。在其他示例中,基于映射,应用动态地确定将要开始迁移的目标核。例如,应用可以检查和/或解析映射以确定将要开始迁移的特定目标核。确定特定目标核可以通过例如解析映射以标识所有目标核并且然后选择所标识的目标核之一来执行。
在参考框308处,存储控制器基于映射(例如,解析和/或检查映射)来从一个或多个源核向指定的目标核迁移ISR和任务。图4示出了用于关于每个目标核执行ISR和任务的迁移的示例过程。
在判定框310处,存储控制器确定是否存在尚未执行迁移过程的附加目标核。“是”确定导致过程继续到框312以继续关于剩余目标核的迁移。“否”确定导致过程在框314处完成。
在动作框312处,标识下一目标核。在一些示例中,第一目标核是核0,并且在框312中递增目标核,使得以顺序方式针对每个目标核执行迁移。在标识下一目标核之后,过程在参考框308处继续(例如,如图4所示)以针对所标识的目标核执行迁移。
在动作框314处,确定已经针对每个目标核完成了迁移过程。因此,管理迁移的应用被终止或暂停。
实施例的范围不限于图3所示的动作。而是,其他实施例可以添加、省略、重新布置或修改各种动作。例如,在其中存储控制器包括分离芯片的情况下,其中每个芯片具有多个核,存储控制器可以关于每个芯片执行相同或相似的方法。
图4示出了根据本公开的各方面所示的从源核向目标核迁移ISR和任务的方法400的流程图。在一个实施例中,方法400可以由存储系统102的一个或多个存储控制器108的一个或多个处理器执行用于执行本文中描述的功能的计算机可读指令来现。可以理解,可以在方法400的步骤之前、期间和之后提供附加的步骤,并且对于方法400的其他实施例,可以替换或消除所描述的一些步骤。
在动作框402处,存储控制器触发关于特定目标核的迁移过程。在一些示例中,针对特定目标核的迁移过程作为以顺序方式遍历每个目标控制器的过程的一部分被触发(例如,如图3所示)。
在操作框404处,阻止将要迁移到目标核的任务。在本示例中,与目标核相对应的这些任务经由标识任务及其目标核的映射来标识。应用通过检查和/或解析映射以标识每个任务和与每个任务相对应的目标核来向任务标识其相应的目标核。在一些示例中,映射到目标核的任务被同时阻止。在其他示例中,任务按顺序被阻止。被阻止的任务被防止执行。在禁用中断之前阻止任务是有利的,因为任务可以执行可能导致生成中断的动作和/或操作。因此,通过阻止任务,也可以防止至少一些中断。
在一些示例中,迁移过程由存储控制器执行的应用来执行。在应用运行时,核被配置为执行与应用相关联的任务。与应用无关的任务不会执行。因此,通过运行应用,其他任务被应用阻止,这防止执行其他任务。在其他示例中,应用请求经由OS接口来暂停由映射的检查和/或解析所标识的每个任务,从而阻止任务执行。因此,如上所述,任务可以仅通过应用运行来被自动阻止,或者根据应用的请求基于任务来被自动阻止。
在动作框406处,禁用将要迁移到目标核的中断。在本示例中,经由标识ISR、与ISR相关联的中断和目标核的映射来标识与目标核相对应的这些中断。应用检查和/或解析映射以标识ISR、与ISR相关联的中断以及与每个ISR和中断相对应的目标核。在一些示例中,由应用解析的中断通过应用请求经由OS接口禁用中断来被禁用。在一些示例中,中断在阻止任务的同时被禁用。在其他示例中,中断在阻止任务之后被禁用。中断的示例包括错误消息中断、数据/传输就绪中断等。在本示例中,当中断被禁止在其指派的核上处理时,在这个指派的核处的任何传入中断保持未决和/或缓冲状态,直到在目标核处被重新指派和启用。例如,中断可以保持被缓冲在指派有指派的核的高速缓存中,直到中断在目标核上重新启用。
在动作框408处,将禁用的中断与目标核相关联。例如,这个动作可以经由OS接口来执行,该OS接口接受一个或多个中断及其目标核作为输入并且向其目标核指派禁用的中断。
在动作框410处,向目标核指派被阻止的任务。例如,这个动作可以经由OS接口来执行,该OS接口接受一个或多个任务及其目标核作为输入。
在动作框412处,启用禁用的中断。例如,中断可以通过请求经由OS接口启用中断来启用。一旦启用,任何未决/缓冲的中断被目标核处理。
在操作框414处,解除阻止被阻止的任务。应用可以使用OS接口解除阻止任务。例如,这个动作可以经由OS接口来执行,该OS接口接受一个或多个任务及其目标核作为输入。在另一示例中,如果应用被配置为阻止与应用不相关的任何任务的运行,则应用可以被终止以便解除阻止任务。在这个配置中,可以在将所有任务迁移到所有目标核之后执行应用的关闭,以便同时解除阻止所有任务。
在一些示例中,中断在解除阻止任务的同时被启用。在其他示例中,中断在解除阻止任务之前被启用。
在动作框416处,确定已经关于目标核完成了迁移过程。如果存在将要迁移任务的附加目标核,则可以关于每个附加目标核执行这个过程,如图3所示。
上面提供的示例具体说明了应用于存储系统的各种概念。然而,实施例的范围不限于此。相反,本文中描述的原理可以应用于使用多个核和/或多个处理器并且可以在核和/或处理器之间指派任务和中断的任何适当的计算机系统。
本文中描述的各种实施例提供优于现有系统和方法的优点。例如,利用多个核的传统系统可能在低工作负载下将由单个核更高效地执行的操作期间不必要地增加延迟。类似地,使用单个核处理操作的传统系统可能不具有在高工作负载时由多个核提供的吞吐量优势。上述各种实施例在适当时利用任务和ISR的预先配置和/或动态的迁移。各种实施例通过增加工作负载处理的效率来改进图1的存储系统102的操作。换言之,一些实施例涉及由一些存储系统的架构所呈现的问题,并且那些实施例提供了可以适用于那些架构中的迁移技术以改善在那些架构中使用的机器的性能。
本实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元件两者的实施例的形式。就此而言,在一些实施例中,计算系统是可编程的并且被编程为执行包括本文中讨论的方法300和400的过程在内的过程。因此,可以理解,根据本公开的各方面的计算系统的任何操作可以由计算系统使用存储在由处理系统可访问的非暂态计算机可读介质上或中的对应指令来实现。为了这个描述的目的,有形的计算机可用或计算机可读介质可以是能够存储用于由指令执行系统、装置或设备使用或与其相结合使用的程序的任何装置。介质可以包括例如非易失性存储器,包括磁存储装置、固态存储装置、光存储装置、高速缓冲存储器和随机存取存储器(RAM)。
以上概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应当理解,他们可以容易地使用本公开作为用于设计或修改用于实现本文中介绍的实施例的相同目的和/或实现本文中介绍的实施例的相同优点的其他过程和结构的基础。本领域技术人员还应当认识到,这样的等同构造没有脱离本公开的精神和范围,并且他们可以在不脱离本公开的精神和范围的情况下进行各种改变、替换和变更。
Claims (19)
1.一种用于在CPU核之间迁移操作的方法,包括:
由存储控制器的多个核处理一个或多个任务和一个或多个中断服务例程;
响应于检测到低系统负载,从多核配置转换为单核配置,所述转换包括通过以下动作将所述一个或多个任务和一个或多个中断服务例程从所述多个核迁移到目标核:
访问与所述一个或多个任务中的任务和所述一个或多个中断服务例程中的中断服务例程相对应的映射;
基于所述映射来标识与所述任务和所述中断服务例程相对应的所述目标核;
响应于标识所述目标核来阻止由源核处理所述任务;
响应于标识所述目标核,禁用与所述中断服务例程相对应的中断;
响应于标识所述目标核,向所述目标核指派所述任务和所述中断;
在向所述目标核指派所述中断之后,启用所述中断;以及
在向所述目标核指派所述任务之后,由所述目标核处理所述任务。
2.根据权利要求1所述的方法,还包括:
在启用所述中断之前,在与所述源核相对应的缓冲器处缓冲所述中断。
3.根据权利要求1所述的方法,其中所述映射由用户配置的映射表来提供。
4.根据权利要求1所述的方法,其中访问所述映射包括创建所述映射。
5.根据权利要求1所述的方法,还包括:
向第二目标核迁移第二组任务和中断服务例程。
6.根据权利要求5所述的方法,其中所述第二组任务和中断服务例程基于可用核的数目被选择用于到所述第二目标核的迁移。
7.根据权利要求1所述的方法,其中所述一个或多个任务和所述一个或多个中断服务例程由所述目标核在初始化序列期间处理,并且
其中所述任务由所述目标核在所述初始化序列之后处理。
8.一种用于在CPU核之间迁移操作的计算设备,包括:
包含机器可读介质的存储器,所述机器可读介质包括机器可执行代码,所述机器可执行代码上存储有指令,所述指令用于执行从源核到多个核以及从所述多个核到所述源核迁移任务和中断服务例程(ISR)的方法;以及
被耦合到所述存储器的处理器,所述处理器被配置为执行所述机器可执行代码以使得所述处理器:
访问映射;
从所述映射中标识,
第一组任务和第一组ISR以迁移到所述多个核中的第一核,以及
第二组任务和第二组ISR以迁移到所述多个核中的第二核;
根据标识所述第一组任务和所述第一组ISR来执行以下操作:
阻止所述第一组任务并且禁用第一组中断,其中所述第一组中断对应于所述第一组ISR;
向所述第一核指派所述第一组任务和所述第一组中断;以及
启用所述第一组中断并且解除阻止所述第一组任务;以及根据标识所述第二组任务和所述第二组ISR来执行以下操作:
阻止所述第二组任务并且禁用第二组中断,其中所述第二组中断对应于所述第二组ISR;
向所述第二核指派所述第二组任务和所述第二组中断;
启用所述第二组中断并且解除阻止所述第二组任务;以及
响应于检测到低系统负载,从多核配置转换为单核配置,所述转换包括将所述第一组任务和所述第二组任务迁移到所述源核。
9.根据权利要求8所述的计算设备,其中所述第一组任务的所述解除阻止在所述第二组任务的所述阻止之前被执行。
10.根据权利要求8所述的计算设备,其中所述映射经由用户界面被配置。
11.根据权利要求8所述的计算设备,其中所述映射被动态生成。
12.根据权利要求8所述的计算设备,其中所述第一组任务中的至少一个任务由所述源核在初始化序列期间被执行,其中所述至少一个任务在所述初始化序列之后在所述第一核上被执行。
13.根据权利要求8所述的计算设备,其中所述第二组任务至少部分基于可用核的数目被选择用于到所述第二核的迁移。
14.根据权利要求8所述的计算设备,其中所述第一组任务在禁用所述第一组中断之前被阻止执行,
其中所述第一组任务在启用所述第一组中断之后被解除阻止。
15.一种用于在CPU核之间迁移操作的非暂态机器可读介质,具有存储于其上的指令,所述指令用于执行在CPU核之间迁移操作的方法,所述指令包括机器可执行代码,所述机器可执行代码在由至少一个机器执行时引起所述机器:
在初始化期间,在第一核上执行多个任务和多个中断服务例程(ISR);
在完成所述初始化之后,跨越多个核迁移所述多个任务和所述多个ISR,包括:
访问将所述多个任务和所述多个ISR与所述多个核相关联的映射;
基于所述映射,向所述多个核指派所述多个任务作为指派的任务;
基于所述映射,向所述多个核指派一个或多个中断作为指派的中断,所述一个或多个中断对应于所述多个ISR;
在所述多个核上处理所述指派的中断;以及
在所述多个核上执行所述指派的任务;
响应于检测到低系统负载,从多核配置转换为单核配置,所述转换包括将所述多个任务和所述多个ISR从所述多个核迁移到所述第一核。
16.根据权利要求15所述的非暂态机器可读介质,所述迁移还包括:
阻止所述多个任务并且禁用所述一个或多个中断。
17.根据权利要求16所述的非暂态机器可读介质,所述迁移还包括:
解除阻止指派的任务并且启用所述指派的中断。
18.根据权利要求15所述的非暂态机器可读介质,所述机器还用于:
基于性能测量,向所述多个核中的其他核迁移一个或多个任务。
19.根据权利要求17所述的非暂态机器可读介质,其中所述多个任务在禁用所述一个或多个中断之前被阻止,
其中所述指派的任务在启用所述指派的中断之后被解除阻止。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/836,331 US9910700B2 (en) | 2015-08-26 | 2015-08-26 | Migration between CPU cores |
US14/836,331 | 2015-08-26 | ||
PCT/US2016/049051 WO2017035488A1 (en) | 2015-08-26 | 2016-08-26 | Migration between cpu cores |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139928A CN108139928A (zh) | 2018-06-08 |
CN108139928B true CN108139928B (zh) | 2022-01-28 |
Family
ID=58100963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680062111.2A Active CN108139928B (zh) | 2015-08-26 | 2016-08-26 | 用于在cpu核之间迁移操作的方法、计算设备和可读介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9910700B2 (zh) |
EP (1) | EP3341839B1 (zh) |
CN (1) | CN108139928B (zh) |
WO (1) | WO2017035488A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932213A (zh) * | 2017-10-10 | 2018-12-04 | 北京猎户星空科技有限公司 | 多操作系统间的通讯方法、装置、电子设备和存储介质 |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164820A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization |
WO2020165666A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with blocking indicator |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
BR112021016093A2 (pt) | 2019-02-14 | 2021-10-26 | International Business Machines Corporation | Interrupção dirigida para virtualização de multiníveis |
JP7450627B2 (ja) | 2019-02-14 | 2024-03-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム |
EP3924819A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
US11144226B2 (en) * | 2019-04-11 | 2021-10-12 | Samsung Electronics Co., Ltd. | Intelligent path selection and load balancing |
US11808858B2 (en) * | 2019-09-04 | 2023-11-07 | Pony Ai Inc. | Systems and methods for constructing and utilizing field-of-view (FOV) information |
US11822955B2 (en) * | 2020-01-17 | 2023-11-21 | Steering Solutions Ip Holding Corporation | System and method for decentralized vehicle software management |
CN117234763A (zh) * | 2022-06-07 | 2023-12-15 | 华为技术有限公司 | 处理器核故障处理方法、装置、设备及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721931A (en) | 1995-03-21 | 1998-02-24 | Advanced Micro Devices | Multiprocessing system employing an adaptive interrupt mapping mechanism and method |
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
JP2008152594A (ja) | 2006-12-19 | 2008-07-03 | Hitachi Ltd | マルチコアプロセッサ計算機の高信頼化方法 |
US8296768B2 (en) * | 2007-06-30 | 2012-10-23 | Intel Corporation | Method and apparatus to enable runtime processor migration with operating system assistance |
US8225315B1 (en) | 2007-07-23 | 2012-07-17 | Oracle America, Inc. | Virtual core management |
KR101400286B1 (ko) * | 2008-01-22 | 2014-05-26 | 삼성전자주식회사 | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US9032101B1 (en) * | 2008-12-10 | 2015-05-12 | Nvidia Corporation | Chipset support for binding and migrating hardware devices among heterogeneous processing units |
JP5214537B2 (ja) * | 2009-05-25 | 2013-06-19 | 株式会社東芝 | マルチプロセッサシステム |
US8521963B1 (en) | 2009-09-21 | 2013-08-27 | Tilera Corporation | Managing cache coherence |
US8904154B2 (en) * | 2010-04-16 | 2014-12-02 | Massachusetts Institute Of Technology | Execution migration |
TWI425422B (zh) | 2010-07-16 | 2014-02-01 | Mstar Semiconductor Inc | 多cpu領域行動電子裝置與其操作方法 |
CN102455944A (zh) * | 2010-10-29 | 2012-05-16 | 迈普通信技术股份有限公司 | 多核负载均衡的方法以及处理器 |
WO2012069881A1 (en) * | 2010-11-25 | 2012-05-31 | Freescale Semiconductor, Inc. | Method and apparatus for managing power in a multi-core processor |
WO2013101032A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
US9720730B2 (en) | 2011-12-30 | 2017-08-01 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
US10990407B2 (en) * | 2012-04-24 | 2021-04-27 | Intel Corporation | Dynamic interrupt reconfiguration for effective power management |
US10185566B2 (en) | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
CN104781803B (zh) * | 2012-12-26 | 2018-06-15 | 英特尔公司 | 用于架构不同核的线程迁移支持 |
US9292348B2 (en) * | 2013-07-16 | 2016-03-22 | International Business Machines Corporation | System overhead-based automatic adjusting of number of running processors within a system |
US9917777B2 (en) * | 2014-01-15 | 2018-03-13 | Wind River Systems, Inc. | Method and system for decentralized workload optimization in a data packet processing system using a multicore CPU |
CN104102543B (zh) * | 2014-06-27 | 2018-09-11 | 北京奇艺世纪科技有限公司 | 一种云计算环境中负载调整的方法和装置 |
-
2015
- 2015-08-26 US US14/836,331 patent/US9910700B2/en active Active
-
2016
- 2016-08-26 CN CN201680062111.2A patent/CN108139928B/zh active Active
- 2016-08-26 WO PCT/US2016/049051 patent/WO2017035488A1/en active Application Filing
- 2016-08-26 EP EP16840221.2A patent/EP3341839B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2017035488A1 (en) | 2017-03-02 |
EP3341839B1 (en) | 2022-10-05 |
US9910700B2 (en) | 2018-03-06 |
EP3341839A4 (en) | 2019-05-01 |
CN108139928A (zh) | 2018-06-08 |
EP3341839A1 (en) | 2018-07-04 |
US20170060624A1 (en) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139928B (zh) | 用于在cpu核之间迁移操作的方法、计算设备和可读介质 | |
US20220075649A1 (en) | Migration between cpu cores | |
US11068171B2 (en) | High availability storage access using quality of service based path selection in a storage area network environment | |
US11163452B2 (en) | Workload based device access | |
US9304878B2 (en) | Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines | |
JP5658197B2 (ja) | 計算機システム、仮想化機構、及び計算機システムの制御方法 | |
US20160034186A1 (en) | Host-based device drivers for enhancing operations in redundant array of independent disks systems | |
US20170031699A1 (en) | Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment | |
US20170090999A1 (en) | Storage System Multiprocessing and Mutual Exclusion in a Non-Preemptive Tasking Environment | |
US20150293708A1 (en) | Connectivity-Aware Storage Controller Load Balancing | |
US9965350B2 (en) | Maintaining cyclic redundancy check context in a synchronous I/O endpoint device cache system | |
US10223305B2 (en) | Input/output computer system including hardware assisted autopurge of cache entries associated with PCI address translations | |
US10275354B2 (en) | Transmission of a message based on a determined cognitive context | |
US9710381B2 (en) | Method and apparatus for cache memory data processing | |
JP6703600B2 (ja) | 計算機システム及びサーバ | |
US10826848B2 (en) | Balanced, opportunistic multicore I/O scheduling from non-SMP applications | |
US9946484B2 (en) | Dynamic routing of input/output requests in array systems | |
US20150058503A1 (en) | Storage apparatus and method of controlling storage apparatus | |
US10366024B2 (en) | Synchronous input/output computer system including hardware invalidation of synchronous input/output context | |
US11003378B2 (en) | Memory-fabric-based data-mover-enabled memory tiering system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |