CN101689158B - 用于多核处理器的数据分组处理方法 - Google Patents
用于多核处理器的数据分组处理方法 Download PDFInfo
- Publication number
- CN101689158B CN101689158B CN2008800168221A CN200880016822A CN101689158B CN 101689158 B CN101689158 B CN 101689158B CN 2008800168221 A CN2008800168221 A CN 2008800168221A CN 200880016822 A CN200880016822 A CN 200880016822A CN 101689158 B CN101689158 B CN 101689158B
- Authority
- CN
- China
- Prior art keywords
- cpu
- nuclear
- network
- application program
- processor
- 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
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
一种用于在网络服务器系统中处理数据分组的方法,该系统包括至少一个具有多个核的中央处理器单元(CPU);以及网络接口,该网络接口用于在网络和指定CPU核之间形成到该网络的连接,以使得对于从该网络接收到的所有数据分组,在该指定CPU核中创建中断以便于对接收到的数据分组的处理。从该网络接收到的每一个数据分组都与基于处理器负载来选择的CPU核中所建立的应用程序连接相关联,并且在与该应用程序连接相关联的CPU核上创建用于处理该数据分组的中断线程。被发送到网络的每一个数据分组都与其中执行应用程序的CPU核或基于处理器负载来选择的替换CPU核中所建立的应用程序连接相关联。在应用程序连接在替换CPU核中建立的情况下,在与该连接相关联的CPU核上创建用于处理该数据分组的中断线程。
Description
技术领域
本申请涉及用于多核处理器的数据分组处理方法。
背景技术
已知的多核处理器平台包括一个或多个中央处理器单元(CPU),这些CPU各自可具有共享存储器和I/O(输入和输出)资源的多个处理核。该多核体系结构使得能够在不止一个核上同时执行多个进程或“线程”。已经开发出这些多核处理器以增加胜过单核处理器的平台处理容量。
在多核对称多处理处理(SMP)体系结构中,共享系统存储器以使得任一个处理器核可操作任一任务而不管用于该任务的数据在系统存储器中驻留在哪里。多核系统利用在一个CPU的多个核之间共享的高速缓存存储器也是已知的。
多核处理器平台可在诸如以太网局域网(LAN)等网络中用作服务器。服务器体系结构可包括多个处理器,然而,这些处理器仅使用连接到一个处理器核的一个LAN接口或网络接口卡(NIC)来物理地连接到网络。该网络接口在从网络接收分组时只可中断一个处理器。接收到的分组然后通过中断的核中的网络栈来进行处理直到该分组到达应用程序。由此,对于所有从网络接收到的数据使用连接该网络的处理器核。在高速TCP/IP应用程序或任何网络栈应用程序和诸如千兆位和万兆位以太网网络等高带宽网络的情况下,全服务器处理容量可能由于网络和服务器之间的数据吞吐量受到连接该网络的处理器核的饱和度的限制而无法实现。
当前克服该问题的解决方案要求服务器具备连接到更多处理器的更多网络接口以便将网络接口处理负载分布在多个处理器上。该解决方案可提高服务器和网络之间的吞吐量,但由于其需要附加网络接口卡而是低效的。该解决方案还引入用于协调多个网络接口的额外开销。
另一建议的针对该问题的解决方案是通过网络接口将对入站数据的网络栈操作重新分发给各个核。该解决方案需要LAN或网络接口和处理器操作系统之间的互操作性。由此,需要修改网络接口和操作系统以实现这一解决方案,因此该解决方案无法用标准的当前可得到的网络接口来实现。
存在对提高网络和具有多核处理器体系结构的服务器之间的吞吐量的服务器体系结构的需求。
发明内容
本发明提供一种在多核处理器平台中处理从网络接收到的数据分组的方法,该方法包括以下步骤:在指定中央处理器单元(CPU)核中从网络接口接收中断以便处理从所述网络接收到的数据分组;将所述数据分组与基于处理器负载来选择的中央处理器单元(CPU)核中所建立的应用程序连接相关联;以及在与所述应用程序连接相关联的CPU核上创建中断线程以便于处理所接收到的数据分组。
本发明还提供一种处理由在多核处理器平台的一个中央处理器单元(CPU)核中执行的应用程序发送到网络的数据分组的方法,所述方法包括以下步骤:确定是使用执行所述应用程序的CPU核还是使用替换中央处理器单元(CPU)核来执行对传出数据分组的处理;并且在确定使用替换CPU核的情况下:基于处理器负载来选择用于传出分组处理的替换CPU核;在所选替换CPU核中建立应用程序连接;将所述数据分组与所述应用程序连接相关联;以及在所选替换CPU核上创建中断线程以便于处理到所述网络接口来通过所述网络传输的数据分组。
本发明还提供一种网络服务器系统,包括:至少一个具有多个核的中央处理器单元(CPU);以及网络接口,其用于连接到网络,并适用于在指定CPU核中创建中断以便处理从所述网络接收到的每一个数据分组,其中:从所述网络接收到的每一个数据分组都与所选CPU核中所建立的应用程序连接相关联;所述CPU核基于处理器负载来选择;并且在与所述应用程序连接相关联的CPU核上创建中断线程以便于处理所述数据分组。
本发明还提供一种网络服务器系统,包括:至少一个具有多个核的中央处理器单元(CPU);以及网络接口,其用于形成到网络的连接,并适用于在指定CPU核中创建中断以便处理从所述网络接收到的每一个数据分组,并且还被修改以使得每一个CPU核都可访问用于将数据分组传送到所述网络的网络接口,其中:被发送到所述网络的每一个数据分组都与其中执行所述应用程序的CPU核或基于处理器负载来选择的替换CPU核中所建立的应用程序连接相关联;并且在所述应用程序连接在替换CPU核中建立的情况下,在与所述应用程序连接相关联的CPU核上创建中断线程以便处理所述数据分组。
附图简述
现在将仅作为示例,参考所附附图描述本发明的各实施例,附图中:
图1示出了多核处理器体系结构的示例;
图2示出了根据本发明的一实施例的、通过多核处理器的网络栈来处理分组的示例;
图3是示出选择处理器核并将分组处理移交给所选核的内核过程的流程图;
图4示出了比较性测试示例1中所使用的常规多核处理器网络栈体系结构测试模型;
图5示出了根据本发明的一实施例的、比较性测试示例1中所使用的多核处理器网络栈体系结构;以及
图6是示出比较性测试示例1的结果的图。
具体实施方式
根据一实施例,提供了一种在多核处理器平台中处理从网络接收到数据分组的方法,该方法包括以下步骤:
在指定中央处理器单元(CPU)核中从网络接口接收中断以便处理从网络接收到的数据分组;
将该数据分组与基于处理器负载来选择的中央处理器单元(CPU)核中所建立的应用程序连接相关联;以及
在与该应用程序连接相关联的CPU核上创建中断线程以便处理所接收到的数据分组。
根据一实施例,提供了一种处理由在多核处理器平台的一个中央处理器单元(CPU)核中执行的应用程序发送到网络的数据分组的方法,该方法包括以下步骤:
确定是使用执行应用程序的CPU核还是使用替换中央处理器单元(CPU)核来执行对数据分组的传出处理;
并且在确定使用替换CPU核的情况下:
基于处理器负载来选择用于传出分组处理的替换CPU核;
在所选替换CPU核中建立应用程序连接;
将数据分组与该应用程序连接相关联;以及
在所选替换CPU核上创建中断线程以便处理到网络接口来通过网络传输的数据分组。
根据一实施例,提供了一种网络服务器系统,该系统包括至少一个具有多个核的中央处理器单元(CPU)以及网络接口,该网络接口用于连接到网络,并且适用于在指定CPU核中创建中断以便处理从该网络接收到的每一个数据分组。从网络接收到的每一个数据分组都与基于处理器负载来选择的所选CPU核中所建立的应用程序连接相关联。在与该应用程序连接相关联的CPU核上创建用于处理数据分组的中断线程。
根据一实施例,提供了一种网络服务器系统,该系统包括至少一个具有多个核的中央处理器单元(CPU)以及网络接口,该网络接口用于连接到网络,并且适用于在指定CPU核中创建中断以便从该网络接收到的每一个数据分组,并且还可被修改以使得每一个CPU核都可访问网络接口以便将数据分组传送到网络。发送到网络的每一个数据分组都与其中执行应用程序的CPU核或基于处理器负载来选择的替换CPU核中所建立的应用程序连接相关联。在应用程序连接在替换CPU核中建立的情况下,在与该应用程序连接相关联的CPU核上创建用于处理数据分组的中断线程。
本发明的各实施例提供了一种用于在多核处理器平台100中处理发往网络110和从网络110接收到的分组以减少由于网络接口对于所有接收到的分组中断一个CPU核而引起的对发往和来自网络110的数据的吞吐量的限制的方法和系统。将接收到的分组与所选中央处理器单元(CPU)核中所建立的应用程序连接相关联,其中该CPU核基于处理器负载来选择。然后在与该应用程序连接相关联的CPU核上创建用于所接收到的分组的中断线程。这使得能够将分组处理移交给除了网络接口中断的CPU核之外的核,其中存在或建立应用程序连接以减少用于分组处理的连接网络接口的核中所使用的处理容量。
用于实现该方法的网络服务器系统的示例在图1中示出。系统100包括至少一个中央处理器单元(CPU)120、122,这些CPU各自具有多个核130、131、132、133,可任选地,一个处理器120中的核130、131具有共享高速缓存145并且每一个核130、131都具有其自己相应的高速缓存140、141。对于对称多处理(SMP),共享系统存储器160以使得任何处理器都可访问系统存储器160中的任何数据。提供用于在服务器100和网络110之间形成连接的网络接口150。网络接口150连接到预定CPU核130以使得将在该预定CPU核130中创建中断以便处理从网络接收到的每一个数据分组。预定CPU核130基于处理器负载来将从网络接收到的每一个数据分组分发给多个处理器核130、131、132、133中的所选处理器核,在那里处理分组直到该分组到达目的地应用程序170、171、172。
高速网络和接口的进步已导致以下情况:网络接口驱动程序能够比具有通过网络栈来处理分组并将数据传递给目的地应用程序170、171、172的能力的处理器更快地将分组传递给处理器。在其中网络接口150被编程为在接收到分组后只中断一个处理器核130并且对该分组的所有进一步的处理在同一个核130上发生直到该数据到达应用程序的SMP网络体系结构中这是个问题。在这种情况下,从网络接口150接收中断的CPU核130成为瓶颈,从而限制了到应用程序的数据吞吐量。
本发明的实施例通过在网络栈接收到分组时解除被网络接口150中断的CPU核130进行分组处理的负担并且并行化网络栈操作来缓解该问题。由此,对接收到的分组的处理可被分发给其他CPU核131、132、133以使得网络接口核130能够不再从网络接口150接收更多数据。
用于分发每一个接收到的分组230、231、232的过程在图2中示出。最初在连接网络接口150的CPU核130的网络栈210中处理从网络接收到的每一个分组然后将所接收到的分组与所选CPU核130、131、132中的对于目的地应用程序220、221、222的应用程序连接240、241、242相关联。在与应用程序连接相关联的CPU核上创建中断以便通过各个核130、131、132的网络栈210、211、212来处理所接收到的分组。
当网络接口150从网络110接收到每一个分组时,生成中断以开始通过连接网络接口的CPU核130的网络栈210来处理所接收到的分组。
将该分组与所选CPU核中的应用程序连接相关联并且在接收到该分组后尽可能快地在网络栈的底部将对该分组的处理移交给所选CPU核。
将分组与所选CPU核中的应用程序相关联并移交分组处理的过程在图3的流程图中示出。例如,执行图3的过程以便进行数据传输、数据接收、新传出连接请求或新传入连接请求,然而,处理取决于正在处理传入还是传出请求而在网络栈中的不同层处发生。对于传入请求,该过程在网络栈的底部发生,例如在数据链路层或紧接的上一层中,而对于传出请求,该过程在网络栈的顶部发生,例如在会话层中。在网络栈的相关层中接收传入或传出请求310,然后确定对于该请求是否需要新的应用程序连接320。
在连接已经存在并且对于该连接的CPU核是已知的情况下330,则中断该已知CPU 350并将处理移交给该CPU核,以使得分组与该连接相关联并且所有进一步的处理继续使用该中断的CPU核中的连接360。
应用程序连接可能存在并且可在不止一个核中处理并且在这种情况下,用于处理数据分组的优选CPU核可能不是已知的330。如果优选CPU核并非已知,则基于处理器负载和其他优选准则来从已建立应用程序连接的CPU核中选择CPU核340。例如,对于发送请求,优选在正用于执行应用程序的CPU中建立应用程序连接。如果优选CPU核并非已知,则可只基于处理器负载来选择CPU核340。然后创建将数据处理与所选核中的连接相关联的中断350并且处理在所选核中继续360。
在尚未建立连接的情况下320,例如对于对新连接的传出请求,基于处理器负载来选择对于该连接的CPU核340。然后创建中断350以便在所选核中建立连接并将数据处理与该连接相关联,然后处理在所选核中继续360。
一旦已中断所选核并根据所建立的连接来将处理移交给该核360,于是对于原始核就完成对传入或传出请求的处理370,这使得该原始核不再继续处理下一操作。
在一优选实施例中,为对连接的每一个传出或传入请求创建单独的中断线程。在该实施例中,按照连接技术来选定处理器核并且一旦接收到的分组与连接相关联,在所选CPU核上为该传入或传出请求创建的软件中断线程就完成了所有进一步的工作。该中断线程将对所接收到或所传送的数据进行所有进一步的处理直到该数据到达应用程序或被传送到网络。尽可能早地利用该中断线程以便在传入请求期间释放连接网络接口的CPU核。
在接收到的分组的情况下,对用于连接的处理器核的选择在连接建立期间在网络栈的底部发生,例如在数据链路层或紧接的上一层中。该核基于负载来选择,然而,可优先选择其上运行对于分组的目的地应用程序的核。这可通过将例如用于数据传输的将来的中断和网络栈处理移交减到最少来提供优点,并提高高速缓存利用率或将高速缓存未中减到最少。此外,在一优选实施例中,应用程序的亲和性(affinity)被设为与所选核在一起以使得应用程序不在另一个核上重新调度。
上述方法的另一优点是将锁定以及等待锁的相关联的浪费的CPU周期减到最少。在数据在常规服务器体系结构中由应用程序来通过网络传送的情况下,网络栈必须获得自旋锁(spin lock)以同步对数据结构的访问并且避免对传入和传出分组的处理之间的争用。这可导致浪费的CPU周期自旋同时等待获得锁。
本发明的各实施例通过按连接来选择处理器核的方法来减轻对网络栈自旋锁的需求及相关联的开销。对CPU核的选择以及对用于数据传输的连接的建立在网络栈的顶部执行。如图2所示,一旦标识了用于连接的处理器核,对于该连接的对出站和入站数据的分组处理就在该核上以相同的中断优先级(IPL)发生。这通过处理器核的网络栈提供了对每一个连接的自然同步。由此解除网络栈锁定的负担,这避免了由于CPU自旋而浪费CPU周期。
核选择过程和算法中变化可取决于服务器体系结构来作出。例如,在超线程环境中,可建立多个联合线程(co-thread)以便进行并行处理,每一个CPU核仿真两个虚拟CPU以使得能够在该CPU核的每一个虚拟CPU中执行联合线程。在该示例中,可实现其中由于联合线程而引起的CPU争用的概率通过尽可能地保持联合线程CPU核空闲来最小化的实施例。在该实施例中,在连接建立期间,优先选择除了联合线程CPU核之外的核。
或者,在适用于具有在伙伴核之间共享的高速缓存的体系结构的实施例中,可选择伙伴核以利用共享高速缓存的益处。CPU核通过优先选择与执行与所接收到的分组相关的操作的CPU核共享高速缓冲存储器的CPU核来选择。例如,在共享高速缓存的情况下,于是通过如上所述地将接收到的分组处理移交给伙伴核可将高速缓存更新减到最少。
对处理器核的选择可使用与操作系统(OS)调度器集成的算法来实现以基于所有CPU核上的软件中断负载来选择处理器核。处理器中断负载由操作系统调度功能来监控。由于网络连接数增加,因此期望将栈处理均匀地分布在所有可用的处理器核上。
操作系统调度进程但不调度软件中断。在一实施例中,使用软件中断负载检测算法,通过标识具有最少软件中断负载的CPU核来均匀地分布负载,该算法与OS调度器耦合并由网络栈用来选择要在其中建立连接的CPU核。所建立的连接在一个CPU核上维护或者在中断负载改变时迁移到不同的CPU。由此,将全部负载分布在多个核上以使得能够处理更多的数据。
对选择用于连接的特定核的判定取决于负载最轻的CPU核,该CPU核也可被标识为在执行网络栈的软件中断中或在其上花费的时间量最少的CPU。可用于找出对于每一个连接的最优CPU核的数学模型的示例在下文中描述。
下一内核作业将在具有最低λavgncpux的cpux上触发。这意味着为建立应用程序连接,下一内核作业在已在执行网络栈的软件中断上及其上花费最少时间量的CPU核上触发。
每一个CPU核的平均时间与前一值的偏差被表示为Γcpux,其中
[λavgncpux-λavgn-1cpux]^2<Γcpux [3]
这表示与前一计算的偏差。为了最小化开销,一实施例将偏差用作对于决定是否在下一采样时间段期间重新计算CPU平均值的度量。如果λ的前一偏差小于阈值Γ,则对于两倍前一时间间隔不进行对该CPU的平均值计算
σcpux=2*σcpux [4]
此外,处理器总数可被分成相等数量的分区并且对于每一个样本,可使用该集合中的一个分区来进行平均值计算。λavgncpux在表示每一个CPU的平均中断负载值的经排序的数组中维护并且可由网络栈用来确定对于特定连接的最优CPU。
示例1:
该示例使用概念测试试验的结果,该测试将使用如图5所示的SMP体系结构来被实现为测试模型的本发明的一实施例的性能与使用如图4所示的包括四个CPU核430、431、432、433的常规多核服务器体系结构来实现的测试模型进行比较。
在图4的常规SMP服务器体系结构中,所有接收到的分组460-463都通过连接LAN卡450的核431的网络栈410来处理,而所发送的分组(未示出)通过需要自旋锁定的、其上执行应用程序420、421、422、423的核430、431、432、433的各自网络栈来处理。在图4的服务器中,接收到的分组460、461、462、463通过连接LAN的CPU核431的网络栈410来顺序地处理440、441、442、443直到这些数据到达其各自的目的地应用程序420、421、422、423并且这些数据由调度应用程序的核上的应用程序使用。
在图5的概念分布式栈体系结构的试验中,将接收到的分组560-563与各自的连接540、541、542、543相关联并在必要时将处理从连接网络接口550的核531中的网络栈511移交至各自的网络栈510、511、512、513以便进行处理直到到达各自的目的地应用程序520、521、522、523。所发送的分组与应用程序连接540、541、542、543相关联并通过各自的CPU核530、531、532、533的相应的网络栈510、511、512、513来处理并且经由网络接口550来发送。
表1提供了相比于图4的常规栈的图2的分布式网络栈的试验结果。
表1:软件中断在所有CPU上的有效分布、自旋等待和CPU利用率
如相关领域的技术人员可以理解的,图5的分布式栈体系结构通过在每一个CPU核530-533中放置连接来实现传输层中的并发性。通过将诸中断分配到所有CPU核530-531,连接网络接口的CPU核531已解除分组处理的负担,如表1的结果所展示的。结果示出CPU自旋等待状态减少了10%。
对于分布式栈体系结构所实现的吞吐量至少可与常规网络栈体系结构相比并且如图6所示,分布式栈体系结构610随着连接数和数据量的增加开始比常规体系结构620表现得更好。
分布式栈体系结构的CPU利用率由于在与每一个连接相关联的CPU中创建中断线程时所涉及的开销而或多或少地高于常规体系结构的CPU利用率。一旦在所有层中实现并发性,分布式栈体系结构测试模型就预示更多的潜力。
Claims (26)
1.一种在多核处理器平台中处理从网络接收到的数据分组的方法,所述方法包括以下步骤:
在指定中央处理器单元(CPU)核中从网络接口接收中断以便处理从所述网络接收到的数据分组;
将所述数据分组与基于处理器负载来选择的中央处理器单元(CPU)核中所建立的应用程序连接相关联;以及
在与所述应用程序连接相关联的CPU核上创建中断线程以便于处理所接收到的数据分组。
2.如权利要求1所述的方法,其特征在于,还包括以下步骤:
选择要在其中建立所述应用程序连接的CPU核;以及
在所选CPU核中建立所述应用程序连接。
3.如权利要求2所述的方法,其特征在于,所述CPU核基于每一个CPU核的处理器中断负载来选择。
4.如权利要求3所述的方法,其特征在于,所述CPU核通过优先选择与执行与所接收到的分组相关的操作的CPU核共享高速缓冲存储器的CPU核来选择。
5.如权利要求3所述的方法,其特征在于,所述多核处理器适用于启用超线程,其中每一个CPU核仿真两个虚拟CPU以使得能够在该CPU核的每一个虚拟CPU中执行联合线程,并且其中用于建立所述应用程序连接的虚拟CPU在通过优先选择非联合线程CPU核来选择的CPU核中选择。
6.如权利要求3所述的方法,其特征在于,所述处理器中断负载由操作系统调度功能来监控。
7.如权利要求2所述的方法,其特征在于,还包括将应用程序的亲和性与所选CPU核相关联的步骤。
8.如权利要求2所述的方法,其特征在于,所述选择CPU核以及建立连接的步骤在网络栈的数据链路层执行。
9.一种处理由在多核处理器平台的一个中央处理器单元(CPU)核中执行的应用程序发送到网络的数据分组的方法,所述方法包括以下步骤:
确定是使用执行所述应用程序的CPU核还是使用替换的中央处理器单元(CPU)核来执行对传出数据分组的处理;并且在确定使用替换CPU核的情况下:
基于处理器负载来选择用于传出分组处理的替换的CPU核;
在所选替换CPU核中建立应用程序连接;
将所述数据分组与所述应用程序连接相关联;以及
在所选替换CPU核上创建中断线程以便于处理到所述网络接口来通过所述网络传输的数据分组。
10.权利要求9所述的方法,其特征在于,所述CPU核基于每一个CPU核的处理器中断负载来选择。
11.如权利要求10所述的方法,其特征在于,所述CPU核通过优先选择与执行与所接收到的分组相关的操作的CPU核共享高速缓冲存储器的CPU核来选择。
12.如权利要求10所述的方法,其特征在于,所述多核处理器适用于启用超线程,其中每一个CPU核仿真两个虚拟CPU以使得能够在该CPU核的每一个虚拟CPU中执行联合线程,并且其中用于建立所述应用程序连接的虚拟CPU在通过优先选择非联合线程CPU核来选择的CPU核中选择。
13.如权利要求10所述的方法,其特征在于,所述处理器中断负载由操作系统调度功能来监控。
14.如权利要求9所述的方法,其特征在于,所述选择替换CPU核以及建立应用程序连接的步骤在网络栈的会话层执行。
15.一种网络服务器系统,包括:
至少一个具有多个核的中央处理器单元(CPU);以及
网络接口,其用于连接到网络,并适用于在指定CPU核中创建中断以便处理从所述网络接收到的每一个数据分组,
其中:
从所述网络接收到的每一个数据分组都与所选CPU核中所建立的应用程序连接相关联;
所述CPU核基于处理器负载来选择;并且
在与所述应用程序连接相关联的CPU核上创建中断线程以便于处理所述数据分组。
16.如权利要求15所述的网络服务器系统,其特征在于,所述CPU核基于每一个CPU核的处理器中断负载来选择。
17.如权利要求16所述的网络服务器系统,其特征在于,所述CPU核通过优先选择与执行与所接收到的分组相关的操作的CPU核共享高速缓冲存储器的CPU核来选择。
18.权利要求16所述的网络服务器系统,其特征在于,每一个CPU核的处理器中断负载由操作系统调度器功能来监控。
19.如权利要求16所述的网络服务器系统,其特征在于,所述多核处理器适用于启用超线程,其中每一个CPU核仿真两个虚拟CPU以使得能够在该CPU核的每一个虚拟CPU中执行联合线程,并且其中用于建立所述应用程序连接的虚拟CPU在通过优先选择非联合线程CPU核来选择的CPU核中选择。
20.如权利要求15所述的网络服务器系统,其特征在于,对于从所述网络接收到的数据分组,所述处理器适用于在网络栈的数据链路层选择CPU核并建立所述应用程序连接。
21.一种网络服务器系统,包括:
至少一个具有多个核的中央处理器单元(CPU);以及
网络接口,其用于形成到网络的连接,并适用于在指定CPU核中创建中断以便处理从所述网络接收到的每一个数据分组,并且还被修改以使得每一个CPU核都可访问用于将数据分组传送到所述网络的网络接口,
其中:
被发送到所述网络的每一个数据分组都与其中执行所述应用程序的CPU核或基于处理器负载来选择的替换CPU核中所建立的应用程序连接相关联;并且
在所述应用程序连接在替换CPU核中建立的情况下,在与所述应用程序连接相关联的CPU核上创建中断线程以便处理所述数据分组。
22.如权利要求21所述的网络服务器系统,其特征在于,所述CPU核基于每一个CPU核的处理器中断负载来选择。
23.如权利要求22所述的网络服务器系统,其特征在于,所述CPU核通过优先选择与执行与所接收到的分组相关的操作的CPU核共享高速缓冲存储器的CPU核来选择。
24.如权利要求22所述的网络服务器系统,其特征在于,每一个CPU核的处理器中断负载由操作系统调度器功能来监控。
25.如权利要求22所述的网络服务器系统,其特征在于,所述多核处理器适用于启用超线程,其中每一个CPU核仿真两个虚拟CPU以使得能够在该CPU核的每一个虚拟CPU中执行联合线程,并且其中用于建立所述应用程序连接的虚拟CPU在通过优先选择非联合线程CPU核选择的CPU核中选择。
26.如权利要求21所述的网络服务器系统,其特征在于,对于被发送到所述网络的数据分组,所述处理器适用于在网络栈的会话层选择CPU核并建立所述应用程序连接。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN1477/CHE/2007 | 2007-07-09 | ||
IN1477CH2007 | 2007-07-09 | ||
PCT/IN2008/000431 WO2009008007A2 (en) | 2007-07-09 | 2008-07-07 | Data packet processing method for a multi core processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689158A CN101689158A (zh) | 2010-03-31 |
CN101689158B true CN101689158B (zh) | 2012-06-06 |
Family
ID=40229225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800168221A Active CN101689158B (zh) | 2007-07-09 | 2008-07-07 | 用于多核处理器的数据分组处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8799547B2 (zh) |
EP (1) | EP2176773B1 (zh) |
CN (1) | CN101689158B (zh) |
WO (1) | WO2009008007A2 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996103B (zh) * | 2009-08-20 | 2013-03-20 | 三星电子(中国)研发中心 | 多核云计算平台并行应用优化方法 |
US8230054B2 (en) * | 2009-12-23 | 2012-07-24 | Citrix Systems, Inc. | Systems and methods for managing dynamic proximity in multi-core GSLB appliance |
US9860175B2 (en) * | 2011-12-22 | 2018-01-02 | Intel Corporation | Methods, systems, and computer program products for processing a packet |
CN102555550B (zh) * | 2011-12-30 | 2014-04-16 | 浙江大学 | 一种基于多核处理器的高速印花机图像数据旋转处理系统及方法 |
US10263916B2 (en) | 2012-12-03 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | System and method for message handling in a network device |
US8619800B1 (en) | 2012-12-20 | 2013-12-31 | Unbound Networks | Parallel processing using multi-core processor |
US9588923B2 (en) | 2014-01-24 | 2017-03-07 | Applied Micro Circuits Corporation | Flow pinning in a server on a chip |
US10164905B2 (en) * | 2014-02-06 | 2018-12-25 | Mellanox Technologies, Ltd. | Efficient management of network traffic in a multi-CPU server |
CN103853692B (zh) * | 2014-03-12 | 2017-03-15 | 四川九洲空管科技有限责任公司 | 一种基于中断判断机制的多处理器数据通讯方法 |
CN104197299A (zh) * | 2014-08-21 | 2014-12-10 | 浙江生辉照明有限公司 | 照明装置及基于该装置的语音播报系统及方法 |
US10200292B2 (en) | 2014-08-25 | 2019-02-05 | Intel Corporation | Technologies for aligning network flows to processing resources |
US10091063B2 (en) * | 2014-12-27 | 2018-10-02 | Intel Corporation | Technologies for directed power and performance management |
US9880953B2 (en) * | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
CN105207946B (zh) * | 2015-08-27 | 2018-05-01 | 国家计算机网络与信息安全管理中心 | 一种网络数据包负载均衡和预解析方法 |
CN107172650B (zh) * | 2016-03-08 | 2022-03-25 | 中兴通讯股份有限公司 | 一种大规模复杂无线通信系统的仿真方法和系统 |
US10416897B2 (en) * | 2017-03-27 | 2019-09-17 | SK Hynix Inc. | Memory system with latency distribution optimization and an operating method thereof |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
US10725825B2 (en) | 2017-07-10 | 2020-07-28 | Fungible, Inc. | Data processing unit for stream processing |
US10659254B2 (en) * | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
KR102452205B1 (ko) | 2017-11-20 | 2022-10-06 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
KR20200112439A (ko) * | 2019-03-22 | 2020-10-05 | 삼성전자주식회사 | 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법 |
CN110597639B (zh) * | 2019-09-23 | 2021-07-30 | 腾讯科技(深圳)有限公司 | Cpu分配控制方法、装置、服务器及存储介质 |
CN111538636B (zh) * | 2020-04-24 | 2021-11-19 | 深圳华锐金融技术股份有限公司 | 计算机设备确定方法、装置和存储介质 |
CN113037649B (zh) * | 2021-05-24 | 2021-09-07 | 北京金山云网络技术有限公司 | 网络中断数据包的收发方法和装置、电子设备和存储介质 |
CN113259274B (zh) * | 2021-06-11 | 2022-05-31 | 深圳市网是科技有限公司 | 多核模式下处理网络报文乱序和负载均衡的方法及存储介质 |
CN117561706A (zh) * | 2021-11-22 | 2024-02-13 | 华为技术有限公司 | 一种处理数据包的方法和设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3008896B2 (ja) * | 1997-06-16 | 2000-02-14 | 日本電気株式会社 | 共有バス型マルチプロセッサシステムの割り込み負荷分散システム |
US6813665B2 (en) * | 2001-09-21 | 2004-11-02 | Intel Corporation | Interrupt method, system and medium |
US6804632B2 (en) * | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
US7444639B2 (en) * | 2001-12-20 | 2008-10-28 | Texas Insturments Incorporated | Load balanced interrupt handling in an embedded symmetric multiprocessor system |
US7028302B2 (en) * | 2002-04-24 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | System and method for automatically tuning a multiprocessor computer system |
US20050033889A1 (en) * | 2002-10-08 | 2005-02-10 | Hass David T. | Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip |
US7117285B2 (en) | 2003-08-29 | 2006-10-03 | Sun Microsystems, Inc. | Method and system for efficiently directing interrupts |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US20070180310A1 (en) * | 2006-02-02 | 2007-08-02 | Texas Instruments, Inc. | Multi-core architecture with hardware messaging |
US8190864B1 (en) * | 2007-10-25 | 2012-05-29 | Oracle America, Inc. | APIC implementation for a highly-threaded x86 processor |
US8549341B2 (en) * | 2008-08-29 | 2013-10-01 | Netlogic Microsystems, Inc. | System and method for reducing latency associated with timestamps in a multi-core, multi-threaded processor |
-
2008
- 2008-07-07 CN CN2008800168221A patent/CN101689158B/zh active Active
- 2008-07-07 US US12/668,409 patent/US8799547B2/en active Active
- 2008-07-07 WO PCT/IN2008/000431 patent/WO2009008007A2/en active Application Filing
- 2008-07-07 EP EP08808136.9A patent/EP2176773B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20100241831A1 (en) | 2010-09-23 |
CN101689158A (zh) | 2010-03-31 |
US8799547B2 (en) | 2014-08-05 |
WO2009008007A3 (en) | 2009-03-05 |
EP2176773B1 (en) | 2015-09-02 |
WO2009008007A2 (en) | 2009-01-15 |
EP2176773A2 (en) | 2010-04-21 |
EP2176773A4 (en) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689158B (zh) | 用于多核处理器的数据分组处理方法 | |
US6763519B1 (en) | Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling | |
CN108762896A (zh) | 一种基于Hadoop集群任务调度方法及计算机设备 | |
KR20060132852A (ko) | 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치 | |
CN102594891A (zh) | 用于处理远程过程调用请求的方法及系统 | |
WO2008142705A4 (en) | A method and system for load balancing in a distributed computer system | |
CN110187960A (zh) | 一种分布式资源调度方法及装置 | |
CN108304256A (zh) | 一种边缘计算中低开销的任务调度方法及装置 | |
EP1561163A2 (en) | A communication method with reduced response time in a distributed data processing system | |
CN110427270A (zh) | 一种面向rdma网络下分布式连接算子的动态负载均衡方法 | |
CN1455347A (zh) | 一种分布式并行调度宽带网络服务器系统 | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN106325995A (zh) | 一种gpu资源的分配方法及系统 | |
CN115292039A (zh) | 一种面向异构计算平台的多任务分布式调度负载均衡方法 | |
Li et al. | {MilliSort} and {MilliQuery}:{Large-Scale}{Data-Intensive} Computing in Milliseconds | |
Li et al. | A network-aware scheduler in data-parallel clusters for high performance | |
EP2951691B1 (en) | System and method for supporting work sharing muxing in a cluster | |
CN104506452A (zh) | 一种报文处理方法及装置 | |
Cai et al. | ParaTra: A Parallel Transformer Inference Framework for Concurrent Service Provision in Edge Computing | |
Mishra et al. | Jingle-Mingle: a hybrid reliable load balancing approach for a trusted distributed environment | |
CN114039894B (zh) | 一种基于矢量包的网络性能优化方法、系统、设备、介质 | |
US11971830B2 (en) | Efficient queue access for user-space packet processing | |
EP4202682A1 (en) | Deadlock-free scheduling of a task graph on a multi-core processor | |
CN106815069A (zh) | 一种混合处理器架构及其任务调度方法 | |
Aggarwal et al. | Dynamic load balancing based on CPU utilization and data locality in distributed database using priority policy |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160804 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: texas Patentee before: Hewlett-Packard Development Company, Limited Liability Partnership |