JPH09237215A - 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム - Google Patents
非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システムInfo
- Publication number
- JPH09237215A JPH09237215A JP8163515A JP16351596A JPH09237215A JP H09237215 A JPH09237215 A JP H09237215A JP 8163515 A JP8163515 A JP 8163515A JP 16351596 A JP16351596 A JP 16351596A JP H09237215 A JPH09237215 A JP H09237215A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- node
- memory
- shared
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
Abstract
層ツリー構造で与え、アドレス透過のメモリ移動などメ
モリ資源の継ぎ目のない扱いを支援する。 【解決手段】 階層ツリー構造は、ジョブ・プロセッサ
1〜8を表わすリーフ・ノードと、全てのジョブ・プロ
セッサによって共有される少なくとも1つのシステム資
源16を表わすルート・ノードと、ジョブ・プロセッサ
の異なる組み合わせによって共有される資源10〜13
を表わす複数の中間レベル・ノードとを含む。オペレー
ティング・システムは、システム全体に分散されている
アクティブなスレッド群の進展を監視し、衰退スレッド
群を補助する中期スケジューラと、各々ジョブ・プロセ
ッサの1つと関連付けられ、その状態を監視し、その実
行スレッド群を得る複数のディスパッチャとを含み、更
に複数のメモリ・プールおよびフレーム・トレジャリを
用いて仮想および物理メモリを割り当てる。
Description
ータのオペレーティング・システムに関し、更に特定す
れば、非一様メモリ・アクセス(NUMA:non-uniform memo
ry access)マルチプロセッサ・システム用オペレーティ
ング・システムに関するものである。
クの効率的な制御を容易にする、プログラミング構造で
ある。スレッドは基礎となるハードウエアに密接に対応
するので、対称的なマルチプロセシング・システム上で
実行されるアプリケーションに、平易なプログラミング
・モデルを与える。
処理タスクを共有するいくつかの別個のジョブ・プロセ
ッサ(JP)を有することができる。かかるシステムの多く
は、キャッシュを内蔵し、このキャッシュをシステムの
JPの部分集合が共有する。しかしながら、多くの従来
技術のマルチプロセッサ・システムに伴う問題の1つ
に、システム上で実行中のプロセスが、その実行中に、
多数の処理スレッドを生成するときのJPおよびキャッ
シュの親和性が不十分(poor)であることがあげられる。
従来技術のシステムには、各スレッドに個々の優先度を
割り当て、各スレッドをシステム全体で汎用的に別個に
スケジュールするものがある。また他のシステムには、
個々のスレッドを個々のJPに親和化(affine)できるも
のもある。同一データにアクセスする傾向がある、多数
の関係するスレッドを、多数のJP群に分散すると、シ
ステムのキャッシュ内外において、望ましくない高いレ
ベルのデータ交換(data swapping)が発生する可能性が
ある。
月26に出願され、本願と共に譲渡された、"APPARATUS
AND METHOD FOR IMPROVED CPU AFFINITY IN A MULTI-P
ROCESSOR SYSTEM"と題する米国特許出願番号第08/1
87,665号は、同一プロセスからの関係があるスレ
ッド群をJP群に親和化し、二次的なキャッシュの親和
性を改善しつつ、同一群内のスレッド間の処理効率を高
め、群間の処理のオーバーヘッドを減少させる方法を開
示する。この開示内容は、この言及により、本願にも含
まれるものとする。先の開示された方法は、更に、親和
性を自動的に修正し、局所的な効率を維持しつつ、関係
のあるスレッド群を移動させる。マルチプロセッサ・シ
ステム全体にわたってプロセッサ負荷の均衡を取るため
に、開示された方法は、全てのアクティブなスレッド群
を、システム・アーキテクチャ内で最高で最もよく見え
る(visible)レベルに昇進させることによって、周期的
に負荷の均衡化を行う。
ャを有するスケーラブル・マルチプロセッサ・システム
に実施可能な、グローバル・スケジューリング機構を有
するオペレーティング・システムに対する必要性が存在
する。また、NUMAシステムを抽象化し、コスト・ト
レードオフを管理し、資源アクセス・コストを考慮に入
れたポリシおよび機構を実施しつつ、システムの資源全
体に作業負荷を分散させる方法に対する必要性も存在す
る。加えて、アドレスが透過なメモリの移動、およびN
UMAマルチプロセシング・システムの種々のメモリ資
源の継ぎ目のない一体化を支援する、メモリ・マネージ
ャを有するオペレーティング・システムに対する必要性
も存在する。
上述の問題を克服しようとするものである。本発明のオ
ペレーティング・システムの一態様は、システムのスル
ープットを向上し、プロセスとジョブ・プロセッサとの
間に緊密な親和性を保持する、局在性管理機構(localit
y management mechanism)を提供することである。この
利点およびその他の利点を達成するため、そしてここに
具現化され広く述べられる本発明の目的によれば、本発
明のオペレーティング・システムは、マルチプロセッサ
・システムのハードウエア・アーキテクチャの抽象概念
を維持する手段を含む。抽象概念は、プロセッサおよび
共有される資源の物理的構成を、階層的ツリー構造とい
う形態で表わす。階層的ツリー構造は、プロセッサに対
応し、階層的ツリーの最下位レベルに位置付けられる複
数のリーフ・ノード(leaf node)と、全てのプロセッサ
によって共有される共通資源および共有される中間資源
に対応し、階層ツリーの最高レベルに位置付けられるル
ート・ノード(root node)と、共有される中間資源に対
応し、階層ツリーの少なくとも1つの中間レベルに位置
付けられる複数の中間ノードとを有する。階層ツリーの
各ノードに実行キュー(run queue)を確立するための手
段が設けられる。各実行キューは、リーフ・ノードと関
連付けられ、対応するプロセッサに親和化されたアクテ
ィブなプロセスまたはスレッド群を識別する。残りのノ
ードの1つと関連付けられた各実行キューは、当該ノー
ドに関連付けられた資源を共有するプロセッサ群に親和
化されたアクティブなプロセッサを識別する。更に、プ
ロセッサの動作を監視し、実行キュー内に並んでいるプ
ロセスを選択し、プロセッサに実行させる手段も設けら
れる。
の態様は、システムのスループットを向上させつつ、シ
ステム全体で均衡の取れたプロセッサ負荷を維持する、
グローバル・スケジューリング機構を提供することであ
る。この利点およびその他の利点を達成するために、本
発明のオペレーティング・システムは、マルチプロセッ
サ・システムのハードウエア・アーキテクチャの階層的
ツリーの抽象概念を維持する手段と、システム内のアク
ティブなプロセスの進展を監視し、進展していなかった
プロセスをより速く実行させる可能性を高める手段とを
含む。本発明のオペレーティング・システムの更に他の
態様は、システムにおいてプロセスが衰退しないことを
保証するように協動する、グローバルおよびローカル・
スケジューリング機構を提供することである。
めに、本発明のオペレーティング・システムは、プロセ
ッサの各々と関連付けられ、関連するプロセッサの実行
キューを監視し、他のプロセッサの実行キューから、関
連するプロセッサに実行させるためのプロセスを探し獲
得するディスパッチャと、システム内のアクティブなプ
ロセスの進展を監視し、進展していないプロセスにフラ
グをセットする、中期スケジューラとを含む。前記ディ
スパッチャが、複数の入手可能なプロセスを有する実行
キューを発見したとき、ディスパッチャは、フラグがセ
ットされているプロセスを選択する。
における各アクティブなプロセスの進展を監視し、所定
時間期間の間進展していない各アクティブなプロセスの
優先度を高める中期スケジューラと、プロセッサの1つ
と関連付けられ、関連するプロセッサによって実行され
るプロセスを並べた実行キューを監視し、関連するプロ
セッサに実行させるために、前記実行キュー内で最も優
先度の高いアクティブなプロセスを選択する、少なくと
も1つのディスパッチャとを含むオペレーティング・シ
ステムによって、上述の態様は達成可能である。
親和性が変化したか否かを判定し、プロセスのホーム親
和性(home affinity)を変更すべきか否かを判定する、
動的データ構造機構を提供することである。この利点お
よびその他の利点を達成するために、本発明のオペレー
ティング・システムは、マルチプロセッサ・システムの
ハードウエア・アーキテクチャの階層ツリー構造の抽象
概念を維持する手段と、階層ツリーの各ノードに対する
実行キューを形成する手段とを含む。リーフ・ノードと
関連付けれらた各実行キューは、関連するプロセッサに
親和化されたアクティブなプロセスを識別し、残りのノ
ードの1つと関連付けれた各実行キューは、当該ノード
と関連付けられた資源を共有するプロセッサ群に親和化
されたアクティブなプロセスを識別する。抽象概念は、
階層ツリーのレベルの1つをスケジューリング・レベル
として定義し、スケジューリング・レベル内のノードを
スケジューリング・ロカール(scheduling locale)とし
て識別する。マルチプロセッサ・システム内の各アクテ
ィブなプロセスまたはスレッド群は、ホーム・スケジュ
ーリング・ロカールと、現スケジューリング・ロカール
とを有し、各々スケジューリング・ロカールの1つに対
応する。プロセスのホーム・スケジューリング・ロカー
ルは、当該プロセスを実行するために好適なプロセスの
祖先であるスケジューリング・ロカールである。スレッ
ド群の現スケジューリング・ロカールは、プロセスを最
後に実行した、または現に実行中のプロセッサの祖先で
あるスケジューリング・ロカールである。
ムにおいて継ぎ目なく物理メモリを割り当てるためにデ
ータ構造を利用することである。この態様を達成するた
めに、本発明のオペレーティング・システムは、マルチ
プロセッサのハードウエア・アーキテクチャの階層ツリ
ー抽象概念を維持する手段を含む。オペレーティング・
システムは、更に、共有物理メモリ資源を表わす各ノー
ドにおいてフレーム・トレジャリ(frame treasury)を維
持しフレーム管理および資源の割り当てを制御し、全ノ
ードに共通なノードを識別する手段も含む。トレジャリ
と関連付けられるのは、プロセッサの少なくとも1つが
使用するために、フレーム・トレジャリから物理メモリ
のフレームを割り当てる高位ポリシ・ノードである。
おいて仮想メモリを割り当てるために多数の独立したメ
モリ・プールを利用することである。この態様を達成す
るために、本発明のオペレーティング・システムは、マ
ルチプロセッサ・システムのハードウエア・アーキテク
チャの階層ツリー抽象概念を維持する手段と、システム
の仮想メモリの割り当てのために、メモリ・ロカールを
表わす各ノードにおいてメモリ・プールを維持する手段
と、メモリ単位及び該メモリ単位の各々に割り当てられ
ているメモリ・プールの可用性を識別するプール単位テ
ーブルを維持する手段とを含む。前記仮想メモリは、メ
モリ・プールに割り当て可能なプール単位に分割されて
いる。
明および特許請求の範囲、ならびに添付図面において特
に指摘した手段および組み合わせによって実現し、獲得
することができる。また、添付図面は、本明細書に組み
込まれ、その一部を構成し、本発明のいくつかの実施例
を例示し、本発明の目的、利点、および原理を説明する
のに供するものである。
ることができる、NUMAマルチプロセッサ・システム
20の一例を示す。提示を明確かつ容易にするために、
NUMAマルチプロセッサ・システム20は、8個のジ
ョブ・プロセッサ(JP)1〜8を含むものとして描い
てある。当業者には容易に認められようが、本発明は、
他の数のJPを有するNUMAマルチプロセッサ・シス
テムにも適用可能である。また、各JP群が2つずつ構
成要素を有すること、または全てのJP群が同一数のJ
Pを有することは必須ではない。本発明は、メモリ・ア
クセス時間がシステム全体で等しいが、ローカル・バス
の帯域の使用を均衡化することを望む、UMAシステム
にも適用可能である。
は、分散型メモリを有するシステムであって、メモリの
各部分は、あるJPには他のものよりも緊密である(ア
クセスが安価である)が、全てのメモリ資源は全てのJ
Pにアクセス可能なシステムである。したがって、NU
MAオペレーティング・システムは、引用の局在性に対
する感度を高め、メモリ配置(memory placement)を明示
的に管理することによって、理想的な性能を達成するこ
とが好ましい。
(図示せず)を有し、通常、これは少なくとも別個のデ
ータおよび命令キャッシュを含み、各キャッシュは、例
えば、8Kバイトのランダム・アクセス・メモリであ
る。命令およびデータ・キャッシュ構成物であるこれら
第1キャッシュに加えて、例えば、1メガバイトのラン
ダム・アクセス・メモリから成る付加的なキャッシュ・
メモリも、典型的なシステムには、第1キャッシュの一
部として含まれている場合がある。図1に示した例で
は、各JP対、即ち、JP群は、第2キャッシュ10〜
13のような1つ以上の共有メモリ資源に接続すること
ができる。例えば、JP1および2を第2キャッシュ1
0に接続し、JP3および4を第2キャッシュ11に接
続し、JP5および6を第2キャッシュ12に接続し、
JP7および8を第2キャッシュ13に接続することが
できる。加えて、共有メモリ資源10および11を互い
に接続したり、あるいはノード14において、第3キャ
ッシュのような他の1つ以上の共有資源に接続すること
もでき、更に共有メモリ資源12および13も、1つ以
上の共有資源15に接続することができる。あるいは、
共有資源14および15を、システム・バスまたはイン
ターフェースとしてもよい。共有資源14および15
は、付加的な共有メモリおよび/または主システム・バ
ス16のような、1つ以上の共通共有資源に接続するこ
とができる。したがって、図1に示すように、共有資源
を表わす各ボックスは、1つ以上の共有資源を表わす場
合もある。しかしながら、NUMAシステムであるため
には、ノード10〜13または14〜15にメモリがな
ければならない。
サ・システムは、非対称的アーキテクチャを有し、共有
資源10〜13の各々が異なるメモリ量を有するように
してもよい。更に、JP1〜8は、異なる処理能力を有
してもよい。加えて、ハードウエアは、その鍵となる共
有資源が階層的システム抽象概念によって適切に表現可
能である限り、1つの階層として組織化する必要もな
い。例えば、ハードウエアは、メッシュに基づくシステ
ム組織(mesh-based system organization)を有すること
も可能である。システム全体にわたってこれらの種々の
構成物を扱い、異なるハードウエア構成物の継ぎ目のな
い一体化を可能にするために、本発明のオペレーティン
グ・システムは、NUMAマルチプロセッサ・システム
の抽象概念を利用する。これについては、後に更に詳細
に説明する。
オペレーティング・システム(またはカーネル)は、通
常、ジョブ・プロセッサおよび/または専用システム・
プロセッサ上で実行される、種々のプロセスまたは方法
を含む。以下に述べるオペレーティング・システムの構
成物は、オペレーティング・システムによって実行され
るプロセスのいくつかのことを指す。
A)マルチプロセッサ・システム20のオペレーティン
グ・システムによる、ソフトウエア抽象概念150の概
要を示す。オペレーティング・システムは非一様メモリ
・アクセス(NUMA)マルチプロセッサ・システム2
0において実施可能である。リーフ・ノード(leaf nod
e)100〜107はそれぞれJP1〜8を表わし、ノー
ド110〜113は、共有メモリ、バス、および/また
は第2キャッシュ10〜13をそれぞれ表わし、ノード
114および115は、共有バス/相互接続部14およ
び15のような、共有資源を表わし、ルート・ノード1
20は、共有資源14および15等を接続する主システ
ム・バス16のような共通共有資源を表わす。
種々のハードウエア・アーキテクチャを有するNUMA
マルチプロセッサ・システムに常駐し、これを制御でき
るように柔軟に設計されているので、オペレーティング
・システムが利用するハードウエア・アーキテクチャの
抽象概念は、システムによって異なる。しかしながら、
以下に述べるように、オペレーティング・システムは、
種々のポリシを利用して、ハードウエア・アーキテクチ
ャの適切な抽象概念を確立し、システムの処理を最も有
効に管理する。
ング・システムは、実行キュー(runqueue)およびディス
パッチャ(dispatcher)を含む。ディスパッチャは、ある
グローバルおよびローカル・スケジューリング・ポリシ
にしたがって、関連するJP上でのプロセスのスケジュ
ーリングおよび実行を担う機構である、カーネル・サブ
システム(kernel subsystem)である。スケジューリング
・ポリシのセットする役割を担う、オペレーティング・
システム内の他のカーネル・サブシステムを、以後、中
期スケジューラ(meidum term scheduler)と呼ぶ。これ
は、ディスパッチャが処理するスケジューリング機構に
影響を与える。ディスパッチャおよび中期スケジューラ
のスケジューリング処理については、「スレッド群」の
背景説明に続いて、以下で説明する。尚、スレッド群
は、オペレーティング・システムがそのポリシ作成決定
のいくつかの基準とするスレッドの群を表わす。しかし
ながら、オペレーティング・システムは、以下に説明す
るような、多数のスレッドを有するスレッド群上だけで
なく、単一プロセス(即ち、単一スレッドを有するスレ
ッド群)上でも動作可能であることは、理解されよう。
セスし処理する傾向のある、プロセス内で、緊密な関係
にあるスレッドの集合のことである。これら関係の有る
スレッドを、単一の全体的にスケジュール可能な群とし
て扱うことにより、当該群内のスレッドと個々のJPま
たはJP群との間に、より密接な関係を増進し、これに
よって、キャッシュのヒット率およびシステム全体の性
能が向上することになる。
される典型的なプロセス200の図を示してある。プロ
セス200は、スレッド群210、220、および23
0を含む。TG210は、リアル・タイム(RT)スレ
ッド群であり、プロセス200における最初のスレッド
群であった。TG210は、スレッド群構造(TGS)
211を有し、そのスレッド群の中に、3つのタイムシ
ェアリング(TS)スレッド212〜214を有する。
TG220は、スレッド群構造221と、RTスレッド
222および223とを有する。TG230は、スレッ
ド群構造231と、RT232と、TS233とを有す
る。以下でより詳細に論ずるが、図3の各スレッド群構
造ボックス211、221および231に示す数は、シ
ステムに全体おける各スレッド群のグローバル・スケジ
ューリング優先度を示す。各スレッド・ボックスの中に
示す数は、その特定スレッド群の中における、スレッド
の優先度を示す。
に配置してあるのは、データ集合240であり、プロセ
ス200の実行中に、スレッドがアクセスする潜在的必
要性があるものである。図3において、データ241
は、TG210内のスレッドが実行すべきタスクを支援
するデータ240の副集合を表わす。同様に、データ2
42および243は、TG220および230内のスレ
ッドが実行すべきタスクを支援する。
1つ以上の付加的なスレッドを生成することができる。
新たなスレッドが生成されるとき、それは、生成元のス
レッドのスレッド群内で生成されるか、他の既存のスレ
ッド群内で生成されるか、あるいは、新たなスレッド群
の最初のスレッドとなることもできる。例えば、TG2
20は、プロセス200内のスレッドによって、または
システム内の他のプロセス内のスレッドによって生成さ
れたものとすることができる。あるスレッドが新たなス
レッド群内の最初のスレッドとして形成される場合、新
たなスレッド群のスレッド群構造は、まず、生成したス
レッドのスレッド群のスレッド群構造を受け継ぐことに
よって生成される。次いで、新たに生成されたスレッド
群において、新たなスレッドが生成される。生成元のス
レッドは、新たに生成されたスレッドに、ローカル・ス
ケジューリングおよび優先度を割り当てる。他に指定が
ない場合は、新たに生成されたスレッドは、それを生成
したスレッドのローカル・スケジューリング・ポリシお
よび優先度を受け継ぐことになる。新たに生成されたス
レッドは、それを生成したスレッドよりも高い、低い、
または同一の優先度を有することができる。同様に、あ
るスレッド群内の個々のスレッドは、そのスレッド群の
優先度よりも高い、低い、あるいは同一の優先度を有す
ることができる。
スレッドについて、累積タイムスライス(timeslice)お
よびJP課金(accounting)も維持するので、スレッド群
内の個々のスレッドについて、タイムスライス処理およ
びJP課金の記録は不要である。スレッド群内の個々の
スレッドは、各々、それ自体のスレッド優先度およびス
ケジューリング・ポリシを保持する。
Pのディスパッチャが用いる、特定の方法について以下
に論じる。一旦ディスパッチャが実行のために特定のス
レッド群を選択したなら、ディスパッチャは当該スレッ
ド群から1つのスレッドを選択し、その群内のスレッド
の局所的優先度およびスケジューリング・ポリシに基づ
いて実行する。したがって、スレッドの選択および実行
は、2つの独立したレベルで行われる。即ち、スレッド
群のグローバル・スケジューリング、これに続く、当該
スレッド群のスレッドの1つのローカル・スケジューリ
ングである。あるスレッド群の中の個々のスレッドの優
先度は、当該スレッド群自体のスケジューリングには何
等関係がない。スレッド群のスケジューリングは、スレ
ッド群構造におけるスレッド群の優先度に基づいてい
る。
を有する複数のスレッド群がしばしば関与する。プロセ
スの開発においてスレッド群を使用することにより、既
存のスレッド群内で新しいスレッドを生成することと、
新しいスレッド群を生成することの間で選択を行う柔軟
性をユーザに与えることになる。ユーザは、当該プロセ
ス内の種々のタスクを処理するための最も効率的な手法
に基づいて、決定を下すことができる。例えば、多数の
スレッドを用いて特定の計算に関する作業を行ってお
り、全てのスレッドが同一データ集合へのアクセスを必
要とする場合、これらのスレッドを単一のスレッド群に
属させるのが正しい。一方、プロセスの進行中に当該プ
ロセス内で新たなタスクを開始するが、このタスクが既
存のスレッド群のタスクとは密接に結び付かず、しかも
新たなタスクのスレッドが異なるデータ副集合240へ
のアクセスを必要とする場合、新たなスレッド群を指示
する。
ウエア・アーキテクチャの抽象概念を利用する。これ
は、共有資源、メモリ・ロカール(memory locales)、お
よびJPの逆ツリー階層として表わすのが好ましい。か
かる抽象概念の一例を図2に示す。このJP/メモリ−
ツリー階層では、JPを固有のID番号で識別し、各メ
モリ・ロカールまたは他の共有資源を、(レベル、JP
−ID)命名基準によって識別する。ここで、レベル
は、階層ツリーにおける垂直位置を特定し(番号が大き
いレベル程ツリーのルート・ノードに近く、ゼロ・レベ
ルはツリーのリーフ・ノード即ちJPを表わす)、JP
−IDは、所望のロカールのいずれかの子孫JP(desce
ndent JP)を用いて、水平位置を指定する。例えば、図
2において、指定子(2、JP2)および(2、JP
0)は双方とも同一メモリ・ロカールを指し、一方
(2、JP2)および(2、JP4)は異なるロカール
を指す。各レベルは、1つ以上の「インスタンス」、即
ち、JP/メモリ・ツリー階層におけるノードを含むと
考えることができる。レベル0は、8個のノードを含
み、各々JP100〜107の1つに対応する。レベル
1は4つのレベル1ノード110〜113を含み、各ノ
ードは、共有メモリ資源およびその従属JPの1つに対
応する。レベル2は2つのレベル2ノード114および
115を含み、各々2つのレベル1ノードおよび共有資
源に対応する。最後に、2つのレベル2ノードと少なく
とも1つの共有システム資源とに対応する単一のレベル
3ノード120がある。この命名基準は、多くの場合、
システムの各レベルにいくつのノードがあるかを知る必
要性から、ソフトウエアを解放するため、実施を簡素化
することができる。
ウエアを抽象化することの目的は、1つのノードから他
のノードへの移動に伴うアクセス・コストの表現を与え
ることである。例えば、JP101がノード110で表
わした第2キャッシュから読み取りを行うためのコスト
は、同じJPがノード112で表わした第2キャッシュ
から読み取りを行うためのコストよりも大幅に少ない。
これは、ハードウエアのアクセス・レイテンシ(latenci
es)およびシステム・バスの帯域が制限されていること
によるものである。このように、階層ツリー抽象概念群
は、JPおよび群の共有資源間の相互作用と関連付け
て、最も低いコストを有する共有資源およびJPを類別
する。
抽象概念で表わす訳ではない。例えば、一様メモリ・ア
クセス・システムでは、全てのJPを直接共通の共有メ
モリに接続する。したがって、各JPが共通メモリにア
クセスする際のコストは、他のJPの場合と同一であ
り、全てのメモリは、階層のルート・ノードで表わされ
ることになろう。しかしながら、非一様メモリ・アクセ
ス(NUMA)システムでは、JPのあるものは1つの
共有メモリ資源に直接接続され、一方、他のJPには他
の共有メモリ資源に接続するものもある。更に、1つの
メモリ資源に直接接続されるJPの数は、他のメモリ資
源に接続される数とは異なる場合もある。かかるシステ
ムの階層的抽象概念を与えることによって、オペレーテ
ィング・システムは、JPがより緊密に親和化されてい
るローカル・メモリへのアクセスを促進し、アクセス可
能性が限られているシステム資源の利用を必要とする場
合がある、遠隔メモリ資源へのJPのアクセスを制限す
るようなポリシを確立することができる。
構成するためには、2つの競合するシステムの目標を調
和させる必要がある。一方では、JPにできるだけ効率
的にプロセスを実行させなければならない。他方では、
システムのスループットを最大限高めなければならな
い。図2を参照して、レベル3において「可視」である
全スレッドは、8つのJP100〜107のディスパッ
チャのいずれかが選択し実行することができる。レベル
3のスレッドを潜在的に実行可能なJPは8つあるの
で、これは各スレッドを実行する機会を最大に高める。
しかしながら、こうすると、結果として、同じスレッド
群からのスレッドが異なるJP群(即ち、JP100お
よび101、JP102および103、JP104およ
び105、またはJP106および107)において実
行されることになる。多数のスレッド群からのスレッド
がJP群全体に分散し、その結果キャッシュの動作が増
大するため、システムのスループットが低下する。
てられるとすると、全スレッドが同一JP上で処理され
る同一データ集合上で作用するため、キャッシュ・ヒッ
トの可能性が高くなるため、明らかに局所的なキャッシ
ュ親和性が高くなる。しかしながら、複数の時間的制約
が厳しいスレッド(time critical thread)を単一のJP
に割り当てると、JPがビジー状態となり、全ての時間
的制約が厳しいスレッドをスケジュール通りに実行でき
なくなる可能性が高まるため、望ましくない。
テムの好適実施例では、2つのスケジューリング・レイ
ヤ(layer)がある。全スレッド群は群優先度を有し、中
期スケジューラによってスケジュールされることによ
り、抽象化システム150内のどこでも利用可能なJP
資源を得るために競うことができる。一旦あるJPディ
スパッチャが実行すべきスレッド群を選択したなら、こ
のディスパッチャは、当該スレッド群内の局所的優先度
にしたがって、このスレッド群内から1つのスレッドを
選択する。
ッドの優先度について調べる。図からわかるように、ス
レッド群の優先度は、当該スレッド群内の個々のスレッ
ドの優先度より、高い場合も低い場合も有り得る。図3
のプロセス200の例では、TG210には900とい
う優先度が割り当てられ、TG220は810という優
先度を有し、TG230は500という優先度を有す
る。例えば、スレッド群210、220および230の
みが、偶然システム150でアクティブなスレッド群で
あるとすると、TG210は利用可能なスレッド群の中
で最も高い優先度を有するので、次に利用可能なJPの
ディスパッチャは、次に実行すべきスレッド源として、
TG210を選択する。
たなら、このディスパッチャは、同じスレッド群の実行
キューから、実行すべき特定のスレッドを取り出す。T
G210のアクティブなスレッド212〜214は、そ
れぞれ、405、405および400の優先度を有す
る。スレッドは、その優先度の順に、それらの実行キュ
ーに配置される。実行キュー内で等しい優先度のスレッ
ドの順は、ローカル・スケジューリング・ポリシによっ
て決定される。
スレッドを実行するJP自体のキャッシュ内で見つけら
れる可能性を最大に高め、そこにない場合、当該JPの
JP群と関連付けられている第2キャッシュ内で見つけ
られる可能性を最大に高めることが非常に望ましいこと
はよく理解されよう。高位レベルの共有メモリに移動し
て、キャッシュにないデータを得ようとすると、スレッ
ドの処理に遅れを来し、システム全体のスループットに
影響を与える。同様に、近くのメモリではなく遠くのメ
モリにアクセスすることによっても、遅れを生じる。同
時に、キャッシュ局在性を高めるために行われるステッ
プは、時間制約が厳しいスレッドの処理の適時実行に影
響を与える可能性はない。
の全JPに利用可能なものに、スレッド群の利用可能な
JPまたはJPの集合、およびスレッド群の最低許容処
理レベルを指定する属性がある。JP属性は、システム
内でスレッド群の実行が許されているJPまたはJPの
集合を識別する。典型的に、この属性は、システム15
0内の全JPを利用可能として識別するが、システムの
JPの部分集合はユーザが指定する。最低許容処理レベ
ル属性は、スレッド群を親和化できる最低処理レベル
(0、1、2、または3)を指定する。この属性は、リ
アル・タイム・スケジュール・セマンティクス(real ti
me schedule semantaics)のために、プロセッサ親和性
ポリシを無視する際に用いることができる。
最低許容処理レベルは、典型的に0である。こうするこ
とによって、スレッド群をレベル2に低下させ、レベル
2で第3キャッシュを共有する4つのJPから成る特定
群に、このスレッド群をレベル1で親和化したり、レベ
ル1に低下させて、第2キャッシュを共有する2つのJ
Pから成る特定群にスレッド群を親和化させたり、ある
いはレベル0に低下させて、スレッド群を特定のJPに
親和化させることができる。スレッド群を特定のJPま
たは単一のJP群に親和化させることにより、当該スレ
ッド群内のスレッドに対するキャッシュ局在性が改善さ
れることになる。
理レベルは、典型的に、ルート・レベル(本例ではレベ
ル3)であり、スレッド群を最高処理レベルより下に移
動させないようにすることにより、スレッド群が常に最
大数のJPに利用可能であるようにする。したがって、
リアル・タイム・スレッド群に対する応答時間は最適化
される。ユーザは、最低許容処理属性を通じて、リアル
・タイム・スレッド群をレベル2、レベル1、またはレ
ベル0に移動させるように、指定することができる。
び処理インスタンス間における親和性の維持は、システ
ム実行キューによって行うようにしている。図2に示す
抽象化システムには、合計15の実行キューがある。即
ち、8つのレベル0列(各JPに1つずつ)、4つのレ
ベル1列、2つのレベル2列、および1つのレベル3列
である。全ての利用可能なスレッド群は、これら15の
列の1つにあり、その1つにしかない。新たに生成され
るスレッド群は、生成元のスレッド群の実行キューおよ
びその親和性属性を受け継ぐ。
初に生成されると、その生成元の親和性を受け継ぎ、生
成元のスレッド群に対応するロカールの実行キューに配
置される。TG230はタイムシェアリング・スレッド
群であるので、JP100〜107の1つが、最初に実
行すべきものとしてそれを選択した場合、TG230
は、それを選択したディスパッチャと関連付けられた特
定のJPに「引き下げられる」。選択元のディスパッチ
ャは、当該スレッド群をレベル3実行キューから取り出
し、それ自体のレベル0実行キューに配置することによ
って、これを達成する。この時点で、当該JPはTG2
30と親和化されており、TG230が再度親和化され
るか、或いは実行キューがリセットされるまで、TG2
30内のスレッドを実行し続ける。これについては、以
下で論じることにする。ディスパッチャは、実行キュー
を維持する。実行キューは、JP/メモリ・ツリー階層
の各ノードについて、特定ノードに存在するロード可能
なスレッド群のリストを含む。ディスパッチャは、それ
に関連するノードの固有の命名基準によって、実行キュ
ーを識別することができる。
において、グローバル・スケジューリング機構を設ける
には、階層ツリーにおけるあるレベルを、「スケジュー
リング・レベル」として選択する。「スケジューリング
・レベル」は、中期スケジューラがそのスケジューリン
グ処理を実行する、階層ツリーにおけるレベルのことで
ある。スケジューリング・レベルにある階層ツリーの各
ノードを、「スケジューリング・ロカール」と呼ぶ。ス
ケジューリング・ロカールおよびその子ノード(child n
ode)を、「スケジューリング・サブツリー」と呼ぶ。例
示の目的のために、図2に示す階層ツリーにおいて、レ
ベル2をスケジューリング・レベルとすると、ノード1
14および115はスケジューリング・ロカールとな
り、ノード110、111、および114は、1つのス
ケジューリング・サブツリーに属し、ノード104〜1
07、112、113、および115は別のスケジュー
リング・サブツリーに属する。一方、レベル1がスケジ
ューリング・レベルとすると、ノード110〜113が
スケジューリング・ロカールとなり、ノード100、1
01、および110が1つのスケジューリング・サブツ
リーに属し、ノード102、103、および111が別
のスケジューリング・サブツリーに属し、ノード10
4、105、および112が1つのスケジューリング・
サブツリーに属し、そしてノード106、107、およ
び113が別のスケジューリング・サブツリーに属す
る。
ジューリング・レベルとして選択することができる。し
かしながら、どのレベルをスケジューリング・レベルに
選択するしても、選択したレベルは、スケジューリング
のためのローカル・メモリ・レベルと看做される。した
がって、スケジューリング・レベルの選択は、JP/メ
モリ親和性に影響を及ぼし、プロセスを1つのノードか
ら別のノードに移動させるためのコストを割り当てる基
準を設ける。これについては、以下で更に詳細に説明す
る。
ング・レベルに指定し、スケジューリング・レベル内の
ノードをスケジューリング・ロカールに指定することの
重要な一面は、スレッド群を、「ホーム・スケジューリ
ング・ロカール(home scheduling locale)」および「現
スケジューリング・ロカール(current-scheduling loca
le)」に割り当てることができるようになることであ
る。スレッド群またはプロセスの「ホーム・スケジュー
リング・ロカール」は、当該スレッド群またはプロセス
を実行するための好適なJPの祖先ノード(ancestor no
de)である、スケジューリング・ロカールである。スレ
ッド群の「現スケジューリング・ロカール」は、当該ス
レッド群を最後に実行したJPの祖先ノードである、ス
ケジューリング・ロカールである。スレッド群は、その
現スケジューリング・ロカールとは異なるホーム・スケ
ジューリング・ロカールを有することもできる。かかる
状況が発生するのは、スレッド群を1つのスケジューリ
ング・サブツリーから他のスケジューリング・サブツリ
ーに移動し、適格なスレッド群を有さないJPをビジー
の状態に保持するようなときである。しかしながら、J
P/メモリ親和性を向上させるためには、スレッド群は
同一のホームおよび現スケジューリング・ロカールを有
することが好ましい。なぜなら、各スケジューリング・
ロカールは、異なる物理的メモリを表わし、JPは、局
所的資源を使用すれば、より効率的に処理を行うからで
ある。
て、衰退スレッド群(languishing thread group)および
負荷均衡化のための候補を識別し、それぞれのスケジュ
ーリング・ロカールの負荷を監視してあらゆる負荷不均
衡を識別し、現スケジューリング・ロカールとホーム・
スケジューリング・ロカールが同一でない全スレッド群
を識別することによって、JP/メモリ親和性とシステ
ムのスループットのトレードオフとの均衡を取る。ホー
ム・スケジューリング・ロカールとは異なる現スケジュ
ーリング・ロカールを有するスレッド群を、中期スケジ
ューラが識別したとき、中期スケジューラは、(a)当
該スレッド群をホーム・スケジューリング・ロカールに
戻すことによって、それをホームに送る、(b)そのホ
ーム・スケジューリング・ロカールを変更し、その現ス
ケジューリング・ロカールに一致させることによって、
スレッド群を「移行(migrate)」させる、または(c)
そのホーム・スケジューリング・ロカールを変更するこ
となく、スレッド群をその現スケジューリング・ロカー
ルに放置する。
群を識別したときは、以下の3つの方法の内の1つで当
該スレッド群を補助することができる。第1に、このス
レッド群の優先度を高めて、このスレッド群を含む実行
キューのJPディスパッチャがこのスレッド群を選択し
実行する可能性を高める。第2に、中期スケジューラ
は、より高いノードの実行キューにスレッド群を「昇
進」させ、他のJPに対するその可視性を高める。第3
に、中期スケジューラは、当該スレッド群と関連付けら
れた侵入/補助ヒント・フラグ(poach/help hint flag)
をセットし、このスレッド群を、JPが「侵入する」ま
たは「補助する」のに適したスレッド群であるとして識
別する。「侵入」または「補助」が行われるのは、ある
スケジューリング・サブツリー内のアイドル状態のJP
と関連付けられたディスパッチャが、他のスケジューリ
ング・サブツリーのノードにおいて衰退スレッド群を引
き出したときである。「衰退スレッド群」は、実行され
ることなく、800msecのような所定時間期間にわ
たって実行キューの中で待たされているスレッド群のこ
とである。衰退スレッド群が、遠くのスケジューリング
・サブツリー内のJPによって実行されているスレッド
を有する場合、アイドル状態のJPのディスパッチャ
が、このスレッド群の中で最高の優先度を有するスレッ
ドを選択して実行することにより、このスレッド群を
「補助する」。それ以外の場合、ディスパッチャは、こ
のスレッド群全体を占領することによって、このスレッ
ド群に「侵入する」。スレッド群が「侵入」されると、
当該スレッド群の現スケジューリング・ロカールは、侵
入したディスパッチャのそれに変更させられる。スレッ
ド群が「補助」されるときは、当該スレッド群の現スケ
ジューリング・ロカールは、スレッド群が最初に配置さ
れたスケジューリング・サブツリーのスケジューリング
・ロカールに留り、補助されるスレッド群は、そのスレ
ッド群が実行された後、その最初の位置に戻される。
ャが実行すべきスレッド群(TG)を選択する際に従う
シーケンスを示す。同様のシーケンスは、システム内の
全ディスパッチャが従う。JP100がスレッドを実行
可能となると(ステップ501)、そのディスパッチャ
はまず、第1の所定遅延時間が経過するまで、階層ツリ
ー内のその祖先ノードの実行キューを、特定の順番で検
索する。したがって、ディスパッチャ500は、このプ
ロセスを開始するに当たって、タイマをセットする(ス
テップ503)。
行キューおよびレベル1〜3の祖先ノードにおいて、最
高優先度の適格なスレッド群を探す。JP100の場
合、ディスパッチャは、ノード100、110、11
4、および120の実行キューを検索し(ステップ50
5)、適格なスレッド群を探す(ステップ507)。デ
ィスパッチャが適格なスレッド群を見つけられない場
合、予め計算してあるJP100の関係物(relative)リ
ストにある、次の関係ノード(relative node)を探す。
ノードが存在するスケジューリング階層内のレベルは、
このレベルの実行キューが検索されるまでに要する遅延
量を決定する。このレベルのノードに対するタイマが未
だ終了していなければ、ディスパッチャは「アイドル」
スレッドを実行し、JP100をアイドル状態にする
(ステップ515)。タイマが終了した場合、ディスパ
ッチャは、ルートが関係物リスト内の次の関係物であっ
た、サブツリー全体を検索し、実行すべきスレッド群を
見つける(ステップ513)。適格なスレッド群がない
場合、ディスパッチャはステップ505に戻る。この手
順は、ディスパッチャが実行すべき適格なスレッド群を
見つけるまで、繰り返される。
であり、常に可能な限り最低のスケジューリング・グロ
ーバル優先度を有するという点において、特殊である。
JP100〜107の各々は、その実行キューの中に、
アイドル・スレッド群を有する。祖先ノードまたは関係
ノードのいずれにも、アイドル群より高い優先度を有す
る適格スレッド群が含まれていない場合、ディスパッチ
ャはこのスレッド群を抽出し実行する。アイドル・スレ
ッドには遅延が組み込まれており、作業を捜す際に余り
に過激になるのを防止するようにしてある。その理由
は、キャッシュ・ラインが頻繁に無効化され、その結果
システム全体の性能が低下するからである。
層ツリー内のノードのレベルを基準とする。各レベルは
異なる遅延値を有する。これらの値は、機械のアーキテ
クチャに基づくデフォルト値を用いて構成可能である。
通常、ノードのレベルが高い程、遅延も長い。この理論
的根拠は、ディスパッチャが検索する関係ノードがツリ
ーの中で高い程、キャッシュ、メモリ位置、およびバス
/相互接続境界を交差しているというものである。これ
は、現在これら遠いノードに関係付けられているスレッ
ド群を実行すると、コスト増になる可能性があることを
意味する。
スレッド群を有すると思われる実行キューを突き止めた
なら、実行キューの適格リスト上にある個々のスレッド
群の検索を開始する。まず、ディスパッチャは、実行キ
ューが同一スケジューリング・ツリー内にあるのか、遠
いスケジューリング・ツリー内にあるのかを判定する
(図5、ステップ523)。実行キューがディスパッチ
ャと同一のスケジューリング・ロカールにある場合、デ
ィスパッチャは単に実行キューの適格リストを検索する
(ステップ525)。このリストは、優先度がアイドル
・スレッド群のそれよりも高いスレッド群について、優
先度順にソートしてある。受け入れ可能なスレッド群が
見つからない場合、ディスパッチャはステップ505に
戻る。
いる場合、最初に適格リストを走査して、スレッド群の
いずれかに、中期スケジューラが侵入または補助するの
に適した候補であるとして印されたものがないかを調べ
る(ステップ527)。もしもなければ、ディスパッチ
ャは優先度に基づいてスレッド群を検索する(ステップ
525および529)。この場合の論理的根拠は、侵入
/補助に適した候補として印されているスレッド群は、
ある時間にわたって衰退しており、当該スレッド群が遠
隔JP上で実行されると無効になる、ホット・キャッシ
ュ・フットプリント(hot cache footprint)を有する可
能性が低いからである。
たスレッド群の中で最高の優先度を有するスレッドを抽
出して実行する(図6、ステップ533)。次に、ディ
スパッチャは、選択したスレッド群を新しい実行キュー
に移動する必要があるか否か判定する(スレッド群がJ
P100の実行キューにないとき)(ステップ53
5)。スレッド群がJP100の実行キュー上で見つか
った場合、侵入/補助ヒント・フラグをクリアし(ステ
ップ537)、新たなスレッドの実行を開始する(ステ
ップ539)。JP100の実行キュー上で見つからな
かった場合、スレッド群を新たな実行キューに移動する
必要がある可能性がある。スレッド群が、他のJPが現
在実行中の他のスレッドを全く有していない場合(図
7、ステップ545)、ディスパッチャは、このスレッ
ド群をレベル0の実行キューに移動可能か否かをチェッ
クする(ステップ551)。可能であれば、ディスパッ
チャはこのスレッド群をJP100の実行キューに移動
し(ステップ555)、侵入/補助ヒント・フラグをク
リアし(図6、ステップ537)、実行を開始する(ス
テップ539)。可能でなければ、ディスパッチャは、
スレッド群を配置するのを許された最低レベルに一致す
るレベルを有する祖先ノードの実行キューに、このスレ
ッド群を移動する(図7、ステップ553)。
を有する場合(ステップ545)、ディスパッチャは、
このスレッド群が現在、祖先ノードの実行キュー上に存
在するか否かを判定する(ステップ547)。スレッド
群が現在祖先ノードの実行キュー上に存在する場合、デ
ィスパッチャは、スレッド群があるところに放置し、侵
入/補助ヒント・フラグをクリアし(図6、ステップ5
37)、選択したスレッドの実行を開始する(ステップ
539)。スレッド群が現在祖先ノードの実行キュー上
に存在しない場合、ディスパッチャは、JP100の実
行キューに対して最下位の共通祖先、および当該スレッ
ド群が現在存在している実行キューを突き止め、スレッ
ド群をその実行キューに移動させる(ステップ54
9)。最下位の共通祖先とは、レベル番号が最も小さい
実行キューであり、JP100および選択したスレッド
群の実行キュー双方の祖先である。例えば、ディスパッ
チャが、現在ノード115に親和化されているスレッド
群を実行しようと決定した場合、最下位共通祖先は、ツ
リーのルート、即ちノード120である。最下位共通祖
先は、システムの初期化時に予め計算され、ディスパッ
チャが読み取り可能なデータ構造内に記憶されている。
場合で、このスレッド群が他に現在実行中のスレッドを
有さないとき、そしてスレッド群が現在存在する実行キ
ューとは異なるロカールに新たな実行キューがある場
合、スレッド群の現スケジューリング・ロカールを変更
する(ステップ543)。これは、JPがスレッド群に
「侵入」することに対応する。スレッド群が他に現在実
行中のスレッドを有する場合、スレッド群の現スケジュ
ーリング・ロカールの修正は行わず、代わりに、JPは
単にスレッド群を「補助」する。
・スレッド群は、システムの3つの処理レベルの間を上
下に移動可能であり、様々な時刻に、個々のJP、JP
群、またはシステム内の全JPとの親和化が可能である
ことが理解されよう。
おうとする固有の傾向を有する。システムが比較的アイ
ドル状態の期間にある場合、タイムシェアリング・スレ
ッド群は、ディスパッチャが実行可能なスレッドを検索
することによって、より高いレベルの実行キューに引き
上げようとする傾向があり、それらのスレッドを多数の
JPによって共有させる。作業負荷が軽いことを自己認
識したJPは、それらよりもビジーなJPを補助し、い
つでもシステム内のよりビジーなJPからタイムシェア
リング・スレッド群をいくつか引き受けようとする。逆
に、システムがビジーになると、タイムシェアリング・
スレッド群は、下方向に移動しようとする。このように
タイムシェアリング・スレッド群とJPとの間の親和性
をより緊密にすると、キャッシュの局在性が改善される
ので、望ましい。
レッド群は、ディスパッチャの処理によって、JP全体
にほぼ同様にそれら自体を分散させる。しかしながら、
理論的に、ビジーなシステムのスレッド群の分散は不均
衡となり、あるJPが他のJPよりもビジーとなって、
あるスレッド群の実行が所望の速度よりも遅くなってし
まう可能性がある。
リング・ロカールについてスケジューリング・ロカール
の負荷データ(SLD)を計算し、スレッド群の進展を
監視し、衰退スレッド群を助け、あるスレッド群のホー
ムまたは現スケジューリング・ロカールを移動すること
によって、処理およびメモリ負荷の均衡が失われないこ
とを保証する。中期スケジューラ600がこれらの機能
を行う方法については、図8〜図15を参照しながら、
以下で更に詳しく説明する。
つシステム内のアクティブなスレッド群全てのステータ
スをチェックし(ステップ603)、それらが処理中か
衰退中かを判定し(ステップ609)、さらにそれらが
侵入されたか否かを判定する(ステップ625)。中期
スケジューラがスレッド群のステータスを見る度に、S
LDが陳腐化していないかチェックする(ステップ60
5)。SLDが陳腐化している場合、中期スケジューラ
は、JP、メモリ、優先度、および複合負荷値を各スケ
ジューリング・ロカールについて計算することにより、
新しいSLDを計算する(ステップ607) スケジューリング・ロカールに対するJPの負荷は、関
連するスケジューリング・サブツリーの実行キューの中
の適格エンティティ(スレッド)の数である。スケジュ
ーリング・ロカールに対するメモリ負荷は、関連するス
ケジューリング・サブツリー内の使用メモリの構成済バ
イト数である。
の優先度順に並べたグローバル・リストを維持しアクセ
スすることによって、優先度負荷を計算する。中期スケ
ジューラは、同一または実質的に同一の優先度を有する
スレッド群をリストに類別し、グルーピング(grouping)
内の各スレッド群に「優先度点」を割り当てる。例え
ば、最も高い優先度を有するグルーピング内のスレッド
群には、優先度点20を割り当て、次に高い優先度を有
するグルーピング内のスレッド群には優先度点19を割
り当てるようにする。連続的に減少する優先度点の割り
当ては、ゼロの値に到達するまで(この場合、それより
低い優先度を有するスレッド群にも全て優先度点0が割
り当てられる)、またはグルーピングの全てに別の方法
で優先度点が割り当てられるまで、続けられる。中期ス
ケジューラは、次に、リストを十分に調べ、各スレッド
群の現ロカールを決定し、各スケジューリング・ロカー
ルのスケジューリング・サブツリー内の各スレッド群毎
に、割り当てられた優先度点を蓄積する。この各スケジ
ューリング・ロカール毎に蓄積された値は、スケジュー
ル・ロカールの優先度負荷となる。
荷は、重み付けし、正規化したJP、メモリ、および優
先度負荷の合計である。JP、メモリ、および優先度負
荷を0ないし100までの値に正規化し、利用可能なシ
ステム・メモリが比較的小さいか否かのような、性能基
準(performance criteria)に基づいて重み付けする。中
期スケジューラは、陳腐化係数カウンタを用いて、SL
Dが陳腐化していないか判断することができる。このカ
ウンタは、SLDがリフレッシュされる毎にリセットさ
れ、プロセスの特定ルーチンにしたがって減数される。
プ609)、中期スケジューラは、スレッド群が順番を
待っているが実行されない時間を監視し、ステップ61
1、615、およびステップ619(図9)において判
定されるように、関連する時間期間が過ぎたときに、以
下の3つの機能の1つを実行する。(1)スレッド群の
優先度を上げる(ステップ613)。(2)スレッド群
を、階層ツリー内のより高い、より可視性の高いレベル
に昇進させる(しかし、スケジューリング・レベル未
満)(ステップ617)。または、(3)スレッド群の
侵入/補助ヒント・フラグをセットする(ステップ62
1)。作業を捜しているディスパッチャは最高の優先度
を有するスレッド群を選択するので、スレッド群の優先
度を高めることによって(ステップ613)、作業を捜
しているディスパッチャがそのスレッド群を選択する可
能性が高くなる。しかしながら、JPが現在長いプロセ
スを実行中の場合、またはJPの実行キューの中に優先
度が高いスレッド群が残っている場合、スレッド群の優
先度を高くしても、当該スレッド群を少しでも速く実行
しようとする可能性があまり高くならない場合もある。
ケジューラがスレッド群の進展がないと判断した場合、
中期スケジューラは、階層ツリー内で次に高い、より可
視性が高いレベルにスレッド群を昇進させる(しかし、
スケジューリング・レベル未満)(ステップ617)。
この昇進は、当該スレッド群を、直ちに全ての従属する
JPのディスパッチャに見えるようにするので、同一ス
ケジューリング・サブツリー内のディスパッチャが衰退
スレッド群を選択する可能性を高めることになる。
スレッド群が進展していない場合、中期スケジューラは
このスレッド群の侵入/補助ヒント・フラグをセットす
る。他のサブツリーにおいて作業を捜しているディスパ
ッチャは、侵入/補助ヒント・フラグがセットされてい
ないスレッド群を選択する前に、侵入/補助ヒント・フ
ラグがセットされているスレッド群を選択するので、こ
のフラグをセットすることによって、異なるスケジュー
リング・サブツリー内のディスパッチャがこのスレッド
群に侵入する、またはこれを補助する可能性を高める。
に中期スケジューラは、それぞれ、スレッド群に対し
て、優先度を高める、昇進させる、あるいはヒント・フ
ラグをセットするが、これらは互いに独立とし、中期ス
ケジューラが衰退スレッド群を補助する方法を、システ
ムの特性に基づいてシステム毎に変化させ、システムの
スループットを向上させるようにする。一例として、第
1の所定時間期間を8,000msec、第2の所定時
間期間を2,000msec、そして第3の所定時間期
間も2,000msecとしてもよい。したがって、中
期スケジューラは、そのルーチンを1秒毎に実行し、そ
のルーチン2サイクルの間(2,000msec)列に
並んでいるが実行されていないスレッド群については、
その侵入フラグをセットし、その後各2,000mse
c間隔で昇進させる。8サイクル(8,000mse
c)後にスレッド群が衰退している場合、それ以降8,
000msec間隔毎にその優先度を高める。衰退スレ
ッド群を補助することにより、中期スケジューラはスケ
ジューリングの不均衡(inequities)を防止または補正す
る。
がExec()コマンドによって最初に生成されたと
き、または別のスケジューリング・ロカールに移された
ときに、各スレッド群毎に、減退係数(dampening facto
r)をセットする。減退係数をセットして、中期スケジュ
ーラが、最初にディスパッチャに負荷を均衡化させよう
ともせずに、負荷の不均衡に応答して、キャッシュのス
ラッシング(thrashing)を行うのを防止する。スレッド
群のステータスをチェックする毎に、中期スケジューラ
は、当該スレッド群の減退係数を減数する(図8)。し
たがって、スレッド群のスケジューリング・ロカールを
変更し、その減退係数を、例えば、5の値にセットした
とき、中期スケジューラは、減退係数を0に減数するま
で、スレッド群を移行させたり、あるいは移動させたり
しようとしない。減退処理は、中期スケジューラが頻繁
にスレッド群を移行するのを防止することによって、キ
ャッシュのスラッシングを減少させる。
ーリング・ロカールがホーム・スケジューリング・ロカ
ールよりもビジーでないとき、侵入されたスレッド群の
ホーム・スケジューリング・ロカールを、その現スケジ
ューリング・ロカールに移行することによって、また
は、ホーム・スケジューリング・ロカールが現スケジュ
ーリング・ロカールよりもビジーでないとき、侵入され
たスレッド群をそのホーム・スケジューリング・ロカー
ルに戻すことによって、均衡の取れたシステムの処理負
荷を保証する。中期スケジューラが、侵入されたスレッ
ド群を検出したとき(即ち、その現スケジューリング・
ロカールがそのホーム・スケジューリング・ロカールと
異なる場合)、そのスレッド群の現スケジューリング・
ロカール(CSL)の複合負荷が、そのスレッド群のホ
ーム・スケジューリング・ロカル(HSL)よりも、所
定の「ホーム送り(send home)」スレシホルドよりも大
きい量だけ、超過しているか否かを判定する(ステップ
627)。その量が「ホーム送り」スレシホルドを超過
していない場合、中期スケジューラは、このスレッド群
のホーム・スケジューリング・ロカールの複合負荷が、
このスレッド群の減スケジューリング・ロカールより
も、所定の「移行(migrate)」スレシホルドよりも大き
い量だけ、超過しているか否かを判定する(ステップ6
29)。侵入されたスレッド群の現スケジューリング・
ロカールまたはホーム・スケジューリング・ロカールの
いずれも、「ホーム送り」または「移行」スレシホルド
以上他方よりも超過した負荷を有していない場合、中期
スケジューラは、そのJP負荷を「ビジー」スレシホル
ドと比較することによって、現スケジューリング・ロカ
ールがビジーか否かチェックする(ステップ631)。
現スケジューリング・ロカールがビジーでない場合、中
期スケジューラは、現ロカールに対するSLD陳腐化係
数を増加し(ステップ633)、スレッド群をその侵入
状態のまま放置し、性能データ(performance data)を蓄
積して、侵入されたスレッド群をいつ移行すべきか、ま
たは移行すべきか否か、あるいは後にそれをホームに戻
すべきかを判定する。
スケジューリング・ロカールの複合負荷が、所定の「ホ
ーム送り」スレシホルドより多い量だけ、スレッド群の
ホーム・スケジューリング・ロカールの複合負荷を超過
していると、中期スケジューラが判定した場合、このス
レッド群をそのホーム・スケジューリング・ロカールに
戻し、このスレッド群の現スケジューリング・ロカール
がこのスレッド群のホーム・スケジューリング・ロカー
ルと同じになるようにする(ステップ635)。
ーム・スケジュール・ロカールの複合負荷が、所定の
「移動」スレシホルドより大きい量だけ、スレッド群の
現スケジューリング・ロカールの複合負荷を超過してい
ると、中期スケジューラが判定した場合、中期スケジュ
ーラは、このスレッド群と関連付けられた減退係数が0
であるか否かをチェックすることにより、スレッド群が
減退しているか否かを判定する(ステップ637)。こ
のスレッド群が減退している場合(即ち、その減退係数
がゼロでない)、中期スケジューラはこのスレッド群を
ホームに送る(ステップ635)。一方、スレッド群が
減退していない場合(即ち、その減退係数がゼロであ
る)、中期スケジューラは、このスレッド群のホーム・
スケジューリング・ロカールをこのスレッド群の現スケ
ジューリング・ロカールに変更することによって、この
スレッド群を「移行」する(ステップ639)。スレッ
ド群を検査した後、中期スケジューラは、まだ検査して
いないアクティブなスレッド群があるか否か判定し(図
8、ステップ641)、次のアクティブなスレッド群を
見つけ出す(ステップ603)。
システムの処理に対する更にもう1つのチェックとし
て、システムは、周期的に全スレッド群をそれらのスケ
ジューリング・レベルの実行キューに再度引き上げるこ
とによって、各スケジューリング・ロカール内で「負荷
均衡化」機能を実行する(ステップ645)。スレッド
群は直ちに、スケジューリング・ロカール内の全JPに
見えるようになる。この機能は、比較的短い時間期間以
上の間負荷の不均衡状態が存在するのを防止する。好適
実施例では、このリセット機能は10秒毎に実行される
が、他の時間期間を設定してもよい(ステップ64
3)。
1つの対策は、中期スケジューラが周期的にスケジュー
リング・ロカール・レベルで負荷の均衡化を行うことで
ある。まず、中期スケジューラは、スケジューリング・
ロカールにおいて負荷の均衡化を行う時刻であるか否か
をチェックする(ステップ647)。その時刻であれ
ば、中期スケジューラは、複合負荷値が最も大きいスケ
ジューリング・ロカールの位置を突き止め(図11、ス
テップ649)、ステップ651で、JP負荷が複合負
荷の支配的な要因であるか否かを判定する。JP負荷が
支配的な要因である場合、中期スケジューラは、図12
に示すプロセスを用いて、負荷均衡化を行う。JP負荷
が支配的な要因ではない場合、中期スケジューラは、メ
モリ負荷が複合負荷の支配的な要因であるか否かをチェ
ックする(ステップ653)。メモリ負荷が支配的な要
因である場合、中期スケジューラは、図13に示すプロ
セスを用いて、負荷均衡化を行う。JP負荷もメモリ負
荷も支配的な要因でない場合、中期スケジューラは、図
14に示すプロセスを用いて、負荷均衡化を行う。
て、中期スケジューラは開始に際して、JP負荷が最も
軽いスケジューリング・ロカールを見つけ出し(ステッ
プ655)、複合負荷が最も重いスケジューリング・ロ
カールと最も軽いスケジューリング・ロカールとの間の
JP負荷の差に基づいて、移動すべきスレッド群の数を
計算する(ステップ657)。次に、中期スケジューラ
は、複合負荷が最も大きいスケジューリング・ロカール
内で、最低の優先度のアクティブなスレッド群を見つけ
出す(ステップ659)。このスレッド群が減退してい
ない場合(ステップ661)、中期スケジューラは、こ
のスレッド群が移行に適したメモリ・「フットプリン
ト」を有するか否かを判定する(ステップ663)。
ッド群の「フットプリント」とは、当該メモリ・ロカー
ルにおいてスレッド群が使用する物理メモリ量のパーセ
ンテージを表わす。JP負荷および優先度負荷の均衡化
の間にスレッド群を移動するのに適したフットプリント
を構成するものは、システム毎に異なる。典型的なスレ
シホルドは、例えば、それらの現ロカールの物理的メモ
リにおいて、10パーセント未満のフットプリントを有
するスレッド群とすることができる。移動すべきいずれ
のスレッド群も全て適切なフットプリントを有すること
を保証することによって、中期スケジューラは、負荷均
衡化の間に大きなスレッド群を移動させる事態を防止す
ることができる。
的としたスレッド群が適切なメモリ・フットプリントを
有していない場合、中期スケジューラは次に優先度が低
いスレッド群を見つけ出し(ステップ665)、新たに
選択したスレッド群について、ステップ661および6
63の検査を繰り返す。選択したスレッド群が減退して
おらず、目的としたスレッド群が適切なメモリ・フット
プリントを有する場合、中期スケジューラは、このスレ
ッド群を、JP負荷が最も軽いスケジューリング・ロカ
ールに移行させる(ステップ667)。次に、中期スケ
ジューラは、SLD陳腐化係数を調節し(ステップ66
9)、計算した数のスレッド群を移動させたか否かを判
定する(ステップ671)。十分なスレッド群を移動さ
せていない場合、中期スケジューラは次に優先度が低い
スレッド群を見つけ出し(ステップ665)、十分なス
レッド群を移動させるまで、ステップ661〜671を
繰り返す。一旦計算した数のスレッド群を移動させたな
ら、中期スケジューラは、上述のように、それに割り当
てられた機能の実行を繰り返す前に、所定時間期間にわ
たって処理を中断する(図8、ステップ673)。
期スケジューラは開始に際して、複合負荷が最も重いス
ケジューリング・ロカールと最も軽いスケジューリング
・ロカールとの間のメモリ負荷の差に基づいて、移動す
べきメモリ負荷量を計算する(ステップ675)。次
に、中期スケジューラは、複合負荷が最も重いスケジュ
ーリング・ロカールの中で、優先度が最も低いアクティ
ブなスレッド群を見つける(ステップ677)。目的と
するスレッド群が、移動すべきメモリ負荷量に対して、
その現ロカール内に適切なメモリ・フットプリントを有
する場合(ステップ679)、中期スケジューラは、こ
のスレッド群が衰退しているか否かを判定する(ステッ
プ680)。
たフットプリントは、移動させなければならないメモリ
量に基づいて変化する。例えば、あるロカールから物理
メモリの20パーセントを他のロカールに移動してメモ
リ負荷の均衡化を図る場合、フットプリントが20パー
セント以下のスレッド群を移動させればよい。スレッド
群が減退している場合、またはそのフットプリントが適
切でない場合、中期スケジューラは次に優先度が低いス
レッド群を見つけ出し(ステップ681)、新たに選択
したスレッド群に対して、ステップ680および681
の検査を繰り返す。
のフットプリントが適切である場合、中期スケジューラ
は、メモリ負荷が最も軽いスケジューリング・ロカール
に、このスレッド群を移行させる(ステップ682)。
次に、中期スケジューラはSLD陳腐化係数を調節し
(ステップ683)、計算した量のメモリ負荷を移動さ
せたか否かを判定する(ステップ684)。十分なメモ
リ量を移動させていない場合、中期スケジューラは次に
優先度が低いスレッド群を見つけ出し(ステップ68
1)、十分なメモリ量を移動させるまで、ステップ67
9〜684を繰り返す。一旦計算した量のメモリ負荷を
移動させたなら、中期スケジューラは、上述のように、
それに割り当てられた機能の実行を繰り返す前に、所定
時間期間にわたって処理を中断する(図8、ステップ6
73)。
期スケジューラは開始に際して、優先度負荷が最も軽い
スケジューリング・ロカールを見つけ出し(ステップ6
85)、複合負荷が最も重いスケジューリング・ロカー
ルと最も軽いスケジューリング・ロカールとの間の優先
度負荷の差を計算する(ステップ686)。次に、中期
スケジューラは、計算した負荷の差が所定のスレシホル
ドを超過しているか否かを判定する(ステップ68
7)。超過していなければ、中期スケジューラは負荷の
均衡化を行わない。負荷の差がスレシホルド・レベルを
超過している場合、中期スケジューラは、スケジューリ
ング・ロカール内で、適切なフットプリントを有し(ス
テップ690)、複合負荷が最も重く(ステップ689
および691)、優先度が最高のスレッド群を見つけ出
し、優先度負荷が最も軽いスケジューリング・ロカール
にこのスレッド群を移行させる(ステップ692)。次
に、中期スケジューラはSLD陳腐化係数を調節し(ス
テップ693)、上述のように、それに割り当てられた
機能の実行を繰り返す前に、所定時間期間にわたって処
理を中断する(図8、ステップ673)。
xec()コマンドによって生成されるスレッド群の初
期ホーム・スケジューリング・ロカールの割り当てを制
御することによって、階層ツリー全体にわたって均衡の
取れた処理負荷を保証することもできる。寿命が短いプ
ロセス(short-lived process)では、初期ホーム・スケ
ジューリング・ロカールは、そのプロセスにとって唯一
のスケジューリング・ロカールとなろう。寿命が長いプ
ロセスでは、初期ホーム・スケジューリング・ロカール
は、プロセスのページ・フォールト(page fault)を発生
させるホーム・スケジューリング・ロカールであるの
で、将来の性能を左右することになろう(bias)。
新たなプロセスを生成したとき、ホーム・スケジューリ
ング・ロカールはスレッド群に対して望まれるロカール
の位置を表わすので、スレッド群はその親のホーム・ス
ケジューリング・ロカールの位置を受け継ぐ。プロセス
がUNIX Exec()コマンドを実行するとき、そ
の画像を上書きするので、その以前のメモリとは何の関
係も有さない(共有メモリを除く)。この場合、JP資
源を最大化しメモリ資源が利用可能なホーム・スケジュ
ーリング・ロカールに、このプロセスを割り当てる。図
15は、Exec()プロセスを、ホーム・スケジュー
リング・ロカールに割り当てるために実行するプロセス
を示す。Exec()コマンドを実行するとき、カーネ
ルのプロセス制御サブセクションは、中期スケジューラ
・サブセクションを呼び込み、中期スケジューラ・サブ
セクションは、呼び出し元のタスク群の、複合負荷が最
も軽いホーム・スケジューリング・ロカールを移動させ
る。まず、複合負荷が最も小さいスケジューリング・ロ
カールを識別する(ステップ697)。負荷が最も小さ
いスケジューリング・ロカールと呼び出し元タスク群の
ホーム・スケジューリング・ロカールとの間の複合負荷
の差がスレシホルド・レベルを超過している場合(ステ
ップ697)、スレッド群のホーム・スケジューリング
・ロカールを、複合負荷が最も軽いスケジューリング・
ロカールに変更する(ステップ698)。スレシホルド
・レベルを超過していない場合、中期スケジューラ・サ
ブシステムが制御をプロセス制御サブシステムに返す前
に、スレッド群は、その親プロセスのホーム・スケジュ
ーリング・ロカールを引き継ぐ(中期スケジューラは別
個のカーネル・スレッドであるが、Exec()コマン
ドは、呼び出し元の制御スレッドの下で、中期スケジュ
ーラ・サブシステムを通過する)(ステップ699)。
Aシステムにおいて考慮すべき別の点は、システムのメ
モリ資源の管理である。スレッド群を移行させる場合、
そのスレッド群と関連付けられたメモリも移動させるこ
とが望ましい場合もある。加えて、NUMAシステムの
メモリ・マネージャは、好ましくは、フォールティング
・プロセス(faulting process)の位置および当該ページ
に含まれる情報のタイプに基づいて、ページ・フォール
ト位置を割り当てる。更に、メモリ・マネージャは、均
衡の取れたシステム・メモリ資源の使用を維持しなけれ
ばならない。
オペレーティング・システムは、システム全体に分散し
た複数の物理的および仮想資源を表わすデータ構造を制
定することにより、図2に示したものに類似したシステ
ム抽象概念を利用する、仮想メモリ・マネージャを含
む。このデータ構造は、抽象化したシステムの種々のノ
ードと関連付けられた種々のテーブルという形状を取
る。図16および図17は、図1に示したようなNUM
Aマルチプロセッサ・システムのために考えられるこれ
らデータ構造の例を示す。
モリは、同一コストでしかも同一アクセス時間で全ての
JPによって等しくアクセス可能な物理メモリ・ブロッ
クから成る。しかしながら、NUMAシステムでは、シ
ステムのメモリは、異なるアクセス時間およびコストを
有する種々の分散型共有メモリ・ブロックで構成するこ
とができる。図16は、NUMAシステムの物理メモリ
の割り当てを表わす、システムの抽象概念とデータ構造
とを示す。仮想メモリ・マネージャが使用する抽象概念
は、各共有メモリ群と関連付けられたトレジャリ・ノー
ド(treasury node)70〜73、および階層ツリー抽象
概念のルート・ロカール・ノード(routelocale node)1
20と関連付けられた高位ポリシ・ノード76を含むポ
リシ・ツリーを形成する。また、ポリシ・ツリー抽象概
念は、階層ツリー抽象概念のノード114および115
と関連付けられた中間ポリシ・ノード74および75を
含んでもよい。トレジャリ・ノードは、ページ配置アル
ゴリズムを実施するためにポリシ・ノードによって確定
されたポリシにしたがって、物理メモリ空間を割り当て
る機構を表わす。ポリシおよびトレジャリ・ノードの、
階層ツリー抽象概念のノードとの関連は、ロカール対ノ
ード参照テーブル77中に保持されている。ロカール対
ノード参照テーブル77は、好ましくは、一方の軸にJ
P番号、他方の軸にレベル番号を指定した二次元アレイ
である。各JPおよびレベル番号の指定毎に、ポリシま
たはトレジャリ・ノードの一方に対するポインタが存在
する。このように、オペレーティング・システムのスケ
ジューリング要素が用いるのと同一JP−レベル命名基
準を用いて、トレジャリまたはポリシ・ノードを素速く
識別することができる。
呼ばれる個別要素で構成されており、フレームのサイズ
は、基礎となるプロセッサ・アーキテクチャによって決
定されるが、一般的に4KBである。オペレーティング
・システムは、利用可能な物理メモリを、例えば、10
24個の連続フレームから成る群に分割し、次にこれら
フレーム群をシステム内のトレジャリに割り当てる。こ
の割り当ては、高位フレーム・テーブル78の中に保持
されている。これらフレームの各々は、固有の識別番号
を有する。この番号は、フレームの開始物理アドレスを
フレーム・サイズで除算することによって計算すること
ができる。更に、各フレームは、高位フレーム・テーブ
ル78内の1つのスロットによって管理され、このスロ
ット番号は、フレームの固有識別番号をフレーム群のサ
イズで除算することによって計算することができる。N
UMAシステム内の物理メモリの物理アドレスは、連続
でなくてもよく、高位フレーム・テーブル78において
識別されるフレームのいくつかは、実際の物理メモリを
表わさない場合もある。このような場合、高位フレーム
・テーブル78のかかるフレームへのエントリには、無
効と印すこともできる。
は、関連するメモリ・フレーム・テーブルを用いて、そ
れらのロカールにおいて物理メモリのフレームを管理
し、割り当てる。ポリシ・ノードを設けることによっ
て、このポリシ・ノードと関連付けられた所定のポリシ
の考慮にしたがって、階層ツリー抽象概念におけるより
高いレベルのノードに割り当てられる物理メモリのフレ
ームを、実際には、ポリシ・ノードの子トレジャリ・ノ
ードから割り当てるようにする。典型的に、これらのポ
リシは、子孫メモリ群(descendent memory group)間で
かかる高位メモリ要求の負荷均衡化を行うように選択さ
れる。したがって、ポリシ・ツリーにおいてレベルが高
い程、フレームを割り当てるメモリ群の数が多くなるこ
とを意味する。フレームを割り当ててフォールトを満足
させるときに、ページ・フォールト処理ルーチンによっ
て起動されるフレーム割り当てルーチンが、ポリシ・ツ
リーを通過する。フレーム割り当て部は、ページ配置制
約を用いて、フレームを割り当てるメモリ・ロカールを
決定する。この制約は、ページ配置アルゴリズムの適用
を開始する、ポリシ・ノードを識別する。ポリシ・ツリ
ーの通過は、論理アドレスによってマップされたオブジ
ェクト・ページに帰せられる制約によっては、ルート、
リーフ、またはある中間レベルにおいて開始することが
できる。いずれのマッピングのデフォルト制約も、メモ
リ・オブジェクトと関連付けられている。デフォルト制
約は、オブジェクトの属性に応じて、オブジェクトに割
り当てられる。
ードからポリシ・ツリーの通過を開始し、フレームを割
り当てるべきフレーム・トレジャリを選択するまで、そ
れが遭遇した各ノードに、レベル依存ポリシ(level-dep
endent policy)を適用する。重み付けを用いて、ツリー
の所与のレベルにおいて、同胞ノード(silbing nodes)
間で分散された全数のフレームにおける不均衡を補償す
ることができる。ポリシ・ツリー管理のために用いられ
るデータ構造は、ポリシ・ノード・クラス一覧と、リン
ク構造とからなり、これは、ポリシ・ツリー内の全タイ
プのポリシ・ノードの中に埋め込まれる。ポリシ・ツリ
ー内の特定タイプのノードに特定した他の情報も、この
構造の中に保持することができる。本発明のオペレーテ
ィング・システムのページ配置アルゴリズムおよびその
他のメモリ割り当てアルゴリズムがトレジャリおよびポ
リシ・ノードを利用する具体的な態様については、以下
でより詳細に説明する。
理)メモリの割り当てを表わす、システムの抽象概念お
よびデータ構造の例を示す。仮想メモリ・マネージャが
使用する抽象概念は、構造ツリー抽象概念の各ノードと
関連付けられたメモリ・プール(memory pool)80〜8
6を含む。メモリ・プールの、階層ツリー抽象概念との
関連は、ロカール対ノード参照テーブル87の中に保持
されている。ロカール対ノード参照テーブル87は、好
ましくは、一方の軸にJP番号を指定し、他方の軸にレ
ベル番号を指定した二次元アレイである。各JPおよび
レベル番号の指定毎に、メモリ・プールの1つへのポイ
ンタが存在する。このようにして、オペレーティング・
システムのスケジューリング要素が用いるのと同じJP
−レベル命名基準を用いて、メモリ・プールを素速く識
別することができる。
ed memory)を区別することも可能な場合もある。無配線
メモリとは、配線メモリから、物理メモリ外に割り振ら
れた仮想メモリ領域のことでる。また、配線メモリと
は、物理メモリ内に存在することを強制された、仮想メ
モリの領域のことである。これら異なるタイプのメモリ
領域を収容するために、本発明のオペレーティング・シ
ステムは、抽象概念の各ノードに2つのタイプのメモリ
・プールを、即ち、配線メモリに1つ、無配線メモリに
1つのメモリ・プールを形成することができる。2つの
異なるタイプのメモリ・プールは図17には示されてい
ないが、システムの抽象概念の中に同様な並列メモリ構
造を生成することにより、2つ以上の異なるタイプのメ
モリ・プールを考慮するように、システムを容易に修正
することができる。加えて、共有ページ・テーブル割り
当てに用いる特殊な無配線メモリ・プールを、ルート・
メモリ・ロカールにのみ形成することもできる。更に、
抽象概念の中の種々のロカールに他のタイプのメモリ・
プールを形成し、システムの処理効率を向上するメモリ
資源間のあらゆるタイプの区別にも対処することも可能
である。
に分割されている。プール単位は、例えば、4MBの所
定の一定サイズを有し、1つ仮想メモリ範囲のみに対応
する。本例では、フレーム群サイズとプール単位サイズ
とを同一として開示するが、同一ではない他のフレーム
およびプール単位サイズを選択してもよい。プール単位
の各々は固有の識別番号を有し、この識別番号は、プー
ル単位の開始論理アドレスをプール単位サイズで除算す
ることによって、素速く計算することができる。プール
単位の各々が割り当てられるメモリ・プールは、プール
単位テーブル88の中に保持される。NUMAシステム
内の仮想メモリの論理アドレスは不連続でもよいので、
プール単位テーブル88において識別されるプール単位
のいくつかは、割り当てられた仮想メモリを表わさない
ものもある。このような場合、プール単位テーブル88
のかかるプール単位へのエントリには、無効と印され
る。
てられていない。続いて、プール単位は、必要に応じ
て、メモリ・プールに割り当てられる。このように、プ
ール単位は、動的にシステム中に割り当てることがで
き、プール単位を統計的にシステム初期化時に割り当て
る場合のように、多くのメモリ・プールにわたってメモ
リ資源を断片化することもなく、また人工的なメモリ枯
渇(memory exhaustion)問題に発展することもない。仮
想メモリ・マネージャが、カーネル・メモリに対する要
求を処理する方法を、図18ないし図20に示す。メモ
リ要求がスレッドから発生したとき(図18、ステップ
701)、仮想メモリ・マネージャは、システムが現在
初期化中か否かを判定する(ステップ703)。そうで
あれば、仮想メモリ・マネージャは、ルート・ロカール
120からの仮想メモリを割り当てることを選択する
(ステップ705)。システムが初期化されていた場
合、仮想メモリ・マネージャは、メモリ要求量が少ない
か否か(≦64バイト)を判定する(ステップ70
7)。メモリ要求量が少ない場合、仮想メモリ・マネー
ジャは、スレッドを実行するJPに最も近いメモリ・ロ
カールからのメモリを割り当てる(ステップ709)。
メモリ要求量が少なくなく、特定のロカールが要求され
ていない場合、仮想メモリ・マネージャは、ホーム・ス
ケジューリング・ロカールを獲得し、選択する(ステッ
プ711)。ホーム・スケジューリング・ロカールは、
上述のように、スレッドのスレッド群が最も緊密に親和
化されているロカールである。
リ・マネージャは、選択したメモリ・ロカールに命名基
準を用いて、ロカール対ノード参照テーブル87から、
それと関連付けられたメモリ・プールを識別する(ステ
ップ713)。一旦メモリ・プールが識別されたなら、
仮想メモリ・マネージャは、識別されたメモリ・プール
が十分な論理空間を有するか否かを判定する(ステップ
715)。識別されたメモリ・プールが十分な空間を有
する場合、仮想メモリ・マネージャは、先の要求のため
に論理空間を割り当てる(ステップ717)。一方、メ
モリ・プールが十分な論理空間を有していない場合、仮
想メモリ・マネージャは、プール単位テーブル88の中
で、未使用のプール単位を捜し出し(ステップ71
9)、識別されたメモリ・プールにプール単位を追加す
る(ステップ721)。次に、メモリ要求量がプール単
位のサイズより少ない場合、仮想メモリ・マネージャは
プール単位を分割し、要求された論理空間を割り当てる
前に、メモリ要求量を有するメモリ・ブロックを得る
(ステップ717)。
ルがトレジャリ・ノードではなく、ポリシ・ノードであ
った場合、仮想メモリ・マネージャは、割り当てたメモ
リ・ロカールからのフレームまたはその子孫メモリ・ロ
カールの1つ以上のフレームで、割り当てた論理空間を
支える(ステップ725)。このように、上述の手順を
用いて、仮想メモリ・マネージャは、プロセスと、当該
プロセスが処理するデータとの間に可能な限り最も緊密
な親和性を補償することができる。例えば、ノード11
4(図2)に親和化されたスレッド群のスレッド(JP
100および102が双方とも同じスレッド群のスレッ
ドを実行している場合が該当する)が、カーネル・メモ
リを要求した場合、仮想メモリ・マネージャは、ノード
114のメモリ・ロカールを選択する。これは、当該ス
レッドのスレッド群が最も緊密に親和化されているロカ
ールである。そして、仮想メモリ・マネージャは、ロカ
ール対ノード参照テーブル87の中でノード114を表
わす(2、0)命名基準に対応するメモリ・プールを参
照することによって、ノード114を関連付けられたメ
モリ・プール(84)を識別する。次に、仮想メモリ・
マネージャは、メモリ・プールから論理メモリ空間を割
り当て、ノード114に物理メモリがない場合(即ち、
ノード114がポリシ・ノードである)、ロカール11
4のいずれかの物理メモリからのフレームまたはその子
メモリ・ロカール110および111からのフレーム
で、この論理空間を支える。後者の場合、仮想メモリ・
マネージャがメモリ・ロカール110または111の一
方を選択する方法は、特定のポリシ・ノードに制定され
たポリシに依存する。ここで注記すべきは、各ポリシ・
ノードは、他のポリシ・ノードとは異なる考慮を行うポ
リシを実施してもよいことである。かかるポリシは、そ
の子ノードのハードウエア制約および性能データに基づ
いて、設計することができる。フレームを割り当てて論
理空間を支えたメモリ・プール(単数または複数)から
ではなく、ノード114と関連付けられたメモリ・プー
ルからの論理空間を割り当てることにより、割り当てら
れた物理メモリは、JP100および102上で実行さ
れるスレッド双方にとって、より見やすくなる。更に、
その後物理メモリから最も遠いJPが、最も近いJPよ
りも頻繁に、そこ記憶されているデータにアクセスする
場合、メモリ・ロカール110または111の一方の中
の物理メモリから、他方のメモリ・ロカール111また
は110の物理メモリに、後からメモリを移行させるこ
ともできる。
化されているスレッド群のスレッドがカーネル・メモリ
を要求した場合、仮想メモリ・マネージャはノード11
0のメモリ・ロカールを選択し、メモリ・ロカール11
0と関連付けられたメモリ・プールからの論理空間を割
り当て、メモリ・ロカール110と関連付けられた物理
メモリからのフレームで、この論理空間を支える。
き、仮想メモリ・マネージャは、解放された仮想メモリ
・ブロックの開始論理アドレスを見て、所有するプール
単位を識別する(ステップ727)。次に、仮想メモリ
・マネージャは、プール単位テーブル88にアクセスす
ることによって、どのメモリ・プールにプール単位が割
り当てられるのかを識別する(ステップ729)。次
に、仮想メモリ・マネージャは、解放した仮想メモリの
論理空間を放出し、識別されたメモリ・プールに合体す
る(ステップ731)。続いて、仮想メモリ・マネージ
ャがステップ733において、メモリ・プールが未使用
のプール単位を有すると判定した場合、このプール単位
をプール単位テーブル88に戻し(ステップ735)、
このプール単位を他のメモリ・プールに割り当てられる
ようにする。
要求を処理する方法を、図21および図22に示す。ペ
ージ・フォールトが発生したとき、物理メモリのフレー
ムに対する要求も行われ、仮想メモリ・マネージャ70
0は、ユーザがページ配置のためにロカールを特定した
か否かを判定する(ステップ737)。ユーザがロカー
ルを特定している場合、仮想メモリ・マネージャ700
はこの要求を引き受け(honor)、ユーザによって特定さ
れたロカールを指定する(ステップ739)。ユーザが
ロカールを特定していない場合、仮想メモリ・マネージ
ャは、ページ・フォールトが大きなファイル、即ち、大
きな共有メモリのためのものなのか否かをチェックする
(ステップ741)。そうであれば、可能メモリ・マネ
ージャはルート・ロカール120を指定する(ステップ
743)。ページ・フォールトが大きなファイル、即
ち、大きな共有メモリのためのものではない場合、仮想
メモリ・マネージャは、ページ・フォールトがユーザの
個人的データのためのものか否かを判定する(ステップ
745)。ユーザの個人的データのためのページ・フォ
ールトである場合、仮想メモリ・マネージャは、要求元
スレッドのスレッド群が最も緊密に親和化されているホ
ーム・スケジューリング・ロカールを指定する(ステッ
プ747)。ユーザの個人的データのためのページ・フ
ォールトでない場合、仮想メモリ・マネージャは、ペー
ジ・フォールトが共有メモリのためのものか否かを判定
する(ステップ749)。共有メモリのためのページ・
フォールトである場合、仮想メモリ・マネージャは、要
求元スレッドのスレッド群が最も緊密に親和化されてい
るホーム・スケジューリング・ロカールを指定する(ス
テップ751)。共有メモリのためのページ・フォール
トでない場合、仮想メモリ・マネージャは、ページ・フ
ォールトがユーザ実行可能なテキスト(即ち、プログラ
ム・テキスト)のためのものか否かを判定する(ステッ
プ753)。実行可能テキストのためのページ・フォー
ルトである場合、仮想メモリ・マネージャは、要求元ス
レッドのスレッド群が最も緊密に親和化されているホー
ム・ロカールを指定する(ステップ755)。実行可能
テキストのためのページ・フォールトでない場合、仮想
メモリ・マネージャは、ページ・フォールトがユーザ・
ファイル・データのためのものか否かを判定する(ステ
ップ757)。ユーザ・ファイル・データのためのペー
ジ・フォールトである場合、また、この特定例では、ユ
ーザ・ファイル・データに対するページ・フォールトで
ない場合、仮想メモリ・マネージャは、要求元スレッド
のスレッド群が最も緊密に親和化されているホーム・ロ
カールを指定する(ステップ759および761)。ス
テップ745〜757における検査の結果には係わらず
ホーム・ロカールを指定したが、本発明のオペレーティ
ング・システムを実施するNUMAシステムの特性に基
づいて、各検査に対して指定するロカールを変えてもよ
い。
ージャは、当該ロカールを識別する命名基準に基づい
て、ロカール対ノード参照テーブル77を参照すること
によって、物理メモリ・ノード70〜76(図16)を
識別する(図22、ステップ763)。次に、仮想メモ
リ・マネージャは、識別したノードがトレジャリ・ノー
ドか、あるいはポリシ・ノードかを判定する(ステップ
765)。このノードがトレジャリ・ノードである場
合、ロカールは共有物理メモリ資源を表わすことを意味
し、仮想メモリ・マネージャは、この物理メモリ資源か
らフレームを選択する(ステップ767)。このノード
がトレジャリ・ノードではない場合、仮想メモリ・マネ
ージャは、ラウンド・ロビン・アルゴリズム(round-rob
in algorithm)を用いて、このノードの子を1つ選択す
る。選択したノードがトレジャリである場合、そのトレ
ジャリからフレームを割り当てる。選択したノードがト
レジャリでない場合、その子の1つの選択し(ラウンド
・ロビン)、このプロセスを繰り返す。
9〜773は、ポリシ・ノードのポリシを表わす。これ
ら3つのステップを、いずれかの所与のポリシ・ノード
に対して考慮した所望のポリシを実行するための、他の
いずれかのアルゴリズムと置き換えてもよい。
ード間で移行させて、最も頻繁にデータをアクセスする
JPからメモリに記憶されているデータをアクセスする
コストを制限することができる。好ましくは、かかるメ
モリ移行は全て、アドレス透過(address transparent)
であるべきである。アドレス透過メモリ移行とは、論理
アドレスは一定のままであるが、物理アドレスが変化す
るものである。透過性は、ページ・テーブルとハードウ
エア・アドレスとの変換を用いることによって達成され
る。プール単位テーブル88を使用すれば、容易に論理
アドレスからメモリ・プールへの変換を行うことができ
る。
レスが割り当てられるロカール)の子孫ロカールである
メモリ・ロカール間でのみ、透過的に移行可能である。
したがって、目的ロカールが移行の自由度を制御する。
最初の物理的配置は、目的ロカールの子孫から行われ
る。最初の物理的配置に選ばれたロカールを、初期ロカ
ールと呼ぶ。したがって、図2を参照すると、ロカール
(2、0)の目的とされたメモリは、初期ロカール
(1、0)を有し、ロカール(1、0)、(1、1)、
(1、2)および(1、3)間でのみ移行を許される。
ルート・メモリ・ロカールを目的にすると、最大の自由
度が許されるという利点があるが、メモリの、メモリ内
に記憶されているデータにアクセスするJPとの親和性
を低下させることになる。
更に、抽象化システムの各トラジェリに、パージャ・ス
レッド(purger thread)と、クリーナ・スレッド(cleane
r thread)とを含むことが好ましい。パージャ・スレッ
ドは、物理メモリが単に満ち過ぎているときに、フレー
ムまたはページ交換ポリシを実施する。クリーナ・スレ
ッドは、修正ファイル・データを取り込み、自動的にこ
のデータを所定間隔でディスクに書き戻し、システムの
クラッシュからデータを保護する。各ノードに別個のパ
ージャおよびクリーナを設けることにより、単一のパー
ジャまたはクリーナ・カーネル・スレッドのみに頼っ
て、システム全体でそのタスクを実行する必要がなくな
る。更に、システムはより容易に基準化が可能(scalabl
e)であり、パージャやクリーナはより良い親和性を示
す。
間の親和性を高める他の方法は、システムの多数のトレ
ジャリにおいて、あるタイプのファイル・ページの複製
を許すことである。マップされた共有リード・ライトの
ような、あるタイプのファイル・ページは複製できない
ので、オペレーティング・システムは、各ページ・ファ
イルをどのようにマップするかを判定することができな
ければならず、各ファイル・ページのためのマッピング
のタイプを考慮に入れた複製アルゴリズムを実施しなけ
ればならない。例えば、あるファイルの個人的なリード
実行マッピング(read-execute mapping)は、プログラム
・テキストを実行可能ファイル(executable)にマップす
るために、最も一般的に用いられている。実行可能なマ
ッピングは、多数のプロセス間で共通して共有されてい
るので、仮想メモリ・マネージャは、フォールティング
・スレッド群が親和化されているメモリ・ロカールにお
いて、かかるページの複製を積極的に試すことができ
る。かかる複製は、プログラム・ファイルのリード実行
マッピング上でページ・フォールトが発生したときに
は、いつでも得ることができる。但し、そのファイルが
どうあっても修正できない場合に限る。
成長した場合、ファイル・ページは、フォールティング
・スレッド群に親和化されているメモリ・ロカールにし
たがって配置されるのではなく、メモリに送られながら
負荷の均衡化を図ることができる。このように、システ
ムは、ある特定ファイルからのページで、1つのメモリ
・ロカールを飽和させてしまう事態を回避することがで
きる。
ら逸脱することなく、他の特定形態において実施するこ
とも可能である。例えば、3レベルの実行キューを有す
るシステムについてこれまで論じてきたが、同一の概念
は、3処理レベル以上のレベルで組織されたシステムに
も容易に拡張可能であることは理解されよう。更に、本
発明の説明にはスレッド群上で動作する例を用いたが、
本オペレーティング・システムは単一プロセス(スレッ
ド)上でも同様に動作する。本発明の範囲は、上述の説
明ではなく、特許請求の範囲によって指示されており、
特許請求の範囲の意味および均等の範囲に該当する変更
は全て、特許請求の範囲に包含されることを意図するも
のである。
マルチプロセッサ・システムの一例の概要を示すブロッ
ク図。
(NUMA)マルチプロセッサ・システムの抽象概念を
示すブロック図。
内部組織を示すブロック図。
し実行する処理を示すフローチャート。
し実行する処理を示すフローチャート。
し実行する処理を示すフローチャート。
し実行する処理を示すフローチャート。
構成する中期スケジューラが実行する処理のフローチャ
ート。
構成する中期スケジューラが実行する処理のフローチャ
ート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
を構成する中期スケジューラが実行する処理のフローチ
ャート。
セス(NUMA)マルチプロセッサ・システムおよび関
連する連携データ構造のポリシ・ツリー抽象概念を示す
ブロック図。
セス(NUMA)マルチプロセッサ・システムおよび関
連する連携データ構造の仮想メモリ抽象概念を示すブロ
ック図。
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
タイムシェアリング・スレッド 240 データ集合 241 データ 600 中期スケジューラ 700 仮想メモリ・マネージャ
Claims (30)
- 【請求項1】種々のプロセスを実行する複数のプロセッ
サと、各々前記プロセッサの異なる組み合わせによって
共有される複数の共有資源とを含むハードウエア・アー
キテクチャを有するマルチプロセッサ・システムのため
のオペレーティング・システムを具現化するプログラム
・コードを収容したコンピュータ読み取り可能媒体であ
って、前記オペレーティング・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持するステップであって、前
記プロセッサに対応し階層ツリーの最低レベルに位置付
けられる複数のリーフ・ノードと、前記プロセッサおよ
び共有資源の全てによって共有される共通資源に対応し
前記階層ツリーの最高レベルに位置付けられるルート・
ノードと、前記共有資源に対応し前記階層ツリーの少な
くとも1つの中間レベルに位置付けられる複数の中間ノ
ードとを有する階層ツリー構造の形状で、前記プロセッ
サと共有資源との物理的構成を表現する、前記抽象概念
を維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセスを識別し、残りのノードの1つと
関連付けられた各実行キューは、前記ノードと関連付け
られたリソースを共有する前記プロセッサの群に親和化
されたアクティブなプロセスを識別するように、前記実
行キューを形成するステップと、および前記プロセッサ
の動作を監視し、前記プロセッサが実行するために、前
記実行キュー内で待ち行列をなすプロセスを選択するス
テップと、から成る方法を実行する、前記オペレーティ
ング・システムを収容することを特徴とする前記コンピ
ュータ読み取り可能媒体。 - 【請求項2】種々のアクティブなスレッド群のスレッド
を実行するための複数のプロセッサと、各々前記プロセ
ッサの異なる組み合わせによって共有される複数の共有
資源とを含むハードウエア・アーキテクチャを有するマ
ルチプロセッサ・システムのためのオペレーティング・
システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有資源の全てによって共有される共通資源に対応し前記
階層ツリーの最高レベルに位置付けられるルート・ノー
ドと、前記共有資源に対応し前記階層ツリーの少なくと
も1つの中間レベルに位置付けられる複数の中間ノード
とを有する階層ツリー構造の形状で、前記プロセッサと
共有資源との物理的構成を表現する前記抽象概念を維持
する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなスレッド群を識別し、残りのノードの1つ
と関連付けられた各実行キューは、前記ノードと関連付
けられたリソースを共有する前記プロセッサの群に親和
化されたアクティブなスレッド群を識別するように、前
記階層ツリーの各ノードについて実行キューを形成する
手段と、および前記プロセッサの動作を監視し、前記プ
ロセッサが実行するために、前記実行キュー内で待ち行
列をなすプロセスを選択する手段と、から成ることを特
徴とする前記オペレーティング・システム。 - 【請求項3】請求項2記載のオペレーティング・システ
ムにおいて、前記監視手段は、各々前記プロセッサの1
つと関連付けられた、複数のディスパッチャを含むこと
を特徴とする前記オペレーティング・システム。 - 【請求項4】請求項3記載のオペレーティング・システ
ムにおいて、あるプロセッサが実行のためにスレッドを
使い果たしたとき、それと関連付けられた前記ディスパ
ッチャは、まず、前記実行のためにスレッドを使い果た
したプロセッサに対応するノードの祖先ノードの実行キ
ュー内で利用可能なスレッド群があるか否かをチェック
することを特徴とする前記オペレーティング・システ
ム。 - 【請求項5】請求項4記載のオペレーティング・システ
ムにおいて、前記関連するディスパッチャが、第1所定
時間期間以内に、前記祖先ノードの実行キューにおいて
利用可能なスレッド群を突き止めることができなかった
場合、前記関連するディスパッチャは、更に、前記実行
のためにスレッドを使い果たしたプロセッサに対応する
ノードの関係ノードの実行キューにおいて、利用可能な
スレッド群があるか否かをチェックすることを特徴とす
る前記オペレーティング・システム。 - 【請求項6】請求項5記載のオペレーティング・システ
ムにおいて、前記関連するディスパッチャが、第2所定
時間期間内に、前記関係ノードの実行キューにおいて利
用可能なスレッド群を突き止めることができなかった場
合、前記関連するディスパッチャは、更に、前記階層ツ
リー構造のノード全ての実行キューにおいて、利用可能
なスレッド群があるか否かをチェックすることを特徴と
する前記オペレーティング・システム。 - 【請求項7】種々のプロセスを実行するための複数のプ
ロセッサと、各々前記プロセッサの異なる組み合わせに
よって共有される複数の共有資源とを含むハードウエア
・アーキテクチャを有するマルチプロセッサ・システム
のためのオペレーティング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有資源の全てによって共有される共通資源に対応し前記
階層ツリーの最高レベルに位置付けられるルート・ノー
ドと、前記共有資源に対応し前記階層ツリーの少なくと
も1つの中間レベルに位置付けられる複数の中間ノード
とを有する階層ツリー構造の形状で、前記プロセッサと
共有資源との物理的構成を表現する前記抽象概念を維持
する前記手段と、 前記システム内の各ノードにおいて、前記アクティブな
プロセスの進展を監視し、進展していなかったプロセス
が直ちに実行される可能性を高める手段と、から成るこ
とを特徴とする前記オペレーティング・システム。 - 【請求項8】請求項7記載のオペレーティング・システ
ムであって、更に、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセスを識別し、残りのノードの1つと
関連付けられた各実行キューは、前記ノードと関連付け
られたリソースを共有する前記プロセッサの群に親和化
されたアクティブなプロセスを識別するように、前記階
層ツリーの各ノードについて実行キューを形成する手段
と、 前記プロセッサの動作を監視し、前記プロセッサが実行
するために、前記実行キュー内で待ち行列をなすプロセ
スを選択する手段と、を含むことを特徴とする前記オペ
レーティング・システム。 - 【請求項9】各々実行キューと関連付けられた複数のプ
ロセッサを有するマルチプロセッサ・システムのための
オペレーティング・システムであって、 前記プロセッサの1つと関連付けられ、前記関連するプ
ロセッサの実行キューを監視し、前記関連するプロセッ
サが実行するために、他のプロセッサの実行キューから
プロセスを捜して獲得するディスパッチャと、 前記システムにおけるアクティブなプロセスの進展を監
視し、処理されていないプロセスにフラグをセットする
中期スケジューラと、から成り、 前記ディスパッチャは、複数の入手可能なプロセスを有
する実行キューを見つけ出し、前記ディスパッチャはフ
ラグがセットされているプロセスを選択する、ことを特
徴とする前記オペレーティング・システム。 - 【請求項10】請求項9記載のオペレーティング・シス
テムにおいて、前記プロセスはスレッド群を含み、前記
ディスパッチャは、前記複数の入手可能なスレッド群に
フラグがセットされたものがないとき、最高の優先度を
有するスレッド群を選択することを特徴とする前記オペ
レーティング・システム。 - 【請求項11】各々実行キューと関連付けられた複数の
プロセッサを有するマルチプロセッサ・システムにおい
て実行すべきプロセスを選択する方法であって、 各プロセッサの前記実行キューを監視するステップと、 あるプロセッサが実行するために、他のプロセッサの実
行キューからプロセスを捜して獲得するステップと、 前記システム内のアクティブなスレッド群の進展を監視
し、進展していないプロセスにフラグをセットするステ
ップと、 前記プロセスが位置付けられている実行キューが複数の
入手可能なプロセスを有するときは、フラグがセットさ
れているプロセスを選択し、前記プロセスのいずれにも
フラグがセットされていない場合は、最高の優先度を有
するプロセスを選択するステップと、から成ることを特
徴とする前記方法。 - 【請求項12】プロセスを実行するための複数のプロセ
ッサと、各々前記プロセッサの異なる組み合わせによっ
て共有される複数の共有資源とを含むハードウエア・ア
ーキテクチャを有するマルチプロセッサ・システムのた
めのオペレーティング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有資源の全てによって共有される共通資源に対応し前記
階層ツリーの最高レベルに位置付けられるルート・ノー
ドと、前記共有資源に対応し前記階層ツリーの少なくと
も1つの中間レベルに位置付けられる複数の中間ノード
とを有する階層ツリー構造の形状で、前記プロセッサと
共有資源との物理的構成を表現する前記抽象概念を維持
する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセスを識別し、残りのノードの1つと
関連付けられた各実行キューは、前記ノードと関連付け
られたリソースを共有する前記プロセッサの群に親和化
されたアクティブなプロセスを識別するように、前記階
層ツリーの各ノードについて実行キューを形成する手段
と、から成り、 前記抽象概念は、前記階層ツリーのレベルの1つをスケ
ジューリング・レベルとして定義し、前記スケジューリ
ング・レベル内のノードをスケジューリング・ロカール
として識別し、前記マルチプロセッサ・システム内の各
アクティブなプロセスは、各々、スケジューリング・ロ
カールの1つに対応する、ホーム・スケジューリング・
ロカールと現スケジューリング・ロカールとを有し、プ
ロセスのホーム・スケジューリング・ロカールは、前記
プロセスを実行するための好適なプロセッサの祖先であ
るスケジューリング・ロカールであり、プロセスの現ス
ケジューリング・ロカールは、前記プロセスを最後に実
行したプロセッサの祖先であるスケジューリング・ロカ
ールである、ことを特徴とする前記オペレーティング・
システム。 - 【請求項13】請求項12記載のオペレーティング・シ
ステムであって、更に、 前記スケジューリング・ロカールの各々について処理負
荷を監視し、前記システム内の各アクティブなプロセス
について、当該プロセスのホーム・スケジューリング・
ロカールおよび現スケジューリング・ロカールが異なる
スケジューリング・ロカールに対応するか否かを判定
し、更に、前記スケジューリング・ロカールの処理負荷
に基づいて、前記スレッド・プロセスのホーム・スケジ
ューリング・ロカールを前記プロセスの現スケジューリ
ング・ロカールに移動するか、または前記プロセスの現
スケジューリング・ロカールを前記プロセスのホーム・
スケジューリング・ロカールに移動するかを判定する、
中期スケジューラを含むことを特徴とする前記オペレー
ティング・システム。 - 【請求項14】アクティブなプロセスを実行するための
複数のプロセッサと、各々前記プロセッサの異なる組み
合わせによって共有される複数の共有資源とを含むハー
ドウエア・アーキテクチャを有するマルチプロセッサ・
システムにおいて、均衡化したプロセッサ負荷を維持す
る方法であって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持するステップであって、前
記プロセッサに対応し階層ツリーの最低レベルに位置付
けられる複数のリーフ・ノードと、前記プロセッサおよ
び共有資源の全てによって共有される共通資源に対応し
前記階層ツリーの最高レベルに位置付けられるルート・
ノードと、前記共有資源に対応し前記階層ツリーの少な
くとも1つの中間レベルに位置付けられる複数の中間ノ
ードとを有する階層ツリー構造の形状で、前記プロセッ
サと共有資源との物理的構成を表現する前記抽象概念を
維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセス群を識別し、残りのノードの1つ
と関連付けられた各実行キューは、前記ノードと関連付
けられたリソースを共有する前記プロセッサの群に親和
化されたアクティブなプロセス群を識別するように、前
記階層ツリーの各ノードについて実行キューを形成する
ステップと、 前記抽象概念は、前記階層ツリーのレベルの1つをスケ
ジューリング・レベルとして定義し、前記スケジューリ
ング・レベル内のノードをスケジューリング・ロカール
として識別し、前記マルチプロセッサ・システム内の各
アクティブなプロセスは、各々、スケジューリング・ロ
カールの1つに対応する、ホーム・スケジューリング・
ロカールと現スケジューリング・ロカールとを有し、プ
ロセスのホーム・スケジューリング・ロカールは、前記
プロセスを実行するための好適なプロセッサの祖先であ
るスケジューリング・ロカールであり、プロセスの現ス
ケジューリング・ロカールは、前記プロセスを最後に実
行したプロセッサの祖先であるスケジューリング・ロカ
ールであり、 前記スケジューリング・ロカールの各々について、処理
負荷を監視するステップと、 前記システム内の各アクティブなプロセスについて、当
該プロセスのホーム・スケジューリング・ロカールと現
スケジューリング・ロカールが異なるスケジューリング
・ロカールに対応するか否かを判定するステップと、 前記スケジューリング・ロカールの処理負荷に基づい
て、前記プロセスのホーム・スケジューリング・ロカー
ルを前記プロセスの現スケジューリング・ロカールに移
動するか、または前記プロセスの現スケジューリング・
ロカールを前記プロセスのホーム・スケジューリング・
ロカールに移動するかを判定するステップと、から成る
ことを特徴とする前記方法。 - 【請求項15】アクティブなプロセスを実行するための
複数のプロセッサと、各々前記プロセッサの異なる組み
合わせによって共有される複数の共有資源とを含むハー
ドウエア・アーキテクチャを有するマルチプロセッサ・
システムのためのオペレーティング・システムであっ
て、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有資源の全てによって共有される共通資源に対応し前記
階層ツリーの最高レベルに位置付けられるルート・ノー
ドと、前記共有資源に対応し前記階層ツリーの少なくと
も1つの中間レベルに位置付けられる複数の中間ノード
とを有する階層ツリー構造の形状で、前記プロセッサと
共有資源との物理的構成を表現する前記抽象概念を維持
する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセスを識別し、残りのノードの1つと
関連付けられた各実行キューは、前記ノードと関連付け
られたリソースを共有する前記プロセッサの群に親和化
されたアクティブなプロセスを識別するように、前記階
層ツリーの各ノードについて実行キューを形成する手段
と、 前記システム内の各アクティブなプロセスの進展を監視
し、所定時間期間の間に進展しない各アクティブなプロ
セスを、前記階層ツリー内のより高いレベルのノードの
実行キューに昇進させる中期スケジューラと、から成る
ことを特徴とする前記オペレーティング・システム。 - 【請求項16】請求項15記載のオペレーティング・シ
ステムであって、更に、 前記プロセッサの1つと関連付けられ、該関連するプロ
セッサのために前記実行キューを監視し、前記関連する
プロセッサが実行するために、前記実行キューの中で最
高の優先度を有するアクティブなプロセスを選択する、
少なくとも1つのディスパッチャを含み、 前記中期スケジューラは、第2所定時間期間の間に進展
しない各アクティブなプロセスの優先度を高める、こと
を特徴とする前記オペレーティング・システム。 - 【請求項17】請求項16記載のオペレーティング・シ
ステムにおいて、 前記中期スケジューラは、第3所定時間期間の間に進展
しない各プロセスにフラグをセットし、 前記ディスパッチャは前記関連するプロセッサの実行キ
ューを監視し、前記関連するプロセッサが実行するため
に、他のプロセッサの実行キューからプロセッサを捜し
て獲得し、 前記ディスパッチャが複数の入手可能なプロセスを有す
る実行キューを見つけたとき、前記ディスパッチャはフ
ラグがセットされているプロセスを選択する、ことを特
徴とする前記オペレーティング・システム。 - 【請求項18】種々のアクティブなプロセスを実行する
ための複数のプロセッサと、各々前記プロセッサの異な
る組み合わせによって共有される複数の共有資源とを含
むハードウエア・アーキテクチャを有するマルチプロセ
ッサ・システムにおいて、均衡化したプロセッサ負荷を
維持する方法であって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持するステップであって、前
記プロセッサに対応し階層ツリーの最低レベルに位置付
けられる複数のリーフ・ノードと、前記プロセッサおよ
び共有資源の全てによって共有される共通資源に対応し
前記階層ツリーの最高レベルに位置付けられるルート・
ノードと、前記共有資源に対応し前記階層ツリーの少な
くとも1つの中間レベルに位置付けられる複数の中間ノ
ードとを有する階層ツリー構造の形状で、前記プロセッ
サと共有資源との物理的構成を表現する前記抽象概念を
維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
るステップであって、リーフ・ノードと関連付けられた
各実行キューは前記関連するプロセッサに親和化された
アクティブなプロセス群を識別し、残りのノードの1つ
と関連付けられた各実行キューは、前記ノードと関連付
けられたリソースを共有する前記プロセッサの群に親和
化されたアクティブなプロセス群を識別するように、前
記階層ツリーの各ノードについて実行キューを形成する
ステップと、 前記システム内の各アクティブなプロセスの進展を監視
するステップと、 所定時間期間の間に進展しない各アクティブ・プロセス
を、前記階層ツリー内のより高いレベルのノードの実行
キューに昇進させるステップと、から成ることを特徴と
する前記方法。 - 【請求項19】各々実行キューが関連付けられた複数の
プロセッサを有するマルチプロセッサ・システムのため
のオペレーティング・システムであって、 前記システム内の各アクティブなプロセスの進展を監視
し、所定時間期間の間に進展しない各アクティブなプロ
セスを、前記階層ツリー内のより高いレベルのノードの
実行キューに昇進させる中期スケジューラと、 前記プロセッサの1つと関連付けられ、該関連するプロ
セッサによって実行されるプロセスが待ち行列をなす実
行キューを監視し、前記関連するプロセッサが実行する
ために、前記実行キューの中で最高の優先度を有するア
クティブなプロセスを選択する、少なくとも1つのディ
スパッチャと、から成ることを特徴とする前記オペレー
ティング・システム。 - 【請求項20】複数のプロセッサと、各々前記プロセッ
サの異なる組み合わせによって共有される複数の共有メ
モリー資源とを含むハードウエア・アーキテクチャを有
するマルチプロセッサ・システムのためのオペレーティ
ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有メモリー資源の全てによって共有される共通資源に対
応し前記階層ツリーの最高レベルに位置付けられるルー
ト・ノードと、前記共有メモリー資源に対応し前記階層
ツリーの少なくとも1つの中間レベルに位置付けられる
複数の中間ノードとを有する階層ツリー構造の形状で、
前記プロセッサと共有メモリー資源との物理的構成を表
現する前記抽象概念を維持する前記手段と、 共有物理メモリ資源を表わす各ノードにおいてフレーム
・トラジェリを維持し、前記メモリ資源の物理メモリの
フレーム管理および割り当てを制御し、関連するトラジ
ェリを有する全てのノードに共通なノードを高位ポリシ
・ノードとして識別し、前記プロセッサの少なくとも1
つが用いるために、前記フレーム・トラジェリから物理
メモリのフレームを割り当てる手段と、から成ることを
特徴とする前記システム。 - 【請求項21】請求項20記載のオペレーティング・シ
ステムであって、更に、物理メモリ空間に対するプロセ
ス要求を受け、どのノードから前記要求された物理メモ
リ空間を割り当てるかを識別し、前記識別されたノード
と関連付けられたフレーム・トラジェリから、前記要求
された物理メモリ空間を割り当てる、メモリ・マネージ
ャを含むことを特徴とする前記オペレーティング・シス
テム。 - 【請求項22】請求項21記載のオペレーティング・シ
ステムにおいて、前記識別されたノードはポリシ・ノー
ドであり、前記メモリ・マネージャは、該ポリシ・ノー
ドのポリシ制約に基づいて、前記ポリシ・ノードと関連
付けられた1つ以上の関連するフレーム・トラジェリか
ら、前記要求された物理メモリを割り当てることを特徴
とする前記オペレーティング・システム。 - 【請求項23】種々のプロセスを実行する複数のプロセ
ッサと、前記プロセッサの異なる組み合わせによって各
々共有される複数の共有メモリー資源とを有するマルチ
プロセッサ・システムのためのオペレーティング・シス
テムを具現化するプログラム・コードを収容したコンピ
ュータ読み取り可能媒体であって、前記オペレーティン
グ・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持するステップであって、前
記プロセッサに対応し階層ツリーの最低レベルに位置付
けられる複数のリーフ・ノードと、前記プロセッサおよ
び共有メモリー資源の全てによって共有される共通資源
に対応し前記階層ツリーの最高レベルに位置付けられる
ルート・ノードと、前記共有メモリー資源に対応し前記
階層ツリーの少なくとも1つの中間レベルに位置付けら
れる複数の中間ノードとを有する階層ツリー構造の形状
で、前記プロセッサと共有メモリー資源との物理的構成
を表現する前記抽象概念を維持する前記ステップと、 共有物理メモリ資源を表わす各ノードにおいてフレーム
・トラジェリを維持し、前記メモリ資源の物理メモリの
フレーム管理および割り当てを制御するステップと、 関連するトラジェリを有する全てのノードに共通なノー
ドを高位ポリシ・ノードとして識別し、前記プロセッサ
の少なくとも1つが用いるために、前記フレーム・トラ
ジェリから物理メモリのフレームを割り当てるステップ
と、から成る方法を実行する、前記オペレーティング・
システムを収容することを特徴とする前記コンピュータ
読み取り可能媒体。 - 【請求項24】複数のプロセッサと、各々前記プロセッ
サの異なる組み合わせによって共有される複数の共有メ
モリー資源とを含むハードウエア・アーキテクチャを有
するマルチプロセッサ・システムのためのオペレーティ
ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有メモリー資源の全てによって共有される共通資源に対
応し前記階層ツリーの最高レベルに位置付けられるルー
ト・ノードと、前記共有メモリー資源に対応し前記階層
ツリーの少なくとも1つの中間レベルに位置付けられる
複数の中間ノードとを有する階層ツリー構造の形状で、
前記プロセッサと共有メモリー資源との物理的構成を表
現する前記抽象概念を維持する前記手段と、 前記ルート・ノードと関連付けられ、割り当てられ得る
物理メモリの各フレームのリストと、リストされている
各フレームと関連付けられ、当該フレームが位置する前
記メモリ資源を表わすノードを識別するポインタとを含
む、高位フレーム・テーブルを維持する手段と、から成
ることを特徴とする前記オペレーティング・システム。 - 【請求項25】複数のプロセッサと、各々前記プロセッ
サの異なる組み合わせによって共有される複数の共有メ
モリー資源とを含むハードウエア・アーキテクチャを有
するマルチプロセッサ・システムのためのオペレーティ
ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持する手段であって、前記プ
ロセッサに対応し階層ツリーの最低レベルに位置付けら
れる複数のリーフ・ノードと、前記プロセッサおよび共
有メモリー資源の全てによって共有される共通資源に対
応し前記階層ツリーの最高レベルに位置付けられるルー
ト・ノードと、前記共有メモリー資源に対応し前記階層
ツリーの少なくとも1つの中間レベルに位置付けられる
複数の中間ノードとを有する階層ツリー構造の形状で、
前記プロセッサと共有メモリー資源との物理的構成を表
現する前記抽象概念を維持する前記手段と、 前記システムの仮想メモリの割り当てのために、メモリ
・ロカールを表わす各ノードにおいてメモリ・プールを
維持し、前記仮想メモリをプール単位に分割して前記メ
モリ・プールに割り当てる手段と、 プール単位および該プール単位の各々が割り当てられて
いる前記メモリ・プールの可用性を識別する、プール単
位テーブルを維持する手段と、から成ることを特徴とす
る前記オペレーティング・システム。 - 【請求項26】請求項25記載のオペレーティング・シ
ステムであって、更に、仮想メモリ空間に対するプロセ
ス要求を受け、該要求された仮想メモリ空間をどのメモ
リ・プールから割り当てるかを識別し、前記識別された
メモリ・プールが十分な仮想メモリ空間を有していない
場合、前記識別されたメモリ・プールに対する前記プー
ル単位テーブルから、追加のプール単位を得て、前記識
別されたメモリ・プールから前記要求されたメモリ空間
を割り当てる、メモリ・マネージャを含むことを特徴と
する前記オペレーティング・システム。 - 【請求項27】請求項26記載のオペレーティング・シ
ステムにおいて、前記メモリ・マネージャは、前記識別
されたメモリ・プールと関連付けられた物理メモリ空間
で、前記要求された仮想メモリ空間を支えることを特徴
とする前記オペレーティング・システム。 - 【請求項28】請求項25記載のオペレーティング・シ
ステムであって、仮想メモリ空間を放出し、解放された
仮想メモリ空間が属するプール単位を識別し、前記プー
ル単位テーブルにアクセスし、前記識別されたプール単
位が属するメモリ・プールを識別し、前記解放された仮
想メモリ空間を前記識別されたメモリ・プールに放出す
る、メモリ・マネージャを含むことを特徴とする前記オ
ペレーティング・システム。 - 【請求項29】請求項28記載のオペレーティング・シ
ステムにおいて、前記メモリ・マネージャは、各メモリ
・プールにおいて、プール単位にサイズが等しい連続す
る解放仮想メモリ空間を捜し、前記プール単位テーブル
にエントリを配置し、前記解放仮想メモリと関連付けら
れた前記プール単位がメモリ・プールへの割り当てに利
用可能であることを指示することによって、前記解放仮
想メモリを放出することを特徴とする前記オペレーティ
ング・システム。 - 【請求項30】種々のアクティブなプロセスを実行する
複数のプロセッサと、各々前記プロセッサの異なる組み
合わせによって共有される複数の共有メモリー資源とを
有するマルチプロセッサ・システムのためのオペレーテ
ィング・システムを具現化するプログラム・コードを収
容したコンピュータ読み取り可能媒体であって、前記オ
ペレーティング・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
キテクチャの抽象概念を維持するステップであって、前
記プロセッサに対応し階層ツリーの最低レベルに位置付
けられる複数のリーフ・ノードと、前記プロセッサおよ
び共有メモリー資源の全てによって共有される共通資源
に対応し前記階層ツリーの最高レベルに位置付けられる
ルート・ノードと、前記共有メモリー資源に対応し前記
階層ツリーの少なくとも1つの中間レベルに位置付けら
れる複数の中間ノードとを有する階層ツリー構造の形状
で、前記プロセッサと共有メモリー資源との物理的構成
を表現する前記抽象表現を維持する前記ステップと、 前記システムの仮想メモリの割り当てのためのメモリ・
ロカールを表わす各ノードにおいてメモリ・プールを維
持し、前記仮想メモリを、前記メモリ・プールに割り当
て可能なプール単位に分割するステップと、 プール単位と、該プール単位の各々が割り当てられてい
るメモリ・プールとの可用性を識別するプール単位テー
ブルを維持するステップと、から成る方法を実行する、
前記オペレーティング・システムを収容することを特徴
とする前記コンピュータ読み取り可能媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US494357 | 1995-06-23 | ||
US08/494,357 US6105053A (en) | 1995-06-23 | 1995-06-23 | Operating system for a non-uniform memory access multiprocessor system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006158290A Division JP2006302305A (ja) | 1995-06-23 | 2006-06-07 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09237215A true JPH09237215A (ja) | 1997-09-09 |
JP3836187B2 JP3836187B2 (ja) | 2006-10-18 |
Family
ID=23964148
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16351596A Expired - Lifetime JP3836187B2 (ja) | 1995-06-23 | 1996-06-24 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
JP2006158290A Pending JP2006302305A (ja) | 1995-06-23 | 2006-06-07 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
JP2007296973A Pending JP2008112457A (ja) | 1995-06-23 | 2007-11-15 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006158290A Pending JP2006302305A (ja) | 1995-06-23 | 2006-06-07 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
JP2007296973A Pending JP2008112457A (ja) | 1995-06-23 | 2007-11-15 | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US6105053A (ja) |
EP (1) | EP0750255A3 (ja) |
JP (3) | JP3836187B2 (ja) |
AU (1) | AU701540B2 (ja) |
CA (1) | CA2179483A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8347298B2 (en) | 2006-10-02 | 2013-01-01 | Japan Aerospace Exploration Agency | Autonomous distributed control involving constraint on resources |
JP2017146895A (ja) * | 2016-02-19 | 2017-08-24 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
Families Citing this family (171)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
FR2767939B1 (fr) * | 1997-09-04 | 2001-11-02 | Bull Sa | Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur |
FR2767938B1 (fr) * | 1997-09-04 | 2001-08-24 | Bull Sa | Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur |
FR2774788B1 (fr) * | 1998-02-12 | 2000-03-24 | Bull Sa | Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede |
US6038651A (en) * | 1998-03-23 | 2000-03-14 | International Business Machines Corporation | SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum |
US6477561B1 (en) * | 1998-06-11 | 2002-11-05 | Microsoft Corporation | Thread optimization |
US6477586B1 (en) * | 1998-06-29 | 2002-11-05 | International Business Machines Corporation | Remote procedure calls in distributed systems |
US6256753B1 (en) * | 1998-06-30 | 2001-07-03 | Sun Microsystems, Inc. | Bus error handling in a computer system |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
ATE557342T1 (de) * | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US7526767B1 (en) | 1998-08-28 | 2009-04-28 | Oracle International Corporation | Methods for automatic group switching according to a resource plan |
US7451448B1 (en) | 1998-08-28 | 2008-11-11 | Oracle International Corporation | Methods for selectively quiescing a computer system |
US7017156B1 (en) | 1998-08-28 | 2006-03-21 | Oracle International Corporation | System for computing an estimate execution time by totaling the time value base on an architecture or a software operating environment |
FR2786288B1 (fr) * | 1998-11-23 | 2001-08-10 | Bull Sa | Systeme de traitement par ensembles de ressources |
US7216348B1 (en) * | 1999-01-05 | 2007-05-08 | Net2Phone, Inc. | Method and apparatus for dynamically balancing call flow workloads in a telecommunications system |
FR2792087B1 (fr) * | 1999-04-07 | 2001-06-15 | Bull Sa | Procede d'amelioration des performances d'un systeme multiprocesseur comprenant une file d'attente de travaux et architecture de systeme pour la mise en oeuvre du procede |
US7401112B1 (en) * | 1999-05-26 | 2008-07-15 | Aspect Communication Corporation | Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors |
US6182161B1 (en) * | 1999-08-16 | 2001-01-30 | Mti Technology Corp. | Method and apparatus for building software nets using an array structure |
US6480293B1 (en) * | 1999-11-24 | 2002-11-12 | Xerox Corporation | Encoding of requests for status in document assembly trees |
US7636915B1 (en) * | 1999-12-02 | 2009-12-22 | Invensys Systems, Inc. | Multi-level multi-variable control process program execution scheme for distributed process control systems |
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 |
US6748593B1 (en) * | 2000-02-17 | 2004-06-08 | International Business Machines Corporation | Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system |
US7206843B1 (en) * | 2000-04-21 | 2007-04-17 | Sun Microsystems, Inc. | Thread-safe portable management interface |
US7221377B1 (en) * | 2000-04-24 | 2007-05-22 | Aspect Communications | Apparatus and method for collecting and displaying information in a workflow system |
US7739325B1 (en) | 2000-04-24 | 2010-06-15 | Aspect Software, Inc. | Apparatus and method for extensible real-time workflows |
US6981260B2 (en) * | 2000-05-25 | 2005-12-27 | International Business Machines Corporation | Apparatus for minimizing lock contention in a multiple processor system with multiple run queues when determining the threads priorities |
US6785889B1 (en) * | 2000-06-15 | 2004-08-31 | Aurema, Inc. | System and method for scheduling bandwidth resources using a Kalman estimator with active feedback |
US6670969B1 (en) * | 2000-06-29 | 2003-12-30 | Curl Corporation | Interface frames for threads |
US7277933B2 (en) * | 2000-08-28 | 2007-10-02 | Fujitsu Limited | System for operating a plurality of apparatuses based on accumulated operating times thereof to equalize the respective operating times of the apparatuses |
US6915516B1 (en) * | 2000-09-29 | 2005-07-05 | Emc Corporation | Apparatus and method for process dispatching between individual processors of a multi-processor system |
US7035998B1 (en) * | 2000-11-03 | 2006-04-25 | Mips Technologies, Inc. | Clustering stream and/or instruction queues for multi-streaming processors |
US7139898B1 (en) | 2000-11-03 | 2006-11-21 | Mips Technologies, Inc. | Fetch and dispatch disassociation apparatus for multistreaming processors |
US7178137B1 (en) | 2001-04-05 | 2007-02-13 | Network Appliance, Inc. | Automatic verification of scheduling domain consistency |
US7694302B1 (en) * | 2001-04-05 | 2010-04-06 | Network Appliance, Inc. | Symmetric multiprocessor synchronization using migrating scheduling domains |
US7016972B2 (en) * | 2001-04-23 | 2006-03-21 | International Business Machines Corporation | Method and system for providing and viewing performance analysis of resource groups |
US7036123B2 (en) * | 2001-04-25 | 2006-04-25 | Sun Microsystems, Inc. | System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group |
US20020184290A1 (en) * | 2001-05-31 | 2002-12-05 | International Business Machines Corporation | Run queue optimization with hardware multithreading for affinity |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
US7305674B2 (en) * | 2001-08-31 | 2007-12-04 | International Business Machines Corporation | Method and apparatus to manage multi-computer supply |
US6996745B1 (en) * | 2001-09-27 | 2006-02-07 | Sun Microsystems, Inc. | Process for shutting down a CPU in a SMP configuration |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US20030110205A1 (en) * | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
CA2365729A1 (en) * | 2001-12-20 | 2003-06-20 | Platform Computing (Barbados) Inc. | Topology aware scheduling for a multiprocessor system |
US7043666B2 (en) * | 2002-01-22 | 2006-05-09 | Dell Products L.P. | System and method for recovering from memory errors |
JP2003263331A (ja) * | 2002-03-07 | 2003-09-19 | Toshiba Corp | マルチプロセッサシステム |
US20030177166A1 (en) * | 2002-03-15 | 2003-09-18 | Research Foundation Of The State University Of New York | Scalable scheduling in parallel processors |
US7080379B2 (en) * | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
US7444636B2 (en) * | 2002-07-15 | 2008-10-28 | Hewlett-Packard Development Company, L.P. | Method and system of determining attributes of a functional unit in a multiple processor computer system |
US7054985B2 (en) * | 2002-07-23 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | Multiple hardware partitions under one input/output hub |
US7389506B1 (en) * | 2002-07-30 | 2008-06-17 | Unisys Corporation | Selecting processor configuration based on thread usage in a multiprocessor system |
US7093258B1 (en) * | 2002-07-30 | 2006-08-15 | Unisys Corporation | Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system |
JP4777651B2 (ja) | 2002-08-23 | 2011-09-21 | イグジット−キューブ,インク. | コンピュータシステム及びデータ保存方法 |
US7146389B2 (en) * | 2002-08-30 | 2006-12-05 | Hitachi, Ltd. | Method for rebalancing free disk space among network storages virtualized into a single file system view |
US7167916B2 (en) * | 2002-08-30 | 2007-01-23 | Unisys Corporation | Computer OS dispatcher operation with virtual switching queue and IP queues |
US7159221B1 (en) * | 2002-08-30 | 2007-01-02 | Unisys Corporation | Computer OS dispatcher operation with user controllable dedication |
US20040088498A1 (en) * | 2002-10-31 | 2004-05-06 | International Business Machines Corporation | System and method for preferred memory affinity |
US7069523B2 (en) * | 2002-12-13 | 2006-06-27 | Lsi Logic Corporation | Automated selection and placement of memory during design of an integrated circuit |
WO2004059465A1 (en) * | 2002-12-27 | 2004-07-15 | Unisys Corporation | Streamlining cpu utilisation by delaying transactions |
US20060123421A1 (en) * | 2002-12-27 | 2006-06-08 | Loboz Charles Z | Streamlining cpu utilization by delaying transactions |
US7207043B2 (en) * | 2002-12-31 | 2007-04-17 | International Business Machines Corporation | Programmatic response-time based workload distribution techniques |
US7237242B2 (en) * | 2002-12-31 | 2007-06-26 | International Business Machines Corporation | Dynamic thread pool tuning techniques |
US7373640B1 (en) | 2003-07-31 | 2008-05-13 | Network Appliance, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US7496928B2 (en) * | 2003-08-28 | 2009-02-24 | Microsoft Corporation | Method and system for moderating thread priority boost for I/O completion |
US7614056B1 (en) * | 2003-09-12 | 2009-11-03 | Sun Microsystems, Inc. | Processor specific dispatching in a heterogeneous configuration |
KR100662120B1 (ko) * | 2003-10-20 | 2006-12-27 | 엘지전자 주식회사 | 홈 네트워킹에 의한 가전기기의 메모리 공용방법 |
US20050108713A1 (en) * | 2003-11-18 | 2005-05-19 | Geye Scott A. | Affinity mask assignment system and method for multiprocessor systems |
US7543142B2 (en) | 2003-12-19 | 2009-06-02 | Intel Corporation | Method and apparatus for performing an authentication after cipher operation in a network processor |
US7512945B2 (en) * | 2003-12-29 | 2009-03-31 | Intel Corporation | Method and apparatus for scheduling the processing of commands for execution by cryptographic algorithm cores in a programmable network processor |
US20050149744A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Network processor having cryptographic processing including an authentication buffer |
US7529924B2 (en) * | 2003-12-30 | 2009-05-05 | Intel Corporation | Method and apparatus for aligning ciphered data |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US8171480B2 (en) * | 2004-01-27 | 2012-05-01 | Network Appliance, Inc. | Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor |
US7703101B2 (en) * | 2004-02-13 | 2010-04-20 | International Business Machines Corporation | Autonomic workload classification using predictive assertion for wait queue and thread pool selection |
US7565653B2 (en) | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
US7614053B2 (en) | 2004-02-20 | 2009-11-03 | Sony Computer Entertainment Inc. | Methods and apparatus for task management in a multi-processor system |
US8028292B2 (en) | 2004-02-20 | 2011-09-27 | Sony Computer Entertainment Inc. | Processor task migration over a network in a multi-processor system |
US7266540B2 (en) * | 2004-03-04 | 2007-09-04 | International Business Machines Corporation | Mechanism for dynamic workload rebalancing in a multi-nodal computer system |
US7584476B2 (en) * | 2004-03-04 | 2009-09-01 | International Business Machines Corporation | Mechanism for reducing remote memory accesses to shared data in a multi-nodal computer system |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US7877484B2 (en) * | 2004-04-23 | 2011-01-25 | International Business Machines Corporation | System and method for bulk processing of semi-structured result streams from multiple resources |
US7243169B2 (en) * | 2004-06-08 | 2007-07-10 | International Business Machines Corporation | Method, system and program for oscillation control of an internal process of a computer program |
US7460126B2 (en) * | 2004-08-24 | 2008-12-02 | Silicon Graphics, Inc. | Scalable method and system for streaming high-resolution media |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7646779B2 (en) * | 2004-12-23 | 2010-01-12 | Intel Corporation | Hierarchical packet scheduler using hole-filling and multiple packet buffering |
US7525962B2 (en) * | 2004-12-27 | 2009-04-28 | Intel Corporation | Reducing memory access bandwidth consumption in a hierarchical packet scheduler |
US8108871B2 (en) * | 2005-01-13 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Controlling computer resource utilization |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7613904B2 (en) * | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US8219823B2 (en) | 2005-03-04 | 2012-07-10 | Carter Ernst B | System for and method of managing access to a system using combinations of user information |
US8051418B1 (en) | 2005-03-21 | 2011-11-01 | Oracle America, Inc. | Techniques for providing improved affinity scheduling in a multiprocessor computer system |
US20060229638A1 (en) * | 2005-03-29 | 2006-10-12 | Abrams Robert M | Articulating retrieval device |
US8255912B2 (en) * | 2005-04-13 | 2012-08-28 | Qualcomm Incorporated | Techniques for setting events in a multi-threaded system |
US7383396B2 (en) * | 2005-05-12 | 2008-06-03 | International Business Machines Corporation | Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system |
US7793299B2 (en) * | 2005-08-30 | 2010-09-07 | International Business Machines Corporation | System and method for scheduling tasks for execution |
US8429630B2 (en) | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US8347293B2 (en) * | 2005-10-20 | 2013-01-01 | Network Appliance, Inc. | Mutual exclusion domains to perform file system processes on stripes |
US8489700B2 (en) * | 2005-11-30 | 2013-07-16 | International Business Machines Corporation | Analysis of nodal affinity behavior |
US20070226696A1 (en) * | 2006-02-03 | 2007-09-27 | Dell Products L.P. | System and method for the execution of multithreaded software applications |
US20070214333A1 (en) * | 2006-03-10 | 2007-09-13 | Dell Products L.P. | Modifying node descriptors to reflect memory migration in an information handling system with non-uniform memory access |
JP4963854B2 (ja) * | 2006-03-28 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサコンピュータおよびネットワークコンピューティングシステム |
US8429218B2 (en) * | 2006-04-06 | 2013-04-23 | International Business Machines Corporation | Process restart on a compute node |
US8150946B2 (en) * | 2006-04-21 | 2012-04-03 | Oracle America, Inc. | Proximity-based memory allocation in a distributed memory system |
US8104039B2 (en) * | 2006-08-07 | 2012-01-24 | International Business Machines Corporation | Method for balancing resource sharing and application latency within a data processing system |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US8255915B1 (en) * | 2006-10-31 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | Workload management for computer system with container hierarchy and workload-group policies |
US20080196030A1 (en) * | 2007-02-13 | 2008-08-14 | Buros William M | Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system |
US8327363B2 (en) * | 2007-07-24 | 2012-12-04 | Microsoft Corporation | Application compatibility in multi-core systems |
US8544014B2 (en) * | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8898669B2 (en) * | 2007-07-30 | 2014-11-25 | International Business Machines Corporation | Methods and systems for coordinated transactions |
US8959516B2 (en) | 2007-07-30 | 2015-02-17 | International Business Machines Corporation | Methods and systems for coordinated financial transactions in distributed and parallel environments |
US7923341B2 (en) * | 2007-08-13 | 2011-04-12 | United Solar Ovonic Llc | Higher selectivity, method for passivating short circuit current paths in semiconductor devices |
US20090158299A1 (en) * | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
US8156495B2 (en) * | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
US8640131B2 (en) * | 2008-01-18 | 2014-01-28 | Microsoft Corporation | Demand-based processor cycle allocation subsequent to equal group-based processor cycle distribution |
US20090249343A1 (en) * | 2008-03-25 | 2009-10-01 | Pirasenna Thiyagarajan | System, method, and computer program product for receiving timer objects from local lists in a global list for being used to execute events associated therewith |
US8392913B2 (en) * | 2008-03-28 | 2013-03-05 | International Business Machines Corporation | Method and apparatus for threaded background function support |
US8656395B2 (en) * | 2008-05-15 | 2014-02-18 | International Business Machines Corporation | Method and system for optimizing a job scheduler in an operating system |
US8566830B2 (en) * | 2008-05-16 | 2013-10-22 | Microsoft Corporation | Local collections of tasks in a scheduler |
US8561072B2 (en) * | 2008-05-16 | 2013-10-15 | Microsoft Corporation | Scheduling collections in a scheduler |
US9201673B2 (en) * | 2008-07-30 | 2015-12-01 | Microsoft Technology Licensing, Llc | Efficient detection and response to spin waits in multi-processor virtual machines |
US8549341B2 (en) * | 2008-08-29 | 2013-10-01 | Netlogic Microsystems, Inc. | System and method for reducing latency associated with timestamps in a multi-core, multi-threaded processor |
JP2010267028A (ja) * | 2009-05-13 | 2010-11-25 | Brother Ind Ltd | 管理装置、管理処理プログラム、ノード装置、ノード処理プログラム、及び有効期限切れレコード判定方法 |
US9325802B2 (en) | 2009-07-16 | 2016-04-26 | Microsoft Technology Licensing, Llc | Hierarchical scale unit values for storing instances of data among nodes of a distributed store |
US20110055838A1 (en) * | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
US8959525B2 (en) * | 2009-10-28 | 2015-02-17 | International Business Machines Corporation | Systems and methods for affinity driven distributed scheduling of parallel computations |
US8473723B2 (en) * | 2009-12-10 | 2013-06-25 | International Business Machines Corporation | Computer program product for managing processing resources |
KR101644800B1 (ko) * | 2010-01-07 | 2016-08-02 | 삼성전자주식회사 | 컴퓨팅 시스템 및 방법 |
CN101833537A (zh) * | 2010-04-23 | 2010-09-15 | 浪潮电子信息产业股份有限公司 | 一种基于ccnuma多处理器架构下的多结点初始化同步方法 |
US8627331B1 (en) | 2010-04-30 | 2014-01-07 | Netapp, Inc. | Multi-level parallelism of process execution in a mutual exclusion domain of a processing system |
US9262228B2 (en) * | 2010-09-23 | 2016-02-16 | Microsoft Technology Licensing, Llc | Distributed workflow in loosely coupled computing |
US8601193B2 (en) | 2010-10-08 | 2013-12-03 | International Business Machines Corporation | Performance monitor design for instruction profiling using shared counters |
US8589922B2 (en) | 2010-10-08 | 2013-11-19 | International Business Machines Corporation | Performance monitor design for counting events generated by thread groups |
US8489787B2 (en) | 2010-10-12 | 2013-07-16 | International Business Machines Corporation | Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors |
US8473378B2 (en) * | 2010-10-18 | 2013-06-25 | Bank Of America Corporation | Global treasury monitoring system |
US8539494B2 (en) * | 2011-01-31 | 2013-09-17 | Oracle International Corporation | Method and system for scheduling threads |
JP5727258B2 (ja) * | 2011-02-25 | 2015-06-03 | ウイングアーク1st株式会社 | 分散型データベースシステム |
US9262181B2 (en) * | 2011-05-10 | 2016-02-16 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
US8954968B1 (en) * | 2011-08-03 | 2015-02-10 | Juniper Networks, Inc. | Measuring by the kernel the amount of time a monitored thread spends in a queue in order to monitor scheduler delays in a computing device |
US8863140B2 (en) * | 2011-08-29 | 2014-10-14 | Oracle International Corporation | Method for resource management allocating and freeing credits from and to a resource credit tree |
US8793459B2 (en) * | 2011-10-31 | 2014-07-29 | International Business Machines Corporation | Implementing feedback directed NUMA mitigation tuning |
US9191435B2 (en) * | 2012-08-23 | 2015-11-17 | TidalScale, Inc. | Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores |
US9166865B2 (en) * | 2012-11-07 | 2015-10-20 | International Business Machines Corporation | Mobility operation resource allocation |
US10048871B2 (en) * | 2013-02-20 | 2018-08-14 | Red Hat, Inc. | Assigning pre-existing processes to select sets of non-uniform memory access (NUMA) aligned resources |
US10489200B2 (en) * | 2013-10-23 | 2019-11-26 | Nvidia Corporation | Hierarchical staging areas for scheduling threads for execution |
CN103995744B (zh) * | 2014-05-22 | 2017-04-26 | 西安交通大学 | 一种用于消除存储访问拥塞的同构计算任务分组方法 |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US10255091B2 (en) | 2014-09-21 | 2019-04-09 | Vmware, Inc. | Adaptive CPU NUMA scheduling |
US10402226B2 (en) * | 2015-06-05 | 2019-09-03 | Apple Inc. | Media analysis and processing framework on a resource restricted device |
US10579421B2 (en) | 2016-08-29 | 2020-03-03 | TidalScale, Inc. | Dynamic scheduling of virtual processors in a distributed system |
WO2018055507A1 (en) * | 2016-09-20 | 2018-03-29 | Ramon Chips Ltd. | Scheduling of tasks in a multiprocessor device |
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 |
US20200019412A1 (en) * | 2018-07-12 | 2020-01-16 | Dell Products L.P. | Systems and methods for optimal configuration of information handling resources |
CN109600447B (zh) * | 2018-12-21 | 2021-08-10 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和系统 |
US11281496B2 (en) | 2019-03-15 | 2022-03-22 | Intel Corporation | Thread group scheduling for graphics processing |
US11487731B2 (en) * | 2019-07-24 | 2022-11-01 | Vmware, Inc. | Read iterator for pre-fetching nodes of a B-tree into memory |
US20220156393A1 (en) * | 2020-11-19 | 2022-05-19 | Tetrate.io | Repeatable NGAC Policy Class Structure |
CN112685333B (zh) * | 2020-12-28 | 2024-06-07 | 上海创功通讯技术有限公司 | 一种堆内存管理方法及装置 |
CN115168058B (zh) * | 2022-09-06 | 2022-11-25 | 深流微智能科技(深圳)有限公司 | 线程负载均衡方法、装置、设备及存储介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
JPH02253356A (ja) * | 1989-03-28 | 1990-10-12 | Toshiba Corp | 階層キャッシュメモリ装置とその制御方式 |
US5099516A (en) * | 1989-06-12 | 1992-03-24 | Dell Corporate Services Corporation | Digital computer code word identification system |
JPH0640324B2 (ja) * | 1989-10-26 | 1994-05-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプロセッサ・システムおよびそのプロセス同期方法 |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5452452A (en) * | 1990-06-11 | 1995-09-19 | Cray Research, Inc. | System having integrated dispatcher for self scheduling processors to execute multiple types of processes |
US5265235A (en) * | 1990-11-30 | 1993-11-23 | Xerox Corporation | Consistency protocols for shared memory multiprocessors |
US5237673A (en) * | 1991-03-20 | 1993-08-17 | Digital Equipment Corporation | Memory management method for coupled memory multiprocessor systems |
JPH04365162A (ja) * | 1991-06-13 | 1992-12-17 | Matsushita Electric Ind Co Ltd | 資源割当解析方法とスケジューリング方法およびそのシステム |
US5261053A (en) * | 1991-08-19 | 1993-11-09 | Sequent Computer Systems, Inc. | Cache affinity scheduler |
US5317738A (en) * | 1992-02-18 | 1994-05-31 | Ncr Corporation | Process affinity scheduling method and apparatus |
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
FR2692058B1 (fr) * | 1992-06-09 | 1994-07-29 | Bull Sa | Systeme de traitement transactionnel entre un serveur informatique et une pluralite de stations de travail. |
US5379428A (en) * | 1993-02-01 | 1995-01-03 | Belobox Systems, Inc. | Hardware process scheduler and processor interrupter for parallel processing computer systems |
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
JP2671804B2 (ja) * | 1994-05-27 | 1997-11-05 | 日本電気株式会社 | 階層型資源管理方法 |
-
1995
- 1995-06-23 US US08/494,357 patent/US6105053A/en not_active Expired - Lifetime
-
1996
- 1996-06-18 AU AU56014/96A patent/AU701540B2/en not_active Ceased
- 1996-06-19 CA CA002179483A patent/CA2179483A1/en not_active Abandoned
- 1996-06-20 EP EP96304598A patent/EP0750255A3/en not_active Withdrawn
- 1996-06-24 JP JP16351596A patent/JP3836187B2/ja not_active Expired - Lifetime
-
2006
- 2006-06-07 JP JP2006158290A patent/JP2006302305A/ja active Pending
-
2007
- 2007-11-15 JP JP2007296973A patent/JP2008112457A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8347298B2 (en) | 2006-10-02 | 2013-01-01 | Japan Aerospace Exploration Agency | Autonomous distributed control involving constraint on resources |
JP2017146895A (ja) * | 2016-02-19 | 2017-08-24 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
Also Published As
Publication number | Publication date |
---|---|
AU5601496A (en) | 1997-01-09 |
AU701540B2 (en) | 1999-01-28 |
EP0750255A3 (en) | 1998-09-30 |
US6105053A (en) | 2000-08-15 |
JP3836187B2 (ja) | 2006-10-18 |
CA2179483A1 (en) | 1996-12-24 |
JP2008112457A (ja) | 2008-05-15 |
JP2006302305A (ja) | 2006-11-02 |
EP0750255A2 (en) | 1996-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3836187B2 (ja) | 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム | |
US11513836B2 (en) | Scheduling resuming of ready to run virtual processors in a distributed system | |
US11803306B2 (en) | Handling frequently accessed pages | |
US7380039B2 (en) | Apparatus, method and system for aggregrating computing resources | |
US5745778A (en) | Apparatus and method for improved CPU affinity in a multiprocessor system | |
Zhang et al. | Improving distributed workload performance by sharing both CPU and memory resources | |
KR101850318B1 (ko) | 가상 메모리 관리 장치 및 방법 | |
CN102365626B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
JPH1011305A (ja) | 非均等メモリ・アクセス記憶アーキテクチャを有するマルチプロセッサ・システム及びそのシステムにおけるプロセス割当て方法 | |
JP2008536224A (ja) | シーケンサー・アドレス管理 | |
JP2002140229A (ja) | アプリケーションレベルのメモリ類似性制御 | |
US11755354B2 (en) | NUMA-aware resource allocation and placement of database containers | |
US8954969B2 (en) | File system object node management | |
WO2021086839A1 (en) | Goal-directed software-defined numa working set management | |
US20090320036A1 (en) | File System Object Node Management | |
JPH10143382A (ja) | 共有メモリ型マルチプロセッサシステムの資源管理方法 | |
JPH0522261B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060307 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060310 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060607 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060627 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060726 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090804 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100804 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110804 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110804 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120804 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120804 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130804 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |