JP2023545786A - コンテナにおけるハードウェア・マルチスレッド化の構成 - Google Patents
コンテナにおけるハードウェア・マルチスレッド化の構成 Download PDFInfo
- Publication number
- JP2023545786A JP2023545786A JP2023521708A JP2023521708A JP2023545786A JP 2023545786 A JP2023545786 A JP 2023545786A JP 2023521708 A JP2023521708 A JP 2023521708A JP 2023521708 A JP2023521708 A JP 2023521708A JP 2023545786 A JP2023545786 A JP 2023545786A
- Authority
- JP
- Japan
- Prior art keywords
- container
- core
- computer
- execution
- cores
- 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
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000012545 processing Methods 0.000 claims description 84
- 238000003860 storage Methods 0.000 claims description 47
- 230000015654 memory Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101150107557 SMT-1 gene Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100427545 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ULP2 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/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
コンピュータ・システム上で実行されるオペレーティング・システムをコンテナ実行のために構成し、第1のコンテナをそのオペレーティング・システム上での実行のために構成するコンテナ初期設定手順の一部として、コンピュータ・システムのコアのセット内の1プロセッサ・コア当たりの最大数のハードウェア・スレッドが有効化される。コアのセットのうちの利用可能なコアのセットから、実行コアが選択される。選択された実行コアにおいて、第1のコンテナの実行時に使用される1コア当たりのスレッド数が構成され、1コア当たりのスレッド数は、第1の同時マルチスレッド化(SMT)パラメータによってコンテナ初期設定手順のために指定される。構成された実行コアを使用して、第1のコンテナが実行され、その実行がオペレーティング・システムを仮想化する。
Description
本発明は、一般には、ハードウェア・マルチスレッド化を構成するための方法、システム、およびコンピュータ・プログラム製品に関する。より詳細には、本発明は、コンテナにおけるハードウェア・マルチスレッド化を構成するための方法、システムおよびコンピュータ・プログラム製品に関する。
仮想マシン(VM)は、物理コンピュータ・システムを仮想化またはエミュレートする。VMは、リソース仮想化を行い、VMを互いに分離するハイパーバイザによって管理される。各仮想マシンは、ゲスト・オペレーティング・システム(OS)と、OSが稼働するために必要なハードウェアの仮想コピーと、ゲストOS上で稼働するライブラリおよび依存関係が関連付けられた少なくとも1つのアプリケーションとを含む。
コンテナは、VMに類似しているが、コンテナは物理コンピュータ・システムを仮想化するのではなく、オペレーティング・システムを仮想化する。オペレーティング・システムは、VM上で、または物理コンピュータ上で稼働することができる。同じマシン上で複数のコンテナが稼働することができ、それぞれがユーザ空間において別個のプロセッサとして稼働する他のコンテナとOSカーネルを共用することができる。各個別コンテナは、アプリケーションとそのライブラリおよび依存関係のみを含む。
コンテナは、それ自体のOSを含まないため、VMよりも小さく、より迅速に展開される。さらに、コンテナ間の通信はVM間の通信よりもオーバーヘッドを必要としないため、コンテナは、完全なアプリケーションではなくアプリケーション・コンポーネントが展開され、スケーリングされる、マイクロサービス・アーキテクチャも可能にする。その結果、アプリケーション内のアプリケーション・コンポーネントは互いに分離可能であり、単一のコンポーネントに負荷がかかっている場合、アプリケーション全体ではなくコンポーネントの追加のインスタンスを展開することができる。
コンテナの構成と動作とを左右する1つまたは複数の設定値を指定するために使用可能ないくつかの異なる方法がある。コンテナの一実装形態は、コンテナ設定値を指定するために使用されるコマンド・ライン・インターフェース(CLI)を含む。別のコンテナ実装形態は、コンテナ設定値を指定するためにオーケストレーション・フレームワークなどの別のプログラムによって使用されるアプリケーション・プログラム・インターフェース(API)を含む。また、コンテナ設定値は、コンテナ・イメージ、アプリケーション・コンポーネント実行ファイルを含むファイルの自己完結型の静的セット、システム・ライブラリ、システム・ツール、および、コンテナとしてイメージを実行するために必要なあらゆるものを含む、コンテナをカプセル化するプラットフォーム設定値内で指定可能である。一部のコンテナ・イメージは、特定のプラットフォームまたはアーキテクチャに適用される。他のコンテナ・イメージは、マルチプラットフォームまたはマルチアーキテクチャ機能を備え、サポートされる各プラットフォームまたはアーキテクチャに固有の設定を含むことができる。コンテナ設定値およびプリファレンスは、展開のために1つまたは複数のコンテナ・イメージを記憶するコンテナ・レジストリ内でも指定することができる。
コンピュータ・システム管理において、オーケストレーションは、コンピュータ・システムおよびソフトウェアの自動構成、連係調整および管理である。オーケストレーションは典型的には、複数の異種システム間の多くのステップを含むプロセスまたはワークフローを自動化する。オーケストレーション・フレームワークは、オーケストレーションを実行するソフトウェア・ツールである。オーケストレーション・フレームワークの1つの機能は、コンテナを構成し、提供することであるが、コンテナは、オーケストレーション・フレームワークを使用しなくても構成および提供可能である。Kubernetes(登録商標)は、オーケストレーション・フレームワークの非限定的な一例である。他のオーケストレーション・フレームワークも現在利用可能である。(Kubernetesは、米国およびその他の国におけるLinux Foundationの登録商標である。)
ハードウェア・マルチスレッド化は、コンピュータ・プロセッサ、またはマルチコア・プロセッサ内のシングル・プロセッサ・コアが、アプリケーションまたはアプリケーション・コンポーネントのスレッドを並行実行することができる能力である。
例示の実施形態は、方法、システムおよびコンピュータ・プログラム製品を提供する。一実施形態は、コンテナ初期化手順の一部として、コンピュータ・システムのプロセッサ・コア(コア)のセットのうちの1コア当たりの最大数のハードウェア・スレッドを有効化する方法であって、コンテナ初期化手順が、コンピュータ・システム上で実行されるオペレーティング・システムをコンテナ実行のために構成し、第1のコンテナをオペレーティング・システム上での実行のために構成する方法を含む。一実施形態は、コアのセットのうちの利用可能なコアのセットから実行コアを選択する。一実施形態は、選択された実行コアにおいて、第1のコンテナの実行時に使用される1コア当たりのスレッド数を構成し、1コア当たりのスレッド数はコンテナ初期化手順のために第1の同時マルチスレッド化(Simultaneous multithreading(SMT))パラメータによって指定される。一実施形態は、構成された実行コアを使用して第1のコンテナを実行し、実行はオペレーティング・システムを仮想化する。
一実施形態は、コンピュータ使用可能プログラム製品を含む。コンピュータ使用可能プログラム製品は、1つまたは複数のコンピュータ可読ストレージ・デバイスと、1つまたは複数のストレージ・デバイスのうちの少なくとも1つのストレージ・デバイスに記憶されたプログラム命令とを含む。
一実施形態は、コンピュータ・システムを含む。コンピュータ・システムは、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、1つまたは複数のメモリのうちの少なくとも1つのメモリを介した1つまたは複数のプロセッサのうちの少なくとも1つのプロセッサによる実行のために1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶されたプログラム命令とを含む。
本発明の特徴と見なされる特定の新規な特徴は、添付の特許請求の範囲に記載されている。しかし、本発明自体と、本発明の好ましい使用形態、さらなる目的および利点は、例示の実施形態の以下の詳細な説明を添付図面とともに読んで参照すれば最もよくわかるであろう。
例示の実施形態は、マルチスレッド化を使用した実行がすべての処理ワークロードにとって有益であるわけではないことを認識している。また、異なる処理ワークロードには、異なる数のスレッドを使用する実行が有益である。一部のワークロードは、レイテンシの影響を受けやすく、トランザクションの平均または最悪の場合の応答時間の要件が厳しい。例えば、ボイス・オーバ-IP(VoIP)およびストリーミング・ビデオなどのワークロードは、リアルタイムでデータを処理するため、レイテンシの影響を受けやすい。複数のスレッドがキャッシュ、システム・メモリおよびネットワーク・リソースなどの同じリソースを取得するために競合している場合、リソース取得のための増大した待ち時間がレイテンシも増大させる。その結果、レイテンシの影響を受けやすいワークロードには、追加のスレッドが利用可能な場合であっても1つまたは2つのスレッドのみを使用して実行することが有益であることが多い。他のワークロード(例えばデータベース・ワークロード)は、可能な限り多くのデータを処理するが、入力/出力またはその他のブロック動作を待つ間の処理時間を放棄する場合が多く、したがって可能な限り多くのスレッドによる実行が有益な場合が多い。処理ワークロードがVM内のアプリケーションとして実装される場合、アプリケーションはゲストOS内で構成されたスレッド使用設定値を有し、それによって特定のアプリケーションの要件を満たすためにスレッド使用の調整を可能にする。
例示の実施形態は、VMとは異なり、コンテナは仮想化されるオペレーティング・システムからそのスレッド使用構成を継承することも認識している。したがって、VM内において、またはVMのない物理サーバ上で実行されるすべてのコンテナが、同じスレッド使用設定値を有する。しかし、すべてのコンテナが同じスレッド使用設定値を使用する場合、その設定値は特定のワークロードの要件にとって適切なパフォーマンスをもたらす可能性が低い。例えば、アプリケーションが2つのコンポーネントを含む場合があり、1つはデータベース動作(したがってスループットを最大限にするために可能な限り多くの並列化による実行を必要とする)を行い、もう1つがリアルタイム・ビデオ(したがってレイテンシを最小限にするために1つまたは2つのスレッドのみを使用して実行する)を処理する場合がある。スレッド使用を可能な限り多くのスレッドに設定すると、画像処理コンテナのレイテンシが大きくなり過ぎる可能性があり、単一スレッドの実行はデータベース動作コンテナを無用に低速にし、妥協設定値は両方のコンテナに受容不能なパフォーマンスを生じさせる可能性がある。したがって、例示の実施形態は、コンテナ実行で使用されるスレッドの数をコンテナごとに調整する必要があることを認識している。
例示の実施形態は、現在利用可能なツールまたは解決策が、上記の必要に対処しないか、または上記の必要に十分な解決策を与えないことを認識している。本発明を説明するために使用される例示の実施形態は、一般に、コンテナにおけるハードウェア・マルチスレッド化を構成することに関する上述の問題およびその他の問題に対処し、解決する。
一実施形態は、ソフトウェア・アプリケーションとして実装可能である。一実施形態を実装するアプリケーションは、既存のコンテナ構成システムの修正版として、または既存のコンテナ構成システムとともに動作する別個のアプリケーションとして、またはスタンドアロン・アプリケーション、あるいはこれらの何らかの組合せとして構成可能である。
具体的には、いくつかの例示の実施形態は、コンテナのホストとしてのオペレーティング・システム初期設定およびコンテナ初期設定手順の一部として、1プロセッサ・コア当たり最大数のハードウェア・スレッドを有効化し、1つまたは複数の実行コアを選択し、実行コア内の1コア当たりのスレッド数を構成し、構成された実行コアを初期設定されるコンテナの実行のために使用する方法を提供する。
コンテナ初期設定手順は、オペレーティング・システムをコンテナを実行するように準備し、コンテナをオペレーティング・システムを仮想化する実行のために準備する。コンテナ初期設定手順の一部として、一実施形態はコンテナ実行パラメータのセットを受け取る。コンテナ・イメージ内で指定されるコンテナ実行パラメータは、コンテナで実行することが意図されているアプリケーション・コンポーネントに対するアプリケーション開発者の理解と、その特定のアプリケーション・コンポーネントの最適実行設定値とを表す。
一実施形態では、コンテナ実行パラメータのセットは、1コア当たりどれだけの数のスレッドがコンテナの実行に使用されるかを指定する同時マルチスレッド化(SMT)パラメータを含む。例えば、SMT1で実行されるコンテナは、各コアにおいて有効化された1つのスレッドのみを有するコアを使用する。別の例として、SMT8で実行されるコンテナは、各コアにおいて有効化された8つのスレッドを有するコアを使用する。別の実施形態では、コンテナ実行パラメータのセットは、初期設定されるコンテナを実行するために使用されるコアの数を指定するコンテナ・コア・パラメータを含む。別の実施形態では、コンテナ実行パラメータのセットは、初期設定されるコンテナの実行に使用される合計スレッド数を指定するパラメータを含み、この実施形態は、SMTパラメータと合計スレッド数とからコンテナ・コア・パラメータを決定する。別の実施形態では、コンテナ実行パラメータのセットは、コンテナを実行するために使用されるスレッドが別のコンテナと共用可能であるか否かを指定する共用可能性パラメータを含む。別の実施形態では、コンテナ実行パラメータのセットは、その他のパラメータまたは追加のパラメータを含む。
実施形態において、コンテナ実行パラメータはCPIまたはAPIを介して、またはコンテナ・イメージに関連付けられたメタデータ内で指定される。特定のプラットフォームまたはアーキテクチャに適用されるコンテナ・イメージは、そのプラットフォームまたはアーキテクチャにとって適切なコンテナ実行パラメータのセットを含む。マルチプラットフォームまたはマルチアーキテクチャ機能を有するコンテナ・イメージは、多くの場合、各セットが異なるサポートされるプラットフォームまたはアーキテクチャ上での実行のためにコンテナを構成する、コンテナ実行パラメータの複数のセットを含む。別の実施形態は、コンテナ・レジストリまたは別の供給源からプリファレンスのセットを受け取り、対応するコンテナ実行パラメータのセットを決定する。一実施形態では、プリファレンスのセットは、実際には要件のセット、すなわち、コンテナが実装する必要がある設定値である。要件のセットの非限定的な一例は、1コア当たりの特定のスレッド数を指定せずに、コンテナが1コア当たりの最大可能数のスレッドで実行されることである。異なるアーキテクチャが異なる1コア当たりスレッド数を有することができるため、要件をこのように構造化することで、異なるプロセッサ・アーキテクチャごとに1コア当たりの特定のスレッド数を指定する必要がなくなる。別の実施形態では、プリファレンスのセットは、要件のハード・セットではなく、コンテナが実装のために最善を尽くす必要がある設定値を含む。プリファレンスのセットの非限定的な一例は、可能な場合にはコンテナが1コア当たり1つの排他的スレッドにより実行されることであるが、排他性が利用不可能な場合には1コア当たり1つの共用可能スレッドが受容可能なことである。一実施形態では、決定されたコンテナ実行パラメータのセットが、コンテナ・イメージにおいて指定されているパラメータを上書きする。
コンテナ初期設定手順の一部として、一実施形態は、コンテナが実行されるコンピュータ・システムにおける1プロセッサ・コア当たりの最大数のハードウェア・スレッドを有効にすることによって、オペレーティング・システムをコンテナとともに使用するように準備する。この有効化は、デフォルトのスレッド設定、前のスレッド設定または継承されたスレッド設定を上書きする。一実施形態は、任意の現在利用可能な技術を使用してこの有効化を行う。例えば、有効化を行うために、IBM Powerシステム上でAIXオペレーティング・システムにおけるSMTCTLコマンドおよびLinux(登録商標)オペレーティング・システムにおけるppc64_cpuコマンドが使用されてもよい。(AIXおよびIBMは米国およびその他の国におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。Linuxは米国およびその他の国におけるLinus Torvaldsの登録商標である。)
一実施形態は、任意の現在利用可能な技術を使用して、初期設定されるコンテナを実行するためにどのプロセッサ・コアが利用可能であるかを決定する。例えば、RedHat Linux(登録商標)オペレーティング・システムによって提供されるvirsh vcpupinコマンドは、コア利用可能性データを提供する。(RedHatは、米国およびその他の国におけるRed Hat社の登録商標である。)一実施形態は、利用可能コアからコンテナ・コア・パラメータによって指定されたコア数を選択する。コンテナは、初期設定されると、選択されたコア上で実行されることになる。
一実施形態は、SMTパラメータによって指定された1コア当たりのスレッド数を使用して実行するように、選択されたコアを構成する。1プロセッサ・コア当たりの最大数のハードウェア・スレッドが前に有効化されているため、一実施形態の構成を行うと、SMTパラメータによって指定された1コア当たりのスレッド数を得るために必要なだけの数のスレッドが無効化される。例えば、1コア当たり8スレッドのプロセッサを考えてみる。コンテナをSMT8で実行するために、8スレッドすべてがすでに有効化されており、したがって、一実施形態は使用する各コアにおけるいずれのスレッドも無効化しない。コンテナをSMT4で実行するために、一実施形態は使用される各コアにおける4つのスレッドを無効化する。コンテナをSMT1で実行するために、一実施形態は使用される各コアにおける7つのスレッドを無効化する。
一実施形態は、選択されたコアを、共用可能性パラメータに従って実行するように構成する。共用可能性パラメータが指定されていない場合、一実施形態は、共用可能または排他的のいずれかのデフォルト設定値を適用する。選択されたコアが排他的使用のために構成されている場合、一実施形態は、選択された構成されたコアを使用してコンテナを実行し、この第1のコンテナが実行されている間、他のコンテナにそれらのコアを使用させない。選択されたコアが共用可能使用のために構成されている場合、一実施形態は、選択された構成されたコアを使用してコンテナを実行する。この実施形態は、第1のコンテナのSMTパラメータと等しいSMTパラメータを有する第2のコンテナが、選択されたコアとそれらのコア内のスレッドとを使用して実行されることも可能にする。コアを共用する両方のコンテナは、有効化されたスレッドのみを使用し、無効化されたスレッドは両方のコンテナについて無効化されたままであることに留意されたい。
本明細書に記載のコンテナにおけるハードウェア・マルチスレッド化を構成する方式は、コンテナ構成および実行に関連する努力傾注技術分野において現在利用可能な方法では利用することができない。本明細書に記載の一実施形態の方法は、デバイスまたはデータ処理システムで実行するように実装されると、コンテナ初期設定手順の一部として、1プロセッサ・コア当たりの最大数のハードウェア・スレッドを有効化することと、1つまたは複数の実行コアを選択することと、実行コアにおける1コア当たりのスレッド数を構成することと、初期設定されるコンテナを実行するように構成された実行コアを使用することとにおける、そのデバイスまたはデータ処理システムの機能の実質的進歩を含む。
例示の実施形態について、一例としてのみ、特定の種類のプロセッサ、コア、スレッド、コンテナ、パラメータ、プリファレンス、調整、デバイス、データ処理システム、環境、コンポーネントおよびアプリケーションに関連して説明している。上記およびその他の類似の人工物の特定の具現化は、本発明に対する限定を意図していない。例示の実施形態の範囲内で、上記およびその他の類似の人工物の任意の適切な具現化を選択することができる。
また、例示の実施形態は、任意の種類のデータ、データ・ソース、またはデータ・ネットワークを介したデータ・ソースへのアクセスに関して実装可能である。任意の種類のデータ・ストレージ・デバイスが、本発明の範囲内で、データ処理システムにおいてローカルで、またはデータ・ネットワークを介して本発明の実施形態にデータを提供することができる。実施形態についてモバイル・デバイスを使って説明している場合、そのモバイル・デバイスとともに使用するのに適した任意の種類のデータ・ストレージ・デバイスが、例示の実施形態の範囲内で、モバイル・デバイスにおいてローカルで、またはデータ・ネットワークを介してそのような実施形態にデータを提供することができる。
例示の実施形態については、特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、図式およびツールを例としてのみ使用して説明しており、例示の実施形態に対する限定ではない。また、例示の実施形態について、場合によっては、説明がわかりやすいように一例としてのみ特定のソフトウェア、ツールおよびデータ処理環境を使用して説明している。例示の実施形態は、他の同等または類似した目的の構造体、システム、アプリケーションまたはアーキテクチャとともに使用可能である。例えば、他の同等のモバイル・デバイス、そのための構造体、システム、アプリケーションまたはアーキテクチャが、本発明の範囲内で本発明のそのような実施形態とともに使用されてもよい。例示の一実施形態は、ハードウェア、ソフトウェアまたはこれらの組合せで実装可能である。
本開示における実施例は、説明をわかりやすくするためにのみ使用されており、例示の実施形態に対する限定ではない。本開示から、追加のデータ、動作、アクション、タスク、活動および操作が想到可能であり、例示の実施形態の範囲内で企図される。
本明細書で列挙されているいずれの利点も、例に過ぎず、例示の実施形態に対する限定は意図されていない。特定の例示の実施形態によって、追加の利点または異なる利点も実現可能である。また、特定の例示の一実施形態が、上記で列挙されている利点の一部または全部を有する場合があり、またはいずれも有しない場合もある。
本開示は、クラウド・コンピューティング環境についての詳細な説明を含むが、本明細書に記載の教示の実装はクラウド・コンピューティング環境には限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているかまたは今後開発される任意の他の種類のコンピューティング環境とともに実装可能である。
クラウド・コンピューティングは、最小限の管理労力またはサービス・プロバイダとの相互連絡で迅速にプロビジョニングすることができ、解放することができる、構成可能コンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとを含み得る。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの間で人間の介在を必要とせずに一方的に、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能をプロビジョニングすることができる。
広いネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を介してアクセスする。
リソース・プール:マルチテナント・モデルを使用して複数の消費者に対応するために、プロバイダのコンピューティング・リソースがプールされ、需要に応じて、異なる物理および仮想リソースが動的に割り当てられ、再割り当てされる。消費者は一般に、提供されるリソースの厳密な場所について管理することができず知識もないが、より高い抽象レベルの場所(例えば、国、州、またはデータセンター)を指定することが可能な場合があるという点で、位置独立感がある。
迅速な伸縮性:迅速かつ伸縮性をもって、いくつかの場合では自動的に機能をプロビジョニングして、迅速にスケールアウトすることができ、また、迅速に機能を解放して迅速にスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な機能はしばしば無限であるように見え、いつでも好きなだけ購入することができる。
従量制サービス:クラウド・システムが、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に応じて適切な何らかの抽象化レベルの計量機能を利用することによって、リソース利用を自動的に制御し、最適化する。リソース使用量を監視、制御および報告することができ、利用されたサービスの透明性をプロバイダと消費者の両方に与えることができる。
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(Software as a Service(SaaS)):消費者に提供される機能は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えばウェブ・ベースのEメール)を介して様々なクライアント・デバイスからアクセス可能である。消費者は、限られたユーザ固有アプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能まで含めて、基礎にあるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(Platform as a Service(PaaS)):消費者に提供される機能は、クラウド・インフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成または取得アプリケーションを展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service(IaaS)):消費者に提供される機能は、処理、ストレージ、ネットワークおよびその他の基本的コンピューティング・リソースをプロビジョニングすることであり、その際、消費者は、オペレーティング・システムとアプリケーションとを含み得る任意のソフトウェアを展開し、実行することができる。消費者は、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システムと、ストレージと、展開されたアプリケーションとを制御することができ、場合によっては選択されたネットワーク・コンポーネント(例えばホスト・ファイアウォール)の限定的な制御を行うことができる。
展開モデルは以下の通りである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織または第三者によって管理可能であり、オンプレミスまたはオフプレミスに存在可能である。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。組織または第三者が管理することができ、オンプレミスまたはオフプレミスに存在可能である。
パブリック・クラウド:このクラウド・インフラストラクチャは、公衆または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、独自の実体のままであるが、データおよびアプリケーション可搬性を可能にする標準化技術または専有技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の複合体である。
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
図面、特に図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は、1つまたは複数のプロセッサを含んでもよく、1つまたは複数の異種プロセッサ・システムを使用して実装されてもよい。処理ユニット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は、例えば、ノートブック・コンピュータ用のEthernet(登録商標)アダプタ、アドイン・カード、およびPCカードを含むことができる。PCIはカード・バス・コントローラを使用し、PCIeは使用しない。ROM224は、例えばフラッシュ・バイナリ入力/出力システム(BIOS)であってもよい。ハード・ディスク・ドライブ226およびCD-ROM230は、例えばインテグレーテッド・ドライブ・エレクトロニクス(IDE)、シリアル・アドバンスド・テクノロジー・アタッチメント(SATA)インターフェース、またはエクスターナルSATA(eSATA)およびマイクロSATA(mSATA)などの変形版を使用してもよい。スーパーI/O(SIO)デバイス236が、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合されてもよい。
メイン・メモリ208、ROM224またはフラッシュ・メモリ(図示せず)などのメモリが、コンピュータ使用可能ストレージ・デバイスのいくつかの例である。ハード・ディスク・ドライブまたはソリッド・ステート・ドライブ226、CD-ROM230およびその他の同様に使用可能デバイスが、コンピュータ使用可能記憶媒体を含むコンピュータ使用可能ストレージ・デバイスのいくつかの例である。
処理ユニット206上でオペレーティング・システムが稼働する。オペレーティング・システムは、図2のデータ処理システム200内の様々なコンポーネントを連係させ、制御を与える。オペレーティング・システムは、サーバ・システム、パーソナル・コンピュータおよびモバイル・デバイスを含むがこれらには限定されない任意の種類のコンピューティング・プラットフォーム用の市販オペレーティング・システムであってよい。オブジェクト指向またはその他の種類のプログラミング・システムが、オペレーティング・システムとともに動作可能であり、データ処理システム200上で実行されているプログラムまたはアプリケーションからオペレーティング・システムに呼び出しを与えることができる。
オペレーティング・システム、オブジェクト指向プログラミング・システム、および図1のアプリケーション105などのアプリケーションまたはプログラムのための命令が、ハード・ディスク・ドライブ226上のコード226Aの形態などでストレージ・デバイス上に配置され、処理ユニット206による実行のためにメイン・メモリ208などの1つまたは複数のメモリのうちの少なくとも1つのメモリにロード可能である。例示の実施形態のプロセスは、例えばメイン・メモリ208、読み出し専用メモリ224などのメモリ、または1つまたは複数の周辺デバイスに配置可能なコンピュータ実装命令を使用して、処理ユニット206によって実行可能である。
また、一事例では、コード226Aは、類似のコード201Cがストレージ・デバイス201Dに記憶されているリモート・システム201Bから、ネットワーク201Aを介してダウンロードされてもよい。別の事例では、コード226Aは、ダウンロードされたコード201Cがストレージ・デバイス201Dに記憶されているリモート・システム201Bに、ネットワーク201Aを介してダウンロードされてもよい。
図1および図2のハードウェアは、実装形態によって異なり得る。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどの、他の内部ハードウェアまたは周辺デバイスも、図1および図2に示すハードウェアに加えて、または代えて使用することができる。さらに、例示の実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
いくつかの例示の実施例では、データ処理システム200は、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を記憶するための不揮発性メモリを提供するようにフラッシュ・メモリを備えて一般的に構成されたパーソナル・デジタル・アシスタント(PDA)であってもよい。バス・システムは、システム・バス、I/OバスおよびPCIバスなどの1つまたは複数のバスを含み得る。当然ながら、バス・システムは、ファブリックまたはアーキテクチャに接続された異なるコンポーネントまたはデバイス間のデータの転送を実現する任意の種類の通信ファブリックまたはアーキテクチャを使用して実装可能である。
通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送受信するために使用される1つまたは複数のデバイスを含み得る。メモリは、例えば、メイン・メモリ208、またはノース・ブリッジおよびメモリ・コントローラ・ハブ202にあるキャッシュなどのキャッシュであってもよい。処理ユニットは、1つまたは複数のプロセッサまたは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の一実装形態では、コンテナ実行パラメータのセットは、コンテナを実行するために1コア当たりいくつのスレッドを使用するかを指定するSMTパラメータを含む。モジュール310の別の実装形態では、コンテナ実行パラメータのセットは、初期設定されるコンテナを実行するために使用されるコア数を指定するコンテナ・コア・パラメータを含む。モジュール310の別の実装形態では、コンテナ実行パラメータのセットは、初期設定されるコンテナを実行するために使用される合計スレッド数を指定するパラメータを含み、モジュール310は、SMTパラメータと合計スレッド数からコンテナ・コア・パラメータを決定する。モジュール310の別の実装形態では、コンテナ実行パラメータのセットは、コンテナを実行するために使用されるスレッドが別のコンテナと共用可能であるか否かを指定する共用可能性パラメータを含む。モジュール310の別の実装形態では、コンテナ実行パラメータのセットは、他のパラメータまたは追加のパラメータを含む。
モジュール310の実装形態において、コンテナ実行パラメータは、CPIまたはAPIを介して、またはコンテナ・イメージ内で指定される。モジュール310の別の実装形態は、コンテナ・レジストリまたは別の供給源からプリファレンスのセットを受け取り、対応するコンテナ実行パラメータのセットを決定する。モジュール310の一実装形態では、プリファレンスのセットは、実際には要件のセット、すなわちコンテナが実装する必要がある設定値である。モジュール310の別の実装形態では、プリファレンスのセットは要件のハード・セットではなく、コンテナが実装のために最大限を尽くす必要がある設定値を含む。モジュール310の一実装形態では、決定されたコンテナ実行パラメータのセットは、コンテナ・イメージで指定されているパラメータを上書きする。
コンテナ初期設定手順の一部として、一実施形態は、コンテナを実行するコンピュータ・システムにおける1プロセッサ・コア当たりの最大数のハードウェア・スレッドを有効化することによって、オペレーティング・システムをコンテナとともに使用するために準備する。この有効化は、デフォルトまたは前のスレッド設定値、あるいはVMから継承されている場合があるスレッド設定値を上書きする。
モジュール320は、初期設定されるコンテナを実行するためにどのプロセッサ・コアが利用可能であるかを決定する。モジュール320は、利用可能なコアから、コンテナ・コア・パラメータによって指定されたコア数を選択する。コンテナは、初期設定されると、選択されたコア上で実行されることになる。
モジュール320は、選択されたコアをSMTパラメータによって指定された1コア当たりのスレッド数を使用して実行するように構成する。1プロセッサ・コア当たりの最大数のハードウェア・スレッドが前に有効化されているため、この構成を行うために、モジュール320は、SMTパラメータによって指定された1コア当たりのスレッド数を得るのに必要な数のスレッドを無効化する。
モジュール320は、選択されたコアを、共用可能パラメータに従って実行するように構成する。共用可能パラメータが指定されていない場合、モジュール320は、共用可能または排他的のいずれかのデフォルト設定値を適用する。選択されたコアが排他的使用のために構成されている場合、モジュール320は選択された構成されたコアを使用してコンテナを実行し、その第1のコンテナの実行中は他のコンテナにそれらのコアを使用させない。選択されたコアが共用可能に使用するために構成されている場合、モジュール320は、選択された構成されたコアを使用してコンテナを実行し、その第1のコンテナと等しいSMTパラメータを有する第2のコンテナが選択されたコアとそれらのコア内のスレッドとを使用して実行されることを許可する。コアを共用する両方のコンテナは、有効化されたスレッドのみを使用し、無効化されたスレッドは両方のコンテナについて無効化されたままであることに留意されたい。
図4を参照すると、この図は、例示の一実施形態によるコンテナにおけるハードウェア・マルチスレッド化を構成するための例示の構成のブロック図を示す。図4は、図3のモジュール320をより詳細に示している。
コンテナ初期設定手順の一部として、コア選択モジュール410が、コンテナを実行するコンピュータ・システムにおける1プロセッサ・コア当たりの最大数のハードウェア・スレッドを有効化する。この有効化は、任意のデフォルトまたは前のスレッド設定値、あるいはVMから継承されている場合がある任意のスレッド設定値を上書きする。
スレッド構成モジュール420が、初期設定されるコンテナを実行するためにどのプロセッサ・コアが利用可能であるかを判定する。利用可能なコアのうちから、モジュール420は、コンテナ・コア・パラメータによって指定されたコア数を選択する。コンテナは、初期設定されると、選択されたコア上で実行されることになる。モジュール420は、選択されたコアを、SMTパラメータによって指定された1コア当たりのスレッド数を使用して実行するように構成し、SMTパラメータによって指定された1コア当たりのスレッド数を得るために必要な数のスレッドを無効化する。
共用可能性モジュール430が、選択されたコアを、共用可能性パラメータに従って実行するように構成する。共用可能性パラメータが設定されていない場合、モジュール430は、共用可能または排他的のいずれかのデフォルト設定値を適用する。選択されたコアが排他的使用のために構成されている場合、モジュール430は、選択された構成されたコアを使用してコンテナを実行し、その第1のコンテナの実行中は他のコンテナにそれらのコアを使用させない。選択されたコアが共用可能使用のために構成されている場合、モジュール430は選択された構成されたコアを使用してコンテナを実行し、その第1のコンテナのSMTパラメータと等しいSMTパラメータを有する第2のコンテナが、選択されたコアとそれらのコア内のスレッドとを使用して実行されることができるようにする。
図5を参照すると、この図は、例示の一実施形態によるコンテナにおけるハードウェア・マルチスレッド化を構成する一実施例を示す。この実施例は、図3のアプリケーション300を使用して実行可能である。
図示のように、プロセッサ502がコア510および520を含む。プロセッサ502は、1コア当たり2つのスレッドを使用するアーキテクチャを有する。コア510はスレッド512および514を含む。コア520はスレッド522および524を含む。アプリケーション300は、1プロセッサ・コア当たり最大数のハードウェア・スレッド、ここではスレッド512、514、522および524を有効化する。
アプリケーション300は、初期設定されるコンテナ590が1つのコアと、1コア当たり2つのスレッドとを排他的に使用するように指定するパラメータ580を受け取る。したがって、アプリケーション300は、コア510が利用可能であると判定し、コア510を選択する。アプリケーション300は、コア510を、パラメータ580内のSMTパラメータによって指定された1コア当たりのスレッド数、ここでは2スレッドを使用して実行するように構成する。1プロセッサ・コア当たり2つのハードウェア・スレッドが前に有効化されているため、スレッドは無効化されない。その結果、コンテナ590はコア510上でスレッド512および514を使用して実行され、他のコンテナはコア510を共用することはできない。
図6を参照すると、この図は、例示の一実施形態によるコンテナにおけるハードウェア・マルチスレッド化を構成する続きの一実施例を示している。プロセッサ502と、コア510および520と、スレッド512、514、522および524とは、図5のプロセッサ502、コア510および520、スレッド512、514、522および524と同じである。
アプリケーション300は、1プロセッサ・コア当たり最大数のハードウェア・スレッド、ここではスレッド512、514、522および524を有効化する。アプリケーション300は、初期設定されるコンテナ690が2つのコアと、1コア当たり1つのスレッドとを排他的に使用するように指定するパラメータ680を受け取る。したがって、アプリケーション300は、コア510および520が利用可能であると判定し、両方を選択する。アプリケーション300は、パラメータ680内のSMTパラメータによって指定された1コア当たりのスレッド数、ここでは1スレッドを使用して実行するようにコア510および520を構成する。1プロセッサ・コア当たり2つのハードウェア・スレッドが前に有効化されているため、アプリケーション300は、1コア当たり1スレッドを無効化する。その結果、コンテナ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は、1プロセッサ・コア当たり最大数のハードウェア・スレッド、ここではスレッド512、514、522および524を有効化する。アプリケーション300は、初期設定されるコンテナ790が2つのコアと、1コア当たり1スレッドとを共用で使用するように指定するパラメータ780を受け取る。したがって、アプリケーション300は、コア510および520が利用可能であると判定し、両方を選択する。アプリケーション300は、コア510および520を、パラメータ780内のSMTパラメータによって指定された1コア当たりのスレッド数、ここでは1スレッドを使用して実行するように構成する。1プロセッサ・コア当たり2つのハードウェア・スレッドが前に有効化されているため、アプリケーション300は1コア当たり1スレッドを無効化する。その結果、コンテナ790は、コア510上のスレッド512とコア520上のスレッド522とを使用して実行される。スレッド514および524は無効化される。
また、アプリケーション300は、初期設定されるコンテナ795が2つのコアと、1コア当たり1スレッドとを共用で使用するように指定するパラメータ785を受け取る。すでにコンテナ790がコア510上のスレッド512とコア520上のスレッド522とを使用して実行されるように構成されており、コア510および520は共用可能である。したがって、アプリケーション300は、コンテナ795をコア510上のスレッド512とコア520上のスレッド522とを共用するように構成する。スレッド514および524は無効化されたままであり、共用されない。
図8を参照すると、この図は、例示の一実施形態によるコンテナにおけるハードウェア・マルチスレッド化を構成する一実施例を示している。この実施例は、図3のアプリケーション300を使用して実行可能である。
図示のように、プロセッサ802が、コア810、820、830および840を含む。プロセッサ802は、1コア当たり8スレッドを使用するアーキテクチャを有する。コア810はスレッド811~818を含み、コア820はスレッド821~828を含み、コア830はスレッド831~838を含み、コア840はスレッド841~848を含む。アプリケーション300は、1プロセッサ・コア当たり最大数のハードウェア・スレッド、ここではスレッド811~818、821~828、831~838、および841~848を有効化する。
アプリケーション300は、初期設定されるコンテナ890が2つのコアと、1コア当たり8スレッドとを排他的に使用するように指定するパラメータ880を受け取る。したがって、アプリケーション300は、コア810および820が利用可能であると判定し、これらを選択する。アプリケーション300は、コア810および820を、パラメータ880内のSMTパラメータによって指定された1コア当たりのスレッド数、ここでは8スレッドを使用して実行するように構成する。1プロセッサ・コア当たり8ハードウェア・スレッドが前に有効化されているため、スレッドは無効化されない。その結果、コンテナ890は、コア810上のスレッド811~818と、コア810上のスレッド821~828とを使用して実行され、他のコンテナはコア810および820を共用することができない。
図9を参照すると、この図は、例示の一実施形態によるコンテナにおけるハードウェア・マルチスレッド化を構成する続きの一実施例を示している。プロセッサ802と、コア810、820、830および840と、スレッド811~818、821~828、831~838および841~848とは、図8のプロセッサ802、コア810、820、830および840、スレッド811~818、821~828、スレッド831~838およびスレッド841~848と同じである。
アプリケーション300は、1プロセッサ・コア当たり最大数のハードウェア・スレッド、ここではスレッド811~818、821~828、831~838および841~848を有効化する。アプリケーション300は、初期設定されるコンテナ990が2つのコアと1コア当たり4スレッドとを共用で使用するように指定するパラメータ980を受け取る。したがって、アプリケーション300は、コア810および820が利用可能であると判定し、両方を選択する。アプリケーション300は、コア810および820を、パラメータ980内のSMTパラメータによって指定された1コア当たりのスレッド数、ここでは4スレッドを使用して実行するように構成する。1プロセッサ・コア当たり8ハードウェア・スレッドが前に有効化されているため、アプリケーション300は1コア当たり4スレッドを無効化する。その結果、コンテナ990は、コア810上のスレッド811~814とコア820上のスレッド821~824とを使用して実行される。スレッド815~818および825~828は無効化される。
アプリケーション300は、初期化されるコンテナ995が2つのコアと、1コア当たり4スレッドとを共用で使用するように指定する追加のパラメータ(図示せず)も受け取る。すでにコンテナ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で、アプリケーションは、コンテナ初期設定手順の一部としてコンピュータ・システムのコアのセットのうちの1コア当たり最大数のハードウェア・スレッドを有効化する。ブロック1004で、アプリケーションは、コアのセットのうちの利用可能なコアのセットから少なくとも1つの実行コアを選択する。ブロック1006で、アプリケーションは、選択された各実行コアにおいてコンテナの実行時に使用される1コア当たりのスレッド数を構成する。ブロック1008で、アプリケーションは、構成された実行コアを使用してコンテナを実行する。その後、アプリケーションは終了する。
次に図11を参照すると、例示のクラウド・コンピューティング環境50が図示されている。図示されるように、クラウド・コンピューティング環境50は、例えばパーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せなど、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は互いに通信することができる。ノード10は、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウドまたはハイブリッド・クラウドあるいはこれらの組合せなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化(図示せず)されてもよい。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはこれらの組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提供することができる。図示されているコンピューティング・デバイス54Aないし54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(例えばウェブ・ブラウザを使用して)任意の種類のネットワーク接続またはネットワーク・アドレス指定可能接続あるいはその組合せを介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
図12を参照すると、クラウド・コンピューティング環境50(図11)によって提供される1組の機能抽象化層が示されている。図示されているコンポーネント、層および機能は、例示のみを意図したものであり、本発明の実施形態はこれらには限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントとソフトウェア・コンポーネントとを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、およびネットワークおよびネットワーキング・コンポーネント66がある。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化層70は、以下のような仮想実体の例を与えることができる抽象化層を提供する。すなわち、仮想サーバ71と、仮想ストレージ72と、仮想プライベート・ネットワークを含む仮想ネットワーク73と、仮想アプリケーションおよびオペレーティング・システム74と、仮想クライアント75である。
一実施例では、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよびその他のリソースの動的調達を行う。メータリングおよびプライシング82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡と、これらのリソースの消費に対する対価の請求またはインボイス処理を行う。一実施例ではこれらのリソースにはアプリケーション・ソフトウェア・ライセンスが含まれてもよい。セキュリティは、クラウド消費者およびタスクのための本人検証と、データおよびその他のリソースの保護とを行う。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるようにクラウド・コンピューティングリソース割り当ておよび管理を行う。サービス・レベル・アグリーメント(Service Level Agreement(SLA))計画および履行85は、SLAに従って将来の要求が予想されるクラウド・コンピューティングリソースのための事前取り決めおよび調達を行う。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、およびコンテナにおけるハードウェア・マルチスレッド化の構成96が含まれる。
したがって、コンテナにおけるハードウェア・マルチスレッド化、その他の関連する機構、機能または動作を構成するための例示の実施形態において、コンピュータ実装方法、システムまたは装置、およびコンピュータ・プログラム製品が提供される。実施形態またはその一部についてある種類のデバイスに関連して説明している場合、コンピュータ実装方法、システムまたは装置、コンピュータ・プログラム製品またはその一部は、その種類のデバイスの適切な同等の具現化とともに使用するように適合または構成される。
実施形態についてアプリケーションで実装されるものとして説明している場合、ソフトウェア・アズ・ア・サービス(SaaS)モデルでのアプリケーションの配布が、例示の実施形態の範囲内で企図される。SaaSモデルでは、一実施形態を実装するアプリケーションの機能は、クラウド・インフラストラクチャにおいてアプリケーションを実行することによってユーザに提供される。ユーザは、様々なクライアント・デバイスを使用してウェブ・ブラウザなどのシン・クライアント・インターフェース(例えばウェブ・ベースのEメール)またはその他の軽量クライアント・アプリケーションを介してアプリケーションにアクセスすることができる。ユーザは、クラウド・インフラストラクチャのネットワーク、サーバ、オペレーティング・システム、またはストレージを含めて、基礎にあるクラウド・インフラストラクチャを管理も制御もしない。いくつかの場合では、ユーザはSaaSアプリケーションの機能の管理も制御さえもしなくてもよい。いくつかの他の場合では、アプリケーションのSaaS実装形態は、限られたユーザ固有アプリケーション構成設定の考えられる例外を許容することがある。
本発明は、統合の任意の可能な技術的詳細レベルのシステム、方法、またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、可搬コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック(登録商標)、フロッピィ(登録商標)・ディスク、パンチカードまたは命令が録音された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、またはワイヤを介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワークまたはこれらの組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、または、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語、または同様のプログラム言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でまたは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータまたはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。いくつかの実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様について、本明細書では、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることを理解されたい。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定されている機能/動作を実装する手段を形成するように、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサに供給されてマシンを実現するものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定されている機能/動作を実装するように、コンピュータ実装プロセスを実現させるべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、指定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。いくつかの別の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能に応じて、実際には、1ステップとして行われてもよく、並行して、または実質的に並行して、または一部または全体が時間的に重なり合った方式で実行されてもよく、またはブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、指定されている機能または動作を実行する、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実装可能であることにも留意されたい。
Claims (20)
- コンピュータ実装方法であって、
コンピュータ・システム上で実行されるオペレーティング・システムをコンテナ実行のために構成し、第1のコンテナを前記オペレーティング・システム上での実行のために構成するコンテナ初期設定手順の一部として、前記コンピュータ・システムのプロセッサ・コア(コア)のセットにおける1コア当たりの最大数のハードウェア・スレッドを有効化することと、
前記コアのセットのうちの利用可能なコアのセットから実行コアを選択することと、
選択された前記実行コアにおいて、前記第1のコンテナの実行時に使用される1コア当たりのスレッド数を構成することであって、前記1コア当たりのスレッド数が第1の同時マルチスレッド化(SMT)パラメータによって前記コンテナ初期設定手順のために指定される、前記1コア当たりのスレッド数を構成することと、
構成された前記実行コアを使用して前記第1のコンテナを実行することであって、前記実行が前記オペレーティング・システムを仮想化する、前記第1のコンテナを実行することとを含む、コンピュータ実装方法。 - コンテナ・プリファレンス設定から前記第1のSMTパラメータを決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
- 選択された前記実行コアにおいて1コア当たりのスレッド数を構成することが、前記第1のSMTパラメータによって指定された前記1コア当たりのスレッド数を得るために、選択された前記実行コアにおけるスレッドを無効化することを含む、請求項1に記載のコンピュータ実装方法。
- 第1のコンテナ・コア・パラメータが、前記利用可能なコアのセットから選択される実行コアの数を指定する、請求項1に記載のコンピュータ実装方法。
- 選択された前記実行コアを共用可能として構成することと、
共用可能な構成された前記実行コアを使用して、前記第1のSMTパラメータと等しい第2のSMTパラメータを有する第2のコンテナを実行することとをさらに含む、請求項1に記載のコンピュータ実装方法。 - 選択された前記実行コアを排他的であるものとして構成することと、
排他的な構成された前記実行コアを使用して前記第1のSMTパラメータと等しい第2のSMTパラメータを有する第2のコンテナを実行させないこととをさらに含む、請求項1に記載のコンピュータ実装方法。 - コンテナにおけるハードウェア・マルチスレッド化を構成するためのコンピュータ・プログラム製品であって、
1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含み、前記プログラム命令は、
コンピュータ・システム上で実行されるオペレーティング・システムをコンテナ実行のために構成し、第1のコンテナを前記オペレーティング・システム上での実行のために構成するコンテナ初期設定手順の一部として、前記コンピュータ・システムのプロセッサ・コア(コア)のセットにおける1コア当たりの最大数のハードウェア・スレッドを有効化するプログラム命令と、
前記コアのセットのうちの利用可能なコアのセットから実行コアを選択するプログラム命令と、
選択された前記実行コアにおいて、前記第1のコンテナの実行時に使用される1コア当たりのスレッド数を構成するプログラム命令であって、前記1コア当たりのスレッド数が第1の同時マルチスレッド化(SMT)パラメータによって前記コンテナ初期設定手順のために指定される、前記1コア当たりのスレッド数を構成する前記プログラム命令と、
構成された前記実行コアを使用して前記第1のコンテナを実行するプログラム命令であって、前記実行が前記オペレーティング・システムを仮想化する、前記第1のコンテナを実行する前記プログラム命令とを含む、コンピュータ・プログラム製品。 - コンテナ・プリファレンス設定から前記第1のSMTパラメータを決定するプログラム命令をさらに含む、請求項7に記載のコンピュータ・プログラム製品。
- 選択された前記実行コアにおいて1コア当たりのスレッド数を構成するプログラム命令が、前記第1のSMTパラメータによって指定された前記1コア当たりのスレッド数を得るために、選択された前記実行コアにおけるスレッドを無効化するプログラム命令を含む、請求項7に記載のコンピュータ・プログラム製品。
- 第1のコンテナ・コア・パラメータが、前記利用可能なコアのセットから選択される実行コアの数を指定する、請求項7に記載のコンピュータ・プログラム製品。
- 選択された前記実行コアを共用可能として構成するプログラム命令と、
共用可能な構成された前記実行コアを使用して、前記第1のSMTパラメータと等しい第2のSMTパラメータを有する第2のコンテナを実行するプログラム命令とをさらに含む、請求項7に記載のコンピュータ・プログラム製品。 - 選択された前記実行コアを排他的であるものとして構成するプログラム命令と、
排他的な構成された前記実行コアを使用して前記第1のSMTパラメータと等しい第2のSMTパラメータを有する第2のコンテナを実行させないプログラム命令とをさらに含む、請求項7に記載のコンピュータ・プログラム製品。 - 記憶されている前記プログラム命令が、ローカル・データ処理システムの前記1つまたは複数の記憶媒体のうちの前記少なくとも1つの記憶媒体に記憶され、記憶されている前記プログラム命令が、ネットワークを介してリモート・データ処理システムから転送される、請求項7に記載のコンピュータ・プログラム製品。
- 記憶されている前記プログラム命令がサーバ・データ処理システムの前記1つまたは複数の記憶媒体のうちの前記少なくとも1つの記憶媒体に記憶され、記憶されている前記プログラム命令が、リモート・データ処理システムに関連付けられたコンピュータ可読ストレージ・デバイスにおける使用のためにネットワークを介して前記リモート・データ処理システムにダウンロードされる、請求項7に記載のコンピュータ・プログラム製品。
- 前記コンピュータ・プログラム製品がクラウド環境におけるサービスとして提供される、請求項7に記載のコンピュータ・プログラム製品。
- 1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスとを含むコンピュータ・システムであって、前記1つまたは複数のメモリのうちの少なくとも1つのメモリを介した前記1つまたは複数のプロセッサのうちの少なくとも1つのプロセッサによる実行のために前記1つまたは複数のコンピュータ可読ストレージ・デバイスのうちの少なくとも1つのコンピュータ可読ストレージ・デバイスにプログラム命令が記憶され、記憶されている前記プログラム命令が、
コンピュータ・システム上で実行されるオペレーティング・システムをコンテナ実行のために構成し、第1のコンテナを前記オペレーティング・システム上での実行のために構成するコンテナ初期設定手順の一部として、前記コンピュータ・システムのプロセッサ・コア(コア)のセットにおける1コア当たりの最大数のハードウェア・スレッドを有効化するプログラム命令と、
前記コアのセットのうちの利用可能なコアのセットから実行コアを選択するプログラム命令と、
選択された前記実行コアにおいて、前記第1のコンテナの実行時に使用される1コア当たりのスレッド数を構成するプログラム命令であって、前記1コア当たりのスレッド数が第1の同時マルチスレッド化(SMT)パラメータによって前記コンテナ初期設定手順のために指定される、前記1コア当たりのスレッド数を構成する前記プログラム命令と、
構成された前記実行コアを使用して前記第1のコンテナを実行するプログラム命令であって、前記実行が前記オペレーティング・システムを仮想化する、前記第1のコンテナを実行する前記プログラム命令とを含む、コンピュータ・システム。 - コンテナ・プリファレンス設定から前記第1のSMTパラメータを決定するプログラム命令をさらに含む、請求項16に記載のコンピュータ・システム。
- 選択された前記実行コアにおいて1コア当たりのスレッド数を構成するプログラム命令が、前記第1のSMTパラメータによって指定された前記1コア当たりのスレッド数を得るために、選択された前記実行コアにおけるスレッドを無効化するプログラム命令を含む、請求項16に記載のコンピュータ・システム。
- 第1のコンテナ・コア・パラメータが、前記利用可能なコアのセットから選択される実行コアの数を指定する、請求項16に記載のコンピュータ・システム。
- 選択された前記実行コアを共用可能として構成するプログラム命令と、
共用可能な構成された前記実行コアを使用して、前記第1のSMTパラメータと等しい第2のSMTパラメータを有する第2のコンテナを実行するプログラム命令とをさらに含む、請求項16に記載のコンピュータ・システム。
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 |
---|---|
JP2023545786A true JP2023545786A (ja) | 2023-10-31 |
Family
ID=81258358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023521708A Pending JP2023545786A (ja) | 2020-10-22 | 2021-09-27 | コンテナにおけるハードウェア・マルチスレッド化の構成 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11567796B2 (ja) |
JP (1) | JP2023545786A (ja) |
CN (1) | CN116457755A (ja) |
DE (1) | DE112021004619T5 (ja) |
GB (1) | GB2615043A (ja) |
WO (1) | WO2022083419A1 (ja) |
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 |
GB2615043A (en) | 2023-07-26 |
WO2022083419A1 (en) | 2022-04-28 |
CN116457755A (zh) | 2023-07-18 |
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 | |
US9830677B2 (en) | Graphics processing unit resource sharing | |
US8825863B2 (en) | Virtual machine placement within a server farm | |
US9582319B2 (en) | Migrating virtual machines across network separated data centers | |
US10324754B2 (en) | Managing virtual machine patterns | |
US20170068561A1 (en) | Automated exploitation of virtual machine resource modifications | |
US9928112B2 (en) | Configuration of floating node boundaries | |
US9513971B1 (en) | Managing provisioning for cloud resource allocations | |
JP2023057535A (ja) | コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング) | |
US10831409B2 (en) | Volume reconfiguration for virtual machines | |
US11948010B2 (en) | Tag-driven scheduling of computing resources for function execution | |
WO2022083419A1 (en) | Configuring hardware multithreading in containers | |
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 | |
US11455191B2 (en) | Parallel task initialization on dynamic compute resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230426 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20230501 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240215 |