JP2006260565A - プロセス・スレッドのアダプティブ・パーティショニングを用いたプロセス・スケジューラ - Google Patents

プロセス・スレッドのアダプティブ・パーティショニングを用いたプロセス・スケジューラ Download PDF

Info

Publication number
JP2006260565A
JP2006260565A JP2006068185A JP2006068185A JP2006260565A JP 2006260565 A JP2006260565 A JP 2006260565A JP 2006068185 A JP2006068185 A JP 2006068185A JP 2006068185 A JP2006068185 A JP 2006068185A JP 2006260565 A JP2006260565 A JP 2006260565A
Authority
JP
Japan
Prior art keywords
thread
processor
budget
partition
sending
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.)
Withdrawn
Application number
JP2006068185A
Other languages
English (en)
Inventor
Dan Dodge
ダッジ ダン
Attila Danko
ダンコ アッティラ
Sebastien Marineau-Mes
マリナー−メス セバスチアン
Peter Van Der Veen
ヴァン デル ヴィーン ピーター
Colin Burgess
バージェス コリン
Thomas Fletcher
フレッチャー トーマス
Brian Stecher
ステッチャー ブライアン
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.)
QNX Software Systems Ltd
Original Assignee
QNX Software Systems Ltd
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
Priority claimed from US11/216,795 external-priority patent/US8387052B2/en
Application filed by QNX Software Systems Ltd filed Critical QNX Software Systems Ltd
Publication of JP2006260565A publication Critical patent/JP2006260565A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Abstract


【課題】アダプティブ・パーティションを用いて好適にCPU資源を割り当てることを提供する。
【解決手段】プロセッサ(105)とメモリ(110)とメモリ内に格納されたソフトウェアコードを備えたシステムに関する。該コードは、プロセッサにより実行可能であり、ソフトウェアスレッドに関連したアダプティブ・パーティションを生成するスレッドを備える。各アダプティブ・パーティションはプロセッサ・バジェットを有する。該コードはまた、送信スレッドと受信スレッドを生成する。受信スレッドは送信スレッドからの通信に応答し、通信に対応するタスクを実行する。スケジューリングシステム(130)は、アダプティブ・パーティションのプロセッサ・バジェットに基づいて送信スレッドと受信スレッドの各々にプロセッサを割り当てる。
【選択図】図1

Description

(優先権主張)
本出願は、2005年3月14日に出願された米国仮特許出願第60/662,070号と、2005年12月22日に出願されたU.S.S.N.11/317,468号と、2005年8月31日に出願されたU.S.S.N.11/216,795号に対する優先権を主張する。
(技術分野)
本発明は、オペレーティングシステムがスレッドおよびそれに類似するものの実行をスケジューリングする仕方に関する。更に詳しくは、本発明は、プロセス・スレッドに対して適応可能なパーティション・スケジューリングを有するオペレーティングシステムに関する。
(関連技術)
オペレーティングシステムのカーネルは、上記システムの上で活動している各スレッドが対応するプロセスを正確に実行するために適切な長さのCPU時間を入手出来るようにCPU資源を分配することが可能であり得る。このために、上記カーネルは、利用可能なCPU時間を複数のスレッドの間にどのように配分するかを判断する、スケジューリングシステムを実装し得る。
少なくとも3タイプのプロセス・スケジューリングシステムがある。FIFOスケジューリングシステム、ラウンドロビン・スケジューリングシステム、および、スポラディック・スケジューリングシステムである。各システムにおいては、優先順位の値がCPUによって実行されるプロセスの各スレッドに割り当てられる。システム全体の動作に対して重要なものとなり得るスレッドには高い優先順位が割り当てられるが、上記システムの動作に対する重要度が低くなり得るスレッドは、低い優先順位を有することになる。スケジューリングシステムが上記CPUにスレッドアクセスを付与するかどうかは、上記スレッドの状態にも依存する。例えば、スレッドは準備完了であるか、(他の状態も使用されていたとしても)ブロックされているかであり得る。スレッドは、動作に必要な全ての条件が満たされ、実行出来る場合に、準備完了である。対照的に、スレッドは、即座に完了できない動作を開始し得る場合にブロックされ、上記スレッドの実行が継続するまでイベントの完了を待機しなければならない。
FIFOスケジューリングシステムにおいては、実際に実行しているスレッドは、ブロッキングによってCPUを明け渡し、実行を終了するか高優先順位のスレッドに代わられるまで、全CPU時間を使用し続ける。一旦これらの判定条件の1つが満足されると、FIFOスケジューリングシステムは、上記CPUを準備完了状態にある高い優先順位のプロセス/スレッドに割り当てる。一般に、各優先順位レベルに対して1つの準備完了キューが存在する。
ラウンドロビン・スケジューリングシステムは追加的なパラメータ、すなわち、CPU時間をスレッドに割り当てる、タイムスライスを用いる。タイムスライスとは、スレッドがCPUにアクセスを許容されている時間の長さである。ラウンドロビン・スケジューリングシステムにおいては、実際に実行しているスレッドは以下のいずれかのイベントが発生するまで全CPU時間を使用し続ける。1)現在実行しているプロセスがブロックされる、2)現在実行しているプロセスが終了する、3)現在実行しているプロセスが高位の優先順位にあるスレッドに明け渡される、4)現在実行しているプロセスがそのタイムスライスを使い果たす。一旦、現在実行しているプロセスがブロックされる、または、そのタイムスライスを使い果たすと、準備完了キューの後に優先順位を置かれることになる。
スポラディック・スケジューリングシステムは、ラウンドロビン・スケジューリングシステムにいくぶん類似している。スポラディック・スケジューリングシステムにおいては、現在実行しているプロセスは以下のいずれかのイベントが発生するまで全CPU時間を使用し続ける。1)現在実行しているプロセスがブロックされる、2)現在実行しているプロセスが終了する、3)現在実行しているプロセスが高位の優先順位にあるプロセスに明け渡される、4)現在実行しているプロセスが所与の期間の範囲内のスレッドに割り当てられた実行時間における制限されたリミットを使い果たす。上記制限されたリミットはバジェットとして知られるが、このリミットが使用され得る上記所与の期間は、補充期間として知られている。実行中、スレッドに対する上記バジェットは上記補充期間の満了後に補充される。一旦、現在実行しているプロセスがブロックされると、準備完了キューの後に優先順位を置かれることになる。しかしながら、現在実行しているプロセスが上記補充期間内でバジェットを使い果たすと、その優先順位は所定の値だけ下げられ、準備完了キューの後にこの低い優先順位を置かれることになる。プロセス/スレッドの優先順位は、多数の異なる条件に応答してオリジナルな値を返され得る。
例えばKanata,OntarioにあるQNX Software Systemsから入手出来るようなオペレーティングシステムにおいては、上記システムにおける各スレッドは、先のスケジューリングシステムのいずれかを用いて実行し得る。結果として、上記スケジューリングシステムは、ノード上の全スレッドおよびプロセスに対して、スレッド毎に有効である。各スレッドは、プロセス/スレッド自身の動作を介して特定のスケジューリングシステムに割り当てられる。このことは、ソフトウェアデザイナーに顕著なデザイン自由度を提供するが、ソフトウェアデザイナーの間で同じシステムのコードを実行させる調整を、必要とし得る。この調整は、各スレッドにスケジューリングシステムのタイプを割り当てるのと同様に、異なるスレッドに対する優先順位の割り当てを含んでいる。
利用可能なオペレーティングシステムのいくつかは、グローバルなやり方でスケジューリングを適用する。そのようなグローバルなスケジューリングシステムの一つは、フェア−シェア・スケジューリングシステムとして知られている。フェア−シェア・スケジューリングシステムにおいては、CPUの利用は、ユーザ、グループ、あるいはプロセスの間に均等に割り当てられ得る。例えば、4人のユーザ(A,B,C,D)が各々同時に1つのプロセスを実行している場合、フェア−シェア・スケジューラは、各ユーザが全体の25%(100%/4=25%)を入手出来るように、利用可能なCPUサイクルを論理的に分割する。ユーザBが第2のプロセスを開始する場合、各ユーザもやはり全サイクルの25%を受け取るが、ユーザBのプロセスの双方は全利用可能CPU時間の各々12.5%を受け取る。一方、新しいユーザがシステム上でプロセスを開始すると、上記スケジューラは、各ユーザが全体の20%(100%/5=20%)を入手できるように利用可能なCPUサイクルを再配分する。
別の層の概念は、ユーザをグループに区分けすることと、フェア−シェア・システムを上記グループに応用することを可能にする。このケースでは、利用可能なCPUサイクルは、最初にグループの間に分割され、その後、上記グループ内のユーザの間に分割され、更にその後、それらユーザに対するプロセスの間に分割される。例えば、3つのグループ(1,2,3)があり、各々が3人、2人、4人のユーザをそれぞれ含む場合、利用可能なCPUサイクルは次のように分割され得る。100%/3=33.3%毎グループ、グループ1:(33.3%/3ユーザ)=11.1%/ユーザ、グループ2:(33.3%/2ユーザ)=16.7%/ユーザ、グループ3:(33.3パーセント/4ユーザ)=8.3パーセント/ユーザ。これとは別なグループ間への比率の割り当ても用いられ得る。
フェア−シェア・スケジューリング作戦を論理的に実行する仕方の一つは、概念(プロセス、ユーザ、グループ、その他)の各レベルでラウンド−ロビン・スケジューリング作戦を再帰的に適用することである。ラウンド−ロビン・スケジューリングにおいては、重要度または優先順位が同じスレッドは交代で実行する。各々は、各スレッドまたはスレッドのグループの性質である、インターバルまたはタイムスライスの間に実行する。
先行するオペレーティングシステムは様々なアプリケーションでは利点を有するが、ある種のシステムアプリケーションで用いられた場合、欠陥に直面する。例えば、スレッド毎のスケジューリングシステムが、優先順位の割り当てを通してのみ計画されているリアル−タイムのシステムにおいて用いられた場合、低位の優先順位にあるスレッドに対する非常に長い待ち時間が発生し得ることになる。不当なソフトウェアプロセスは、それらに高い優先順位にある実行が出来るように構成し、これによって低い優先順位にあるスレッドに適切なスケジューリングをさせることを妨げる。この問題は、例えば高位の優先順位にあるスレッドが異常を起こし、無限ループに入った場合のシステム開発の間にも発生し得る。グローバルなフェア−シェア・スケジューリングシステムはそのような問題を回避し得るが、リアルタイムのシステムに対して必要な応答性を欠く。そのため、現在全スレッドに対してある種のCPUアクセスを提供していることに加えて更に、リアルタイムなやり方で高位の優先順位にあるスレッドを動作させることを効率的に可能にし得るスケジューリングシステムに対する需要が存在する。
(発明の概要)
単一の、または、シンメトリックなマルチプロセッサであるプロセッサと、1つ以上の記憶装置を備えたシステムが述べられている。本システムはまた、上記記憶装置内に格納されるソフトウェアコードを含む。上記ソフトウェアコードは上記プロセッサによって実行可能であり、各々が1つ以上のソフトウェアスレッドに関連した複数のアダプティブ・パーティションを備える。上記アダプティブ・パーティションの各々は対応するプロセッサ・バジェットを有する。上記コードはまた、1つ以上の送信スレッドと1つ以上の受信スレッドを生成するように実行可能である。上記受信スレッドは上記送信スレッドからの通信に応答し、上記通信に対応する1つ以上のタスクを実行する。スケジューリングシステムはまた、上記コードにおける上記プロセッサによって実行可能な部分のうち、少なくとも一部分を形成する。動作中、上記スケジューリングシステムは上記プロセッサを各送信および受信スレッドに、少なくとも一つには各スレッドに関連したアダプティブ・パーティションのプロセッサ・バジェットに基づいて選択的に割り当てる。本タイプの送/受信環境においては、スケジューリングシステムは、上記送信スレッドから送信された通信に応答し、上記受信スレッドによって使用されるプロセッサ割り当てを、上記送信スレッドに関連したアダプティブ・パーティションのプロセッサ・バジェットに請求する。
本システムの別のシステム、方法、特性、および利点は、当業者には、以下の図面および詳細な記述を検討した後に明白に理解出来る。そのような追加的なシステム、方法、特性、および利点は、本記述の範囲に含まれ、本発明の目的から逸脱せず、請求項によって保護される。
本発明は、さらに以下の手段を提供する。
(項目1)
プロセッサと、
1つ以上の記憶装置と、
該1つ以上の記憶装置に格納されたソフトウェアコードと
を備えるシステムであって、
該ソフトウェアコードは、該プロセッサによって実行可能であり、
少なくとも1つの送信スレッドと、
該少なくとも1つの送信スレッドからの通信に応答して、該通信に対応する1つ以上のタスクを実行する少なくとも1つの受信スレッドと、
少なくとも一つには、該少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに基づいて、該プロセッサを該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドに選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステムと
を備えており、
該少なくとも1つの送信スレッドによって送信された通信に応答するために、該スケジューリングシステムが該少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを該少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに対して請求する、
システム。
(項目2)
前記スケジューリングシステムがオペレーティングシステムの一部分である、項目1に記載のシステム。
(項目3)
前記プロセッサがシンメトリックなマルチプロセッサである、項目1に記載のシステム。
(項目4)
前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに請求する、項目1に記載のシステム。
(項目5)
前記スケジューリングシステムが適応可能なパーティションを有する少なくとも1つの送信スレッドに関連し、
前記少なくとも1つの送信スレッドに関連した前記プロセッサ・バジェットが、該少なくとも1つの送信スレッドに関連した、該適応可能なパーティションを割り当てられたプロセッサ・バジェットに対応する、項目1に記載のシステム。
(項目6)
前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されている前記プロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した適応可能なパーティションのプロセッサ・バジェットに請求する、項目5に記載のシステム。
(項目7)
プロセッサと、
1つ以上の記憶装置と、
該1つ以上の記憶装置に格納されたソフトウェアコードと
を備えるシステムであって、
該ソフトウェアコードは、
複数のスレッドとして該プロセッサによって実行可能であり、
該複数のスレッドは少なくとも1つの送信スレッドと少なくとも1つの受信スレッドを含んでおり、
更に、該ソフトウェアコードに含まれ、少なくとも一つには、各スレッドに関連したプロセッサ・バジェットに基づいて、該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドを実行するために該プロセッサを選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステム
を備える、システム。
(項目8)
前記スケジューリングシステムがオペレーティングシステムの一部分である、項目7に記載のシステム。
(項目9)
前記プロセッサがシンメトリックなマルチプロセッサである、項目7に記載のシステム。
(項目10)
前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに請求する、項目7に記載のシステム。
(項目11)
前記スケジューリングシステムが適応可能なパーティションを有する少なくとも1つの送信スレッドに関連し、
前記少なくとも1つの送信スレッドに関連した前記プロセッサ・バジェットが、該適応可能なパーティションを割り当てられたプロセッサ・バジェットに対応する、項目1に記載のシステム。
(項目12)
前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されている前記プロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した適応可能なパーティションのプロセッサ・バジェットに請求する、項目7に記載のシステム。
(項目13)
プロセッサと、
1つ以上の記憶装置と、
該1つ以上の記憶装置に格納されたソフトウェアコードと
を備えるシステムであって、
該ソフトウェアコードは、
該プロセッサによって実行可能であり、
各々が1つ以上の処理装置に関連する複数の適応可能なパーティションであって、該複数の適応可能なパーティションの各々が対応するプロセッサ・バジェットを有する、複数の適応可能なパーティションと、
該複数の適応可能なパーティションの第1の適応可能なパーティションに関連した少なくとも1つの送信スレッドと、
該複数の適応可能なパーティションの第2の適応可能なパーティションに関連した少なくとも1つの受信スレッドであって、該少なくとも1つの受信スレッドは、該通信に対応する少なくとも1つのタスクを実行することによって、該少なくとも1つの送信スレッドからの通信に応答する、受信スレッドと、
少なくとも一つには、該第1および第2の適応可能なパーティションのプロセッサ・バジェットに基づいて、該プロセッサを該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドに選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステムと
を備えるソフトウェアコードである、
システム。
(項目14)
前記スケジューリングシステムがオペレーティングシステムの一部分である、項目13に記載のシステム。
(項目15)
前記プロセッサがシンメトリックなマルチプロセッサである、項目13に記載のシステム。
(項目16)
前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した、前記適応可能なパーティションのプロセッサ・バジェットに請求する、項目1に記載のシステム。
(項目17)
複数のソフトウェアスレッドを有する処理装置内にあるプロセス・スケジューラを動作させる方法であって、該複数のソフトウェアスレッドは、少なくとも1つの送信スレッドと、該少なくとも1つの送信スレッドによって送信された通信に応答する少なくとも1つの受信スレッドを含み、該少なくとも1つの送信スレッドは所定のプロセッサ・バジェットを有する第1の適応可能なパーティションに関連しており、該少なくとも1つの受信スレッドは更なる所定のプロセッサ・バジェットを有する第2の適応可能なパーティションに関連しており、該方法は、
該送信スレッドの実行をスケジューリングし、該送信スレッドが該受信スレッドに通信を送信することと、
該受信スレッドの実行をスケジューリングすることと、
該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションのプロセッサ・バジェットに請求すること
を含む、方法。
(項目18)
前記請求する動作が、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションのプロセッサ・バジェットに請求することを含む、項目17に記載の方法。
(項目19)
複数のソフトウェアスレッドを有する処理装置内にあるプロセス・スケジューラを動作させる方法を実行するために使用されているソフトウェアコードを含む記憶媒体であって、
該複数のソフトウェアスレッドは、少なくとも1つの送信スレッドと、該少なくとも1つの送信スレッドによって送信された通信に応答する少なくとも1つの受信スレッドを含み、該少なくとも1つの送信スレッドは所定のプロセッサ・バジェットを有する第1の適応可能なパーティションに関連しており、該少なくとも1つの受信スレッドは更なる所定のプロセッサ・バジェットを有する第2の適応可能なパーティションに関連しており、該方法は、
該送信スレッドの実行をスケジューリングし、該送信スレッドが該受信スレッドに通信を送信することと、
該受信スレッドの実行をスケジューリングすることと、
該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションのプロセッサ・バジェットに請求すること
を含む方法である、
記憶媒体。
(項目20)
前記請求する動作が、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションのプロセッサ・バジェットに請求することを含む、項目19に記載の記憶媒体。
(項目21)
送信スレッドに関連し、第1のプロセッサ・バジェットを有する、第1の適応可能なパーティションと、
受信スレッドに関連し、第2のプロセッサ・バジェットを有する、第2の適応可能なパーティションであって、該受信スレッドは、該通信に対応する1つ以上のタスクを実行することによって、該送信スレッドによって送信された通信に応答する受信スレッドである、第2の適応可能なパーティションと、
少なくとも一つには、該第1および第2の適応可能なパーティションの該第1および第2の所定のプロセッサ・バジェットに基づいて、プロセッサを該受信スレッドと該送信スレッドと該受信スレッドに選択的に割り当てるように適合されたプロセス・スケジューラであって、該プロセッサ・スケジューラは、該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションの第1の所定のプロセッサ・バジェットに請求する、プロセス・スケジューラと
を備える、プロセス・スケジューリングシステム。
(項目22)
前記プロセッサがシンメトリックなマルチプロセッサである、項目21に記載のプロセス・スケジューリングシステム。
(項目23)
前記プロセス・スケジューラが、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションの前記第1の所定のプロセッサ・バジェットに請求する、項目21に記載のプロセス・スケジューリングシステム。
(摘要)
単一のプロセッサ、または、シンメトリックなマルチプロセッサと、1つ以上の記憶装置を備えたシステムが述べられている。上記システムはまた、記憶装置内に格納されたソフトウェアコードを含んでいる。上記ソフトウェアコードはプロセッサによって実行可能であり、各々が1つ以上のソフトウェアスレッドと関連している複数のアダプティブ・パーティションを生成するコードを備える。上記コードはまた、少なくとも1つ以上の送信スレッドと、少なくとも1つ以上の受信スレッドを生成するように実行することが出来る。上記受信スレッドは、送信スレッドからの通信に応答して、上記通信に対応する1つ以上のタスクを実行する。スケジューリングシステムはまた、プロセッサによって実行可能なコードのいくつかの部分を形成する。実行中、上記スケジューリングシステムはまた、少なくとも一つには各パーティションに関連したアダプティブ・パーティションのプロセッサ・バジェットに基づいて送信スレッドと受信スレッドの各々にプロセッサを割り当てる。このタイプの送/受信環境では、上記スケジューリングシステムは、送信スレッドから送信された通信に応答し、受信スレッドによって用いられるプロセッサ割り当てに関連したアダプティブ・パーティションのプロセッサ・バジェットに受信スレッドによって用いられるプロセッサ割り当てを請求する。
(好適な実施形態に関する詳細な記述)
本発明は以下の図面と記述を参照することにより、より良く理解され得る。本発明が示す見地に立たずに、図面中のコンポーネントを一定の比率で拡大・縮小したり、強調したりする必要は、必ずしもない。更に、図面においては、参照されている番号と同じ番号が異なる見解の全体に渡って、対応する部分を指定する。
図1は、プロセス・スレッドのアダプティブ・パーティショニングを用たプロセス・スケジューラを動作し得るシステム100のスキーム的ブロック図である。システム100は、メモリ110に格納されたソフトウェアコードにアクセスし得る、中央演算装置105(「CPU」)を含む。CPU105は、様々な装置/システム要素をI/Oインターフェース115を介してアクセスするために配置され得る。上記装置/システム要素は、例えば、センサー、ヒューマンインターフェース装置、ネットワークノード、プリンタ、記憶装置、または類似の装置を含み得る。シンメトリックなマルチプロセッシング・システムにおけるプロセッサは、個数に関係なく、単一のプロセッサの時と同じような仕方で考えられ、同様に、ブロック105で表示される範囲に含まれる。
メモリ110は、特に、システム100によって実行されることになる機能を規定するソフトウェアコードを格納するために用いられる。メモリ110は単一の装置として示されているが、同一または異なるメモリタイプの複数の記憶装置を実装し得る。例えば、メモリ110は複数のフラッシュメモリ装置を実装し得る。代替的に、または追加的に、メモリ110は1つ以上のフラッシュメモリ装置と1つ以上のハードディスク格納装置とを実装し得る。相当な数の代替的な記憶装置の組み合わせが実装メモリ110に使用され得ることが理解され得る。
メモリ110に格納されCPU105によって実行され得るソフトウェアコードのいくつかは、図1では同一視されている。ここで示されている同一視されたソフトウェアコードは、オペレーティングシステム120と1つ以上のソフトウェア・アプリケーション125とを含む。この例では、プロセス・スケジューラ130とデバイスドライバ135は、オペレーティングシステム120の一部として含まれる。しかしながら、プロセス・スケジューラ130とデバイスドライバ135は、オペレーティングシステム120から分離したソフトウェアモジュールとしても実装され得る。ソフトウェア・アプリケーション125は、システム100を実行するための高レベルな関数を規定するために用いられ得る。デバイスドライバ135は、ソフトウェア・アプリケーション125がシステム100のハードウェアコンポーネントと通信するハードウェア概念層を提供するために用いられ得る。上記ハードウェアコンポーネントは、I/Oインターフェース115を介してアクセスされたコンポーネントを含み得る。
プロセス・スケジューラ130は、システム100の各スレッドにCPU105の処理時間(「CPU時間」)を割り当てるために用いられる、実行可能なソフトウェアコードを備える。上記CPU時間は、各スレッドが対応するプロセスを正確に実行するための適切な長さのCPU時間を取得出来るように、割り当てられ得る。
図2は、プロセス・スケジューラ130を実行させるために用いられ得る、相互関係を有する多数のオペレーションを示す流れ図である。図2の流れ図は、プロセス・スケジューラ130内で用いられ得る多数の値と動作特性を示している。いくつかの値または動作特性は、設計過程の間にユーザ選択の結果として固定され得るが、その他の値または動作特性は、ユーザによって提供されるコンフィギュレーションデータを介して、および/または、システム100のソフトウェアプログラミングを介して提供される。
図のように、プロセス・スケジューラ130は、ブロック205において多数の異なるアダプティブ・パーティションを生成する。各アダプティブ・パーティションは、プロセス・スケジューラ130によってグループ化されているプロセス・スレッドのセットに関連したスケジューリング属性に対して、仮想的な容器を構成する。共通の、または関係した機能として作用するスレッドは、同一のアダプティブ・パーティションを割り当てられ得る。オブジェクト指向のシステムにおいては、アダプティブ・パーティションは、対応するスケジュール方法と属性を含むアダプティブ・パーティションの類の一例として生成され得る。ブロック205において生成されるアダプティブ・パーティションの各々は、プロセス・スケジューラ130による更なるアクセスに対して一意的に同一視される。
プロセス・スケジューラ130によって生成されたパーティションの個数はコンフィギュレーション・パラメータの使用を介して初期化され得る。コンフィギュレーションデータはユーザ初期化コマンドによって、または、プロセス・スケジューラ130と調和するプログラムを介して提供され得る。
ブロック210において、プロセス・スケジューラ130によって用いられ得る平均ウィンドウのサイズが計算され得る。以下で更に詳しく述べられるように、上記平均ウィンドウとは、システムがオーバーロードされた場合にプロセス・スケジューラ130がアダプティブ・パーティションを担保されたCPU比率に保とうとする時間である。その他のウィンドウのサイズが適切であったとしても、典型的な時間は、100ミリ秒単位である。平均ウィンドウのサイズはブート時間において指定され得、その後は同様に再指定され得る。平均ウィンドウのサイズを選択する上で考慮すべきことは、以下を含み得る。
・継続時間の短い平均ウィンドウのサイズがCPU時間の平衡度を低下させること。
・継続時間の短い平均ウィンドウのサイズが用いられた場合、自らのバジェットを使い果たすパーティションは、その他のパーティションが自らに担保された比率未満の比率しか使用していないため、必ずしも時間を返済しなくてもよいこと。
・ある場合には、継続時間の長い平均ウィンドウのサイズがランタイムの遅延に直面し、いくつかのアダプティブ・パーティションを引き起こし得ること。
平均ウィンドウのサイズ(「ウィンドウサイズ」)は、ミリ秒単位で割り当てられ得、スケジューリングプロセッサ130はそれをクロック数に変換する。クロック数とは、クロック割り込みイベントの間の間隔(システムタイマー)である。スケジューリングプロセッサ130によって用いられる時間バジェットの全ては、ウィンドウサイズ上で平均化され得る。
ブロック215において、スケジューリングプロセッサ130は担保されたCPU時間バジェットをアダプティブ・パーティションの各々に割り当てる。上記担保されたバジェットは、アダプティブ・システムバジェットの全体の比率として割り当てられ得る。そのような場合における全アダプティブ・CPU比率の総和は、100%となり得る。全CPU時間バジェットのシェアを割り当てる目的上では、シンメトリックなマルチプロセッサシステムにおけるプロセッサは、個数に関係なく単一のプロセッサの場合と同じ仕方で考えられ得る。
各アダプティブ・パーティションに対して用いられる担保されたバジェットは、多くの異なる仕方で決定され得る。例えば、いくつかの異なる負荷条件の下で各パーティションによって用いられるCPU時間が計測され得、各パーティションによって消費されるCPU時間に対比して負荷のグラフを構成するために用いられる。計測は、オーバーロード条件の下でも行なわれ得る。システムデザイナーは、この情報を用いて、様々な条件下で各パーティションに収容された様々なスレッドの要求をバランス合わせし、適切な担保されたCPU時間バジェットを割り当て得る。上記計測は、上記担保されたCPU時間バジェットをCPU負荷条件に関して動的に(dynamically)変動させることにも用いられ得る。例えば、上記プロセス・スケジューラ130は、異なる動作条件に応答し、異なる動作モードに従って動作し得る。特定のモードで動作している間、上記プロセス・スケジューラ130はアダプティブ・パーティションパラメータについての一意なセットを用い得る。可用性と特定のモードに関連したパラメータとが、ブート時間に指定され得る。必要に応じてモードを切り替えるために、ランタイムにおけるアプリケーション・プログラミング・インターフェース(「API」)が用いられ得る。例えば、担保されたCPU時間比率の第1のセットがスタートアップの間に用いられ得、一方で、システムのスタートアップが完了した後、担保されたCPU時間比率の第2のセットが通常動作の間に用いられ得る。
優先順位が各スレッドに割り当てられ、各スレッドはブロック220におけるアダプティブ・パーティションの各々に関連している。機能が関係しているソフトウェアは同一のアダプティブ・パーティションに割り当てられ得る。このことは、優先順位がアダプティブ・パーティションの担保されたCPU時間比率と同様にスレッドに割り当てられているハイブリッドプロセス・スケジューリングシステムが、プロセス・スケジューラ130によって実行されるスケジュール決定において用いられるという効果がある。
各アダプティブ・パーティションにスレッドを割り当てる際、システムの特定の機能の動作がいつ阻害されることになるかを判断するための、構造化された方法として、アダプティブ・パーティションのスケジューリングが用いられ得る。この仕方で用いられた場合、分離したスレッドは、特定の状況の下でCPU時間が足りないかどうかに基づいて異なるアダプティブ・パーティションに配置され得る。例えば、システム100はパケット・ルータを動作させるように設計されたと仮定する。パケット・ルータによって実行され得るプロセスのいくつかは、1)ルーティング・パケット、2)パケット・ルーティングに対する収集・ロギング統計量、3)ピアルーターに対するルート・トポロジー・プロコトル、4)収集・ロギングおよびルート・トポロジー計量。そのような場合、これらのプロトコルのスレッドは、2つのアダプティブ・パーティションに割り当てられ得る。1つはルーティングに関連するスレッドに対し、もう1つはネットワークのトポロジーに関連するスレッドに対する。上記システムがいつオーバーロードされるか、すなわち、機械よりも際立った仕事があるかが、ことによると達成され得る。その結果、どのアプリケーションがより遅く実行し得るかを判断する必要が存在し得る。このため、CPUがルーティングおよび計量の両方に対してスレッドを実行するのに十分な資源を有していない場合は、上記ルートパケットが計量を収集・ルーティングするのとは対照的であることが好ましくあり得る。CPU資源が制限されている場合でさえ、上記スレッドをネットワークトポロジープロトコルに関連して走らせることは、穏当であり得る。このような状況下では、当初は2つのアダプティブ・パーティションが考えられていたこととは対照的に、3つのアダプティブ・パーティションを用いることが好適であり得る。典型的な担保されたバジェットに沿う3つのアダプティブ・パーティションは、以下を含み得る。
・ルーティング・パケットに対するアダプティブ・パーティション(80%シェア)
・トポロジー・プロトコルに対するアダプティブ・パーティション(15%シェア)、但し、スレッドの最高優先順位はルーティング・パケットに対するアダプティブ・パーティション内のスレッドよりも高いものとする
・ルーティング計量とトポロジー・プロトコルの両方のロギングに対するアダプティブ・パーティション(5%シェア)。
アダプティブ・パーティションのスケジューリングは、この場合、全システム機能がCPU実行時間を付与されることを保証されている間、高CPU負荷の期間に、ある種の機能が優先順位を付与し、様々なシステム機能を認識させるために使われている。ルーティングに関連したスレッドおよびロギング・ルーティング測定に関連したスレッドは、それらはルーティング動作に機能的に関係しているという事実にもかかわらず、分離したアダプティブ・パーティションに関連している。同様に、機能的に関係していない2つのコンポーネント、すなわちルーティング・メトリック・ロギングとトポロジー・メトリック・ロギングは同じアダプティブ・パーティションに関連している。様々なスレッドを異なるパーティションに割り当てる上記の仕方は、高CPU負荷条件下でロギングスレッドによってプロセス・スケジューラ130がCPU時間の利用を減らすことを可能にし、依然としてメトリック・ロギングを誘導している間にルーティング・スレッドとトポロジー・プロトコル・スレッドとに優先順位を付与する。
ブロック225において、システムのどのスレッドが臨界状態で実行することが許容され得るかの決定が行われ得る。スレッドを臨界状態として指定することで、ともするとアダプティブ・パーティション・バジェットに対して担保されたバジェットが超過している場合でさえも、リアルタイム・システムに近似した仕方で実行する能力を、スレッドに付与する。特定のアダプティブ・パーティションに関連した臨界スレッドが、上記アダプティブ・パーティションに対する担保されたバジェットが不足しているにも関わらず走っているとき、上記アダプティブ・パーティションは短期債務に陥っていると呼称される。臨界スレッドは、様々なパーティション、例えばブート時間に関連し得る。臨界スレッドは、以下でより詳細に議論される。
臨界スレッドに関連したアダプティブ・パーティションの各々はブロック235において臨界時間バジェットを割り当てられる。上記臨界時間バジェットは、例えば、時間単位では、ミリ秒単位で指定され得る。典型的なシステムでは、上記臨界時間バジェットは、付与されたアダプティブ・パーティションに関連した臨界スレッドの全てに利用可能であり、平均ウィンドウの間の上記担保された時間バジェットを上回る、CPU時間の長さである。臨界指定および臨界時間バジェットを用いることにより、臨界スレッドは、一般に、関連したアダプティブ・パーティションが担保されたバジェットを使い果たした場合でさえも、CPU上で実行する機会を有することになる。このことは、上記パーティションが利用可能な臨界時間バジェットを依然として有する間は起こり得る。臨界スレッドは、これらのパーティション内でリアルタイムに実行する能力を提供し得る。
ブロック240において、プロセス・スケジューラ130が従うべき様々なポリシー(policies)が、システム100に随意的に割り当てられ得る。例えば、上記システム100および/またはプロセス・スケジューラ130が上記アダプティブ・パーティションの破産状態を如何に扱うかを決定するために、破産ポリシーが1つ以上のアダプティブ・パーティションに適用され得る。アダプティブ・パーティションが平均ウィンドウの継続時間の間に担保されたCPU時間バジェットと臨界時間バジェットの両方を使い果たしている場合に、臨界アダプティブ・パーティションの破産が発生する。更なる例として、システム100は、プロセス・スケジューラ130を有するレジスタに対するプロセスを可能にする、システムのオーバーロードが発生した場合に通知されるようなオーバーロード通知ポリシーを実行し得る。システムのオーバーロードは、例えば、上記平均ウィンドウ継続時間の間に、準備完了状態にある全スレッドがCPU上で実行され得ない場合に発生する。システム100がオーバーロード状態に入る、および/または、オーバーロード状態から抜け出す場合、プロセスはオーバーロード情報を登録し得る。アプリケーションは、例えば、より重要度が低い機能をスキップすることによって、または、計算精度を低くすることによって、自らの仕事(service)を上品に(gracefully)低下させるために、上記オーバーロード通知を使用する。以下で述べられるように、アダプティブ・パーティションは、他のアダプティブ・パーティションがスリープ(sleep)している場合に、バジェットを超過(go over)する。必ずしもこのこと自体がシステムのオーバーロードとして考えられるわけではないので、オーバーロード通知ポリシーの開始を要求しない。
ブロック245において、プロセス・スケジューラ130には前述の状態に対応するデータ、ブロック205から240を通して提供された値、および/または、割り当てが備えられている。上述のように、これらの状態、値、および/または、割り当ては、多数の異なる様態、例えば、システム設計者によって、システムユーザによって、他のソフトウェアプログラム等を介して、システム100内で用いられるように提供され得る。
ブロック250は、ブロック245の構成データに従った、スレッドの実行を表している。様々なアダプティブ・パーティションの属性は、動的であり得る。このため、
ブロック205に戻る矢印(flow line)によって表されているように、前述の1つ以上のブロックで示されているパラメータは、システム要求、システム状態、システム機能の変化、等に応答して変化し得る。
システム100内のスレッドはまた、時間が経つと、動的にも変動し得る。例えば、アダプティブ・パーティションに関連したスレッドまたはスレッドのグループは、動作中に他のスレッドを生み出す(spawn)、または生成(generate)し得る。当初のスレッドは、親スレッド(parent thread)と呼称され、一方で、引き起こされたスレッドは、子スレッド(child thread)と呼称され得る。プロセス・スケジューラ130は、子スレッドが親スレッドのアダプティブ・パーティションを自動的に引き継ぐように構成され得る。代替的に、または追加的に、他のアダプティブ・パーティション内にスレッドを生むことを可能にし得るAPIが提供され得る。そのようなAPIは、十分な権限を有するコードに対してのみ都合が良いように構成され得る。例えば、システム・アプリケーション・ラーンチャがそのような権限を有し得る。
図3は、どのパーティションも自らのCPUバジェットを超えない通常負荷条件(normal load condition)の下で、プロセス・スケジューラ130が動作し得る、一つの様態を示している。この例では、プロセス・スケジューラ130は3つのアダプティブ・パーティション301,302、および303を生成している。アダプティブ・パーティション301は、マルチメディア・アプリケーションのスレッド305,306,307、および308に関連し得る。アダプティブ・パーティション302は、Java(登録商標)アプリケーションのスレッド315,316,317,318、および319に関連し得る。アダプティブ・パーティション303は、システム・ロギング・アプリケーションのスレッド320,325,330,335、および340に関連し得る。スレッド305〜345は、様々なスケジューリング・プロパティを有し、上記スケジューリング・プロパティは、図3では括弧で記され、関連したアダプティブ・パーティションの担保されたバジェットとは、独立であり得る。
動作中、各アダプティブ・パーティション301〜303とスレッド305〜345は、異なる動作状態にあると仮定し得る。アダプティブ・パーティション301〜303は、例えば、アクティブ状態またはスリープ状態で動作し得る。動作状態では、上記アダプティブ・パーティションのスケジューリング属性は関連したスレッドに対するCPU時間をスケジュールするために用いられ得る。スリープ状態は、アダプティブ・パーティションに関連した準備完了状態のスレッドが存在しない場合に起こる。そのような場合では、プロセス・スケジューラ130は、アダプティブ・パーティションを存在しないものとして効果的に取り扱う。
スレッドは、例えば、ランニング状態(running state)、準備完了状態、またはブロック状態(blocked state)であると仮定し得る。スレッドは、CPUによって実行されている間はランニング状態にある。プロセス・スケジューラ130によって決定される時間においてCPUによってスレッドを実行するのに準備万端な状態にすることを満足しているとき、準備完了状態にある。スレッドは、1つ以上のイベントの発生を待機している間、ブロック状態にある。ブロック状態の間、上記スレッドはいかなるCPU資源を消費するのにも準備完了ではない。一旦、スレッドによって待機されているイベントが発生すると、スレッドはブロック解除(unblocked)され、準備完了状態またはランニング状態に入り得る。
アダプティブ・パーティション301〜303および対応するスレッド305〜345は、様々な負荷条件の間のプロセス・スケジューラ130の動作を記述するのに用いられ得る。この例では、上記プロセス・スケジューラ130は、CPUを、準備完了スレッドの優先順位に基づいて、各アダプティブ・パーティション301,302、および303に割り当てられた準備完了スレッド308,315、および345を実行するために利用出来るようにする。通常負荷条件下では、システム100内の最高位の優先順位にあるスレッドは、準備完了状態になると直ちに実行し得る。スレッドが準備完了であるかどうかは、例えば遮断現象または類似のものの発生を介する仕方を含む多数の異なる仕方を通して、プロセス・スケジューラ130に示唆され得る。図示されている例では、最高位の優先順位にある準備完了スレッドは、優先順位17を有するスレッド345である。スレッド345は、終了(finished)、ブロックされる(blocked)まで、または、アダプティブ・パーティション303に対するバジェットが使い果たされるまで、ランニング状態で動作し続け得る。重負荷(heavy load)の下では、アダプティブ・パーティションは、自身のCPUバジェットを超過すると、その最高位の優先順位にあるスレッドは、上記パーティションがCPUバジェット内で利用可能な時間を再び有するまで走らない。このことは、足りないCPU時間をパーティション301,302、および303に分け与える、システム100上の安全措置である。この状態では、上記プロセッサは、自身の担保されたCPU時間バジェット内に残っているCPU時間でアダプティブ・パーティション内の最高優先順位にあるスレッドを実行させる。
アダプティブ・パーティションがスリープ状態に入ると、プロセス・スケジューラ130は、スリープしているパーティションのCPUバジェットを、他のアクティブなアダプティブ・パーティションに割り当てる。上記他のアクティブなアダプティブ・パーティションが自身のバジェットを超過している場合でも、同様である。例えば、アダプティブ・パーティション303がスリープ状態に入った場合、上記プロセス・スケジューラ130は、アダプティブ・パーティション303に対するバジェットを、アダプティブ・パーティション302に割り当てる。これは、アダプティブ・パーティション302が最高優先順位にある準備完了スレッド315を有しているためである。2つ以上のアダプティブ・パーティションが最高優先順位が同じであるスレッドを有している場合、プロセス・スケジューラ130は、その他のアダプティブ・パーティションの割合に比例して自由時間(free time)を分け与える。この割り当ては、2つのアダプティブ・パーティションが同じ優先順位を有している場合に、準備完了キュー遅延時間(ready−queue delay times)が長くならないようにするのに役立つ。
図4の例では、それぞれが70%、20%、および10%のCPUバジェット担保を有する、3つのアダプティブ・パーティション401,402、および403が存在する。更に、各アダプティブ・パーティション401,402、および403は、優先順位14を有する準備完了スレッド408,415、および445を含んでいる。アダプティブ・パーティション401がスレッド408のブロックを介してスリープ状態に入ると、プロセス・スケジューラ130は、当初のCPUバジェット割り当てに対応する比率である2:1の比率で、利用可能なCPU時間の全てをアダプティブ・パーティション402と403に割り当てる。短い時間の間、アダプティブ・パーティション401がスリープ状態にあると、上記プロセス・スケジューラ130は、アダプティブ・パーティション402と403がパーティション401の消費で利用されたCPU時間を返済出来るようにCPU資源を再割り当てすることによって、アダプティブ・パーティション401が、その後、自身に担保されたCPU時間バジェットでCPU時間を受け取ることを保証し得る。長い時間の間、アダプティブ・パーティション401がスリープ状態にあると、アダプティブ・パーティション402と403によって用いられた時間の一部または全部が自由になり得る。アダプティブ・パーティションが短い時間、または長い時間の間にスリープ状態にあるかどうかは、様々な仕方で決定され得る。例えば、アダプティブ・パーティションは、1つの平均ウィドウの範囲から(windowsize)−(budgetpercentage*windowsize)だけ短い継続時間の間にスリープ状態にある場合、短い時間の間スリープ状態にあると呼称され得る。
全アダプティブ・パーティションが自身のCPUバジェットのリミットにあると、プロセス・スケジューラ130はシステム100内の最高位の優先順位にあるスレッドの実行を指定し得る。2つのアダプティブ・パーティションが最高位の優先順位が同じであるスレッドを有している場合、自身のバジェットに対して使った時間の比率が最も小さいアダプティブ・パーティションが実行し得る。この動作の仕方は、さもなくば発生し得る長時間の準備完了キューの遅延を回避するために使用され得る。図4に示されている例では、ウィンドウサイズは100ミリ秒単位であり得、アダプティブ・パーティション401はCPUバジェットの70%を割り当てられ40ミリ秒を使っており、アダプティブ・パーティション402はCPUバジェットの20%を割り当てられ5ミリ秒を使っており、アダプティブ・パーティション403はCPUバジェットの10%を割り当てられ7ミリ秒を使っている。パーティションの全ては、優先順位14の準備完了スレッドを有する。この状況では、アダプティブ・パーティション401に対する相対比が40ms/70ms、あるいは0.57であり、アダプティブ・パーティション403に対する相対比が7ms/10ms、あるいは0.7であるのに対し、アダプティブ・パーティション402に対する相対比が5ms/20ms、あるいは0.25であるため、アダプティブ・パーティション402のスレッド415が実行する。
アダプティブ・パーティションが割り当てられたCPUバジェットを拡張されており、1つ以上の準備完了スレッドが臨界的であるとして指定されている場合、プロセス・スケジューラ130は、上記アダプティブ・パーティションが臨界的なスレッドを走らせるために臨界的なCPUバジェットを用いることを許容し得る。臨界的な時間バジェットとは、上記アダプティブ・パーティションに関連した臨界スレッドの全てを走らせるために上記プロセス・スケジューラ130がアダプティブ・パーティションに割り当てる、CPU時間の長さである。このCPU時間バジェットは、上記プロセス・スケジューラ130が、アダプティブ・パーティションに対し、平均ウィンドウの間に上記パーティションの通常バジェットを割り当てるCPU時間の構成要素となる。結果として、臨界的なスレッドは、関連したアダプティブ・パーティションがバジェットを切らしている場合でさえ、アダプティブ・パーティションが自身の臨界時間バジェットを使い果たしていない場合と同様に実行し得る。
図5は、2つのアダプティブ・パーティション501と502を有するシステムを図示している。スレッド505,506,507、および508は、アダプティブ・パーティション501に関連しており、一方で、スレッド515,516,517,518、および519は、アダプティブ・パーティション502に関連している。アダプティブ・パーティション501は、例えばエアバッグ・ノーティフィケーション・プロセス(airbag notification process)に関連した関連したスレッドを備え得る。アダプティブ・パーティション501のスレッド505と508は、臨界スレッドとして半ば指定されている。しかしながら、スレッド508のみが準備完了状態にある。
この例では、アダプティブ・パーティション501は自身に担保されたCPU時間バジェットを使い果たしている。それにも関わらず、臨界指定を通して重点を置かれているため、臨界スレッド508は実行することを許容され得る。結果として、上記プロセス・スケジューラ130は、アダプティブ・パーティション501の臨界時間バジェット内にCPU時間が依然として存在している場合に、CPU時間を臨界スレッド508に割り当てられる。
プロセス・スケジューラ130が臨界スレッド、例えば508のようなスレッドの動作をスケジュールする場合、上記プロセス・スケジューラは、上記スレッドに関連したアダプティブ・パーティションの入手可能な担保されたCPU時間バジェットに上記スレッドのランタイムを請求する。しかしながら、上記プロセス・スケジューラ130は、上記プロセス・スケジューラ130が臨界スレッドを走らせ得ない場合に限って、上記アダプティブ・パーティションの臨界時間バジェットの代わりに、上記臨界スレッドによって用いられたCPU時間をカウントする。このため、上記臨界スレッドを実行する際に用いられたCPU時間は、次の場合に、関連したアダプティブ・パーティションの臨界時間バジェットの代わりにはカウントされない。1)システムがオーバーロードされていない、2)システムはオーバーロードされているが1つ以上のアダプティブ・パーティションが自身に担保されたCPU時間バジェットを使い果たし得ない。
臨界スレッドは、ブロッキング状態に入るまで、臨界的実行状態(critical running state)のままであり得る。すなわち、他の任意のスレッドと同様に、実行状態または準備完了状態から離れ得る。上述のように、このことは、上記スレッドがメッセージを待つ間、通知を妨げる間、等に発生し得る。スレッドの臨界性、またはアダプティブ・パーティションの臨界時間バジェットを請求することは、優先順位の引継ぎを引き起こす動作の間のアダプティブ・パーティションと共に引き継がれ得る。
短期債務は、パーティションに対して指定された臨界時間バジェットによって制限される。時間が経つと、上記パーティションは短期債務を返済するように要求され得る。上記アダプティブ・パーティションの臨界バジェットを超過している臨界スレッドは、関連したアダプティブ・パーティションを破産に追いやると考えられ得る。破産はアプリケーション・エラーとして扱われ得、デザイナーは上記システムの返答を指定し得る。返答に対する典型的な選択は、1)システムをリブートさせること、2)内部または外部のシステム・ウォッチドッグ(system watchdog)を通知すること、および/または、3)別の指定されたプロセスを終了すること、および/または、通知すること、を含む。上記システムは、アダプティブ・パーティションが自身の臨界的な時間バジェットを使い果たした場合、ログ(log)等へのエントリーを追加し得る。上記アダプティブ・パーティションに対するバジェットが、(例えば、モード変更、CPU比率を変更するためのAPIコール、等を介して)動的に変更される場合、上記プロセス・スケジューラ130は、アダプティブ・パーティションが破産しているかについてテストをする前に、遅延を賦課し得る。このことは、アダプティブ・パーティションが破産を宣言される前に、バジェットを安定化させることを可能にする。
臨界スレッドの指定は、多数の異なる仕方で起こり得る。例えば、上記システムは、I/O割り込みによって開始されるスレッドを、臨界的になるように自動的にマスクする。上記システムはまた、追加的なアプリケーション、または、例えば、自身に関連したハンドラ・スレッドを臨界的であるとしてマーク(mark)し得るタイマーのような、オペレーティングシステム通知イベント(operating system notification events)のセットを指定し得る。APIはまた、選択されたスレッドを臨界的であるとしてマークするためにも用いられ得る。更に、臨界的な親スレッドの子スレッドは、自動的に臨界的であるとして指定され得る。
プロセス・スケジューラ130はまた、メッセージが1つ以上の送信/クライアント・スレッドを通り、1つ以上の受信/サーバ・スレッドによって受け取り・処理される、クライアント/サーバ・システムにおいて用いるようにも構成され得る。図6は、上記のようなクライアント/サーバ環境においてプロセス・スケジューラ130を実行させるために用いられ得る、相互関係を有する多数のプロセスを示している。ブロック605では、第1のアダプティブ・パーティション内にあるクライアント・スレッドは、第2のアダプティブ・パーティション内にあるサーバ・スレッドにメッセージを送信する。クライアント・スレッドがサーバ・スレッドにメッセージを送信すると、上記メッセージを受信するサーバ・スレッドは、上記送信スレッドの優先順位を引き継ぎ得る。このことは、上記サーバ・スレッドが送信クライアントの代わりに仕事をしているため、優先順位の転換を回避させる。上記サーバ・スレッドによる上記送信スレッドの優先順位レベルの引継ぎは、ブロック610に示されている。上記プロセス・スケジューラ130はまた、ブロック610において、臨界スレッドと同じ臨界状態をサーバ・スレッドに割り当てられる。ブロック615において、上記プロセス・スケジューラ130は、上記サーバ・スレッドを上記クライアント・スレッドに関連したのと同じアダプティブ・パーティションに関連付け
られる。
図7は、図6に示されるオペレーションのいくつかの局面を説明するために用いられ得るシステムを図示している。この例では、3つのアダプティブ・パーティション701,702、および703がある。アダプティブ・パーティション702は、例えば、ファイルシステムによって処理される、実行タイプの(of the type run)サーバ・スレッド720と725を含む。アダプティブ・パーティション702に割り当てられた属性は、システムの設計によって変動し得る。しかしながら、この例では、アダプティブ・パーティション702はCPU時間バジェットがゼロであるように生成されており、スレッド720と725はデフォルトの優先順位7を割り当てられている。アダプティブ・パーティション701は、多数の異なるスレッド705,710、および715を備え得、スレッド715は、アダプティブ・パーティション702の1つ以上のサーバ・スレッドへメッセージを送信するクライアント・スレッドの構成要素となる。同様に、アダプティブ・パーティション703は、多数の異なるスレッド730,735,740、および745を備え得、スレッド745は、アダプティブ・パーティション702の1つ以上のサーバ・スレッドへメッセージを送信するクライアント・スレッドの構成要素となる。
図7の直線750に示されるように、クライアント・スレッド715は、アダプティブ・パーティション702のスレッド720によって受信、あるいは、処理されることになるメッセージを伝えている。同様に、直線755として示されているように、アダプティブ・パーティション703のクライアント・スレッド745は、アダプティブ・パーティション702のスレッド725によって受信、あるいは、処理されることになるメッセージを伝える。メッセージの転送750と755が発生すると、プロセス・スケジューラ130は、サーバ/受信の各々をメッセージを送信するスレッドのアダプティブ・パーティションに関連付ける。そのような場合、直線760によって示されているように、サーバ・スレッド720は一時的にアダプティブ・パーティション701に関連し、スレッド715と同じ優先順位14を割り当てられる。同様に、直線765に示されるように、サーバ・スレッド725は一時的にアダプティブ・パーティション703に関連し、スレッド745と同じ優先順位12を割り当てられる。スレッド720と725の両方は、準備完了状態に置かれ得、一方で、各メッセージが処理されるように、スレッド715と745はブロック状態に置かれ得る。一旦、スレッド720がスレッド715から受信したメッセージの処理を完了すると、スレッド720は、デフォルトの優先順位7を有するアダプティブ・パーティション702に関連した、自らのオリジナルな状態に戻り得る。スレッド725もまた、一旦スレッド745から受信したメッセージの処理が完了すると、デフォルトの優先順位7を有するアダプティブ・パーティション702に関連した、自らのオリジナルな状態に戻り得る。
クライアントスレッドは、時々、既に他のクライアント・スレッドから受信した1つ以上のメッセージを処理するのに忙しいサーバ・スレッドと通信しようとする。例えば、サーバ・スレッド725がスレッド745から受信した1つ以上の優先するメッセージを処理するのに忙しい間に、アダプティブ・パーティション703のスレッド740がブロック解除され、サーバ・スレッド725にメッセージを送信しようとする場合、サーバ・スレッド725は、一般に、クライアント・スレッド745からの優先するメッセージを処理することを完了するまでスレッド740へ返答することが不可能であり得る。そのような場合、上記プロセス・スケジューラ130は、例えば、上記クライアント・スレッドと同じ通信経路に仕える1つ以上のサーバ・スレッドの優先順位を一時的に上げ得る。これらのオペレーションに対応するクエリー(query)とアクション(action)は、図6のブロック620と625に図示されている。図7のシステムに適合しているように、アダプティブ・パーティション703に割り当てられているスレッドとアダプティブ・パーティション702に割り当てられているスレッドとの間の通信経路は、例えば、同じ識別名/識別番号を割り当て得る。結果として、サーバ・スレッド725の優先順位は、クライアント・サーバ740からのメッセージを処理するためにサーバ・スレッド725が利用可能となる前に発生し得る待ち時間を減らすために上げられ得る。アダプティブ・パーティション702内のスレッドの性質に応じて、複数のサーバ・スレッドの優先順位のレベルが上げられ得る。
図6のブロック630において、プロセス・スケジューラ130は、適切な仕方でスレッド720と725の各々に対して、実行時間を請求するように動作する。上記の実行時間を請求するための適切な仕方は、変動し得る。ある仕方は、送信スレッドに関連したアダプティブ・パーティションのCPUバジェット、および/または、臨界CPUバジェットに対して受信スレッドの実行時間を照会することを含む。図7の例では、スレッド715によって送信されたメッセージに応答してスレッド720によって用いられる実行時間は、アダプティブ・パーティション701のCPUバジェット、および/または、臨界CPUバジェットに不利となり得る。同様に、スレッド745によって送信されたメッセージに応答してスレッド725によって用いられる実行時間は、アダプティブ・パーティション703のCPUバジェット、および/または、臨界CPUバジェットに不利となり得る。
ファイル・システム、デバイスドライバ、等のシステム・コンポーネントは、担保されたCPU時間をゼロに割り当てられ得る。そのような場合、上記システム・コンポーネントに関連するスレッドによって用いられるCPU時間は、それらのクライアントに請求される。しかしながら、時々、プロセス・スケジューラ130は、特定のシステム・コンポーネント・スレッドが結局のところどのスレッドのために働いているかを見出すことが遅すぎることを見出す。結果として、上記プロセス・スケジューラ130は、時宜にかなった仕方で上記システム・コンポーネントのスレッドの稼動を請求すること、および/または、適切なアダプティブ・パーティションを請求することが不可能となり得る。更に、デバイスドライバのようないくつかのシステム・コンポーネントは、特定のクライアントに帰属することが出来ないバジェットを要求する、(例えば、監視または維持のための)バックグラウンド・スレッド(background thread)を有し得る。そのような場合、システムデザイナーは、バックグラウンド・オペレーションと、様々なシステム・コンポーネントに関連付けられた属性付けられない負荷を計測し得る。上記の計測結果は、様々なシステム・コンポーネントのスレッドに関連したアダプティブ・パーティションにゼロでないバジェットを提供するために用いられ得る。
動作中、プロセス・スケジューラ130は、単に、バジェットに残された担保されたCPU時間を有するアダプティブ・パーティションに関連した最高優先順位の準備完了スレッドを稼動させるだけにはとどまらない。例えば、全てのアダプティブ・パーティションがほぼ同時に担保されたCPU時間を使い果たしてしまった場合、上記プロセス・スケジューラ130は、関連したアダプティブ・パーティションの属性に関係なくシステム内の最高優先順位のスレッドを稼動させる。更に、アダプティブ・パーティションが最高優先順位が同じであるスレッドを有している場合、上記プロセス・スケジューラ130は担保されたCPU時間の割合を表す比を用いてCPU時間を割り当てし得る。最終的に、臨界スレッドは、上記アダプティブ・パーティションが依然として臨界時間バジェットを処理している時は、自身のアダプティブ・パーティションがバジェットを切らした場合さえ、稼動し得る。
プロセス・スケジューラ130は、各アダプティブ・パーティションに関連した1つ以上の順序化関数(ordering functions)f(ap)を用い得る。順序化関数は様々な異なる仕方で計算され得る。順序化関数の計算によって得られた結果は、上記プロセス・スケジューラ130がシステムの様々なアダプティブ・パーティションに関連したスレッドを如何にスケジュールするかを決定するために、それぞれがお互いに比較され得る。
順序化関数f(ap)を計算する際、多数の異なる変数が用いられ得る。ここでは、種々の変数が1つの例に関連して述べられている。以下の例では、「is_critical(ap)」をブール変数とする。「is_critical(ap)」の値は、1)アダプティブ・パーティション、すなわちapが利用可能な臨界バジェットを有するかどうかと、2)上記アダプティブ・パーティション、すなわち、ap内にある最高優先順位の準備完了スレッドが、臨界状態を割り当てられているかどうか、に依存する。「has_budget(ap)」をアダプティブ・パーティションapが先の平均ウィンドウの間に担保されたCPU時間バジェットよりも短いCPU時間を消費しているかどうかを示唆するブール変数とする。「highest_prio(ap)」をアダプティブ・パーティションap内の稼動準備が整ったスレッド全ての中での最高優先順位を示唆する整数変数とする。「relative_fraction_used(ap)」を、先の平均ウィンドウの間にアダプティブ・パーティションapによって消費されたCPU時間のミリ秒数をアダプティブ・パーティションapのバジェットを例えばミリ秒数で表したもので割った比に対応する、実数変数とする。最後に、b(ap)を、上記アダプティブ・パーティションap内のスレッドによるCPU時間消費の現行比率に対応するブール変数とする。更に詳しくは、b(ap)は、上記パーティションapに関連したスレッドによるCPU時間消費の現行比率が与えられた場合に真の論理値を割り当てられ得、has_thread(ap)の値もまた、上記プロセス・スケジューラ130が上記アダプティブ・パーティションに関連したスレッドを再びスケジュールするように求められそうな時に、真の論理値を取り得る。
そうでない場合、b(ap)は、負の論理値を割り当てられ得る。先の全ての変数ではないその他の変数が順序化関数f(ap)を計算するために用いられる得ることが理解され得る。どの変数を用いるかは、システムデザイナー、および/または、エンドユーザに依存する。
b(ap)の値は、多数の異なる仕方で計算され得る。例えば、変数tが高分解能のカウンター内の現在の時間を示唆するとし、チック(tick)はプロセス・スケジューラが全パーティションを検査する通常イベント(regular event)の間の時間の長さであるとする。チックの期間は平均ウィンドウのサイズ(「windowsize」)よりも短くあり得る。関数cpu_time_used(t1,t2)は、絶対時間t1とt2の間にパーティションapのスレッドによって用いられたCPU時間の実質的な値に対応しているとする。更に、budget(ap)はパーティションapに対して担保されたバジェットの時間値に対応しているとする。従って、b(ap)の値は以下の式を用いて計算され得る。
b(ap)=Boolean(cpu_time_used(now,now−windowsize)−cpu_time_used(now−windowsize+tick,now−windowsize)<budget(ap))。
上述の変数を用いて順序化関数f(ap)を計算するための1つの仕方は、図8に示されている。図示されているオペレーションは、システム100内で使用される各アダプティブ・パーティションapを実行し得る。図のように、ブロック800において、プロセス・スケジューラ130は上記パーティションが稼動するのに準備完了なスレッドを有するかどうかを判断する。上記アダプティブ・パーティションapに関連した準備完了スレッドが存在しない場合、上記アダプティブ・パーティションに対する順序化関数f(ap)はブロック802において値f(0,0,0,0)を割り当てられ得、ブロック803において次のアダプティブ・パーティションに対する順序化関数の計算が開始され得る。上記プロセス・スケジューラ130は、上記アダプティブ・パーティションapが利用可能な臨界CPUバジェットを有するかどうかをブロック805で判断し、もしそうならば、上記アダプティブ・パーティションap内の最高優先順位にある準備完了スレッドが臨界状態を割り当てられているかどうかを判断する。この判断に基づき、上記プロセス・スケジューラ130は、ブロック810において、変数「is_critical(ap)」に適切な論理状態を割り当てる。ブロック813において、上記プロセス・スケジューラ130は、先の平均ウィンドウの間に上記アダプティブ・パーティションによって用いられたCPUバジェットを評価する。ブロック815において、上記プロセス・スケジューラ130は、上記アダプティブ・パーティションが自身に担保されたCPU時間バジェットよりも短いCPU時間を使っているかどうかを判断する。この判断に基づき、上記プロセス・スケジューラ130は、ブロック820において、変数「has_budget(ap)」に適切な論理状態を割り当てる。ブロック813で得られた値を取り、それをアダプティブ・パーティションに対する担保されたCPUバジェット時間で割ることによって、先の平均ウィンドウの間に用いられたCPUバジェット時間の相対比は、ブロック830において計算される。この値は、ブロック835において、変数「relative_fraction_used(ap)」に割り当てられる。
ブロック840において、プロセス・スケジューラ130は、アダプティブ・パーティションに関連したスレッドによるCPU時間消費の現行比率に対応する1つ以上の値を計算する。これらの値は、ブロック845において、変数b(ap)に対し適切な論理状態を割り当てるのに用いられる。
上述の変数の全て、または一部を用いることによって、所与のアダプティブ・パーティションapに対する順序化関数f(ap)がブロック850において計算される。この例では、順序化関数f(ap)は、順序の入った変数(x,a,y,z)を用いることによって計算される。ここに、x=is_critical(ap) OR has_budget(ap)、a=(Not x) AND b(ap)、y=highest_prio(ap)、z=1−relative_fraction_used(ap)である。順序化関数f(ap)を計算する際、xの値はa,y,またはzの値よりも高い重要度を付与されており、aの値はy,zの値よりも高い重要度が付与されており、yの値はzの値よりも高い重要度が付与されている。
図9のブロック905に示されているように、プロセス・スケジューラ130は、最も大きなf(ap)を有するアダプティブ・パーティションの最高優先順位にあるスレッドを稼動させる。しかしながら、上記プロセス・スケジューラ130は、上記スレッドの実行時間が上記アダプティブ・パーティションの臨界バジェットに割り当てられることになるか、単に担保されたバジェットに割り当てられることになるかを判断しなくてはならない。このため、上記プロセス・スケジューラ130は、上述の変数の1つ以上を使って、別の関数fcritical(ap)を計算しなければならない。この例では、fcritical(ap)は、順序が入った変数(w,d,y,z)を用いて計算される。ここに、w=has_budget(ap)、d=(NOT w)AND b(ap)、y=highest_prio(ap)、z=1−relative_fraction_used(ap)である。fcritical(ap)を計算する際、変数wはd,y,またはzの値よりも高い重要度が付与されており、dの値はyまたはzの値よりも高い重要度が付与されており、yの値はzの値よりも高い重要度が付与されている。この計算は、ブロック910に示されている。上記アダプティブ・パーティションに対する値fcritical(ap)とf(ap)の比較は、ブロック915で行われる。fcritical(ap)の値がf(ap)の値よりも小さい場合、上記スレッドに対する実行時間は、ブロック920において上記アダプティブ・パーティションの臨界バジェットに請求され、同様に、ブロック925において担保されたバジェットに請求される。fcritical(ap)の値がf(ap)の値以上である場合、上記スレッドの実行時間は、ブロック925において、単に上記アダプティブ・パーティションの担保されたバジェットに請求される。上記プロセス・スケジューラ130によって用いられる任意の計算結果は、上記アダプティブ・パーティションに対する臨界バジェットが、上記アダプティブ・パーティションに関連する最高優先順位の臨界スレッドが臨界的でないスレッドまたはパーティションを有するプロセス・スケジューラ130によって稼動するようには選択され得ない場合に限って用いられることを保証する。
図10は、図8のブロック830に記述されている先の平均ウィンドウの間に消費されたCPUバジェット時間の相対比を計算する方法を実行するのに用いられ得る、多数の異なる相互関係を有するプロセッサを示している。アダプティブ・パーティションによって消費された相対比CPUバジェット時間は、例えば、上記アダプティブ・パーティションに関連したスレッドが先の平均ウィンドウの間に稼動しているミリ秒数をミリ秒単位の平均ウィンドウのシェアで割ったものである。代替的に、このことは、(total_CPU_time_consumed)/(windowsizepercentage)として表し得る。フローティング・ポイント・ディビジョンに対する潜在的な需要を減らすために、プロセス・スケジューラ130は、各アダプティブ・パーティションに対して実質的に(total_CPU_time_consumed)/(windowsizwpercentage)と同じ順序性を有する数を計算し得る。従って、定数c(a)は、最大の(total_CPU_time_consumed)c(ap)の有するアダプティブ・パーティションが、最大の(total_CPU_time_consumed)/(windowsizepercentage)を有するアダプティブ・パーティションにもなるように、あらかじめ計算されている。
関数c(ap)は、例えば、システムのスタートアップの間、および、担保されたCPUバジェットがシステムの様々なアダプティブ・パーティションの間に再割り当てされる時ならいつでも、あらかじめ計算され得る。ブロック1010において、例えば、スタートアップ時に、各アダプティブ・パーティションに対するCPUバジェット比率が決定される。ブロック1015において、上記システムは、各アダプティブ・パーティションに対して因子q(ap)を計算し得る。q(ap)の値は、例えば、その他のアダプティブ・パーティション全てのCPUバジェット比率の積として計算され得る。ブロック1020において、倍率が計算される。この例では、平均誤差の最大値がmax_error(例えば、1/2パーセント対して0.005)の場合、k=min(list of q(ap))max_errorとなる。一定の倍率c(ap)がステップ1025において計算される。この例では、c(ap)はc(ap)=q(ap)/kとして計算される。(total_CPU_time_consumed)c(ap)の値は、max_errorの許容誤差範囲内で、(total_CPU_time_consumed)/(windowsizepercentage)と同じ順序性を有する。
異なるアダプティブ・パーティションによって用いられている相対比を実質的に比較するために、上記プロセス・スケジューラ130は、上記アダプティブ・パーティションに関連したスレッドの実行時間にc(ap)を掛けることを要求し得る。しかしながら、請求される時間は、長い時間であり得る。上記プロセス・スケジューラ130がこれらの計算に関する単一または複数の命令を実行することになる場合、ブロック1030において、請求される時間は、CPUバジェット時間の最上位ビット数を選択することによって、まずは拡大縮小され得る。拡大縮小の比率は、max_errorの値によってセットされ得る。しかしながら、max_errorに対するいかなる妥当な選択(例えば、1/2%から1/4%)も、請求された実行時間の最上位16ビットのみを選択することによって、満足され得る。そのような場合、システムは(total_CPU_time_consumed)>>32c(ap)を計算し得る。ブロック1035において、相対バジェット比がc(ap)*(adaptive partition excecution time)として計算される。ここに、(adaptive partition excecution time)は、選択された数の(total_CPU_time_consumed)の最上位ビットを構成する。
0.5%から0.25%の許容誤差は、実行に当たっては十分であると考えられる。しかしながら、アプリケーションは、指定された任意の許容誤差に対して、先の平均ウィンドウサイズの間にアダプティブ・パーティションapによって実行されるCPU時間を拡大縮小した値である最小ビット数が、c(ap)と、c(ap)の積と、拡大縮小されたCPU時間を表すために選ばれるという概念を含み得る。上記最小ビット数は、乗法関数(multiplication function)を表現し、実行するために、表現と算術的誤差の全てが選択された許容誤差以下であるように選ばれる。
システム内の各アダプティブ・パーティションに対するCPU時間の請求は、多数の異なる仕方で実行され得、プロセス・スケジューラ130の動作中に何回も起こり得る。例えば、アダプティブ・パーティションの請求は、以下の場合ではいつでも起こり得る。1)スレッドがブロック状態からスタートする場合、2)スレッドが実行を停止する場合(すなわち、優先順位の高いスレッドに明け渡される場合、ブロックされている場合、等)、および/または、3)別の時に、CPU時間の正確なカウントが上記プロセス・スケジューラ130によって要求される場合。
通常、プロセス・スケジューラは、スレッドがCPUをどれだけ長く使ったかを判断するために、標準的なタイマー割り込み、またはチックを用いる。チック期間は、大抵、1ミリ秒から数ミリ秒単位である。
しかしながら、プロセス・スケジューラ130は、システムの様々なスレッドの実行時間を効率的に請求するコードを含み得る。このために、実質的にチック期間よりも短い期間を有する高分解能のハードウェア、および/または、ソフトウェアカウンターが用いられ得る。スレッドが実行を開始または停止するたびに、上記プロセス・スケジューラ130は、高分解能のカウンターの値に対応する、関連したパーティションにタイムスタンプを割り当てる。上記タイムスタンプの値は、利便性のある共通の時間単位に倍率をかけられる。スレッドの隣接した開始と停止に対するタイムスタンプの間の差は、適切なアダプティブ・パーティションを請求するために用いられる。
高分解能のカウンターは、多くの異なる仕方で実装され得る。例えば、いくつかのCPUは、CPUが稼動するクロック周波数を増加させる、内蔵型のカウンターを有する。そのような状況では、内蔵型のカウンターは、プロセスを請求する際に用いられ得る。他の例では、高分解能のカウンターは、例えば、通常、クロック割り込みイベントを引き起こすために用いられるプログラム可能なカウントダウンタイマーの中間的な状態を照会することによって、ソフトウェアの使用をシュミレートし得る。ここで用いられるカウンターは、チック間隔が発生していることを示唆するために用いられるのと同じカウンターである。そのような状況では、上記タイムスタンプは、カウンター値と、上記タイムスタンプが時間内にインターバルスレッドの開始時間と停止時間を的確に反映させるように所与の基準点から発生した、チックの数の両方を勘案し得る。
上述のプロセス・スケジューラ130はまた、ミューテックス(mutexes)を用いるシステムでも用いられ得る。ミューテックスは、競合条件によるデータの不整合を回避させるために用いられる。競合条件は、しばしば2つ以上のスレッドが同じメモリ領域上で動作を実行するように要求している場合に起こるが、計算結果は、これらのオペレーションが実行される他方に依存する。ミューテックスは、共有の資源を順番に並べるために用いられ得る。グローバルな資源が1つ以上のスレッドによってアクセスされている場合はいつでも、上記資源は自らに関連したミューテックスを有し得る。ミューテックスは、メモリのセグメント(「critical region」)を他のスレッドから保護するために用いられ得る。アプリケーションは、受信された順に、スレッドに対してミューテックスを付与する。しかしながら、上記プロセス・スケジューラ130は、ミューテックスを保持し得る優先順位が低いスレッドが、同じミューテックスを待機している優先順位の高いスレッドへアクセスすることを不当に遅らされている場合に発生する問題を処理できるように、構成され得る。
図11は、1つのスレッドがミューテックスを保持し得、他のいくつかのスレッドが同じミューテックスを待機している場合に、アダプティブ・パーティションを用いたシステムにおいてミューテックスへのアクセスを優先させる仕方を示している。ミューテックスを保持しているスレッドに関連したパーティションが担保されたCPUバジェットを使い果たすと、上記処理プロセス・スケジューラ130は、ミューテックスを待機している全スレッドの中で最も次に実行しそうなスレッドのパーティションに対し、ミューテックスを保持しているパーティションの実行時間の請求を開始し得る。上記プロセス・スケジューラ130はまた、ミューテックスを保持しているスレッドに関連したアダプティブ・パーティションに対し、ミューテックスを保持しているスレッドのために動作していると思われる任意のスレッドの実行時間の請求も開始し得る。次に最も実行されそうなスレッド(すなわち、ミューテックスを保持しているスレッドの後に実行しているスレッドがブロックされる、終了する、等)を識別するための判断は、ブロック1110で行なわれ得る。ミューテックスを保持している現在のスレッドと同じミューテックスを待機し得る待機スレッドは、「次に最も実行されそうである」と判断される。ブロック1115において、上記プロセス・スケジューラ130は、全待機スレッドの中で次に最も実行しそうな待機スレッドに対するミューテックスを保持しているスレッドの優先順位を上げ得る。上記プロセス・スケジューラ130は、ブロック1120において、ミューテックスを保持している現在のスレッドに関連したアダプティブ・パーティションに対し、アダプティブ・パーティションのCPUバジェットが使い果たされる(ゼロに達する)までミューテックスを保持している間の実行時間を請求し得る。ブロック1125において、次に最も実行しそうな待機スレッドに関連したアダプティブ・パーティションに対して、保持スレッドに関連したアダプティブ・パーティションに対して、保持スレッドによって用いられる残りのCPU時間が請求される。
「次に最も実行しそうなスレッド」は、待機スレッドの一覧中のスレッドの対に「2つのスレッドを比較する」というプロセスを繰り返し適用することによって計算され得る。上記「2つのスレッドを比較する」プロセスは、次のように実行され得る。ここに、AおよびBは、比較の対象となる2つのスレッドである。順序の入った変数(x,a,y,z)を含む関数f(ap)が構成される。これは、上記で構成された順序化関数f(ap)と同じものである。次に、partition_of(X)をスレッドXを含むパーティションを意味するものとする。次に、f(partition_of(A))>f(partition_of(B))の場合、スレッドAはスレッドBより実行しやすいものとする。上記関数f(X)は、最大のf(X)を有するスレッドが決定されるまで、比較されることになる各スレッドに対して構成されるとする。最大のf(X)を有するスレッドは、「次に最も実行しそうなスレッド」であると判断され、それに関連したアダプティブ・パーティションは、一旦、ミューテックスを保持するスレッドに関連したパーティションが自身に担保されたCPUバジェットを使い果たすと、ミューテックスの実行時間に従って、請求される。
上記のシステムおよび方法は、トランザクション処理システム内で実行するように構成され得、構成された負荷の一部分を処理し続けることは、システムの処理能力のオーバーロードイベントを完全に仕損なうよりもさらに重要である。このようなアプリケーションの例は、インターネットルータと交換機(telephone switch)を含む。上記のシステムと方法はまた、別のリアルタイムなオペレーティングシステム環境、例えば、自動車用、および、航空産業用の環境内でも実行できるように構成され得、臨界プロセスは、臨界イベントの間に実行される必要があるように構成され得る。エアバッグ配備イベントが低い確率のイベントである自動車用の環境で、プロセッサバジェットが割り当てされない例であってもよい。
システムと方法はまた、信用されていないアプリケーションが使用中であり得る環境で動作するように構成され得る。そのような場合、Java(登録商標)アプレットのようなアプリケーションは、オペレーティングシステム内で実行するためにダウンロードされ得るが、上記アプリケーションの性質は、信用されていないアプリケーションがシステムを引き継ぎ、無限ループを生成することを許容し得る。オペレーティングシステムのデザイナーは、そのような状況を所望し得ず、他のプロセスが必要とし得るCPU時間へのアクセスを制限している間に、信用されていないアプリケーションが分離して実行できるように適切なアダプティブ・パーティションを生成し得る。
本発明の様々な実施形態が記述されてきたが、当業者には、本発明の目的から逸れずに、更に多くの実施形態と実施が可能であることが明白である。従って、本発明は、添付された請求項、および、それと同等なものの観点を除いて制限されることはない。
図1は、本発明の教示するところに従ってプロセス・スケジューラを実行し得るシステムの一実施形態のスキーム的ブロック図である。 図2は、アダプティブ・パーティションを用いたプロセス・スケジューラをセットするために使用され得る、多数の異なった相互関係を有するプロセスを示す図式である。 図3は、関連するスレッドとスレッドの優先順位を伴う複数のアダプティブ・パーティションを用いた、典型的なプロセス・スケジューラの図式である。 図4は、関連するスレッドとスレッドの優先順位を伴う複数のアダプティブ・パーティションを用い、上記プロセス・スケジューラが図3に示されているのとは異なる条件下で動作している、更なる典型的なプロセス・スケジューラの図式である。 図5は、関連したスレッドとスレッド順位を伴う複数のアダプティブ・パーティションを用い、少なくとも1つの準備完了スレッドが臨界的なスレッドとして指定されている、典型的なプロセス・スケジューラの図式である。 図6は、送信スレッドと受信スレッドが存在するソフトウェア環境においてプロセス・スケジューラを実行するために使用され得る、相互関係を有する複数のプロセスを示す、流れ図である。 図7は、図6に関連するプロセス・スケジューラの動作を示す図式である。 図8は、様々なアダプティブ・パーティションに関連してスレッドの動作をスケジュールするのに使用され得る、相互関係を有する複数のプロセスを示す、流れ図である。 図9は、動作しているスレッドに関連してプロセス・スケジューラが担保されたバジェットまたは臨界的なバジェットを請求するかどうかを判断するために使用され得る、相互関係を有する複数のプロセスを示す、流れ図である。 図10は、図8のプロセスでアダプティブ・パーティションによって用いられる相対的なバジェットを計算するために使用され得る、相互関係を有する複数のプロセスを示す、流れ図である。 図11は、同一のミューテックスにアクセスするスレッドの動作をスケジュールするために使用され得る、相互関係を有する複数のプロセスを示す、流れ図である。
符号の説明
100 システム
105 CPU
110 メモリ
115 I/O
120 オペレーティングシステム
125 アプリケーション
130 プロセス・スケジューラ
135 デバイス・ドライバ

Claims (23)

  1. プロセッサと、
    1つ以上の記憶装置と、
    該1つ以上の記憶装置に格納されたソフトウェアコードと
    を備えるシステムであって、
    該ソフトウェアコードは、該プロセッサによって実行可能であり、
    少なくとも1つの送信スレッドと、
    該少なくとも1つの送信スレッドからの通信に応答して、該通信に対応する1つ以上のタスクを実行する少なくとも1つの受信スレッドと、
    少なくとも一つには、該少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに基づいて、該プロセッサを該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドに選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステムと
    を備えており、
    該少なくとも1つの送信スレッドによって送信された通信に応答するために、該スケジューリングシステムが該少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを該少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに対して請求する、
    システム。
  2. 前記スケジューリングシステムがオペレーティングシステムの一部分である、請求項1に記載のシステム。
  3. 前記プロセッサがシンメトリックなマルチプロセッサである、請求項1に記載のシステム。
  4. 前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに請求する、請求項1に記載のシステム。
  5. 前記スケジューリングシステムが適応可能なパーティションを有する少なくとも1つの送信スレッドに関連し、
    前記少なくとも1つの送信スレッドに関連した前記プロセッサ・バジェットが、該少なくとも1つの送信スレッドに関連した、該適応可能なパーティションを割り当てられたプロセッサ・バジェットに対応する、請求項1に記載のシステム。
  6. 前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されている前記プロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した適応可能なパーティションのプロセッサ・バジェットに請求する、請求項5に記載のシステム。
  7. プロセッサと、
    1つ以上の記憶装置と、
    該1つ以上の記憶装置に格納されたソフトウェアコードと
    を備えるシステムであって、
    該ソフトウェアコードは、
    複数のスレッドとして該プロセッサによって実行可能であり、
    該複数のスレッドは少なくとも1つの送信スレッドと少なくとも1つの受信スレッドを含んでおり、
    更に、該ソフトウェアコードに含まれ、少なくとも一つには、各スレッドに関連したプロセッサ・バジェットに基づいて、該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドを実行するために該プロセッサを選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステム
    を備える、システム。
  8. 前記スケジューリングシステムがオペレーティングシステムの一部分である、請求項7に記載のシステム。
  9. 前記プロセッサがシンメトリックなマルチプロセッサである、請求項7に記載のシステム。
  10. 前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連したプロセッサ・バジェットに請求する、請求項7に記載のシステム。
  11. 前記スケジューリングシステムが適応可能なパーティションを有する少なくとも1つの送信スレッドに関連し、
    前記少なくとも1つの送信スレッドに関連した前記プロセッサ・バジェットが、該適応可能なパーティションを割り当てられたプロセッサ・バジェットに対応する、請求項7に記載のシステム。
  12. 前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されている前記プロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した適応可能なパーティションのプロセッサ・バジェットに請求する、請求項11に記載のシステム。
  13. プロセッサと、
    1つ以上の記憶装置と、
    該1つ以上の記憶装置に格納されたソフトウェアコードと
    を備えるシステムであって、
    該ソフトウェアコードは、
    該プロセッサによって実行可能であり、
    各々が1つ以上の処理装置に関連する複数の適応可能なパーティションであって、該複数の適応可能なパーティションの各々が対応するプロセッサ・バジェットを有する、複数の適応可能なパーティションと、
    該複数の適応可能なパーティションの第1の適応可能なパーティションに関連した少なくとも1つの送信スレッドと、
    該複数の適応可能なパーティションの第2の適応可能なパーティションに関連した少なくとも1つの受信スレッドであって、該少なくとも1つの受信スレッドは、該通信に対応する少なくとも1つのタスクを実行することによって、該少なくとも1つの送信スレッドからの通信に応答する、受信スレッドと、
    少なくとも一つには、該第1および第2の適応可能なパーティションのプロセッサ・バジェットに基づいて、該プロセッサを該少なくとも1つの送信スレッドと該少なくとも1つの受信スレッドに選択的に割り当てる、該プロセッサによって実行可能なスケジューリングシステムと
    を備えるソフトウェアコードである、
    システム。
  14. 前記スケジューリングシステムがオペレーティングシステムの一部分である、請求項13に記載のシステム。
  15. 前記プロセッサがシンメトリックなマルチプロセッサである、請求項13に記載のシステム。
  16. 前記スケジューリングシステムが、前記少なくとも1つの送信スレッドによって送信された通信に応答するために、前記少なくとも1つの受信スレッドによって使用されているプロセッサ割り当てを前記少なくとも1つの送信スレッドに関連した、前記適応可能なパーティションのプロセッサ・バジェットに請求する、請求項13に記載のシステム。
  17. 複数のソフトウェアスレッドを有する処理装置内にあるプロセス・スケジューラを動作させる方法であって、該複数のソフトウェアスレッドは、少なくとも1つの送信スレッドと、該少なくとも1つの送信スレッドによって送信された通信に応答する少なくとも1つの受信スレッドを含み、該少なくとも1つの送信スレッドは所定のプロセッサ・バジェットを有する第1の適応可能なパーティションに関連しており、該少なくとも1つの受信スレッドは更なる所定のプロセッサ・バジェットを有する第2の適応可能なパーティションに関連しており、該方法は、
    該送信スレッドの実行をスケジューリングし、該送信スレッドが該受信スレッドに通信を送信することと、
    該受信スレッドの実行をスケジューリングすることと、
    該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションのプロセッサ・バジェットに請求すること
    を含む、方法。
  18. 前記請求する動作が、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションのプロセッサ・バジェットに請求することを含む、請求項17に記載の方法。
  19. 複数のソフトウェアスレッドを有する処理装置内にあるプロセス・スケジューラを動作させる方法を実行するために使用されているソフトウェアコードを含む記憶媒体であって、
    該複数のソフトウェアスレッドは、少なくとも1つの送信スレッドと、該少なくとも1つの送信スレッドによって送信された通信に応答する少なくとも1つの受信スレッドを含み、該少なくとも1つの送信スレッドは所定のプロセッサ・バジェットを有する第1の適応可能なパーティションに関連しており、該少なくとも1つの受信スレッドは更なる所定のプロセッサ・バジェットを有する第2の適応可能なパーティションに関連しており、該方法は、
    該送信スレッドの実行をスケジューリングし、該送信スレッドが該受信スレッドに通信を送信することと、
    該受信スレッドの実行をスケジューリングすることと、
    該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションのプロセッサ・バジェットに請求すること
    を含む方法である、
    記憶媒体。
  20. 前記請求する動作が、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションのプロセッサ・バジェットに請求することを含む、請求項19に記載の記憶媒体。
  21. 送信スレッドに関連し、第1のプロセッサ・バジェットを有する、第1の適応可能なパーティションと、
    受信スレッドに関連し、第2のプロセッサ・バジェットを有する、第2の適応可能なパーティションであって、該受信スレッドは、該通信に対応する1つ以上のタスクを実行することによって、該送信スレッドによって送信された通信に応答する受信スレッドである、第2の適応可能なパーティションと、
    少なくとも一つには、該第1および第2の適応可能なパーティションの該第1および第2の所定のプロセッサ・バジェットに基づいて、プロセッサを該受信スレッドと該送信スレッドと該受信スレッドに選択的に割り当てるように適合されたプロセス・スケジューラであって、該プロセッサ・スケジューラは、該送信スレッドによって送信された通信に応答するために、該受信スレッドによって使用されているプロセッサ割り当てを該第1の適応可能なパーティションの第1の所定のプロセッサ・バジェットに請求する、プロセス・スケジューラと
    を備える、プロセス・スケジューリングシステム。
  22. 前記プロセッサがシンメトリックなマルチプロセッサである、請求項21に記載のプロセス・スケジューリングシステム。
  23. 前記プロセス・スケジューラが、前記送信スレッドによって送信された通信に応答するために、前記受信スレッドによって使用されているプロセッサ割り当てを前記第1の適応可能なパーティションの前記第1の所定のプロセッサ・バジェットに請求する、請求項21に記載のプロセス・スケジューリングシステム。
JP2006068185A 2005-03-14 2006-03-13 プロセス・スレッドのアダプティブ・パーティショニングを用いたプロセス・スケジューラ Withdrawn JP2006260565A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US66207005P 2005-03-14 2005-03-14
US11/216,795 US8387052B2 (en) 2005-03-14 2005-08-31 Adaptive partitioning for operating system
US11/317,468 US8434086B2 (en) 2005-03-14 2005-12-22 Process scheduler employing adaptive partitioning of process threads

Publications (1)

Publication Number Publication Date
JP2006260565A true JP2006260565A (ja) 2006-09-28

Family

ID=36750661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006068185A Withdrawn JP2006260565A (ja) 2005-03-14 2006-03-13 プロセス・スレッドのアダプティブ・パーティショニングを用いたプロセス・スケジューラ

Country Status (5)

Country Link
US (4) US7870554B2 (ja)
EP (2) EP2306311A1 (ja)
JP (1) JP2006260565A (ja)
KR (1) KR101312886B1 (ja)
CA (1) CA2538503C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008010351A1 (fr) 2006-07-20 2008-01-24 Harison Toshiba Lighting Corp. Dispositif d'éclairage par lampe à décharge
CN107066321A (zh) * 2016-01-21 2017-08-18 罗伯特·博世有限公司 用于准并行地执行多个线程的方法和装置

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2538503C (en) * 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US8387052B2 (en) 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US9361156B2 (en) 2005-03-14 2016-06-07 2236008 Ontario Inc. Adaptive partitioning for operating system
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
FR2891069B1 (fr) * 2005-09-16 2007-11-09 Thales Sa Procede de controle du bon fonctionnement d'un calculateur
US20070074217A1 (en) * 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
US7725573B2 (en) * 2005-11-29 2010-05-25 Intel Corporation Methods and apparatus for supporting agile run-time network systems via identification and execution of most efficient application code in view of changing network traffic conditions
US8108863B2 (en) 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
US20070204844A1 (en) * 2006-02-08 2007-09-06 Anthony DiMatteo Adjustable Grill Island Frame
US7836212B2 (en) * 2006-07-20 2010-11-16 Oracle America, Inc. Reflecting bandwidth and priority in network attached storage I/O
US8085272B1 (en) * 2006-11-03 2011-12-27 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US8139069B1 (en) 2006-11-03 2012-03-20 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
JP4705051B2 (ja) * 2007-01-29 2011-06-22 株式会社日立製作所 計算機システム
US8739162B2 (en) * 2007-04-27 2014-05-27 Hewlett-Packard Development Company, L.P. Accurate measurement of multithreaded processor core utilization and logical processor utilization
US20080271027A1 (en) * 2007-04-27 2008-10-30 Norton Scott J Fair share scheduling with hardware multithreading
US10452820B2 (en) * 2007-06-26 2019-10-22 International Business Machines Corporation Thread-based software license management
US8634470B2 (en) 2007-07-24 2014-01-21 Samsung Electronics Co., Ltd. Multimedia decoding method and multimedia decoding apparatus based on multi-core processor
CN100593146C (zh) * 2007-11-09 2010-03-03 上海可鲁系统软件有限公司 一种防止工业自动化系统雪崩的方法
US8959328B2 (en) * 2007-11-13 2015-02-17 Intel Corporation Device, system, and method for multi-resource scheduling
US7996522B2 (en) * 2007-12-04 2011-08-09 Novell, Inc. Persistent scheduling techniques
US20090217280A1 (en) * 2008-02-21 2009-08-27 Honeywell International Inc. Shared-Resource Time Partitioning in a Multi-Core System
US7460122B1 (en) * 2008-02-22 2008-12-02 International Business Machines Corporation Method for graphical display of CPU utilization
US8392913B2 (en) * 2008-03-28 2013-03-05 International Business Machines Corporation Method and apparatus for threaded background function support
KR101622168B1 (ko) * 2008-12-18 2016-05-18 삼성전자주식회사 실시간 스케쥴링 방법 및 이를 이용한 중앙처리장치
US9009717B2 (en) * 2009-10-29 2015-04-14 International Business Machines Corporation Managing scheduling of processes
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8893092B1 (en) * 2010-03-12 2014-11-18 F5 Networks, Inc. Using hints to direct the exploration of interleavings in a multithreaded program
CN101833477B (zh) * 2010-05-28 2013-06-12 浙江大学 基于SmartOSEK OS的非周期性任务调度方法
US8670846B2 (en) * 2010-07-29 2014-03-11 The Trustees Of The University Of Pennsylvania System and method for conducting a competition
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores
JP5240402B2 (ja) * 2011-01-31 2013-07-17 トヨタ自動車株式会社 安全制御装置および安全制御方法
US8756606B2 (en) * 2011-01-31 2014-06-17 Toyota Jidosha Kabushiki Kaisha Safety controller and safety control method in which time partitions are scheduled according to a scheduling pattern
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
KR20130063825A (ko) 2011-12-07 2013-06-17 삼성전자주식회사 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법
US9207977B2 (en) * 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9256451B2 (en) * 2012-06-29 2016-02-09 Oracle International Corporation Emulation time correction
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
WO2020019315A1 (zh) * 2018-07-27 2020-01-30 浙江天猫技术有限公司 一种基于图数据的计算运行调度方法、系统、计算机可读介质及设备
CN113678103A (zh) * 2019-04-12 2021-11-19 哈曼国际工业有限公司 车载计算系统的弹性计算
US11138043B2 (en) 2019-05-23 2021-10-05 Honeywell International s.r.o System and methods for contingency budgeting for time-partitioned systems
US11748117B2 (en) * 2021-02-25 2023-09-05 Microsoft Technology Licensing, Llc Operating system partitioning of different users for single-user applications
CN115016885B (zh) * 2021-11-19 2023-11-24 荣耀终端有限公司 虚拟机垃圾回收运行方法及电子设备
DE102022203945A1 (de) * 2022-04-22 2023-10-26 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren für eine Konfiguration in einem Netzwerk

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US603061A (en) * 1898-04-26 Device for turning off commutators of dynamos or motors
US4736318A (en) * 1985-03-01 1988-04-05 Wang Laboratories, Inc. Data processing system having tunable operating system means
US5068778A (en) 1988-11-28 1991-11-26 Reliance Electric Industrial Company Industrial control system device
JP2682770B2 (ja) 1992-05-15 1997-11-26 富士通株式会社 仮想計算機システムのcpu制御方式
US6948172B1 (en) 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
JP3658420B2 (ja) 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
US5912888A (en) 1994-06-09 1999-06-15 U.S. Robotics Access Corp. Digital network access server
US5812844A (en) 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US6003061A (en) 1995-12-07 1999-12-14 Microsoft Corporation Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider
CA2200929C (en) * 1996-03-28 2008-05-13 Tadashi Takeuchi Periodic process scheduling method
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
US6301616B1 (en) 1997-04-11 2001-10-09 Microsoft Corporation Pledge-based resource allocation system
JP4021518B2 (ja) 1997-05-27 2007-12-12 富士通株式会社 データベース・システム
JPH1153326A (ja) 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
JP3027845B2 (ja) 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
SE511098C2 (sv) * 1997-12-08 1999-08-02 Ericsson Telefon Ab L M Kommunikationssystem och förfarande för att sända meddelanden i ett kommunikationssystem
US6560628B1 (en) * 1998-04-27 2003-05-06 Sony Corporation Apparatus, method, and recording medium for scheduling execution using time slot data
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6687904B1 (en) * 1999-11-22 2004-02-03 Sun Microsystems, Inc. Method and apparatus for selecting a locking policy based on a per-object locking history
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6757897B1 (en) 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US20020194251A1 (en) * 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6950848B1 (en) 2000-05-05 2005-09-27 Yousefi Zadeh Homayoun Database load balancing for multi-tier computer systems
US6961934B2 (en) 2000-05-08 2005-11-01 Microtune (San Diego), Inc. Portable thread environment
US7302685B2 (en) 2000-06-02 2007-11-27 Honeywell International Inc. Methods and apparatus for sharing slack in a time-partitioned system
US6785889B1 (en) * 2000-06-15 2004-08-31 Aurema, Inc. System and method for scheduling bandwidth resources using a Kalman estimator with active feedback
US6859926B1 (en) 2000-09-14 2005-02-22 International Business Machines Corporation Apparatus and method for workload management using class shares and tiers
EP1199632A1 (en) * 2000-10-20 2002-04-24 Sun Microsystems, Inc. Method and apparatus for resource access synchronization
JP2004513428A (ja) 2000-11-06 2004-04-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ タスクへ資源配分を割当てる方法及びシステム
US20020078194A1 (en) * 2000-12-20 2002-06-20 Murty Neti Resource management and billing system for a broadband satellite communications system
EP1217517A1 (en) 2000-12-22 2002-06-26 Sun Microsystems, Inc. Synchronizing calls in a server and client system
US6957431B2 (en) * 2001-02-13 2005-10-18 International Business Machines Corporation System for incrementally computing the maximum cost extension allowable for subsequent execution of each task using fixed percentage of the associated cost
US6957435B2 (en) * 2001-04-19 2005-10-18 International Business Machines Corporation Method and apparatus for allocating processor resources in a logically partitioned computer system
JP2002342097A (ja) * 2001-05-17 2002-11-29 Matsushita Electric Ind Co Ltd タスク割当可能時間決定装置及びタスク割当可能時間決定方法
GB0112571D0 (en) 2001-05-24 2001-07-18 Ibm Priority inversion in computer system supporting multiple processes
JP3630118B2 (ja) * 2001-07-12 2005-03-16 日本電気株式会社 スレッド終了方法及び装置並びに並列プロセッサシステム
US7251814B2 (en) * 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US7412492B1 (en) 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
US20030061260A1 (en) * 2001-09-25 2003-03-27 Timesys Corporation Resource reservation and priority management
US7406522B2 (en) * 2001-09-26 2008-07-29 Packeteer, Inc. Dynamic partitioning of network resources
US20030069917A1 (en) * 2001-10-04 2003-04-10 Miller Larry J. Balanced client/server mechanism in a time-partitioned real-time operting system
US20030084164A1 (en) 2001-10-29 2003-05-01 Mazzitelli John Joseph Multi-threaded server accept system and method
US7117497B2 (en) * 2001-11-08 2006-10-03 Honeywell International, Inc. Budget transfer mechanism for time-partitioned real-time operating systems
EP1459179A2 (en) * 2001-12-14 2004-09-22 Koninklijke Philips Electronics N.V. Data processing system having multiple processors and task scheduler and corresponding method therefor
EP1497726A2 (en) * 2002-01-24 2005-01-19 Koninklijke Philips Electronics N.V. Executing processes in a multiprocessing environment
US7266823B2 (en) * 2002-02-21 2007-09-04 International Business Machines Corporation Apparatus and method of dynamically repartitioning a computer system in response to partition workloads
AU2003289970A1 (en) * 2002-08-20 2004-03-11 Honeywell International Inc. System and method for robust time partitioning of tasks in a real-time computing environment
US6988226B2 (en) 2002-10-17 2006-01-17 Wind River Systems, Inc. Health monitoring system for a partitioned architecture
JP4119239B2 (ja) * 2002-12-20 2008-07-16 株式会社日立製作所 計算機資源割当方法、それを実行するための資源管理サーバおよび計算機システム
US7222343B2 (en) * 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US7761876B2 (en) * 2003-03-20 2010-07-20 Siemens Enterprise Communications, Inc. Method and system for balancing the load on media processors based upon CPU utilization information
US7627506B2 (en) 2003-07-10 2009-12-01 International Business Machines Corporation Method of providing metered capacity of temporary computer resources
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US20040226015A1 (en) 2003-05-09 2004-11-11 Leonard Ozgur C. Multi-level computing resource scheduling control for operating system partitions
US7562362B1 (en) 2003-06-18 2009-07-14 Apple Inc. User control of task priority
US7620950B2 (en) 2003-07-01 2009-11-17 International Business Machines Corporation System and method to monitor amount of usage of applications in logical partitions
US7512950B1 (en) 2003-08-14 2009-03-31 Sun Microsystems, Inc. Barrier synchronization object for multi-threaded applications
JP4025260B2 (ja) 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
JP3838437B2 (ja) * 2003-09-26 2006-10-25 日本電気株式会社 ネットワークスイッチ及びその動作方法、並びにブレードサーバ
US7472389B2 (en) * 2003-10-29 2008-12-30 Honeywell International Inc. Stochastically based thread budget overrun handling system and method
US20080052687A1 (en) 2003-11-03 2008-02-28 Agustin Gonzales-Tuchmann Development environment for data transformation applications
US7383548B2 (en) 2003-11-28 2008-06-03 Nortel Networks Limited CPU usage regulation
US7421691B1 (en) 2003-12-23 2008-09-02 Unisys Corporation System and method for scaling performance of a data processing system
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7475399B2 (en) * 2004-01-13 2009-01-06 International Business Machines Corporation Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
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
US7506361B2 (en) * 2004-05-17 2009-03-17 International Business Machines Corporation Method for discovering servers, spawning collector threads to collect information from servers, and reporting information
US7657892B2 (en) 2004-05-20 2010-02-02 Bea Systems, Inc. System and method for application server with self-tuned threading model
JP4520788B2 (ja) 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US7458076B2 (en) * 2004-08-05 2008-11-25 International Business Machines Corporation Method, apparatus, and computer program product for dynamically tuning a data processing system by identifying and boosting holders of contentious locks
US7574424B2 (en) 2004-10-13 2009-08-11 Sybase, Inc. Database system with methodology for parallel schedule generation in a query optimizer
US8145872B2 (en) * 2004-11-08 2012-03-27 International Business Machines Corporation Autonomic self-tuning of database management system in dynamic logical partitioning environment
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US20060130062A1 (en) * 2004-12-14 2006-06-15 International Business Machines Corporation Scheduling threads in a multi-threaded computer
US20060212870A1 (en) 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US20060206891A1 (en) 2005-03-10 2006-09-14 International Business Machines Corporation System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted
CA2538503C (en) 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US8387052B2 (en) 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US8245230B2 (en) 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US7882505B2 (en) * 2005-03-25 2011-02-01 Oracle America, Inc. Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
US7975271B2 (en) * 2005-03-30 2011-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock
WO2006103687A1 (en) * 2005-03-31 2006-10-05 Hewlett-Packard Development Company L.P. Partitioned resource reallocation system and method
US7752620B2 (en) 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008010351A1 (fr) 2006-07-20 2008-01-24 Harison Toshiba Lighting Corp. Dispositif d'éclairage par lampe à décharge
CN107066321A (zh) * 2016-01-21 2017-08-18 罗伯特·博世有限公司 用于准并行地执行多个线程的方法和装置

Also Published As

Publication number Publication date
US8595733B2 (en) 2013-11-26
KR20060100945A (ko) 2006-09-21
EP1703388A2 (en) 2006-09-20
US8544013B2 (en) 2013-09-24
US20070061788A1 (en) 2007-03-15
US7840966B2 (en) 2010-11-23
CA2538503A1 (en) 2006-09-14
US7870554B2 (en) 2011-01-11
CA2538503C (en) 2014-05-13
EP2306311A1 (en) 2011-04-06
EP1703388B1 (en) 2016-08-10
KR101312886B1 (ko) 2013-09-30
US20060206881A1 (en) 2006-09-14
EP1703388A3 (en) 2007-11-28
US20070061809A1 (en) 2007-03-15
US20110107342A1 (en) 2011-05-05

Similar Documents

Publication Publication Date Title
US9424093B2 (en) Process scheduler employing adaptive partitioning of process threads
JP2006260565A (ja) プロセス・スレッドのアダプティブ・パーティショニングを用いたプロセス・スケジューラ
US8631409B2 (en) Adaptive partitioning scheduler for multiprocessing system
Abeni et al. Resource reservation in dynamic real-time systems
EP1538497B1 (en) Distributed real time operating system
US6633942B1 (en) Distributed real-time operating system providing integrated interrupt management
Wang et al. Implementing a general real-time scheduling framework in the RED-Linux real-time kernel
US9361156B2 (en) Adaptive partitioning for operating system
Srinivasan et al. The case for fair multiprocessor scheduling
US7383548B2 (en) CPU usage regulation
Mohammadi et al. Scheduling algorithms for real-time systems
Aldea et al. Fsf: A real-time scheduling architecture framework
Ghattas et al. Preemption threshold scheduling: Stack optimality, enhancements and analysis
Racu et al. Improved response time analysis of tasks scheduled under preemptive round-robin
Migge et al. Timing analysis of compound scheduling policies: Application to Posix1003. 1b
Kakkar Scheduling techniques for operating systems for medical and IoT devices: A review
Khamse Ashari Fair and Efficient Resource Management in Heterogeneous Cloud Environments
Fohler et al. Scheduler integration definition report
Lin Managing the soft real-time processes in RBED
Yu et al. A performance comparison of communication-driven coscheduling strategies for multi-programmed heterogeneous clusters

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070601

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090309

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090904