CN101770401B - 一种建立多核运行环境的方法 - Google Patents

一种建立多核运行环境的方法 Download PDF

Info

Publication number
CN101770401B
CN101770401B CN 200810241123 CN200810241123A CN101770401B CN 101770401 B CN101770401 B CN 101770401B CN 200810241123 CN200810241123 CN 200810241123 CN 200810241123 A CN200810241123 A CN 200810241123A CN 101770401 B CN101770401 B CN 101770401B
Authority
CN
China
Prior art keywords
cpu
operating environment
linux
setting
production line
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
CN 200810241123
Other languages
English (en)
Other versions
CN101770401A (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 Topsec Network Security Technology Co Ltd
Original Assignee
Beijing Topsec Network Security 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 Topsec Network Security Technology Co Ltd filed Critical Beijing Topsec Network Security Technology Co Ltd
Priority to CN 200810241123 priority Critical patent/CN101770401B/zh
Publication of CN101770401A publication Critical patent/CN101770401A/zh
Application granted granted Critical
Publication of CN101770401B publication Critical patent/CN101770401B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

本发明提供一种建立多核运行环境的方法,其特征在于,预先将多个cpu分为两组,一组是在线cpu,运行标准的Linux操作系统,用于对报文的内容进行检查;另一组为下线cpu,用于运行指定任务代码,当所有cpu的相关资源完成初始化后,使部分在线cpu成为下线cpu,下线的cpu运行一个死循环函数cpu_idle,将指定任务的代码入口函数嵌入到所述死循环函数cpu_idle中,所述下线cpu运行指定任务代码,对接收到的网络报文按数据流进行分类分配给相应的在线cpu。本发明能够解决Linux环境下多cpu之间的开销随着cpu数量的增多而急剧上升的问题,为多核架构的发展提供了一个新的高效的途径。

Description

一种建立多核运行环境的方法
技术领域
本发明涉及计算机技术,特别涉及一种建立多核运行环境的方法。
背景技术
X86平台从2006年双核概念的兴起,不到三年的时间,多核已经深入人心,现在4核的处理器已经量产,6核的处理器也即将面世。多核化的趋势不仅促使芯片厂商带来了更新的系统架构、更高的性能、更低的功耗和更多样化的功能,而且对软件设计也带来了许多新价值和新挑战。操作系统在多核处理器硬件平台上一般有两种构架,一种是对称多处理器架构(SymmetricMulti-Processor,SMP)方式,另一种为AMP(Asynchronous Multi-Processor)方式。如图1所示,为以4核为例的SMP架构示意图。
SMP方式就是将多个内核平等看待,每个内核运行的操作系统相同,这种架构虽然比较简洁,但也有其固有缺陷:
1)这种全并发的架构对软件的要求很高,目前很多系统都是非并发安全的,如果全部转为并发,工作量很大,不是在短时间内可以完成的。
2)为了解决对共享资源(内存数据、I/O等)的争用问题,需要使用大量的锁机制,而这些锁的操作又影响了性能发挥,还有CPU之间的通信开销也会随着CPU数量的增加也急剧上升,当内核数量的增加到一定的量级,这时性能就不再增长甚至开始下降。
鉴于SMP的上述缺点,与之相对的AMP架构就备受关注,特别是在内容安全领域,本身网络转发和内容过滤就是分层的,例如对于IPS产品可以采用四核处理器的AMP架构,一个核专门处理网络数据的接收和发送,对于需要进行内容匹配的数据流分类交给另外三个核处理,这三个核只负责IPS内容的匹配,因为数据是分类处理的,很少会涉及到共享资源的竞争。通过这个方式可以充分利用多核的资源,而却很小程度上涉及并发操作,对内存总线的争用也减少到最低,可以解决现有代码无法利用多核资源的问题。
现有多核系统常见的AMP架构方案如下:
AMP方式就是将多个内核区别看待,可以运行不同的操作系统也可以在相同的操作系统上运行不同的任务,各个处理器内核按照任务划分,各负其责,规避共享资源的竞争。
1)拿出几个物理内核,在其上建立一种简易的系统环境(有时候直接叫做“裸核”环境),在这个“洁净的空间”内运行单一任务(比如收发数据、模式匹配等)往往可以获得极高的性能,这是AMP方式的特点,也是其优势。
2)在相同的操作系统上运行不同的任务也是同样的机理,只不过更容易实现一些,相应的性能提升的效果也逊色一些。
但是,现有AMP架构技术存在下列缺点:
在运行不同操作系统的架构模式下,允许异构的操作系统运行在单一的处理器体系中,例如RMI提供的Virtual MIPS mode。但是因为软件环境的不同,cpu的初始化以及内存的管理等需要额外的代码维护。
在运行相同的操作系统架构模式下,由于这些cpu都在一个操作系统中调度,cpu之间的通信和同步开销不可避免,cpu数量越多,这个开销越大。
另外,在X86平台上,每一个网卡在初始化时都会分配一个irq号,可以利用中断亲和力技术,把中断号irq号定向到指定的cpu上,这样就能实现所有网络流量都由一个cpu处理,然后由这个cpu根据流量的特征分流给另外的cpu处理,虽然也可以实现本方案的目的,但因为这个cpu还是工作在Linux环境中,进程调度的发生会导致cache失效,还有与其它cpu之间的一些开销不能避免,例如IPI中断;而且在扩展性方面也不如本方案,如果有更多的可用cpu资源,使用中断亲和力技术实现起来很复杂。
发明内容
本发明的目的在于,提供一种建立多核运行环境的方法。
本发明的建立多核运行环境的方法,预先将多个cpu分为两组,一组是在线cpu,运行标准的Linux操作系统,用于对报文的内容进行检查;另一组为下线cpu,用于运行指定任务代码,当所有cpu的相关资源完成初始化后,使部分在线cpu成为下线cpu,下线的cpu运行一个死循环函数cpu_idle,将指定任务的代码入口函数嵌入到所述死循环函数cpu_idle中,所述下线cpu运行指定任务代码,对接收到的网络报文按数据流进行分类分配给相应的在线cpu。
其中,所述使部分在线cpu成为下线cpu,是通过proc接口触发让所述部分在线cpu执行cpu热插拔的一个接口cpu_down操作。
其中,所述下线cpu运行的指定任务代码中指定任务包括接收/发送报文和对网络报文按数据流进行分类。
其中,已经执行了cpu_down操作的cpu使用Linux初始化的数据结构和变量以及cpu相关的高速内存缓存cache。
其中,编译Linux内核时打开SMP和HOTPLUG编译选项。
其中,运行环境包括X86多核架构下的Linux系统以及基于无内部互锁流水级的微处理器MIPS架构的XLR多核平台。
本发明的有益效果是:依照本发明的建立多核运行环境的方法,通过使用cpu down的方式把cpu从linux调度环境中分离出来去执行特定的任务,充分利用了Linux的架构资源,花费了很小的代价实现对多核资源的利用;解决了Linux环境下多cpu之间的开销随着cpu数量的增多而急剧上升的问题,为多核架构的发展提供了一个新的高效的途径。
附图说明
图1为以4核为例的SMP架构示意图;
图2为以4核为例的AMP架构示意图;
图3为本发明以4核为例的Linux操作系统架构示意图;
图4为本发明的建立多核运行环境的方法流程图。
具体实施方式
以下,参考附图1~4详细描述本发明的建立多核运行环境的方法。
本发明的核心思想是:AMP架构通过把数据流程分解多个独立的任务,分别由不同的cpu执行,可以减少由于cpu数量的增多造成的对共享资源竞争的影响,达到提高系统效率的目的。
需要说明的是,本发明以运行在X86多核架构下的Linux系统为例进行说明,但同样也适用于其它架构的Linux操作系统,例如RMI公司的基于无内部互锁流水级的微处理器(Microprocessor without Interlocked Piped Stages,MIPS)架构的XLR多核平台。
如图3所示,为本发明的多核架构示意图,将多个cpu被分为两组,一组是在线online的cpus,运行标准的Linux操作系统,主要对报文的内容进行检查;另外一组为下线offline的cpu,运行指定任务代码,其中,指定任务可以包括接收/发送报文和对网络报文按数据流进行分类。编译Linux内核必须打开SMP和热插拔HOTPLUG编译选项。
采用SMP的Linux内核,由Linux初始化所有cpu,为所有cpu建立必要的运行环境,例如内存cache、cpu变量资源、中断等。当所有cpu有关的资源都初始化完成后,通过特定的指令(例如可以通过proc接口触发)让指定的cpu执行cpu_down操作。cpu_down是linux支持cpu热插拔的一个接口,通过触发cpu执行cpu_down,可以把当前cpu从linux操作系统中分离出来,down掉的cpu不再参与调度,运行一个死循环函数cpu_idle。可以通过改写cpu_idle这个函数的实现,把任务代码入口函数嵌入到cpu_idle函数中,这样down掉的cpu就会运行指定的函数代码,从而实现不同任务的分配。如图4所示,为本发明的建立多核运行环境的方法流程图。
另外,需要说明的是,已经down掉的cpu还可以使用Linux初始化的数据结构和变量以及cpu相关的高速内存缓存cache等,例如内存对象的cache,特别是报文对象skb的cache。由于已经脱离Linux的调度环境,down掉的cpu之间以及与online的cpu之间就没有了处理器间中断(Inter Processor Interrupt,IPI)通信的开销,也没有任务调度和中断,这个cpu可以采用轮询这种高效的方式进行数据接收和发送。这个方案具有很好的扩展性,如果系统需要提高转发行能,可以把更多的cpu从Linux的调度中脱离出来执行特定的任务。通过这种方式,可以在不重新编译代码的情况下,动态分配cpu资源,具有高度的灵活性。
另外,需要说明的是,在执行linux操作系统的cpu down操作后,会触发一些资源的删除,例如cache的注销,那么已经down掉的cpu就不能使用linux提供的很多资源了,本发明修改了cpu_down的标准过程,取消了cache等资源的注销过程,这样做后,已经down掉的cpu也可以使用cache资源。
综上所述,依照本发明的建立多核运行环境的方法,通过使用cpu down的方式把cpu从linux调度环境中分离出来去执行特定的任务,充分利用了Linux的架构资源,花费了很小的代价实现对多核资源的利用;解决了Linux环境下多cpu之间的开销随着cpu数量的增多而急剧上升的问题,为多核架构的发展提供了一个新的高效的途径。
以上是为了使本领域普通技术人员理解本发明,而对本发明所进行的详细描述,但可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改,这些变化和修改均在本发明的保护范围内。

Claims (6)

1.一种建立多核运行环境的方法,其特征在于,预先将多个cpu分为两组,一组是在线cpu,运行标准的Linux操作系统,用于对报文的内容进行检查;另一组为下线cpu,用于运行指定任务代码,当所有cpu的相关资源完成初始化后,使部分在线cpu成为下线cpu,下线的cpu运行一个死循环函数cpu_i dle,将指定任务的代码入口函数嵌入到所述死循环函数cpu_i dle中,所述下线cpu运行指定任务代码,对接收到的网络报文按数据流进行分类分配给相应的在线cpu。
2.如权利要求1所述的建立多核运行环境的方法,其特征在于,所述使部分在线cpu成为下线cpu,是通过proc接口触发让所述部分在线cpu执行cpu热插拔的一个接口cpu_down操作。
3.如权利要求2所述的建立多核运行环境的方法,其特征在于,所述下线cpu运行的指定任务代码中指定任务包括接收/发送报文和对网络报文按数据流进行分类。
4.如权利要求3所述的建立多核运行环境的方法,其特征在于,已经执行了cpu_down操作的cpu使用Linux初始化的数据结构和变量以及cpu相关的高速内存缓存cache。
5.如权利要求3所述的建立多核运行环境的方法,其特征在于,编译Linux内核时打开SMP和HOTPLUG编译选项。
6.如权利要求3所述的建立多核运行环境的方法,其特征在于,运行环境包括X86多核架构下的Linux系统以及基于无内部互锁流水级的微处理器MIPS架构的XLR多核平台。
CN 200810241123 2008-12-30 2008-12-30 一种建立多核运行环境的方法 Active CN101770401B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200810241123 CN101770401B (zh) 2008-12-30 2008-12-30 一种建立多核运行环境的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200810241123 CN101770401B (zh) 2008-12-30 2008-12-30 一种建立多核运行环境的方法

Publications (2)

Publication Number Publication Date
CN101770401A CN101770401A (zh) 2010-07-07
CN101770401B true CN101770401B (zh) 2013-09-18

Family

ID=42503278

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810241123 Active CN101770401B (zh) 2008-12-30 2008-12-30 一种建立多核运行环境的方法

Country Status (1)

Country Link
CN (1) CN101770401B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901159B (zh) * 2010-08-03 2014-04-30 中兴通讯股份有限公司 一种多核CPU加载Linux操作系统的方法及系统
US8861434B2 (en) * 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
CN102023898A (zh) * 2010-12-21 2011-04-20 中兴通讯股份有限公司 中央处理器热插拔的实现方法及装置
EP2437178B1 (en) * 2011-05-26 2013-07-31 Huawei Technologies Co., Ltd. Method, apparatus, and system for processing memory dump
CN102253857B (zh) * 2011-06-24 2013-03-27 华中科技大学 一种多核环境下的Xen虚拟机调度控制方法
CN102779075B (zh) 2012-06-28 2014-12-24 华为技术有限公司 一种在多处理器核系统中进行调度的方法、装置及系统
CN103631736B (zh) * 2013-11-27 2016-08-17 华为技术有限公司 设备资源控制方法和装置
US9563585B2 (en) * 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
US9760404B2 (en) * 2015-09-01 2017-09-12 Intel Corporation Dynamic tuning of multiprocessor/multicore computing systems
CN106844258B (zh) * 2015-12-03 2019-09-20 华为技术有限公司 热添加CPU使能x2APIC的方法和服务器系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195750B1 (en) * 1999-03-09 2001-02-27 Amdhal Corporation Method and apparatus for dynamic CPU reconfiguration in a system employing logical processors
US7225324B2 (en) * 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
CN101178662A (zh) * 2006-11-08 2008-05-14 中兴通讯股份有限公司 一种嵌入式linux应用进程的监控方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195750B1 (en) * 1999-03-09 2001-02-27 Amdhal Corporation Method and apparatus for dynamic CPU reconfiguration in a system employing logical processors
US7225324B2 (en) * 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
CN101178662A (zh) * 2006-11-08 2008-05-14 中兴通讯股份有限公司 一种嵌入式linux应用进程的监控方法

Also Published As

Publication number Publication date
CN101770401A (zh) 2010-07-07

Similar Documents

Publication Publication Date Title
CN101770401B (zh) 一种建立多核运行环境的方法
CN100524286C (zh) 一种多核处理系统及其管理方法
CN100573456C (zh) 一种并行多处理器虚拟机系统
Wang et al. Concurrent analytical query processing with GPUs
CN101313284B (zh) 用于提供对处理器状态转换进行检测的方法和装置
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
Vaidyanathan et al. Improving concurrency and asynchrony in multithreaded MPI applications using software offloading
CN101366004A (zh) 用于带有专用线程管理的多核处理的方法和设备
CN102077181A (zh) 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
CN103473135B (zh) 虚拟化环境下自旋锁lhp现象的处理方法
WO2008141063A2 (en) Interrupt-related circuits, systems, and processes
WO2016159765A1 (en) Many-core processor architecture and many-core operating system
CN103646006A (zh) 一种处理器的调度方法、装置和系统
CN103744716A (zh) 一种基于当前vcpu调度状态的动态中断均衡映射方法
CN101901159B (zh) 一种多核CPU加载Linux操作系统的方法及系统
CN102087609A (zh) 多处理器平台下的动态二进制翻译方法
Jo et al. Exploiting GPUs in virtual machine for BioCloud
CN102681890A (zh) 一种应用于线程级推测并行的限制性值传递方法和装置
CN103502906A (zh) 运行操作系统的处理器核的动态分配
CN103955396A (zh) 一种基于共生系数平衡的虚拟机调度方法
Müller et al. Mxkernel: rethinking operating system architecture for many-core hardware
CN109408239A (zh) 一种基于队列的异步io处理方法
Jo et al. FLsched: A lockless and lightweight approach to OS scheduler for Xeon Phi
Sun et al. A virtual machine based task scheduling approach to improving data locality for virtualized Hadoop
Hippold et al. Task pool teams for implementing irregular algorithms on clusters of SMPs

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