JP5861706B2 - スケジューリング方法およびシステム - Google Patents

スケジューリング方法およびシステム Download PDF

Info

Publication number
JP5861706B2
JP5861706B2 JP2013522397A JP2013522397A JP5861706B2 JP 5861706 B2 JP5861706 B2 JP 5861706B2 JP 2013522397 A JP2013522397 A JP 2013522397A JP 2013522397 A JP2013522397 A JP 2013522397A JP 5861706 B2 JP5861706 B2 JP 5861706B2
Authority
JP
Japan
Prior art keywords
task
access
memory
storage
scheduler
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.)
Expired - Fee Related
Application number
JP2013522397A
Other languages
English (en)
Other versions
JPWO2013001613A1 (ja
Inventor
康志 栗原
康志 栗原
浩一郎 山下
浩一郎 山下
鈴木 貴久
貴久 鈴木
尚記 大舘
尚記 大舘
俊也 大友
俊也 大友
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2013001613A1 publication Critical patent/JPWO2013001613A1/ja
Application granted granted Critical
Publication of JP5861706B2 publication Critical patent/JP5861706B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数のCPUが共有するメモリに対するアクセス競合を回避するスケジューリング方法およびシステムに関する。
複数のストレージおよび複数のCPUを備えるマルチコアシステムでは、一つのストレージに対して同時に複数のCPUからのストレージアクセスが生じる可能性がある。これを回避する対策としては、複数のストレージアクセスを切り替えながら処理することが考えられる。
たとえば、ディスクドライブに対するアクセス・タスクをグループ化し、タスクのリストにしたがってスレッドを直列に実行することにより、ディスクに対するシークの競合を防止した技術がある(たとえば、下記特許文献1参照。)。また、制限時間つきストレージアクセス要求を対象にし、対象ストレージへの書き込みが制限時間内に終了しない場合は、データを別のストレージへ一旦書き込みをおこない、後ほど本来のストレージへデータを移動させる技術がある(たとえば、下記特許文献2参照。)。
また、画像データ検索システムにおいて、集合型光ディスク装置と単盤型光ディスク装置を接続し、画像データの登録を単盤型光ディスク装置に仮登録した後に、集合型光ディスク装置に転送することにより、画像データの登録要求と検索要求とが同時に発生しても画像データへのアクセス競合を防ぐ技術がある(たとえば、下記特許文献3参照。)。また、マルチプロセッサにおいて、HDDへのアクセス要求の種別を判定し、種別毎に異なるアドレス空間を設定し、アクセス要求を制御する調停論理手段を設け、競合したアクセス発生時に、いずれかの処理を先におこなう技術がある(たとえば、下記特許文献4参照。)。
特開平7−104939号公報 特開平10−91357号公報 特開平3−018976号公報 特開2009−187327号公報
しかしながら、特許文献1〜4に記載の技術では、ストレージへのアクセススケジューリングと、OSのタスクスケジューリングがそれぞれ個別におこなわれることになるため、ストレージアクセスをおこなう際に複数のCPU間で同一のストレージに対するアクセス競合が発生することが考えられる。このアクセス競合の発生により、ストレージのアクセス性能が低下する。特許文献2に記載の技術では、ストレージへのアクセススケジューリングしか考慮されておらず、ストレージへのアクセススケジューリングと、OSのタスクスケジューリングとの連携がなされないために、複数のCPUでそれぞれタスクを実行するときに一つのストレージへのアクセス競合が発生することがあった。
開示のスケジューリング方法およびシステムは、上述した問題点を解消するものであり、複数のCPUが共有するメモリへのアクセス競合を回避することを目的とする。
上述した課題を解決し、目的を達成するため、開示技術は、複数のCPUがそれぞれ所定のタスク実行毎に、メモリに対するアクセス種別と利用帯域に基づき当該タスクのタスク種類を判定し、当該タスク種類及び各タスクのアクセス終了時間の予測に基づいて、各タスクをいずれのストレージにアクセスさせるかをスケジューラによりスケジューリングし、前記スケジューリングに基づき、同一メモリへアクセスするタスクを前記スケジューラにより同一のCPUに割り当て、ことを特徴とする。
開示のスケジューリング方法およびシステムによれば、複数のCPUが共有するメモリへのアクセス競合を回避できるという効果を奏する。
図1は、実施の形態のスケジューリング方法を実行するシステムの構成例を示す図である。 図2は、システムの内部構成を示すブロック図である。 図3−1は、データベースの情報を示す図表である(その1)。 図3−2は、データベースの情報を示す図表である(その2)。 図3−3は、データベースの情報を示す図表である(その3)。 図4−1は、アクセス競合の回避の処理概要を示す図である(その1)。 図4−2は、アクセス競合の回避の処理概要を示す図である(その2)。 図5−1は、ストレージに対するアクセススケジューリングの例を示す図である(その1)。 図5−2は、ストレージに対するアクセススケジューリングの例を示す図である(その2)。 図5−3は、ストレージに対するアクセススケジューリングの例を示す図である(その3)。 図5−4は、ストレージに対するアクセススケジューリングの例を示す図である(その4)。 図5−5は、ストレージに対するアクセススケジューリングの例を示す図である(その5)。 図6−1は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である(その1)。 図6−2は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である(その2)。 図6−3は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である(その3)。 図6−4は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である(その4)。 図6−5は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である(その5)。 図7は、書き戻し前のデータへのアクセスの状態を示す図である。 図8−1は、データの書き戻しにかかる処理を示す図である(その1)。 図8−2は、データの書き戻しにかかる処理を示す図である(その2)。 図8−3は、データの書き戻しにかかる処理を示す図である(その3)。 図9は、ストレージスケジューラがおこなう処理手順を示すフローチャートである。 図10は、タスクスケジューラがおこなう処理手順を示すフローチャートである。 図11は、メインスケジューラ、スレーブスケジューラがおこなう処理手順を示すフローチャートである。 図12は、アクセス監視部がおこなう処理手順を示すフローチャートである。 図13は、実施の形態による競合の回避および全アクセスの処理時間を説明する図である。 図14は、図1に示したコンピュータを用いたシステムの適用例を示す図である。
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。開示技術は、複数のCPUと複数のメモリを備えてタスクを並列処理するシステム等に適用される。そして、メモリアクセスのスケジューリングとタスクスケジューリングとを連携させることにより、タスク実行により、複数のメモリのうち共有される一つのメモリに対するアクセス競合を回避し、メモリへのアクセス処理の効率化を図る。
(実施の形態)
図1は、実施の形態のスケジューリング方法を実行するシステムの構成例を示す図である。システム100は、複数のCPU(第1CPU101、第2CPU102)を含み、CPU101,102は、それぞれOS111,112を含む。これらCPU101,102は、バス103を介してメモリ121と、複数のCPUによって共有されるメモリにアクセスする。以下の説明では、図1に示す1台のコンピュータに複数のCPU101,102を搭載したマルチコアの構成例を用いて説明をおこなう。
図1に示す例では、複数のCPUによって共有される複数のメモリを有する。この複数のメモリとして、第1メモリとしてのメインストレージ(A)131と、第2メモリとしてのサブストレージ(B)132を含む。たとえば、これらメインストレージ(A)131と、サブストレージ(B)132は、ハードディスク装置を用いることができる。以下の実施例では、CPU101,102は、いずれも主にメインストレージ131にアクセスし、共有使用するものとしている。そして、メインストレージ131に対するアクセス競合回避のために、一時的にサブストレージ132を利用するものとして説明する。
図2は、システムの内部構成を示すブロック図である。マスタ側のOS111は、マスタスケジューラ201と、アクセス監視部202と、ウェイトキュー203と、タスクキュー204とを含む。マスタスケジューラ201は、ストレージスケジューラ205と、タスクスケジューラ206と、タスクディスパッチ部207とを含む。
スレーブ側のOS112は、スレーブスケジューラ211と、アクセス監視部212と、タスクキュー214とを含む。スレーブスケジューラ211は、タスクディスパッチ部217を含む。メモリ121は、データベース(DB)221を含む。
マスタOS111のストレージスケジューラ205は、ウェイトキュー203からタスクを取り出し、取り出したタスクのアクセス先ストレージ(メインストレージ131あるいはサブストレージ132)を決定する。この際、各タスクの特性(ReadあるいはWrite、帯域利用、処理時間等)により、アクセス先ストレージを決定し、タスクスケジューラ206に通知する。
マスタOS111のタスクスケジューラ206は、ストレージスケジューラ205によるストレージアクセスのスケジューリング情報と、タスクのスケジューリング情報に基づき、タスクの割当先を決定し、タスクキュー204に挿入する。このタスクスケジューラ206は、ストレージのアクセス先が同じであるタスク同士を同一のCPU101,102に割り当てる。タスクディスパッチ部207は、CPU101のディスパッチ状況を基に、タスクキュー204に挿入されているタスクのタスクディスパッチ、タスクスイッチを制御する。
マスタOS111のアクセス監視部202は、ストレージに対するリード、ライトの発生時に、実行中タスクの情報に基づき、タスクがアクセスするストレージ(メインストレージ131あるいはサブストレージ132)を指定する。
スレーブOS112は、マスタOS111の統括制御を受けてCPU102の制御を実行する。スレーブOS112のスレーブスケジューラ211は、タスクディスパッチ部217を含み、このタスクディスパッチ部217は、CPU102のディスパッチ状況を基に、タスクキュー214に挿入されているタスクのタスクディスパッチ、タスクスイッチを制御する。スレーブOS112のアクセス監視部212は、ストレージに対するリード、ライトの発生時に、実行中タスクの情報に基づき、タスクがアクセスするストレージ(メインストレージ131あるいはサブストレージ132)を指定する。
メモリ121のデータベース221には、タスクテーブル、ストレージアクセススケジューリング情報、タスクのスケジューリング情報が保持される。
図3−1〜図3−3は、データベースの情報を示す図表である。図3−1は、データベース221に保存されるタスクテーブル301を示す図である。タスクテーブル301は、ライト(Write)タスクテーブル311と、リード(Read)タスクテーブル312と、Fタスクテーブル313とを含む。このFタスクテーブル313の情報は、アクセス競合を避けるためにWriteタスクが一旦別のストレージに書き込んだ場合に参照される。Fタスク(書き戻しタスクに相当)は、実際のアクセス対象のストレージに、一時的にデータを書き込んだストレージからデータの書き戻しをおこなうタスクである。このFタスクは、ストレージにアクセスをおこなう他のタスクに影響を与えないタイミングでディスパッチされる。
ライトタスクテーブル311は、(1)ライトタスクIDと、(2)指定書き込み領域と、(3)書き込み指定領域と、(4)書き戻し判定フラグと、(5)一時保存先アクセスリードタスクと、(6)データサイズの各情報を含む。
(1)ライトタスクIDは、ストレージに書き込むライトタスクの識別子(ID)である。(2)指定書き込み領域は、書き込みが指定されているストレージのアドレスである。(3)書き込み指定領域は、一時的に書き込む先のストレージのアドレスである。(4)書き戻し判定フラグは、指定書き込み領域のアドレスのデータを、書き込み指定領域に書き込みが終了したかを示すフラグ値である。(5)一時保存先アクセスリードタスクは、指定書き込み領域のアドレスにアクセスしているタスクのIDである。(6)データサイズは、書き込みをおこなうデータのサイズである。
リードタスクテーブル312は、(1)リードタスクIDと、(2)指定アクセス領域と、(3)読み出し指定領域と、(4)データサイズの各情報を含む。(1)リードタスクIDは、ストレージから読み出すリードタスクの識別子(ID)である。(2)指定アクセス領域は、読み出しを指定されたストレージのアドレスである。(3)読み出し指定領域は、実際に読み出しをおこなうストレージのアドレスである。(4)データサイズは、読み出しをおこなうデータのサイズである。
Fタスクテーブル313は、(1)FタスクIDと、(2)書き戻しライト(Write)タスクIDとを含む。(1)FタスクIDは、FタスクのIDである。(2)書き戻しライトタスクIDは、一時的に書き込みをおこなったデータを実際の指定先のストレージに書き戻しをおこなう対象ライト(Write)タスクIDである。
図3−2は、データベース221に保存されるストレージアクセススケジューリングテーブル321と、タスクスケジューリングテーブル322とを示す図である。ストレージアクセススケジューリングテーブル321は、ストレージIDと、各ストレージID毎の割り当てタスクID、および終了予測時間とを含む。ストレージIDは、上記メインストレージ131,およびサブストレージ132を識別するIDである。割り当てタスクIDは、各ストレージにアクセスするタスクIDである。終了予測時間は、後述するアクセス終了時間予測式により求められたタスクの終了予測時間である。
タスクスケジューリングテーブル322は、CPUIDと、CPUID毎の割り当てタスクIDとを含む。CPUIDは、複数のCPU101,102の識別子(ID)である。割り当てタスクIDは、複数のCPU101,102毎に割り当てられているタスクの識別子(ID)である。
図3−3は、データベース221に保存されるストレージアクセスをおこなうタスクの分類を示す図表である。図示の分類表331に示されるように、タスクは、ストレージへのアクセスタイプと、帯域の利用の仕方、処理時間等により複数(図示の例ではA〜F)に分類される。
分類Aのタスクは、アクセスタイプがリード、帯域利用が一定帯域であり、ビデオ等のアプリケーション処理時のデータ等である。分類Bのタスクは、アクセスタイプがリード、帯域利用が全帯域であり、アップロードするデータ等である。分類Cのタスクは、アクセスタイプがライト、帯域利用全帯域であり、ダウンロードしたデータ等である。分類Dのタスクは、アクセスタイプがライト、帯域利用が最優先、処理時間が一瞬である、スワップアウトのデータ等である。分類Eのタスクは、アクセスタイプがリード、帯域利用が最優先、処理時間が一瞬である、スワップインのデータ等である。分類Fのタスク(Fタスク)は、上記のように、サブストレージ132からメインストレージ131への書き戻しをおこなう処理にかかるタスクであり、アクセスタイプがリードおよびライト、帯域利用が全帯域である。
(アクセス競合回避の処理の概要)
つぎに、複数のCPUによる一つのストレージに対するアクセス競合を回避する処理の概要について説明する。図4−1、図4−2は、アクセス競合の回避の処理概要を示す図である。はじめに、図4−1に示すように、CPU101がストレージからリードのタスクを実行しているとする。リードタスクは、データの読み出し先であるストレージがあらかじめ決まっている(図示の例では、メインストレージ131である)。
このとき、新たにCPU102でライトタスクが発生したとする。このライトタスクのデータは、メインストレージ131にアクセスし、格納されるものであるとする。しかし、メインストレージ131は、CPU101によるリードタスクを実行中であるため、このライトタスクをどのストレージに書き込むかを判断する。この判断は、各ストレージのストレージ帯域M,Sの情報に基づき、メインストレージ131に対するタスクのアクセス終了時間を予測算出し、いずれのストレージ131,132に書き込むかを決定する。図示の例では、ライトタスクとリードタスクが同じメインストレージ131にアクセスして生じるアクセス競合を避けるために、CPU102がライトタスクをサブストレージ132に書き込む状態を示している。
図4−1に示す状態の後、図4−2に示すように、メインストレージ131に対するアクセスがない時期に、サブストレージ132に書き込んだデータをメインストレージ131に書き込む(上記Fタスクの処理)。これにより、同一のストレージに対する複数のCPUからのアクセス競合を回避する。この際、CPU101,102のOS111,112は、メモリ121に格納されているデータベース221を参照して同一ストレージのアクセス先のタスクを同一のCPUに割り当てることにより、同一ストレージへのアクセス競合を回避するようにしている。
(タスクのアクセス終了時間の予測について)
ここで、上記のタスクのアクセス終了時間の予測の具体例について説明する。この予測処理は、ストレージスケジューラ205が実行する。ストレージスケジューラ205は、ライトタスクであるタスクC,Dをどのストレージに書き込むかを判断するために予測演算する。
算出時の条件としては、
1.分類Aのリードタスクは、一定帯域を利用してストレージにアクセスする。この分類Aのタスクは、他の分類B,C,D,E,Fのタスクと並列アクセスが可能である。
2.分類B,C,D,E,Fのタスクは、利用可能な全帯域を利用してストレージにアクセスする。すなわち、分類Aが使用していない全帯域を利用する。
3.分類B,C,D,E,Fのタスクは、シーケンシャルに処理する。分類Aのタスクとのみ並列アクセスを許可する。
そして、メインストレージ131のストレージ帯域をM、サブストレージ132のストレージ帯域をS、メインストレージ131に割り当てられた分類BのタスクBxのデータ量をBmx、メインストレージ131に割り当てられた分類CのタスクCxのデータ量をCmx、メインストレージ131に割り当てられた分類AのタスクAxの使用帯域をAmx、サブストレージ132に割り当てられた分類BのタスクBxのデータ量をBsx、サブストレージ132に割り当てられた分類CのタスクCxのデータ量をCsx、サブストレージ132に割り当てられた分類AのタスクAxの使用帯域をAsxとする。このとき、各ストレージ割り当て時のアクセス終了時間をTm、Tsとすると、下記式(1)で求めることができる。
Figure 0005861706
そして、Tm>Tsであれば、ライトタスクC,Dをサブストレージ132へ書き込み、Tm<Tsであれば、ライトタスクC,Dをメインストレージ131へ書き込み指示する。
(ストレージアクセススケジューリングについて)
はじめに、ストレージスケジューラ205が実行するストレージアクセススケジューリングについて説明する。図5−1〜図5−5は、ストレージに対するアクセススケジューリングの例を示す図である。分類A,C(C1,C2),B,Dの順にスケジューリングする例について説明する。ここで、分類A,Bの対象データは、メインストレージ131に存在し、いずれも利用帯域は10、Bのデータ量は30、C1のデータ量は20、C2のデータ量は30であるとする。また、メインストレージ131、サブストレージ132ともにストレージ帯域は50であるとする。
図5−1に示すように、はじめに、ストレージスケジューラ205は、ウェイトキュー203から分類Aのリードタスクを取り出す。この分類Aの対象データは、メインストレージ131にあるため、このタスクをメインストレージ131に割り当てる。つぎに、図5−2に示すように、分類C(C1)のライトタスクは、上記式(1)のアクセス終了時刻の予測演算をおこなうと、Tm=20/(50−10)=0.5、Ts=20/50=0.4と算出されるため、この分類C1のタスクをサブストレージに割り当てる。
つぎに、図5−3に示すように、分類C(C2)のライトタスクについては、Tm=30/(50−10)=0.75、Ts=20+30/50=1により、この分類C2のタスクをメインストレージに割り当てる。つぎに、図5−4に示すように、分類Bのリードタスクは、メインストレージ131に存在するので、この分類Bのタスクをメインストレージ131に割り当てる。最後に、図5−5に示すように、分類Dのライトタスクについては、Tm=(30+30)/(50−10)=1.5、Ts=20/50=0.4と算出されるため、この分類Dのタスクをサブストレージに割り当てる。
ストレージスケジューラ205は、上記のスケジューリング毎に、割り当てたタスクのIDと、終了予測時間をストレージアクセススケジューリングテーブル321に保存していく。
(ストレージアクセスとタスクアクセスの連動について)
つぎに、ストレージアクセスと、タスクアクセスの連動について説明する。タスクスケジューラ206は、ストレージスケジューラ205のスケジューリング情報をストレージアクセススケジューリングテーブル321から読み出し、各CPUのタスクキューにタスクのキューイングをおこなう。また、タスクディスパッチ部207,217は、CPU101,102のディスパッチ状況を基に、タスクキュー204,214に挿入されているタスクのタスクディスパッチをおこなう。そして、アクセス監視部202,212は、ストレージに対するリード、ライトの発生時に、実行中タスクの情報に基づき、タスクがアクセスするストレージとして、メインストレージ131あるいはサブストレージ132を指定する。
このタスクスケジューラ206は、ストレージアクセス先が同一のストレージとなるように、各CPU101,102のタスクキュー204,214にキューイングする。これにより、同一ストレージに対するアクセス競合を避ける。また、タスクディスパッチ部207,217は、分類B,Cのタスクを各CPU101,102で同時に一つしかディスパッチしない。なお、分類B,Cのタスクは、既に別の分類B,Cのタスクがディスパッチされている場合には、タスクキュー204,214に入れたままにする。
また、タスクディスパッチ部207,217は、分類A,D,Eのタスクがキューイングされた場合は、すぐにディスパッチする。これは、分類A,D,Eのタスクはアクセス競合による影響が小さいためである。分類Aのタスクは、全帯域を使用しないためであり、分類D,Eのタスクは、処理時間が非常に短いためである。
また、タスクディスパッチ部207,217は、分類Fのタスクがストレージアクセススケジューリングされており、各CPU101,102のタスクキュー204,214に分類B,Cのタスクが存在せず各CPU101,102で分類B,Cのタスクがディスパッチされていない場合には、この分類Fのタスクをディスパッチする。
また、タスクディスパッチ部207,217は、分類Fのタスクがディスパッチ中に分類B,Cのタスクがキューイングされた場合には、ただちに分類Fのタスクをタスクキュー204,214に戻す。これは、書き戻しによる性能低下を防ぐためである。
図6−1〜図6−5は、ストレージアクセスとタスクアクセスを連動させたスケジューリングの例を示す図である。図5−1〜図5−5と同様に、分類A,Bの対象データは、メインストレージ131に存在し、いずれも利用帯域は10、Bのデータ量は30、C1のデータ量は20、C2のデータ量は30であるとする。また、メインストレージ131、サブストレージ132ともにストレージ帯域は50であるとする。また、タスクの発生順序分類A→C1→C2→B→Dと、各タスクのストレージスケジューリングについては、図5−1〜図5−5を用いて説明した結果を利用するものとする。
はじめに、図6−1に示すように、発生した分類Aのタスクは、ストレージスケジューラ205によりメインストレージ131にアクセススケジューリングされる(図5−1参照)。また、この分類Aのタスクは、いずれのCPU101,102でも割り当て可能である。図示の例では、タスクスケジューラ206は、分類AのタスクをCPU101に割り当てたものとする。
図6−2に示すように、つぎに発生した分類C1のタスクは、ストレージスケジューラ205によりサブストレージ132にアクセススケジューリングされる(図5−2参照)。そして、タスクスケジューラ206は、この分類C1のタスクを分類Aのタスクとはアクセスストレージが異なるので、異なるCPU102に割り当てる。
図6−3に示すように、つぎに発生した分類C2のタスクは、ストレージスケジューラ205によりメインストレージ131にアクセススケジューリングされる(図5−3参照)。そして、タスクスケジューラ206は、この分類C2のタスクについて、アクセス先が同一であるタスクAと同一のCPU101に割り当てる。上述したように、分類Aのタスクと分類C(C2)のタスクは並列にアクセス可能であるため、CPU101はこれら分類Aと分類C2のタスクをマルチタスク処理する。
図6−4に示すように、つぎに発生した分類Bのタスクは、ストレージスケジューラ205によりメインストレージ131にアクセススケジューリングされる(図5−4参照)。そして、タスクスケジューラ206は、この分類Bのタスクについて、アクセス先が同一であるタスクA,C2と同一のCPU101に割り当てる。但し、上述したように、分類Bのタスクは、分類C(C2)のタスクと並列アクセス不可であるため、CPU101は、分類Bのタスクをタスクキュー204にキューイングしておく。
図6−5に示すように、つぎに発生した分類Dのタスクは、ストレージスケジューラ205によりサブストレージ132にアクセススケジューリングされる(図5−5参照)。そして、タスクスケジューラ206は、この分類Dのタスクについて、アクセス先が同一であるタスクC1と同一のCPU102に割り当てる。但し、この分類Dのタスクは、アクセス時間が短いので、タスクディスパッチ部217は、分類C1のタスクと、この分類Dのタスクのディスパッチ順を入れ替えて分類Dのタスクを先に処理させる。
(データの書き戻しについて)
ライトアクセスのタスクを対象ストレージではなく、別ストレージにスケジューリングした場合、Fタスクを生成し、対象ストレージへの書き戻しをおこなう。このため、書き戻し終了までの期間、一時領域を確保する必要がある。
図7は、書き戻し前のデータへのアクセスの状態を示す図である。たとえば、分類Bのタスクが対象ストレージであるメインストレージ131ではなく、異なるサブストレージ132に一時保存された状態が生じたとする。このような書き戻しが終了する前の状態のデータ701に対するアクセスが発生した場合には、データ701の本来の保存先であるメインストレージ131ではなく、この時点でデータ701が一時保存されているサブストレージ132へアクセスする制御が必要となる。
上記データの書き戻しに対応するために、タスク毎に固有のタスク情報をあらかじめ付加しておき、タスクスケジューラ206と、ストレージスケジューラ205とを連携させる。この連携に用いる情報が、上述した図3−1に示したタスクテーブル301である。ストレージスケジューラ205は、このタスクテーブル301を参照して、アクセス先を特定する。また、ライトタスクテーブル311の一時保存先(上記例ではサブストレージ132)にアクセスしているリードタスクが存在する間は、この一時保存されているデータ701を保護しておく。そしてストレージスケジューラ205は、スケジューリング時に、このタスクテーブル301を参照してFタスクに対するスケジューリングを決定する。
(Fタスクのディスパッチ例)
図8−1〜図8−3は、データの書き戻しにかかる処理を示す図である。図8−1に示すように、CPU101,102のキャッシュ(L1キャッシュ)801,802間には、スヌープコントローラ803が設けられる。このスヌープコントローラ803を介してキャッシュ801,802の更新データをCPU101,102間でやりとりし、キャッシュ801,802のコヒーレンシをとっている。
また、キャッシュ801には、CPU101,102の動作フラグ(Cフラグと称す)811,812が設けられ、キャッシュ802にもCPU101,102のCフラグ821,822が設けられている。
CPU101に関するCフラグ811,821は、CPU101で分類B,C,D,Eのタスクを実行時に1、Fタスクを実行時に2の値をとる。CPU102に関するCフラグ812,822についても同様に、CPU102で分類B,C,D,Eのタスクを実行時に1、Fタスクを実行時に2の値をとる。それ以外(分類Aのタスク実行時を含む)の値は0(OFF)である。
そして、図8−1に示すように、CPU101は、分類AのタスクA1と分類Cのタスクをマルチタスク処理しており、タスクキュー204に分類Fのタスクがキューイングされている。また、CPU102は、分類Dのタスクを処理し、タスクキュー214に分類A2のタスクがキューイングされているとする。この場合、CPU101のCフラグ811,821は、分類Cのタスク実行時に1、分類Aのタスク実行時に0となる。CPU102のCフラグ812,822は、分類Dのタスク実行により1となる。
つぎに、図8−2に示すように、CPU101における分類Cのタスクが終了すると(分類Aのタスク(A1)は実行継続)、このときCPU101のCフラグ811,821は、値が0になる。また、CPU102における分類Dのタスクが終了すると、つぎに、分類Aのタスク(A2)が実行されるが、このときCPU102のCフラグ812,822は、値が0になる。これにより、CPU101は、すべてのCフラグ811,812の値が0になったことにより、タスクキュー204のFタスクをディスパッチする。
これにより、図8−3に示すように、CPU101で分類FのFタスクが実行され、Fタスクの実行中は、CPU101のCフラグ811,821は、値が2となる。このように、分類FのFタスクは、複数のCPU101,102のうち一つのCPUでのみ実行される。
(システムの処理手順)
上述したように、実施の形態では、ストレージスケジューラ205と、タスクスケジューラ206が連動して動作する。ストレージスケジューラ205のアクセススケジューリング結果を基に、タスクスケジューラ206がCPU101,102へのタスクの配布をおこなう。
(ストレージスケジューラの処理手順)
図9は、ストレージスケジューラがおこなう処理手順を示すフローチャートである。マスタスケジューラ201に設けられるストレージスケジューラ205は、タスクの発生を待ち(ステップS901:No、およびステップS902:Noのループ)、タスクが発生すると(ステップS901:Yes)、タスクの種類を判別する(ステップS903)。タスクが発生せず(ステップS901:No)、すべてのタスクが終了すると(ステップS902:Yes)、終了する。
ステップS903のタスクの種別の判別では、あらかじめ定めた分類A〜Fのタスクであれば(ステップS903:Yes)、つぎに、分類A,B,Eのリードタスクであるか判別し(ステップS904)、分類A〜Fのタスクでなければ(ステップS903:No)、ストレージスケジューリングを実施せず、タスクスケジューラ206の処理(後述する図10)へ移行する。
ステップS904において、分類A,B,Eのリードタスクであれば(ステップS904:Yes)、アクセスデータが存在するストレージをチェックし、アクセスデータが存在するストレージにスケジューリングする。はじめに、タスクテーブル301を参照し、ライトタスクテーブル311の(2)指定書き込み領域と、リードタスクテーブル312の(2)指定アクセス領域を比較し、一致するライトタスクを検索する(ステップS905)。
つぎに、該当するライトタスクの(4)書き戻し判定フラグをチェックし(ステップS906)、書き戻しが完了しているか判定する(ステップS907)。書き戻しが完了していれば(ステップS907:Yes)、リードタスクテーブル312の(3)読み出し指定領域をライトタスクテーブル311の(2)指定書き込み領域に更新し(ステップS908)、ステップS911に移行する。
一方、ステップS907において、書き戻しが完了していなければ(ステップS907:No)、リードタスクテーブル312の(3)読み出し指定領域をライトタスクテーブル311の(3)書き込み指定領域に更新し(ステップS909)、また、ライトタスクテーブル311の(5)一時保存先アクセスリードタスクにリードタスクテーブル312の(1)リードタスクIDを付加し(ステップS910)、ステップS911に移行する。
ステップS911では、ライトタスクテーブル311の(6)データサイズに、読み出すデータサイズを書き込み(ステップS911)、該当するタスクを対象データのあるストレージに割り当てる(ステップS912)。この後、ストレージアクセススケジューリングテーブル321を更新し(ステップS913)、タスクスケジューラ206の処理(図10)へ移行する。
ステップS904において、分類A,B,Eのリードタスク以外のときには(ステップS904:No)、分類Fのタスクであるか判定する(ステップS914)。分類Fのタスクでなければ(ステップS914:No)、タスクの種別は、残る分類C,Dのいずれかのライトタスクであるため、ストレージアクセス終了時間を予測し、アクセスするストレージを決定し、割り当てる(ステップS915)。この後、ライトタスクテーブル311の(2)指定書き込み領域と、(3)書き込み指定領域が等しいか(すなわち、書き戻し不要か)判定する(ステップS916)。
ステップS916の判定結果、ライトタスクテーブル311の(2)指定書き込み領域と、(3)書き込み指定領域が等しければ(ステップS916:Yes)、ライトタスクテーブル311を更新する(ステップS917)。この際、ライトタスクテーブル311の(2)指定書き込み領域〜(4)書き戻し判定フラグ、(6)データサイズを更新する。ステップS916の判定結果、ライトタスクテーブル311の(2)指定書き込み領域と、(3)書き込み指定領域が等しくなければ(ステップS916:No)、書き戻しが必要であり、Fタスクをタスクキュー204に挿入してから(ステップS918)、ステップS917に移行する。ステップS917の実行後は、ストレージアクセススケジューリングテーブル321を更新し(ステップS913)、タスクスケジューラ206の処理(図10)へ移行する。
また、ステップS914の判定結果、分類Fのタスクであれば(ステップS914:Yes)、このFタスクを対象データのある(書き戻しをおこなうデータが存在する)ストレージに割り当て(ステップS919)、ストレージアクセススケジューリングテーブル321を更新し(ステップS913)、タスクスケジューラ206の処理(図10)へ移行する。
(タスクスケジューラの処理手順)
図10は、タスクスケジューラがおこなう処理手順を示すフローチャートである。マスタスケジューラ201に設けられるタスクスケジューラ206は、図9に示したストレージスケジューラ205によるストレージアクセススケジューリングの処理後に実行される。
はじめに、該当するタスクが分類A〜Fのタスクであるか判別し(ステップS1001)、分類A〜Fのタスクであれば(ステップS1001:Yes)、同一ストレージに割り当てられているタスクがいずれかのCPU101,102のタスクキュー204,214に存在するか判断する(ステップS1002)。判断結果、同一ストレージに割り当てられているタスクがいずれかのCPU101,102のタスクキュー204,214に存在すれば(ステップS1002:Yes)、このタスクを同一のタスクキュー204,214に割り当て(ステップS1003)、処理を終了してストレージスケジューラ205の処理(図9)に戻る。
ステップS1001の判断結果が分類A〜Fのタスクではないとき(ステップS1001:No)、およびステップS1002の判断結果が同一ストレージに割り当てられているタスクがいずれかのCPU101,102のタスクキュー204,214に存在しないとき(ステップS1002:No)、通常スケジューリングを実施し(ステップS1004)、処理を終了してストレージスケジューラ205の処理(図9)に戻る。
(メインスケジューラ、スレーブスケジューラの処理手順)
図11は、メインスケジューラ、スレーブスケジューラがおこなう処理手順を示すフローチャートである。はじめに、メインスケジューラ201、スレーブスケジューラ211は、タスクキュー204、214にタスクが存在するか、もしくはいずれかのCPUのフラグ値が変化したかを判定し(ステップS1101)、タスクが存在すれば(ステップS1101:(1))、分類B〜Fのタスクであるか判定する(ステップS1102)。いずれかのCPUのフラグ値が変化した場合は(ステップS1101:(2))、Fタスクを実行中であるかを判定し(ステップS1111)、Fタスク実行中であれば(ステップS1111:Yes)、Fタスクをタスクキューに戻し(ステップS1112)、ステップS1101に戻り、Fタスク実行中でなければ(ステップS1111:No)、処理を終え、ステップS1101に戻る。いずれの判定にも当てはまらない場合(ステップS1101:No)は、上記処理を終え、タスクの発生、もしくは、いずれかのCPUフラグ値の変更を待つ。
ステップS1102において、分類B〜Fのタスクであれば(ステップS1102:Yes)、分類Fのタスクであるか判断し(ステップS1103)、分類B〜Fのタスクでなければ(ステップS1102:No)、ステップS1110へ移行する。分類Fのタスクであれば(ステップS1103:Yes)、いずれかのCPU101,102で分類B〜Fのタスクがスレッド化されているか判断する(ステップS1104)。判断結果、分類B〜Fのタスクがスレッド化されていれば(ステップS1104:Yes)、処理を終了し、分類B〜Fのタスクがスレッド化されていなければ(ステップS1104:No)、Cフラグを2に設定し(ステップS1105)、このFタスクをスレッド化して処理を開始し(ステップS1106)、処理終了により上記処理を終える。
ステップS1103において、分類Fのタスクでなければ(ステップS1103:No)、同一CPU101,102において(1)分類B〜Eのタスクがスレッド化されているか、あるいは(2)Fタスクがスレッド化されているか判定する(ステップS1107)。判定結果、分類B〜Eのタスクがスレッド化されていれば(ステップS1107:結果(1))、このタスクをスレッド化せずに処理終了する。また、(2)Fタスクがスレッド化されていれば(ステップS1107:結果(2))、Fタスクをタスクキュー214に戻し(ステップS1108)、Cフラグを1に設定し(ステップS1109)、このタスクをスレッド化して処理を開始し(ステップS1110)、処理終了により、上記一連の処理を終える。
また、ステップS1107において、上記(1)分類B〜Eのタスクがスレッド化されておらず、さらに、(2)Fタスクがスレッド化されていない場合には(ステップS1107:No)、ステップS1110により該当タスクをスレッド化して処理を開始し(ステップS1110)、処理終了により、上記一連の処理を終える。
(アクセス監視部の処理手順)
図12は、アクセス監視部がおこなう処理手順を示すフローチャートである。アクセス監視部202,212は、それぞれストレージに対するリード、ライトの発生時に、実行中タスクの情報に基づき、タスクがアクセスするストレージ(メインストレージ131あるいはサブストレージ132)を指定する。
はじめに、(1)タスクディスパッチ発生、あるいは(2)ディスパッチ中のタスク処理終了が発生したか判定する(ステップS1201)。(1)タスクディスパッチが発生したときには(ステップS1201:結果(1))、このタスクが分類A〜Fのタスクか判定する(ステップS1202)。分類A〜Fのタスクであれば(ステップS1202:Yes)、つぎに、分類A,B,Eのリードタスクであるか判定する(ステップS1203)。ステップS1201,およびステップS1202のいずれにおいても該当しないタスクであれば(ステップS1201:No、およびステップS1202:No)、今回のタスクに関する特別なアクセス制御は実施せずに処理を終える。
ステップS1203において、分類A,B,Eのリードタスクであれば(ステップS1203:Yes)、リードタスクテーブル312から情報(3)読み出し指定領域を取得し(ステップS1204)、この読み出し指定領域からデータの読み出しを開始する(ステップS1205)。この後、このタスクの(1)タスク終了、あるいは(2)タスクスイッチを判定し(ステップS1206)、(1)タスク終了時には(ステップS1206:結果(1))、ステップS1207に移行し、(2)タスクスイッチ時には(ステップS1206:結果(2))、処理を終了する。また、(1)タスク終了、(2)タスクスイッチのいずれでもなければ、タスク終了、あるいはタスクスイッチの発生を待つ(ステップS1206:Noのループ)。
ステップS1207では、リードタスクテーブル312の(2)指定アクセス領域と(3)読み出し指定領域とが一致しているか判定する。判定の結果、(2)指定アクセス領域と(3)読み出し指定領域とが一致していれば(ステップS1207:Yes)、処理を終了し、(2)指定アクセス領域と(3)読み出し指定領域とが一致していなければ(ステップS1207:No)、一時保存先からデータを読み込んでいたため、ライトタスクテーブル311の(2)指定書き込み領域と、リードタスクテーブル312の(2)指定アクセス領域が一致するライトタスクを検索し、該当ライトタスクについてライトタスクテーブル311の(5)一時保存先アクセスリードタスクから終了したリードタスクのIDを除去し(ステップS1208)、処理を終了する。
また、ステップS1201において、(2)ディスパッチ中のタスク処理終了が発生したときには(ステップS1201:結果(2))、分類B〜Fのタスクであるか判定し(ステップS1209)、分類B〜Fのタスクであれば(ステップS1209:Yes)、Cフラグを初期値(0)に設定し(ステップS1210)、処理を終了する。一方、分類B〜Fのタスクでなければ(分類Aのタスクを含む)(ステップS1209:No)、処理をおこなわず、終了する。
また、ステップS1203において、分類A,B,Eのリードタスク以外であれば(ステップS1203:No)、このタスクがライトタスクであるかFタスクであるか判定する(ステップS1211)。判定の結果、Fタスクであれば(ステップS1211:Yes)、Fタスクテーブル313の情報(2)書き戻しライトタスクIDに該当するライトタスクをライトタスクテーブル311から検索し、該当タスクの情報(2)指定書き込み領域と、(3)書き込み指定領域を取得し(ステップS1212)、対象領域の書き戻しを開始する(ステップS1213)。
この後、このタスクの(1)タスク終了、あるいは(2)タスクスイッチを判定し(ステップS1214)、(1)タスク終了時には(ステップS1214:結果(1))、書き戻ししたライトタスクの情報(4)書き戻し判定を更新(終了)し(ステップS1215)、ライトタスクテーブル311の情報(2)指定書き込み領域の保護を解除し(ステップS1216)、処理を終了する。また、ステップS1214において、(2)タスクスイッチ時には(ステップS1214:結果(2))、処理をおこなわず、終了する。
また、ステップS1211の判定の結果、Fタスクでなければ(ステップS1211:No)、分類C,Dのライトタスクであり、ライトタスクテーブル311から情報(2)指定書き込み領域と、(3)書き込み指定領域を取得する(ステップS1217)。この後、(2)指定書き込み領域と(3)書き込み指定領域が一致しているか判定する(ステップS1218)。判定の結果、一致していなければ(ステップS1218:No)、書き込み先のストレージ領域を保護し(ステップS1219)、指定領域へのデータの書き込みを開始し(ステップS1220)、処理終了により、上記一連の処理を終える。ステップS1218にて、(2)指定書き込み領域と(3)書き込み指定領域が一致していれば(ステップS1218:Yes)、ステップS1219をスキップして指定領域へのデータの書き込みを開始し(ステップS1220)、処理終了により、上記一連の処理を終える。
(実施の形態による競合回避および全アクセスの処理時間について)
図13は、実施の形態による競合の回避および全アクセスの処理時間を説明する図である。上述したストレージアクセススケジューリングの結果、メインストレージ131に対して分類CのライトタスクC1,C3を割り当て、サブストレージ132に対して分類CのライトタスクC2,C4を割り当てたと仮定する。ここで、各タスクC1〜C4の書き込みデータ量はいずれも50、各ストレージの帯域は50であるとする。
上述の実施の形態の処理(図中右下)によれば、同一アクセス先のタスクが同一CPU101,102に割り当てられるので、メインストレージ131とサブストレージ132のいずれにもアクセス競合は発生しない。また、各CPU101,102でシーケンシャルにアクセスがおこなわれると仮定すると、全アクセスの処理時間は、50/50+50/50=2となる。すなわち、メインストレージ131とサブストレージ132の全帯域を有効に使用することができる。
一方、システムの基本構成は実施の形態と同一構成であるが、従来の未対策技術、すなわち、ストレージアクセススケジュールのみ実行し、ストレージアクセススケジューリングとタスクスケジューリングとが連携していない構成を対比のために図中左下に示した。この場合、図示のように、タスクC1とC2がCPU101に割り当てられ、タスクC3とC4がCPU102に割り当てられる場合がある。このようにタスクスケジューリングされ、メインストレージ131に割り当てられているタスクC1,C3に対しCPU101のタスクC1と、CPU102のタスクC3が実行されると、メインストレージ131に対してCPU101,102が同時にアクセスするアクセス競合が発生する。そして、各CPU101,102でシーケンシャルにアクセスがおこなわれると仮定すると、全アクセスの処理時間は、タスクC1とC3の実行によるアクセス競合、およびタスクC2とC4の時刻によるアクセス競合の発生により、50/25+50/25=4となり、実施の形態に比して倍の処理時間がかかる。この例からみても、実施の形態の処理によれば、高いアクセス性能を達成できることがわかる。
(システムの適用例)
図14は、図1に示したコンピュータを用いたシステムの適用例を示す図である。図14において、ネットワークNWは、サーバ1401,1402とクライアント1431〜1434とが通信可能なネットワークであり、たとえば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、携帯電話網などで構成される。
サーバ1402は、クラウド1420を構成するサーバ群(サーバ1421〜1425)の管理サーバである。クライアント1431〜1434のうち、クライアント1431はノート型パソコン、クライアント1432はデスクトップ型パソコン、クライアント1433は携帯電話機(スマートフォン、PHS(Personal Handyphone System)でもよい)、クライアント1434はタブレット型端末である。図14のサーバ1401,1402,1421〜1425、クライアント1431〜1434は、たとえば、図1に示したコンピュータにより実現される。
また、本実施の形態は、図1に示した各CPU101,102、およびストレージ131,132がそれぞれ異なるコンピュータ(たとえば図14の携帯電話機やサーバ)に搭載され、複数のコンピュータがネットワークNWを介して分散型の並列処理をおこなう構成に適用することもできる。
以上説明した開示技術によれば、同一のストレージにアクセスするタスクを同じCPUに割り当てることにより、複数のCPUが一つのストレージにアクセスするアクセス競合を回避することができ、効果的なスケジューリングをおこなえるようになる。
また、タスクの種別を判定して、あるタスクによってアクセスしているストレージに対してさらに他のタスクが生じることによるアクセス競合を避けるようにしている。タスクの種別については、データサイズによる処理時間等に基づき、複数の種別のタスクについて、それぞれ分類しておけばよく、瞬間的にアクセス競合が発生するが全体のアクセス時間に影響を与えない場合には、アクセス競合を許容することも判断している。たとえば、全帯域ではなく一定帯域のみ利用するリードタスクであれば、他のライトタスク等は、並行して同じストレージへのアクセスを許容してもよい。
また、ライトタスクのデータ書き込み対象のストレージは、複数のタスクがそれぞれのストレージにアクセスするときの時間に基づき決定するため、アクセス時間を短時間とすることができるようになる。この決定には、各ストレージの帯域や、分類されたタスクのデータ量などの複数の値を用いており、適したストレージを決定できるようになる。
また、データの読み出し先のストレージが定まっているリードタスクを一つのCPUで実行中に、異なるCPUでライトタスクを実行する際には、ライトタスクのデータを一旦、他のストレージに書き込む。他のストレージに一旦書き込まれたデータは、ストレージへのアクセス終了後に本来のストレージに移動させる。これにより、システム全体のストレージに対するアクセス処理を効率化できるようになる。
上記の実施形態において説明したストレージは、たとえばディスク装置であるが、これに限らず、複数のCPUが共有使用することによりアクセス競合が生じるメモリであれば、他の各種データメモリ装置であっても同様に適用することができる。
100 システム
101,102 CPU
103 バス
111,112 オペレーティングシステム(OS)
121 メモリ
131 メインストレージ
132 サブストレージ
201 マスタスケジューラ
202,212 アクセス監視部
203 ウェイトキュー
204,214 タスクキュー
205 ストレージスケジューラ
206 タスクスケジューラ
207,217 タスクディスパッチ部
211 スレーブスケジューラ
221 データベース(DB)
301 タスクテーブル
311 ライトタスクテーブル
312 リードタスクテーブル
313 Fタスクテーブル
321 ストレージアクセススケジューリングテーブル
322 タスクスケジューリングテーブル

Claims (14)

  1. 複数のCPUがそれぞれ所定のタスク実行毎に、メモリに対するアクセス種別と利用帯域に基づき当該タスクのタスク種類を判定し、当該タスク種類及び各タスクのアクセス終了時間の予測に基づいて、各タスクをいずれのストレージにアクセスさせるかをスケジューラによりスケジューリングし、
    前記スケジューリングに基づき、同一メモリへアクセスするタスクを前記スケジューラにより同一のCPUに割り当て
    ことを特徴とするスケジューリング方法。
  2. 前記スケジューラは、前記タスクが第1タスク種類に属するか否かを判定し、
    前記タスクが前記第1タスク種類に属するときは前記タスクがアクセスする第1アクセス領域が第1メモリまたは第2メモリにあるか否かを判定し、
    前記スケジューラは、前記判定結果に基づいて前記タスクがアクセスするメモリを前記第1メモリまたは前記第2メモリに設定すること
    を特徴とする請求項1に記載のスケジューリング方法。
  3. 前記第1タスク種類はメモリリードタスクであること
    を特徴とする請求項2に記載のスケジューリング方法。
  4. 前記スケジューラは、前記タスクが前記第1タスク種類に属さないときは前記タスクが第2タスク種類に属するか否かを判定すること
    を特徴とする請求項2または請求項3に記載のスケジューリング方法。
  5. 前記第2タスク種類はメモリリードライトタスクであること
    を特徴とする請求項4に記載のスケジューリング方法。
  6. 前記スケジューラは、前記タスクが第3タスク種類に含まれるときは、前記タスクが前記第1メモリにアクセスする第1アクセス時間と前記タスクが前記第2メモリにアクセスする第2アクセス時間との比較結果に基づいて、前記タスクがアクセスするメモリをアクセス時間が短い前記第1メモリまたは前記第2メモリに設定すること
    を特徴とする請求項2乃至請求項5の何れか一に記載のスケジューリング方法。
  7. 前記スケジューラは、前記第1アクセス領域が第3タスク種類に属するタスクがアクセスする第2アクセス領域に含まれるか否かを判定し、
    前記判定結果に基づいて前記第1アクセス領域が前記第1メモリまたは前記第2メモリにあるか否かを判定すること
    を特徴とする請求項2乃至請求項5の何れか一に記載のスケジューリング方法。
  8. 前記第3タスク種類はメモリライトタスクであること
    を特徴とする請求項6または請求項7に記載のスケジューリング方法。
  9. 前記スケジューラは、前記第1アクセス領域が前記第2アクセス領域に含まれるときは、前記第2アクセス領域の前記第2メモリから前記第1メモリへの書き込みの終了に基づいて前記タスクがアクセスするメモリを前記第1メモリまたは前記第2メモリに設定すること
    を特徴とする請求項6または請求項7に記載のスケジューリング方法。
  10. 前記スケジューラは、前記タスクがアクセスするメモリが前記第2メモリに設定されるとき、前記タスクがアクセスした前記第2メモリのメモリ領域前記第1メモリに書き込こと
    を特徴とする請求項2乃至請求項9の何れか一に記載のスケジューリング方法。
  11. 前記スケジューラは、前記タスクが第1タスク種類グループに含まれるときは、前記第1メモリにアクセスする他のタスクが割り当てられている第2CPUに前記第1タスク種類グループに含まれるタスクを割り当てること
    を特徴とする請求項2乃至請求項10の何れか一に記載のスケジューリング方法。
  12. 前記スケジューラは、第2CPUに割り当てられるタスクが第2タスク種類に属さないときであって前記第2CPUで実行されている他のタスクが前記第2タスク種類に属するとき、前記他のタスクは前記第2CPUのタスクキューに戻されること
    を特徴とする請求項2乃至請求項10の何れか一に記載のスケジューリング方法。
  13. 前記スケジューラは、第2CPUに割り当てられるタスクが第2タスク種類に属するときであって前記第2CPUを含む複数のCPUの少なくとも一のCPUで前記第2タスク種類グループに含まれるタスクが実行されていないとき、前記第2タスク種類に属するつぎのタスクの実行を停止すること
    を特徴とする請求項2乃至請求項10の何れか一に記載のスケジューリング方法。
  14. 複数のCPUと複数のメモリを含み、
    複数の前記CPUがそれぞれ所定のタスク実行毎に、前記メモリに対するアクセス種別と利用帯域に基づき当該タスクのタスク種類を判定し、当該タスク種類及び各タスクのアクセス終了時間の予測に基づいて、各タスクをいずれのストレージにアクセスさせるかをスケジューラによりスケジューリングし、
    前記スケジューリングに基づき、同一メモリへアクセスするタスクを前記スケジューラにより同一の前記CPUに割り当てる制御を行う、
    ことを特徴とするシステム。
JP2013522397A 2011-06-28 2011-06-28 スケジューリング方法およびシステム Expired - Fee Related JP5861706B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/064841 WO2013001613A1 (ja) 2011-06-28 2011-06-28 スケジューリング方法およびシステム

Publications (2)

Publication Number Publication Date
JPWO2013001613A1 JPWO2013001613A1 (ja) 2015-02-23
JP5861706B2 true JP5861706B2 (ja) 2016-02-16

Family

ID=47423556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013522397A Expired - Fee Related JP5861706B2 (ja) 2011-06-28 2011-06-28 スケジューリング方法およびシステム

Country Status (3)

Country Link
US (1) US9507633B2 (ja)
JP (1) JP5861706B2 (ja)
WO (1) WO2013001613A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175885B2 (en) 2015-01-19 2019-01-08 Toshiba Memory Corporation Memory device managing data in accordance with command and non-transitory computer readable recording medium
CN109471812B (zh) * 2015-01-19 2023-09-05 铠侠股份有限公司 存储装置及非易失性存储器的控制方法
US9965323B2 (en) 2015-03-11 2018-05-08 Western Digital Technologies, Inc. Task queues
WO2017072827A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 計算機システム、及び、アクセス制御方法
US9606792B1 (en) * 2015-11-13 2017-03-28 International Business Machines Corporation Monitoring communication quality utilizing task transfers
CN109656690A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 调度***、方法和存储介质
US10275352B1 (en) * 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel
US20240095541A1 (en) * 2022-09-16 2024-03-21 Apple Inc. Compiling of tasks for streaming operations at neural processor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0318976A (ja) 1989-06-15 1991-01-28 Nec Corp 画像データ検索システム
US6256704B1 (en) 1993-09-16 2001-07-03 International Business Machines Corporation Task management for data accesses to multiple logical partitions on physical disk drives in computer systems
JP3563541B2 (ja) 1996-09-13 2004-09-08 株式会社東芝 データ格納装置及びデータ格納方法
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
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
US6986013B2 (en) * 2002-12-05 2006-01-10 International Business Machines Corporation Imprecise cache line protection mechanism during a memory clone operation
US7330930B1 (en) * 2004-03-09 2008-02-12 Adaptec, Inc. Method and apparatus for balanced disk access load distribution
JP5089896B2 (ja) * 2006-03-17 2012-12-05 株式会社日立製作所 マイクロプロセッサの負荷分散機能を備えたストレージシステム
US8150946B2 (en) * 2006-04-21 2012-04-03 Oracle America, Inc. Proximity-based memory allocation in a distributed memory system
US8132172B2 (en) * 2007-03-26 2012-03-06 Intel Corporation Thread scheduling on multiprocessor systems
JP2009080690A (ja) * 2007-09-26 2009-04-16 Nec Corp 情報記録再生システム,情報記録再生方法及びプログラム
JP4983632B2 (ja) 2008-02-06 2012-07-25 日本電気株式会社 情報通信システム、そのアクセス調停方法及びその制御プログラム
US8250328B2 (en) * 2009-03-24 2012-08-21 Micron Technology, Inc. Apparatus and method for buffered write commands in a memory
JP2011059777A (ja) * 2009-09-07 2011-03-24 Toshiba Corp タスクスケジューリング方法及びマルチコアシステム

Also Published As

Publication number Publication date
US9507633B2 (en) 2016-11-29
US20140109100A1 (en) 2014-04-17
WO2013001613A1 (ja) 2013-01-03
JPWO2013001613A1 (ja) 2015-02-23

Similar Documents

Publication Publication Date Title
JP5861706B2 (ja) スケジューリング方法およびシステム
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US8893145B2 (en) Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes
JP5626690B2 (ja) マルチプロセス間のバリアの物理マネージャ
US20080098180A1 (en) Processor acquisition of ownership of access coordinator for shared resource
KR20130063003A (ko) 컨텍스트 스위칭
JP2004326754A (ja) 共用リソースを使用するための仮想計算機の管理
JP6753999B2 (ja) 分散データベースシステム及び分散データベースシステムのリソース管理方法
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
US8954969B2 (en) File system object node management
CN108733585B (zh) 缓存***及相关方法
US10579419B2 (en) Data analysis in storage system
US20120185672A1 (en) Local-only synchronizing operations
US10248354B2 (en) Hypervisor enabling secure communication between virtual machines by managing exchanging access to read buffer and write buffer with a queuing buffer
US20150381520A1 (en) Data set multiplicity change device, server, data set multiplicity change method and computer redable medium
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
KR20140037749A (ko) 실행 제어 방법 및 멀티프로세서 시스템
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
EP3702911B1 (en) Hardware for supporting os driven load anticipation based on variable sized load units
JP2018049394A (ja) データベース管理装置、データベース管理方法、およびデータベース管理プログラム
Chen et al. A real-time scheduling strategy based on processing framework of Hadoop
JP6036692B2 (ja) 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体
Nabavinejad et al. Data locality and VM interference aware mitigation of data skew in hadoop leveraging modern portfolio theory
KR101907007B1 (ko) 프로세스의 우선순위를 이용한 페이지 처리 방법 및 페이지 처리 장치
JP2016103258A (ja) 並列演算装置、並列演算システム、およびジョブ制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150907

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: 20151124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151207

R150 Certificate of patent or registration of utility model

Ref document number: 5861706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees