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
Application number
JP8163515A
Other languages
English (en)
Other versions
JP3836187B2 (ja
Inventor
Jeffrey S Kimmel
ジェフリー・エス・キメル
Robert A Alfieri
ロバート・エイ・アルフィエリ
Miles A Deforest
マイルズ・エイ・デフォーレスト
William K Mcgrath
ウィリアム・ケイ・マクグラス
Michael J Mcleod
マイケル・ジェイ・マクレウド
Mark A O'connell
マーク・エイ・オコンネル
Guy A Simpson
ガイ・エイ・シンプソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
Data General Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Data General Corp filed Critical Data General Corp
Publication of JPH09237215A publication Critical patent/JPH09237215A/ja
Application granted granted Critical
Publication of JP3836187B2 publication Critical patent/JP3836187B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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

(57)【要約】 (修正有) 【課題】 ハードウェアアーキテクチャの抽象概念を階
層ツリー構造で与え、アドレス透過のメモリ移動などメ
モリ資源の継ぎ目のない扱いを支援する。 【解決手段】 階層ツリー構造は、ジョブ・プロセッサ
1〜8を表わすリーフ・ノードと、全てのジョブ・プロ
セッサによって共有される少なくとも1つのシステム資
源16を表わすルート・ノードと、ジョブ・プロセッサ
の異なる組み合わせによって共有される資源10〜13
を表わす複数の中間レベル・ノードとを含む。オペレー
ティング・システムは、システム全体に分散されている
アクティブなスレッド群の進展を監視し、衰退スレッド
群を補助する中期スケジューラと、各々ジョブ・プロセ
ッサの1つと関連付けられ、その状態を監視し、その実
行スレッド群を得る複数のディスパッチャとを含み、更
に複数のメモリ・プールおよびフレーム・トレジャリを
用いて仮想および物理メモリを割り当てる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にコンピュ
ータのオペレーティング・システムに関し、更に特定す
れば、非一様メモリ・アクセス(NUMA:non-uniform memo
ry access)マルチプロセッサ・システム用オペレーティ
ング・システムに関するものである。
【0002】
【従来の技術】スレッド(thread)は、多数の非同期タス
クの効率的な制御を容易にする、プログラミング構造で
ある。スレッドは基礎となるハードウエアに密接に対応
するので、対称的なマルチプロセシング・システム上で
実行されるアプリケーションに、平易なプログラミング
・モデルを与える。
【0003】最近のマルチプロセシング・システムは、
処理タスクを共有するいくつかの別個のジョブ・プロセ
ッサ(JP)を有することができる。かかるシステムの多く
は、キャッシュを内蔵し、このキャッシュをシステムの
JPの部分集合が共有する。しかしながら、多くの従来
技術のマルチプロセッサ・システムに伴う問題の1つ
に、システム上で実行中のプロセスが、その実行中に、
多数の処理スレッドを生成するときのJPおよびキャッ
シュの親和性が不十分(poor)であることがあげられる。
従来技術のシステムには、各スレッドに個々の優先度を
割り当て、各スレッドをシステム全体で汎用的に別個に
スケジュールするものがある。また他のシステムには、
個々のスレッドを個々のJPに親和化(affine)できるも
のもある。同一データにアクセスする傾向がある、多数
の関係するスレッドを、多数のJP群に分散すると、シ
ステムのキャッシュ内外において、望ましくない高いレ
ベルのデータ交換(data swapping)が発生する可能性が
ある。
【0004】Robert A. Alfieriにより、1994年1
月26に出願され、本願と共に譲渡された、"APPARATUS
AND METHOD FOR IMPROVED CPU AFFINITY IN A MULTI-P
ROCESSOR SYSTEM"と題する米国特許出願番号第08/1
87,665号は、同一プロセスからの関係があるスレ
ッド群をJP群に親和化し、二次的なキャッシュの親和
性を改善しつつ、同一群内のスレッド間の処理効率を高
め、群間の処理のオーバーヘッドを減少させる方法を開
示する。この開示内容は、この言及により、本願にも含
まれるものとする。先の開示された方法は、更に、親和
性を自動的に修正し、局所的な効率を維持しつつ、関係
のあるスレッド群を移動させる。マルチプロセッサ・シ
ステム全体にわたってプロセッサ負荷の均衡を取るため
に、開示された方法は、全てのアクティブなスレッド群
を、システム・アーキテクチャ内で最高で最もよく見え
る(visible)レベルに昇進させることによって、周期的
に負荷の均衡化を行う。
【0005】
【発明が解決しようとする課題】NUMAアーキテクチ
ャを有するスケーラブル・マルチプロセッサ・システム
に実施可能な、グローバル・スケジューリング機構を有
するオペレーティング・システムに対する必要性が存在
する。また、NUMAシステムを抽象化し、コスト・ト
レードオフを管理し、資源アクセス・コストを考慮に入
れたポリシおよび機構を実施しつつ、システムの資源全
体に作業負荷を分散させる方法に対する必要性も存在す
る。加えて、アドレスが透過なメモリの移動、およびN
UMAマルチプロセシング・システムの種々のメモリ資
源の継ぎ目のない一体化を支援する、メモリ・マネージ
ャを有するオペレーティング・システムに対する必要性
も存在する。
【0006】
【課題を解決するための手段】したがって、本発明は、
上述の問題を克服しようとするものである。本発明のオ
ペレーティング・システムの一態様は、システムのスル
ープットを向上し、プロセスとジョブ・プロセッサとの
間に緊密な親和性を保持する、局在性管理機構(localit
y management mechanism)を提供することである。この
利点およびその他の利点を達成するため、そしてここに
具現化され広く述べられる本発明の目的によれば、本発
明のオペレーティング・システムは、マルチプロセッサ
・システムのハードウエア・アーキテクチャの抽象概念
を維持する手段を含む。抽象概念は、プロセッサおよび
共有される資源の物理的構成を、階層的ツリー構造とい
う形態で表わす。階層的ツリー構造は、プロセッサに対
応し、階層的ツリーの最下位レベルに位置付けられる複
数のリーフ・ノード(leaf node)と、全てのプロセッサ
によって共有される共通資源および共有される中間資源
に対応し、階層ツリーの最高レベルに位置付けられるル
ート・ノード(root node)と、共有される中間資源に対
応し、階層ツリーの少なくとも1つの中間レベルに位置
付けられる複数の中間ノードとを有する。階層ツリーの
各ノードに実行キュー(run queue)を確立するための手
段が設けられる。各実行キューは、リーフ・ノードと関
連付けられ、対応するプロセッサに親和化されたアクテ
ィブなプロセスまたはスレッド群を識別する。残りのノ
ードの1つと関連付けられた各実行キューは、当該ノー
ドに関連付けられた資源を共有するプロセッサ群に親和
化されたアクティブなプロセッサを識別する。更に、プ
ロセッサの動作を監視し、実行キュー内に並んでいるプ
ロセスを選択し、プロセッサに実行させる手段も設けら
れる。
【0007】本発明のオペレーティング・システムの別
の態様は、システムのスループットを向上させつつ、シ
ステム全体で均衡の取れたプロセッサ負荷を維持する、
グローバル・スケジューリング機構を提供することであ
る。この利点およびその他の利点を達成するために、本
発明のオペレーティング・システムは、マルチプロセッ
サ・システムのハードウエア・アーキテクチャの階層的
ツリーの抽象概念を維持する手段と、システム内のアク
ティブなプロセスの進展を監視し、進展していなかった
プロセスをより速く実行させる可能性を高める手段とを
含む。本発明のオペレーティング・システムの更に他の
態様は、システムにおいてプロセスが衰退しないことを
保証するように協動する、グローバルおよびローカル・
スケジューリング機構を提供することである。
【0008】この利点およびその他の利点を達成するた
めに、本発明のオペレーティング・システムは、プロセ
ッサの各々と関連付けられ、関連するプロセッサの実行
キューを監視し、他のプロセッサの実行キューから、関
連するプロセッサに実行させるためのプロセスを探し獲
得するディスパッチャと、システム内のアクティブなプ
ロセスの進展を監視し、進展していないプロセスにフラ
グをセットする、中期スケジューラとを含む。前記ディ
スパッチャが、複数の入手可能なプロセスを有する実行
キューを発見したとき、ディスパッチャは、フラグがセ
ットされているプロセスを選択する。
【0009】本発明の他の実施例によれば、システム内
における各アクティブなプロセスの進展を監視し、所定
時間期間の間進展していない各アクティブなプロセスの
優先度を高める中期スケジューラと、プロセッサの1つ
と関連付けられ、関連するプロセッサによって実行され
るプロセスを並べた実行キューを監視し、関連するプロ
セッサに実行させるために、前記実行キュー内で最も優
先度の高いアクティブなプロセスを選択する、少なくと
も1つのディスパッチャとを含むオペレーティング・シ
ステムによって、上述の態様は達成可能である。
【0010】本発明の更に他の態様は、あるプロセスの
親和性が変化したか否かを判定し、プロセスのホーム親
和性(home affinity)を変更すべきか否かを判定する、
動的データ構造機構を提供することである。この利点お
よびその他の利点を達成するために、本発明のオペレー
ティング・システムは、マルチプロセッサ・システムの
ハードウエア・アーキテクチャの階層ツリー構造の抽象
概念を維持する手段と、階層ツリーの各ノードに対する
実行キューを形成する手段とを含む。リーフ・ノードと
関連付けれらた各実行キューは、関連するプロセッサに
親和化されたアクティブなプロセスを識別し、残りのノ
ードの1つと関連付けれた各実行キューは、当該ノード
と関連付けられた資源を共有するプロセッサ群に親和化
されたアクティブなプロセスを識別する。抽象概念は、
階層ツリーのレベルの1つをスケジューリング・レベル
として定義し、スケジューリング・レベル内のノードを
スケジューリング・ロカール(scheduling locale)とし
て識別する。マルチプロセッサ・システム内の各アクテ
ィブなプロセスまたはスレッド群は、ホーム・スケジュ
ーリング・ロカールと、現スケジューリング・ロカール
とを有し、各々スケジューリング・ロカールの1つに対
応する。プロセスのホーム・スケジューリング・ロカー
ルは、当該プロセスを実行するために好適なプロセスの
祖先であるスケジューリング・ロカールである。スレッ
ド群の現スケジューリング・ロカールは、プロセスを最
後に実行した、または現に実行中のプロセッサの祖先で
あるスケジューリング・ロカールである。
【0011】本発明の更に別の態様は、NUMAシステ
ムにおいて継ぎ目なく物理メモリを割り当てるためにデ
ータ構造を利用することである。この態様を達成するた
めに、本発明のオペレーティング・システムは、マルチ
プロセッサのハードウエア・アーキテクチャの階層ツリ
ー抽象概念を維持する手段を含む。オペレーティング・
システムは、更に、共有物理メモリ資源を表わす各ノー
ドにおいてフレーム・トレジャリ(frame treasury)を維
持しフレーム管理および資源の割り当てを制御し、全ノ
ードに共通なノードを識別する手段も含む。トレジャリ
と関連付けられるのは、プロセッサの少なくとも1つが
使用するために、フレーム・トレジャリから物理メモリ
のフレームを割り当てる高位ポリシ・ノードである。
【0012】本発明の他の態様は、NUMAシステムに
おいて仮想メモリを割り当てるために多数の独立したメ
モリ・プールを利用することである。この態様を達成す
るために、本発明のオペレーティング・システムは、マ
ルチプロセッサ・システムのハードウエア・アーキテク
チャの階層ツリー抽象概念を維持する手段と、システム
の仮想メモリの割り当てのために、メモリ・ロカールを
表わす各ノードにおいてメモリ・プールを維持する手段
と、メモリ単位及び該メモリ単位の各々に割り当てられ
ているメモリ・プールの可用性を識別するプール単位テ
ーブルを維持する手段とを含む。前記仮想メモリは、メ
モリ・プールに割り当て可能なプール単位に分割されて
いる。
【0013】本発明の特徴および利点は、書面にした説
明および特許請求の範囲、ならびに添付図面において特
に指摘した手段および組み合わせによって実現し、獲得
することができる。また、添付図面は、本明細書に組み
込まれ、その一部を構成し、本発明のいくつかの実施例
を例示し、本発明の目的、利点、および原理を説明する
のに供するものである。
【0014】
【発明の実施の形態】
ハードウエア・システムの概要 図1は、本発明のオペレーティング・システムを実施す
ることができる、NUMAマルチプロセッサ・システム
20の一例を示す。提示を明確かつ容易にするために、
NUMAマルチプロセッサ・システム20は、8個のジ
ョブ・プロセッサ(JP)1〜8を含むものとして描い
てある。当業者には容易に認められようが、本発明は、
他の数のJPを有するNUMAマルチプロセッサ・シス
テムにも適用可能である。また、各JP群が2つずつ構
成要素を有すること、または全てのJP群が同一数のJ
Pを有することは必須ではない。本発明は、メモリ・ア
クセス時間がシステム全体で等しいが、ローカル・バス
の帯域の使用を均衡化することを望む、UMAシステム
にも適用可能である。
【0015】ここで使用し記載するNUMAシステム
は、分散型メモリを有するシステムであって、メモリの
各部分は、あるJPには他のものよりも緊密である(ア
クセスが安価である)が、全てのメモリ資源は全てのJ
Pにアクセス可能なシステムである。したがって、NU
MAオペレーティング・システムは、引用の局在性に対
する感度を高め、メモリ配置(memory placement)を明示
的に管理することによって、理想的な性能を達成するこ
とが好ましい。
【0016】各JP1〜8は、個別の第1キャッシュ
(図示せず)を有し、通常、これは少なくとも別個のデ
ータおよび命令キャッシュを含み、各キャッシュは、例
えば、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にメモリがな
ければならない。
【0017】図1に示すようなNUMAマルチプロセッ
サ・システムは、非対称的アーキテクチャを有し、共有
資源10〜13の各々が異なるメモリ量を有するように
してもよい。更に、JP1〜8は、異なる処理能力を有
してもよい。加えて、ハードウエアは、その鍵となる共
有資源が階層的システム抽象概念によって適切に表現可
能である限り、1つの階層として組織化する必要もな
い。例えば、ハードウエアは、メッシュに基づくシステ
ム組織(mesh-based system organization)を有すること
も可能である。システム全体にわたってこれらの種々の
構成物を扱い、異なるハードウエア構成物の継ぎ目のな
い一体化を可能にするために、本発明のオペレーティン
グ・システムは、NUMAマルチプロセッサ・システム
の抽象概念を利用する。これについては、後に更に詳細
に説明する。
【0018】オペレーティング・システム 図1に示したようなマルチプロセッサ・システムでは、
オペレーティング・システム(またはカーネル)は、通
常、ジョブ・プロセッサおよび/または専用システム・
プロセッサ上で実行される、種々のプロセスまたは方法
を含む。以下に述べるオペレーティング・システムの構
成物は、オペレーティング・システムによって実行され
るプロセスのいくつかのことを指す。
【0019】図2は、非一様メモリ・アクセス(NUM
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のような共通共有資源を表わす。
【0020】本発明のオペレーティング・システムは、
種々のハードウエア・アーキテクチャを有するNUMA
マルチプロセッサ・システムに常駐し、これを制御でき
るように柔軟に設計されているので、オペレーティング
・システムが利用するハードウエア・アーキテクチャの
抽象概念は、システムによって異なる。しかしながら、
以下に述べるように、オペレーティング・システムは、
種々のポリシを利用して、ハードウエア・アーキテクチ
ャの適切な抽象概念を確立し、システムの処理を最も有
効に管理する。
【0021】各JP100〜107毎に、オペレーティ
ング・システムは、実行キュー(runqueue)およびディス
パッチャ(dispatcher)を含む。ディスパッチャは、ある
グローバルおよびローカル・スケジューリング・ポリシ
にしたがって、関連するJP上でのプロセスのスケジュ
ーリングおよび実行を担う機構である、カーネル・サブ
システム(kernel subsystem)である。スケジューリング
・ポリシのセットする役割を担う、オペレーティング・
システム内の他のカーネル・サブシステムを、以後、中
期スケジューラ(meidum term scheduler)と呼ぶ。これ
は、ディスパッチャが処理するスケジューリング機構に
影響を与える。ディスパッチャおよび中期スケジューラ
のスケジューリング処理については、「スレッド群」の
背景説明に続いて、以下で説明する。尚、スレッド群
は、オペレーティング・システムがそのポリシ作成決定
のいくつかの基準とするスレッドの群を表わす。しかし
ながら、オペレーティング・システムは、以下に説明す
るような、多数のスレッドを有するスレッド群上だけで
なく、単一プロセス(即ち、単一スレッドを有するスレ
ッド群)上でも動作可能であることは、理解されよう。
【0022】スレッド群 ここで開示する「スレッド群」とは、同一データにアク
セスし処理する傾向のある、プロセス内で、緊密な関係
にあるスレッドの集合のことである。これら関係の有る
スレッドを、単一の全体的にスケジュール可能な群とし
て扱うことにより、当該群内のスレッドと個々のJPま
たはJP群との間に、より密接な関係を増進し、これに
よって、キャッシュのヒット率およびシステム全体の性
能が向上することになる。
【0023】図3を参照すると、システム20上で実行
される典型的なプロセス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に示す数は、シ
ステムに全体おける各スレッド群のグローバル・スケジ
ューリング優先度を示す。各スレッド・ボックスの中に
示す数は、その特定スレッド群の中における、スレッド
の優先度を示す。
【0024】また、図3のプロセス200の中に概念的
に配置してあるのは、データ集合240であり、プロセ
ス200の実行中に、スレッドがアクセスする潜在的必
要性があるものである。図3において、データ241
は、TG210内のスレッドが実行すべきタスクを支援
するデータ240の副集合を表わす。同様に、データ2
42および243は、TG220および230内のスレ
ッドが実行すべきタスクを支援する。
【0025】プロセスの中のアクティブなスレッドは、
1つ以上の付加的なスレッドを生成することができる。
新たなスレッドが生成されるとき、それは、生成元のス
レッドのスレッド群内で生成されるか、他の既存のスレ
ッド群内で生成されるか、あるいは、新たなスレッド群
の最初のスレッドとなることもできる。例えば、TG2
20は、プロセス200内のスレッドによって、または
システム内の他のプロセス内のスレッドによって生成さ
れたものとすることができる。あるスレッドが新たなス
レッド群内の最初のスレッドとして形成される場合、新
たなスレッド群のスレッド群構造は、まず、生成したス
レッドのスレッド群のスレッド群構造を受け継ぐことに
よって生成される。次いで、新たに生成されたスレッド
群において、新たなスレッドが生成される。生成元のス
レッドは、新たに生成されたスレッドに、ローカル・ス
ケジューリングおよび優先度を割り当てる。他に指定が
ない場合は、新たに生成されたスレッドは、それを生成
したスレッドのローカル・スケジューリング・ポリシお
よび優先度を受け継ぐことになる。新たに生成されたス
レッドは、それを生成したスレッドよりも高い、低い、
または同一の優先度を有することができる。同様に、あ
るスレッド群内の個々のスレッドは、そのスレッド群の
優先度よりも高い、低い、あるいは同一の優先度を有す
ることができる。
【0026】スレッド群構造は、そのスレッド群内の全
スレッドについて、累積タイムスライス(timeslice)お
よびJP課金(accounting)も維持するので、スレッド群
内の個々のスレッドについて、タイムスライス処理およ
びJP課金の記録は不要である。スレッド群内の個々の
スレッドは、各々、それ自体のスレッド優先度およびス
ケジューリング・ポリシを保持する。
【0027】実行すべきスレッド群を選択する際に、J
Pのディスパッチャが用いる、特定の方法について以下
に論じる。一旦ディスパッチャが実行のために特定のス
レッド群を選択したなら、ディスパッチャは当該スレッ
ド群から1つのスレッドを選択し、その群内のスレッド
の局所的優先度およびスケジューリング・ポリシに基づ
いて実行する。したがって、スレッドの選択および実行
は、2つの独立したレベルで行われる。即ち、スレッド
群のグローバル・スケジューリング、これに続く、当該
スレッド群のスレッドの1つのローカル・スケジューリ
ングである。あるスレッド群の中の個々のスレッドの優
先度は、当該スレッド群自体のスケジューリングには何
等関係がない。スレッド群のスケジューリングは、スレ
ッド群構造におけるスレッド群の優先度に基づいてい
る。
【0028】プロセスの実行には、各々複数のスレッド
を有する複数のスレッド群がしばしば関与する。プロセ
スの開発においてスレッド群を使用することにより、既
存のスレッド群内で新しいスレッドを生成することと、
新しいスレッド群を生成することの間で選択を行う柔軟
性をユーザに与えることになる。ユーザは、当該プロセ
ス内の種々のタスクを処理するための最も効率的な手法
に基づいて、決定を下すことができる。例えば、多数の
スレッドを用いて特定の計算に関する作業を行ってお
り、全てのスレッドが同一データ集合へのアクセスを必
要とする場合、これらのスレッドを単一のスレッド群に
属させるのが正しい。一方、プロセスの進行中に当該プ
ロセス内で新たなタスクを開始するが、このタスクが既
存のスレッド群のタスクとは密接に結び付かず、しかも
新たなタスクのスレッドが異なるデータ副集合240へ
のアクセスを必要とする場合、新たなスレッド群を指示
する。
【0029】プロセス・スケジューリング 上述のように、オペレーティング・システムは、ハード
ウエア・アーキテクチャの抽象概念を利用する。これ
は、共有資源、メモリ・ロカール(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がある。この命名基準は、多くの場合、
システムの各レベルにいくつのノードがあるかを知る必
要性から、ソフトウエアを解放するため、実施を簡素化
することができる。
【0030】階層ツリー構造を用いてシステムのハード
ウエアを抽象化することの目的は、1つのノードから他
のノードへの移動に伴うアクセス・コストの表現を与え
ることである。例えば、JP101がノード110で表
わした第2キャッシュから読み取りを行うためのコスト
は、同じJPがノード112で表わした第2キャッシュ
から読み取りを行うためのコストよりも大幅に少ない。
これは、ハードウエアのアクセス・レイテンシ(latenci
es)およびシステム・バスの帯域が制限されていること
によるものである。このように、階層ツリー抽象概念群
は、JPおよび群の共有資源間の相互作用と関連付け
て、最も低いコストを有する共有資源およびJPを類別
する。
【0031】上述のように、あらゆるシステムを同一の
抽象概念で表わす訳ではない。例えば、一様メモリ・ア
クセス・システムでは、全てのJPを直接共通の共有メ
モリに接続する。したがって、各JPが共通メモリにア
クセスする際のコストは、他のJPの場合と同一であ
り、全てのメモリは、階層のルート・ノードで表わされ
ることになろう。しかしながら、非一様メモリ・アクセ
ス(NUMA)システムでは、JPのあるものは1つの
共有メモリ資源に直接接続され、一方、他のJPには他
の共有メモリ資源に接続するものもある。更に、1つの
メモリ資源に直接接続されるJPの数は、他のメモリ資
源に接続される数とは異なる場合もある。かかるシステ
ムの階層的抽象概念を与えることによって、オペレーテ
ィング・システムは、JPがより緊密に親和化されてい
るローカル・メモリへのアクセスを促進し、アクセス可
能性が限られているシステム資源の利用を必要とする場
合がある、遠隔メモリ資源へのJPのアクセスを制限す
るようなポリシを確立することができる。
【0032】マルチプロセッサ・システムの抽象概念を
構成するためには、2つの競合するシステムの目標を調
和させる必要がある。一方では、JPにできるだけ効率
的にプロセスを実行させなければならない。他方では、
システムのスループットを最大限高めなければならな
い。図2を参照して、レベル3において「可視」である
全スレッドは、8つのJP100〜107のディスパッ
チャのいずれかが選択し実行することができる。レベル
3のスレッドを潜在的に実行可能なJPは8つあるの
で、これは各スレッドを実行する機会を最大に高める。
しかしながら、こうすると、結果として、同じスレッド
群からのスレッドが異なるJP群(即ち、JP100お
よび101、JP102および103、JP104およ
び105、またはJP106および107)において実
行されることになる。多数のスレッド群からのスレッド
がJP群全体に分散し、その結果キャッシュの動作が増
大するため、システムのスループットが低下する。
【0033】一方、全スレッド群が特定のJPに割り当
てられるとすると、全スレッドが同一JP上で処理され
る同一データ集合上で作用するため、キャッシュ・ヒッ
トの可能性が高くなるため、明らかに局所的なキャッシ
ュ親和性が高くなる。しかしながら、複数の時間的制約
が厳しいスレッド(time critical thread)を単一のJP
に割り当てると、JPがビジー状態となり、全ての時間
的制約が厳しいスレッドをスケジュール通りに実行でき
なくなる可能性が高まるため、望ましくない。
【0034】上述のように、本オペレーティング・シス
テムの好適実施例では、2つのスケジューリング・レイ
ヤ(layer)がある。全スレッド群は群優先度を有し、中
期スケジューラによってスケジュールされることによ
り、抽象化システム150内のどこでも利用可能なJP
資源を得るために競うことができる。一旦あるJPディ
スパッチャが実行すべきスレッド群を選択したなら、こ
のディスパッチャは、当該スレッド群内の局所的優先度
にしたがって、このスレッド群内から1つのスレッドを
選択する。
【0035】再び図3を参照し、スレッド群およびスレ
ッドの優先度について調べる。図からわかるように、ス
レッド群の優先度は、当該スレッド群内の個々のスレッ
ドの優先度より、高い場合も低い場合も有り得る。図3
のプロセス200の例では、TG210には900とい
う優先度が割り当てられ、TG220は810という優
先度を有し、TG230は500という優先度を有す
る。例えば、スレッド群210、220および230の
みが、偶然システム150でアクティブなスレッド群で
あるとすると、TG210は利用可能なスレッド群の中
で最も高い優先度を有するので、次に利用可能なJPの
ディスパッチャは、次に実行すべきスレッド源として、
TG210を選択する。
【0036】一旦ディスパッチャがTG210を選択し
たなら、このディスパッチャは、同じスレッド群の実行
キューから、実行すべき特定のスレッドを取り出す。T
G210のアクティブなスレッド212〜214は、そ
れぞれ、405、405および400の優先度を有す
る。スレッドは、その優先度の順に、それらの実行キュ
ーに配置される。実行キュー内で等しい優先度のスレッ
ドの順は、ローカル・スケジューリング・ポリシによっ
て決定される。
【0037】あるスレッドが必要とするデータが、この
スレッドを実行するJP自体のキャッシュ内で見つけら
れる可能性を最大に高め、そこにない場合、当該JPの
JP群と関連付けられている第2キャッシュ内で見つけ
られる可能性を最大に高めることが非常に望ましいこと
はよく理解されよう。高位レベルの共有メモリに移動し
て、キャッシュにないデータを得ようとすると、スレッ
ドの処理に遅れを来し、システム全体のスループットに
影響を与える。同様に、近くのメモリではなく遠くのメ
モリにアクセスすることによっても、遅れを生じる。同
時に、キャッシュ局在性を高めるために行われるステッ
プは、時間制約が厳しいスレッドの処理の適時実行に影
響を与える可能性はない。
【0038】各スレッド群と関連付けられ、システム内
の全JPに利用可能なものに、スレッド群の利用可能な
JPまたはJPの集合、およびスレッド群の最低許容処
理レベルを指定する属性がある。JP属性は、システム
内でスレッド群の実行が許されているJPまたはJPの
集合を識別する。典型的に、この属性は、システム15
0内の全JPを利用可能として識別するが、システムの
JPの部分集合はユーザが指定する。最低許容処理レベ
ル属性は、スレッド群を親和化できる最低処理レベル
(0、1、2、または3)を指定する。この属性は、リ
アル・タイム・スケジュール・セマンティクス(real ti
me schedule semantaics)のために、プロセッサ親和性
ポリシを無視する際に用いることができる。
【0039】タイムシェアリング・スレッド群に対する
最低許容処理レベルは、典型的に0である。こうするこ
とによって、スレッド群をレベル2に低下させ、レベル
2で第3キャッシュを共有する4つのJPから成る特定
群に、このスレッド群をレベル1で親和化したり、レベ
ル1に低下させて、第2キャッシュを共有する2つのJ
Pから成る特定群にスレッド群を親和化させたり、ある
いはレベル0に低下させて、スレッド群を特定のJPに
親和化させることができる。スレッド群を特定のJPま
たは単一のJP群に親和化させることにより、当該スレ
ッド群内のスレッドに対するキャッシュ局在性が改善さ
れることになる。
【0040】リアル・タイム・スレッド群の最低許容処
理レベルは、典型的に、ルート・レベル(本例ではレベ
ル3)であり、スレッド群を最高処理レベルより下に移
動させないようにすることにより、スレッド群が常に最
大数のJPに利用可能であるようにする。したがって、
リアル・タイム・スレッド群に対する応答時間は最適化
される。ユーザは、最低許容処理属性を通じて、リアル
・タイム・スレッド群をレベル2、レベル1、またはレ
ベル0に移動させるように、指定することができる。
【0041】本発明の好適実施例では、スレッド群およ
び処理インスタンス間における親和性の維持は、システ
ム実行キューによって行うようにしている。図2に示す
抽象化システムには、合計15の実行キューがある。即
ち、8つのレベル0列(各JPに1つずつ)、4つのレ
ベル1列、2つのレベル2列、および1つのレベル3列
である。全ての利用可能なスレッド群は、これら15の
列の1つにあり、その1つにしかない。新たに生成され
るスレッド群は、生成元のスレッド群の実行キューおよ
びその親和性属性を受け継ぐ。
【0042】例えば、図3を参照して、TG230が最
初に生成されると、その生成元の親和性を受け継ぎ、生
成元のスレッド群に対応するロカールの実行キューに配
置される。TG230はタイムシェアリング・スレッド
群であるので、JP100〜107の1つが、最初に実
行すべきものとしてそれを選択した場合、TG230
は、それを選択したディスパッチャと関連付けられた特
定のJPに「引き下げられる」。選択元のディスパッチ
ャは、当該スレッド群をレベル3実行キューから取り出
し、それ自体のレベル0実行キューに配置することによ
って、これを達成する。この時点で、当該JPはTG2
30と親和化されており、TG230が再度親和化され
るか、或いは実行キューがリセットされるまで、TG2
30内のスレッドを実行し続ける。これについては、以
下で論じることにする。ディスパッチャは、実行キュー
を維持する。実行キューは、JP/メモリ・ツリー階層
の各ノードについて、特定ノードに存在するロード可能
なスレッド群のリストを含む。ディスパッチャは、それ
に関連するノードの固有の命名基準によって、実行キュ
ーを識別することができる。
【0043】NUMAアーキテクチャを有するシステム
において、グローバル・スケジューリング機構を設ける
には、階層ツリーにおけるあるレベルを、「スケジュー
リング・レベル」として選択する。「スケジューリング
・レベル」は、中期スケジューラがそのスケジューリン
グ処理を実行する、階層ツリーにおけるレベルのことで
ある。スケジューリング・レベルにある階層ツリーの各
ノードを、「スケジューリング・ロカール」と呼ぶ。ス
ケジューリング・ロカールおよびその子ノード(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が別のスケジューリング・サブツリーに属す
る。
【0044】階層ツリーにおけるどのレベルでも、スケ
ジューリング・レベルとして選択することができる。し
かしながら、どのレベルをスケジューリング・レベルに
選択するしても、選択したレベルは、スケジューリング
のためのローカル・メモリ・レベルと看做される。した
がって、スケジューリング・レベルの選択は、JP/メ
モリ親和性に影響を及ぼし、プロセスを1つのノードか
ら別のノードに移動させるためのコストを割り当てる基
準を設ける。これについては、以下で更に詳細に説明す
る。
【0045】階層ツリー内のあるレベルをスケジューリ
ング・レベルに指定し、スケジューリング・レベル内の
ノードをスケジューリング・ロカールに指定することの
重要な一面は、スレッド群を、「ホーム・スケジューリ
ング・ロカール(home scheduling locale)」および「現
スケジューリング・ロカール(current-scheduling loca
le)」に割り当てることができるようになることであ
る。スレッド群またはプロセスの「ホーム・スケジュー
リング・ロカール」は、当該スレッド群またはプロセス
を実行するための好適なJPの祖先ノード(ancestor no
de)である、スケジューリング・ロカールである。スレ
ッド群の「現スケジューリング・ロカール」は、当該ス
レッド群を最後に実行したJPの祖先ノードである、ス
ケジューリング・ロカールである。スレッド群は、その
現スケジューリング・ロカールとは異なるホーム・スケ
ジューリング・ロカールを有することもできる。かかる
状況が発生するのは、スレッド群を1つのスケジューリ
ング・サブツリーから他のスケジューリング・サブツリ
ーに移動し、適格なスレッド群を有さないJPをビジー
の状態に保持するようなときである。しかしながら、J
P/メモリ親和性を向上させるためには、スレッド群は
同一のホームおよび現スケジューリング・ロカールを有
することが好ましい。なぜなら、各スケジューリング・
ロカールは、異なる物理的メモリを表わし、JPは、局
所的資源を使用すれば、より効率的に処理を行うからで
ある。
【0046】中期スケジューラは、スレッド群を監視し
て、衰退スレッド群(languishing thread group)および
負荷均衡化のための候補を識別し、それぞれのスケジュ
ーリング・ロカールの負荷を監視してあらゆる負荷不均
衡を識別し、現スケジューリング・ロカールとホーム・
スケジューリング・ロカールが同一でない全スレッド群
を識別することによって、JP/メモリ親和性とシステ
ムのスループットのトレードオフとの均衡を取る。ホー
ム・スケジューリング・ロカールとは異なる現スケジュ
ーリング・ロカールを有するスレッド群を、中期スケジ
ューラが識別したとき、中期スケジューラは、(a)当
該スレッド群をホーム・スケジューリング・ロカールに
戻すことによって、それをホームに送る、(b)そのホ
ーム・スケジューリング・ロカールを変更し、その現ス
ケジューリング・ロカールに一致させることによって、
スレッド群を「移行(migrate)」させる、または(c)
そのホーム・スケジューリング・ロカールを変更するこ
となく、スレッド群をその現スケジューリング・ロカー
ルに放置する。
【0047】中期スケジューラが衰退しているスレッド
群を識別したときは、以下の3つの方法の内の1つで当
該スレッド群を補助することができる。第1に、このス
レッド群の優先度を高めて、このスレッド群を含む実行
キューのJPディスパッチャがこのスレッド群を選択し
実行する可能性を高める。第2に、中期スケジューラ
は、より高いノードの実行キューにスレッド群を「昇
進」させ、他のJPに対するその可視性を高める。第3
に、中期スケジューラは、当該スレッド群と関連付けら
れた侵入/補助ヒント・フラグ(poach/help hint flag)
をセットし、このスレッド群を、JPが「侵入する」ま
たは「補助する」のに適したスレッド群であるとして識
別する。「侵入」または「補助」が行われるのは、ある
スケジューリング・サブツリー内のアイドル状態のJP
と関連付けられたディスパッチャが、他のスケジューリ
ング・サブツリーのノードにおいて衰退スレッド群を引
き出したときである。「衰退スレッド群」は、実行され
ることなく、800msecのような所定時間期間にわ
たって実行キューの中で待たされているスレッド群のこ
とである。衰退スレッド群が、遠くのスケジューリング
・サブツリー内のJPによって実行されているスレッド
を有する場合、アイドル状態のJPのディスパッチャ
が、このスレッド群の中で最高の優先度を有するスレッ
ドを選択して実行することにより、このスレッド群を
「補助する」。それ以外の場合、ディスパッチャは、こ
のスレッド群全体を占領することによって、このスレッ
ド群に「侵入する」。スレッド群が「侵入」されると、
当該スレッド群の現スケジューリング・ロカールは、侵
入したディスパッチャのそれに変更させられる。スレッ
ド群が「補助」されるときは、当該スレッド群の現スケ
ジューリング・ロカールは、スレッド群が最初に配置さ
れたスケジューリング・サブツリーのスケジューリング
・ロカールに留り、補助されるスレッド群は、そのスレ
ッド群が実行された後、その最初の位置に戻される。
【0048】図4〜図7は、JP100のディスパッチ
ャが実行すべきスレッド群(TG)を選択する際に従う
シーケンスを示す。同様のシーケンスは、システム内の
全ディスパッチャが従う。JP100がスレッドを実行
可能となると(ステップ501)、そのディスパッチャ
はまず、第1の所定遅延時間が経過するまで、階層ツリ
ー内のその祖先ノードの実行キューを、特定の順番で検
索する。したがって、ディスパッチャ500は、このプ
ロセスを開始するに当たって、タイマをセットする(ス
テップ503)。
【0049】最初にディスパッチャは、そのレベル0実
行キューおよびレベル1〜3の祖先ノードにおいて、最
高優先度の適格なスレッド群を探す。JP100の場
合、ディスパッチャは、ノード100、110、11
4、および120の実行キューを検索し(ステップ50
5)、適格なスレッド群を探す(ステップ507)。デ
ィスパッチャが適格なスレッド群を見つけられない場
合、予め計算してあるJP100の関係物(relative)リ
ストにある、次の関係ノード(relative node)を探す。
ノードが存在するスケジューリング階層内のレベルは、
このレベルの実行キューが検索されるまでに要する遅延
量を決定する。このレベルのノードに対するタイマが未
だ終了していなければ、ディスパッチャは「アイドル」
スレッドを実行し、JP100をアイドル状態にする
(ステップ515)。タイマが終了した場合、ディスパ
ッチャは、ルートが関係物リスト内の次の関係物であっ
た、サブツリー全体を検索し、実行すべきスレッド群を
見つける(ステップ513)。適格なスレッド群がない
場合、ディスパッチャはステップ505に戻る。この手
順は、ディスパッチャが実行すべき適格なスレッド群を
見つけるまで、繰り返される。
【0050】アイドル・スレッド群は、それが常に適格
であり、常に可能な限り最低のスケジューリング・グロ
ーバル優先度を有するという点において、特殊である。
JP100〜107の各々は、その実行キューの中に、
アイドル・スレッド群を有する。祖先ノードまたは関係
ノードのいずれにも、アイドル群より高い優先度を有す
る適格スレッド群が含まれていない場合、ディスパッチ
ャはこのスレッド群を抽出し実行する。アイドル・スレ
ッドには遅延が組み込まれており、作業を捜す際に余り
に過激になるのを防止するようにしてある。その理由
は、キャッシュ・ラインが頻繁に無効化され、その結果
システム全体の性能が低下するからである。
【0051】ディスパッチャが観測する遅延時間は、階
層ツリー内のノードのレベルを基準とする。各レベルは
異なる遅延値を有する。これらの値は、機械のアーキテ
クチャに基づくデフォルト値を用いて構成可能である。
通常、ノードのレベルが高い程、遅延も長い。この理論
的根拠は、ディスパッチャが検索する関係ノードがツリ
ーの中で高い程、キャッシュ、メモリ位置、およびバス
/相互接続境界を交差しているというものである。これ
は、現在これら遠いノードに関係付けられているスレッ
ド群を実行すると、コスト増になる可能性があることを
意味する。
【0052】一旦ディスパッチャが、実行すべき適格な
スレッド群を有すると思われる実行キューを突き止めた
なら、実行キューの適格リスト上にある個々のスレッド
群の検索を開始する。まず、ディスパッチャは、実行キ
ューが同一スケジューリング・ツリー内にあるのか、遠
いスケジューリング・ツリー内にあるのかを判定する
(図5、ステップ523)。実行キューがディスパッチ
ャと同一のスケジューリング・ロカールにある場合、デ
ィスパッチャは単に実行キューの適格リストを検索する
(ステップ525)。このリストは、優先度がアイドル
・スレッド群のそれよりも高いスレッド群について、優
先度順にソートしてある。受け入れ可能なスレッド群が
見つからない場合、ディスパッチャはステップ505に
戻る。
【0053】ディスパッチャが遠いロカールで検索して
いる場合、最初に適格リストを走査して、スレッド群の
いずれかに、中期スケジューラが侵入または補助するの
に適した候補であるとして印されたものがないかを調べ
る(ステップ527)。もしもなければ、ディスパッチ
ャは優先度に基づいてスレッド群を検索する(ステップ
525および529)。この場合の論理的根拠は、侵入
/補助に適した候補として印されているスレッド群は、
ある時間にわたって衰退しており、当該スレッド群が遠
隔JP上で実行されると無効になる、ホット・キャッシ
ュ・フットプリント(hot cache footprint)を有する可
能性が低いからである。
【0054】一旦スレッド群が抽出されると、選択され
たスレッド群の中で最高の優先度を有するスレッドを抽
出して実行する(図6、ステップ533)。次に、ディ
スパッチャは、選択したスレッド群を新しい実行キュー
に移動する必要があるか否か判定する(スレッド群がJ
P100の実行キューにないとき)(ステップ53
5)。スレッド群がJP100の実行キュー上で見つか
った場合、侵入/補助ヒント・フラグをクリアし(ステ
ップ537)、新たなスレッドの実行を開始する(ステ
ップ539)。JP100の実行キュー上で見つからな
かった場合、スレッド群を新たな実行キューに移動する
必要がある可能性がある。スレッド群が、他のJPが現
在実行中の他のスレッドを全く有していない場合(図
7、ステップ545)、ディスパッチャは、このスレッ
ド群をレベル0の実行キューに移動可能か否かをチェッ
クする(ステップ551)。可能であれば、ディスパッ
チャはこのスレッド群をJP100の実行キューに移動
し(ステップ555)、侵入/補助ヒント・フラグをク
リアし(図6、ステップ537)、実行を開始する(ス
テップ539)。可能でなければ、ディスパッチャは、
スレッド群を配置するのを許された最低レベルに一致す
るレベルを有する祖先ノードの実行キューに、このスレ
ッド群を移動する(図7、ステップ553)。
【0055】スレッド群が、他に現在実行中のスレッド
を有する場合(ステップ545)、ディスパッチャは、
このスレッド群が現在、祖先ノードの実行キュー上に存
在するか否かを判定する(ステップ547)。スレッド
群が現在祖先ノードの実行キュー上に存在する場合、デ
ィスパッチャは、スレッド群があるところに放置し、侵
入/補助ヒント・フラグをクリアし(図6、ステップ5
37)、選択したスレッドの実行を開始する(ステップ
539)。スレッド群が現在祖先ノードの実行キュー上
に存在しない場合、ディスパッチャは、JP100の実
行キューに対して最下位の共通祖先、および当該スレッ
ド群が現在存在している実行キューを突き止め、スレッ
ド群をその実行キューに移動させる(ステップ54
9)。最下位の共通祖先とは、レベル番号が最も小さい
実行キューであり、JP100および選択したスレッド
群の実行キュー双方の祖先である。例えば、ディスパッ
チャが、現在ノード115に親和化されているスレッド
群を実行しようと決定した場合、最下位共通祖先は、ツ
リーのルート、即ちノード120である。最下位共通祖
先は、システムの初期化時に予め計算され、ディスパッ
チャが読み取り可能なデータ構造内に記憶されている。
【0056】スレッド群を異なる実行キューに移動する
場合で、このスレッド群が他に現在実行中のスレッドを
有さないとき、そしてスレッド群が現在存在する実行キ
ューとは異なるロカールに新たな実行キューがある場
合、スレッド群の現スケジューリング・ロカールを変更
する(ステップ543)。これは、JPがスレッド群に
「侵入」することに対応する。スレッド群が他に現在実
行中のスレッドを有する場合、スレッド群の現スケジュ
ーリング・ロカールの修正は行わず、代わりに、JPは
単にスレッド群を「補助」する。
【0057】これまでの説明から、タイムシェアリング
・スレッド群は、システムの3つの処理レベルの間を上
下に移動可能であり、様々な時刻に、個々のJP、JP
群、またはシステム内の全JPとの親和化が可能である
ことが理解されよう。
【0058】上述のシステムは、処理負荷の均衡化を行
おうとする固有の傾向を有する。システムが比較的アイ
ドル状態の期間にある場合、タイムシェアリング・スレ
ッド群は、ディスパッチャが実行可能なスレッドを検索
することによって、より高いレベルの実行キューに引き
上げようとする傾向があり、それらのスレッドを多数の
JPによって共有させる。作業負荷が軽いことを自己認
識したJPは、それらよりもビジーなJPを補助し、い
つでもシステム内のよりビジーなJPからタイムシェア
リング・スレッド群をいくつか引き受けようとする。逆
に、システムがビジーになると、タイムシェアリング・
スレッド群は、下方向に移動しようとする。このように
タイムシェアリング・スレッド群とJPとの間の親和性
をより緊密にすると、キャッシュの局在性が改善される
ので、望ましい。
【0059】殆どの状況では、タイムシェアリング・ス
レッド群は、ディスパッチャの処理によって、JP全体
にほぼ同様にそれら自体を分散させる。しかしながら、
理論的に、ビジーなシステムのスレッド群の分散は不均
衡となり、あるJPが他のJPよりもビジーとなって、
あるスレッド群の実行が所望の速度よりも遅くなってし
まう可能性がある。
【0060】中期スケジューラは、更に、各スケジュー
リング・ロカールについてスケジューリング・ロカール
の負荷データ(SLD)を計算し、スレッド群の進展を
監視し、衰退スレッド群を助け、あるスレッド群のホー
ムまたは現スケジューリング・ロカールを移動すること
によって、処理およびメモリ負荷の均衡が失われないこ
とを保証する。中期スケジューラ600がこれらの機能
を行う方法については、図8〜図15を参照しながら、
以下で更に詳しく説明する。
【0061】中期スケジューラ600は、一度に1つず
つシステム内のアクティブなスレッド群全てのステータ
スをチェックし(ステップ603)、それらが処理中か
衰退中かを判定し(ステップ609)、さらにそれらが
侵入されたか否かを判定する(ステップ625)。中期
スケジューラがスレッド群のステータスを見る度に、S
LDが陳腐化していないかチェックする(ステップ60
5)。SLDが陳腐化している場合、中期スケジューラ
は、JP、メモリ、優先度、および複合負荷値を各スケ
ジューリング・ロカールについて計算することにより、
新しいSLDを計算する(ステップ607) スケジューリング・ロカールに対するJPの負荷は、関
連するスケジューリング・サブツリーの実行キューの中
の適格エンティティ(スレッド)の数である。スケジュ
ーリング・ロカールに対するメモリ負荷は、関連するス
ケジューリング・サブツリー内の使用メモリの構成済バ
イト数である。
【0062】中期スケジューラは、適格スレッド群をそ
の優先度順に並べたグローバル・リストを維持しアクセ
スすることによって、優先度負荷を計算する。中期スケ
ジューラは、同一または実質的に同一の優先度を有する
スレッド群をリストに類別し、グルーピング(grouping)
内の各スレッド群に「優先度点」を割り当てる。例え
ば、最も高い優先度を有するグルーピング内のスレッド
群には、優先度点20を割り当て、次に高い優先度を有
するグルーピング内のスレッド群には優先度点19を割
り当てるようにする。連続的に減少する優先度点の割り
当ては、ゼロの値に到達するまで(この場合、それより
低い優先度を有するスレッド群にも全て優先度点0が割
り当てられる)、またはグルーピングの全てに別の方法
で優先度点が割り当てられるまで、続けられる。中期ス
ケジューラは、次に、リストを十分に調べ、各スレッド
群の現ロカールを決定し、各スケジューリング・ロカー
ルのスケジューリング・サブツリー内の各スレッド群毎
に、割り当てられた優先度点を蓄積する。この各スケジ
ューリング・ロカール毎に蓄積された値は、スケジュー
ル・ロカールの優先度負荷となる。
【0063】各スケジューリング・ロカール毎の複合負
荷は、重み付けし、正規化したJP、メモリ、および優
先度負荷の合計である。JP、メモリ、および優先度負
荷を0ないし100までの値に正規化し、利用可能なシ
ステム・メモリが比較的小さいか否かのような、性能基
準(performance criteria)に基づいて重み付けする。中
期スケジューラは、陳腐化係数カウンタを用いて、SL
Dが陳腐化していないか判断することができる。このカ
ウンタは、SLDがリフレッシュされる毎にリセットさ
れ、プロセスの特定ルーチンにしたがって減数される。
【0064】衰退スレッド群を補助するために(ステッ
プ609)、中期スケジューラは、スレッド群が順番を
待っているが実行されない時間を監視し、ステップ61
1、615、およびステップ619(図9)において判
定されるように、関連する時間期間が過ぎたときに、以
下の3つの機能の1つを実行する。(1)スレッド群の
優先度を上げる(ステップ613)。(2)スレッド群
を、階層ツリー内のより高い、より可視性の高いレベル
に昇進させる(しかし、スケジューリング・レベル未
満)(ステップ617)。または、(3)スレッド群の
侵入/補助ヒント・フラグをセットする(ステップ62
1)。作業を捜しているディスパッチャは最高の優先度
を有するスレッド群を選択するので、スレッド群の優先
度を高めることによって(ステップ613)、作業を捜
しているディスパッチャがそのスレッド群を選択する可
能性が高くなる。しかしながら、JPが現在長いプロセ
スを実行中の場合、またはJPの実行キューの中に優先
度が高いスレッド群が残っている場合、スレッド群の優
先度を高くしても、当該スレッド群を少しでも速く実行
しようとする可能性があまり高くならない場合もある。
【0065】第2の所定時間期間が過ぎた後に、中期ス
ケジューラがスレッド群の進展がないと判断した場合、
中期スケジューラは、階層ツリー内で次に高い、より可
視性が高いレベルにスレッド群を昇進させる(しかし、
スケジューリング・レベル未満)(ステップ617)。
この昇進は、当該スレッド群を、直ちに全ての従属する
JPのディスパッチャに見えるようにするので、同一ス
ケジューリング・サブツリー内のディスパッチャが衰退
スレッド群を選択する可能性を高めることになる。
【0066】第3の所定時間期間が過ぎた後でも、未だ
スレッド群が進展していない場合、中期スケジューラは
このスレッド群の侵入/補助ヒント・フラグをセットす
る。他のサブツリーにおいて作業を捜しているディスパ
ッチャは、侵入/補助ヒント・フラグがセットされてい
ないスレッド群を選択する前に、侵入/補助ヒント・フ
ラグがセットされているスレッド群を選択するので、こ
のフラグをセットすることによって、異なるスケジュー
リング・サブツリー内のディスパッチャがこのスレッド
群に侵入する、またはこれを補助する可能性を高める。
【0067】第1、第2および第3の所定時間期間の後
に中期スケジューラは、それぞれ、スレッド群に対し
て、優先度を高める、昇進させる、あるいはヒント・フ
ラグをセットするが、これらは互いに独立とし、中期ス
ケジューラが衰退スレッド群を補助する方法を、システ
ムの特性に基づいてシステム毎に変化させ、システムの
スループットを向上させるようにする。一例として、第
1の所定時間期間を8,000msec、第2の所定時
間期間を2,000msec、そして第3の所定時間期
間も2,000msecとしてもよい。したがって、中
期スケジューラは、そのルーチンを1秒毎に実行し、そ
のルーチン2サイクルの間(2,000msec)列に
並んでいるが実行されていないスレッド群については、
その侵入フラグをセットし、その後各2,000mse
c間隔で昇進させる。8サイクル(8,000mse
c)後にスレッド群が衰退している場合、それ以降8,
000msec間隔毎にその優先度を高める。衰退スレ
ッド群を補助することにより、中期スケジューラはスケ
ジューリングの不均衡(inequities)を防止または補正す
る。
【0068】また、中期スケジューラは、各スレッド群
がExec()コマンドによって最初に生成されたと
き、または別のスケジューリング・ロカールに移された
ときに、各スレッド群毎に、減退係数(dampening facto
r)をセットする。減退係数をセットして、中期スケジュ
ーラが、最初にディスパッチャに負荷を均衡化させよう
ともせずに、負荷の不均衡に応答して、キャッシュのス
ラッシング(thrashing)を行うのを防止する。スレッド
群のステータスをチェックする毎に、中期スケジューラ
は、当該スレッド群の減退係数を減数する(図8)。し
たがって、スレッド群のスケジューリング・ロカールを
変更し、その減退係数を、例えば、5の値にセットした
とき、中期スケジューラは、減退係数を0に減数するま
で、スレッド群を移行させたり、あるいは移動させたり
しようとしない。減退処理は、中期スケジューラが頻繁
にスレッド群を移行するのを防止することによって、キ
ャッシュのスラッシングを減少させる。
【0069】加えて、中期スケジューラは、現スケジュ
ーリング・ロカールがホーム・スケジューリング・ロカ
ールよりもビジーでないとき、侵入されたスレッド群の
ホーム・スケジューリング・ロカールを、その現スケジ
ューリング・ロカールに移行することによって、また
は、ホーム・スケジューリング・ロカールが現スケジュ
ーリング・ロカールよりもビジーでないとき、侵入され
たスレッド群をそのホーム・スケジューリング・ロカー
ルに戻すことによって、均衡の取れたシステムの処理負
荷を保証する。中期スケジューラが、侵入されたスレッ
ド群を検出したとき(即ち、その現スケジューリング・
ロカールがそのホーム・スケジューリング・ロカールと
異なる場合)、そのスレッド群の現スケジューリング・
ロカール(CSL)の複合負荷が、そのスレッド群のホ
ーム・スケジューリング・ロカル(HSL)よりも、所
定の「ホーム送り(send home)」スレシホルドよりも大
きい量だけ、超過しているか否かを判定する(ステップ
627)。その量が「ホーム送り」スレシホルドを超過
していない場合、中期スケジューラは、このスレッド群
のホーム・スケジューリング・ロカールの複合負荷が、
このスレッド群の減スケジューリング・ロカールより
も、所定の「移行(migrate)」スレシホルドよりも大き
い量だけ、超過しているか否かを判定する(ステップ6
29)。侵入されたスレッド群の現スケジューリング・
ロカールまたはホーム・スケジューリング・ロカールの
いずれも、「ホーム送り」または「移行」スレシホルド
以上他方よりも超過した負荷を有していない場合、中期
スケジューラは、そのJP負荷を「ビジー」スレシホル
ドと比較することによって、現スケジューリング・ロカ
ールがビジーか否かチェックする(ステップ631)。
現スケジューリング・ロカールがビジーでない場合、中
期スケジューラは、現ロカールに対するSLD陳腐化係
数を増加し(ステップ633)、スレッド群をその侵入
状態のまま放置し、性能データ(performance data)を蓄
積して、侵入されたスレッド群をいつ移行すべきか、ま
たは移行すべきか否か、あるいは後にそれをホームに戻
すべきかを判定する。
【0070】ステップ627において、スレッド群の現
スケジューリング・ロカールの複合負荷が、所定の「ホ
ーム送り」スレシホルドより多い量だけ、スレッド群の
ホーム・スケジューリング・ロカールの複合負荷を超過
していると、中期スケジューラが判定した場合、このス
レッド群をそのホーム・スケジューリング・ロカールに
戻し、このスレッド群の現スケジューリング・ロカール
がこのスレッド群のホーム・スケジューリング・ロカー
ルと同じになるようにする(ステップ635)。
【0071】ステップ629において、スレッド群のホ
ーム・スケジュール・ロカールの複合負荷が、所定の
「移動」スレシホルドより大きい量だけ、スレッド群の
現スケジューリング・ロカールの複合負荷を超過してい
ると、中期スケジューラが判定した場合、中期スケジュ
ーラは、このスレッド群と関連付けられた減退係数が0
であるか否かをチェックすることにより、スレッド群が
減退しているか否かを判定する(ステップ637)。こ
のスレッド群が減退している場合(即ち、その減退係数
がゼロでない)、中期スケジューラはこのスレッド群を
ホームに送る(ステップ635)。一方、スレッド群が
減退していない場合(即ち、その減退係数がゼロであ
る)、中期スケジューラは、このスレッド群のホーム・
スケジューリング・ロカールをこのスレッド群の現スケ
ジューリング・ロカールに変更することによって、この
スレッド群を「移行」する(ステップ639)。スレッ
ド群を検査した後、中期スケジューラは、まだ検査して
いないアクティブなスレッド群があるか否か判定し(図
8、ステップ641)、次のアクティブなスレッド群を
見つけ出す(ステップ603)。
【0072】長い時間期間にわたって不均衡状態にある
システムの処理に対する更にもう1つのチェックとし
て、システムは、周期的に全スレッド群をそれらのスケ
ジューリング・レベルの実行キューに再度引き上げるこ
とによって、各スケジューリング・ロカール内で「負荷
均衡化」機能を実行する(ステップ645)。スレッド
群は直ちに、スケジューリング・ロカール内の全JPに
見えるようになる。この機能は、比較的短い時間期間以
上の間負荷の不均衡状態が存在するのを防止する。好適
実施例では、このリセット機能は10秒毎に実行される
が、他の時間期間を設定してもよい(ステップ64
3)。
【0073】システムの全体的な不均衡を防止するもう
1つの対策は、中期スケジューラが周期的にスケジュー
リング・ロカール・レベルで負荷の均衡化を行うことで
ある。まず、中期スケジューラは、スケジューリング・
ロカールにおいて負荷の均衡化を行う時刻であるか否か
をチェックする(ステップ647)。その時刻であれ
ば、中期スケジューラは、複合負荷値が最も大きいスケ
ジューリング・ロカールの位置を突き止め(図11、ス
テップ649)、ステップ651で、JP負荷が複合負
荷の支配的な要因であるか否かを判定する。JP負荷が
支配的な要因である場合、中期スケジューラは、図12
に示すプロセスを用いて、負荷均衡化を行う。JP負荷
が支配的な要因ではない場合、中期スケジューラは、メ
モリ負荷が複合負荷の支配的な要因であるか否かをチェ
ックする(ステップ653)。メモリ負荷が支配的な要
因である場合、中期スケジューラは、図13に示すプロ
セスを用いて、負荷均衡化を行う。JP負荷もメモリ負
荷も支配的な要因でない場合、中期スケジューラは、図
14に示すプロセスを用いて、負荷均衡化を行う。
【0074】図12に示す負荷均衡化プロセスにおい
て、中期スケジューラは開始に際して、JP負荷が最も
軽いスケジューリング・ロカールを見つけ出し(ステッ
プ655)、複合負荷が最も重いスケジューリング・ロ
カールと最も軽いスケジューリング・ロカールとの間の
JP負荷の差に基づいて、移動すべきスレッド群の数を
計算する(ステップ657)。次に、中期スケジューラ
は、複合負荷が最も大きいスケジューリング・ロカール
内で、最低の優先度のアクティブなスレッド群を見つけ
出す(ステップ659)。このスレッド群が減退してい
ない場合(ステップ661)、中期スケジューラは、こ
のスレッド群が移行に適したメモリ・「フットプリン
ト」を有するか否かを判定する(ステップ663)。
【0075】所与のメモリ・ロカールのメモリ内のスレ
ッド群の「フットプリント」とは、当該メモリ・ロカー
ルにおいてスレッド群が使用する物理メモリ量のパーセ
ンテージを表わす。JP負荷および優先度負荷の均衡化
の間にスレッド群を移動するのに適したフットプリント
を構成するものは、システム毎に異なる。典型的なスレ
シホルドは、例えば、それらの現ロカールの物理的メモ
リにおいて、10パーセント未満のフットプリントを有
するスレッド群とすることができる。移動すべきいずれ
のスレッド群も全て適切なフットプリントを有すること
を保証することによって、中期スケジューラは、負荷均
衡化の間に大きなスレッド群を移動させる事態を防止す
ることができる。
【0076】スレッド群が減退している場合、または目
的としたスレッド群が適切なメモリ・フットプリントを
有していない場合、中期スケジューラは次に優先度が低
いスレッド群を見つけ出し(ステップ665)、新たに
選択したスレッド群について、ステップ661および6
63の検査を繰り返す。選択したスレッド群が減退して
おらず、目的としたスレッド群が適切なメモリ・フット
プリントを有する場合、中期スケジューラは、このスレ
ッド群を、JP負荷が最も軽いスケジューリング・ロカ
ールに移行させる(ステップ667)。次に、中期スケ
ジューラは、SLD陳腐化係数を調節し(ステップ66
9)、計算した数のスレッド群を移動させたか否かを判
定する(ステップ671)。十分なスレッド群を移動さ
せていない場合、中期スケジューラは次に優先度が低い
スレッド群を見つけ出し(ステップ665)、十分なス
レッド群を移動させるまで、ステップ661〜671を
繰り返す。一旦計算した数のスレッド群を移動させたな
ら、中期スケジューラは、上述のように、それに割り当
てられた機能の実行を繰り返す前に、所定時間期間にわ
たって処理を中断する(図8、ステップ673)。
【0077】図13に示す負荷均衡化プロセスでは、中
期スケジューラは開始に際して、複合負荷が最も重いス
ケジューリング・ロカールと最も軽いスケジューリング
・ロカールとの間のメモリ負荷の差に基づいて、移動す
べきメモリ負荷量を計算する(ステップ675)。次
に、中期スケジューラは、複合負荷が最も重いスケジュ
ーリング・ロカールの中で、優先度が最も低いアクティ
ブなスレッド群を見つける(ステップ677)。目的と
するスレッド群が、移動すべきメモリ負荷量に対して、
その現ロカール内に適切なメモリ・フットプリントを有
する場合(ステップ679)、中期スケジューラは、こ
のスレッド群が衰退しているか否かを判定する(ステッ
プ680)。
【0078】メモリ負荷の負荷均衡化を図る目的に適し
たフットプリントは、移動させなければならないメモリ
量に基づいて変化する。例えば、あるロカールから物理
メモリの20パーセントを他のロカールに移動してメモ
リ負荷の均衡化を図る場合、フットプリントが20パー
セント以下のスレッド群を移動させればよい。スレッド
群が減退している場合、またはそのフットプリントが適
切でない場合、中期スケジューラは次に優先度が低いス
レッド群を見つけ出し(ステップ681)、新たに選択
したスレッド群に対して、ステップ680および681
の検査を繰り返す。
【0079】選択したスレッド群が減退しておらず、そ
のフットプリントが適切である場合、中期スケジューラ
は、メモリ負荷が最も軽いスケジューリング・ロカール
に、このスレッド群を移行させる(ステップ682)。
次に、中期スケジューラはSLD陳腐化係数を調節し
(ステップ683)、計算した量のメモリ負荷を移動さ
せたか否かを判定する(ステップ684)。十分なメモ
リ量を移動させていない場合、中期スケジューラは次に
優先度が低いスレッド群を見つけ出し(ステップ68
1)、十分なメモリ量を移動させるまで、ステップ67
9〜684を繰り返す。一旦計算した量のメモリ負荷を
移動させたなら、中期スケジューラは、上述のように、
それに割り当てられた機能の実行を繰り返す前に、所定
時間期間にわたって処理を中断する(図8、ステップ6
73)。
【0080】図14に示す負荷均衡化プロセスでは、中
期スケジューラは開始に際して、優先度負荷が最も軽い
スケジューリング・ロカールを見つけ出し(ステップ6
85)、複合負荷が最も重いスケジューリング・ロカー
ルと最も軽いスケジューリング・ロカールとの間の優先
度負荷の差を計算する(ステップ686)。次に、中期
スケジューラは、計算した負荷の差が所定のスレシホル
ドを超過しているか否かを判定する(ステップ68
7)。超過していなければ、中期スケジューラは負荷の
均衡化を行わない。負荷の差がスレシホルド・レベルを
超過している場合、中期スケジューラは、スケジューリ
ング・ロカール内で、適切なフットプリントを有し(ス
テップ690)、複合負荷が最も重く(ステップ689
および691)、優先度が最高のスレッド群を見つけ出
し、優先度負荷が最も軽いスケジューリング・ロカール
にこのスレッド群を移行させる(ステップ692)。次
に、中期スケジューラはSLD陳腐化係数を調節し(ス
テップ693)、上述のように、それに割り当てられた
機能の実行を繰り返す前に、所定時間期間にわたって処
理を中断する(図8、ステップ673)。
【0081】また、中期スケジューラは、UNIX E
xec()コマンドによって生成されるスレッド群の初
期ホーム・スケジューリング・ロカールの割り当てを制
御することによって、階層ツリー全体にわたって均衡の
取れた処理負荷を保証することもできる。寿命が短いプ
ロセス(short-lived process)では、初期ホーム・スケ
ジューリング・ロカールは、そのプロセスにとって唯一
のスケジューリング・ロカールとなろう。寿命が長いプ
ロセスでは、初期ホーム・スケジューリング・ロカール
は、プロセスのページ・フォールト(page fault)を発生
させるホーム・スケジューリング・ロカールであるの
で、将来の性能を左右することになろう(bias)。
【0082】UNIX Fork()コマンドによって
新たなプロセスを生成したとき、ホーム・スケジューリ
ング・ロカールはスレッド群に対して望まれるロカール
の位置を表わすので、スレッド群はその親のホーム・ス
ケジューリング・ロカールの位置を受け継ぐ。プロセス
がUNIX Exec()コマンドを実行するとき、そ
の画像を上書きするので、その以前のメモリとは何の関
係も有さない(共有メモリを除く)。この場合、JP資
源を最大化しメモリ資源が利用可能なホーム・スケジュ
ーリング・ロカールに、このプロセスを割り当てる。図
15は、Exec()プロセスを、ホーム・スケジュー
リング・ロカールに割り当てるために実行するプロセス
を示す。Exec()コマンドを実行するとき、カーネ
ルのプロセス制御サブセクションは、中期スケジューラ
・サブセクションを呼び込み、中期スケジューラ・サブ
セクションは、呼び出し元のタスク群の、複合負荷が最
も軽いホーム・スケジューリング・ロカールを移動させ
る。まず、複合負荷が最も小さいスケジューリング・ロ
カールを識別する(ステップ697)。負荷が最も小さ
いスケジューリング・ロカールと呼び出し元タスク群の
ホーム・スケジューリング・ロカールとの間の複合負荷
の差がスレシホルド・レベルを超過している場合(ステ
ップ697)、スレッド群のホーム・スケジューリング
・ロカールを、複合負荷が最も軽いスケジューリング・
ロカールに変更する(ステップ698)。スレシホルド
・レベルを超過していない場合、中期スケジューラ・サ
ブシステムが制御をプロセス制御サブシステムに返す前
に、スレッド群は、その親プロセスのホーム・スケジュ
ーリング・ロカールを引き継ぐ(中期スケジューラは別
個のカーネル・スレッドであるが、Exec()コマン
ドは、呼び出し元の制御スレッドの下で、中期スケジュ
ーラ・サブシステムを通過する)(ステップ699)。
【0083】メモリ管理 プロセスのJPに対する親和性を調節するためにNUM
Aシステムにおいて考慮すべき別の点は、システムのメ
モリ資源の管理である。スレッド群を移行させる場合、
そのスレッド群と関連付けられたメモリも移動させるこ
とが望ましい場合もある。加えて、NUMAシステムの
メモリ・マネージャは、好ましくは、フォールティング
・プロセス(faulting process)の位置および当該ページ
に含まれる情報のタイプに基づいて、ページ・フォール
ト位置を割り当てる。更に、メモリ・マネージャは、均
衡の取れたシステム・メモリ資源の使用を維持しなけれ
ばならない。
【0084】上述のタスクを達成するために、本発明の
オペレーティング・システムは、システム全体に分散し
た複数の物理的および仮想資源を表わすデータ構造を制
定することにより、図2に示したものに類似したシステ
ム抽象概念を利用する、仮想メモリ・マネージャを含
む。このデータ構造は、抽象化したシステムの種々のノ
ードと関連付けられた種々のテーブルという形状を取
る。図16および図17は、図1に示したようなNUM
Aマルチプロセッサ・システムのために考えられるこれ
らデータ構造の例を示す。
【0085】一様メモリ・アクセス・システムでは、メ
モリは、同一コストでしかも同一アクセス時間で全ての
JPによって等しくアクセス可能な物理メモリ・ブロッ
クから成る。しかしながら、NUMAシステムでは、シ
ステムのメモリは、異なるアクセス時間およびコストを
有する種々の分散型共有メモリ・ブロックで構成するこ
とができる。図16は、NUMAシステムの物理メモリ
の割り当てを表わす、システムの抽象概念とデータ構造
とを示す。仮想メモリ・マネージャが使用する抽象概念
は、各共有メモリ群と関連付けられたトレジャリ・ノー
ド(treasury node)70〜73、および階層ツリー抽象
概念のルート・ロカール・ノード(routelocale node)1
20と関連付けられた高位ポリシ・ノード76を含むポ
リシ・ツリーを形成する。また、ポリシ・ツリー抽象概
念は、階層ツリー抽象概念のノード114および115
と関連付けられた中間ポリシ・ノード74および75を
含んでもよい。トレジャリ・ノードは、ページ配置アル
ゴリズムを実施するためにポリシ・ノードによって確定
されたポリシにしたがって、物理メモリ空間を割り当て
る機構を表わす。ポリシおよびトレジャリ・ノードの、
階層ツリー抽象概念のノードとの関連は、ロカール対ノ
ード参照テーブル77中に保持されている。ロカール対
ノード参照テーブル77は、好ましくは、一方の軸にJ
P番号、他方の軸にレベル番号を指定した二次元アレイ
である。各JPおよびレベル番号の指定毎に、ポリシま
たはトレジャリ・ノードの一方に対するポインタが存在
する。このように、オペレーティング・システムのスケ
ジューリング要素が用いるのと同一JP−レベル命名基
準を用いて、トレジャリまたはポリシ・ノードを素速く
識別することができる。
【0086】システムの物理メモリは、「フレーム」と
呼ばれる個別要素で構成されており、フレームのサイズ
は、基礎となるプロセッサ・アーキテクチャによって決
定されるが、一般的に4KBである。オペレーティング
・システムは、利用可能な物理メモリを、例えば、10
24個の連続フレームから成る群に分割し、次にこれら
フレーム群をシステム内のトレジャリに割り当てる。こ
の割り当ては、高位フレーム・テーブル78の中に保持
されている。これらフレームの各々は、固有の識別番号
を有する。この番号は、フレームの開始物理アドレスを
フレーム・サイズで除算することによって計算すること
ができる。更に、各フレームは、高位フレーム・テーブ
ル78内の1つのスロットによって管理され、このスロ
ット番号は、フレームの固有識別番号をフレーム群のサ
イズで除算することによって計算することができる。N
UMAシステム内の物理メモリの物理アドレスは、連続
でなくてもよく、高位フレーム・テーブル78において
識別されるフレームのいくつかは、実際の物理メモリを
表わさない場合もある。このような場合、高位フレーム
・テーブル78のかかるフレームへのエントリには、無
効と印すこともできる。
【0087】以下で更に詳細に説明するが、トレジャリ
は、関連するメモリ・フレーム・テーブルを用いて、そ
れらのロカールにおいて物理メモリのフレームを管理
し、割り当てる。ポリシ・ノードを設けることによっ
て、このポリシ・ノードと関連付けられた所定のポリシ
の考慮にしたがって、階層ツリー抽象概念におけるより
高いレベルのノードに割り当てられる物理メモリのフレ
ームを、実際には、ポリシ・ノードの子トレジャリ・ノ
ードから割り当てるようにする。典型的に、これらのポ
リシは、子孫メモリ群(descendent memory group)間で
かかる高位メモリ要求の負荷均衡化を行うように選択さ
れる。したがって、ポリシ・ツリーにおいてレベルが高
い程、フレームを割り当てるメモリ群の数が多くなるこ
とを意味する。フレームを割り当ててフォールトを満足
させるときに、ページ・フォールト処理ルーチンによっ
て起動されるフレーム割り当てルーチンが、ポリシ・ツ
リーを通過する。フレーム割り当て部は、ページ配置制
約を用いて、フレームを割り当てるメモリ・ロカールを
決定する。この制約は、ページ配置アルゴリズムの適用
を開始する、ポリシ・ノードを識別する。ポリシ・ツリ
ーの通過は、論理アドレスによってマップされたオブジ
ェクト・ページに帰せられる制約によっては、ルート、
リーフ、またはある中間レベルにおいて開始することが
できる。いずれのマッピングのデフォルト制約も、メモ
リ・オブジェクトと関連付けられている。デフォルト制
約は、オブジェクトの属性に応じて、オブジェクトに割
り当てられる。
【0088】ページ配置アルゴリズムは、指定されたノ
ードからポリシ・ツリーの通過を開始し、フレームを割
り当てるべきフレーム・トレジャリを選択するまで、そ
れが遭遇した各ノードに、レベル依存ポリシ(level-dep
endent policy)を適用する。重み付けを用いて、ツリー
の所与のレベルにおいて、同胞ノード(silbing nodes)
間で分散された全数のフレームにおける不均衡を補償す
ることができる。ポリシ・ツリー管理のために用いられ
るデータ構造は、ポリシ・ノード・クラス一覧と、リン
ク構造とからなり、これは、ポリシ・ツリー内の全タイ
プのポリシ・ノードの中に埋め込まれる。ポリシ・ツリ
ー内の特定タイプのノードに特定した他の情報も、この
構造の中に保持することができる。本発明のオペレーテ
ィング・システムのページ配置アルゴリズムおよびその
他のメモリ割り当てアルゴリズムがトレジャリおよびポ
リシ・ノードを利用する具体的な態様については、以下
でより詳細に説明する。
【0089】図17は、NUMAシステムの仮想(論
理)メモリの割り当てを表わす、システムの抽象概念お
よびデータ構造の例を示す。仮想メモリ・マネージャが
使用する抽象概念は、構造ツリー抽象概念の各ノードと
関連付けられたメモリ・プール(memory pool)80〜8
6を含む。メモリ・プールの、階層ツリー抽象概念との
関連は、ロカール対ノード参照テーブル87の中に保持
されている。ロカール対ノード参照テーブル87は、好
ましくは、一方の軸にJP番号を指定し、他方の軸にレ
ベル番号を指定した二次元アレイである。各JPおよび
レベル番号の指定毎に、メモリ・プールの1つへのポイ
ンタが存在する。このようにして、オペレーティング・
システムのスケジューリング要素が用いるのと同じJP
−レベル命名基準を用いて、メモリ・プールを素速く識
別することができる。
【0090】加えて、システムは、無配線メモリ(unwir
ed memory)を区別することも可能な場合もある。無配線
メモリとは、配線メモリから、物理メモリ外に割り振ら
れた仮想メモリ領域のことでる。また、配線メモリと
は、物理メモリ内に存在することを強制された、仮想メ
モリの領域のことである。これら異なるタイプのメモリ
領域を収容するために、本発明のオペレーティング・シ
ステムは、抽象概念の各ノードに2つのタイプのメモリ
・プールを、即ち、配線メモリに1つ、無配線メモリに
1つのメモリ・プールを形成することができる。2つの
異なるタイプのメモリ・プールは図17には示されてい
ないが、システムの抽象概念の中に同様な並列メモリ構
造を生成することにより、2つ以上の異なるタイプのメ
モリ・プールを考慮するように、システムを容易に修正
することができる。加えて、共有ページ・テーブル割り
当てに用いる特殊な無配線メモリ・プールを、ルート・
メモリ・ロカールにのみ形成することもできる。更に、
抽象概念の中の種々のロカールに他のタイプのメモリ・
プールを形成し、システムの処理効率を向上するメモリ
資源間のあらゆるタイプの区別にも対処することも可能
である。
【0091】システムの仮想メモリは、「プール単位」
に分割されている。プール単位は、例えば、4MBの所
定の一定サイズを有し、1つ仮想メモリ範囲のみに対応
する。本例では、フレーム群サイズとプール単位サイズ
とを同一として開示するが、同一ではない他のフレーム
およびプール単位サイズを選択してもよい。プール単位
の各々は固有の識別番号を有し、この識別番号は、プー
ル単位の開始論理アドレスをプール単位サイズで除算す
ることによって、素速く計算することができる。プール
単位の各々が割り当てられるメモリ・プールは、プール
単位テーブル88の中に保持される。NUMAシステム
内の仮想メモリの論理アドレスは不連続でもよいので、
プール単位テーブル88において識別されるプール単位
のいくつかは、割り当てられた仮想メモリを表わさない
ものもある。このような場合、プール単位テーブル88
のかかるプール単位へのエントリには、無効と印され
る。
【0092】初期状態では、全てのプール単位は割り当
てられていない。続いて、プール単位は、必要に応じ
て、メモリ・プールに割り当てられる。このように、プ
ール単位は、動的にシステム中に割り当てることがで
き、プール単位を統計的にシステム初期化時に割り当て
る場合のように、多くのメモリ・プールにわたってメモ
リ資源を断片化することもなく、また人工的なメモリ枯
渇(memory exhaustion)問題に発展することもない。仮
想メモリ・マネージャが、カーネル・メモリに対する要
求を処理する方法を、図18ないし図20に示す。メモ
リ要求がスレッドから発生したとき(図18、ステップ
701)、仮想メモリ・マネージャは、システムが現在
初期化中か否かを判定する(ステップ703)。そうで
あれば、仮想メモリ・マネージャは、ルート・ロカール
120からの仮想メモリを割り当てることを選択する
(ステップ705)。システムが初期化されていた場
合、仮想メモリ・マネージャは、メモリ要求量が少ない
か否か(≦64バイト)を判定する(ステップ70
7)。メモリ要求量が少ない場合、仮想メモリ・マネー
ジャは、スレッドを実行するJPに最も近いメモリ・ロ
カールからのメモリを割り当てる(ステップ709)。
メモリ要求量が少なくなく、特定のロカールが要求され
ていない場合、仮想メモリ・マネージャは、ホーム・ス
ケジューリング・ロカールを獲得し、選択する(ステッ
プ711)。ホーム・スケジューリング・ロカールは、
上述のように、スレッドのスレッド群が最も緊密に親和
化されているロカールである。
【0093】メモリ・ロカールを選択した後、仮想メモ
リ・マネージャは、選択したメモリ・ロカールに命名基
準を用いて、ロカール対ノード参照テーブル87から、
それと関連付けられたメモリ・プールを識別する(ステ
ップ713)。一旦メモリ・プールが識別されたなら、
仮想メモリ・マネージャは、識別されたメモリ・プール
が十分な論理空間を有するか否かを判定する(ステップ
715)。識別されたメモリ・プールが十分な空間を有
する場合、仮想メモリ・マネージャは、先の要求のため
に論理空間を割り当てる(ステップ717)。一方、メ
モリ・プールが十分な論理空間を有していない場合、仮
想メモリ・マネージャは、プール単位テーブル88の中
で、未使用のプール単位を捜し出し(ステップ71
9)、識別されたメモリ・プールにプール単位を追加す
る(ステップ721)。次に、メモリ要求量がプール単
位のサイズより少ない場合、仮想メモリ・マネージャは
プール単位を分割し、要求された論理空間を割り当てる
前に、メモリ要求量を有するメモリ・ブロックを得る
(ステップ717)。
【0094】論理空間を割り当てた後、指定したロカー
ルがトレジャリ・ノードではなく、ポリシ・ノードであ
った場合、仮想メモリ・マネージャは、割り当てたメモ
リ・ロカールからのフレームまたはその子孫メモリ・ロ
カールの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の物理メモリに、後からメモリを移行させるこ
ともできる。
【0095】他の例として、JP100(図2)に親和
化されているスレッド群のスレッドがカーネル・メモリ
を要求した場合、仮想メモリ・マネージャはノード11
0のメモリ・ロカールを選択し、メモリ・ロカール11
0と関連付けられたメモリ・プールからの論理空間を割
り当て、メモリ・ロカール110と関連付けられた物理
メモリからのフレームで、この論理空間を支える。
【0096】仮想メモリを使用するために解放すると
き、仮想メモリ・マネージャは、解放された仮想メモリ
・ブロックの開始論理アドレスを見て、所有するプール
単位を識別する(ステップ727)。次に、仮想メモリ
・マネージャは、プール単位テーブル88にアクセスす
ることによって、どのメモリ・プールにプール単位が割
り当てられるのかを識別する(ステップ729)。次
に、仮想メモリ・マネージャは、解放した仮想メモリの
論理空間を放出し、識別されたメモリ・プールに合体す
る(ステップ731)。続いて、仮想メモリ・マネージ
ャがステップ733において、メモリ・プールが未使用
のプール単位を有すると判定した場合、このプール単位
をプール単位テーブル88に戻し(ステップ735)、
このプール単位を他のメモリ・プールに割り当てられる
ようにする。
【0097】仮想メモリ・マネージャ700がフレーム
要求を処理する方法を、図21および図22に示す。ペ
ージ・フォールトが発生したとき、物理メモリのフレー
ムに対する要求も行われ、仮想メモリ・マネージャ70
0は、ユーザがページ配置のためにロカールを特定した
か否かを判定する(ステップ737)。ユーザがロカー
ルを特定している場合、仮想メモリ・マネージャ700
はこの要求を引き受け(honor)、ユーザによって特定さ
れたロカールを指定する(ステップ739)。ユーザが
ロカールを特定していない場合、仮想メモリ・マネージ
ャは、ページ・フォールトが大きなファイル、即ち、大
きな共有メモリのためのものなのか否かをチェックする
(ステップ741)。そうであれば、可能メモリ・マネ
ージャはルート・ロカール120を指定する(ステップ
743)。ページ・フォールトが大きなファイル、即
ち、大きな共有メモリのためのものではない場合、仮想
メモリ・マネージャは、ページ・フォールトがユーザの
個人的データのためのものか否かを判定する(ステップ
745)。ユーザの個人的データのためのページ・フォ
ールトである場合、仮想メモリ・マネージャは、要求元
スレッドのスレッド群が最も緊密に親和化されているホ
ーム・スケジューリング・ロカールを指定する(ステッ
プ747)。ユーザの個人的データのためのページ・フ
ォールトでない場合、仮想メモリ・マネージャは、ペー
ジ・フォールトが共有メモリのためのものか否かを判定
する(ステップ749)。共有メモリのためのページ・
フォールトである場合、仮想メモリ・マネージャは、要
求元スレッドのスレッド群が最も緊密に親和化されてい
るホーム・スケジューリング・ロカールを指定する(ス
テップ751)。共有メモリのためのページ・フォール
トでない場合、仮想メモリ・マネージャは、ページ・フ
ォールトがユーザ実行可能なテキスト(即ち、プログラ
ム・テキスト)のためのものか否かを判定する(ステッ
プ753)。実行可能テキストのためのページ・フォー
ルトである場合、仮想メモリ・マネージャは、要求元ス
レッドのスレッド群が最も緊密に親和化されているホー
ム・ロカールを指定する(ステップ755)。実行可能
テキストのためのページ・フォールトでない場合、仮想
メモリ・マネージャは、ページ・フォールトがユーザ・
ファイル・データのためのものか否かを判定する(ステ
ップ757)。ユーザ・ファイル・データのためのペー
ジ・フォールトである場合、また、この特定例では、ユ
ーザ・ファイル・データに対するページ・フォールトで
ない場合、仮想メモリ・マネージャは、要求元スレッド
のスレッド群が最も緊密に親和化されているホーム・ロ
カールを指定する(ステップ759および761)。ス
テップ745〜757における検査の結果には係わらず
ホーム・ロカールを指定したが、本発明のオペレーティ
ング・システムを実施するNUMAシステムの特性に基
づいて、各検査に対して指定するロカールを変えてもよ
い。
【0098】ロカールを指定した後、仮想メモリ・マネ
ージャは、当該ロカールを識別する命名基準に基づい
て、ロカール対ノード参照テーブル77を参照すること
によって、物理メモリ・ノード70〜76(図16)を
識別する(図22、ステップ763)。次に、仮想メモ
リ・マネージャは、識別したノードがトレジャリ・ノー
ドか、あるいはポリシ・ノードかを判定する(ステップ
765)。このノードがトレジャリ・ノードである場
合、ロカールは共有物理メモリ資源を表わすことを意味
し、仮想メモリ・マネージャは、この物理メモリ資源か
らフレームを選択する(ステップ767)。このノード
がトレジャリ・ノードではない場合、仮想メモリ・マネ
ージャは、ラウンド・ロビン・アルゴリズム(round-rob
in algorithm)を用いて、このノードの子を1つ選択す
る。選択したノードがトレジャリである場合、そのトレ
ジャリからフレームを割り当てる。選択したノードがト
レジャリでない場合、その子の1つの選択し(ラウンド
・ロビン)、このプロセスを繰り返す。
【0099】図22に示す手順において、ステップ76
9〜773は、ポリシ・ノードのポリシを表わす。これ
ら3つのステップを、いずれかの所与のポリシ・ノード
に対して考慮した所望のポリシを実行するための、他の
いずれかのアルゴリズムと置き換えてもよい。
【0100】メモリは、システムの抽象概念の種々のノ
ード間で移行させて、最も頻繁にデータをアクセスする
JPからメモリに記憶されているデータをアクセスする
コストを制限することができる。好ましくは、かかるメ
モリ移行は全て、アドレス透過(address transparent)
であるべきである。アドレス透過メモリ移行とは、論理
アドレスは一定のままであるが、物理アドレスが変化す
るものである。透過性は、ページ・テーブルとハードウ
エア・アドレスとの変換を用いることによって達成され
る。プール単位テーブル88を使用すれば、容易に論理
アドレスからメモリ・プールへの変換を行うことができ
る。
【0101】メモリは、目的ロカール(即ち、論理アド
レスが割り当てられるロカール)の子孫ロカールである
メモリ・ロカール間でのみ、透過的に移行可能である。
したがって、目的ロカールが移行の自由度を制御する。
最初の物理的配置は、目的ロカールの子孫から行われ
る。最初の物理的配置に選ばれたロカールを、初期ロカ
ールと呼ぶ。したがって、図2を参照すると、ロカール
(2、0)の目的とされたメモリは、初期ロカール
(1、0)を有し、ロカール(1、0)、(1、1)、
(1、2)および(1、3)間でのみ移行を許される。
ルート・メモリ・ロカールを目的にすると、最大の自由
度が許されるという利点があるが、メモリの、メモリ内
に記憶されているデータにアクセスするJPとの親和性
を低下させることになる。
【0102】本発明のオペレーティング・システムは、
更に、抽象化システムの各トラジェリに、パージャ・ス
レッド(purger thread)と、クリーナ・スレッド(cleane
r thread)とを含むことが好ましい。パージャ・スレッ
ドは、物理メモリが単に満ち過ぎているときに、フレー
ムまたはページ交換ポリシを実施する。クリーナ・スレ
ッドは、修正ファイル・データを取り込み、自動的にこ
のデータを所定間隔でディスクに書き戻し、システムの
クラッシュからデータを保護する。各ノードに別個のパ
ージャおよびクリーナを設けることにより、単一のパー
ジャまたはクリーナ・カーネル・スレッドのみに頼っ
て、システム全体でそのタスクを実行する必要がなくな
る。更に、システムはより容易に基準化が可能(scalabl
e)であり、パージャやクリーナはより良い親和性を示
す。
【0103】プロセッサとそれらが利用するデータとの
間の親和性を高める他の方法は、システムの多数のトレ
ジャリにおいて、あるタイプのファイル・ページの複製
を許すことである。マップされた共有リード・ライトの
ような、あるタイプのファイル・ページは複製できない
ので、オペレーティング・システムは、各ページ・ファ
イルをどのようにマップするかを判定することができな
ければならず、各ファイル・ページのためのマッピング
のタイプを考慮に入れた複製アルゴリズムを実施しなけ
ればならない。例えば、あるファイルの個人的なリード
実行マッピング(read-execute mapping)は、プログラム
・テキストを実行可能ファイル(executable)にマップす
るために、最も一般的に用いられている。実行可能なマ
ッピングは、多数のプロセス間で共通して共有されてい
るので、仮想メモリ・マネージャは、フォールティング
・スレッド群が親和化されているメモリ・ロカールにお
いて、かかるページの複製を積極的に試すことができ
る。かかる複製は、プログラム・ファイルのリード実行
マッピング上でページ・フォールトが発生したときに
は、いつでも得ることができる。但し、そのファイルが
どうあっても修正できない場合に限る。
【0104】ファイルの常駐サイズがある限度を超えて
成長した場合、ファイル・ページは、フォールティング
・スレッド群に親和化されているメモリ・ロカールにし
たがって配置されるのではなく、メモリに送られながら
負荷の均衡化を図ることができる。このように、システ
ムは、ある特定ファイルからのページで、1つのメモリ
・ロカールを飽和させてしまう事態を回避することがで
きる。
【0105】本発明は、その精神または本質的な特性か
ら逸脱することなく、他の特定形態において実施するこ
とも可能である。例えば、3レベルの実行キューを有す
るシステムについてこれまで論じてきたが、同一の概念
は、3処理レベル以上のレベルで組織されたシステムに
も容易に拡張可能であることは理解されよう。更に、本
発明の説明にはスレッド群上で動作する例を用いたが、
本オペレーティング・システムは単一プロセス(スレッ
ド)上でも同様に動作する。本発明の範囲は、上述の説
明ではなく、特許請求の範囲によって指示されており、
特許請求の範囲の意味および均等の範囲に該当する変更
は全て、特許請求の範囲に包含されることを意図するも
のである。
【図面の簡単な説明】
【図1】図1は、非一様メモリ・アクセス(NUMA)
マルチプロセッサ・システムの一例の概要を示すブロッ
ク図。
【図2】図2は、図1に示す非一様メモリ・アクセス
(NUMA)マルチプロセッサ・システムの抽象概念を
示すブロック図。
【図3】図1に示すシステム上で実行されるプロセスの
内部組織を示すブロック図。
【図4】本発明のディスパッチャが、スレッド群を選択
し実行する処理を示すフローチャート。
【図5】本発明のディスパッチャが、スレッド群を選択
し実行する処理を示すフローチャート。
【図6】本発明のディスパッチャが、スレッド群を選択
し実行する処理を示すフローチャート。
【図7】本発明のディスパッチャが、スレッド群を選択
し実行する処理を示すフローチャート。
【図8】本発明のオペレーティング・システムの一部を
構成する中期スケジューラが実行する処理のフローチャ
ート。
【図9】本発明のオペレーティング・システムの一部を
構成する中期スケジューラが実行する処理のフローチャ
ート。
【図10】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図11】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図12】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図13】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図14】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図15】本発明のオペレーティング・システムの一部
を構成する中期スケジューラが実行する処理のフローチ
ャート。
【図16】図16は、図1に示した非一様メモリ・アク
セス(NUMA)マルチプロセッサ・システムおよび関
連する連携データ構造のポリシ・ツリー抽象概念を示す
ブロック図。
【図17】図17は、図1に示した非一様メモリ・アク
セス(NUMA)マルチプロセッサ・システムおよび関
連する連携データ構造の仮想メモリ抽象概念を示すブロ
ック図。
【図18】本発明のオペレーティング・システムの一部
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
【図19】本発明のオペレーティング・システムの一部
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
【図20】本発明のオペレーティング・システムの一部
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
【図21】本発明のオペレーティング・システムの一部
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
【図22】本発明のオペレーティング・システムの一部
を構成する仮想メモリ・マネージャが実行する処理のフ
ローチャート。
【符号の説明】
1〜8 ジョブ・プロセッサ 10〜15 共有資源 16 共有メモリ/主システム・バス 20 NUMAマルチプロセッサ・システム 70〜73 トレジャリ・ノード 74、75 中間ポリシ・ノード 76 高位ポリシ・ノード 77 ロカール対ノード参照テーブル 78 高位フレーム・テーブル 80〜86 メモリ・プール 87 ロカール対ノード参照テーブル 88 プール単位テーブル 100〜107 リーフ・ノード 110〜115 ノード 120 ルート・ノード 150 ソフトウエア抽象概念 200 プロセス 210、220、230 スレッド群 211、221、231 スレッド群構造 212〜214、222、223、232、233
タイムシェアリング・スレッド 240 データ集合 241 データ 600 中期スケジューラ 700 仮想メモリ・マネージャ
フロントページの続き (72)発明者 ロバート・エイ・アルフィエリ アメリカ合衆国ノース・カロライナ州 27502−6669,アペックス,バーゲロン・ ウェイ 104 (72)発明者 マイルズ・エイ・デフォーレスト アメリカ合衆国ノース・カロライナ州 27704,ダーラム,チョーク・レベル・ロ ード 1117 (72)発明者 ウィリアム・ケイ・マクグラス アメリカ合衆国ノース・カロライナ州 27615,ローリー,ラナム・プレイス 721 (72)発明者 マイケル・ジェイ・マクレウド アメリカ合衆国ノース・カロライナ州 27529,ガーナー,アーテジアン・ドライ ブ 208 (72)発明者 マーク・エイ・オコンネル アメリカ合衆国ノース・カロライナ州 27516,チャペル・ヒル,ヒルズボロー・ ロード 1214 (72)発明者 ガイ・エイ・シンプソン アメリカ合衆国ノース・カロライナ州 27513,キャリー,オッターモント・コー ト 105

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】種々のプロセスを実行する複数のプロセッ
    サと、各々前記プロセッサの異なる組み合わせによって
    共有される複数の共有資源とを含むハードウエア・アー
    キテクチャを有するマルチプロセッサ・システムのため
    のオペレーティング・システムを具現化するプログラム
    ・コードを収容したコンピュータ読み取り可能媒体であ
    って、前記オペレーティング・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持するステップであって、前
    記プロセッサに対応し階層ツリーの最低レベルに位置付
    けられる複数のリーフ・ノードと、前記プロセッサおよ
    び共有資源の全てによって共有される共通資源に対応し
    前記階層ツリーの最高レベルに位置付けられるルート・
    ノードと、前記共有資源に対応し前記階層ツリーの少な
    くとも1つの中間レベルに位置付けられる複数の中間ノ
    ードとを有する階層ツリー構造の形状で、前記プロセッ
    サと共有資源との物理的構成を表現する、前記抽象概念
    を維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセスを識別し、残りのノードの1つと
    関連付けられた各実行キューは、前記ノードと関連付け
    られたリソースを共有する前記プロセッサの群に親和化
    されたアクティブなプロセスを識別するように、前記実
    行キューを形成するステップと、および前記プロセッサ
    の動作を監視し、前記プロセッサが実行するために、前
    記実行キュー内で待ち行列をなすプロセスを選択するス
    テップと、から成る方法を実行する、前記オペレーティ
    ング・システムを収容することを特徴とする前記コンピ
    ュータ読み取り可能媒体。
  2. 【請求項2】種々のアクティブなスレッド群のスレッド
    を実行するための複数のプロセッサと、各々前記プロセ
    ッサの異なる組み合わせによって共有される複数の共有
    資源とを含むハードウエア・アーキテクチャを有するマ
    ルチプロセッサ・システムのためのオペレーティング・
    システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有資源の全てによって共有される共通資源に対応し前記
    階層ツリーの最高レベルに位置付けられるルート・ノー
    ドと、前記共有資源に対応し前記階層ツリーの少なくと
    も1つの中間レベルに位置付けられる複数の中間ノード
    とを有する階層ツリー構造の形状で、前記プロセッサと
    共有資源との物理的構成を表現する前記抽象概念を維持
    する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなスレッド群を識別し、残りのノードの1つ
    と関連付けられた各実行キューは、前記ノードと関連付
    けられたリソースを共有する前記プロセッサの群に親和
    化されたアクティブなスレッド群を識別するように、前
    記階層ツリーの各ノードについて実行キューを形成する
    手段と、および前記プロセッサの動作を監視し、前記プ
    ロセッサが実行するために、前記実行キュー内で待ち行
    列をなすプロセスを選択する手段と、から成ることを特
    徴とする前記オペレーティング・システム。
  3. 【請求項3】請求項2記載のオペレーティング・システ
    ムにおいて、前記監視手段は、各々前記プロセッサの1
    つと関連付けられた、複数のディスパッチャを含むこと
    を特徴とする前記オペレーティング・システム。
  4. 【請求項4】請求項3記載のオペレーティング・システ
    ムにおいて、あるプロセッサが実行のためにスレッドを
    使い果たしたとき、それと関連付けられた前記ディスパ
    ッチャは、まず、前記実行のためにスレッドを使い果た
    したプロセッサに対応するノードの祖先ノードの実行キ
    ュー内で利用可能なスレッド群があるか否かをチェック
    することを特徴とする前記オペレーティング・システ
    ム。
  5. 【請求項5】請求項4記載のオペレーティング・システ
    ムにおいて、前記関連するディスパッチャが、第1所定
    時間期間以内に、前記祖先ノードの実行キューにおいて
    利用可能なスレッド群を突き止めることができなかった
    場合、前記関連するディスパッチャは、更に、前記実行
    のためにスレッドを使い果たしたプロセッサに対応する
    ノードの関係ノードの実行キューにおいて、利用可能な
    スレッド群があるか否かをチェックすることを特徴とす
    る前記オペレーティング・システム。
  6. 【請求項6】請求項5記載のオペレーティング・システ
    ムにおいて、前記関連するディスパッチャが、第2所定
    時間期間内に、前記関係ノードの実行キューにおいて利
    用可能なスレッド群を突き止めることができなかった場
    合、前記関連するディスパッチャは、更に、前記階層ツ
    リー構造のノード全ての実行キューにおいて、利用可能
    なスレッド群があるか否かをチェックすることを特徴と
    する前記オペレーティング・システム。
  7. 【請求項7】種々のプロセスを実行するための複数のプ
    ロセッサと、各々前記プロセッサの異なる組み合わせに
    よって共有される複数の共有資源とを含むハードウエア
    ・アーキテクチャを有するマルチプロセッサ・システム
    のためのオペレーティング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有資源の全てによって共有される共通資源に対応し前記
    階層ツリーの最高レベルに位置付けられるルート・ノー
    ドと、前記共有資源に対応し前記階層ツリーの少なくと
    も1つの中間レベルに位置付けられる複数の中間ノード
    とを有する階層ツリー構造の形状で、前記プロセッサと
    共有資源との物理的構成を表現する前記抽象概念を維持
    する前記手段と、 前記システム内の各ノードにおいて、前記アクティブな
    プロセスの進展を監視し、進展していなかったプロセス
    が直ちに実行される可能性を高める手段と、から成るこ
    とを特徴とする前記オペレーティング・システム。
  8. 【請求項8】請求項7記載のオペレーティング・システ
    ムであって、更に、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセスを識別し、残りのノードの1つと
    関連付けられた各実行キューは、前記ノードと関連付け
    られたリソースを共有する前記プロセッサの群に親和化
    されたアクティブなプロセスを識別するように、前記階
    層ツリーの各ノードについて実行キューを形成する手段
    と、 前記プロセッサの動作を監視し、前記プロセッサが実行
    するために、前記実行キュー内で待ち行列をなすプロセ
    スを選択する手段と、を含むことを特徴とする前記オペ
    レーティング・システム。
  9. 【請求項9】各々実行キューと関連付けられた複数のプ
    ロセッサを有するマルチプロセッサ・システムのための
    オペレーティング・システムであって、 前記プロセッサの1つと関連付けられ、前記関連するプ
    ロセッサの実行キューを監視し、前記関連するプロセッ
    サが実行するために、他のプロセッサの実行キューから
    プロセスを捜して獲得するディスパッチャと、 前記システムにおけるアクティブなプロセスの進展を監
    視し、処理されていないプロセスにフラグをセットする
    中期スケジューラと、から成り、 前記ディスパッチャは、複数の入手可能なプロセスを有
    する実行キューを見つけ出し、前記ディスパッチャはフ
    ラグがセットされているプロセスを選択する、ことを特
    徴とする前記オペレーティング・システム。
  10. 【請求項10】請求項9記載のオペレーティング・シス
    テムにおいて、前記プロセスはスレッド群を含み、前記
    ディスパッチャは、前記複数の入手可能なスレッド群に
    フラグがセットされたものがないとき、最高の優先度を
    有するスレッド群を選択することを特徴とする前記オペ
    レーティング・システム。
  11. 【請求項11】各々実行キューと関連付けられた複数の
    プロセッサを有するマルチプロセッサ・システムにおい
    て実行すべきプロセスを選択する方法であって、 各プロセッサの前記実行キューを監視するステップと、 あるプロセッサが実行するために、他のプロセッサの実
    行キューからプロセスを捜して獲得するステップと、 前記システム内のアクティブなスレッド群の進展を監視
    し、進展していないプロセスにフラグをセットするステ
    ップと、 前記プロセスが位置付けられている実行キューが複数の
    入手可能なプロセスを有するときは、フラグがセットさ
    れているプロセスを選択し、前記プロセスのいずれにも
    フラグがセットされていない場合は、最高の優先度を有
    するプロセスを選択するステップと、から成ることを特
    徴とする前記方法。
  12. 【請求項12】プロセスを実行するための複数のプロセ
    ッサと、各々前記プロセッサの異なる組み合わせによっ
    て共有される複数の共有資源とを含むハードウエア・ア
    ーキテクチャを有するマルチプロセッサ・システムのた
    めのオペレーティング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有資源の全てによって共有される共通資源に対応し前記
    階層ツリーの最高レベルに位置付けられるルート・ノー
    ドと、前記共有資源に対応し前記階層ツリーの少なくと
    も1つの中間レベルに位置付けられる複数の中間ノード
    とを有する階層ツリー構造の形状で、前記プロセッサと
    共有資源との物理的構成を表現する前記抽象概念を維持
    する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセスを識別し、残りのノードの1つと
    関連付けられた各実行キューは、前記ノードと関連付け
    られたリソースを共有する前記プロセッサの群に親和化
    されたアクティブなプロセスを識別するように、前記階
    層ツリーの各ノードについて実行キューを形成する手段
    と、から成り、 前記抽象概念は、前記階層ツリーのレベルの1つをスケ
    ジューリング・レベルとして定義し、前記スケジューリ
    ング・レベル内のノードをスケジューリング・ロカール
    として識別し、前記マルチプロセッサ・システム内の各
    アクティブなプロセスは、各々、スケジューリング・ロ
    カールの1つに対応する、ホーム・スケジューリング・
    ロカールと現スケジューリング・ロカールとを有し、プ
    ロセスのホーム・スケジューリング・ロカールは、前記
    プロセスを実行するための好適なプロセッサの祖先であ
    るスケジューリング・ロカールであり、プロセスの現ス
    ケジューリング・ロカールは、前記プロセスを最後に実
    行したプロセッサの祖先であるスケジューリング・ロカ
    ールである、ことを特徴とする前記オペレーティング・
    システム。
  13. 【請求項13】請求項12記載のオペレーティング・シ
    ステムであって、更に、 前記スケジューリング・ロカールの各々について処理負
    荷を監視し、前記システム内の各アクティブなプロセス
    について、当該プロセスのホーム・スケジューリング・
    ロカールおよび現スケジューリング・ロカールが異なる
    スケジューリング・ロカールに対応するか否かを判定
    し、更に、前記スケジューリング・ロカールの処理負荷
    に基づいて、前記スレッド・プロセスのホーム・スケジ
    ューリング・ロカールを前記プロセスの現スケジューリ
    ング・ロカールに移動するか、または前記プロセスの現
    スケジューリング・ロカールを前記プロセスのホーム・
    スケジューリング・ロカールに移動するかを判定する、
    中期スケジューラを含むことを特徴とする前記オペレー
    ティング・システム。
  14. 【請求項14】アクティブなプロセスを実行するための
    複数のプロセッサと、各々前記プロセッサの異なる組み
    合わせによって共有される複数の共有資源とを含むハー
    ドウエア・アーキテクチャを有するマルチプロセッサ・
    システムにおいて、均衡化したプロセッサ負荷を維持す
    る方法であって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持するステップであって、前
    記プロセッサに対応し階層ツリーの最低レベルに位置付
    けられる複数のリーフ・ノードと、前記プロセッサおよ
    び共有資源の全てによって共有される共通資源に対応し
    前記階層ツリーの最高レベルに位置付けられるルート・
    ノードと、前記共有資源に対応し前記階層ツリーの少な
    くとも1つの中間レベルに位置付けられる複数の中間ノ
    ードとを有する階層ツリー構造の形状で、前記プロセッ
    サと共有資源との物理的構成を表現する前記抽象概念を
    維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセス群を識別し、残りのノードの1つ
    と関連付けられた各実行キューは、前記ノードと関連付
    けられたリソースを共有する前記プロセッサの群に親和
    化されたアクティブなプロセス群を識別するように、前
    記階層ツリーの各ノードについて実行キューを形成する
    ステップと、 前記抽象概念は、前記階層ツリーのレベルの1つをスケ
    ジューリング・レベルとして定義し、前記スケジューリ
    ング・レベル内のノードをスケジューリング・ロカール
    として識別し、前記マルチプロセッサ・システム内の各
    アクティブなプロセスは、各々、スケジューリング・ロ
    カールの1つに対応する、ホーム・スケジューリング・
    ロカールと現スケジューリング・ロカールとを有し、プ
    ロセスのホーム・スケジューリング・ロカールは、前記
    プロセスを実行するための好適なプロセッサの祖先であ
    るスケジューリング・ロカールであり、プロセスの現ス
    ケジューリング・ロカールは、前記プロセスを最後に実
    行したプロセッサの祖先であるスケジューリング・ロカ
    ールであり、 前記スケジューリング・ロカールの各々について、処理
    負荷を監視するステップと、 前記システム内の各アクティブなプロセスについて、当
    該プロセスのホーム・スケジューリング・ロカールと現
    スケジューリング・ロカールが異なるスケジューリング
    ・ロカールに対応するか否かを判定するステップと、 前記スケジューリング・ロカールの処理負荷に基づい
    て、前記プロセスのホーム・スケジューリング・ロカー
    ルを前記プロセスの現スケジューリング・ロカールに移
    動するか、または前記プロセスの現スケジューリング・
    ロカールを前記プロセスのホーム・スケジューリング・
    ロカールに移動するかを判定するステップと、から成る
    ことを特徴とする前記方法。
  15. 【請求項15】アクティブなプロセスを実行するための
    複数のプロセッサと、各々前記プロセッサの異なる組み
    合わせによって共有される複数の共有資源とを含むハー
    ドウエア・アーキテクチャを有するマルチプロセッサ・
    システムのためのオペレーティング・システムであっ
    て、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有資源の全てによって共有される共通資源に対応し前記
    階層ツリーの最高レベルに位置付けられるルート・ノー
    ドと、前記共有資源に対応し前記階層ツリーの少なくと
    も1つの中間レベルに位置付けられる複数の中間ノード
    とを有する階層ツリー構造の形状で、前記プロセッサと
    共有資源との物理的構成を表現する前記抽象概念を維持
    する前記手段と、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセスを識別し、残りのノードの1つと
    関連付けられた各実行キューは、前記ノードと関連付け
    られたリソースを共有する前記プロセッサの群に親和化
    されたアクティブなプロセスを識別するように、前記階
    層ツリーの各ノードについて実行キューを形成する手段
    と、 前記システム内の各アクティブなプロセスの進展を監視
    し、所定時間期間の間に進展しない各アクティブなプロ
    セスを、前記階層ツリー内のより高いレベルのノードの
    実行キューに昇進させる中期スケジューラと、から成る
    ことを特徴とする前記オペレーティング・システム。
  16. 【請求項16】請求項15記載のオペレーティング・シ
    ステムであって、更に、 前記プロセッサの1つと関連付けられ、該関連するプロ
    セッサのために前記実行キューを監視し、前記関連する
    プロセッサが実行するために、前記実行キューの中で最
    高の優先度を有するアクティブなプロセスを選択する、
    少なくとも1つのディスパッチャを含み、 前記中期スケジューラは、第2所定時間期間の間に進展
    しない各アクティブなプロセスの優先度を高める、こと
    を特徴とする前記オペレーティング・システム。
  17. 【請求項17】請求項16記載のオペレーティング・シ
    ステムにおいて、 前記中期スケジューラは、第3所定時間期間の間に進展
    しない各プロセスにフラグをセットし、 前記ディスパッチャは前記関連するプロセッサの実行キ
    ューを監視し、前記関連するプロセッサが実行するため
    に、他のプロセッサの実行キューからプロセッサを捜し
    て獲得し、 前記ディスパッチャが複数の入手可能なプロセスを有す
    る実行キューを見つけたとき、前記ディスパッチャはフ
    ラグがセットされているプロセスを選択する、ことを特
    徴とする前記オペレーティング・システム。
  18. 【請求項18】種々のアクティブなプロセスを実行する
    ための複数のプロセッサと、各々前記プロセッサの異な
    る組み合わせによって共有される複数の共有資源とを含
    むハードウエア・アーキテクチャを有するマルチプロセ
    ッサ・システムにおいて、均衡化したプロセッサ負荷を
    維持する方法であって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持するステップであって、前
    記プロセッサに対応し階層ツリーの最低レベルに位置付
    けられる複数のリーフ・ノードと、前記プロセッサおよ
    び共有資源の全てによって共有される共通資源に対応し
    前記階層ツリーの最高レベルに位置付けられるルート・
    ノードと、前記共有資源に対応し前記階層ツリーの少な
    くとも1つの中間レベルに位置付けられる複数の中間ノ
    ードとを有する階層ツリー構造の形状で、前記プロセッ
    サと共有資源との物理的構成を表現する前記抽象概念を
    維持するステップと、 前記階層ツリーの各ノードについて実行キューを形成す
    るステップであって、リーフ・ノードと関連付けられた
    各実行キューは前記関連するプロセッサに親和化された
    アクティブなプロセス群を識別し、残りのノードの1つ
    と関連付けられた各実行キューは、前記ノードと関連付
    けられたリソースを共有する前記プロセッサの群に親和
    化されたアクティブなプロセス群を識別するように、前
    記階層ツリーの各ノードについて実行キューを形成する
    ステップと、 前記システム内の各アクティブなプロセスの進展を監視
    するステップと、 所定時間期間の間に進展しない各アクティブ・プロセス
    を、前記階層ツリー内のより高いレベルのノードの実行
    キューに昇進させるステップと、から成ることを特徴と
    する前記方法。
  19. 【請求項19】各々実行キューが関連付けられた複数の
    プロセッサを有するマルチプロセッサ・システムのため
    のオペレーティング・システムであって、 前記システム内の各アクティブなプロセスの進展を監視
    し、所定時間期間の間に進展しない各アクティブなプロ
    セスを、前記階層ツリー内のより高いレベルのノードの
    実行キューに昇進させる中期スケジューラと、 前記プロセッサの1つと関連付けられ、該関連するプロ
    セッサによって実行されるプロセスが待ち行列をなす実
    行キューを監視し、前記関連するプロセッサが実行する
    ために、前記実行キューの中で最高の優先度を有するア
    クティブなプロセスを選択する、少なくとも1つのディ
    スパッチャと、から成ることを特徴とする前記オペレー
    ティング・システム。
  20. 【請求項20】複数のプロセッサと、各々前記プロセッ
    サの異なる組み合わせによって共有される複数の共有メ
    モリー資源とを含むハードウエア・アーキテクチャを有
    するマルチプロセッサ・システムのためのオペレーティ
    ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有メモリー資源の全てによって共有される共通資源に対
    応し前記階層ツリーの最高レベルに位置付けられるルー
    ト・ノードと、前記共有メモリー資源に対応し前記階層
    ツリーの少なくとも1つの中間レベルに位置付けられる
    複数の中間ノードとを有する階層ツリー構造の形状で、
    前記プロセッサと共有メモリー資源との物理的構成を表
    現する前記抽象概念を維持する前記手段と、 共有物理メモリ資源を表わす各ノードにおいてフレーム
    ・トラジェリを維持し、前記メモリ資源の物理メモリの
    フレーム管理および割り当てを制御し、関連するトラジ
    ェリを有する全てのノードに共通なノードを高位ポリシ
    ・ノードとして識別し、前記プロセッサの少なくとも1
    つが用いるために、前記フレーム・トラジェリから物理
    メモリのフレームを割り当てる手段と、から成ることを
    特徴とする前記システム。
  21. 【請求項21】請求項20記載のオペレーティング・シ
    ステムであって、更に、物理メモリ空間に対するプロセ
    ス要求を受け、どのノードから前記要求された物理メモ
    リ空間を割り当てるかを識別し、前記識別されたノード
    と関連付けられたフレーム・トラジェリから、前記要求
    された物理メモリ空間を割り当てる、メモリ・マネージ
    ャを含むことを特徴とする前記オペレーティング・シス
    テム。
  22. 【請求項22】請求項21記載のオペレーティング・シ
    ステムにおいて、前記識別されたノードはポリシ・ノー
    ドであり、前記メモリ・マネージャは、該ポリシ・ノー
    ドのポリシ制約に基づいて、前記ポリシ・ノードと関連
    付けられた1つ以上の関連するフレーム・トラジェリか
    ら、前記要求された物理メモリを割り当てることを特徴
    とする前記オペレーティング・システム。
  23. 【請求項23】種々のプロセスを実行する複数のプロセ
    ッサと、前記プロセッサの異なる組み合わせによって各
    々共有される複数の共有メモリー資源とを有するマルチ
    プロセッサ・システムのためのオペレーティング・シス
    テムを具現化するプログラム・コードを収容したコンピ
    ュータ読み取り可能媒体であって、前記オペレーティン
    グ・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持するステップであって、前
    記プロセッサに対応し階層ツリーの最低レベルに位置付
    けられる複数のリーフ・ノードと、前記プロセッサおよ
    び共有メモリー資源の全てによって共有される共通資源
    に対応し前記階層ツリーの最高レベルに位置付けられる
    ルート・ノードと、前記共有メモリー資源に対応し前記
    階層ツリーの少なくとも1つの中間レベルに位置付けら
    れる複数の中間ノードとを有する階層ツリー構造の形状
    で、前記プロセッサと共有メモリー資源との物理的構成
    を表現する前記抽象概念を維持する前記ステップと、 共有物理メモリ資源を表わす各ノードにおいてフレーム
    ・トラジェリを維持し、前記メモリ資源の物理メモリの
    フレーム管理および割り当てを制御するステップと、 関連するトラジェリを有する全てのノードに共通なノー
    ドを高位ポリシ・ノードとして識別し、前記プロセッサ
    の少なくとも1つが用いるために、前記フレーム・トラ
    ジェリから物理メモリのフレームを割り当てるステップ
    と、から成る方法を実行する、前記オペレーティング・
    システムを収容することを特徴とする前記コンピュータ
    読み取り可能媒体。
  24. 【請求項24】複数のプロセッサと、各々前記プロセッ
    サの異なる組み合わせによって共有される複数の共有メ
    モリー資源とを含むハードウエア・アーキテクチャを有
    するマルチプロセッサ・システムのためのオペレーティ
    ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有メモリー資源の全てによって共有される共通資源に対
    応し前記階層ツリーの最高レベルに位置付けられるルー
    ト・ノードと、前記共有メモリー資源に対応し前記階層
    ツリーの少なくとも1つの中間レベルに位置付けられる
    複数の中間ノードとを有する階層ツリー構造の形状で、
    前記プロセッサと共有メモリー資源との物理的構成を表
    現する前記抽象概念を維持する前記手段と、 前記ルート・ノードと関連付けられ、割り当てられ得る
    物理メモリの各フレームのリストと、リストされている
    各フレームと関連付けられ、当該フレームが位置する前
    記メモリ資源を表わすノードを識別するポインタとを含
    む、高位フレーム・テーブルを維持する手段と、から成
    ることを特徴とする前記オペレーティング・システム。
  25. 【請求項25】複数のプロセッサと、各々前記プロセッ
    サの異なる組み合わせによって共有される複数の共有メ
    モリー資源とを含むハードウエア・アーキテクチャを有
    するマルチプロセッサ・システムのためのオペレーティ
    ング・システムであって、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持する手段であって、前記プ
    ロセッサに対応し階層ツリーの最低レベルに位置付けら
    れる複数のリーフ・ノードと、前記プロセッサおよび共
    有メモリー資源の全てによって共有される共通資源に対
    応し前記階層ツリーの最高レベルに位置付けられるルー
    ト・ノードと、前記共有メモリー資源に対応し前記階層
    ツリーの少なくとも1つの中間レベルに位置付けられる
    複数の中間ノードとを有する階層ツリー構造の形状で、
    前記プロセッサと共有メモリー資源との物理的構成を表
    現する前記抽象概念を維持する前記手段と、 前記システムの仮想メモリの割り当てのために、メモリ
    ・ロカールを表わす各ノードにおいてメモリ・プールを
    維持し、前記仮想メモリをプール単位に分割して前記メ
    モリ・プールに割り当てる手段と、 プール単位および該プール単位の各々が割り当てられて
    いる前記メモリ・プールの可用性を識別する、プール単
    位テーブルを維持する手段と、から成ることを特徴とす
    る前記オペレーティング・システム。
  26. 【請求項26】請求項25記載のオペレーティング・シ
    ステムであって、更に、仮想メモリ空間に対するプロセ
    ス要求を受け、該要求された仮想メモリ空間をどのメモ
    リ・プールから割り当てるかを識別し、前記識別された
    メモリ・プールが十分な仮想メモリ空間を有していない
    場合、前記識別されたメモリ・プールに対する前記プー
    ル単位テーブルから、追加のプール単位を得て、前記識
    別されたメモリ・プールから前記要求されたメモリ空間
    を割り当てる、メモリ・マネージャを含むことを特徴と
    する前記オペレーティング・システム。
  27. 【請求項27】請求項26記載のオペレーティング・シ
    ステムにおいて、前記メモリ・マネージャは、前記識別
    されたメモリ・プールと関連付けられた物理メモリ空間
    で、前記要求された仮想メモリ空間を支えることを特徴
    とする前記オペレーティング・システム。
  28. 【請求項28】請求項25記載のオペレーティング・シ
    ステムであって、仮想メモリ空間を放出し、解放された
    仮想メモリ空間が属するプール単位を識別し、前記プー
    ル単位テーブルにアクセスし、前記識別されたプール単
    位が属するメモリ・プールを識別し、前記解放された仮
    想メモリ空間を前記識別されたメモリ・プールに放出す
    る、メモリ・マネージャを含むことを特徴とする前記オ
    ペレーティング・システム。
  29. 【請求項29】請求項28記載のオペレーティング・シ
    ステムにおいて、前記メモリ・マネージャは、各メモリ
    ・プールにおいて、プール単位にサイズが等しい連続す
    る解放仮想メモリ空間を捜し、前記プール単位テーブル
    にエントリを配置し、前記解放仮想メモリと関連付けら
    れた前記プール単位がメモリ・プールへの割り当てに利
    用可能であることを指示することによって、前記解放仮
    想メモリを放出することを特徴とする前記オペレーティ
    ング・システム。
  30. 【請求項30】種々のアクティブなプロセスを実行する
    複数のプロセッサと、各々前記プロセッサの異なる組み
    合わせによって共有される複数の共有メモリー資源とを
    有するマルチプロセッサ・システムのためのオペレーテ
    ィング・システムを具現化するプログラム・コードを収
    容したコンピュータ読み取り可能媒体であって、前記オ
    ペレーティング・システムは、 前記マルチプロセッサ・システムのハードウエア・アー
    キテクチャの抽象概念を維持するステップであって、前
    記プロセッサに対応し階層ツリーの最低レベルに位置付
    けられる複数のリーフ・ノードと、前記プロセッサおよ
    び共有メモリー資源の全てによって共有される共通資源
    に対応し前記階層ツリーの最高レベルに位置付けられる
    ルート・ノードと、前記共有メモリー資源に対応し前記
    階層ツリーの少なくとも1つの中間レベルに位置付けら
    れる複数の中間ノードとを有する階層ツリー構造の形状
    で、前記プロセッサと共有メモリー資源との物理的構成
    を表現する前記抽象表現を維持する前記ステップと、 前記システムの仮想メモリの割り当てのためのメモリ・
    ロカールを表わす各ノードにおいてメモリ・プールを維
    持し、前記仮想メモリを、前記メモリ・プールに割り当
    て可能なプール単位に分割するステップと、 プール単位と、該プール単位の各々が割り当てられてい
    るメモリ・プールとの可用性を識別するプール単位テー
    ブルを維持するステップと、から成る方法を実行する、
    前記オペレーティング・システムを収容することを特徴
    とする前記コンピュータ読み取り可能媒体。
JP16351596A 1995-06-23 1996-06-24 非一様メモリ・アクセス・マルチプロセッサ・システム用オペレーティング・システム Expired - Lifetime JP3836187B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 階層型資源管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
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