JP5045576B2 - マルチプロセッサシステム及びプログラム実行方法 - Google Patents
マルチプロセッサシステム及びプログラム実行方法 Download PDFInfo
- Publication number
- JP5045576B2 JP5045576B2 JP2008167373A JP2008167373A JP5045576B2 JP 5045576 B2 JP5045576 B2 JP 5045576B2 JP 2008167373 A JP2008167373 A JP 2008167373A JP 2008167373 A JP2008167373 A JP 2008167373A JP 5045576 B2 JP5045576 B2 JP 5045576B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- load
- execution process
- new
- new execution
- 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
Links
Images
Description
また、CPU毎に機能を持たせて複数CPUで処理を行う非対称マルチプロセッサ(AMP)では各CPUにプログラムを固定して実行するため、CPU負荷の不均一が発生し、複数のCPUを有効に利用することができなかった。
特許文献1の「マルチプロセッサシステム」は、上記のようなAMPにおけるCPU負荷の不均一を改善することを示したもので、プロセス毎の実行負荷(処理指数)とプロセッサ毎の負荷状況(処理余力値)及び、プロセスの実行優先度から判断して、次に実行を開始するプロセス及び、割り当てるプロセッサを決定するというプログラム実行方式が用いられている。
新たに発生した新規実行プロセスが使用するOS(Operating System)機能とこの新規実行プロセスが使用する周辺機器への依存度とが記録されたプロセス情報テーブルと、
前記新規実行プロセスが発生した時に負荷状況の問い合わせをし、負荷状況が送信されるとこの負荷状況を基に前記CPU候補テーブルを更新し、又前記プロセス情報テーブルの前記OS機能と前記周辺機器への依存度とを送信し、又送信された評価値を基に前記CPU候補テーブルを更新し、この更新CPU候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適CPUを決定し、この最適CPUに処理を実行させる新規CPU決定手段とを有するCPUと、
前記新規CPU決定手段により負荷状況の問い合わせを受けると、それぞれ自らのCPUの負荷を算出し、前記CPUに負荷状況を送信する負荷状況算出手段と、
前記CPUにより送信された前記OS機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出し前記CPUに送信する情報管理手段とをそれぞれ有する複数のCPUと、を備えたものである。
図1は、本発明のマルチプロセッサシステムが利用される計算機システムの構成図である。
複数のCPU101〜103において、個別に同一のオペレーティングシステム(OS:Operating System)121〜123が動作する計算機システム100がある。CPU101〜103は同一アーキテクチャを持ち、それぞれ個別に周辺機器(IO:Input/Output)群111〜113が接続されている。
また、CPU101〜103は通信路106で接続され、CPU同士直接、或いは同じく通信路106に接続されるメモリ105、同じく通信路106に接続される記憶デバイス等のIO104、を介して互いに情報を伝達できるように構成されている。
全てのCPUで同一アーキテクチャのOSを動作させることで、何れかのCPUで発生するプロセスをどのCPUでも実行させることが可能となる。
このプロセス群のうち、CPU103で実行中のものを実行中プロセス201、CPU103で新たに発生したプロセスでシステムに未投入のものを新規投入プロセス202として表している。
新規投入プロセス202は、自身が動作中に使用するOS機能の一覧及び処理において使用するIOデバイスの依存度をプロセス情報テーブル311として持つ。
ここで、OS−APIは、アプリケーションが動作する際に、利用するOSの機能(関数、システムコール等)を示すもので、本実施の形態で示すOSはシステム(CPU)において必要な機能のみを組み合わせることが出来るOSを想定している。
図5は、IOデバイス依存率リスト412の一例を示した説明図である。図において、IOデバイス依存率リスト412は、新規投入プロセス202をOS123と共にCPU103へ実装する際にシステム設計者が任意に決定する依存度合いを数値として持つ。
図05に示したIO依存率は、数値が大きいほどそのIOへの依存度が高いことを示す。なお、このIO依存率は、単位時間中にIOへアクセスする頻度としてもよい。
図において、OS機能テーブル312は、OS123が持つ機能一覧を表すもので、ユーザアプリケーション(プロセス)からOS機能を利用する際に、コールされるAPIをテーブルとして持つものである。
また、OS機能テーブル312は、OS123を生成する際の情報から作成し、システム設計時に初期値を設定した状態で組み込み使用する。OS123の構成が動的に変更できるOSの場合には、初期値を設定したOS機能テーブル312の内容を動的に更新して使用する。
図において、IOアクセス・コストテーブル313は、あるCPUからIOにアクセスを行なう際に要する各IOデバイスへの論理的な距離を表し、自CPUに接続されるIOであればデバイスドライバ203を介して直接アクセスが可能であるため論理的距離は小さく、自CPUには無いIOに対し通信路106を介して他のCPU経由でアクセスする場合には論理的距離が大きいものとする。
また、IOアクセス・コストテーブル313は、最初にシステムを構築した際に、複数のCPUを組み合わせた構成において、各CPUから他CPUのIOへアクセスした場合のオーバヘッドを測定用ツール(ベンチマークプログラム)等で数値化し、予めテーブルとして作成したものを利用する。IOアクセスに要するオーバヘッドが動的に変わるシステムでは、IOアクセス・コストテーブル313の設定内容を更新して使用する。
一般的に、CPUで実行するプロセスには、一度投入された後は継続的に処理を行い条件により終了するプロセスと、与えられたデータに対し決められた一連の処理を行なった後、無条件に終了するプロセスがある。以降では、後者のようなプロセスの形態をシーケンシャル実行プロセス401と呼ぶ。
図8において、シーケンシャル実行プロセス401は、その処理中にチェックポイントを設け、チェックポイント通過を確認することで終了が近いことを判定できる。
また、図9において、シーケンシャル実行プロセス401は、チェックポイントを設ける代わりに、シーケンシャル実行プロセスの実行位置をプログラムカウンタ(PC)より確認することでも進捗状況を確認できる。
なお、CPUの負荷状況を判断するには、優先度が一番低いIDLE(待機)プロセスが一定期間中に動作している割合(時間)を用いるのが一般的で、OSが提供している場合もある。また、動作中のプロセスが一定期間中のCPU占有時間を観測することにより、特定プロセスが占めるCPU負荷を確認することもできる。
シーケンシャル実行プロセス401の終了が近いことと、実行中の各プロセスのCPU負荷が分かることから、現時点より所定の時刻T後のCPU負荷状況を算出することができる。
図において、CPU−1ではプロセス1A、1Bが、CPU−2ではプロセス2A、2Bが動作し、CPU−1、CPU−2の負荷状況を確認する要求があった時に、現時点ではCPU−1ではプロセス1A,1Bが動作し、CPU−2ではプロセス2A,2Bが動作しているが、CPU−1とCPU−2でそれぞれ動作するシステムモニタ204の機能を用い、時刻T後における負荷状況を予測することで、CPU−1の負荷が近い将来低くなることが確認できることが分かる。
図11は、投入プロセスマネージャ205の処理動作を示すフローチャートである。
投入プロセスマネージャ205は、システム起動時に処理を開始し、初期状態の投入先CPU候補テーブルを作成する(ステップS1)。この投入先CPU候補テーブルは、後述の図13に示すCPU候補テーブル601であり、計算機システム100に属するCPU毎に重み付けを行い、以降示す判断基準によりCPU毎の重み付けの値を修正し、新たに発生したプロセスを投入するCPUを決定するために使用するものである。
ここで、各CPUのシステムモニタ204は、投入プロセスマネージャ205からCPUの負荷状況の問い合わせを受けると、前述の判断方式により各々、自CPUの負荷を算出し、投入プロセスマネージャ205にCPUの負荷状況(負荷指数)として応答を返す。CPU間の情報伝達はバス106或いはメモリ105を介した方法等で行なう。
続いて、投入プロセスマネージャ205は、新規投入プロセス202のプロセス情報テーブル311に含まれるOS−APIリスト411とIOデバイス依存率リスト412を読み出し(ステップS5)、自CPUを含む計算機システム100に属するCPU(101〜103)で動作するCPU情報マネージャ206にこれら情報を伝達する(ステップS6)。
投入プロセスマネージャ205は、各CPUから返される前述の評価値を元に、評価値が低いCPUにはプロセスを割り当てる比率を低くなるように、評価値が高いCPUにはプロセスを割り当てる比率が高くなるように投入先CPU候補テーブル601を更新する(ステップS7)。即ち、投入プロセスマネージャ205は、複数のCPUのCPU情報マネージャ206により送信された評価値の中で評価値が高いCPUには新規実行プロセスを実行させる比率を高くなるように、又評価値が低いCPUには新規実行プロセスを実行させる比率を低くするようにCPU候補テーブル601を更新する。
図12は、CPU情報マネージャ206の処理動作を示すフローチャートである。
CPU情報マネージャ206は、システム起動時に処理を開始し、自CPUで動作するOSが持つOS機能をOS機能テーブル312として作成(ステップS11)、さらに、自CPUから計算機システム100内に存在するIOデバイスに対してアクセスした場合のアクセスに要する手間の度合い(オーバヘッド)を表として持つIOアクセス・コストテーブル313を作成する(ステップS12)。
OS−APIリスト411は、新規投入プロセス202が実行するために必要なOS機能の一覧を示したもので、このリストにある機能全てが、OS機能テーブル312に含まれている場合は、実行可能と判定し、OS−APIリスト411に或る機能のうちOS機能テーブル312に含まれないものが有る場合にはこのOSでは実行できないと判定する(ステップS16)。
IOアクセス・コストの算出は、新規投入プロセス202が実行中に使用するIOデバイスのアクセス頻度からなる重み付けを表すIOデバイス依存率リスト412に対し、自CPUから参照可能な計算機システム100中の各種IOへのアクセスに要するオーバヘッドからなるIOアクセス・コストテーブル313を掛け合わせ、評価値を算出する(ステップS17)。
CPU情報マネージャ206は、以上の評価値を当CPU情報マネージャ206の結果として、ステップ13でリクエストされたCPUに対してリクエストに対する応答として返す(ステップS19)。
(a)の初期値に対して、(b)に示すような、各CPUのシステムモニタ204から回答された各CPUの負荷状況(負荷指数)に従いCPU負荷判定を行い、(c)に示すようにCPU候補テーブル601の更新が行なわれる。この例では、各CPUのシステムモニタ204から回答された各CPUの負荷状況は、CPU1は負荷指数8で負荷状況が高い状態で、その他のCPUは負荷が低い状況である場合を示している。
続いて、(f)に示すようなIOデバイス依存リスト412とIOアクセス・コストテーブル313の比較結果を(e)のCPU候補テーブル601に反映させ、最終的な結果としてCPU2で新規投入プロセス202を実行させることを決定したことを表している。
また、複数あるCPU同士が互いの負荷状態を確認する際に、現時点での負荷状態の他に、近い将来に処理が完了することを判断する方式を用いることで、より効率的な負荷分散を実現することができる。
また、ある処理を何れかのCPUに割り当て実行させる際に、その処理が動作中に利用するIOの利用頻度を、その処理自身が情報として持つことにより、実行させる処理が最適に動作できる状態で実行できる機能を提供することができる。
また、ある処理を実行するためのOS機能が、担当するCPUに無い場合、その機能を持つ他のCPUへ遠隔処理要求(RPCやDCOM等を利用)することで、特定の処理は特定のCPUでのみ実行できる状態を回避することができ、更なる処理分散を実現することができる。
また、OS機能への依存度を処理自身が情報として持ち、各CPUが提供できるOS機能群の処理能力をパラメータとして提供することで、処理を担当するCPUを決定する判断基準を拡張することができる。
Claims (5)
- CPU(Central Processing Unit)毎の重み付けがされたCPU候補テーブルと、
新たに発生した新規実行プロセスが使用するOS(Operating System)機能とこの新規実行プロセスが使用する周辺機器への依存度とが記録されたプロセス情報テーブルと、
前記新規実行プロセスが発生した時に負荷状況の問い合わせをし、負荷状況が送信されるとこの負荷状況を基に前記CPU候補テーブルを更新し、又前記プロセス情報テーブルの前記OS機能と前記周辺機器への依存度とを送信し、又送信された評価値を基に前記CPU候補テーブルを更新し、この更新CPU候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適CPUを決定し、この最適CPUに処理を実行させる新規CPU決定手段とを有するCPUと、
前記新規CPU決定手段により負荷状況の問い合わせを受けると、それぞれ自らのCPUの負荷を算出し、前記CPUに負荷状況を送信する負荷状況算出手段と、
前記CPUにより送信された前記OS機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出し前記CPUに送信する情報管理手段とをそれぞれ有する複数のCPUと、を備えたことを特徴とするマルチプロセッサシステム。 - 前記負荷状況算出手段は、一定期間中の待機プロセスの動作時間又は一定期間中のCPU占有時間により自らのCPUの負荷を算出することを特徴とする請求項1記載のマルチプロセッサシステム。
- 前記新規CPU決定手段は、前記複数のCPUの前記負荷状況算出手段により送信された前記負荷状況の中で負荷が高いCPUには新規実行プロセスを実行させる比率を低くなるように、又負荷が低いCPUには新規実行プロセスを実行させる比率を高くするように前記CPU候補テーブルを更新することを特徴とする請求項1記載のマルチプロセッサシステム。
- 前記新規CPU決定手段は、前記複数のCPUの前記情報管理手段により送信された前記評価値の中で評価値が高いCPUには新規実行プロセスを実行させる比率を高くなるように、又評価値が低いCPUには新規実行プロセスを実行させる比率を低くするように前記CPU候補テーブルを更新することを特徴とする請求項1記載のマルチプロセッサシステム。
- 複数のCPUと、新規実行プロセスが発生した時に前記複数のCPUの中の最適CPUに新規実行プロセスの処理を実行させるCPUと、を備えたマルチプロセッサシステムによるプログラム実行方法であって、
前記CPUは、前記新規実行プロセスが発生した時に前記複数のCPUにそれぞれ負荷状況の問い合わせをする問い合わせステップと、
前記問い合わせステップに対応した負荷状況が送信されると、この負荷状況を基にCPU毎の重み付けがされたCPU候補テーブル601を更新する第1の更新ステップと、
前記問い合わせステップに対応した負荷状況が送信されると、前記新規実行プロセスが使用するOS機能とこの新規実行プロセスが使用する周辺機器への依存度とを送信する第1の送信ステップと、
前記送信ステップに対応した評価値が送信されると前記CPU候補テーブル601を更新する第2の更新ステップと、
前記第2の更新ステップにより更新された前記CPU候補テーブル601を基に前記新規実行プロセスを実行させるのに最も適した最適CPUを決定する選択ステップと、
前記選択ステップにより選択された最適CPUに処理を実行させる処理実行ステップとを備え、
前記複数のCPUは、前記問い合わせステップにより負荷状況の問い合わせを受けると、それぞれ自らのCPUの負荷を算出する第1の算出ステップと、
前記算出ステップにより算出された負荷状況を前記CPUに送信する第2の送信ステップと、
前記第1の送信ステップにより送信された前記OS機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出する第2の算出ステップと、
前記第2の算出ステップにより算出された前記評価値を前記CPUに送信する第3の送信ステップとを備えたことを特徴とするプログラム実行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008167373A JP5045576B2 (ja) | 2008-06-26 | 2008-06-26 | マルチプロセッサシステム及びプログラム実行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008167373A JP5045576B2 (ja) | 2008-06-26 | 2008-06-26 | マルチプロセッサシステム及びプログラム実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010009288A JP2010009288A (ja) | 2010-01-14 |
JP5045576B2 true JP5045576B2 (ja) | 2012-10-10 |
Family
ID=41589712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008167373A Expired - Fee Related JP5045576B2 (ja) | 2008-06-26 | 2008-06-26 | マルチプロセッサシステム及びプログラム実行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5045576B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10895865B2 (en) | 2017-10-25 | 2021-01-19 | Fanuc Corporation | Numerical controller |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5786863B2 (ja) * | 2010-10-28 | 2015-09-30 | 日本電気株式会社 | タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム |
CN103823712B (zh) * | 2014-03-17 | 2017-05-10 | 杭州华三通信技术有限公司 | 一种多cpu虚拟机系统的数据流处理方法和装置 |
-
2008
- 2008-06-26 JP JP2008167373A patent/JP5045576B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10895865B2 (en) | 2017-10-25 | 2021-01-19 | Fanuc Corporation | Numerical controller |
Also Published As
Publication number | Publication date |
---|---|
JP2010009288A (ja) | 2010-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8219997B2 (en) | Execution the job that is divided into job tasks based on the estimated completion time | |
EP1750200A2 (en) | System and method for executing job step, and computer product | |
US8725912B2 (en) | Dynamic balancing of IO resources on NUMA platforms | |
US10554575B2 (en) | Equitable sharing of system resources in workflow execution | |
JP4677813B2 (ja) | サーバ性能計測方法及びサーバ性能計測システム並びにこれらに用いるコンピュータプログラム | |
US8468530B2 (en) | Determining and describing available resources and capabilities to match jobs to endpoints | |
CN105487930A (zh) | 一种基于Hadoop的任务优化调度方法 | |
JPWO2006100752A1 (ja) | 分散処理管理装置、分散処理管理方法、分散処理管理プログラム | |
JP2002541581A (ja) | レート単調リアルタイムシステムにおける動的貸し出し方法 | |
KR20140117905A (ko) | 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법 | |
US20140298350A1 (en) | Distributed processing system | |
CN114356587B (zh) | 算力任务跨区域调度方法、系统及设备 | |
CN113342477A (zh) | 一种容器组部署方法、装置、设备及存储介质 | |
JP5045576B2 (ja) | マルチプロセッサシステム及びプログラム実行方法 | |
JP2010224754A (ja) | リソース割当装置、リソース割当方法、及びプログラム | |
GB2507294A (en) | Server work-load management using request prioritization | |
US9195515B1 (en) | Method and system for process load balancing | |
JP4150853B2 (ja) | 資源競合制御システム及び制御方法並びにプログラム | |
JP4112511B2 (ja) | タスク管理プログラムおよびタスク管理装置 | |
JP6191361B2 (ja) | 情報処理システム、情報処理システムの制御方法及び制御プログラム | |
CN110247802B (zh) | 针对云服务单机环境的资源配置方法及装置 | |
JP2010146382A (ja) | 負荷分散システム、負荷分散方法、および負荷分散プログラム | |
Nain et al. | Optimizing service stipulation uncertainty with deep reinforcement learning for internet vehicle systems | |
JP5056346B2 (ja) | 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム | |
Li et al. | SoDa: A serverless-oriented deadline-aware workflow scheduling engine for IoT applications in edge clouds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110112 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120410 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120601 |
|
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: 20120619 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120702 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150727 Year of fee payment: 3 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5045576 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |