CN116457755A - 配置容器中的硬件多线程 - Google Patents
配置容器中的硬件多线程 Download PDFInfo
- Publication number
- CN116457755A CN116457755A CN202180069223.1A CN202180069223A CN116457755A CN 116457755 A CN116457755 A CN 116457755A CN 202180069223 A CN202180069223 A CN 202180069223A CN 116457755 A CN116457755 A CN 116457755A
- Authority
- CN
- China
- Prior art keywords
- container
- core
- execution
- computer
- program instructions
- 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.)
- Pending
Links
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/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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/5044—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 hardware capabilities
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
作为容器初始化过程的一部分,启用计算机系统的一组核中的每个处理器核的最大数量的硬件线程,容器初始化过程配置计算机系统上执行的操作系统用于容器执行,并配置第一容器用于在操作系统上执行。从该组核中的一组可用核,选择执行核。在所选择的执行核中,配置要在第一容器的执行期间使用的每核的线程数量,通过第一同时多线程(SMT)参数为容器初始化过程指定每核的线程数量。使用配置的执行核,执行第一容器,所述执行虚拟化操作系统。
Description
背景技术
本发明总体上涉及用于配置硬件多线程的方法、系统和计算机程序产品。更具体地,本发明涉及用于配置容器中的硬件多线程的方法、系统和计算机程序产品。
虚拟机(VM)虚拟化或模拟物理计算机系统。VM由管理程序管理,该管理程序执行资源虚拟化并将VM彼此分离。每个虚拟机包含客户操作系统(OS)、OS需要运行的硬件的虚拟副本、以及在客户OS上运行的具有相关联的库和依赖性的至少一个应用程序。
容器类似于VM,但容器虚拟化操作系统,而不是虚拟化物理计算机系统。操作系统可以在VM上或在物理计算机上运行。多个容器可以在同一机器上运行并且与其他容器共享OS内核,每个容器作为用户空间中的隔离进程来运行。每个单独的容器仅包含应用程序及其库和依赖关系。
因为容器不包括其自身的OS,所以它们小于VM并且更快地部署。此外,因为容器之间的通信比VM之间的通信需要更少的开销,所以容器还启用微服务架构,其中应用程序组件被部署和缩放而不是完整的应用程序。因此,应用程序内的应用程序组件可彼此分离,且如果单一组件正在承受负荷,那么可部署所述组件的额外实例而非整个应用程序。
若干不同方法可用于指定管理容器的配置和操作的一个或多个设置。一种容器实现包括用于指定容器设置的命令行接口(CLI)。另一种容器实现包括由另一程序(诸如编排框架)使用以指定容器设置的应用程序接口(API)。容器设置还可以在容器映像、包括应用程序组件、系统库、系统工具、以及封装容器的平台设置的可执行文件的自包含静态文件集内指定,该文件集包括执行该映像作为容器所需的一切内容。一些容器映像应用程序于特定平台或架构。其他容器映像包括多平台或多架构能力,并且可以包括专用于每个支持的平台或架构的设置。容器设置和偏好也可以在存储一个或多个容器映像供部署的的容器注册表内指定。
在计算机系统管理中,编排是计算机系统和软件的自动配置、协调和管理。编排通常使涉及跨多个不同系统的许多步骤的过程或工作流自动化。编排框架是执行编排的软件工具。编排框架的功能是配置和提供容器,尽管容器可以在不使用编排框架的情况下被配置和提供。Kubernetes是编排框架的非限制性实例;其他编排框架目前也是可用的。(Kubemetes是Linux基金会在美国和其他国家的注册商标。)
硬件多线程是计算机处理器或多核处理器内的单个处理器核并发地执行应用程序或应用程序组件的多个执行线程的能力。
发明内容
说明性实施例提供了一种方法、系统和计算机程序产品。实施例包括一种方法,所述方法作为容器初始化过程的一部分启用计算机系统的一组核中的每个处理器核(核)的最大数量的硬件线程,所述容器初始化过程配置在所述计算机系统上执行的操作系统以用于容器执行,以及配置第一容器用于在所述操作系统上执行。实施例从该组核中的一组可用核中选择执行核。实施例在所选择的执行核中配置要在第一容器的执行期间使用的每核的线程数量,通过第一同时多线程(SMT)参数为容器初始化过程指定每核的线程数量。实施例使用配置的执行核来执行第一容器,所述执行虚拟化操作系统。
实施例包括计算机可用程序产品。计算机可用程序产品包括一个或多个计算机可读存储设备以及存储在一个或多个存储设备中的至少一个上的程序指令。
实施例包括一种计算机系统。计算机系统包括一个或多个处理器、一个或多个计算机可读存储器和一个或多个计算机可读存储设备,以及存储在一个或多个存储设备中的至少一个上的用于由一个或多个处理器中的至少一个经由一个或多个存储器中的至少一个执行的程序指令。
附图说明
在所附权利要求中阐述了被认为是本发明特征的某些新颖特征。然而,当结合附图阅读时,通过参考说明性实施例的以下详细描述,将最好地理解本发明本身以及使用的优选模式、其进一步的目的和优点,其中:
图1描绘了可以实现说明性实施例的数据处理系统网络的框图;
图2描绘了可以实现说明性实施例的数据处理系统的框图;
图3描绘了根据说明性实施例的用于配置容器中的硬件多线程的示例配置的框图;
图4描绘了根据说明性实施例的用于配置容器中的硬件多线程的示例配置的框图;
图5描绘了根据说明性实施例的配置容器中的硬件多线程的示例;
图6描绘了根据说明性实施例的配置容器中的硬件多线程的继续示例;
图7描绘了根据说明性实施例的配置容器中的硬件多线程的继续示例;
图8描绘了根据说明性实施例的配置容器中的硬件多线程的示例;
图9描绘了根据说明性实施例的配置容器中的硬件多线程的继续示例;
图10描绘了根据说明性实施例的用于配置容器中的的硬件多线程的示例过程的流程图;
图11描绘了根据本发明的实施例的云计算环境;以及
图12示出了根据本发明的实施例的抽象模型层。
具体实施方式
说明性实施例认识到,并非所有处理工作负载都受益于使用多线程的执行。此外,不同的处理工作负载受益于使用不同数量的线程的执行。一些工作负荷是等待时间敏感的,具有对事务的平均或最坏情况响应时间的严格要求。例如,诸如IP语音(VoIP)和流视频之类的工作负荷是等待时间敏感的,因为它们实时地处理数据。如果多个线程竞争相同的资源,例如高速缓存、系统存储器和网络资源,那么增加的资源等待时间也增加了等待时间。结果,即使附加线程可用,等待时间敏感的工作负荷通常受益于仅使用一个或两个线程来执行。其他工作负荷(例如,数据库工作负荷)处理尽可能多的数据,但是在等待输入/输出或其他阻挡操作的同时经常放弃处理时间,并且因此经常从用尽可能多的线程执行中获益。当处理工作负荷被实现为VM内的应用程序时,应用程序具有在客户机OS内配置的线程使用设置,从而允许调整线程使用以满足特定应用程序的要求。
说明性实施例还认识到,与VM不同,容器从正被虚拟化的操作系统继承它们的线程使用配置。由此,在VM中或在没有VM的物理服务器上运行的所有容器具有相同的线程使用设置。然而,当所有容器使用相同的线程使用设置时,该设置不太可能提供适合于特定工作负荷要求的性能。例如,应用程序可能包括两个组件,一个执行数据库操作(并且因此需要以尽可能多的并行性执行,以使吞吐量最大化)并且另一个处理实时视频(并且因此仅使用一个或两个线程执行,以使等待时间最小化)。将线程使用设置为尽可能多的线程可能对图像处理容器产生太多等待时间,执行单线程不必要地减慢数据库操作容器,并且折衷设置可能对两个容器产生不可接受的性能。因此,说明性实施例认识到,需要在每个容器的基础上调整容器执行中使用的线程的数量。
说明性实施例认识到,目前可用的工具或解决方案没有解决这些需要或为这些需要提供足够的解决方案。用于描述本发明的说明性实施例通常解决并解决上述问题和与配置容器中的硬件多线程有关的其他问题。
实施例可以实现为软件应用程序。实现实施例的应用程序可被配置为现有容器配置系统的修改、结合现有容器配置系统操作的单独应用程序、独立应用程序或其某种组合。
具体地,一些说明性实施例提供了一种方法,该方法作为操作系统初始化作为容器的主机和容器初始化过程的一部分,启用每个处理器核的最大数量的硬件线程,选择一个或多个执行核,配置执行核中的每个核的线程数量,并且使用所配置的执行核来执行正被初始化的容器。
容器初始化过程准备操作系统以执行容器,并且准备容器以用于虚拟化操作系统的执行。作为容器初始化过程的一部分,实施例接收容器执行参数集合。容器映像内指定的容器执行参数表示应用程序开发者对意图在容器中执行的应用程序组件的理解以及该特定应用程序组件的最优执行设置。
在一个实施例中,该组容器执行参数包括一个同时多线程(SMT)参数,该参数指定每个核有多少线程用于执行该容器。例如,在SMT1处执行的容器使用在每个核中仅启用一个线程的核。作为另一实例,在SMT8处执行的容器使用在每一核中启用八个线程的核。在另一实施例中,该组容器执行参数包括指定要被用于执行正被初始化的容器的核的数量的容器核参数。在另一实施例中,容器执行参数集合包括指定要被用于执行正被初始化的容器的总线程的数量的参数,并且该实施例从SMT参数和总线程的数量来确定容器核参数。在另一实施例中,该组容器执行参数包括可共享性参数,其指定要被用于执行容器的线程是否可与另一容器共享。在另一实施例中,该组容器执行参数包括其他或附加参数。
在实施例中,通过CPI或API或在与容器映像相关联的元数据内指定容器执行参数。应用于特定平台或架构的容器镜像包括适合于平台或架构的一组容器执行参数。具有多平台或多架构能力的容器映像通常包括多组容器执行参数,每组容器执行参数配置用于在不同的所支持的平台或架构上执行的容器。另一实施例从容器注册表或另一源接收一组偏好,并确定相应的一组容器执行参数。在-个实施例中,该组偏好实际上是一组需求,即。容器必须实施的设置。该组要求的非限制性实例是容器以每个核的最大可能线程数量执行,而不指定每个核的特定线程数量。由于不同架构可以具有每核不同数量的线程,因此以这种方式构造需求避免了为每个不同的处理器架构指定每核特定数量的线程的需要。在另一实施例中,该组偏好不是严格的一组要求,而是包括容器应尽其最佳实施的设置。该组偏好的非限制性示例是,如果可能的话,容器用每核独占线程来执行,但是如果独占性不可用,则每核可共享线程是可接受的。在一个实施例中,所确定的容器该组执行参数覆盖容器映像中指定的参数。
作为容器初始化过程的一部分,实施例通过启用容器将在其上执行的计算机系统中的每个处理器核的最大数量的硬件线程来使操作系统准备好与容器一起使用。该启用覆盖任何默认、先前或继承的线程设置。实施例使用任何当前可用的技术来执行启用。例如,可以使用AIX操作系统中的SMTCTL命令和IBM Power系统上Linux操作系统中的|ppc64_cpu|命令来执行启用。(AIX和IBM是国际商业机器公司在美国和其他国家的注册商标)。Linux是Linus Torvalds在美国和其他国家的注册商标。
实施例使用任何当前可用的技术来确定哪些处理器核可用于执行正被初始化的容器。例如,RedHat Linux操作系统提供的virsh vcpupin命令提供核可用性数据。(RedHat是RedHat公司在美国和其他国家的注册商标。)实施例从可用核中选择由容器核参数指定的核的数量。一旦初始化,容器将在所选择的核上执行。
实施例将所选择的核配置成使用由SMT参数指定的每个核的线程数量来执行。因为先前启用了每处理器核的最大数量的硬件线程,所以为了执行配置,实施例禁用尽可能多的线程是必要的以获得由SMT参数指定的每核的线程数量。例如,考虑每个核具有8个线程的处理器。为了在SMT8处执行容器,已经启用了所有八个线程,因此实施例不禁用每个核中的任何线程来使用。为了在SMT4处执行容器,一实施例禁用每个核中的四个以供使用的线程。为了在SMT1执行容器,一实施例禁用每个核中的七个以供使用的线程。
实施例根据可共享性参数配置所选择的核来执行。如果没有指定可共享性参数,则一实施例应用程序可共享或独占的默认设置。如果所选择的核被配置用于独占使用,则实施例使用所选择的、配置的核来执行容器,并且在第一容器正在执行时不允许其他容器使用该核。如果所选择的核被配置用于可共享使用,则实施例使用所选择的所配置的核来执行容器。实施例还允许具有等于第一容器的SMT参数的SMT参数的第二容器使用所选核和那些核内的线程来执行。注意,共享核的两个容器仅使用启用的线程,并且对于两个容器,禁用的线程保持禁用。
本文所述的配置容器中的硬件多线程的方式在与容器配置和执行相关的技术领域中目前可用的方法中是不可用的。本文描述的实施例的方法,当被实现为在设备或数据处理系统上执行时,包括在作为容器初始化过程的一部分中该设备或数据处理系统的功能的实质性进步:启用每个处理器核的最大数量的硬件线程,选择一个或多个执行核,配置执行核中的每个核的线程数量,以及使用所配置的执行核来执行正被初始化的容器。
仅作为实例,关于某些类型的处理器、核、线程、容器、参数、偏好、调整、装置、数据处理系统、环境、组件以及应用程序来描述说明性实施例。这些和其他类似产物的任何特定表现不旨在限制本发明。在说明性实施例的范围内,可以选择这些和其他类似产物的任何合适的表现。
此外,可以相对于任何类型的数据、数据源或通过数据网络对数据源的访问来实现说明性实施例。在本发明的范围内,任何类型的数据存储设备可以在数据处理系统本地或通过数据网络将数据提供给本发明的实施例。在说明性实施例的范围内,在使用移动装置描述实施例的情况下,适于与移动装置一起使用的任何类型的数据存储装置可在移动装置本地或通过数据网络将数据提供到此实施例。
仅使用特定代码、设计、架构、协议、布局、示意图、和工具作为实例来描述说明性实施例,并且不限于说明性实施例。此外,为了描述的清楚,在一些实例中使用特定软件、工具和数据处理环境仅作为实例来描述说明性实施例。说明性实施例可以结合其他可比较的或相似用途的结构、系统、应用程序或架构使用。例如,在本发明的范围内,其他类似的移动设备、结构、系统、应用程序或架构可以与本发明的这种实施例结合使用。说明性实施例可以在硬件、软件或其组合中实现。
本公开中的实例仅用于说明的清晰,并且不限于说明性实施例。从本公开可以想到另外的数据、操作、动作、任务、活动和操纵,并且在说明性实施例的范围内设想相同的数据、操作、动作、任务、活动和操纵。
本文列出的任何优点仅是实例并且不旨在限制这些说明性实施例。通过具体的说明性实施例可以实现另外的或不同的优点。此外,特定说明性实施例可具有上文所列的优点中的一些、全部或无优点。
应当理解,尽管本公开包括关于云计算的详细描述,但本文所叙述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。
云计算是服务交付的模型,用于使得能够方便地、按需地网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用程序、虚拟机和服务)的共享池,所述可配置计算资源可以以最小的管理努力或与所述服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助服务:云消费者可以根据需要自动地单方面地配设计算能力,如服务器时间和网络存储,而无需与服务的提供商进行人类交互。
广泛的网络接入:能力可通过网络获得并且通过促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上计算机、和PDA)使用的标准机制访问。
资源池:提供者的计算资源被池化以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需要动态地分配和重新分配。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力(在一些情况下自动地)以快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
测量服务:云系统通过在适合于服务类型(例如,存储、处理、带宽、和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用程序。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用程序。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用程序配置设胃。
平台即服务(PaaS):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用程序部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是对所部署的应用程序和可能的应用程序托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络、和其他基本计算资源,其中消费者能够部署和运行任意软件,其可以包括操作系统和应用程序。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用程序的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础设施仅针对组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础设施由若干组织共享并且支持具有共享关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:云基础架构对一般公众或大型行业组可用并且由出售云服务的组织拥有。
混合云:云基础设施是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用程序能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
参照附图并且具体地参照图1和图2,这些图是可以实施说明性实施例的数据处理环境的示例图。图1和图2仅是示例并且不旨在断言或暗示关于其中可以实施不同实施例的环境的任何限制。特定实现方式可以基于以下描述对所描绘的环境做出许多修改。
图1描绘了可以实现说明性实施例的数据处理系统网络的框图。数据处理环境100是其中可以实施说明性实施例的计算机网络。数据处理环境100包括网络102。网络102是用于提供在数据处理环境100内连接在一起的不同设备和计算机之间的通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤电缆之类的连接。
客户端或服务器仅是连接到网络102的某些数据处理系统的示例角色,并且不旨在排除这些数据处理系统的其他配置或角色。服务器104和服务器106与存储单元108一起耦合到网络102。软件应用程序可以在数据处理环境100中的任何计算机上执行。客户端110、112和114也耦合到网络102。数据处理系统(诸如服务器104或106或客户端110、112或114)可以包含数据并且可以具有在其上执行的软件应用程序或软件工具。
仅作为示例,并且不暗示对这种架构的任何限制,图1描绘了在实施例的示例实现方式中可用的某些部件。例如,服务器104和106以及客户端110、112、114仅作为示例被描绘为服务器和客户端,而不是暗示对客户端-服务器架构的限制。作为另一示例,在说明性实施例的范围内,实施例可以跨所示的若干数据处理系统和数据网络分布,而另一实施例可以的单个数据处理系统上实现。数据处理系统104、106、110、112和114还表示集群、分区和适于实现实施例的其他配置中的示例节点。
设备132是本文描述的设备的示例。例如,设备132可以采取智能电话、平板计算机、膝上型计算机、固定或便携式形式的客户端110、可穿戴计算设备或任何其他合适的设备的形式。被描述为在图1中的另一数据处理系统中执行的任何软件应用程序可被配置成以类似方式在设备132中执行。在图1中的另一个数据处理系统中存储或产生的任何数据或信息可以被配置为以类似的方式在设备132中存储或产生。
应用程序105实施本文描述的实施例。应用程序105在服务器104和106、客户端110、112和114以及设备132中的任一个中执行。
服务器104和106、存储单元108、以及客户端110、112和114、以及设备132可以使用有线连接、无线通信协议、或其他合适的数据连接性耦合至网络102。客户端110、112和114可以是例如个人计算机或网络计算机。
在所描绘的示例中,服务器104可以向客户端110、112和114提供数据,如引导文件、操作系统映像和应用程序。在该示例中,客户端110、112和114可以是服务器104的客户端。客户端110、112、114或其某种组合可以包括它们自己的数据、引导文件、操作系统映像和应用程序。数据处理环境100可以包括附加的服务器、客户端和未示出的其他设备。
在所描绘的示例中,数据处理环境100可以是互联网。网络102可以表示使用传输控制协议/互联网协议(TCP/IP)和其他协议来彼此通信的网络和网关的集合。互联网的核是主节点或主计算机(包括路由数据和消息的数干个商业、政府、教育和其他计算机系统)之间的数据通信链路的骨架。当然,数据处理环境100还可以被实现为许多不同类型的网络,诸如例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为实例而并非作为对于不同说明性实施例的架构限制。
除了其他用途之外,数据处理环境100可以用于实现其中可以实现说明性实施例的客户端-服务器环境。客户机-服务器环境使得软件应用程序和数据能够跨网络分布,以使得应用程序通过使用客户机数据处理系统和服务器数据处理系统之间的交互来发挥功能。数据处理环境100还可以采用面向服务的架构,其中,跨网络分布的可互操作的软件组件可以被一起封装为一致的业务应用程序。数据处理环境100还可以采取云的形式,并且采用服务递送的云计算模型,用于使得能够方便地、按需地网络访问可配置计算资源的共享池(例如,网络、网络带宽、服务器、处理、存储器、存储、应用程序、虚拟机和服务),其能够以最小的管理努力或与服务的提供商的交互快速地供应和释放。
参考图2,该图描绘了可以实现说明性实施例的数据处理系统的框图。数据处理系统200是计算机(诸如图1中的服务器104和106或客户端110、112和114)或用于说明性实施例的计算机可用程序代码或指令可以位于其中的另一类型的设备的示例。
数据处理系统200还代表数据处理系统或其中的配置,如图1中的数据处理系统132,实施说明性实施例的过程的计算机可用程序代码或指令可以位于该数据处理系统中。数据处理系统200仅作为示例被描述为计算机,而不限于此。其他装置(例如,图1中的设备132)形式的实施方式可修改数据处理系统200,例如,通过添加触摸界面,并且甚至从数据处理系统200中消除某些描述的部件,而不背离在本文中描述的数据处理系统200的操作和功能的总体描述。
在所描绘的示例中,数据处理系统200采用包括北桥和存储器控制器中枢(NB/MCH)202和南桥和输入/输出(I/O)控制器中枢(SB/ICH)204的中枢架构。处理单元206、主存储器208和图形处理器210耦合到北桥和存储器控制器中心(NB/MCH)202。处理单元206可以包含一个或多个处理器并且可以使用一个或多个异构处理器系统来实现。处理单元206可以是多核处理器。在某些实现方式中,图形处理器210可以通过加速图形端口(AGP)耦合到NB/MCH202。
在所描绘的示例中,局域网(LAN)适配器212耦合至南桥和I/O控制器中枢
(SB/ICH)204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)和其他端口232、以及PCI/PCIe设备234通过总线238耦合到南桥和I/O控制器中枢204。硬盘驱动器(HDD)或固态驱动器(SSD)226和CD-ROM230通过总线240耦合到南桥和I/O控制器中心204。PCI/PCIe设备234可包括例如以太网适配器、插入卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如闪存二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM230可以使用例如集成驱动电子器件(IDE)、串行高级技术附件(SATA)接口或诸如外部SATA(eSATA)和微SATA(mSATA)的变体。超级I/O(SIO)设备236可以通过总线238耦合到南桥和I/O控制器中枢(SB/ICH)204。
存储器(如主存储器208、ROM 224或闪存(未示出))是计算机可用存储设备的一些实例。硬盘驱动器或固态驱动器226、CD-ROM230和其他类似可用的装置是包括计算机可用存储介质的计算机可用存储装置的一些实例。
操作系统在处理单元206上运行。操作系统协调并提供图2中的数据处理系统200内的各种组件的控制。操作系统可以是用于任何类型的计算平台的市售操作系统,包括但不限于服务器系统、个人计算机和移动设备。面向对象的或其他类型的编程系统可以与操作系统结合操作,并且提供从在数据处理系统200上执行的程序或应用程序对操作系统的调用。
用于操作系统、面向对象的编程系统和应用程序或程序(如图1中的应用程序105)的指令位于存储设备上(如以硬盘驱动器226上的代码226A的形式),并且可以被加载到一个或多个存储器(如主存储器208)中的至少一个中以便由处理单元206执行。示例性实施方式的处理可以通过使用计算机实施的指令由处理单元206执行,这些指令可以位于存储器中,诸如,例如,主存储器208、只读存储器224、或者一个或多个外围设备中。
此外,在一种情况下,代码226A可以通过网络201A从远程系统201B下载,其中,类似的代码201C被存储在存储设备201D上。在另一情况下,代码226A可通过网络201A被下载到远程系统201B,其中所下载的代码201C被存储在存储设备201D上。
图1-2中的硬件可以取决于实现方式而变化。除了或代替在图1-2中描述的硬件,可以使用其他内部硬件或外围设备,诸如闪存、等效非易失性存储器或光盘驱动器等。此外,举例实施例的过程可以应用于多处理器数据处理系统。
在某些说明性例子中,数据处理系统200可以是个人数字助理(PDA),其通常配置有闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。总线系统可包括一条或多条总线,诸如系统总线、I/O总线和PCI总线。当然,总线系统可以使用在附接到结构或架构的不同组件或设备之间提供数据传送的任何类型的通信结构或架构来实现。
通信单元可以包括用于发送和接收数据的一个或多个设备,如调制解调器或网络适配器。存储器可以是例如主存储器208或高速缓存,诸如在北桥和存储器控制器中心202中发现的高速缓存。处理单元可包含或以上处理器或CPU。
图1-2中所描绘的示例和上述示例不意味着暗示架构限制。例如,数据处理系统200除了采取移动或可穿戴设备的形式之外还可以是平板计算机、膝上型计算机或电话设备。
在计算机或数据处理系统被描述为虚拟机、虚拟设备、或虚拟组件的情况下,该虚拟机、虚拟设备、或虚拟组件以数据处理系统200的方式使用数据处理系统200中描绘的一些或所有组件的虚拟化表现来操作。例如,在虚拟机、虚拟设备或虚拟组件中,处理单元206表现为主机数据处理系统中可用的所有或某些数量的硬件处理单元206的虚拟化实例,主存储器208表现为主机数据处理系统中可用的主存储器208的所有或某个部分的虚拟化实例,并且磁盘226表现为主机数据处理系统中可用的磁盘226的所有或某个部分的虚拟化实例。在这种情况下,主机数据处理系统由数据处理系统200表示。
参见图3,该图描绘了根据说明性实施例的用于配置容器中的硬件多线程的示例配置的框图。应用程序300是图1中的应用程序105的实例并且在图1中的服务器104和106、客户端110、112和114以及设备132中的任一个中执行。
作为容器初始化过程的一部分,容器参数模块310接收一组容器执行参数。在模块310的一个实现方式中,该组容器执行参数包括SMT参数,该参数指定每个核有多少线程用于执行容器。在模块310的另一实现方式中,该组容器执行参数包括容器核参数,该容器核参数指定有待用于执行正被初始化的容器的核的数量。在模块310的另一实现方式中,该组容器执行参数包括指定要被用于执行正被初始化的容器的全部线程的数量的参数,并且模块310从SMT参数和总线程的数量确定容器核参数。在模块310的另一实现中,该组容器执行参数包括可共享性参数,其指定要被用于执行容器的线程是否可与另一容器共享。在模块310的另一个实现方式中,该组容器执行参数包括其他或附加参数。
在模块310的实现方式中,通过CPI或API或在容器映像内指定容器执行参数。模块310的另实现方式从容器注册表或另一源接收一组偏好并且确定一组对应的容器执行参数。在模块310的一个实现方式中,该组偏好实际上是一组要求,即。容器必须实施的设置。在模块310的另实现方式中,该组偏好不是一组硬性要求,而是包括容器应尽尽最大努力实施的设置。在模块310的一个实现方式中,所确定的一组容器执行参数覆盖容器映像中指定的参数。
作为容器初始化过程的一部分,实施例通过启用要在其上执行容器的计算机系统中每个处理器核的最大数量的硬件线程来准备与容器一起使用的操作系统。这种启用覆盖了任何默认或先前的线程设置或可能已经从VM继承的任何线程设置。
模块320确定哪些处理器核可用于执行正被初始化的容器。模块320从可用核中选择由容器核参数指定的核的数量。一旦初始化,容器将在所选择的核上执行。
模块320将所选择的核配置成使用由SMT参数指定的每个核的线程数量来执行。因为先前启用了每个处理器核的最大数量的硬件线程,所以为了执行配置模块320,禁用尽可能多的线程是必要的以获得由SMT参数指定的每个核的线程数量。
模块320根据可共享性参数配置所选择的核来执行。如果没有指定可共享性参数,则模块320应用程序可共享或独占的默认设置。如果所选择的核被配置用于独占使用,则模块320使用所选择的所配置的核来执行容器,并且在第一容器正在执行时不允许其他容器使用该核。如果所选择的核被配置成可共享使用,则模块320使用所选择的所配置的核来执行容器,并允许SMT参数等于第一容器的SMT参数的第二容器使用所选择的核和这些核内的线程来执行。注意,共享核的两个容器仅使用启用的线程,并且对于两个容器,禁用的线程保持禁用。
参见图4,该图描绘了根据说明性实施例的用于配置容器中的硬件多线程的示例配置的框图。图4提供了图3中的模块320的更多细节。
作为容器初始化过程的一部分,核选择模块410启用容器将在其上执行的计算机系统中的每个处理器核的硬件线程的最大数目。这种启用覆盖了任何默认或先前的线程设置或可能已经从VM继承的任何线程设置。
线程配置模块420确定哪些处理器核可用于执行正被初始化的容器。模块420从可用核中选择由容器核参数指定的核的数量。一旦初始化,容器将在所选择的核上执行。模块420将所选择的核配置成使用由SMT参数指定的每核的线程数量来执行,根据需要禁用尽可能多的线程,以获取SMT参数指定的每个内核的线程数。
可共享性模块430将所选择的核配置成根据可共享性参数来执行。如果没有指定可共享性参数,则模块430应用程序可共享或排他的默认设置。如果所选择的核被配置用于独占使用,则模块430使用所选择的、配置的核来执行容器,并且在第一容器正在执行时不允许其他容器使用该核。如果所选择的核被配置用于可共享使用,则模块430使用所选择的被配置的核来执行容器,并允许SMT参数等于第一容器的SMT参数的第二容器使用所选择的核和这些核内的线程来执行。
参见图5,该图描绘了根据说明性实施例的配置容器中的硬件多线程的示例。该示例可使用图3中的应用程序300来执行。
如所描绘的,处理器502包括核510和520。处理器502具有每核具有两个线程的架构。核510包括线程512和514。核520包括线程522和524。应用程序300使能每个处理器核的硬件线程的最大数量--这里是线程512、514、522和524。
应用程序300接收参数580,这些参数指定正被初始化的容器590独占地使用一个核,每个核两个线程。由此,应用程序300确定核510可用并选择核510。应用程序300配置核510以使用由参数580内的SMT参数指定的每个核的线程数(这里是两个)来执行。因为每个处理器核的两个硬件线程先前被启用,所以没有线程被禁用。结果,容器590使用核510上的线程512和514执行,并且没有其他容器可以共享核510。
参考图6,该图描绘了根据说明性实施例的配置容器中的硬件多线程的连续示例。处理器502、核510和520以及线程512、514、522和524与图5中的处理器502、核510和520以及线程512、514、522和524相同。
应用程序300使能每个处理器核的硬件线程的最大数目——此处,线程512、514、522和524。应用程序300接收参数680,其指定正被初始化的容器690独占地使用两个核,每个核一个线程。由此,应用程序300确定核510和520可用并选择两者。应用程序300配置核510和520以使用由参数680内的SMT参数指定的每个核的线程数(这里一个)来执行。因为先前启用了每个处理器核的两个硬件线程,所以应用程序300禁用每个核一个线程。结果,容器690使用核510上的线程512和核510上的线程522来执行。线程514和524被禁用。没有其他容器可以共享核510和520。
参见图7,该图描绘了根据说明性实施例的配置容器中的硬件多线程的继续示例。处理器502、核510和520以及线程512、514、522和524与图5中的处理器502、核510和520以及线程512、514、522和524相同。
应用程序300使能每个处理器核的硬件线程的最大数量——在此,线程512、514、522和524。应用程序300接收指定正被初始化的容器790要使用两个核(每个核一个线程)共享的参数780。由此,应用程序300确定核510和520可用并选择两者。应用程序300配置核510和520以使用由参数780内的SMT参数指定的每个核的线程数(此处,一个)来执行。因为先前启用了每个处理器核的两个硬件线程,所以应用程序300禁用每个核一个线程。结果,容器790使用核510上的线程512和核520上的线程522来执行。线程514和524被禁用。
应用程序300还接收参数785,这些参数指定正被初始化的容器795要使用共享的两个核,每个核一个线程。容器790已经被配置为使用核510上的线程512和核520上的线程522来执行,并且核510和520是可共享的。由此,应用程序300配置容器795以共享核510上的线程512和核520上的线程522。线程514和524保持被禁用并且不被共享。
参考图8,该图描绘了根据说明性实施例的配置容器中的硬件多线程的示例。该示例可使用图3中的应用程序300来执行。
如所描绘的,处理器802包括核810、820、830和840。处理器802具有每核八个线程的架构。核810包括线程811-818,核820包括线程821-828,核830包括线程831-838,并且核840包括线程841-848。应用程序300使能每个处理器核的硬件线程的最大数目-在此,为线程811-818、821-828、831-838和841-848。
应用程序300接收参数880,这些参数指定正被初始化的容器890独占地使用两个核,每个核八个线程。由此,应用程序300确定核810和820可用并且选择它们。应用程序300配置核810和820以使用由参数880内的SMT参数指定的每核的线程数(此处为八)来执行。因为每个处理器核8个硬件线程先前被启用,所以没有线程被禁用。结果,容器890使用核810上的线程811-818和核810上的线程821-828来执行,并且没有其他容器可以共享核810和820。
参考图9,该图描绘了根据说明性实施例的配置容器中的硬件多线程的继续示例。处理器802、核810、820、830和840、以及线程811-818、821-828、831-838和841-848与图5中的处理器802、核810、820、830和840、以及线程811-818、821-828、831-838和841-848相同。
应用程序300使能每个处理器核的硬件线程的最大数量-在此,为线程811-818、821-828、831-838和841-848。应用程序300接收参数980,该参数980指定正被初始化的容器990使用两个核,每个核共享四个线程。由此,应用程序300确定核810和820可用并选择两者。应用程序300配置核810和820以使用由参数980内的SMT参数指定的每个核的线程数(这里是四)来执行。因为先前启用了每处理器核八个硬件线程,所以应用程序300禁用每核四个线程。结果,容器990使用核810上的线程811-814和核820上的线程821-824执行。禁用线程815-818和825-828。
应用程序300还接收附加参数(未示出),该附加参数指定正被初始化的容器995将使用两个核,每个核共享四个线程。容器990已经被配置为使用核810上的线程811至814和核820上的线程821至824来执行,并且核810和820是可共享的。因此,应用程序300配置容器995以共享核810上的线程811-814和核820上的线程821-824。线程815-818和825-828保持禁用并且不共享。
参考图10,该图描绘了根据说明性实施例的用于配置容器中的硬件多线程的示例过程的流程图。处理1000可以在图3中的应用程序300中实现。
在框1002中,作为容器初始化过程的一部分,应用程序启用计算机系统的一组核中的每个核的硬件线程的最大数量。在框1004中,应用程序从该组核中的一组可用核中选择至少一个执行核。在框1006中,应用程序在每个所选执行核中配置要在该容器的执行期间使用的每个核的线程数量。在框1008中,应用程序使用配置的执行核来执行该容器。然后应用程序结束。
现在参见图11,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备诸如例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,所描绘的计算设备54A-N的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备通信。
现在参见图12,示出了由云计算环境50(图11)提供的一组功能抽象层。应当提前理解,所描绘的部件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供根据SLA预期未来需求的云计算资源的预安排和采购。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;事务处理95;以及基于累积弱点风险评估96的应用选择。
因此,在说明性实施例中提供了一种用于配置容器中的硬件多线程和其他相关特征、功能或操作的计算机实现的方法、系统或装置以及计算机程序产品。当关于装置的类型描述实施例或其部分时,计算机实施的方法、系统或设备、计算机程序产品或其部分被适于或配置用于与该类型装置的合适且可比较的表现一起使用。
在实施例被描述为在应用程序中实现的情况下,将软件即服务(SaaS)模型中的应用程序的递送设想在说明性实施例的范围内。在SaaS模型中,通过在云基础设施中执行应用程序来将实现实施例的应用程序的能力提供给用户。用户可通过诸如web浏览器(例如,基于web的电子邮件)或其他轻量级客户机应用程序之类的瘦客户机接口使用各种客户机设备来访问应用程序。用户不管理或控制包括网络、服务器、操作系统或云基础设施的存储的底层云基础设施。在一些情况下,用户甚至可能不管理或控制SaaS应用程序的能力。在一些其他情况下,应用程序的SaaS实现可允许有限的用户特定应用程序配置设置的可能异常。
本发明可以是在任何可能的技术细节集成度上的系统、方法、和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至对应的计算/处理设备或下载至外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
本文参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的多个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
可以将这些计算机可读程序指令提供给计算机的处理器或其他可编程数据处理装置以产生机器,从而使得经由计算机的处理器或其他可编程数据处理装置执行的这些指令创建用于实现流程图和/或框图的或多个框中所指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
这些计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在该计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。
图中的流程图和框图展示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种计算机实现方法,包括:
作为容器初始化过程的一部分,启用计算机系统的一组核中的每个处理器核(核)的硬件线程的最大数目,所述容器初始化过程配置在所述计算机系统上执行的操作系统以用于容器执行,并配置第一容器用于在所述操作系统上执行;
从该组核中的一组可用核中选择执行核;
在所述选择的执行核中配置要在所述第一容器的执行期间使用的每核的线程数量,所述每核的线程数量通过第一同时多线程(SMT)参数针对所述容器初始化过程而被指定;以及
使用所述配置的执行核执行所述第一容器,所述执行虚拟化所述操作系统。
2.根据权利要求1所述的计算机实现的方法,进一步包括:
从容器偏好设置确定所述第一SMT参数。
3.根据权利要求1所述的计算机实现的方法,其中,在所述选择的执行核中配置每个核的线程的数量包括:禁用所述选择的执行核中的线程以获得由所述第一SMT参数指定的每核的线程的数量。
4.根据权利要求1所述的计算机实现的方法,其中,第一容器核参数指定从该组可用核中选择的执行核的数量。
5.根据权利要求1所述的计算机实现的方法,进一步包括:
将所述选择的执行核配置为可共享的;以及
使用所述可共享的配置的执行核来执行第二容器,所述第二容器具有等于所述第一SMT参数的第二SMT参数。
6.根据权利要求1所述的计算机实现的方法,进一步包括:
将所述选择的执行核配置为独占的;以及
防止使用所述独占配置的执行核来执行第二容器,所述第二容器具有等于所述第一SMT参数的第二SMT参数。
7.一种用于配置容器中的硬件多线程的计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:
用于作为容器初始化过程的一部分,启用计算机系统的一组核中的每个处理器核(核)的硬件线程的最大数目的程序指令,所述容器初始化过程配置在所述计算机系统上执行的操作系统以用于容器执行,并配置第一容器用于在所述操作系统上执行;
用于从该组核中的一组可用核中选择执行核的程序指令;
用于在所述选择的执行核中配置要在所述第一容器的执行期间使用的每核的线程数量的程序指令,所述每核的线程数量通过第一同时多线程(SMT)参数针对所述容器初始化过程而被指定;以及
用于使用所述配置的执行核执行所述第一容器的程序指令,所述执行虚拟化所述操作系统。
8.根据权利要求7所述的计算机程序产品,进一步包括:
用于从容器偏好设置确定所述第一SMT参数的程序指令。
9.根据权利要求7所述的计算机程序产品,其中用于在所述选择的执行核中配置每个核的线程的数量的程序指令包括用于禁用所述选择的执行核中的线程以获得由所述第一SMT参数指定的每核的线程的数量的程序指令。
10.根据权利要求7所述的计算机程序产品,其中,第一容器核参数指定从该组可用核中选择的执行核的数量。
11.根据权利要求7所述的计算机程序产品,进一步包括:
用于将所述选择的执行核配置为可共享的程序指令;以及
用于使用所述可共享的配置的执行核来执行第二容器的程序指令,所述第二容器具有等于所述第一SMT参数的第二SMT参数。
12.根据权利要求7所述的计算机程序产品,进一步包括:
用于将所述选择的执行核配置为独占的程序指令;以及
用于防止使用所述独占配置的执行核来执行第二容器的程序指令,所述第二容器具有等于所述第一SMT参数的第二SMT参数。
13.根据权利要求7所述的计算机程序产品,其中,所述存储的程序指令被存储在本地数据处理系统的所述一个或多个存储介质中的至少一个中,并且其中,所存储的程序指令通过网络从远程数据处理系统传输。
14.根据权利要求7所述的计算机程序产品,其中,所存储的程序指令被存储在服务器数据处理系统的所述一个或多个存储介质中的至少一个中,并且其中,所存储的程序指令通过网络被下载到远程数据处理系统,以在与所述远程数据处理系统相关联的计算机可读存储设备中使用。
15.根据权利要求7所述的计算机程序产品,其中,所述计算机程序产品作为云环境中的服务提供。
16.一种计算机系统,包括一个或多个处理器、一个或多个计算机可读存储器和一个或多个计算机可读存储设备,以及存储在所述一个或多个存储设备中的至少一个上的用于由所述一个或多个处理器中的至少一个经由所述一个或多个存储器中的至少一个执行的程序指令,所存储的程序指令包括:
用于作为容器初始化过程的一部分,启用计算机系统的一组核中的每个处理器核(核)的硬件线程的最大数目的程序指令,所述容器初始化过程配置在所述计算机系统上执行的操作系统以用于容器执行,并配置第一容器用于在所述操作系统上执行;
用于从该组核中的一组可用核中选择执行核的程序指令;
用于在所述选择的执行核中配置要在所述第一容器的执行期间使用的每核的线程数量的程序指令,所述每核的线程数量通过第一同时多线程(SMT)参数针对所述容器初始化过程而被指定;以及
用于使用所述配置的执行核执行所述第一容器的程序指令,所述执行虚拟化所述操作系统。
17.根据权利要求16所述的计算机系统,进一步包括:
用于从容器偏好设置确定所述第一SMT参数的程序指令。
18.如权利要求16所述的计算机系统,其中用于在所述选择的执行核中配置每个核的线程的数量的程序指令包括用于禁用所述选择的执行核中的线程以获得由所述第一SMT参数指定的每核的线程的数量的程序指令。
19.根据权利要求16所述的计算机系统,其中,第一容器核参数指定从该组可用核中选择的执行核的数量。
20.根据权利要求16所述的计算机系统,进一步包括:
用于将所述选择的执行核配置为可共享的程序指令;以及
用于使用所述可共享的配置的执行核来执行第二容器的程序指令,所述第二容器具有等于所述第一SMT参数的第二SMT参数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/077,369 US11567796B2 (en) | 2020-10-22 | 2020-10-22 | Configuring hardware multithreading in containers |
US17/077,369 | 2020-10-22 | ||
PCT/CN2021/120950 WO2022083419A1 (en) | 2020-10-22 | 2021-09-27 | Configuring hardware multithreading in containers |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116457755A true CN116457755A (zh) | 2023-07-18 |
Family
ID=81258358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180069223.1A Pending CN116457755A (zh) | 2020-10-22 | 2021-09-27 | 配置容器中的硬件多线程 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11567796B2 (zh) |
JP (1) | JP2023545786A (zh) |
CN (1) | CN116457755A (zh) |
DE (1) | DE112021004619T5 (zh) |
GB (1) | GB2615043A (zh) |
WO (1) | WO2022083419A1 (zh) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370331B2 (en) * | 2005-09-08 | 2008-05-06 | International Business Machines Corporation | Time slicing in a shared partition |
US7584332B2 (en) | 2006-02-17 | 2009-09-01 | University Of Notre Dame Du Lac | Computer systems with lightweight multi-threaded architectures |
US8484648B2 (en) * | 2009-10-19 | 2013-07-09 | International Business Machines Corporation | Hardware multi-threading co-scheduling for parallel processing systems |
US20140208072A1 (en) | 2013-01-18 | 2014-07-24 | Nec Laboratories America, Inc. | User-level manager to handle multi-processing on many-core coprocessor-based systems |
US9417927B2 (en) * | 2014-04-01 | 2016-08-16 | International Business Machines Corporation | Runtime capacity planning in a simultaneous multithreading (SMT) environment |
US9692788B2 (en) * | 2014-05-29 | 2017-06-27 | Blackberry Limited | Method and system for domain creation and bootstrapping |
US9304805B2 (en) * | 2014-06-06 | 2016-04-05 | Interinational Business Machines Corporation | Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors |
CN104899068A (zh) | 2015-06-30 | 2015-09-09 | 北京奇虎科技有限公司 | 使用容器进行多进程启动的方法及装置 |
US10585845B2 (en) | 2015-11-02 | 2020-03-10 | Futurewei Technologies, Inc. | Systems and methods for creating and using a data structure for parallel programming |
CN107463402B (zh) | 2017-07-31 | 2018-09-14 | 腾讯科技(深圳)有限公司 | 虚拟操作系统的运行方法和装置 |
US10545786B2 (en) | 2017-09-22 | 2020-01-28 | International Business Machines Corporation | Accounting and enforcing non-process execution by container-based software transmitting data over a network |
US20190050270A1 (en) * | 2018-06-13 | 2019-02-14 | Intel Corporation | Simultaneous multithreading with context associations |
-
2020
- 2020-10-22 US US17/077,369 patent/US11567796B2/en active Active
-
2021
- 2021-09-27 JP JP2023521708A patent/JP2023545786A/ja active Pending
- 2021-09-27 GB GB2306515.4A patent/GB2615043A/en active Pending
- 2021-09-27 DE DE112021004619.5T patent/DE112021004619T5/de active Pending
- 2021-09-27 WO PCT/CN2021/120950 patent/WO2022083419A1/en active Application Filing
- 2021-09-27 CN CN202180069223.1A patent/CN116457755A/zh active Pending
-
2022
- 2022-12-21 US US18/085,725 patent/US11983561B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
GB202306515D0 (en) | 2023-06-14 |
US11567796B2 (en) | 2023-01-31 |
JP2023545786A (ja) | 2023-10-31 |
GB2615043A (en) | 2023-07-26 |
WO2022083419A1 (en) | 2022-04-28 |
US20230118883A1 (en) | 2023-04-20 |
US20220129305A1 (en) | 2022-04-28 |
DE112021004619T5 (de) | 2023-09-07 |
US11983561B2 (en) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11204793B2 (en) | Determining an optimal computing environment for running an image | |
US10514960B2 (en) | Iterative rebalancing of virtual resources among VMs to allocate a second resource capacity by migrating to servers based on resource allocations and priorities of VMs | |
US11023267B2 (en) | Composite virtual machine template for virtualized computing environment | |
US10324754B2 (en) | Managing virtual machine patterns | |
US8825863B2 (en) | Virtual machine placement within a server farm | |
US9582319B2 (en) | Migrating virtual machines across network separated data centers | |
US9513971B1 (en) | Managing provisioning for cloud resource allocations | |
US20150106610A1 (en) | Pluggable cloud enablement boot device and method that determines hardware resources via firmware | |
US11546431B2 (en) | Efficient and extensive function groups with multi-instance function support for cloud based processing | |
CN115964120A (zh) | 用于工作负载执行的动态缩放 | |
US10613887B2 (en) | Ordering optimization of host machines in a computing environment based on policies | |
WO2022078060A1 (en) | Tag-driven scheduling of computing resources for function execution | |
WO2022083419A1 (en) | Configuring hardware multithreading in containers | |
WO2022078323A1 (en) | Parallel task initialization on dynamic compute resources | |
US11960917B2 (en) | Live migration and redundancy for virtualized storage | |
US11765236B2 (en) | Efficient and extensive function groups with multi-instance function support for cloud based processing | |
US20230015103A1 (en) | Live updating a virtual machine virtualizing physical resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |