(57)【要約】【課題】ジョブスワップに要するオーバヘッドを削減、およびメモリ資源の有効利用を図ることを目的としている。【解決手段】部分的にスワップアウトされたジョブのスワップ優先度を実行中ジョブより高く変更し、スワップ優先度の高いものをスワップアウト対象ジョブとして選択し、緊急度指定のジョブの要求メモリ量に基づいて、スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出し、ノード毎に指定されたメモリ量に基づいてスワップアウト対象ジョブを部分的にスワップアウトすることにより、緊急度指定のジョブが実行するために必要最低限のメモリ量のみをスワップアウトの対象とすることが可能となる。また、部分的にスワップアウトされたジョブを優先的に再度スワップアウトすることにより、メモリ資源の有効利用を図ることが可能となる。【選択図】      図１
2004227188.tif 000002
【特許請求の範囲】
【請求項１】
共用メモリ型ＳＭＰ計算機システムのジョブスワップ方法であって、
部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、
スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するステップと、
緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するステップと、
ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするステップと
を有することを特徴とするジョブスワップ方法。
【請求項２】
各ノードの空きメモリ量が所定の条件を満たすと、前記部分的にスワップアウトされたジョブのスワップアウトされていないメモリを所定のルールに基づいてスワップアウトする請求項１記載のジョブスワップ方法。
【請求項３】
共用メモリ型ＳＭＰ計算機システムのジョブスワップ方法であって、
部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、
スワップ優先度に基づいてスワップアウトされたジョブからスワップイン対象ジョブを選択するステップと、
ノード毎に指定されたメモリ量に基づいて前記スワップイン対象ジョブをスワップインするステップと
を有することを特徴とするジョブスワップ方法。
【請求項４】
部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更する優先度変更手段と、
スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するジョブ選択手段と、
緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するメモリ量算出手段と、
ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするスワップ手段と
を有することを特徴とするジョブ管理装置。
【請求項５】
部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更する優先度変更手段と、
スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するジョブ選択手段と、
緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するメモリ量算出手段と、
ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするスワップ手段と
してコンピュータを機能させるジョブ管理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ジョブスワップに関し、特に共用メモリ型ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  ＭｕｌｔｉＰｒｏｃｅｓｓｏｒ）  計算機システムにおいて、緊急度指定されたジョブの要求メモリ量、およびスワップアウトされるジョブのメモリ量に応じ、制御ノード（  以降マスタノードと記す）  からジョブを制御するジョブスワップ技術に関するものである。
【０００２】
【従来の技術】
計算機システムが処理するデータ量の増加に伴い、処理を高速化するために様々なタイプの並列処理を可能とするマルチプロセッサ計算機システムが利用されるようになってきた。特に、長期気象予測、衝突解析、計算科学などを実行するジョブでは、膨大な計算量が必要となり、プログラム自体がローディングされるメモリ領域も広大であるが、これにも増して入力データや途中経過の計算結果などを展開するための大容量の仮想メモリ空間を備えたマルチプロセッサ計算機システムが要求される。このような計算機システムでは、緊急ジョブが入力されたり、長時間実行待ち状態にあるジョブを実行させるために強制スワップアウトの指示がされると、現在実行中のジョブからスワップアウト対象のジョブが選択されＣＰＵや、メモリなどの資源を一時的に解放し、緊急ジョブや長時間待ち状態であったジョブを起動するジョブスワップ機能を備えている。
【０００３】
しかしながら、長期気象予測、衝突解析、計算科学など大容量の仮想メモリ空間を要するジョブがスワップアウトの対象となると、メモリのスワップアウトに要する時間が長くかかるようになり、以下のようなジョブスワップのオーバヘッド低減を目的とした技術が提案されている。
例えば、特開平５−８８９８４号公報にはジョブのスワップアウト時にジョブを管理する管理簿を参照し、ページが主記憶装置上に存在しかつ活性状態であることが分かった場合にはスワップアウトの対象となるページのアドレスを登録簿に登録させ、ページが主記憶装置上に存在するが活性状態でないと分かった場合には管理簿のページアウトの優先順位を上げさせ、登録簿に登録されたページを一括して主記憶装置上から補助記憶装置上に移送することにより、ジョブのスワップアウト時に主記憶装置上に存在しているが最近アクセスされていない非活性なページはスワッピングの対象外としてページアウトの優先順位を上げて主記憶装置上に残しておき、他ジョブからのメモリ要求によるページアウト要求の発生時にＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）制御による仮想記憶システムの主記憶管理プログラムのページリプレースメントアルゴリズムによって優先的にページアウトするようにした仮想記憶システムにおけるスワッピング制御技術が開示されている。
【０００４】
また、特開２０００−２００２１９号公報には、タスクのメモリ領域確保要求に対応するスワップ管理テーブルの作成・管理を行い、当該メモリ領域確保要求に対するメモリ領域を確保する、スワップアウト制御手段は、スワップアウトの必要時に、ページ単位でのスワップアウトを行うべきかタスク単位での一括したスワップアウトを行うべきかを判断し、その判断に基づいてスワップアウトの制御・実行（スワップ管理テーブルへの情報の設定を含む）を行い、スワップアウト対象限定手段は、タスク単位での一括したスワップアウトが行われる場合に、スワップ管理テーブルに基づき、「更新されておらずコピーされているページ」のスワップアウトを行わないように制御することにより、ページ単位でのスワップアウトとタスク単位でのスワップアウトとを組み合わせて、仮想メモリシステムでの効率的なメモリ管理を可能にする技術が開示されている。
【０００５】
また、特開平１１−２４９５０号公報には、並列ジョブをそれぞれ実行させる、相互に通信路を持ち、外部記憶装置を持ったＰＥ（プロセッサエレメント）および外部記憶装置を持たないＰＥと、並列ジョブの実行指示に対応して、当該並列ジョブが実行しようとするＰＥ上の資源が不足し、かつ優先度の低いジョブが実行中であった場合に、優先度の低いジョブの実行中の全てのＰＥに一時的に実行停止させて資源をそれぞれ異なる外部記憶装置にスワップさせる指示を通知するプロセスと、通知を受けた各ＰＥ上で指示されたジョブを一時的に実行停止して指示された外部記憶装置に資源を書き出すプロセスとを備えるように構成することにより、優先度の高い並列ジョブをより早く実行できるように、スワップする実行中の並列ジョブの資源をそれぞれ異なる複数の外部記憶装置上に効率良好に高速に書き出す技術が開示されている。
【０００６】
また、特開平８−１６４１０号公報には、関連する技術として使用ＰＥ台数が制限台数未満のジョブを実行するクラス、および実行すべきジョブがまだ到着していないクラスでは未使用のＰＥが発生するが、後続のジョブや後に到着するジョブに対するＰＥの割り当てを確実に行うためには未使用のＰＥを他のクラスのジョブに割り当てることができないため、ＰＥの有効利用を目的として、複数のジョブキューにより実行待ちジョブおよび実行中ジョブを管理し、各ジョブのシステム資源要求量、待ち時間等に応じて所属キュー（ジョブが投入／実行されるキュー）およびキュー内優先度を設定する技術が開示されている。
【０００７】
この技術を利用すると、所属キューおよびキュー内優先度は動的に見直され、これらに従ってジョブのスケジューリングが行われ、実行中の非優先実行ジョブはスワップアウトの対象となり、スワップアウトされたプロセッサ要素は実行待ちの優先実行ジョブを起動するために割り当てられる。
【０００８】
【特許文献１】
特開平５−８８９８４号公報  （第２−３頁）
【０００９】
【特許文献２】
特開２０００−２００２１９号公報  （第２−４頁）
【００１０】
【特許文献３】
特開平１１−２４９５０号公報  （第２−３頁）
【００１１】
【特許文献４】
特開平８−１６４１０号公報  （第４−５頁、第１０頁）
【００１２】
【発明が解決しようとする課題】
特開平５−８８９８４号公報で開示されている技術では、メモリのスワップアウト時にまず活性メモリだけをスワップアウトし、非活性メモリについては、ページアウトの優先順位を上げて主記憶上に残しておき、他のジョブからメモリ要求によりページアウト要求発生時にページアウトで対処することによりスワッピング処理のオーバヘッドを削減するものである。しかしながら、スワップアウト対象のジョブの進行状況によって、必ずしもスワップアウト対象ジョブが有するメモリの非活性メモリが占める割合が多いとは限らず、スワップアウトするメモリ量が緊急度指定ジョブが必要とするメモリ量以上となる場合が往々にしてある。
【００１３】
特開２０００−２００１９号公報で開示されている技術では、スワップアウトの必要時に、従来はページ単位でのみ行っていたスワップアウトを、ページ単位でのスワップアウトを行うべきかタスク単位での一括したスワップアウトを行うべきかを判断し、その判断に基づいてスワップアウトの制御を行うようにしたものであり、スワップアウト対象のメモリ量を考慮してスワッピング処理のオーバヘッドを削減するものではない。そのため、緊急度指定されたジョブが要求するメモリ量以上のメモリがスワップアウトの対象となっていた。
【００１４】
特開平１１−２４９５０号公報で開示されている技術では、スワップアウトする資源をそれぞれ複数の外部記憶装置上に効率よく高速に書き出す技術であり、特開２０００−２００１９号公報で開示されている技術と同様に、スワップアウト対象のメモリ量を考慮してスワッピング処理のオーバヘッドを削減するものではない。そのため、緊急度指定されたジョブが要求するメモリ量以上のメモリがスワップアウトの対象となっていた。
【００１５】
また、特開平８−１６４１０号公報で開示されている技術を利用した場合、複数のＰＥのなかのそれぞれのＰＥごと（ノード単位ごと）のメモリのスワップを行っているが、ノード内のメモリ量については、スワップアウト対象のメモリ量を考慮したものではなく、緊急度指定されたジョブが要求するメモリ量以上のメモリがスワップアウトの対象となっていた。
【００１６】
以下に、図１４、１５に基づいて特開平８−１６４１０号公報で開示されている技術を利用した場合の問題点について具体的に述べる。図１４では、スワップ優先度２０のジョブ０がノード０から２を使用し、それぞれのノードで２０ＭＢのメモリを占有し、スワップ優先度４０のジョブ１がノード０と１を使用し、それぞれのノードで１５ＭＢのメモリを占有しており、ノード０の空きメモリは２５ＭＢ、ノード１の空きメモリは２５ＭＢである。ここでスワップ優先度とは、優先的に各ノートの資源を利用するための優先度を示すものであり、数値の大きいものほど優先度が高いことを示す。ここで、緊急度指定されたスワップ優先度３０の、ノード０から２を使用し、それぞれのノードで３０ＭＢのメモリを要求するジョブが投入された例を考えてみる。
【００１７】
投入された緊急度指定されたジョブはスワップ優先度が３０であるため、それよりスワップ優先度の低いジョブ０がスワップアウトの対象として選択される。それぞれのノードでスワップアウトするメモリ量は実行中ジョブのノード単位であるため、ノード０では２０ＭＢ、ノード１では２０ＭＢ、ノード２では０ＭＢとなる。しかしながら、緊急度指定されたジョブが必要とするメモリ量は３０ＭＢのためノード０，１のスワップアウトするメモリ量は、空きメモリ量がそれぞれ２５ＭＢあるので、それぞれ５ＭＢをスワップアウトすればよいところ２０ＭＢと必要以上のメモリがスワップアウトされている。
【００１８】
次に図１５は、図１４に対し、前記の緊急ジョブ実行するために、ジョブ０がスワップアウトされた状況が示してある。スワップアウトしたジョブの要求メモリ量よりスワップアウト済み通算メモリ量が少ない場合、スワップアウトされていないメモリ（ノード２にあるＦ１の部分）が計算機システム上に残っている。このメモリは他のジョブが使用することができないため、資源の有効利用を阻害する原因になっており、従来技術ではこれを解決していない。
【００１９】
本発明は、上記のような事情に鑑みて提案されたものであり、ジョブスワップに要するオーバヘッドを削減、およびメモリ資源の有効利用を図ることを目的としている。
【００２０】
【課題を解決するための手段】
図１は、実施の形態１の全体構成図を示すものである。本発明のジョブ管理プログラム１１はジョブ管理装置１としてのコンピュータ上で実行するプログラムであり、部分的にスワップアウトされたジョブのスワップ優先度を実行中ジョブより低く変更することにより、部分的にスワップアウトされたジョブの方が実行中ジョブよりスワップアウトする順位を高める優先度変更手段１１１と、スワップ優先度の低いものから順に部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するジョブ選択手段１１２と、緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するメモリ量算出手段１１３と、ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするスワップ手段１１４とを有することにより、緊急度指定されたジョブが実行するために必要最低限のメモリ量のみをスワップアウトの対象とすることが可能となり、ジョブスワップのオーバヘッドを最小限に抑えることができる。また、部分的にスワップアウトされたジョブを優先的に再度スワップアウトすることにより、メモリ資源の有効利用を図ることが可能となる。
【００２１】
なお、ジョブ管理プログラム１１に、各ノードの空きメモリを監視するメモリ監視手段１１５を備え、各ノードの空きメモリ量が所定の値より小さくなったことを検出すると、前記部分的にスワップアウトされたジョブのスワップアウトされていないメモリを、所定のルールに基づいてスワップ手段１１４を呼び出しスワップアウトすることにより、更にメモリ資源の有効利用を図ることが可能となる。
【００２２】
更に、優先度変更手段１１１に、部分的にスワップアウトされたジョブのスワップ優先度を、すべてのメモリがスワップアウトされたジョブより高く変更することにより、部分的にスワップアウトされたジョブの方がすべてのメモリがスワップアウトされたジョブよりスワップインする順位を高める機能を持たせ、ジョブ選択手段１１２に、スワップ優先度の高い順にスワップアウトされたジョブからスワップイン対象ジョブを選択する機能を持たせ、スワップ手段１１４に、ノード毎に指定されたメモリ量に基づいて前記スワップイン対象ジョブをスワップインする機能を持たすことにより、使用できないメモリが発生する時間を短縮することができ、更にメモリ資源の有効利用を図ることが可能となる。
【００２３】
【発明の実施の形態】
図１は本発明の実施の形態１の全体構成図が示してある。本発明のジョブ管理プログラム１１はジョブ管理装置１として振る舞うコンピュータ上で実行するプログラムである。優先度変更手段１１１は、部分的にスワップアウトされたジョブの方が実行中ジョブよりスワップアウトする順位を高めるために、部分的にスワップアウトされたジョブのスワップ優先度を実行中ジョブより低く変更したり、部分的にスワップアウトされたジョブの方がすべてのメモリがスワップアウトされたジョブよりスワップインする順位を高めるために、部分的にスワップアウトされたジョブのスワップ優先度を、すべてのメモリがスワップアウトされたジョブより高く変更する。
【００２４】
ジョブ選択手段１１２は、部分的にスワップアウトされたジョブ、および実行中ジョブからスワップ優先度の高いものから順にスワップアウト対象ジョブを選択したり、スワップ優先度の低い順にスワップアウトされたジョブからスワップイン対象ジョブを選択し、メモリ量算出手段１１３は、スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出する。
【００２５】
スワップ手段１１４は、ノード毎に指定されたメモリ量に基づいてスワップイン・アウト対象ジョブを部分的にスワップイン・アウトし、メモリ量監視手段１１５は、各ノードの空きメモリ量を監視し、空きメモリ量が所定の条件を満たすとスワップアウトされていないメモリをスワップアウトしたり、スワップインジョブがメモリ不足によりスワップインできない場合にスワップアウトされていないメモリをスワップアウトする。
【００２６】
ジョブメモリ管理テーブル１２は、マスターノード１のメモリ上に存在し、ジョブ毎にジョブスワップのためにメモリを管理する。ノードメモリ管理テーブル１３は、ノード毎に、空きメモリを管理するためのテーブルである。ジョブ実行装置（ジョブ実行ノード  ノード０）２、ジョブ実行装置（ジョブ実行ノード  ノード１）３は利用者のジョブを実行させる計算機であり、ジョブ管理装置（マスタノード）とは、ノード間接続装置で、互いに接続されている。
【００２７】
図２は、ジョブメモリ管理テーブル例のデータ形式が示してある。このテーブルは、ジョブ内のプロセス毎に管理するものである。管理する内容は以下の通りである。ジョブ毎に管理するものには、スワップ優先度とスワップ状態域がある。スワップ優先度はノードの資源（メモリ、ＣＰＵ）使用の優先度を設定するものである。緊急度指定のジョブのスワップ優先度が実行中ジョブのスワップ優先度より大きい場合に実行中ジョブのスワップアウトが発生する。また、スワップインするジョブの優先順位にも使用される。また、スワップ状態域は、スワップアウトするジョブのメモリがすべてスワップアウトしているか、部分的にスワップアウトしているかを判断するフラグを設定している。
【００２８】
プロセス毎に管理するものには、ノード番号、要求メモリ量、今回スワップアウトするメモリ量、スワップアウト済み通算メモリ量がある。ノード番号は、プロセスが実行するノード番号である。要求メモリ量は、プロセスごとに要求されるメモリ量であり、プロセス間で同一である。今回スワップアウトするメモリ量は、スワップアウトされるジョブのメモリ量を設定するものである。プロセスごとにスワップアウトされるメモリ量は異なる。スワップアウト済み通算メモリ量は、スワップアウトしたジョブのメモリ量を設定するものである。
【００２９】
緊急度指定されたジョブの各プロセスが必要とするメモリ量から、スワップアウトするジョブのメモリ量をページ単位で計算し、緊急度指定されたジョブが実行するために必要な最小限のスワップアウトするメモリ量をプロセス毎にページ単位で設定する。
図３は、ノード毎に、空きメモリを管理するノードメモリ管理テーブル例のデータ形式が示してある。ノード番号には、ノードを識別する番号が、メモリ実装量は、ノードに実装されたメモリ量が、空きメモリ量には、現時点の空きメモリの値が設定される。
【００３０】
図４は、実施の形態１における部分スワップアウト処理の流れを示すフローチャートである。実行待ちジョブに緊急度指定がされると（Ｓ４０１）、スワップアウト状態、スワップ優先度に基づいてスワップアウト対象のジョブリストを作成する（Ｓ４０２）。詳細については、Ｓ４０８からＳ４１２で説明する。
次に、緊急度指定のジョブが要求するメモリ量に基づいて、スワップ対象ジョブリストの上位のものからスワップアウトするメモリ量をノード毎に算出し（Ｓ４０３）、緊急度指定のジョブが動作するために必要最低限のメモリ量をスワップアウトするメモリ量として設定する（Ｓ４０４）。詳細については、Ｓ４１３からＳ４１６で説明する。
【００３１】
次に、緊急度指定のジョブが実行できるメモリ量に達しているかどうか判定し（Ｓ４０６）、未だ達してない場合にはスワップアウト対象ジョブリストにある次のジョブのジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定し（Ｓ４０５）、Ｓ４０３の処理に戻る。達している場合には、選択したジョブのスワップアウト処理を行う（Ｓ４０７）。スワップアウト処理自体は、従来技術であるため処理の詳細については省略する。
【００３２】
スワップアウト対象ジョブリストの作成は、スワップ優先度が緊急度指定のジョブより低い実行中ジョブ、および部分的にスワップアウトされているジョブを対象にして行い、まず取り出したジョブのジョブメモリ管理テーブルを参照し、スワップ状態域のフラグが部分スワップアウト中のジョブかどうかを判定する（Ｓ４０８）。部分スワップアウト中のジョブであれば、スワップアウト優先順位を上げるためにスワップ優先度を実行中ジョブより小さい値に変更する（Ｓ４１０）。
【００３３】
そうでない場合には、実行中ジョブのスワップ優先度が緊急度指定のジョブより小さいかどうかを判定する（Ｓ４１１）。小さい場合には他の実行中ジョブのスワップ優先度と比較して、小さい場合はスワップ優先順位を上げ（Ｓ４１２）、次のジョブのチェックを行うために次のジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定して（Ｓ４０９）、Ｓ４０８に戻る。そうでない場合には次のジョブのチェックを行うために次のジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定し（Ｓ４０９）、Ｓ４０８に戻る。すべての実行中ジョブキュー、およびスワットアウトジョブキューにあるジョブのチェックが完了したらスワップアウト対象ジョブリストの先頭ジョブのジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定しＳ４０３へ進む。
【００３４】
緊急度指定のジョブが要求するメモリ量に基づいて、スワップアウト対象ジョブリストの上位のものからスワップアウトするメモリ量をノード毎に算出するために、まず緊急度指定のジョブの割り当てノードのメモリ量は足りているかどうかを、ノードメモリ管理テーブルの空きメモリ量を参照して判定する（Ｓ４１３）。足りていない場合は、ノード毎に必要なメモリ量を算出し（Ｓ４１５）、その値をジョブメモリ管理テーブルの「今回スワップアウトするメモリ量」に設定し（Ｓ４１６）し、次のノードのチェックを行うために次のノードメモリ管理テーブルのアドレスをノードメモリ管理テーブルポインタに設定し（Ｓ４１４）、Ｓ４１３に戻る。
【００３５】
足りている場合は、次のノードのチェックを行うために次のノードメモリ管理テーブルのアドレスをノードメモリ管理テーブルポインタに設定し（Ｓ４１４）、Ｓ４１３に戻る。なお、スワップアウトするメモリ量は、緊急度指定ジョブの要求メモリ量からノードの空きメモリ量を差し引いた値である。すべてのノードのチェックが完了すると、Ｓ４０６へ進む。
【００３６】
図５に示すスワップアウト前のジョブメモリ管理テーブル例と、図６に示すスワップアウト後のジョブメモリ管理テーブル例を元に、前述したスワップ処理の具体例を説明する。
現在、スワップ優先度２０の実行中ジョブが１ジョブあり、ノード０の空きメモリは０ＭＢ、ノード１の空きメモリ量は４８ＭＢと仮定する。ここへ１プロセス当たりの要求メモリ量が３２ＭＢ、プロセス数が３、スワップ優先度が３０の緊急度指定ジョブが投入された場合の、実行中ジョブがスワップアウトされる前のジョブメモリ管理テーブル例が図５に示してある。また、実行中ジョブがスワップアウトされた後のジョブメモリ管理テーブル例が図６に示してある。緊急度指定のジョブのプロセス０のノード番号は０、要求メモリは３２ＭＢで、ノード０の空きメモリは０であるため、今回スワップアウトするメモリ量は３２ＭＢとなる。緊急度指定ジョブのプロセス１と２のノード番号はともに１であり、要求メモリ量はそれぞれ３２ＭＢで、ノード１の空きメモリ量は４８ＭＢであるため、プロセス１と２の不足メモリはトータルで１６ＭＢとなる。プロセス１から１６ＭＢをスワップアウトする必要があるが、プロセス２ではスワップアウトする必要はない。
【００３７】
実行中ジョブがスワップアウトされた後のジョブメモリ管理テーブル例が図６に示してある。スワップアウトの結果、プロセス０のスワップアウト済通算メモリ量は３２ＭＢ、プロセス１のそれは１６ＭＢとなり、プロセス２のそれは０ＭＢとなる。また、ジョブのスワップ状態域には、スワップアウト後では、メモリ部分スワップ中と変更される。
【００３８】
図７は、実施の形態１における自動スワップアウト処理の流れを示すフローチャートである。各ノードの空きメモリ量を、例えばタイマ監視により定期的に監視し、空きメモリ量が所定の量より少なくなると、スワップアウトされていないメモリを自動的にスワップアウトして（Ｓ７０１）メモリ資源の有効利用を図る。空きメモリが所定の値より少なくなっているかどうかは、例えばノードの空きメモリ量がノードに実装されたメモリ量の１０分の１以下になったかどうかで判定する（Ｓ７０５）。
【００３９】
自動的にスワップアウトするメモリ量は、例えば対象ノードでスワップアウトされていないメモリを空きメモリ量が２分の１になるまでなどとして、スワップアウトを行う（Ｓ７０７）。これをすべてのノードに対して行うため、ノードメモリ管理テーブルポインタに次のノードメモリ管理テーブルのアドレスを設定し（Ｓ７０６）、Ｓ７０５に戻る。すべてのノードのチェックが完了すると、Ｓ７０２に進む。
【００４０】
次にスワップ優先度の高い順にスワップインジョブを選択する（Ｓ７０２）。選択したスワップインジョブがメモリ量の不足により、スワップインできない場合、スワップアウトされていないメモリを自動的にスワップアウトする（Ｓ７０３）。詳細については、Ｓ７０８からＳ７１２で説明する。スワップイン用のメモリが確保できたら、選択したジョブのスワップインを行う（Ｓ７０４）。スワップイン処理自体については、従来技術であるため処理の詳細については省略する。
【００４１】
Ｓ７０３の詳細について説明する。スワップインジョブの要求メモリ量がノードに空いていないかどうか、ノードメモリ管理テーブルを参照して判定する（Ｓ７０８）。空いている場合には次のノードのチェックを行うために次のノードメモリ管理テーブルのアドレスをノードメモリ管理テーブルポインタに設定し（Ｓ７０９）、Ｓ７０８に戻る。すべてのノードに対するチェックを行うと、Ｓ７０４へ進む。
【００４２】
空いていない場合には、ノード毎にスワップインに必要なメモリ量を要求メモリ量からノードの空きメモリ量を差し引いて算出し（Ｓ７１０）、スワップアウトしていないメモリ量の大きいジョブを選択し（Ｓ７１１）、その値をジョブメモリ管理テーブルの「今回スワップアウトするメモリ量」に設定しスワップアウト処理を行い（Ｓ７１２）、次のノードのチェックを行うために、次のノードメモリ管理テーブルのアドレスをノードメモリ管理テーブルポインタに設定し（Ｓ７０９）、Ｓ７０８に戻る。なお、スワップアウト処理自体は従来技術であるため、処理の詳細については省略する。
【００４３】
図８は、ノードの空きメモリを監視することによる自動スワップアウト前のノードメモリ管理テーブル例が示してある。ノード０の空きメモリ量が実装メモリ量の１０分の１以下になっているため、ノード０のスワップアウトされていないメモリ量を実装メモリ量の２分の１以上になるまでを自動スワップアウトが行われる。この例では以下の式で示すように１０８ＭＢのメモリ量が自動スワップアウトの対象となる。
（２５６ＭＢ÷２）−  ２０ＭＢ  ＝  １０８ＭＢ
なお、ノード１は空きメモリ量が実装メモリ量の１０分の１より大きいため、自動スワップアウトの対象とはならない。
【００４４】
図９は、ノードの空きメモリを監視することによる自動スワップアウト後のノードメモリ管理テーブル例が示してある。自動スワップアウトにより、ノード０の空きメモリ量が１２８ＭＢになる。
図１０は、スワップインジョブの要求メモリ量に基づく自動スワップ前のジョブメモリ管理テーブル例が示してある。
【００４５】
ノード０の空きメモリ量が６４、ノード１の空きメモリ量が５６ＭＢであるときに、スワップインジョブの１プロセスあたりの要求メモリ量が３２ＭＢ、プロセス数が３  （ジョブあたり３２×  ３  ＝  ９６ＭＢ）である場合、スワップインジョブのメモリ量が不足するため、スワップメモリ量のうちノード毎にプロセス単位でスワップアウトするメモリ量を算出する。
【００４６】
ａ）  ノード０を使用するプロセス０の今回スワップアウトするメモリ量は
要求メモリ量（３２ＭＢ）−ノード０の空きメモリ量（６４ＭＢ）＝スワップアウトするメモリ量（０ＭＢ  ）
この場合、スワップアウトするメモリ量が０となるためスワップアウトしない。
【００４７】
ｂ）  ノード１を使用するプロセスの今回スワップアウトするメモリ量は
要求メモリ量（３２ＭＢ×２  ）−ノード１の空きメモリ量（５６ＭＢ）＝  ８ＭＢ
となり、プロセス１の今回スワップアウトするメモリ量は８ＭＢ  となる。また、
プロセス２の今回スワップアウトするメモリ量は０ＭＢとなる。
図１１は、スワップインジョブの要求メモリ量に基づく自動スワップ後のジョブメモリ管理テーブル例が示してある。プロセス１は８ＭＢがスワップアウト済み通算メモリ量に加算され、２４ＭＢになる。ジョブ全体ではメモリ量が部分スワップアウト中であるため、スワップ状態域はメモリ部分スワップ中のままである。
【００４８】
図１２は、実施の形態１における部分スワップイン処理の流れを示すフローチャートである。実行中ジョブが終了するなどして計算機システムに資源が開放されると、スワップアウトされているジョブのスワップインが可能となる（Ｓ１２１）ため、スワップアウト中のジョブをスワップ優先度順に並べる（Ｓ１２２）。
【００４９】
次に、スワップ優先度の一番高いジョブに対して、他にスワップ優先度が同じジョブがあるかどうか判定し（Ｓ１２３）、なければスワップ優先度の一番高かったジョブをスワップインする（Ｓ１２５）。他にスワップ優先度が同じジョブがある場合には、Ｓ１２７からＳ１２１１で示すようにスワップアウトされていないメモリ量に応じてスワップインするジョブを選択する（Ｓ１２４）。スワップイン処理自体は従来技術であるため、処理の詳細は省略する。
【００５０】
スワップアウトされていないメモリ量に応じてスワップインするジョブを選択するために、まずジョブメモリ管理テーブルを参照し、スワップ状態域のフラグはメモリ部分スワップ中かどうか判定する（Ｓ１２７）。メモリ部分スワップ中でない場合は、次のスワップアウトジョブのジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定して（Ｓ１２６）、Ｓ１２７へ戻る。
【００５１】
メモリ部分スワップ中の場合は、スワップ状態域のフラグがメモリ全スワップ中のジョブよりスワップイン優先度を上げるために、スワップ優先度をメモリ全スワップ中のジョブより高くなるように変更する（Ｓ１２８）。次に、スワップアウトされていないメモリ量を、ジョブの要求メモリ量からスワップアウト済み通算メモリを差し引くことで算出する（Ｓ１２９）。次に、算出したスワップアウトされていないメモリ量が他のスワップアウトジョブと比較して（Ｓ１２１０）、小さい場合は次のスワップアウトジョブのジョブメモリ管理テーブルのアドレスをジョブメモリ管理テーブルポインタに設定して（Ｓ１２６）、Ｓ１２７へ戻る（Ｓ１２６）。また、大きい場合には、さらにスワップイン優先順位が上がるように、スワップ優先度を現在の値より大きな値に変更する（Ｓ１２１１）。
【００５２】
このようにスワップ優先度を変更すると、図１３で示すように、部分的にスワップアウトされ、かつスワップアウトしていないメモリ量が多いものほど、スワップインする順位が上がり、メモリ資源の有効利用を図ることが可能となる。
（付記１）  共用メモリ型ＳＭＰ計算機システムのジョブスワップ方法であって、部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するステップと、緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するステップと、ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするステップとを有することを特徴とするジョブスワップ方法。
【００５３】
（付記２）  各ノードの空きメモリ量が所定の条件を満たすと、前記部分的にスワップアウトされたジョブのスワップアウトされていないメモリを所定のルールに基づいてスワップアウトする付記１記載のジョブスワップ方法。
（付記３）スワップインジョブの要求するメモリ量が空きメモリ量より大きいことを検出すると、前記部分的にスワップアウトされたジョブのスワップアウトされていないメモリを所定のルールに基づいてスワップアウトする付記１記載のジョブスワップ方法。
【００５４】
（付記４）  共用メモリ型ＳＭＰ計算機システムのジョブスワップ方法であって、部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、スワップ優先度に基づいてスワップアウトされたジョブからスワップイン対象ジョブを選択するステップと、ノード毎に指定されたメモリ量に基づいて前記スワップイン対象ジョブをスワップインするステップと
を有することを特徴とするジョブスワップ方法。
【００５５】
（付記５）  部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更する優先度変更手段と、スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するジョブ選択手段と、緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するメモリ量算出手段と、ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするスワップ手段とを有することを特徴とするジョブ管理装置。
【００５６】
（付記６）  部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更する優先度変更手段と、スワップ優先度に基づいて部分的にスワップアウトされたジョブ、および実行中ジョブからスワップアウト対象ジョブを選択するジョブ選択手段と、緊急度指定された実行待ちジョブの要求メモリ量に基づいて、前記スワップアウト対象ジョブのノード毎にスワップアウト対象メモリ量を算出するメモリ量算出手段と、ノード毎に指定されたメモリ量に基づいて前記スワップアウト対象ジョブを部分的にスワップアウトするスワップ手段としてコンピュータを機能させるジョブ管理プログラム。
【００５７】
（付記７）  部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、スワップ優先度に基づいてスワップアウトされたジョブからスワップイン対象ジョブを選択する優先度変更手段と、ノード毎に指定されたメモリ量に基づいて前記スワップイン対象ジョブをスワップインするスワップ手段とを有することを特徴とするジョブ管理装置。
【００５８】
（付記８）  部分的にスワップアウトされたジョブのスワップ優先度を所定のルールに基づいて変更するステップと、スワップ優先度に基づいてスワップアウトされたジョブからスワップイン対象ジョブを選択する優先度変更手段と、ノード毎に指定されたメモリ量に基づいて前記スワップイン対象ジョブをスワップインするスワップ手段としてコンピュータを機能させるジョブ管理プログラム。
【００５９】
【発明の効果】
本発明は、単一ノード、またはネットワークで複数ノードを接続した共用メモリ型ＳＭＰ計算機システムにおいて、ジョブスワップに要するオーバヘッドを削減、およびメモリ資源の有効利用を図ることが可能となる。
【図面の簡単な説明】
【図１】実施の形態１の全体構成図
【図２】ジョブメモリ管理テーブル例
【図３】ノードメモリ管理テーブル例
【図４】実施の形態１における部分スワップアウト処理
【図５】スワップアウト前のジョブメモリ管理テーブル例
【図６】スワップアウト後のジョブメモリ管理テーブル
【図７】実施の形態１における自動スワップアウト処理
【図８】自動スワップアウト前のノードメモリ管理テーブル例
【図９】自動スワップアウト後のノードメモリ管理テーブル例
【図１０】自動スワップアウト前のジョブメモリ管理テーブル例
【図１１】自動スワップアウト後のジョブメモリ管理テーブル例
【図１２】実施の形態１における部分スワップイン処理
【図１３】スワップイン対象ジョブリスト例
【図１４】従来技術におけるスワップアウト時のオーバヘッド削減例
【図１５】従来技術における資源が有効利用されない例
【符号の説明】
１  ジョブ管理装置（マスタノード）
２  ジョブ実行装置（ジョブ実行ノード  ノード０）
３  ジョブ実行装置（ジョブ実行ノード  ノード１）
４  ノード間接続装置
１１  ジョブ管理プログラム
１２  ジョブメモリ管理テーブル
１３  ノードメモリ管理テーブル
１１１  優先度変更手段
１１２  ジョブ選択手段
１１３  メモリ量算出手段
１１４  スワップ手段
１１５  メモリ量監視手段
【図１】
2004227188.tif 000003
【図２】
2004227188.tif 000004
【図３】
2004227188.tif 000005
【図４】
2004227188.tif 000006
【図５】
2004227188.tif 000007
【図６】
2004227188.tif 000008
【図７】
2004227188.tif 000009
【図８】
2004227188.tif 000010
【図９】
2004227188.tif 000011
【図１０】
2004227188.tif 000012
【図１１】
2004227188.tif 000013
【図１２】
2004227188.tif 000014
【図１３】
2004227188.tif 000015
【図１４】
2004227188.tif 000016
【図１５】
2004227188.tif 000017