CN102841810A - 用于在计算环境中执行线程的方法和系统 - Google Patents
用于在计算环境中执行线程的方法和系统 Download PDFInfo
- Publication number
- CN102841810A CN102841810A CN2012101471690A CN201210147169A CN102841810A CN 102841810 A CN102841810 A CN 102841810A CN 2012101471690 A CN2012101471690 A CN 2012101471690A CN 201210147169 A CN201210147169 A CN 201210147169A CN 102841810 A CN102841810 A CN 102841810A
- Authority
- CN
- China
- Prior art keywords
- thread
- message
- queue
- wake
- trunk
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及用于在计算环境中执行线程的方法和系统。公开了一种用于以非抢占式方式执行进程的常规可中断线程的技术,包括:响应于与针对第一线程的第一消息相关联的第一条目到达运行队列的开端,由第一线程接收第一唤醒信号。响应于接收唤醒信号,由第一线程等待全局锁。响应于第一线程接收全局锁,由第一线程从关联的消息队列获取第一消息并处理获取的第一消息。响应于完成对第一消息的处理,第一线程向第二线程发送第二唤醒信号,该第二线程的关联条目是运行队列中的下一个。最后,在发送第二唤醒信号之后,第一线程释放全局锁。
Description
技术领域
本发明总体上涉及线程,并且特别地,涉及用于在计算环境中执行线程的技术。
背景技术
术语“公用计算”用于指代这样的计算模型,其中处理、存储和网络资源、软件以及数据根据需要可用于客户计算机系统和其他客户端设备(例如,移动电话或媒体播放器),非常类似于熟悉的居民设施服务,比如水和电。在一些实现中,被分配用于由客户端设备访问和使用的特定计算资源(例如,服务器、存储驱动等等)由设施计算提供方与其客户之间的服务协议指定。在通常称为“云计算”的其他实现中,潜在的信息技术(IT)基础设施对于公用计算客户是透明的。
云计算通过对远程计算网站(例如,通过互联网或私有公司网络)的简单访问而被支持,并且通常所采取的形式是云消费者通过web浏览器可以访问和使用的基于web的资源、工具或应用,如同该资源、工具或应用是安装在云消费者的计算机系统上的本地程序。通常,期望商业云实现满足服务质量(QoS)要求,QoS要求可以在服务级别协议(SLA)中被指定。在典型的云实现中,云消费者消耗作为服务的计算资源且仅为使用的资源付费。
公用计算的采用已由对虚拟化的广泛使用而得到支持,虚拟化是创建操作系统、服务器、存储设备、网络资源等计算资源的虚拟(并非真实)版本。例如,虚拟机(VM),也称为逻辑分区(LPAR),是实现执行类似物理机的指令的物理机(例如,计算机系统)的软件。虚拟机可以分类为系统虚拟机或进程虚拟机。系统虚拟机提供支持执行完整的操作系统(OS)的完整的系统平台,比如Windows、Linux、AIX、Android等等,以及其相关的应用。另一方面,进程虚拟机通常设计用于运行单个程序以及支持单个进程。在这两种情况下,运行在VM上的任何应用软件被限制于VM提供的资源和抽象。因此,共同IT基础设施提供的实际资源可以通过部署多个VM被有效管理和利用,可能与多个不同的公用计算消费者相关。
实际IT资源的虚拟化和VM的管理通常由称为VM监视器(VMM)或管理器的软件提供。在各种实现中,VMM可以运行在裸硬件(类型1或本机VMM)上或者运行在操作系统(类型2或托管的VMM)上。
在典型的虚拟化计算环境中,VM可以互相通信以及与利用常规网络协议的公用计算环境的IT基础设施中的物理实体通信。如本领域所知,常规网络协议通常前提是公知的7层开放系统互连(OSI)模型,其包括(按升序)物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。VM能够与其他网络实体通信,就像通过对常规物理层连接的虚拟网络连接的替代,VM是物理网络元件一样。
操作系统(OS)被设计用于移动的、多任务和多用户OS。UNIX的特征在于:使用普通文本用于存储数据;分级的文件系统;将设备和某些类型的进程间通信(IPCs)作为文件对待;以及使用大量软件工具。UNIX包括多种公用和主控制程序,即UNIX内核。UNIX内核提供服务以启动和停止程序,处理文件系统和大多数程序共享的其他共同的低级别任务,以及如果多个程序试图同时访问同一资源或设备,调度对硬件的访问以避免冲突。由于UNIX公认的安全、移动性和功能性,已开发了大量相似的操作系统,包括LinuxTM、MinixTM、Mac OSTM、FreeBSDTM、NetBSDTM、OpenBSDTM、AIXTM、SolarisTM和HP/UXTM。所有这些操作系统,与UNIX一起,在此处称为“UNIX类”操作系统。UNIX类操作系统可以安装在很多种硬件上,例如,移动电话、平板电脑、视频游戏控制台、联网器件、主机以及超级计算机。
在计算机科学中,执行线程(线程)通常是可被OS调度的最小处理单元。线程通常产生于计算机程序分叉为两个或更多同时运行的任务。线程和进程的实现在OS之间可以不同,但是在大多数情况下线程被包括在进程中。多个线程可以存在于同一进程中并且共享资源(例如,存储器),不同的进程不共享相同的资源。在单处理器系统上,通过时分复用(即,处理器在执行的不同线程之间切换)实现多线程。在多处理器或多核系统中,多个线程可以同时运行在不同处理器或处理器核上。很多现代OS用进程调度器直接支持时间片和多处理器线程。OS的内核允许程序员通过系统调用接口操作线程。
用于UNIX的移动操作系统接口(POSIX)是一系列相关标准的名称,这些标准定义用于与Unix类型操作系统兼容的软件的应用编程接口(API)以及外壳和公用接口。POSIX线程(p线程)是指符合线程的POSIX标准的线程(即,POSIX 1c(IEEE 1003.1c-1995),其定义用于创建和操作线程的API)。POSIX API的实现在很多UNIX类符合POSIX的OS上可用,例如,FreeBSDTM,NetBSDTM,GNU/LinuxTM,Mac OS XTM以及SolarisTM。
发明内容
一种用于以非抢占方式执行进程的常规可中断线程的技术,包括:响应于与针对第一线程的第一消息相关联的第一条目到达运行队列的开端,由第一线程接收第一唤醒信号。响应于接收该唤醒信号,第一线程等待全局锁。响应于第一线程接收全局锁,第一线程从相关联的消息队列中获取第一消息并且处理获取的第一消息。响应于完成第一消息的处理,第一线程向第二线程发送第二唤醒信号,该第二线程的相关联条目是运行队列中的下一个。最后,在发送第二唤醒信号之后,第一线程释放全局锁。
附图说明
图1是根据一个实施方式的数据处理环境的高级框图;
图2所示为根据一个实施方式在图1的示范数据处理环境中虚拟和物理资源的分层;
图3是根据一个实施方式的数据处理系统的高级框图;
图4是根据一个实施方式配置的部署物理网络交换机的数据处理环境的一部分的高级框图;
图5是根据一个实施方式配置的物理网络交换机的有关部分的框图;
图6是运行根据一个实施方式配置的物理网络交换机的操作系统(OS)调度器的示范方法的高级逻辑流程图;
图7是在根据一个实施方式配置的物理网络交换机中执行线程间通信的示范方法的高级逻辑流程图;以及
图8是在根据一个实施方式配置的物理网络交换机中执行线程的示范方法的高级逻辑流程图。
具体实施方式
根据本公开,公开了一种技术,其支持在例如Linux的UNIX类操作系统上运行旧有软件(即,旧有裸金属OS)的技术。在各种情况下,在UNIX类操作系统之上运行旧有软件支持对某些旧有代码的复用(reuse),同时通过访问多核、多处理器OS提高可扩展性。虽然这里的讨论涉及针对在实现在虚拟化计算环境中的物理网络交换机中在UNIX类操作系统之上运行旧有软件,但是可以想到,这里公开的技术广泛适用于虚拟化的和非虚拟化的计算环境以及可以实现在除物理网络交换机之外的设备中。如这里所使用的,“主干线程”(stem thread)是指旧有专有用户空间线程,这些线程以串行方式按照消息被发布到主干消息队列(由旧有软件提供的)的顺序非抢占式地(即不可中断的)运行。旧有软件还实现主干分派器,其负责处理主干消息以及调度主干线程。如这里所用,术语“p线程”(pthread)本身是指这样的Unix类OS线程,其按照优先级类中的非特定顺序抢占式(即,可中断的)运行,并且通常完全由UNIX类操作系统的OS调度器来控制。此外,如这里所用,“主干线程”是已被转换为与p线程类似的主干线程。
为了保证应用代码的兼容性,对主干p线程施加限制以便将主干p线程与p线程相区别。一个限制通过采用全局互斥(互斥体)对主干p线程进行串行化,全局互斥充当一个全局锁,以便使主干p线程像主干线程一样运行(即,作为不可中断线程)。也即,在任何给定时刻,只有一个主干p线程(即,具有全局锁的主干p线程)可以处理消息。另一限制使得主干p线程通过在执行消息处理之前等待(在被唤醒后)全局锁而进行自调节。为了保证主干p线程按照与消息被发布的相同顺序得到调度(以仿真旧有软件),针对具有待处理消息的所有主干p线程而维护一个运行队列。在各种实施方式中,所有主干p线程休眠,同时等待相关联的消息到达运行队列的开端。在一个或多个实施方式中,每个主干p线程被配置用于:运行等待全局锁的连续入口函数;在接收到全局锁时处理相关联消息队列中的一个消息;继而放弃全局锁。
在活跃主干p线程返回休眠之前,活跃主干p线程被配置用于检查运行队列,并且唤醒与运行队列中下一条目相关联的主干p线程。这保证了当全局锁被活跃主干p线程释放时,与运行队列中的下一条目相关联的主干p线程获取全局锁并且开始执行相关联的消息处理功能。在活跃主干p线程返回休眠之前,活跃主干p线程还配置用于检查相关联的消息队列,并且如果活跃主干p线程具有其他消息要处理,则活跃主干p线程将针对该其他消息之一的条目排队在运行队列的结尾。当其他消息在后续时间到达运行队列的开端时,主干p线程接收唤醒信号并且开始处理该其他消息。例如,运行队列中的条目可以对应于给定主干p线程的全局标识符(ID)。
与上文讨论的旧有软件不同,根据本公开配置的软件不实现主干线程分派器代码,因为UNIX类操作系统调度器执行基本线程调度。度。UNIX类操作系统调度器维护关于所调度线程的各种背景信息,并且API层(在UNIX类操作系统调度器之上执行)维护事务信息(例如,调度的线程是主干p线程还是p线程)。根据本公开,每个线程(即,主干p线程和p线程)包括配置用于处理相关联消息队列和消息的代码。针对系统而编写的任何新模块可以使用(通常)不受限制的p线程。例如,如果p线程实现其自己的锁,则p线程可以独立地运行在不与公共数据结构共享的代码部分之上。如果p线程需要访问与主干p线程共享的任何数据结构,则可以通过在p线程被唤醒时将p线程放在运行队列上并且等待全局锁而将该p线程暂时序列化。
可以以多种不同方式实现p线程与主干p线程之间的通信。例如,可以使用主干消息(其包括命令和消息)、OS接口(OSIX)事件发送调用(其包括命令和具有单个相关消息队列的线程的消息指针)或OSIX事件队列发送调用(其包括命令和具有多个相关消息队列的线程的消息指针)而在发送侧实现线程间通信。在多种实施方式中,发送线程被配置用于将针对接收线程的消息存储在与该接收线程相关联的消息队列中。在确定用于接收线程的消息队列时,发送线程例如可以利用API从数据结构(例如表格,其可由运行于UNIX类操作系统调度器之上的API层保持)中获取该接收线程的全局线程ID(它例如还指示用于该接收线程的消息队列的位置)。
在一个或多个实施方式中,主干p线程从封装(wrapper)例程接收消息(即,主干消息或OSIX消息),封装例程将来自主干p线程的相关联消息队列的消息去队列化,并且以该消息作为参数调用主干p线程的入口例程。封装例程例如可以实现为UNIX类操作系统模块。在一个或多个实施方式中,p线程在接收到消息时等待阻塞条件变量。当阻塞条件变量被信号传送时,p线程读取事件并且获取对相关联消息队列的消息指针。在各种实施方式中,p线程使用OSIX事件接收调用或OSIX事件队列接收调用来获取消息指针。为了实现从应用层角度的透明线程通信,应用可被配置用于向任何类型的接收方(即,主干p线程或p线程)发送主干消息或OSIX消息。当主干消息以p线程为目的地时,主干消息由主干发送例程(其可以实现为UNIX类操作系统模块)转换为OSIX事件条件和OSIX队列消息。当OSIX消息以主干p线程为目的地时,OSIX消息由OSIX发送例程(其可以实现为UNIX类操作系统模块)转换为主干消息。这保证了主干p线程和p线程可以将其接收处理保持在未修改状态。因为消息转换相对于应用代码被隐藏,因此无需修改应用代码。
现在参考附图并且具体参考图1,示出了根据本公开的一个实施方式的示范数据处理环境100的高级框图。如图所示,数据处理环境100,其在所示实施方式中是云计算环境,包括通常称为云102的计算资源集合。云102中的计算资源相互连接以用于通信,并且可以被物理地或虚拟地分组(未示出)在一个或多个网络中,例如私有网络、社区网络、公有网络或混合云或其组合。以此方式,数据处理环境100可以提供基础设施、平台和/或软件作为客户端设备110可用的服务,客户端设备110例如个人(例如,台式、笔记本、上网本、平板或手持)计算机110a,智能电话110b,服务器计算机系统110c和消费电子110d,例如媒体播放器(例如,机顶盒、数字多功能盘(DVD)播放器或数字录像机(DVR))。应该理解,图1所示客户端设备110的类型仅是示意的且客户端设备110可以是任何类型的电子设备能通过分组网络与计算资源通信和获取服务。
图2所示为根据一个实施方式驻留在图1的云102集合中的虚拟和物理资源的层图。应该理解,图2所示的计算资源、层和功能仅用于示意且所要求的发明的实施方式不限于此。
如图所示,云102包括物理层200、虚拟化层202、管理层204以及工作负荷层206。物理层200包括可用于例示云服务提供方及其消费者使用的虚拟实体的多种物理硬件和软件组件。作为示例,硬件组件可包括主机(例如系统),精简指令集计算机(RISC)架构服务器(例如,IBM系统),IBM系统,IBM Blade系统,存储设备(例如,闪存驱动器,磁驱动器,光驱动器,带驱动器等等),物理网络以及联网组件(例如,路由器、交换机等等)。软件组件可包括操作系统软件(例如,AIX、Windows、Linux等等),网络应用服务器软件(例如,IBM Web应用服务器软件,其包括web服务器软件),以及数据库软件(例如,IBM数据库软件)。IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere和DB2是国际商业机器公司在世界范围注册很多管辖权的商标。
驻留在云102物理层200中的计算资源由一个或多个虚拟机监视器(VMM)或称管理器进行虚拟化和管理。VMM展现虚拟化层202,其包括虚拟实体(例如,虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络))、虚拟应用和虚拟客户端。如前所述,这些虚拟实体是对物理层200中的下层资源的抽象,可以被云消费者的客户端设备110按需访问。
VMM还支持实现云102的各种管理功能的管理层204。这些管理功能可以被VMM和/或运行在VMM上的一个或多个管理或服务VM直接实现,并且可以提供例如资源供应、测量和定价、安全、用户门户服务、服务级别管理以及SLA计划和履行等功能。资源供应功能提供用于在云计算环境中执行任务的计算资源和其他资源的动态获得。测量和定价功能提供成本跟踪(由于资源在云计算环境中被提供和利用)和为使用的资源的消耗记账或开发票。作为一个示例,使用的资源可包括应用软件许可。安全功能提供云消费者和任务的身份验证,以及保护数据和其他资源。用户门户功能为消费者和系统管理员提供对云计算环境的访问。服务级别管理功能提供云计算资源分配和管理使得满足所需的服务级别。例如,安全功能或服务级别管理功能可被配置用于限制虚拟机(VM)映像部署/迁移到被指示为云消费者可接受的地理位置。服务级别协议(SLA)计划和履行功能为云计算资源提供预先安排和采购,其未来需求根据SLA被期望。
工作负荷层206可以由一个或多个消费者VM实现,提供功能性的示例,可以针对这些功能性而使用云计算环境。工作负荷的示例和工作负荷层206可提供的功能包括:映射和导航;软件开发和生命周期管理;虚拟教室教育递送;数据分析处理以及事务处理。
现在参考图3,示出了示范数据处理系统300的高级框图,其可用于实现图2的物理层200中的物理主计算平台或图1的客户端设备110。在所示示范实施方式中,数据处理系统300包括一个或多个网络接口304,允许数据处理系统300与云102中一个或多个计算资源通过线缆和/或一个或多个有线网或无线网、公有网络或私有网络、局域网络或广域网络(包括互联网)通信。数据处理系统300还包括一个或多个处理器302,用于处理数据和程序代码,例如管理、访问和操作数据处理环境100中的数据或软件。数据处理系统300还包括输入/输出(I/O)设备306,诸如端口、显示器和附属设备等等,其接收输入并且提供由数据处理系统300和/或数据处理环境100中的其他资源执行的处理的输出。最后,数据处理系统300包括数据存储310,其可以包括一个或多个易失或非易失存储设备,包括存储器、固态驱动器、光或磁盘驱动器、带驱动器等等。数据存储310可存储,例如,物理层200中的软件和/或软件,例如web浏览器,其实现对工作负荷层206和/或管理层204的访问。
现在参考图4,示出了根据本公开的一个或多个实施方式配置的部署物理网络交换机的数据处理环境400的一部分的高级框图。例如,数据处理环境400可以实现图1所示的云102的一部分。
在所示实施方式中,数据处理环境400包括因特网协议(IP)网络402,其包括若干网段404a、404b,其中每一个耦合到物理网络交换机406a、406b中相应的一个。如图所示,每个物理网络交换机406a、406b包括相应的数据结构(例如,相应的转发表(F))407a、407b,物理网络交换机406a、406b通过该数据结构、基于例如包含在分组中的OSI 2层(例如,媒体访问控制(MAC))地址而将传入的数据分组转发给该分组的目的地。如将参考图8详述的,物理网络交换机406a、406b被配置用于在UNIX类操作系统之上运行旧有软件。如上所述,旧有主干线程被转换为主干p线程,并且新模块被编写以实现p线程。物理主机410a、410b耦合到网段404a,物理主机410c耦合到网段404b。每个物理主机410a-410c例如可以使用图3所示的数据处理系统300来实现。
每个物理主机410a-410c执行VMM 412a-412c中对应的一个,其虚拟化并管理其相应的物理主机410的资源,例如,在人和/或通过IP网络402耦合到在物理主机410a-410c的管理控制台420的自动云管理员的指示下。物理主机410a上的VMM 412a支持VM414a-414b的执行,物理主机410b上的VMM 412b支持VM 414c-414d的执行,以及物理主机410c上的VMM 412c支持VM 414e-414f的执行。应理解,虽然示出2个VM被部署在每个物理主机410a-410c上,但是一个物理主机上可以部署多于或少于2个VM。在多种实施方式中,VM 414a-414f可以包括一个或多个云消费者和/或云提供方的VM。在所示的实施方式中,每个VM 414具有一个(以及可以包括多个)虚拟网络接口控制器VNIC1-VNIC6,其至少提供OSI模型的2层和3层处的网络连通性。
VM 414a利用VNIC1通过虚拟交换机432a的第一端口实现通信,VM 414b利用VNIC2通过虚拟交换机432a的第二端口实现通信。例如,当虚拟交换机432a的第一端口和第二端口被配置作为虚拟以太网桥(VEB)端口时,VM 414a和VM 414b之间的通信可以完全经由软件(例如,使用存储器拷贝操作)来路由。作为另一示例,当虚拟交换机432a的第一端口和第二端口被配置作为虚拟以太网端口汇聚器(VEPA)端口时,VM 414a和VM 414b之间的通信通过物理NIC 420a在网段404a上被路由到物理交换机406a,物理交换机406a通过网段404a和物理NIC 420a将通信路由回虚拟交换机432a。类似地,VM 414c和VM 414d分别使用VNIC3和VNIC4以经由虚拟交换机432b的不同端口来支持通信。同样,VM 414e和VM 414f分别使用VNIC5和VNIC6以经由虚拟交换机432c的不同端口来支持通信。
现在参考图5,根据本公开的一个实施方式示出图4的数据处理环境400中的物理网络交换机406的有关部分。如图所示,物理网络交换机406包括4个端口(标记为P1-P4)、交叉开关交换机520、处理器502以及数据存储(例如,存储器子系统)504。尽管所示物理网络交换机406具有4个端口时,但是应当理解,根据本公开配置的物理网络交换机可以包括多于或少于4个端口。处理器502耦合到交叉开关交换机510,控制交叉开关交换机520在端口P1-P4之间切换业务流。
数据存储504包括旧有OS 508,其运行在UNIX类操作系统(此后假设为Linux OS 506,其实现采用全局互斥体(GM)517作为全局锁的调度器512)之上,并且实现适当数目的应用518。处理器502执行进程519,进程519被示为包括5个线程T1-T5。线程T1被示出与线程T1和T3通信。例如,当线程T2具有一个消息而该消息的关联条目是运行队列516中的下一个时,线程T1可以向线程T2传送唤醒信号(见图8)。作为另一示例,根据图7的过程,线程T1可以与线程T3通信(通过将用于线程T3的消息存储在与线程T3相关联的消息队列510中)。如图所示,2个消息队列510a、510b以及运行队列516(被Linux OS 506)被分配在数据存储504中。尽管图5中仅示出2个消息队列510a、510b,应当理解,多于或少于2个消息队列可以实现在根据本公开配置的物理网络交换机中。在典型的情况下,每个被调度的线程具有至少一个分配的消息队列。根据本公开,消息队列510被用于存储用于主干p线程的消息(并且可被用于存储用于已被序列化的Linux p线程的消息)。
在一个或多个实施方式中,调度器512实现在任何给定时刻向单个线程分配GM 517的例程。GM 517充当全局锁,以使主干p线程(其通常是可中断线程)和已被序列化的Linux p线程(例如,用于访问一个或多个主干p线程的公共数据结构)像主干线程一样运行(即,作为不可中断的、序列化的线程)。如运行队列516所示(在分解视图中),运行队列516包括针对进程519中所包括的4个线个线程(即,线程T1-T4)的5个信息的关联条目。在所示的示例中,线程T5代表常规Linux线程,其被包括在保持为可中断的进程519中。如图所示,与针对线程T1的第一消息相关联的条目被分配(例如,被调度器512)在运行队列516的开端(用箭头表示),与针对线程T1的第二消息相关联的条目被分配在运行队列516的结尾。针对线程T2、T3和T4的关联条目分别是被分配在运行队列516中的(由调度器512分配)、在运行队列516的开始与结尾之间的条目。这将在图8中详述,用于线程T1-T4的消息按照关联的条目在运行队列516中的顺序被连续处理。
如上所述,为了保证与应用518的兼容性,将向主干p线程施加限制,该限制将主干p线程与Linux p线程区分开。为了保证主干p线程按照与消息被发布的相同顺序被调度(仿真旧有软件),针对需要处理的每个主干p线程消息而维护运行队列516中的关联条目。在一个或多个实施方式中,主干p线程(或序列化的Linux p线程)可以具有不止一个关联消息队列510,其中的每一个具有不同的优先级。在这种情况下,具有较高优先级的消息可被路由(例如由发送线程)到较高优先级的消息队列,并且具有较低优先级的消息可被路由到较低优先级的消息队列。在这种情况下,较高优先级的消息队列中的消息(如果有),在较低优先级的消息队列中的消息之前被处理。
实现在Linux OS 506中的调度器512维护有关所调度线程的各种背景信息,并且API层(在调度器512之上执行)维护事务信息(例如,调度的线程是主干p线程还是Linux p线程)。如上所述,根据本公开的一个或多个方面,当线程是主干p线程时,线程总是需要序列化。根据本公开,每个线程(即,主干p线程和Linux p线程)包括配置用于处理信息队列510中的信息的代码。如上所述,被添加到物理网络交换机406的新软件模块可以采用Linux p线程。如上所述,当Linux p线程需要访问与主干p线程共享的任何数据结构时,可以通过在运行队列516中创建针对该Linux p线程的条目而将该Linux p线程暂时序列化。例如,线程T1和T4可以是主干p线程,线程T2和T3可以是被序列化的Linux p线程。
现在参考图6,示出了根据本公开的一个实施方式确定计算环境中的线程是否需要序列化的示范方法的高级逻辑流程图。如上所述,需要序列化的线程可以是需要访问与主干p线程共享的数据结构的主干p线程或Linux p线程。图6的流程图所示出的是逻辑步骤而不是严格的时间先后顺序。因此,至少一些实施方式,在逻辑流程图的至少一些步骤可以按照与所示不同的顺序或同时执行。图6所示的进程可以被图4的数据处理环境400中的每个物理网络交换机406的Linux OS 506执行。
过程开始于框600,而后进行到判断框602,在此Linux OS 506确定要调度的线程是否需要序列化。响应于在框602中不需要序列化的线程,控制转移到框608。响应于在框602中需要序列化的线程,控制转移到框604。在框604中,Linux OS 506在运行队列516中分配用于线程的条目。然后,在框606,Linux OS 506分配用于该线程的一个或多个消息队列510。例如,当线程不接收具有不同优先级的消息时,可以分配单个消息队列。作为另一示例,当线程接收具有2个不同优先级的消息时,可以分配高优先级消息队列和低优先级消息队列。在框606之后,控制传递到框608,图6所示的过程结束。
现在参考图7,示出了在根据一个实施方式在计算环境中执行线程间通信的示范方法的高级逻辑流程图。在这种情况下,序列化的线程可以是需要访问与主干p线程共享的数据结构的主干p线程或Linux p线程。图7的流程图所示出的是逻辑步骤而不是严格的时间先后顺序。因此,至少一些实施方式,在逻辑流程图的至少一些步骤可以按照与所示不同的顺序或同时执行。图7所示的进程可以被,例如,图4的数据处理环境400中的每个物理网络交换机406执行。
过程开始于框700,并且继而进行到判断框702,在此发送线程(例如,线程T1)确定是否指示线程间通信(例如,共享数据)。响应于在框702中没有指示线程间通信,控制转移到框710,在此图7所示的过程结束。响应于在框702中指示了线程间通信,控制转移到框704,在此发送线程获取(例如,从调度器512)接收线程(例如,线程T3)的全局ID(其指示特定的消息队列510)。接下来,在框706,发送线程确定是否指示了通信的优先级(即,线程是否具有多个相关联的消息队列510)。然后,在框708,发送线程将针对接收线程的消息存储在接收线程的消息队列510中。例如,如果指示了低优先级消息(例如,基于业务流类型),针对接收线程的消息被存储(被发送线程)在低优先级消息队列中。类似地,如果指示高优先级消息(例如,基于流量类型),针对接收线程的消息被存储(被发送线程)在高优先级消息队列中。在框708之后,控制传递到框710,在此图7所示的过程结束。
现在参考图8,示出了在根据本公开的一个实施方式的计算环境中执行序列化的线程的示范方法的高级逻辑流程图。序列化的线程可以是需要序列化以例如访问与主干p线程共享的数据结构的主干p线程或Linux p线程。图8的流程图所示出的是逻辑步骤而不是严格的时间先后顺序。因此,至少一些实施方式,在逻辑流程图的至少一些步骤可以按照与所示不同的顺序或同时执行。图8所示的进程可以被例如图4的数据处理环境400中的每个物理网络交换机406执行。
过程开始于框800,并且继而进行到判断框802,在此休眠线程(例如,进程519的线程T1,其可以是已被序列化的主干p线程或Linux p线程)确定是否已接收到唤醒信号(例如,从另一线程)。如上所述,响应于针对一个消息的关联条目达到运行队列516的开端,休眠线程接收唤醒信号以处理该消息。在各种实施方式中,用于休眠线程的唤醒信号在一个事件(例如,从另一线程收到针对第一线程的消息,针对第一线程的分组到达,与第一线程相关的定时器到时,或者用于第一线程的链接被建立)之后被触发,并且在用针对休眠进程的消息的关联条目到达运行队列516的开端之后被生成。接下来,在框804,休眠进程响应于收到唤醒信号而醒来从而变成活跃线程。然后,在框806,活跃线程等待接收来自调度器512的全局锁(GM 517)。当从调度器512接收到GM 517时,活跃线程在框810从相关联的消息队列510获取消息,并且在框810处理获取的消息。
接下来,在框812,活跃线程检查运行队列516的其他条目。然后,在框814,活跃线程确定运行队列516是否为空。响应于在框814运行队列516为空,控制转移到判断框818。响应于在框814运行队列516不为空,控制转移到框816,在此活跃线程唤醒具有与运行队列516中的下一条目相关联的消息的另一线程(例如,线程T2)。在框816之后,控制转移到框818。在框818,活跃线程确定其在相关消息队列510中是否具有另一消息要处理。响应于在框818活跃线程没有另一消息要处理,控制转移到框826,在此活跃线程释放全局锁。响应于在框818活跃线程有另一消息要处理,控制转移到框820,在此活跃线程将该消息的关联条目排队到运行队列516的结尾。
接下来,在判断框822,活跃线程确定它是否是具有运行队列516中的条目的唯一线程。响应于活跃线程确定它是具有运行队列516中的条目的唯一线程,在框808,活跃线程继续图8的过程,在此获取用于活跃线程的相关消息队列510中的下一消息。响应于活跃线程确定它不是具有运行队列516中的条目的唯一线程,控制转移到框826,在此活跃线程释放全局锁。接下来,在框828,活跃线程休眠。在框828之后,控制传递到框830,在此图8所示的过程结束。
如果即使在当前没有其他线程具有要处理的消息并且活跃线程当前具有要处理的另一消息时仍然期望活跃线程释放全局锁,则框822和824可以省略。在这种情况下,框820的输出被直接导向框826。
因此,这里已公开了在单个进程中的多个不同种类的执行线程之间实现无缝通信的技术。公开的技术还将运行的Linux p线程实现为自由可调度的线程或主干线程(即,Linux p线程可以被序列化为不不可中断的)。
虽然已经参考一个或多个优选实施方式具体说明了本发明,但是本领域技术人员应理解其中可做出各种形式和细节的改变而不背离本发明的精神和范围。例如,应该理解,虽然这里提供的详细说明提供了云计算环境的多个实施方式,这里公开的教程不限于云计算环境。而且,实施方式可以实现为现在已知的或以后开发的任何其他类型的计算环境,包括客户-服务器和对等计算环境。公开的技术广泛应用于虚拟化和非虚拟化的计算环境,以及可以实现在除物理网络交换机之外的设备(例如,主机平台)中。
而且,虽然已针对执行指导这里所述功能的程序代码的计算机系统说明了各方面,应该理解,实施方式可以可替换地实现为程序产品,包括存储数据处理系统可处理以使数据处理系统执行一个或多个所述功能的程序代码的存储介质(例如,数据存储310)。
Claims (14)
1.一种以非抢占式方式执行进程的常规可中断线程的方法,包括:
响应于与针对第一线程的第一消息相关联的第一条目到达运行队列的开端,由所述第一线程接收第一唤醒信号;
响应于接收所述唤醒信号,由所述第一线程等待全局锁;
响应于所述第一线程接收所述全局锁,由所述第一线程从关联的消息队列获取所述第一消息;
由所述第一线程处理获取的所述第一消息;
响应于完成对所述第一消息的所述处理,由所述第一线程向第二线程发送第二唤醒信号,所述第二线程的关联条目是所述运行队列中的下一个;以及
在所述第二唤醒信号的所述发送之后,由所述第一线程释放所述全局锁。
2.根据权利要求1所述的方法,还包括:
由所述第一线程针对用于所述第一线程的第二消息而检查所述关联的消息队列;以及
响应于所述关联的消息队列包括所述第二消息,将与所述第二消息相关联第二条目排队到所述运行队列的结尾。
3.根据权利要求1所述的方法,其中所述第二线程是需要对与所述第一线程共享的数据结构的访问的Linux p线程。
4.根据权利要求1所述的方法,其中所述第一唤醒信号在一个事件之后被触发。
5.根据权利要求4所述的方法,其中所述事件对应于以下之一:从另一线程接收针对所述第一线程的所述第一消息,针对所述第一线程的分组到达,与所述第一线程相关联的定时器到时,以及建立针对所述第一线程的链接。
6.根据权利要求1所述的方法,其中所述第一线程和第二线程中的一个是主干p线程,并且所述第一线程和第二线程中的另一个是已被序列化的Linux p线程。
7.根据权利要求1所述的方法,其中所述第一线程和第二线程是主干p线程。
8.一种数据处理系统,配置用于以非抢占式方式执行进程的常规可中断线程,所述数据处理系统包括:
包括程序代码的数据存储;以及
耦合到所述数据存储的处理器,其中当所述程序代码由所述处理器执行时将所述处理器配置用于:
响应于与第一线程的第一消息相关联的第一条目到达运行队列的开端,由所述第一线程接收第一唤醒信号;
响应于接收所述唤醒信号,由所述第一线程等待全局锁;
响应于所述第一线程接收所述全局锁,由所述第一线程从关联的消息队列中获取所述第一消息;
由所述第一线程处理获取的所述第一消息;
响应于完成对所述第一消息的所述处理,由第一线程向第二线程发送第二唤醒信号,所述第二线程的关联条目是所述运行队列中的下一个;以及
在所述第二唤醒信号的所述发送之后,由所述第一线程释放所述全局锁。
9.根据权利要求8所述的数据处理系统,其中当所述程序代码由所述处理器执行时进一步将所述处理器配置用于:
由所述第一线程针对用于所述第一线程的第二消息而检查所述关联的消息队列;以及
响应于所述关联的消息队列包括所述第二消息,将与所述第二消息相关联的第二条目排队到所述运行队列的结尾。
10.根据权利要求8所述的数据处理系统,其中所述第二线程是需要对与所述第一线程共享的数据结构的访问的Linux p线程。
11.根据权利要求8所述的数据处理系统,其中所述第一唤醒信号在一个事件之后被触发。
12.根据权利要求11所述的数据处理系统,其中所述事件对应于以下之一:从另一线程接收针对所述第一线程的所述第一消息,针对所述第一线程的分组到达,与所述第一线程相关联的定时器到时,以及建立针对所述第一线程的链接。
13.根据权利要求8所述的数据处理系统,其中所述第一线程和第二线程中的一个是主干p线程,并且所述第一线程和第二线程中的另一个是已被序列化的Linux p线程。
14.根据权利要求8所述的数据处理系统,其中所述第一线程和第二线程是主干p线程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/107,896 US20120291034A1 (en) | 2011-05-14 | 2011-05-14 | Techniques for executing threads in a computing environment |
US13/107,896 | 2011-05-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102841810A true CN102841810A (zh) | 2012-12-26 |
CN102841810B CN102841810B (zh) | 2015-07-22 |
Family
ID=47142774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210147169.0A Active CN102841810B (zh) | 2011-05-14 | 2012-05-11 | 用于在计算环境中执行线程的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US20120291034A1 (zh) |
CN (1) | CN102841810B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834566A (zh) * | 2015-03-31 | 2015-08-12 | 华为技术有限公司 | 调整转发处理线程的交换端口的方法和相关装置 |
CN106201705A (zh) * | 2016-07-25 | 2016-12-07 | 东软集团股份有限公司 | 处理消息的方法及装置 |
CN106250214A (zh) * | 2015-06-05 | 2016-12-21 | 苹果公司 | 资源受限设备上的媒体分析和处理构架 |
CN106933681A (zh) * | 2017-02-05 | 2017-07-07 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其系统 |
CN107102582A (zh) * | 2017-04-07 | 2017-08-29 | 深圳怡化电脑股份有限公司 | 一种子系统命令的同步方法及装置 |
US10402226B2 (en) | 2015-06-05 | 2019-09-03 | Apple Inc. | Media analysis and processing framework on a resource restricted device |
CN110249303A (zh) * | 2017-02-16 | 2019-09-17 | 华为技术有限公司 | 用于减少引用计数开销的系统和方法 |
CN110716944A (zh) * | 2019-09-12 | 2020-01-21 | 苏宁云计算有限公司 | 数据截断方法和装置 |
CN111052085A (zh) * | 2017-09-07 | 2020-04-21 | 索尼公司 | 信息处理装置及信息处理方法 |
CN112486702A (zh) * | 2020-11-27 | 2021-03-12 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局消息队列实现方法 |
WO2022001723A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 一种数据同步方法及装置 |
CN115037712A (zh) * | 2016-02-25 | 2022-09-09 | 元平台公司 | 用于消息收发机器人丰富通信的技术 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274825B2 (en) * | 2011-08-16 | 2016-03-01 | Microsoft Technology Licensing, Llc | Virtualization gateway between virtualized and non-virtualized networks |
US9092282B1 (en) | 2012-08-14 | 2015-07-28 | Sprint Communications Company L.P. | Channel optimization in a messaging-middleware environment |
US8769550B1 (en) * | 2012-10-24 | 2014-07-01 | Sprint Communications Company L.P. | Reply queue management |
US9264338B1 (en) | 2013-04-08 | 2016-02-16 | Sprint Communications Company L.P. | Detecting upset conditions in application instances |
US9294347B2 (en) * | 2014-03-20 | 2016-03-22 | Dell Products Lp | Systems and methods for automatic access layer configuration |
US9678812B2 (en) | 2014-12-22 | 2017-06-13 | International Business Machines Corporation | Addressing for inter-thread push communication |
US9766890B2 (en) * | 2014-12-23 | 2017-09-19 | International Business Machines Corporation | Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread |
CN104572881A (zh) * | 2014-12-23 | 2015-04-29 | 国家电网公司 | 基于多任务并发的配网图模导入方法 |
JP2016130892A (ja) * | 2015-01-13 | 2016-07-21 | 富士通株式会社 | 監視装置、情報処理システム及び監視プログラム |
US10417056B2 (en) | 2015-08-04 | 2019-09-17 | Oracle International Corporation | Systems and methods for performing concurrency restriction and throttling over contended locks |
US10565024B2 (en) | 2016-10-19 | 2020-02-18 | Oracle International Corporation | Generic concurrency restriction |
EP3637258A4 (en) * | 2017-07-05 | 2021-03-10 | Shanghai Cambricon Information Technology Co., Ltd | DATA PROCESSING APPARATUS AND METHOD |
US20190073243A1 (en) * | 2017-09-07 | 2019-03-07 | Alibaba Group Holding Limited | User-space spinlock efficiency using c-state and turbo boost |
CN110018890B (zh) * | 2018-01-10 | 2021-07-30 | 武汉斗鱼网络科技有限公司 | 一种线程间的交互方法、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070157200A1 (en) * | 2005-12-30 | 2007-07-05 | Hopkins William E | System and method for generating a lock-free dual queue |
US20090037927A1 (en) * | 2007-07-30 | 2009-02-05 | Vasudevan Sangili | Apparatus and method for direct switching of software threads |
US20100242043A1 (en) * | 2009-03-18 | 2010-09-23 | Charles Scott Shorb | Computer-Implemented Systems For Resource Level Locking Without Resource Level Locks |
Family Cites Families (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5394402A (en) | 1993-06-17 | 1995-02-28 | Ascom Timeplex Trading Ag | Hub for segmented virtual local area network with shared media access |
US5617421A (en) | 1994-06-17 | 1997-04-01 | Cisco Systems, Inc. | Extended domain computer network using standard links |
US5515359A (en) | 1994-08-26 | 1996-05-07 | Mitsubishi Electric Research Laboratories, Inc. | Credit enhanced proportional rate control system |
US5633859A (en) | 1994-09-16 | 1997-05-27 | The Ohio State University | Method and apparatus for congestion management in computer networks using explicit rate indication |
ZA959722B (en) | 1994-12-19 | 1996-05-31 | Alcatel Nv | Traffic management and congestion control for packet-based networks |
US6035105A (en) | 1996-01-02 | 2000-03-07 | Cisco Technology, Inc. | Multiple VLAN architecture system |
US5742604A (en) | 1996-03-28 | 1998-04-21 | Cisco Systems, Inc. | Interswitch link mechanism for connecting high-performance network switches |
US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
EP0853405A3 (en) | 1997-01-06 | 1998-09-16 | Digital Equipment Corporation | Ethernet network with credit based flow control |
US5893320A (en) | 1997-05-20 | 1999-04-13 | Demaree; Michael S. | Device for cooking fowl |
US6192406B1 (en) | 1997-06-13 | 2001-02-20 | At&T Corp. | Startup management system and method for networks |
US6147970A (en) | 1997-09-30 | 2000-11-14 | Gte Internetworking Incorporated | Quality of service management for aggregated flows in a network system |
US6567403B1 (en) | 1998-04-30 | 2003-05-20 | Hewlett-Packard Development Company, L.P. | Virtual-chassis switch network topology |
US6609153B1 (en) | 1998-12-24 | 2003-08-19 | Redback Networks Inc. | Domain isolation through virtual network machines |
US6347337B1 (en) | 1999-01-08 | 2002-02-12 | Intel Corporation | Credit based flow control scheme over virtual interface architecture for system area networks |
US6646985B1 (en) | 1999-06-03 | 2003-11-11 | Fujitsu Network Communications, Inc. | Congestion control mechanism in a network access device |
US6901452B1 (en) | 2000-03-02 | 2005-05-31 | Alcatel | Selectable prioritization for data communication switch |
US6880086B2 (en) | 2000-05-20 | 2005-04-12 | Ciena Corporation | Signatures for facilitating hot upgrades of modular software components |
US6947419B2 (en) | 2001-06-12 | 2005-09-20 | Acute Technology Corp. | Apparatus for multicast forwarding in a virtual local area network environment |
US7042842B2 (en) | 2001-06-13 | 2006-05-09 | Computer Network Technology Corporation | Fiber channel switch |
US7263060B1 (en) | 2001-06-28 | 2007-08-28 | Network Appliance, Inc. | Multiple switch protected architecture |
US7173934B2 (en) | 2001-09-10 | 2007-02-06 | Nortel Networks Limited | System, device, and method for improving communication network reliability using trunk splitting |
US7035220B1 (en) | 2001-10-22 | 2006-04-25 | Intel Corporation | Technique for providing end-to-end congestion control with no feedback from a lossless network |
US7668966B2 (en) | 2001-11-02 | 2010-02-23 | Internap Network Services Corporation | Data network controller |
US7561517B2 (en) | 2001-11-02 | 2009-07-14 | Internap Network Services Corporation | Passive route control of data networks |
US20030185206A1 (en) | 2002-03-29 | 2003-10-02 | Bhaskar Jayakrishnan | Destination device bit map for delivering an information packet through a switch fabric |
KR100472416B1 (ko) | 2002-11-01 | 2005-03-11 | 삼성전자주식회사 | 패킷 플로우 제어 장치 및 방법 |
US6938054B2 (en) * | 2002-11-25 | 2005-08-30 | International Business Machines Corporation | Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system |
US7702729B2 (en) | 2003-04-08 | 2010-04-20 | Johanson Bradley E | Event heap: a coordination infrastructure for dynamic heterogeneous application interactions in ubiquitous computing environments |
JP2004355125A (ja) | 2003-05-27 | 2004-12-16 | Pioneer Electronic Corp | ソフトウェア更新処理装置、そのシステム、その方法、そのプログラム、および、そのプログラムを記録した記録媒体 |
US7508763B2 (en) | 2003-09-04 | 2009-03-24 | Hewlett-Packard Development Company, L.P. | Method to regulate traffic congestion in a network |
US7383368B2 (en) * | 2003-09-25 | 2008-06-03 | Dell Products L.P. | Method and system for autonomically adaptive mutexes by considering acquisition cost value |
US7386848B2 (en) * | 2003-10-02 | 2008-06-10 | International Business Machines Corporation | Method and system to alleviate denial-of-service conditions on a server |
WO2005038599A2 (en) | 2003-10-14 | 2005-04-28 | Raptor Networks Technology, Inc. | Switching system with distributed switching fabric |
CN101087238B (zh) | 2003-10-21 | 2010-08-04 | 华为技术有限公司 | 无源光网络的动态带宽分配装置及方法 |
US7483370B1 (en) | 2003-12-22 | 2009-01-27 | Extreme Networks, Inc. | Methods and systems for hitless switch management module failover and upgrade |
US7593320B1 (en) | 2004-04-30 | 2009-09-22 | Marvell International, Ltd. | Failover scheme for stackable network switches |
US7475397B1 (en) * | 2004-07-28 | 2009-01-06 | Sun Microsystems, Inc. | Methods and apparatus for providing a remote serialization guarantee |
GB2418326B (en) | 2004-09-17 | 2007-04-11 | Hewlett Packard Development Co | Network vitrualization |
US7830793B2 (en) | 2004-10-22 | 2010-11-09 | Cisco Technology, Inc. | Network device architecture for consolidating input/output and reducing latency |
US8238347B2 (en) | 2004-10-22 | 2012-08-07 | Cisco Technology, Inc. | Fibre channel over ethernet |
US7564869B2 (en) | 2004-10-22 | 2009-07-21 | Cisco Technology, Inc. | Fibre channel over ethernet |
US7974223B2 (en) | 2004-11-19 | 2011-07-05 | Corrigent Systems Ltd. | Virtual private LAN service over ring networks |
US20070036178A1 (en) | 2005-02-02 | 2007-02-15 | Susan Hares | Layer 2 virtual switching environment |
ATE525829T1 (de) | 2005-02-28 | 2011-10-15 | Ibm | Bladeserversystem mit mindestens einem stapelschalter mit mehreren untereinander verbundenen und für verwaltung sowie betrieb als virtueller einzelschalter konfigurierten schaltern |
US8085657B2 (en) | 2005-04-01 | 2011-12-27 | Sony Corporation | Flow control in a cellular communication system |
US7802257B1 (en) * | 2005-06-20 | 2010-09-21 | Oracle America, Inc. | Mechanism for bridging a thread-oriented computing paradigm and a job-oriented computing paradigm |
CN100486216C (zh) | 2005-07-15 | 2009-05-06 | 华为技术有限公司 | 一种提高虚拟交换系统中传输可靠性的方法 |
US8266232B2 (en) * | 2005-10-15 | 2012-09-11 | International Business Machines Corporation | Hardware processing of commands within virtual client computing environment |
CN100571249C (zh) | 2006-02-27 | 2009-12-16 | 中兴通讯股份有限公司 | 一种实时确定传输的以太网通讯方法 |
US7515535B2 (en) | 2006-05-10 | 2009-04-07 | Cisco Technology, Inc. | Technique for efficiently managing bandwidth for multipoint-to-multipoint services in a provider network |
KR101548061B1 (ko) | 2007-02-02 | 2015-08-27 | 인터디지탈 테크날러지 코포레이션 | 플렉시블 rlc pdu 크기에 대하여 rlc를 개선하는 방법 및 장치 |
US9661112B2 (en) | 2007-02-22 | 2017-05-23 | International Business Machines Corporation | System and methods for providing server virtualization assistance |
US8140696B2 (en) | 2007-03-12 | 2012-03-20 | International Business Machines Corporation | Layering serial attached small computer system interface (SAS) over ethernet |
US8320245B2 (en) | 2007-03-13 | 2012-11-27 | Alcatel Lucent | Policy enforcement points |
JP4888186B2 (ja) | 2007-03-28 | 2012-02-29 | 富士通株式会社 | 通信システム、中継器、中継方法 |
US9667442B2 (en) | 2007-06-11 | 2017-05-30 | International Business Machines Corporation | Tag-based interface between a switching device and servers for use in frame processing and forwarding |
US8559429B2 (en) | 2007-06-11 | 2013-10-15 | International Business Machines Corporation | Sequential frame forwarding |
US7912003B2 (en) | 2007-06-27 | 2011-03-22 | Microsoft Corporation | Multipath forwarding algorithms using network coding |
WO2009042735A1 (en) | 2007-09-25 | 2009-04-02 | Blade Network Technologies, Inc. | Apparatus for externally changing the direction of air flowing through electronic equipment |
US7839777B2 (en) | 2007-09-27 | 2010-11-23 | International Business Machines Corporation | Method, system, and apparatus for accelerating resolution of network congestion |
US20090125882A1 (en) * | 2007-10-08 | 2009-05-14 | Matteo Frigo | Method of implementing hyperobjects in a parallel processing software programming environment |
US8867341B2 (en) | 2007-11-09 | 2014-10-21 | International Business Machines Corporation | Traffic management of client traffic at ingress location of a data center |
US8553537B2 (en) | 2007-11-09 | 2013-10-08 | International Business Machines Corporation | Session-less load balancing of client traffic across servers in a server group |
US7835306B2 (en) | 2008-01-23 | 2010-11-16 | Cisco Technology, Inc. | Translating MST instances between ports of a bridge in a computer network |
US8625592B2 (en) | 2008-02-26 | 2014-01-07 | Cisco Technology, Inc. | Blade switch with scalable interfaces |
US20110035494A1 (en) | 2008-04-15 | 2011-02-10 | Blade Network Technologies | Network virtualization for a virtualized server data center environment |
US8131983B2 (en) * | 2008-04-28 | 2012-03-06 | International Business Machines Corporation | Method, apparatus and article of manufacture for timeout waits on locks |
US8385202B2 (en) | 2008-08-27 | 2013-02-26 | Cisco Technology, Inc. | Virtual switch quality of service for virtual machines |
US9426095B2 (en) | 2008-08-28 | 2016-08-23 | International Business Machines Corporation | Apparatus and method of switching packets between virtual ports |
US9237034B2 (en) | 2008-10-21 | 2016-01-12 | Iii Holdings 1, Llc | Methods and systems for providing network access redundancy |
US7929554B2 (en) | 2008-12-23 | 2011-04-19 | Cisco Technology, Inc. | Optimized forwarding for provider backbone bridges with both I and B components (IB-PBB) |
WO2010099407A1 (en) | 2009-02-27 | 2010-09-02 | Broadcom Corporation | Method and system for virtual machine networking |
US8238340B2 (en) | 2009-03-06 | 2012-08-07 | Futurewei Technologies, Inc. | Transport multiplexer—mechanisms to force ethernet traffic from one domain to be switched in a different (external) domain |
US8265075B2 (en) | 2009-03-16 | 2012-09-11 | International Business Machines Corporation | Method and apparatus for managing, configuring, and controlling an I/O virtualization device through a network switch |
US8665886B2 (en) | 2009-03-26 | 2014-03-04 | Brocade Communications Systems, Inc. | Redundant host connection in a routed network |
CA3204215A1 (en) | 2009-04-01 | 2010-10-07 | Nicira, Inc. | Method and apparatus for implementing and managing virtual switches |
US8325598B2 (en) | 2009-05-20 | 2012-12-04 | Verizon Patent And Licensing Inc. | Automatic protection switching of virtual connections |
US8174984B2 (en) | 2009-05-29 | 2012-05-08 | Oracle America, Inc. | Managing traffic on virtualized lanes between a network switch and a virtual machine |
US8638799B2 (en) | 2009-07-10 | 2014-01-28 | Hewlett-Packard Development Company, L.P. | Establishing network quality of service for a virtual machine |
US8204061B1 (en) | 2009-07-23 | 2012-06-19 | Cisco Technology, Inc. | Virtual port channel switches with distributed control planes |
US8125928B2 (en) | 2009-07-24 | 2012-02-28 | Juniper Networks, Inc. | Routing frames in a shortest path computer network for a multi-homed legacy bridge node |
US9031081B2 (en) | 2009-08-06 | 2015-05-12 | Broadcom Corporation | Method and system for switching in a virtualized platform |
US8625427B1 (en) | 2009-09-03 | 2014-01-07 | Brocade Communications Systems, Inc. | Multi-path switching with edge-to-edge flow control |
US8537860B2 (en) | 2009-11-03 | 2013-09-17 | International Business Machines Corporation | Apparatus for switching traffic between virtual machines |
US8665747B2 (en) | 2009-12-03 | 2014-03-04 | Cisco Technology, Inc. | Preventing loops on network topologies built with virtual switches and VMS |
US8369335B2 (en) | 2010-03-24 | 2013-02-05 | Brocade Communications Systems, Inc. | Method and system for extending routing domain to non-routing end stations |
US20110246970A1 (en) * | 2010-03-30 | 2011-10-06 | Nec Laboratories America, Inc. | Interval analysis of concurrent trace programs using transaction sequence graphs |
US8625616B2 (en) | 2010-05-11 | 2014-01-07 | Brocade Communications Systems, Inc. | Converged network extension |
BR112012018762B1 (pt) | 2010-05-28 | 2022-06-21 | Huawei Technologies Co., Ltd | Sistema, componente de rede e método para promover uma comunicação entre uma pluralidade de domínios de acesso |
US8885488B2 (en) | 2010-06-02 | 2014-11-11 | Brocade Communication Systems, Inc. | Reachability detection in trill networks |
US8634308B2 (en) | 2010-06-02 | 2014-01-21 | Brocade Communications Systems, Inc. | Path detection in trill networks |
US20110299533A1 (en) | 2010-06-08 | 2011-12-08 | Brocade Communications Systems, Inc. | Internal virtual network identifier and internal policy identifier |
US8446914B2 (en) | 2010-06-08 | 2013-05-21 | Brocade Communications Systems, Inc. | Method and system for link aggregation across multiple switches |
US9246703B2 (en) | 2010-06-08 | 2016-01-26 | Brocade Communications Systems, Inc. | Remote port mirroring |
US8406128B1 (en) | 2010-06-29 | 2013-03-26 | Amazon Technologies, Inc. | Efficient highly connected data centers |
US8588081B2 (en) | 2010-07-14 | 2013-11-19 | Cisco Technology, Inc. | Monitoring a flow set to detect faults |
US8873551B2 (en) | 2010-07-30 | 2014-10-28 | Cisco Technology, Inc. | Multi-destination forwarding in network clouds which include emulated switches |
US8488608B2 (en) | 2010-08-04 | 2013-07-16 | Alcatel Lucent | System and method for traffic distribution in a multi-chassis link aggregation |
US8345697B2 (en) | 2010-08-17 | 2013-01-01 | Dell Products, Lp | System and method for carrying path information |
US8498299B2 (en) | 2010-08-19 | 2013-07-30 | Juniper Networks, Inc. | Flooding-based routing protocol having average-rate and burst-rate control |
US9749241B2 (en) | 2010-11-09 | 2017-08-29 | International Business Machines Corporation | Dynamic traffic management in a data center |
US20120131662A1 (en) | 2010-11-23 | 2012-05-24 | Cisco Technology, Inc. | Virtual local area networks in a virtual machine environment |
US20120163164A1 (en) | 2010-12-27 | 2012-06-28 | Brocade Communications Systems, Inc. | Method and system for remote load balancing in high-availability networks |
US9071630B2 (en) | 2011-01-07 | 2015-06-30 | Jeda Networks, Inc. | Methods for the interconnection of fibre channel over ethernet devices using a trill network |
US8478961B2 (en) | 2011-03-02 | 2013-07-02 | International Business Machines Corporation | Dynamic migration of virtual machines based on workload cache demand profiling |
KR101780423B1 (ko) | 2011-03-18 | 2017-09-22 | 삼성전자주식회사 | 반도체 장치 및 이의 제조 방법 |
US8755383B2 (en) | 2011-03-21 | 2014-06-17 | Avaya, Inc. | Usage of masked ethernet addresses between transparent interconnect of lots of links (TRILL) routing bridges |
US8787377B2 (en) | 2011-03-21 | 2014-07-22 | Avaya, Inc. | Usage of masked BMAC addresses in a provider backbone bridged (PBB) network |
US8837499B2 (en) | 2011-05-14 | 2014-09-16 | International Business Machines Corporation | Distributed fabric protocol (DFP) switching network architecture |
US8588224B2 (en) | 2011-05-14 | 2013-11-19 | International Business Machines Corporation | Priority based flow control in a distributed fabric protocol (DFP) switching network architecture |
US20120287785A1 (en) | 2011-05-14 | 2012-11-15 | International Business Machines Corporation | Data traffic handling in a distributed fabric protocol (dfp) switching network architecture |
US9736085B2 (en) | 2011-08-29 | 2017-08-15 | Brocade Communications Systems, Inc. | End-to end lossless Ethernet in Ethernet fabric |
US8767529B2 (en) | 2011-09-12 | 2014-07-01 | International Business Machines Corporation | High availability distributed fabric protocol (DFP) switching network architecture |
-
2011
- 2011-05-14 US US13/107,896 patent/US20120291034A1/en not_active Abandoned
-
2012
- 2012-05-11 CN CN201210147169.0A patent/CN102841810B/zh active Active
- 2012-09-04 US US13/602,365 patent/US8856801B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070157200A1 (en) * | 2005-12-30 | 2007-07-05 | Hopkins William E | System and method for generating a lock-free dual queue |
US20090037927A1 (en) * | 2007-07-30 | 2009-02-05 | Vasudevan Sangili | Apparatus and method for direct switching of software threads |
US20100242043A1 (en) * | 2009-03-18 | 2010-09-23 | Charles Scott Shorb | Computer-Implemented Systems For Resource Level Locking Without Resource Level Locks |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834566B (zh) * | 2015-03-31 | 2018-09-07 | 华为技术有限公司 | 调整转发处理线程的交换端口的方法和相关装置 |
CN104834566A (zh) * | 2015-03-31 | 2015-08-12 | 华为技术有限公司 | 调整转发处理线程的交换端口的方法和相关装置 |
CN106250214B (zh) * | 2015-06-05 | 2019-11-26 | 苹果公司 | 资源受限设备上的媒体分析和处理构架 |
CN106250214A (zh) * | 2015-06-05 | 2016-12-21 | 苹果公司 | 资源受限设备上的媒体分析和处理构架 |
US10402226B2 (en) | 2015-06-05 | 2019-09-03 | Apple Inc. | Media analysis and processing framework on a resource restricted device |
CN115037712A (zh) * | 2016-02-25 | 2022-09-09 | 元平台公司 | 用于消息收发机器人丰富通信的技术 |
CN106201705A (zh) * | 2016-07-25 | 2016-12-07 | 东软集团股份有限公司 | 处理消息的方法及装置 |
CN106201705B (zh) * | 2016-07-25 | 2019-10-08 | 东软集团股份有限公司 | 处理消息的方法及装置 |
CN106933681A (zh) * | 2017-02-05 | 2017-07-07 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其系统 |
CN106933681B (zh) * | 2017-02-05 | 2019-10-11 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其系统 |
CN110249303A (zh) * | 2017-02-16 | 2019-09-17 | 华为技术有限公司 | 用于减少引用计数开销的系统和方法 |
CN107102582A (zh) * | 2017-04-07 | 2017-08-29 | 深圳怡化电脑股份有限公司 | 一种子系统命令的同步方法及装置 |
CN111052085A (zh) * | 2017-09-07 | 2020-04-21 | 索尼公司 | 信息处理装置及信息处理方法 |
US11720383B2 (en) | 2017-09-07 | 2023-08-08 | Sony Corporation | Information processing apparatus and information processing method |
CN111052085B (zh) * | 2017-09-07 | 2023-11-28 | 索尼公司 | 信息处理装置及信息处理方法 |
CN110716944A (zh) * | 2019-09-12 | 2020-01-21 | 苏宁云计算有限公司 | 数据截断方法和装置 |
CN110716944B (zh) * | 2019-09-12 | 2022-10-04 | 苏宁云计算有限公司 | 数据截断方法和装置 |
WO2022001723A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 一种数据同步方法及装置 |
CN112486702A (zh) * | 2020-11-27 | 2021-03-12 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局消息队列实现方法 |
CN112486702B (zh) * | 2020-11-27 | 2024-02-13 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局消息队列实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US8856801B2 (en) | 2014-10-07 |
US20120324460A1 (en) | 2012-12-20 |
US20120291034A1 (en) | 2012-11-15 |
CN102841810B (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102841810B (zh) | 用于在计算环境中执行线程的方法和系统 | |
US11768695B2 (en) | Methods and apparatus to deploy a hybrid workload domain | |
CN104428752B (zh) | 将虚拟机流卸载至物理队列 | |
CN102821021B (zh) | 在虚拟化计算环境下运行虚拟交换机的方法和系统 | |
CN105024865B (zh) | 云联合即服务 | |
US8301746B2 (en) | Method and system for abstracting non-functional requirements based deployment of virtual machines | |
US8800055B2 (en) | Node controller for an endpoint in a cloud computing environment | |
CN109358866B (zh) | 一种面向应用的多云管理系统 | |
CN102790716A (zh) | 使用物理网络交换机保护虚拟化计算环境的方法和装置 | |
CN106575243A (zh) | 管理程序托管的虚拟机取证 | |
US8886779B2 (en) | Performance modeling for SOA security appliance | |
CN105684357A (zh) | 虚拟机中地址的管理 | |
US8793688B1 (en) | Systems and methods for double hulled virtualization operations | |
CN102306370A (zh) | 一种基于云计算的数字图像处理系统 | |
US20210311798A1 (en) | Dynamic microservices allocation mechanism | |
CN114661486A (zh) | 用于批量处理功能的方法、系统、制品和设备 | |
CA2893001C (en) | Dynamic licensing | |
Guan et al. | A multi-layered scheme for distributed simulations on the cloud environment | |
Birkenheuer et al. | Virtualized HPC: a contradiction in terms? | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
Zhao et al. | Minimize the make-span of batched requests for FPGA pooling in cloud computing | |
CN108762891A (zh) | 一种云平台资源调度方法和装置 | |
KR101295515B1 (ko) | U-시티 서비스 제공 시스템 및 제공 방법 | |
Jung et al. | Provisioning on-demand HLA/RTI simulation environment on cloud for distributed-parallel computer simulations | |
KR20230022819A (ko) | 고장 식별을 위한 이동 데이터 |
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 |