CN101946235B - 用于在共享处理器分区环境中移动线程的方法及装置 - Google Patents
用于在共享处理器分区环境中移动线程的方法及装置 Download PDFInfo
- Publication number
- CN101946235B CN101946235B CN2009801052142A CN200980105214A CN101946235B CN 101946235 B CN101946235 B CN 101946235B CN 2009801052142 A CN2009801052142 A CN 2009801052142A CN 200980105214 A CN200980105214 A CN 200980105214A CN 101946235 B CN101946235 B CN 101946235B
- Authority
- CN
- China
- Prior art keywords
- software thread
- thread
- virtual processor
- software
- 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.)
- Expired - Fee Related
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/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/5033—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 data affinity
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Hardware Redundancy (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种用于将软件线程分配给具有多个虚拟处理器的数据处理系统的公共虚拟处理器的计算机实现的方法及装置。数据处理系统检测第一线程与第二线程之间关于与所述数据处理系统的资源关联的锁的合作。响应于检测到合作,所述数据处理系统将所述第一线程分配给所述公共虚拟处理器。所述数据处理系统将所述第二线程移动到所述公共虚拟处理器,由此将所述第一线程及所述第二线程所经历的与所述锁关联的睡眠时间减少到低于在检测合作步骤之前所经历的睡眠时间。
Description
技术领域
本发明一般地涉及用于将线程放置在处理器上的计算机实现的方法、数据处理系统及计算机程序产品。更具体地说,本发明涉及将线程放置在共享处理器分区环境中。
背景技术
计算机设计者日益依赖于多个处理器架构以利用通过现代技术而可用的较高级的硬件整合及小型化。一种流行类型的架构为对称多处理器(SMP)架构,例如,如在Power5TM计算机系统中实现的架构。Power5为纽约阿蒙克的国际商业机器公司的商标。
对称多处理器的共同特征为将计算机资源从池分配给一个或多个逻辑分区的能力。计算机资源包括(例如)存储器、盘存储装置及物理处理器。在逻辑分区之间共享物理资源的架构被称为Micro-partitioningTM。Micro-partitioning为国际商业机器公司在美国和/或其它国家地区的商标。在此类配置中,系统管理程序可将物理处理器的时间片分配给逻辑分区,且稍后将物理处理器的第二时间片分配给第二逻辑分区。此类时间共享配置被称为虚拟处理器。虚拟处理器为物理处理器的时间分摊部分。通常,以按时间片度量的单位分摊虚拟处理器。可将时间片分组成被称作分派轮(dispatch wheel)的集合。
在系统管理程序的虚拟化及可用之前,物理处理器上的操作系统时间分片的软件线程在被称为分时共享的架构中操作。通过系统管理程序的可用性,存在物理处理器的两个大致独立的调度器。第一调度器或系统管理程序将虚拟处理器分派至物理处理器。第二调度器或操作系统在执行时管理软件线程。
然而,在微分区环境中,通过使用处理器或虚拟处理器而执行软件以执行处理程序或软件线程的指令。典型操作系统实例或分区可具有在若干物理处理器上同时操作的许多软件线程。此外,可使用微分区而向分区分配处理器时间的较细粒分配,这导致对于物理处理器的分摊分时共享级别。此结果是混用操作系统调度与系统管理程序分区调度的后果。此细粒度是可能的,因为虚拟处理器对应于物理处理器的各种权利(entitlement)。权利为物理处理器针对线程而操作的分派轮的比例。在此类配置中,每个线程在每个线程被分配的时间片期间执行。此类配置可增加每个物理处理器的总体使用。
软件线程可在分派至虚拟处理器的操作系统内在执行状态与睡眠状态之间交替。举例而言,当所有必要资源皆可用于软件线程时,该软件线程执行。当资源不受由同一分区中执行的另一软件线程所持有的互斥锁控制时,资源可用。相反地,当同一分区中执行的另一软件线程锁定由软件线程的代码所需的资源时,该软件线程睡眠。睡眠软件线程为由于数据处理资源被由第二执行软件线程获取的锁占据而不能进展的软件线程。尽管如此,当软件线程正等待某一事件(例如,锁释放)且所述事件发生时,操作系统使软件线程可执行且向该软件线程分配逻辑处理器。逻辑处理器是抽象硬件线程的虚拟处理器的延伸。其处理软件线程的指令的执行。
如果多个软件线程同时操作,则软件可实现改进的性能。然而,必须小心的是,由一个线程所使用的资源被保留或被以其他方式防止由第二线程在第一线程的此类有限使用周期期间进行存取及/或修改。排除第二软件线程进行存取的一种方式是使第一线程建立与资源关联的锁。锁是对应于数据处理资源(例如,一段存储器)的位集合。锁可包括用于追踪锁的细节的索引号或其它识别符。
SMP的设计者试图实现的一个目标是使线程等待锁变得可用的时间最小化。因此,需要有效地调度竞争锁以便减少在睡眠状态下所花费的时间的软件线程。
发明内容
本发明优选地提供一种用于将软件线程分配给具有多个虚拟处理器且可能在虚拟处理器内具有多个逻辑处理器的数据处理系统的公共虚拟处理器的计算机实现的方法及装置。初始地,所述数据处理系统可将第一软件线程分配给所述公共虚拟处理器。数据处理系统优选地检测第一软件线程与第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作。响应于检测到合作,所述数据处理系统优选地将所述第二软件线程移动到所述公共虚拟处理器。
根据第一方面,提供了一种用于将软件线程分配给具有多个虚拟处理器的数据处理系统的第一虚拟处理器的计算机实现的方法,所述方法包含:将第一软件线程分配给所述第一虚拟处理器;检测第一软件线程与第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作;及响应于检测到合作,将所述第二软件线程移动到所述第一虚拟处理器。
根据第二方面,提供了一种用于将软件线程分配给具有多个虚拟处理器的数据处理系统的第一虚拟处理器的计算机程序产品,所述计算机程序产品包含:用于响应于检测到合作而将第一线程分配给所述第一虚拟处理器的计算机可用程序代码;用于检测第一线程与第二线程之间关于与所述数据处理系统的资源关联的锁的合作的计算机可用程序代码;及用于响应于检测合作的计算机可用程序代码而将所述第二线程移动到所述第一虚拟处理器的计算机可用程序代码。
根据第三方面,提供了一种数据处理系统,所述系统包含:总线;存储设备,其连接至所述总线,其中计算机可用代码位于所述存储设备中;通信单元,其连接至所述总线;处理单元,其连接至所述总线,其中所述处理单元可操作以执行所述计算机可用代码以便将软件线程分配给具有多个虚拟处理器的数据处理系统的第一虚拟处理器,所述处理单元还可操作以执行所述计算机可用代码以将第一线程分配给所述第一虚拟处理器;检测第一线程与第二线程之间关于与所述数据处理系统的资源关联的锁的合作;及响应于检测到合作,将所述第二线程移动到所述第一虚拟处理器。
附图说明
现在将仅通过示例的方式参考附图描述本发明,这些附图是:
图1A为根据本发明的一个说明性实施例的数据处理系统;
图1B及图1C为根据本发明的一个说明性实施例的数据处理系统的组件的逻辑图;
图2A及图2C为两个软件线程的示意图;
图2B示出了根据本发明的一个实施例的在一时间间隔期间软件线程到一个或多个虚拟处理器的分配;
图2D、图2E及图2F示出了根据本发明的一个说明性实施例的用于移动软件线程以在逻辑处理器上操作的步骤;
图3示出了根据本发明的一个说明性实施例的与每个软件线程关联的数据结构;
图4A示出了根据本发明的一个说明性实施例的软件线程及虚拟处理器的状态;
图4B示出了根据本发明的一个说明性实施例的允许操作系统将软件线程移动到虚拟处理器的流程图;
图5示出了根据本发明的一个说明性实施例的响应唤醒之后的软件线程的流程图;以及
图6示出了根据本发明的一个说明性实施例的可基于异步方式而移动软件线程的流程图。
具体实施方式
图1A示出了其中可实现本发明的说明性实施例的数据处理系统的方块图。数据处理系统100可为对称多处理器(SMP)系统,其包括连接至系统总线106的多个处理器101、102、103及104。举例而言,数据处理系统100可以是IBMeServerTM且实现为网络内的服务器。IBM和eServer为国际商业机器公司的商标。备选地,可使用单处理器系统。还连接至系统总线106的是存储器控制器/高速缓存108,其向多个本地存储器160-163提供接口。I/O总线桥接器110连接至系统总线106且向I/O总线112提供接口。可如所描绘而集成存储器控制器/高速缓存108与I/O总线桥接器110。
数据处理系统100是逻辑分区(LPAR)数据处理系统。因此,数据处理系统100可使多个异构操作系统或单个操作系统的多个实例同时运行。这些多个操作系统中的每一个都可具有执行于其内的任何数目的软件程序。数据处理系统100被逻辑地分区,使得可将不同外围组件互连输入/输出(PCI I/O)适配器120、121、128、129及136、图形适配器148及硬盘适配器149分配给不同逻辑分区。在此情况下,图形适配器148连接显示设备(未图标),而硬盘适配器149连接至硬盘150且控制硬盘150。
因此,举例而言,假设将数据处理系统100划分为三个逻辑分区P1、P2及P3。将PCI I/O适配器120、121、128、129及136中的每一个、图形适配器148、硬盘适配器149、处理器101-104中的每一个及来自本地存储器160-163的存储器分配给三个分区中的每个分区。在这些示例中,本地存储器160-163可采取双列直插存储器模块(DIMM)的形式。通常不基于每个DIMM而将DIMM分配给分区。实际上,分区将得到全部存储器的由平台所看到的部分。举例而言,可将处理器102-103、来自本地存储器160-163的存储器的某一部分及PCI I/O适配器121及136分配给逻辑分区P2;以及可将处理器104、来自本地存储器160-163的存储器的某一部分、图形适配器148及硬盘适配器149分配给逻辑分区P3。
将在数据处理系统100内执行的每个操作系统分配给不同逻辑分区。因此,在数据处理系统100内执行的每个操作系统仅可存取处于其逻辑分区内的那些I/O单元。举例而言,高级交互执行(AIX)操作系统的一个实例可在分区P1内执行,AIX操作系统的第二实例或映像可在分区P2内执行,以及Linux操作系统可在逻辑分区P3内操作。AIX为国际商业机器公司的注册商标。Linux为Linus Torvalds的注册商标。
连接至I/O总线112的外围组件互连(PCI)主机桥接器114向PCI本地总线115提供接口。多个PCI输入/输出适配器120-121经由PCI至PCI桥接器116、PCI总线118、PCI总线119、I/O插槽170及I/O插槽171而连接至PCI总线115。PCI至PCI桥接器116向PCI总线118及PCI总线119提供接口。分别将PCI I/O适配器120及121放置在I/O插槽170及171中。典型PCI总线实现支持介于四个与八个之间的I/O适配器,亦即,用于附加连接器的扩展插槽。每个PCI I/O适配器120-121在数据处理系统100与输入/输出设备(例如,是数据处理系统100的客户端的其它网络计算机)之间提供接口。
附加PCI主机桥接器122向附加PCI总线123提供接口。PCI总线123连接至多个PCI I/O适配器128-129。PCI I/O适配器128-129经由PCI至PCI桥接器124、PCI总线126、PCI总线127、I/O插槽172及I/O插槽173而连接至PCI总线123。PCI至PCI桥接器124向PCI总线126及PCI总线127提供接口。分别将PCI I/O适配器128及129放置在I/O插槽172及173中。以此方式,可经由PCI I/O适配器128-129中的每一个而支持附加I/O设备(例如,调制解调器或网络适配器)。因此,数据处理系统100允许连接至多个网络计算机。
存储器映射的图形适配器148插入至I/O插槽174中且经由PCI总线144、PCI至PCI桥接器142、PCI总线141及PCI主机桥接器140而连接至I/O总线112。可将硬盘适配器149放置在I/O插槽175中,I/O插槽175连接至PCI总线145。此总线又连接至PCI至PCI桥接器142,PCI至PCI桥接器142通过PCI总线141而连接至PCI主机桥接器140。
PCI主机桥接器130向PCI总线131提供接口以连接至I/O总线112。PCI I/O适配器136连接至I/O插槽176,I/O插槽176通过PCI总线133而连接至PCI至PCI桥接器132。PCI至PCI桥接器132连接至PCI总线131。此PCI总线还将PCI主机桥接器130连接至服务处理器邮箱接口及ISA总线存取透通逻辑194及PCI至PCI桥接器132。服务处理器邮箱接口及ISA总线存取透通逻辑194转发前往PCI/ISA桥接器193的PCI存取。还被称为非易失性RAM的NVRAM存储器192连接至ISA总线196。服务处理器135经由其本地PCI总线195而连接至服务处理器邮箱接口及ISA总线存取透通逻辑194。服务处理器135还经由多个JTAG/I2C总线134而连接至处理器101-104。JTAG/I2C总线134是JTAG/扫描总线(如由电气电子工程师协会标准1149.1所界定)与Philips I2C总线的组合。然而,备选地,JTAG/I2C总线134可仅由Philips I2C总线或仅由JTAG/扫描总线替换。处理器101、102、103及104的所有SP-ATTN信号一起连接至服务处理器135的中断输入信号。服务处理器135具有其自己的本地存储器191且能够存取硬件OP面板190。
当数据处理系统100初始地加电时,服务处理器135使用JTAG/I2C总线134询问系统处理器101-104、存储器控制器/高速缓存108及I/O桥接器110。在此步骤完成时,服务处理器135具有数据处理系统100的详细目录及拓扑理解。服务处理器135还对通过询问处理器101-104、存储器控制器/高速缓存108及I/O桥接器110而发现的所有元件执行内建自测试(BIST)、基本保证测试(BAT)及存储器测试。由服务处理器135收集和报告在BIST、BAT及存储器测试期间所检测的故障的任何错误信息。
如果在取出在BIST、BAT及存储器测试期间被发现为有故障的元件之后系统资源的有意义或有效配置仍为可能的,则允许数据处理系统100继续将可执行代码加载至本地存储器160-163中。服务处理器135接着释放处理器101-104以用于执行加载至本地存储器160-163中的代码。当处理器101-104正在执行来自数据处理系统100内的相应操作系统的代码时,服务处理器135进入监视及报告错误的模式。服务处理器135所监视的项目类型包括(例如)冷却扇速度及操作、热传感器、电源调节器,及由处理器101-104、本地存储器160-163及I/O桥接器110所报告的可恢复及不可恢复错误。
服务处理器135保存及报告与数据处理系统100中的所有受监视项目有关的错误信息。服务处理器135还基于错误类型及所定义阈值而采取行动。举例而言,服务处理器135可在处理器的高速缓冲存储器上对过多可恢复错误采取注释,且判定此条件预测硬故障。基于此判定,服务处理器135可标记该处理器或用于在当前执行会话及未来初始程序加载(IPL)期间解除配置的其它资源。IPL有时还被称作“引导”或“自举”(bootstrap)。
可使用各种市售计算机系统实现数据处理系统100。举例而言,可使用可购自国际商业机器公司的IBM eServeriSeriesModel 840系统实现数据处理系统100。此类系统可支持逻辑分区,其中OS/400操作系统可存在于一分区内。iSeries及OS/400为国际商业机器公司的注册商标。
本领域技术人员应了解,图1A所描绘的硬件可变化。举例而言,除了所描绘的硬件之外或代替所描绘的硬件,还可使用诸如光驱及其类似物的其它外围设备。所描绘的示例并非暗示关于本发明的实施例的架构限制。
图1B示出了根据本发明的一个实施例的在同时多处理系统的某一时刻分配的逻辑配置。架构的每个层支持紧接于上方的层。微处理器176可向核心层175中的一个或多个核心提供支持电路。核心层175可包含多个处理器,例如,图1A的处理器101-104。核心层175支持多个硬件线程,亦即,每个核心向多个硬件线程提供支持。硬件线程层174支持虚拟处理器层173。虚拟处理器层173支持逻辑处理器层172。逻辑处理器层172支持软件线程层171。
图1C示出了根据本发明的一个实施例的如图1B所说明的逻辑配置的示例。系统管理程序177将虚拟处理器0 178分派至核心1,这导致逻辑处理器0 179及逻辑处理器1 180变得活动。操作系统181将每个软件线程分派至逻辑处理器。举例而言,操作系统181将软件线程0 183分派至逻辑处理器0 179,且将软件线程1 185分派至逻辑处理器1 180。时常地,软件线程到达其受阻止或被预占的点。可将受阻止且准备执行的软件线程队列存储在准备执行队列189中。操作系统181可自准备执行队列189中的软件线程之间选择以分派至逻辑处理器。初始地,在将软件线程分配给逻辑处理器或甚至分配给虚拟处理器中可能不存在偏差。本发明的说明性实施例可施加一偏差,以便将在锁上合作的软件线程分派至自身被分派至公共虚拟处理器的逻辑处理器。对比而言,现有技术的数据处理系统分派软件线程,而不考虑若干虚拟处理器之间的哪一个支持每个合作软件线程。
附加虚拟处理器(例如,虚拟处理器1 188)可在附加核心(未图示)上或甚至在核心1上操作,但在与虚拟处理器0 178不同的时间操作。可将逻辑处理器(未图标)分派至附加虚拟处理器。还可将软件线程(未图标)动态地分派至这些逻辑处理器。操作系统181可在这些其它逻辑处理器之间使用软件线程。初始地可将在锁上与软件线程0 183合作的软件线程分派至自身被分派至虚拟处理器1 188的逻辑处理器。操作系统可检测针对锁在软件线程之间的合作,例如,当操作系统检测到每个软件线程试图获取锁时。图4B至图6所描述的计算机实现的方法可重新分配要与软件线程0 183一起分派的此类软件线程。
图2A示出了根据本发明的一个说明性实施例的在虚拟处理器上所分派的软件线程。可在日常调度的时间片上将软件线程分配给不同的处理器。软件线程是处理内的执行单位。每个处理器具有一个或多个软件线程。因此,可将软件线程0 200分配给虚拟处理器2上的逻辑处理器0。可将软件线程1 220分配给虚拟处理器0上的逻辑处理器2。初始地,将软件线程0200及软件线程1 220在其相应虚拟处理器上进行分派。在包括权利周期247及权利周期249的两个时间片期间分派软件线程0 200。在第一时刻211,软件线程1 220获取锁210。由于虚拟处理器可在任何时间由系统管理程序预占,所以图2A说明如在时间231所预占的软件线程1的虚拟处理器。结果,软件线程0 200无法前向进展,直至在时间232重新分派软件线程1的虚拟处理器且软件线程1 220释放锁。在第二时刻213,软件线程0 200试图获取锁210且被阻止。软件线程0 200在睡眠周期205期间进入睡眠。软件线程0 200可将剩余时间让与至另一软件线程,然而,软件线程0 200将不能够进行进一步进展,直至软件线程1 220经由虚拟处理器0而释放软件线程2 200或可能稍后如果具有较高优先级的其它线程也针对所述线程进行竞争。在某些情况下,软件线程0 200可能不能让与,例如,对于在禁用中断情况下操作的设备驱动器锁的情况。在该情况下,可阻止逻辑处理器完成任何有用的工作,直至软件线程1 220释放锁。
图2B示出了在一时间间隔期间软件线程至其相应虚拟处理器的分配。在对应于图2A的时间230的时间示出所述分配。将软件线程0 200分派至虚拟处理器2 241。将软件线程1 220分派至虚拟处理器0 243。在共享存储器245中的锁210是软件线程1 220已获取但软件线程0 200被阻止的锁。软件线程0 200至一个虚拟处理器的分配及软件线程1 220至第二虚拟处理器的分配有助于软件线程0 200与软件线程1 220的同时操作。结果,图2A的睡眠周期可使无软件线程的被分配虚拟处理器执行与其关联的指令。
对比而言,图2C说明根据本发明的一个说明性实施例的软件线程至处理器的分配。软件线程0 200及软件线程1 220至公共虚拟处理器的分配有助于各软件线程被分配给具有用于支持的公共虚拟处理器的逻辑处理器。因此,软件线程0 200具有睡眠周期255,其在分派软件线程0 200的时间片期间较好地利用公共虚拟处理器。
图2C描绘了一系列事件。在线程执行时间250,软件线程1 220在分配给虚拟处理器0的逻辑处理器上执行。在锁获取时间251,软件线程1 220获取锁。在阻止时间252,软件线程0 200试图获得锁且被阻止。随后,软件线程1 220在释放时间253释放锁。接下来,软件线程0 200获取锁,由此结束睡眠周期255。在时间片254的末尾,可将软件线程0 200放置在等待队列中。
相应地,图2D至图2F说明根据本发明的一个说明性实施例在图2C的时间期间软件线程1 220至虚拟处理器的分配。因此,对于可竞争单个锁的软件线程,可通过将软件线程移动到具有第二软件线程的公共虚拟处理器而获得某些效率。如图2C所示,根据本发明的一个说明性实施例,可将针对锁合作的两个软件线程移动到公共虚拟处理器。
图2D示出根据本发明的一个说明性实施例的被分配给逻辑处理器的软件线程。软件线程0 260处于被称为在准备执行队列261内准备执行的睡眠状态。当分派软件线程0 260时,其在逻辑处理器0 263上执行。虚拟处理器0 265支持逻辑处理器0 263以及逻辑处理器1 267两者。对比而言,软件线程1 271在逻辑处理器3 273上执行且由虚拟处理器1 275支持。
基于图2D,图2E示出:在后续时间,软件线程1 271进入等待队列280。软件线程可在其被预占或在变得被阻止之后进入等待队列。当在等待队列上时,软件线程处于其不适合于在虚拟处理器上被分派的状态。未被分派的虚拟处理器的状态与未被分派的软件线程的状态不同,以下参看图4而对其进行进一步解释。
图2F示出在图2D之后的时间进行准备执行软件组件288的操作。进行准备执行软件组件288可以是由操作系统执行的指令。举例而言,指令可针对被称作“thread_wakeup_lock”的例程。该例程选择向其分配在等待队列的头部的软件线程的逻辑处理器。图2F示出软件线程1 271至逻辑处理器1 267的分配。进行准备执行288可参看优化标志以检测关联软件线程是否要被分配逻辑处理器,而不参考软件线程先前已被分配给其的任一先前处理器。因此,优化标志可基于软件线程可具有的任一种类的处理器亲和性而抑制分配软件线程。
图3示出根据本发明的一个说明性实施例的与每个软件线程关联的数据结构。每个软件线程与一优化标志相关联。优化标志是被设置以指示可针对锁的合作测试软件线程的一个或多个位。然后,根据本发明的一个说明性实施例实现的操作系统可将软件线程分配给具有第二软件线程的公共虚拟处理器。举例而言,软件线程1 301使用优化标志303以向操作系统用信号表示软件线程1 301的关于针对合作的测试及到虚拟处理器的伴随共同分配的状态。示出了附加线程及优化标志,例如,软件线程2 311及优化标志313,以及软件线程n 321及优化标志323。
图4A示出根据本发明的一个说明性实施例的软件线程及虚拟处理器的状态。线程状态可在已分派401与闲置/睡眠402之间交替。当软件线程检测到诸如锁竞争或同步I/O之类的阻止事件时,软件线程可转变至闲置/睡眠状态。睡眠周期为软件线程处于睡眠或闲置状态的时间。类似地,当针对软件线程而清除阻止事件时,软件线程可转变至已分派401。
虚拟处理器可在已分派405与未分派407的状态之间移动。可发生中断,在此期间,操作系统的中断处理机将软件线程分配给虚拟处理器。当软件线程存取锁定的资源时,软件线程将阻止。此阻止可导致让与至系统管理程序的操作系统未分派407虚拟处理器。因此,当软件线程闲置(例如,闲置402)时,软件线程被分配到其或软件线程处于“其上”的虚拟处理器可变为未分派407。
图4B示出根据本发明的一个说明性实施例的允许操作系统将软件线程移动到虚拟处理器的流程图。操作系统可与系统管理程序协作以执行图4B的步骤。初始地,操作系统代表软件线程执行锁代码。锁操作检测到锁当前不可用,这是由于其正被另一软件线程持有(步骤411)。此外,软件线程(例如,图2D的软件线程0 260)可被标识为在由当前未分派的虚拟处理器所支持的逻辑处理器上(步骤412)。操作系统阻止软件线程(软件线程1)试图获取锁。然而,操作系统可确定使阻止线程(软件线程1)指向与锁持有线程(软件线程0)相同的虚拟处理器上的逻辑处理器的需要性(步骤413)。此重新确定目标可通过判定该虚拟处理器(虚拟处理器0)在CPU容量方面的相对忙碌性来进行。如果该虚拟处理器具有可用容量,则将使阻止软件线程(软件线程1)成为在该虚拟处理器上的逻辑处理器(逻辑处理器1)上的唤醒目标。操作系统判定忙碌级别是否低于忙碌阈值(步骤415)。在步骤411、412及415处的否定判定可使操作系统终止处理。
源虚拟处理器具有低于忙碌阈值的忙碌级别的判定导致操作系统将目标软件线程移动到源虚处理器(步骤417)。当处理或系统调用指示软件线程要被分派至逻辑处理器时,使软件线程成为唤醒目标。处理此后终止。关于步骤415的否定判定也使处理终止。
移动目标软件线程可能需要使操作系统移动软件线程。作为一个示例,图2E及图2F示出处于软件线程已在虚拟处理器1271上执行之后的状态的软件线程1。图2F示出在移动到虚拟处理器0 265之后的软件线程。
图5示出根据本发明的一个说明性实施例的响应在唤醒之后的软件线程的流程图。初始地,软件线程0在所分派的虚拟处理器上唤醒(步骤501)。接下来,软件线程0检测到软件线程1将其唤醒(步骤503)。软件线程可与操作系统及/或系统管理程序合作。接下来,软件线程0基于虚拟处理器容量而判定每个线程的负载是否兼容(步骤505)。支持虚拟处理器是被分配给软件线程0及软件线程1的虚拟处理器。如果(例如)在小于所消耗的兼容极限的速率下消耗目标虚拟处理器,则支持虚拟处理器可兼容。兼容极限可为(例如)80%。目标虚拟处理器是被分配给唤醒另一线程的软件线程的虚拟处理器。在此情况下,唤醒另一线程的软件线程是软件线程1。消耗是所占据的时钟循环与可用的净时钟循环相比的相对数目。此外,如果每个软件线程具有同一归属处理器且两个软件线程在该归属处理器上同时执行,则软件线程0及软件线程1可被进一步优化。归属处理器是这样的虚拟处理器:在某一间隔期间,软件线程对其的使用多于任何其它虚拟处理器。
兼容性由操作系统机制调节以避免使虚拟处理器过载。因此,在某一虚拟处理器在所有虚拟处理器之间不会变得不成比例地未被分派的程度下执行将软件线程放置在公共归属处理器上。即,在将两个或更多软件线程放置到公共处理器时,CPU消耗是一个因素。当软件线程0与软件线程1被判定为不兼容时,发生对步骤505的否定结果。在此情况下,处理终止。
然而,如果软件线程0与软件线程1兼容,则软件线程0请求在执行软件线程1的虚拟处理器上的放置(步骤507)。可对操作系统且随后对系统管理程序做出请求。接下来,操作系统将软件线程0移动到具有软件线程1的公共虚拟处理器上(步骤509)。处理此后终止。
图6示出根据本发明的一个说明性实施例的可基于异步方式而移动软件线程的流程图。初始地,操作系统检查当前锁(步骤603)。接下来,操作系统检查当前软件线程,假设软件线程具有启用的优化标志(步骤605)。接下来,操作系统判定等待锁的软件线程未被分派(步骤607)。(可以判定已有多长时间未分派该线程并利用此信息。例如,如果已在特定时间量内未分派该线程,则其可以是较好的移动候选者。)
接下来,操作系统计算与锁及虚拟处理器的潜在CPU容量关联的得分(步骤608)。操作系统可将所述得分与得分阈值相比较(步骤609)。得分是要放置在虚拟处理器上的软件线程的合适性的测量。得分可为用于处理软件线程的虚拟处理器的瞬时容测量量。得分阈值是一个比较值。操作系统使用得分阈值判定所述得分是否足以将软件线程移动到虚拟处理器。得分可以是关于虚拟处理器容量的极限。举例而言,如果虚拟处理器已被消耗80%,则将更多软件线程移动到其上可能起反作用。如果得分高于得分阈值,则操作系统将软件线程移动到目标虚拟处理器(步骤611)。接下来,系统管理程序判定是否存在其他未经检查的软件线程(步骤613)。如果存在其他未经检查的软件线程,则系统管理程序在步骤605处继续。否则,系统管理程序判定附加锁是否未经检查(步骤615)。如果是,则系统管理程序递增至下一锁(步骤617)。系统管理程序返回步骤605并且处理继续。如果步骤615的结果为否定的,则处理终止。
说明性实施例允许将在锁上合作的软件线程放置在公共虚拟处理器上。操作系统可检测合作软件线程,例如,通过执行图4的步骤411及412、图5的步骤503或图6的步骤608及609。此配置可改进处理器利用,而不会通过上下文切换或CPU时间至自旋锁的无效分配而对数据处理系统造成过多负担。应了解,虽然提供了将软件线程移动到具有另一软件线程的公共虚拟处理器的示例,但实际上,本发明的实施例也可在虚拟处理器上一起移动具有三个或更多软件线程的集合。
本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个优选实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-R/W)和DVD。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个直接或通过系统总线间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。
网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是当前可用的网络适配器类型中的少数几种。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
Claims (8)
1.一种用于将软件线程分配给具有多个虚拟处理器的数据处理系统的第一虚拟处理器的计算机实现的方法,所述方法包含:
判定第一软件线程上的负载以及第二软件线程上的负载是否高于忙碌阈值;
基于判定所述第一软件线程上的负载以及所述第二软件线程上的负载高于忙碌阈值,将所述第一软件线程分配给第一虚拟处理器;
检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作,其中所述检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作包括检测所述第一软件线程成为在未分派的第二虚拟处理器上唤醒的目标,以及检测所述第二软件线程使所述第一软件线程成为唤醒目标;及
响应于检测到合作,将所述第二软件线程移动到所述第一虚拟处理器。
2.如权利要求1所述的计算机实现的方法,其中检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的步骤包含:
判定目标虚拟处理器是否具有低于兼容极限的消耗,其中所述目标虚拟处理器是分配给所述第二软件线程的所述虚拟处理器。
3.如权利要求1或2所述的计算机实现的方法,所述检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作还包含:判定得分大于得分阈值;
其中将所述第二软件线程移动到所述第一虚拟处理器的步骤是响应于所述得分大于所述得分阈值的判定。
4.如权利要求1或2所述的计算机实现的方法,还包含:
判定针对所述第一软件线程设置了第一优化标志且针对所述第二软件线程设置了第二优化标志;及
在执行判定步骤后执行检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的步骤,且移动步骤基于设置了所述第一优化标志并且设置了所述第二优化标志的判定。
5.一种用于将软件线程分配给具有多个虚拟处理器的数据处理系统的第一虚拟处理器的装置,所述装置包含:
用于判定所述第一软件线程上的负载以及所述第二软件线程上的负载是否高于忙碌阈值的模块;
用于基于判定所述第一软件线程上的负载以及所述第二软件线程上的负载高于忙碌阈值,将所述第一软件线程分配给第一虚拟处理器的模块;
用于检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的模块,其中,所述用于检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的模块,包括:用于检测所述第一软件线程成为在未分派的第二虚拟处理器上唤醒的目标的子模块,以及用于检测所述第二软件线程使所述第一软件线程成为唤醒目标的子模块;及
用于响应于检测到合作,将所述第二软件线程移动到所述第一虚拟处理器的模块。
6.如权利要求5所述的装置,其中所述用于检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的模块,包含:
用于判定目标虚拟处理器是否具有低于兼容极限的消耗的子模块,其中所述目标虚拟处理器是分配给所述第二线程的所述虚拟处理器。
7.如权利要求5或6所述的装置,所述用于检测所述第一软件线程与所述第二软件线程之间关于与所述数据处理系统的资源关联的锁的合作的模块还包含:用于判定得分大于得分阈值的模块;
其中所述用于响应于检测到合作,将所述第二软件线程移动到所述第一虚拟处理器的模块是响应于所述得分大于所述得分阈值的判定。
8.如权利要求5或6所述的装置,还包含:用于判定针对所述第一线程设置了第一优化标志且针对所述第二线程设置了第二优化标志的模块;及
所述用于响应于检测到合作,将所述第二软件线程移动到所述第一虚拟处理器的模块进一步基于设置了所述第一优化标志并设置了所述第二优化标志的判定而执行移动。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/038,063 | 2008-02-27 | ||
US12/038,063 US8245236B2 (en) | 2008-02-27 | 2008-02-27 | Lock based moving of threads in a shared processor partitioning environment |
PCT/EP2009/052174 WO2009106526A1 (en) | 2008-02-27 | 2009-02-24 | Method and apparatus for moving threads in a shared processor partitioning environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101946235A CN101946235A (zh) | 2011-01-12 |
CN101946235B true CN101946235B (zh) | 2013-09-18 |
Family
ID=40637738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801052142A Expired - Fee Related CN101946235B (zh) | 2008-02-27 | 2009-02-24 | 用于在共享处理器分区环境中移动线程的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8245236B2 (zh) |
CN (1) | CN101946235B (zh) |
TW (1) | TW201001291A (zh) |
WO (1) | WO2009106526A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
US8843927B2 (en) * | 2009-04-23 | 2014-09-23 | Microsoft Corporation | Monitoring and updating tasks arrival and completion statistics without data locking synchronization |
FR2950714B1 (fr) * | 2009-09-25 | 2011-11-18 | Bull Sas | Systeme et procede de gestion de l'execution entrelacee de fils d'instructions |
US8689037B2 (en) * | 2009-12-16 | 2014-04-01 | Qualcomm Incorporated | System and method for asynchronously and independently controlling core clocks in a multicore central processing unit |
US8775830B2 (en) | 2009-12-16 | 2014-07-08 | Qualcomm Incorporated | System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature |
US9104411B2 (en) | 2009-12-16 | 2015-08-11 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US9176572B2 (en) | 2009-12-16 | 2015-11-03 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US9563250B2 (en) * | 2009-12-16 | 2017-02-07 | Qualcomm Incorporated | System and method for controlling central processing unit power based on inferred workload parallelism |
US8909962B2 (en) * | 2009-12-16 | 2014-12-09 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US8650426B2 (en) * | 2009-12-16 | 2014-02-11 | Qualcomm Incorporated | System and method for controlling central processing unit power in a virtualized system |
US20110145559A1 (en) * | 2009-12-16 | 2011-06-16 | Thomson Steven S | System and method for controlling central processing unit power with guaranteed steady state deadlines |
US9128705B2 (en) * | 2009-12-16 | 2015-09-08 | Qualcomm Incorporated | System and method for controlling central processing unit power with reduced frequency oscillations |
WO2011114495A1 (ja) * | 2010-03-18 | 2011-09-22 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |
US9354926B2 (en) * | 2011-03-22 | 2016-05-31 | International Business Machines Corporation | Processor management via thread status |
US8930952B2 (en) * | 2012-03-21 | 2015-01-06 | International Business Machines Corporation | Efficient lock hand-off in a symmetric multiprocessing system |
US9923840B2 (en) * | 2012-08-20 | 2018-03-20 | Donald Kevin Cameron | Improving performance and security of multi-processor systems by moving thread execution between processors based on data location |
US10187452B2 (en) | 2012-08-23 | 2019-01-22 | TidalScale, Inc. | Hierarchical dynamic scheduling |
TWI462020B (zh) * | 2012-11-28 | 2014-11-21 | Htc Corp | 執行緒管理方法及其電子裝置 |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US9396012B2 (en) * | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
WO2015034508A1 (en) | 2013-09-05 | 2015-03-12 | TidalScale, Inc. | Hierarchical dynamic scheduling |
CN103530191B (zh) * | 2013-10-18 | 2017-09-12 | 杭州华为数字技术有限公司 | 热点识别处理方法及装置 |
US9558035B2 (en) * | 2013-12-18 | 2017-01-31 | Oracle International Corporation | System and method for supporting adaptive busy wait in a computing environment |
US9378069B2 (en) | 2014-03-05 | 2016-06-28 | International Business Machines Corporation | Lock spin wait operation for multi-threaded applications in a multi-core computing environment |
US20160041933A1 (en) | 2014-08-05 | 2016-02-11 | Diablo Technologies, Inc. | System and method for implementing a multi-threaded device driver in a computer system |
US9529633B2 (en) * | 2014-09-11 | 2016-12-27 | Amazon Technologies, Inc. | Variable timeslices for processing latency-dependent workloads |
CN105893137B (zh) * | 2014-10-21 | 2019-11-08 | 伊姆西公司 | 用于为对象分配锁资源的方法和装置 |
US9436791B1 (en) | 2015-03-24 | 2016-09-06 | International Business Machines Corporation | Optimizing placement of circuit resources using a globally accessible placement memory |
US9870275B2 (en) | 2015-05-12 | 2018-01-16 | International Business Machines Corporation | Processor thread management |
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
US9996393B2 (en) * | 2015-11-19 | 2018-06-12 | International Business Machines Corporation | Dynamic virtual processor manager |
US10108453B2 (en) | 2016-06-30 | 2018-10-23 | International Business Machines Corporation | Averting lock contention associated with core-based hardware threading in a split core environment |
US10353736B2 (en) | 2016-08-29 | 2019-07-16 | TidalScale, Inc. | Associating working sets and threads |
JP6911566B2 (ja) * | 2017-06-21 | 2021-07-28 | 株式会社リコー | 情報処理装置、制限解除方法及び制限解除プログラム |
US10579274B2 (en) | 2017-06-27 | 2020-03-03 | TidalScale, Inc. | Hierarchical stalling strategies for handling stalling events in a virtualized environment |
US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
US10831539B2 (en) * | 2019-03-18 | 2020-11-10 | International Business Machines Corporation | Hardware thread switching for scheduling policy in a processor |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605988A (zh) * | 2003-10-09 | 2005-04-13 | 国际商业机器公司 | 增强调度线程的优先级引导的系统、设备和方法 |
US6952825B1 (en) * | 1999-01-14 | 2005-10-04 | Interuniversitaire Micro-Elektronica Centrum (Imec) | Concurrent timed digital system design method and environment |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6530079B1 (en) | 1999-06-02 | 2003-03-04 | International Business Machines Corporation | Method for optimizing locks in computer programs |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US7065763B1 (en) | 2000-09-29 | 2006-06-20 | Emc Corporation | Method of reducing contention of a highly contended lock protecting multiple data items |
JP2002202959A (ja) * | 2000-12-28 | 2002-07-19 | Hitachi Ltd | 動的な資源分配をする仮想計算機システム |
US7428485B2 (en) * | 2001-08-24 | 2008-09-23 | International Business Machines Corporation | System for yielding to a processor |
GB2381092B (en) | 2001-10-19 | 2005-10-19 | Ibm | Object locking in a shared VM environment |
US7367023B2 (en) * | 2003-07-10 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for generating computer programming code selectively optimized for execution performance and not optimized for serviceability |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
US20060130062A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Scheduling threads in a multi-threaded computer |
US20060271395A1 (en) | 2005-05-25 | 2006-11-30 | Harris Steven T | Distributed object identity in a virtual machine cluster |
US7752620B2 (en) * | 2005-06-06 | 2010-07-06 | International Business Machines Corporation | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US8296760B2 (en) * | 2006-10-27 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine |
US8185907B2 (en) * | 2007-08-20 | 2012-05-22 | International Business Machines Corporation | Method and system for assigning logical partitions to multiple shared processor pools |
US8108857B2 (en) * | 2007-08-29 | 2012-01-31 | International Business Machines Corporation | Computer program product and method for capacity sizing virtualized environments |
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
-
2008
- 2008-02-27 US US12/038,063 patent/US8245236B2/en not_active Expired - Fee Related
-
2009
- 2009-02-24 WO PCT/EP2009/052174 patent/WO2009106526A1/en active Application Filing
- 2009-02-24 TW TW098105840A patent/TW201001291A/zh unknown
- 2009-02-24 CN CN2009801052142A patent/CN101946235B/zh not_active Expired - Fee Related
-
2012
- 2012-07-09 US US13/544,958 patent/US20120278809A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6952825B1 (en) * | 1999-01-14 | 2005-10-04 | Interuniversitaire Micro-Elektronica Centrum (Imec) | Concurrent timed digital system design method and environment |
CN1605988A (zh) * | 2003-10-09 | 2005-04-13 | 国际商业机器公司 | 增强调度线程的优先级引导的系统、设备和方法 |
Non-Patent Citations (1)
Title |
---|
Srinivas Sridharan,etc..Thread Migration to Improve Synchronization Performance.《In Workshop on Operating System Interference in High Performance Applications》.2006,1-8. * |
Also Published As
Publication number | Publication date |
---|---|
US20120278809A1 (en) | 2012-11-01 |
CN101946235A (zh) | 2011-01-12 |
TW201001291A (en) | 2010-01-01 |
US20090217276A1 (en) | 2009-08-27 |
WO2009106526A1 (en) | 2009-09-03 |
US8245236B2 (en) | 2012-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101946235B (zh) | 用于在共享处理器分区环境中移动线程的方法及装置 | |
KR100724507B1 (ko) | 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치 | |
US7370331B2 (en) | Time slicing in a shared partition | |
EP2430541B1 (en) | Power management in a multi-processor computer system | |
US8489904B2 (en) | Allocating computing system power levels responsive to service level agreements | |
US8201183B2 (en) | Monitoring performance of a logically-partitioned computer | |
US7774563B2 (en) | Reducing memory access latency for hypervisor- or supervisor-initiated memory access requests | |
US20070271564A1 (en) | Method, Apparatus, and Program Product for Optimization of Thread Wake up for Shared Processor Partitions | |
US8799908B2 (en) | Hardware-enabled lock mediation for controlling access to a contested resource | |
US20120210152A1 (en) | Transparently Increasing Power Savings in a Power Management Environment | |
KR20040102074A (ko) | 데이터 관리 방법, 데이터 처리 시스템 및 컴퓨터 프로그램 | |
CN1276888A (zh) | 在多线程处理器中选择线程切换事件的方法和装置 | |
KR20180105554A (ko) | 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법 | |
WO2002097622A2 (en) | A resource management method | |
CN111459622B (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
WO2011147884A1 (en) | Fast remote communication and computation between processors | |
CN104460938A (zh) | 利用存储器高速缓存在系统范围内节省电力的方法和系统 | |
US20120124298A1 (en) | Local synchronization in a memory hierarchy | |
CN114691296A (zh) | 中断处理方法、装置、介质及设备 | |
Kosciuszkiewicz et al. | Towards automatic management of reconfigurable accelerators |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130918 Termination date: 20190224 |