JP2013149108A - 情報処理装置及びその制御方法、プログラム - Google Patents

情報処理装置及びその制御方法、プログラム Download PDF

Info

Publication number
JP2013149108A
JP2013149108A JP2012009429A JP2012009429A JP2013149108A JP 2013149108 A JP2013149108 A JP 2013149108A JP 2012009429 A JP2012009429 A JP 2012009429A JP 2012009429 A JP2012009429 A JP 2012009429A JP 2013149108 A JP2013149108 A JP 2013149108A
Authority
JP
Japan
Prior art keywords
cpu
processor
wake
information
identification information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012009429A
Other languages
English (en)
Inventor
Junichi Ishikawa
石川  淳一
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2012009429A priority Critical patent/JP2013149108A/ja
Priority to US13/670,030 priority patent/US20130191839A1/en
Publication of JP2013149108A publication Critical patent/JP2013149108A/ja
Pending legal-status Critical Current

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract


【課題】 複数のプロセッサコアによる並列処理を実行するマルチプロセッサコアを搭載したシステムにおいて、起床させたプロセスの処理時間を低減する。
【解決手段】 プロセスがリソースの使用を開始する際に、当該プロセスを示すプロセス識別情報と、プロセスが使用するリソースを示すリソース識別情報と、プロセスが割り当てられているプロセッサを示すプロセッサ識別情報と、を対応づけて管理情報として記録する。プロセスを起床させる際に、管理情報において、該起床させるプロセスに対応づけられているプロセッサを当該プロセスに割り当てる。
【選択図】 図1

Description

本発明は、複数のプロセッサコアによる並列処理を実行するマルチプロセッサコアを搭載したシステムに関し、特に、プロセス起床時の実行プロセッサコアの選択技術に関するものである。
近年の情報処理装置においては、複数のプロセッサコアを使用して並列処理を実行するマルチプロセッサコアを搭載したシステムが一般的になっている。このシステムでは、並列処理を実行するプロセスが複数存在し、OS(オペレーティングシステム)に備わっているスケジューリング機能によって、各プロセスをどのプロセッサで実行するかを選択する。
プロセスが新しく生成された場合、OSは、生成した親のプロセスを実行するプロセッサを新しく生成されたプロセスへ優先的に割り当てる。しかし、プロセスが休止状態になった場合、そのプロセスに対するプロセッサの割当は無くなってしまう。休止状態のプロセスは、起床時にどのプロセッサで実行するかが再度選択される。OSは、休止中のプロセスを起床する場合、メモリのキャッシュの有効性を考慮してそのプロセスが前回実行していたプロセッサでの実行を優先する。但し、システムに搭載される各プロセッサの負荷バランスが不均衡である場合には、均衡をとるために別プロセッサでの実行を選択することがある。
特許文献1では、マルチプロセッサコアを搭載したシステムで、リソース競合の要因となるリソースを検出し、検出したリソース競合を回避するようにスケジューリングを行う方法が開示されている。具体的には、起床したプロセスがリソース競合した場合に、そのリソースに対するロック要求及びロック要求後の待ち時間に基づき、複数のプロセッサの中からその待ち時間に対応するプロセッサを選択するというものである。
また、特許文献2では、プロセスの依存関係に基づき、スケジューリング方式を変更する方法が開示されている。具体的には、時分割スケジューリングをするプロセスの起床から休止までの処理をノードとして扱い、各ノード同士の依存関係の解析を実施する。解析した依存関係情報に基づき、プロセス単位でグループスケジューリングをする方式に変更するというものである。
特開2010−128664号公報 特開2009−48358号公報
並列処理を実行するプロセスが複数存在する場合では、複数のプロセスが同一の共有メモリを使用してプロセス間を通信したり、複数のプロセスで同一のファイルを読み書きしたりすることがある。このような場合、複数のプロセスが同一内容のデータをキャッシュメモリに保持することになる。キャッシュヒット率やキャッシュコヒーレンシ処理時間を考慮すると、これら複数のプロセスは同一プロセッサに存在した方が効率は良い。
しかしながら、従来のマルチプロセッサコアを搭載したシステム用のスケジューリング機能では、プロセス起床時に、プロセスが扱うキャッシュメモリを考慮せずにプロセッサを選択する。そのため、複数のプロセスが同一内容のデータをキャッシュメモリに保持する場合でも、別々のプロセッサで動作するという問題が有る。
また、特許文献1に記載された技術においては、リソース競合によってプロセッサを選択することはできるが、キャッシュメモリを考慮してプロセッサを選択することができないという問題が有る。
また、特許文献2に記載された技術においては、プロセスの依存関係でスケジューリングを変更することはできるが、その依存関係に応じてプロセッサを選択することができないという問題が有る。
本発明は上記の課題を解決するためになされたものであり、複数のプロセッサコアによる並列処理を実行するマルチプロセッサコアを搭載したシステムにおいて、起床させたプロセスの処理時間を低減することを目的とする。
上記の目的を達成するための本発明による情報処理装置は、複数のプロセッサを有する情報処理装置であって、プロセスがリソースの使用を開始する際に、当該プロセスを示すプロセス識別情報と、前記プロセスが使用するリソースを示すリソース識別情報と、前記プロセスが割り当てられているプロセッサを示すプロセッサ識別情報と、を対応づけて管理情報として記録する第1制御手段と、前記プロセスを起床させる際に、前記管理情報において、該起床させるプロセスに対応づけられているプロセッサを当該プロセスに割り当てる第2制御手段とを備えることを特徴とする。
本発明によれば、複数のプロセッサによる並列処理を実行するシステムにおいて、プロセス起床時にプロセスが起床前に扱っていたメモリ領域やファイル等のリソースを考慮してプロセッサを選択する。これにより、キャッシュヒット率を向上させたり、キャッシュコヒーレンシ処理時間を低減させたりすることができる。
本発明に係る情報処理装置の主要な構成を示す図である。 実施形態1の情報処理装置の利用例を示す図である。 実施形態1の情報処理装置の主要な構成を示す図である。 実施形態1の情報処理装置でのCPUの選択を表す図である。 実施形態1の共有メモリの使用開始処理を示すフローチャートである。 実施形態1の共有メモリアクセスリストの一例を示す図である。 実施形態1のプロセスの休止処理を示すフローチャートである。 実施形態1のプロセスの起床処理を示すフローチャートである。 実施形態2の情報処理装置の主要な構成を示す図である。 実施形態2の情報処理装置でのCPUの選択を表す図である。 実施形態2のファイルの使用開始処理を示すフローチャートである。 実施形態2のファイルアクセスリストの一例を示す図である。 実施形態2のプロセスの休止処理を示すフローチャートである。 実施形態2のプロセスの起床処理を示すフローチャートである。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
ここで、本発明は多くの異なる形態で実施可能であるが、本発明に係る情報処理装置の基本的な構成を、図1を参照して説明する。
同図において、100は複数のプロセッサを使用して並列処理を実行するシステム(情報処理装置)である。一般的なマルチプロセッシングは、シングルコアのCPUを複数個用いるケースや、マルチコアのCPUを用いるケースが多いとされ、CPUは演算処理チップと同義に扱われることが多い。しかし、組み込み技術の分野ではマルチコアCPUの備えるプロセッサコア自体をCPU0〜nと呼称することが多いので、以降の説明ではプロセッサをCPUと呼称する。尚、本明細書ではプロセッサとプロセッサコア、コプロセッサはほぼ同義であるとする。
101はプロセスがあるリソース(例えば、データ、ファイル、共有メモリ領域)を使用開始する時に実行するリソース使用開始部(第1制御部)である。プロセスがリソース使用開始部101を実行すると、そのリソースの使用が可能になる。そして、リソース使用開始部101は、プロセスを特定するためのプロセス識別情報(以降、プロセスID)、そのプロセスに割り当てられているCPUを特定するためのCPU識別情報(プロセッサ識別情報と同義、以降、CPU ID)、そのリソースを特定するリソース識別情報(以降、リソースID)を一組とした管理情報をリソース管理リスト102に記録する。
103はプロセスを休止する時に実行するプロセス休止部である。プロセスがプロセス休止部103を実行すると、対象のプロセスはCPUの割当が無くなり、ウェイトキューにつながれて休止状態になる。そして、プロセス休止部103は、リソース管理リスト102に記録されている管理情報の中から休止したプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを「割当無し」に変更する(クリアする)。
104はプロセスを起床する時に実行するプロセス起床部である。プロセス起床部104は、あるプロセスに対し起床命令を出すと、リソース管理リスト102に、起床させるプロセスのプロセスID(第1のプロセスID)が存在し、かつ、そのプロセスが使用するリソースと同一のリソースを使用するプロセスのプロセスID(第2のプロセスID)が存在するかを判定する。存在する場合、プロセス起床部104は、リソース管理リスト102から、同一のリソースを使用するプロセスに割り当てられているCPU IDを取得する。
プロセス起床部104の実行後に実行されるCPU割当部105(第2制御部)では、起床させるプロセスにCPUの割当を行う。プロセス起床部104でCPU IDを取得している場合は、CPU割当部105は、そのCPU IDに対応するCPUを特定し、起床させるプロセスにそのCPUを割り当てる。一方、CPU IDを取得していない場合は、CPU割当部105は、OSに備わるCPU特定部で実行するCPUを特定し、特定したCPUを起床させるプロセスに割り当てる。尚、OSに備わるCPU特定機能の例としては、CPU0〜nのIDが小さいものから順に割り当てる方法や、CPUの負荷が小さいものを優先的に割り当てる方法など、種々の機能がある。
CPU割当後、CPU割当部105は、起床させるプロセスをウェイトキューから割り当てたCPUに移動させ、プロセスの状態を実行可能状態に変更(更新)する。そして、CPU割当部105は、リソース管理リスト102の管理情報の中から起床するプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを特定したCPU IDに変更する。
以上が本発明に係る情報処理装置の基本的な構成である。図1の説明では使用するリソースの内容について触れていないが、以下の各実施形態では具体的なリソース(例えば、共有メモリ、ファイル等のデータ)を用いて、本発明に係る情報処理装置の主要な構成とその処理手順(制御方法)について説明する。
<実施形態1>
以下、図面を参照して本発明の実施形態1を詳細に説明する。
実施形態1は、リソースとして共有メモリ(複数プロセス間で共有可能なメモリ領域)の情報を元に、CPUの選択を行う構成について説明する。
図2は本発明を適用可能な情報処理装置の利用例を示す図である。同図において、200は情報処理装置、201はCPU、202は一次記憶装置、203はI/Oコントローラ、204は二次記憶装置、205は入力装置、206は表示装置である。情報処理装置200においては、通常、CPU201が複数のプロセスを一つずつ処理し、処理は一定期間毎に切り替えて実施される。CPU201には、演算処理等を行なうプロセッサコアが1つ以上存在し、CPU201自体が情報処理装置200に複数存在する場合もある。
一次記憶装置202は、プログラム及びデータを記録する。複数のプロセスが同時並行的にアクセス可能な共有メモリの領域は、一次記憶装置202に確保される。203はI/Oコントローラである。204は二次記憶装置である。ファイルやディレクトリ等のデータは、二次記憶装置204に記録される。二次記憶装置204にあるデータの操作は、オペレーティングシステムからI/Oコントローラ203に対して、READ要求、WRITE要求を行うことで実現する。
入力装置205は、キーボード、ポインティングデバイス(マウス等)で構成され、ユーザからの操作指示を受け付ける。表示装置206は、情報処理装置200を操作するためのGUI(カーソル、ウィンドウ等)を表示する。
図3は実施形態1に係る情報処理装置の主要な構成を示す図である。同図において、300は図1のシステム100に対応し、その説明は省略する。
301は複数のプロセスが同時並行的にアクセス可能な共有メモリを、使用開始する時に実行する共有メモリ使用開始部である。プロセスが共有メモリを特定する共有メモリIDを指定して共有メモリ使用開始部301を実行すると、そのプロセスのデータセグメントに指定した共有メモリがマップされる。そして、共有メモリ使用開始部301は、プロセスID、そのプロセスに割り当てられているCPUのCPU ID、マップした共有メモリIDの情報を一組とした管理情報を共有メモリアクセスリスト302に記録する。共有メモリアクセスリスト302は、一次記憶装置202もしくは二次記憶装置204に存在する。
303はプロセスを休止する時に実行するプロセス休止部である。プロセスがプロセス休止部303を実行すると、対象のプロセスはCPUの割当が無くなり、ウェイトキューにつながれて休止状態になる。そして、プロセス休止部303は、共有メモリアクセスリスト302の管理情報の中から休止したプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを「割当無し」に変更する。
304はプロセスを起床する時に実行するプロセス起床部である。プロセス起床部304は、あるプロセスに対し起床命令を出すと、共有メモリアクセスリスト302に、起床させるプロセスのプロセスIDが存在し、かつ、そのプロセスが使用する共有メモリと同一の共有メモリを使用するプロセスのプロセスIDが存在するかを判定する。存在する場合、プロセス起床部304は、共有メモリアクセスリスト302から、同一の共有メモリを使用するプロセスに割り当てられているCPU IDを取得する。尚、同一の共有メモリであるかどうかは、共有可能なメモリ領域に領域IDを振っている場合は領域IDで判断してもよいし、アドレスの連続性、メモリチップに固有の情報(チップIDや、アドレスの一部など)から判断するなど種々の方法を用いることができる。
プロセス起床部304の実行後に実行されるCPU割当部305では、起床させるプロセスにCPUの割当を行う。CPU割当とプロセスの移動については、図1のCPU割当部105で説明したものと同一であり省略する。プロセスの移動後、CPU割当部305は、共有メモリアクセスリスト302の管理情報の中から起床するプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを特定したCPU IDに変更する。
図4は、図3の構成において、2つのCPUを搭載したシステムの場合に、複数のプロセスが同一の共有メモリを使用しているかどうかでCPUを選択することを示す図である。
400は1つ目のCPU#Aであり、複数のプロセスが存在する。401は2つ目のCPU#Bであり、複数のプロセスが存在し、その中のプロセスAは共有メモリ402を使用している。403はウェイトキューであり、共有メモリ402を使用するプロセスBと使用していないプロセスCが存在する。
この状態でウェイトキュー403のプロセスBを起床させると、プロセスAと同一の共有メモリ402を使用しているため、プロセスBは2つ目のCPU#B401に移動され、プロセスBの状態は実行可能状態に変更される。
ウェイトキュー403のプロセスCを起床させると、共有メモリ402を使用していないため、プロセスCはOSに備わるCPU特定部によって1つ目のCPU#A400か2つ目のCPU#B401のどちらかに移動される。その後、移動したCPUでプロセスの状態が実行可能状態に変更される。
次に、図5、図6、図7、図8を用いて、実施形態1を適用可能なシステムを備えた情報処理装置を、ユーザが利用した時の処理手順について説明する。
まず、図5を用いて、共有メモリを使用開始する処理手順について説明する。
ステップS500で、共有メモリ使用開始部301は、プロセスが指定した共有メモリが既に存在するかどうかを判定する。存在する場合(ステップS500でYES)、ステップS501に移り、共有メモリ使用開始部301は、プロセスが指定した共有メモリの共有メモリIDを取得する。一方、存在しない場合(ステップS500でNO)、ステップS502に移り、共有メモリ使用開始部301は、共有メモリを一次記憶装置202の領域に新規に作成し、作成した共有メモリの共有メモリIDを取得する。
ステップS503で、共有メモリ使用開始部301は、取得した共有メモリIDを指定して、使用開始するプロセスを共有メモリにマップする。ステップS504で、共有メモリ使用開始部301は、使用開始したプロセスのプロセスID、そのプロセスが実行しているCPUのCPU ID、取得した共有メモリIDを一組とした管理情報を共有メモリアクセスリスト302に記録する。
共有メモリアクセスリスト302を、具体的に図6を用いて説明する。
図6は共有メモリアクセスリストの具体例であり、同図の600がステップS504で管理情報を記録した共有メモリアクセスリストを示す図である。この例では、CPU ID「0」のプロセスID「10」が共有メモリ「1000」を使用している。CPU ID「0」のプロセスID「11」が共有メモリ「3000」を使用している。CPU ID「1」のプロセスID「12」が共有メモリ「1000」を使用している。共有メモリアクセスリスト302は、新しく共有メモリをマップする度に情報が追加される。
次に、図7を用いて、プロセスを休止する手順について説明する。
ステップS700で、プロセス休止部303は、休止するプロセスのプロセスIDを取得し、取得したプロセスIDが共有メモリアクセスリスト302に存在するかを判定する。存在する場合(ステップS700でYES)、ステップS701に移り、プロセス休止部303は、取得したプロセスIDに該当する項目のCPU IDの部分を「無し」に変更する。一方、存在しない場合(ステップS700でNO)、ステップS702に移り、プロセス休止部303は、休止するプロセスをCPUからウェイトキューに移し、プロセスを休止状態にする。
ステップS700からステップS702の処理を、具体的に図6を用いて説明する。図6の600は図5のステップS504の処理後の共有メモリアクセスリスト302の状態を示す図である。共有メモリアクセスリスト302がこの状態600である時に、プロセスID「12」のプロセスを休止させる。この場合、プロセスID「12」の情報は存在するため、CPU IDの部分を「無し」に変更する。その結果、共有メモリアクセスリスト302は図6の状態601となる。
次に、図8を用いて、休止しているプロセスを起床させる手順について説明する。
ステップS800で、プロセス起床部304は、起床させるプロセスのプロセスIDを取得する。そして、プロセス起床部304は、共有メモリアクセスリスト302を参照し、取得したプロセスIDが共有メモリアクセスリスト302に存在するかどうかを判定する。
存在しない場合(ステップS800でNO)、ステップS804に移り、プロセス起床部304は、OSに備わるCPU特定部でCPUを特定する。その後、CPU割当部305が、起床させるプロセスをウェイトキューから特定したCPUに移動し、起床させるプロセスの状態を実行可能状態に変更する。
一方、ステップS800において、存在する場合(ステップ800でYES)、ステップS801に移る。ステップS801で、プロセス起床部304は、共有メモリアクセスリスト302を参照し、取得したプロセスIDが使用する共有メモリIDを特定し、その共有メモリIDを使用する他のプロセスが存在するかを判定する。
存在しない場合(ステップS801でNO)、ステップS804に移る。一方、存在する場合(ステップS801でYES)、ステップS802に移り、プロセス起床部304は、起床させるプロセスと同一の共有メモリを使用するプロセスが存在するCPUを特定する。その後、CPU割当部105が、起床させるプロセスをウェイトキューから特定したCPUに移動させ、起床させるプロセスの状態を実行可能状態に変更する。
ステップS803で、プロセス起床部304は、共有メモリアクセスリスト302にある起床させるプロセスに対応するCPU IDを、ステップS802で特定したCPU IDに変更する。
ステップS800からステップS803の処理を、具体的に図6を用いて説明する。図6の601は図7のステップS701でプロセスを休止状態にした後に変更した共有メモリアクセスリスト302の状態を示す図である。共有メモリアクセスリスト302がこの状態601である時に、プロセスID「12」のプロセスを起床させる。この場合、プロセスID「12」の情報は存在するため、プロセスID「12」に対応する共有メモリIDを参照する。共有メモリIDは「1000」であり、その共有メモリIDを使用する他のプロセスは、プロセスID「10」のプロセスが存在する。そして、プロセスID「10」のCPU IDは「0」であるため、起床させるプロセスのプロセスID「12」に対応するCPU IDを「無し」から「0」に変更する。その結果、共有メモリアクセスリスト302は図6の状態602となる。
以上説明したように、実施形態1では、プロセスが共有メモリを使用開始するために共有メモリ使用開始部301を実行すると、その情報を共有メモリアクセスリスト302に追加する。プロセスがプロセスを休止するためにプロセス休止部303を実行すると、そのプロセスの情報を元に共有メモリアクセスリスト302を変更する。プロセスが特定のプロセスを起床させるためにプロセス起床部304を実行すると、共有メモリアクセスリスト302にあるそのプロセスの情報を参照する。そして、参照した情報を元にCPU割当部305でCPUの割当を行い、割当結果を元に共有メモリアクセスリスト302を変更する。
これにより、共有メモリを扱うプロセスは、同一の共有メモリを扱うプロセスと同一のCPUで起床することになる。そのため、キャッシュコヒーレンシ保持のための処理時間が低減され、キャッシュヒット率の向上も見込めるため、起床させたプロセスの処理時間を低減することが可能になる。
<実施形態2>
以下、図面を参照して本発明の実施形態2を詳細に説明する。
実施形態2は、リソースの1つであるファイルの情報を元に、CPUの選択を行う構成について説明する。この点で、実施形態2は実施形態1と異なる。
図9は本発明を適用可能な情報処理装置の利用例を示す図である。同図において、900は図1のシステム100に対応し、その説明は省略する。
901はファイルを使用開始する時に実行するファイル使用開始部である。プロセスがファイル名を指定してファイル使用開始部901を実行すると、そのファイル名のファイルがオープンされ、プロセスはオープンしたファイルのファイルIDを取得する。そして、ファイル使用開始部901は、プロセスID、そのプロセスに割り当てられているCPUのCPU ID、オープンしたファイルIDの情報を一組とした管理情報をファイルアクセスリスト902に記録する。ファイルアクセスリスト902は、一次記憶装置202もしくは二次記憶装置204に存在する。
903はプロセスを休止する時に実行するプロセス休止部である。プロセスがプロセス休止部903を実行すると、対象のプロセスはCPUの割当が無くなり、ウェイトキューにつながれて休止状態になる。そして、プロセス休止部903は、ファイルアクセスリスト902の管理情報の中から休止したプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを「割当無し」に変更する。
904はプロセスを起床する時に実行するプロセス起床部である。プロセス起床部904は、あるプロセスに対し起床命令を出すと、ファイルアクセスリスト902に、起床させるプロセスのプロセスIDが存在し、かつ、起床させるプロセスが使用するファイルと同一のファイルを使用するプロセスが存在するかを判定する。存在する場合、プロセス起床部904は、同一のファイルを使用するプロセスに割り当てられているCPU IDを取得する。
プロセス起床部904の実行後に実行されるCPU割当部905では、起床させるプロセスにCPUの割当とプロセスの移動を行う。CPU割当とプロセスの移動については、図1のCPU割当部105で説明したものと同一であり省略する。プロセスの移動後、CPU割当部905は、ファイルアクセスリスト902の管理情報の中から起床するプロセスのプロセスIDを探索し、該当する管理情報のCPU IDを特定したCPU IDに変更する。
図10は、図9の構成において、2つのCPUを搭載したシステムの場合に、複数のプロセスが同一のファイルにアクセスしているかどうかでCPUを選択することを示す図である。1000は図4のCPU#A400、1001は図4のCPU#B401、1003は図4のウェイトキュー403と同一であり、その説明は省略する。図4と異なるのはファイル1002がある点である。
ファイル1002は、CPU#B1001のプロセスAとウェイトキュー1003のプロセスBからのみアクセスされている。この状態で、ウェイトキュー1003のプロセスBを起床させると、プロセスAと同一のファイル1002にアクセスしているため、プロセスBは2つ目のCPU#B1001に移動され、プロセスBの状態は実行可能状態に変更される。
また、ウェイトキュー1003のプロセスCを起床させると、ファイル1002にアクセスしていないため、プロセスCはOSに備わるCPU特定部によって1つ目のCPU#A1000か2つ目のCPU#1001のどちらかに移動される。その後、移動したCPUでプロセスの状態が実行可能状態に変更される。
次に、図11、図12、図13、図14を用いて、実施形態2を適用可能なシステムを備えた情報処理装置を、ユーザが利用した時の処理手順について説明する。
まず、図11を用いて、ファイルを使用開始する処理手順について説明する。
ステップS1100では、ファイル使用開始部901は、プロセスが指定するファイル名のファイルが既に存在するかどうかを判定する。存在する場合(ステップS1100でYES)、ステップS1101に移り、ファイル使用開始部901は、指定するファイル名のファイルをオープンし、そのファイルファイルIDを取得する。一方、存在しない場合(ステップS1100でNO)、ステップS1102に移り、ファイル使用開始部901は、プロセスが指定するファイル名のファイルを一次記憶装置202あるいは二次記憶装置204の領域に作成し、オープンする。そして、ファイル使用開始部901は、オープンしたファイルのファイルIDを取得する。
ステップS1103で、ファイル使用開始部901は、実行しているプロセスのプロセスID、そのプロセスが実行しているCPUのCPU ID、オープンしたファイルのファイルIDを一組とした管理情報をファイルアクセスリスト902に記録する。
ファイルアクセスリスト902を、具体的に図12を用いて説明する。
図12は、ファイルアクセスリストの具体例であり、同図の1200がステップS1103で管理情報を記録したファイルアクセスリスト902を示す図である。この例では、CPU ID「0」のプロセスID「10」がファイルID「3」を使用している。CPU ID「0」のプロセスID「11」がファイルID「4」を使用している。CPU ID「1」のプロセスID「12」がファイルID「3」を使用している。ファイルアクセスリスト902は、新規にファイルをオープンする度に情報が追加される。
次に、図13を用いて、プロセスを休止する手順について説明する。
ステップS1300で、プロセス休止部903は、休止するプロセスのプロセスIDを取得し、取得したプロセスIDがファイルアクセスリスト902に存在するかを判定する。存在する場合(ステップS1300でYES)、ステップS1301に移り、プロセス休止部903は、取得したプロセスIDに該当する項目のCPU IDの部分を「無し」に変更する。一方、存在しない場合(ステップS1300でNO)、ステップS1302に移り、プロセス休止部903は、休止するプロセスをCPUからウェイトキューに移し、プロセスを休止状態にする。
ステップS1300からステップS1302の処理を、具体的に図12を用いて説明する。図12の1200は図11のステップS1103の処理後のファイルアクセスリスト902の状態を示す図である。ファイルアクセスリスト902がこの状態1200である時に、プロセスID「12」のプロセスを休止させる。この場合、プロセスID「12」の情報は存在するため、CPU IDの部分を「無し」に変更する。その結果、ファイルアクセスリスト902は図12の状態1201となる。
次に、図14を用いて、休止しているプロセスを起床させる手順について説明する。
ステップS1400で、プロセス起床部904は、起床させるプロセスのプロセスIDを取得する。そして、プロセス起床部904は、ファイルアクセスリスト902を参照し、取得したプロセスIDがファイルアクセスリスト902に存在するかどうかを判定する。
存在しない場合(ステップS1400でNO)、ステップS1404に移り、プロセス起床部904は、OSに備わるCPU特定部でCPUを特定する。その後、CPU割当部905が、起床させるプロセスをウェイトキューから特定したCPUに移動し、起床させるプロセスの状態を実行可能状態に変更する。
一方、ステップS1400において、存在する場合(ステップS1400でYES)、ステップS1401に移る。ステップS1401で、プロセス起床部904は、ファイルアクセスリスト902を参照し、取得したプロセスIDが使用するファイルIDを特定し、そのファイルIDを使用する他のプロセスが存在するかを判定する。
存在しない場合(ステップS1401でNO)、ステップS1404に移る。一方、存在する場合(ステップS1401でYES)、ステップS1402に移り、プロセス起床部904は、起床させるプロセスと同一のファイルにアクセスするプロセスが存在するCPUを特定する。その後、CPU割当部905が、起床させるプロセスをウェイトキューから特定したCPUに移動し、起床させるプロセスの状態を実行可能状態に変更する。
ステップS1403で、プロセス起床部904は、ファイルアクセスリスト902にある起床させるプロセスに対応するCPU IDを、ステップS1402で特定したCPU IDに変更する。
ステップS1400からステップS1403の処理を、具体的に図12を用いて説明する。図12の1201は図13のステップS1301でプロセスを休止状態にした後に変更したファイルアクセスリスト902の状態を示す図である。ファイルアクセスリスト902がこの状態1201である時に、プロセスID「12」のプロセスを起床させる。この場合、プロセスID「12」の情報は存在するため、プロセスID「12」に対応するファイルIDを参照する。ファイルIDは「3」であり、そのファイルIDを使用する他のプロセスは、プロセスID「10」が存在する。そして、プロセスID「10」に対応するCPU IDは「0」であるため、起床させるプロセスであるプロセスID「12」のCPU IDを「無し」から「0」に変更する。その結果、ファイルアクセスリスト902は図12の状態1202となる。
以上説明したように、実施形態2によれば、プロセスがファイルを使用開始するためにファイル使用開始部901を実行すると、その情報をファイルアクセスリスト902に追加する。プロセスがプロセスを休止するためにプロセス休止部903を実行すると、その情報を元にファイルアクセスリスト902を変更する。プロセスが特定のプロセスを起床させるためにプロセス起床部904を実行すると、ファイルアクセスリスト902にあるそのプロセスの情報を参照する。そして、参照した情報を元にCPU割当部905でCPUの割当を行い、割当結果を元にファイルアクセスリスト902を変更する。
これにより、ファイルを扱うプロセスは、同一のファイルを扱うプロセスと同一のCPUで起床することになる。同一CPUで同一ファイルを扱うことで、一次キャッシュのヒット率の向上が見込めるため、起床させたプロセスの処理時間を低減することが可能になる。
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (10)

  1. 複数のプロセッサを有する情報処理装置であって、
    プロセスがリソースの使用を開始する際に、当該プロセスを示すプロセス識別情報と、前記プロセスが使用するリソースを示すリソース識別情報と、前記プロセスが割り当てられているプロセッサを示すプロセッサ識別情報と、を対応づけて管理情報として記録する第1制御手段と、
    前記プロセスを起床させる際に、前記管理情報において、該起床させるプロセスに対応づけられているプロセッサを当該プロセスに割り当てる第2制御手段と
    を備えることを特徴とする情報処理装置。
  2. 前記第2制御手段は、起床させるプロセスである第1のプロセスのプロセス識別情報が前記管理情報に存在し、当該第1のプロセスが使用するリソースを使用する第2のプロセスのプロセス識別情報が前記管理情報に存在する場合には、前記第2のプロセスのプロセス識別情報に対応するプロセッサを前記第1のプロセスに割り当てる
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2制御手段は、前記管理情報に、起床させるプロセスである第1のプロセスのプロセス識別情報が存在するが、該第1のプロセスが使用するリソースを使用する第2のプロセスのプロセス識別情報が存在しない場合には、OSによって特定されるプロセッサを前記第1のプロセスに割り当てる
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記第2制御手段は、前記管理情報に、前記起床させるプロセスのプロセス識別情報が存在しない場合、OSによって特定されるプロセッサを前記起床させるプロセスに割り当てる
    ことを特徴とする請求項1に記載の情報処理装置。
  5. 前記プロセスが休止する際に、当該プロセスのプロセス識別情報を含む管理情報を更新するプロセス休止手段を更に備える
    ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記プロセス休止手段は、前記管理情報に、前記休止するプロセスのプロセス識別情報が存在する場合に、該プロセス識別情報に対応するプロセッサ識別情報をクリアする
    ことを特徴とする請求項5に記載の情報処理装置。
  7. 前記リソースは、共有メモリである
    ことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記リソースは、ファイルである
    ことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  9. 複数のプロセッサを有する情報処理装置の制御方法であって、
    プロセスがリソースの使用を開始する際に、当該プロセスを示すプロセス識別情報と、前記プロセスが使用するリソースを示すリソース識別情報と、前記プロセスが割り当てられているプロセッサを示すプロセッサ識別情報と、を対応づけて管理情報として記録する第1制御工程と、
    前記プロセスを起床させる際に、前記管理情報において、該起床させるプロセスに対応づけられているプロセッサを当該プロセスに割り当てる第2制御工程と
    を備えることを特徴とする情報処理装置の制御方法。
  10. 複数のプロセッサを有する情報処理装置に実行させるためのプログラムであって、
    前記情報処理装置を、
    プロセスがリソースの使用を開始する際に、当該プロセスを示すプロセス識別情報と、前記プロセスが使用するリソースを示すリソース識別情報と、前記プロセスが割り当てられているプロセッサを示すプロセッサ識別情報と、を対応づけて管理情報として記録する第1制御手段と、
    前記プロセスを起床させる際に、前記管理情報において、該起床させるプロセスに対応づけられているプロセッサを当該プロセスに割り当てる第2制御手段と
    して機能させることを特徴とするプログラム。
JP2012009429A 2012-01-19 2012-01-19 情報処理装置及びその制御方法、プログラム Pending JP2013149108A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012009429A JP2013149108A (ja) 2012-01-19 2012-01-19 情報処理装置及びその制御方法、プログラム
US13/670,030 US20130191839A1 (en) 2012-01-19 2012-11-06 Information processing apparatus, control method therefor, and computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012009429A JP2013149108A (ja) 2012-01-19 2012-01-19 情報処理装置及びその制御方法、プログラム

Publications (1)

Publication Number Publication Date
JP2013149108A true JP2013149108A (ja) 2013-08-01

Family

ID=48798331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012009429A Pending JP2013149108A (ja) 2012-01-19 2012-01-19 情報処理装置及びその制御方法、プログラム

Country Status (2)

Country Link
US (1) US20130191839A1 (ja)
JP (1) JP2013149108A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11954527B2 (en) 2020-12-09 2024-04-09 Industrial Technology Research Institute Machine learning system and resource allocation method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115629827B (zh) * 2022-12-22 2023-03-10 中国西安卫星测控中心 一种基于共享内存的Linux服务器多应用进程调度方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233572A (ja) * 1992-02-21 1993-09-10 Toshiba Corp マルチプロセッサに於けるプロセスディスパッチ方式
JPH09152976A (ja) * 1995-11-30 1997-06-10 Hitachi Ltd 計算機システム
JPH1078942A (ja) * 1996-09-02 1998-03-24 Nec Corp マルチプロセッサシステム
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
JP2004259298A (ja) * 2004-04-21 2004-09-16 Toshiba Corp 仮想記憶管理方法
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
JP2010128664A (ja) * 2008-11-26 2010-06-10 Fujitsu Ltd マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820154B2 (en) * 2001-09-05 2004-11-16 Intel Corporation System and method for servicing interrupts
JP2005149312A (ja) * 2003-11-18 2005-06-09 Toyota Motor Corp タスク管理システム
US20060101467A1 (en) * 2004-10-18 2006-05-11 International Business Machines Corporation Process execution management based on resource requirements and business impacts
US20070136725A1 (en) * 2005-12-12 2007-06-14 International Business Machines Corporation System and method for optimized preemption and reservation of software locks
US7386851B1 (en) * 2008-01-04 2008-06-10 International Business Machines Corporation System and method for implementing dynamic lifetime reliability extension for microprocessor architectures

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233572A (ja) * 1992-02-21 1993-09-10 Toshiba Corp マルチプロセッサに於けるプロセスディスパッチ方式
JPH09152976A (ja) * 1995-11-30 1997-06-10 Hitachi Ltd 計算機システム
JPH1078942A (ja) * 1996-09-02 1998-03-24 Nec Corp マルチプロセッサシステム
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
JP2004259298A (ja) * 2004-04-21 2004-09-16 Toshiba Corp 仮想記憶管理方法
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
JP2010128664A (ja) * 2008-11-26 2010-06-10 Fujitsu Ltd マルチプロセッサシステム、競合回避プログラム及び競合回避方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11954527B2 (en) 2020-12-09 2024-04-09 Industrial Technology Research Institute Machine learning system and resource allocation method thereof

Also Published As

Publication number Publication date
US20130191839A1 (en) 2013-07-25

Similar Documents

Publication Publication Date Title
US9996401B2 (en) Task processing method and virtual machine
US8230201B2 (en) Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8082315B2 (en) Programming idiom accelerator for remote update
JP6126311B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ
US8145723B2 (en) Complex remote update programming idiom accelerator
US8230155B2 (en) Direct memory access filter for virtualized operating systems
JP3882930B2 (ja) 共用リソースを使用するための仮想計算機の管理
US9619378B2 (en) Dynamically optimizing memory allocation across virtual machines
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
US20100268915A1 (en) Remote Update Programming Idiom Accelerator with Allocated Processor Resources
KR102334511B1 (ko) 작업 의존성 관리
US20110119674A1 (en) Scheduling method, scheduling apparatus and multiprocessor system
WO2017112149A1 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
JP5345990B2 (ja) 特定のプロセスを短時間で処理する方法およびコンピュータ
US10459771B2 (en) Lightweight thread synchronization using shared memory state
JP2014225263A (ja) プロセッシング装置及びプロセッシング方法
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
JP2013149108A (ja) 情報処理装置及びその制御方法、プログラム
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
WO2013021441A1 (ja) データ処理システム、およびデータ処理方法
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
US20170147408A1 (en) Common resource updating apparatus and common resource updating method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151015

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160322