(57)【要約】【課題】使用可能なメモリが枯渇する状況において、ハードウェアリソースを増やすことなくメモリ不足を解消する。【解決手段】計算機は、ユーザが設定したメモリ使用率の閾値情報を保有している。ＯＳは、常に現在使用しているメモリ使用率と、計算機が保有しているメモリ使用率の閾値を比較し監視する。ＯＳは、現在使用しているメモリの使用率が、メモリ使用率の閾値以上になったことを検出したとき、Ｆ／Ｗに対してメモリ使用率が閾値を超えたことを報告する。報告を受け取った計算機のＦ／Ｗは、メモリミラーリングによって、ＯＳが参照できないメモリをＨｏｔ‐Ｒｅｍｏｖｅする。その後Ｆ／Ｗはメモリミラーリング機能を解除し、このメモリを再びＨｏｔ‐Ａｄｄする。さらにＦ／Ｗは、Ｈｏｔ‐Ａｄｄしたメモリを、ＯＳが新たに参照できるメモリアドレス空間に配置し、ＯＳに対して作業完了の報告を行う。【選択図】図１
2009199478.tif 000002
【特許請求の範囲】
【請求項１】
計算機内に複数のメモリを搭載し、メモリをＨｏｔ‐Ａｄｄ、Ｈｏｔ‐Ｒｅｍｏｖｅできる機能を備え、メモリをミラーリングできるシステムにおいて、Ｈｏｔ‐Ａｄｄ、Ｈｏｔ‐Ｒｅｍｏｖｅの機能を用いて、動的にミラーリングの機能を解除し、ＯＳが使用可能なメモリ領域を増やすことを、特徴とするメモリミラーリングシステム。
【請求項２】
請求項１のメモリミラーリングシステムにおいて、メモリの使用率が閾値未満になった場合、動的にメモリミラーリングの機能を、再び有効にできることを、特徴とするメモリミラーリングシステム。
【請求項３】
請求項２のメモリミラーリングシステムにおいて、ＯＳが使用するメモリの使用用途に応じて、部分的に、メモリミラーリングを解除できることを、特徴とするメモリミラーリングシステム。
【請求項４】
請求項２のメモリミラーリングシステムにおいて、ユーザがメモリ使用率の閾値を動的に変更でき、また本機能を動的に有効もしくは無効に変更することができることを、特徴とするメモリミラーリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリミラーリング機能を持つ計算機に関する
【背景技術】
【０００２】
ミッションクリティカルな分野において、システムの可用性を高めるため、フォールトトレラントシステムを構築するのが一般的である。その手段として、近年取り組まれている手法に、ハードウェアを冗長化する方法がある。この方法でのシステムは、冗長化しているハードウェアの一方で、致命的なエラーが発生しても、エラーが発生していないもう一方のハードウェアで稼動し続ける。
【０００３】
ハードウェアにはプロセッサ、メモリ、ハードディスクと様々存在するが、この中でもメモリの場合は、メモリをミラーリングすることで、冗長化し、可用性を高めることができる。この技術は、プロセッサが、２つのメモリに同一の内容を書込み、メモリから任意のデータを読込むとき、一方のメモリで致命的エラーが起きても、エラーが発生していないもう一方メモリからデータを読込む。これにより、特別な条件下でない限り、メモリのエラーによる致命的な障害は、回避できる。
【０００４】
特許文献１で述べているインタリーブメモリシステムでは、ひとつのメモリコントローラに対して、２つのチャネルが接続しており、それぞれのチャネルの先に、データを書込むデータセクション１とデータセクション２が存在する。従来までの方式では、プロセッサが、データをメモリに書込むとき、データセクション１だけに、目的のデータを書込み、その後、同一セクションに冗長化させたいデータを書込んでいた。そのため、冗長化させたいデータを書込むためには、先に目的のデータが書込み完了してから出なければ、行えない。
【０００５】
特許文献１では、プロセッサが、データをメモリに書込むとき、データセクション１に目的のデータを書込み、データセクション２に冗長化させたいデータを同時に書込む。これにより、プロセッサが、メモリにデータを書込むとき、データセクション１に目的のデータを書込むのと同時に、データセクション２に冗長化したいデータを書込む、といった並列処理を行うことができる。これにより、メモリにデータを書込む効率を、向上させている。
【０００６】
また、プロセッサが、メモリに書込むデータを、チャネル間でインタリーブさせており、メモリのデータを読込むのときの効率化も高めている。インタリーブとは、チャネル間でデータを保存するアドレスを分散させ、データアクセス時に、スループット低下をさせないため、一箇所のチャネルに集中させず、アクセス効率を高める技術である。
【０００７】
しかし、この特許文献１の技術を用いても、搭載しているメモリの容量を超えるようなアプリケーションを稼動させようとすると、スラッシングという現象が発生し、アプリケーションの動作に支障をきたす。この点の解決策に関して、発明が解決しようとする課題にて、詳細に説明する。
【０００８】
【特許文献１】特表２００６‐５０５８６４号、Ｉｎｔｅｌ社、インタリーブミラーメモリシステム
【発明の開示】
【発明が解決しようとする課題】
【０００９】
通常、ＯＳは、アプリケーションを実行しようとするとき、メモリを消費する。ＯＳは、その消費するメモリの量が、システムに搭載されているメモリを大幅に超えると、仮想メモリからのスワップイン、スワップアウトを頻繁に繰り返す。この状態に陥ると、ＯＳは、アプリケーション処理能力が大幅に低下する。一般的に、この現象をスラッシング状態と呼ぶ。
【００１０】
このスラッシング状態に陥る一例として、ループ処理を含むプログラムに、メモリリークが存在する場合がある。メモリリークとは、一度確保したメモリを開放しないプログラムの不良のことである。ＯＳが、このメモリリークが存在するプログラムを実行すると、消費するメモリ量は増大していく。前記に記したように、ＯＳが消費するメモリ量が、搭載しているメモリを大幅に超えると、仮想メモリからのスワップイン、スワップアウトを頻繁に繰り返す。これにより、システムはスラッシング状態に陥る。
【００１１】
スラッシング状態から復帰するには、ＯＳがメモリを大量に消費しているアプリケーションを終了させるしかないが、一旦、スラッシング状態に陥ると、ＯＳがアプリケーションを終了することすらできない場合が多い。
【００１２】
上記で説明したスラッシングの問題が発生しうる場合、通常のシステムでは、あらかじめ、メモリを増設することで、スラッシングを回避することができる。しかし、メモリミラーリングを行っているシステムにおいて、同様の対策を行おうとすると、メモリの増設量は、通常のシステムと比べ、２倍のメモリを必要とする。メモリミラーリングとは、背景技術で説明したとおり、プロセッサが、２枚のメモリに同じデータを書込むことにより、データの冗長性を持たせる機能である。そのため、実際にＯＳが使用できるメモリは、半分になる。
【００１３】
本発明が解決しようとする課題は、上記で説明したスラッシングを、新たなメモリを増設することなく、解決することである。
【課題を解決するための手段】
【００１４】
本発明を行うシステムの構成して、計算機内に複数のメモリコントローラが存在し、対になるメモリコントローラ配下に、メモリのセットが存在する。メモリのセットとは、複数のメモリを、ひとつのメモリグループとしたものを示す。メモリのセットには、プライマリメモリのセットと、セカンダリメモリのセットがある。データの書込みの際、対になるメモリコントローラが、プライマリメモリのセットと、セカンダリメモリのセットに、同一のデータを書込むことにより、メモリミラーリングを行う。このような構成の計算機が、同一ネットワーク上に複数存在する。
【００１５】
計算機は、メモリをＨｏｔ−Ａｄｄする機能と、Ｈｏｔ−Ｒｅｍｏｖｅする機能を兼ね備える。ここで述べたＨｏｔ−ＡｄｄとＨｏｔ−Ｒｅｍｏｖｅとは、システムを停止せず、動的にハードウェアリソースを、追加、又は削除する機能のことを示す。また、計算機は、あらかじめ、ユーザが設定したメモリ使用率の閾値の情報を持っている。このメモリ使用率の閾値は、メモリをミラーリングした状態で、ＯＳが使用可能なメモリ量を、上限とする。ＯＳは、常に現在のメモリ使用率と、計算機が持っているメモリ使用率の閾値を比較する。ＯＳは、現在のメモリの使用率が、メモリ使用率の閾値以上になったとき、Ｆ／Ｗに対して、メモリ使用率が閾値を超えたことを報告する。
【００１６】
報告を受け取ったＦ／Ｗは、セカンダリメモリのセットを、Ｈｏｔ‐Ｒｅｍｏｖｅし、メモリミラーリング機能を解除する。Ｆ／Ｗは、Ｈｏｔ‐Ｒｅｍｏｖｅしたメモリのセットを再び、Ｈｏｔ‐Ａｄｄし、初期化する。メモリのセットの初期化完了後、Ｆ／Ｗは、Ｈｏｔ‐Ａｄｄしたメモリのセットを、ＯＳが参照できるメモリアドレス空間に配置し、ＯＳに対して作業完了の報告を行う。
【００１７】
さらに、ＯＳは、現在のメモリ使用率と、計算機が持っているメモリ使用率の閾値を比較し続ける。現在のメモリの使用率が、メモリ使用率の閾値未満になった場合、ＯＳは、セカンダリのメモリのセットに、保存されているデータを、一旦ハードディスクのスワップ領域に、退避する。そして、Ｆ／Ｗに対して、メモリ使用率が閾値未満になったことを報告する。
【００１８】
報告を受け取ったＦ／Ｗは、セカンダリのメモリのセットを、Ｈｏｔ‐Ｒｅｍｏｖｅし、メモリミラーリング機能を有効にする。Ｆ／Ｗは、Ｈｏｔ‐Ｒｅｍｏｖｅしたメモリのセットを、Ｈｏｔ‐Ａｄｄし、プライマリメモリのセットのデータを、Ｈｏｔ‐Ａｄｄしたセカンダリメモリのセットのデータに、コピーする。メモリのセットのデータを、コピー完了後、Ｆ／Ｗは、ＯＳに対して作業完了の報告を行う。
【００１９】
以上、このような仕組みにより、事前にメモリ不足を検出し、システムがスラッシング状態に陥ることを未然に防ぐことができる。
【発明の効果】
【００２０】
本メモリミラーリング方式は、計算機に新たなメモリを搭載することなく、プログラムの不良に起因するメモリリークや、アプリケーション処理の一時的な高負荷によるメモリ不足に、柔軟に対応でき、システムがスラッシング状態に陥ることを、未然に防ぐことができる。
【発明を実施するための最良の形態】
【００２１】
図１に、本発明の一実施形態の構成図を示す。計算機２００の構成は、メモリコントローラ１０に、チャネル３０Ａと３０Ｚを介して、メモリ２０Ａと２０Ｚが接続し、同様に、メモリコントローラ１１に、チャネル３１Ａと３１Ｚを介して、メモリ２１Ａと２１Ｚが接続している。メモリコントローラ１０とメモリコントローラ１１は、メモリのセット３００とメモリのセット３０１のメモリをミラーリングしており、メモリ２０Ａと２１Ａ、２０Ｂと２１Ｂに同一のデータを、書込む仕組みになっている。メモリは、３０Ａから３０Ｚ、３１Ａから３１Ｚまで複数接続可能だが、説明を簡略化するために、３０Ａ、３０Ｚ、３１Ａ、３１Ｚだけが、存在する構成で説明する。計算機２００内には、上記に述べたメモリミラーリングのセットが１００から１０ｎまで、複数存在する。このような構成の計算機が、管理バス７０を介して、計算機２００から計算機２０ｎまで、計算機２００と同一ネットワーク上に存在する。各計算機２００は、通信制御部８０を介して、外部の計算機２０ｎと、通信することができる。
【００２２】
計算機２００は、あらかじめ、ユーザによって設定された管理情報６０を保有している。この管理情報６０には、自動メモリミラーリング制御機能を有効するか否かの情報と、メモリミラーリングを解除するメモリ使用率の閾値がある。自動メモリミラーリング制御機能とは、自動的に、メモリミラーリングの構成を変更する機能である。この制御機能は、計算機２００で稼動するＯＳが、管理情報６０に保存されているメモリ使用率の閾値を越えるメモリを、使用したときに、稼動する。この機能の詳細について、図２の制御フローで説明する。
【００２３】
図２（ａ）と（ｂ）は、先に図１で示した構成において、自動メモリミラーリング機能を制御する動作フロー図を示したものである。この動作フロー図では、ＯＳが、現在稼動しているメモリの使用率と、管理情報６０に格納されているメモリ使用率の閾値を、比較した時点での始点( ステップ０１)から開始している。
【００２４】
ＯＳは、現在使用しているメモリ使用率が、計算機２００に格納してあるメモリ使用率の閾値を超えたことを検出したとき（ステップ０２）、Ｆ／Ｗサービスルーチンコールを用いて、メモリ構成変更指示をＦ／Ｗに通報する（ステップ０３）。
【００２５】
Ｆ／Ｗは、メモリ構成変更指示を、ＯＳから受けると（ステップ０４）、計算機２００に格納してある管理情報６０にアクセスし、自動メモリミラーリング制御機能の情報を受信する。自動メモリミラーリング制御機能が、無効であるとき、Ｆ／Ｗは何も行わず、ＯＳに正常値を返す（ステップ０８）。自動メモリミラーリング制御機能の設定が有効の場合、Ｆ／Ｗは、現在のメモリ構成の設定を確認するため、システム制御部９０に設定してある、メモリ構成状態情報６１を参照する。メモリ構成がミラーリング状態ではなかった場合、Ｆ／Ｗは何も行わず、ＯＳに正常値を返す（ステップ０８）。メモリ構成がミラーリング状態であった場合は、Ｆ／Ｗは、メモリミラーリングを解除する領域のチェックを行う（ステップ０９）。Ｆ／Ｗが、メモリミラーリング領域を、解除できるか否かの判定は、メモリを使用する用途で判断する。この用途については、後述の図４で詳細に説明する。メモリミラーリングを解除できない領域である場合、Ｆ／Ｗは何も行わず、ＯＳに正常値を返す（ステップ０８）。メモリミラーリングを解除できる領域である場合、Ｆ／Ｗは、メモリのセット３０１をＨｏｔ‐Ｒｅｍｏｖｅするように、メモリコントローラ１１を設定する（ステップ９）。一定時間待っていても、メモリコントローラ１１がＨｏｔ‐Ｒｅｍｏｖｅを完了しない場合、Ｆ／Ｗは、タイムアウトし、ＯＳに異常終了示すレスポンスを返す（ステップ１０）。
【００２６】
メモリのセット３０１のＨｏｔ‐Ｒｅｍｏｖｅ完了後、Ｆ／Ｗは、ミラーリング機能を解除にするため、メモリコントローラ１０とメモリコントローラ１１に、ミラーリング機能を無効にする設定を行う(ステップ１１)。この設定が完了すると、Ｆ／Ｗは、再びメモリのセット３０１をＨｏｔ‐Ａｄｄするように、メモリコントローラ１１を設定する(ステップ１２)。Ｈｏｔ−Ｒｅｍｏｖｅ時と同様に、一定時間待っていても、メモリコントローラ１１がＨｏｔ‐Ａｄｄ が完了しない場合、Ｆ／Ｗは、タイムアウトし、ＯＳに異常終了示すレスポンスを返す（ステップ１０）。Ｈｏｔ‐Ａｄｄ完了後、Ｆ／Ｗは、Ｈｏｔ‐Ａｄｄしたメモリのセット３０１を初期化する(ステップ１３)。初期化完了後、Ｆ／ＷはＯＳに正常終了示すレスポンスを返す(ステップ１４)。ここまでのステップまで異常終了せず、動作が完了すると、ＯＳは、ミラーリングするために、使用していたメモリ領域を、新たなメモリ領域として、使用することができる。
【００２７】
この間、ＯＳは、初期の状態から一時的に、メモリ容量が増えた状態が稼動する。しかし、ＯＳが、アプリケーションを終了することで、使用していたメモリを開放し、管理情報６０のメモリ使用率の閾値を下回ると、再びメモリをミラーリングする。この時の動作フローを、図３で詳細に説明する。
【００２８】
図３の（ａ）と（ｂ）は、先に図１で示した構成において、図２のフロー動作後、自動メモリミラーリング機能を制御する動作フロー図を示したものである。この動作フロー図では、図３と同様に、ＯＳが、現在稼動しているメモリの使用率と、管理情報６０のメモリ使用率の閾値を、比較した時点での始点( ステップ１６)から開始している。
【００２９】
ＯＳは、現在使用しているメモリ使用率が、管理情報６０のメモリ使用率の閾値未満になったことを検出すると（ステップ１７）、メモリのセット３０１にあるデータを、スワップ領域に退避する（ステップ１８）。退避完了後、ＯＳは、Ｆ／Ｗサービスルーチンコールを用いて、メモリ構成変更指示をＦ／Ｗに通報する（ステップ１９）。
【００３０】
Ｆ／Ｗは、メモリ構成変更指示を、ＯＳから受けると（ステップ２０）、計算機２００に格納してある管理情報６０にアクセスし、自動メモリミラーリング制御機能の情報を受信する（ステップ２２）。自動メモリミラーリング制御機能が、無効であるとき、Ｆ／Ｗは何も行わず、ＯＳに正常値を返す（ステップ２３）。自動メモリミラーリング制御機能の設定が有効の場合、Ｆ／Ｗは、現在のメモリ構成の設定を確認するため、システム制御部９０に設定してある、メモリ構成状態情報６１を参照する（ステップ２４）。メモリ構成がミラーリング状態ではなかった場合、Ｆ／Ｗは何も行わず、ＯＳに正常値を返す（ステップ２３）。メモリ構成がミラーリング状態だった場合、Ｆ／Ｗは、メモリのセット３０１をＨｏｔ‐Ｒｅｍｏｖｅするように、メモリコントローラ１１を設定する（ステップ２５）。一定時間待っていても、メモリコントローラ１１がＨｏｔ‐Ｒｅｍｏｖｅを完了しない場合、Ｆ／Ｗは、タイムアウトし、ＯＳに異常終了示すレスポンスを返す（ステップ２６）。
【００３１】
メモリのセット３０１のメモリをＨｏｔ‐Ｒｅｍｏｖｅ完了後、Ｆ／Ｗは、メモリコントローラ１０とメモリコントローラ１１に、ミラーリング機能を有効にする設定を行う(ステップ２７)。設定完了後、Ｆ／Ｗは、再びメモリのセット３０１をＨｏｔ‐Ａｄｄするように、メモリコントローラ１１を設定する(ステップ２８)。一定時間待っていても、メモリコントローラ１１がＨｏｔ‐Ａｄｄ が完了しない場合、Ｆ／Ｗは、タイムアウトし、ＯＳに異常終了示すレスポンスを返す（ステップ２６）。Ｈｏｔ‐Ａｄｄ完了後、Ｆ／Ｗは、メモリセット３００のデータを、Ｈｏｔ‐Ａｄｄしたメモリのセット３０１のデータにコピーする(ステップ２９)。コピー完了後、Ｆ／ＷはＯＳに正常終了示すレスポンスを返す(ステップ３０)。ここまでのステップ経て、メモリが枯渇気味な状況おいて、ＯＳは、一時的に使用できるメモリが増加する。次に、この機能を、ＯＳが使用するメモリの用途別に適応した例を、図４で説明する。
【００３２】
図４に、システム内の物理メモリアドレスと、ＯＳが参照可能なアドレス領域の関係の概略図を示す。この図では、計算機が、メモリ２０Ａとメモリ２０Ｚを、用途別に使用した例を表している。メモリ２０Ａは、ＯＳがミッションクリティカルなアプリケーション実行するために、利用される。その他、通常のアプリケーションは、メモリ２０Ｚを使用する。
【００３３】
図１で説明したように、メモリ２０Ａとメモリ２１Ａには、同様のデータが書込まれ、メモリ２０Ｚとメモリ２１Ｚには、同様のデータが書込まれる。また、メモリ２１Ａとメモリ２１Ｚは、メモリミラーリングにより、ＯＳから参照できない領域とする。今回、説明を簡潔にするため、各メモリの量は全てｘとして考える。
【００３４】
図４の左図は、本発明が稼動していないときを、右図は本発明が稼動しているときを、示している。本発明が稼動していないとき、ＯＳが使用できる総メモリ量は２ｘである。ここで、ＯＳのメモリ使用量が、閾値を超えると、図２のステップ踏み、メモリミラーリングを解除する。ただし、ＯＳが、使用しているメモリの領域をチェックし、ミッションクリティカルな用途で使用されているメモリ領域ならば、ミラーリングを解除しない。この判定は、図２のステップ０９において、Ｆ／Ｗが行う。
【００３５】
図２の全てのステップ経て、図４の右図に示すように、ＯＳが使用できる総メモリ量は、３ｘとなる。つまり、ＯＳは、通常のメモリミラーリングを行っているときに比べ、１．５倍のメモリを、一時的に使用できるようになったことになる。今回の条件では、全て同一のメモリの量であったため、１．５倍となったが、ミッションクリティカルなアプリケーションに、使用するメモリ量を下げると、この数値は上昇する。
【００３６】
さらに、ＯＳが使用するメモリ量が、メモリ使用率の閾値を下回ると、図３に示したステップをふむ。
【００３７】
以上、ＯＳが、ミッションクリティカルなアプリケーションに使用しているメモリ領域を除き、部分的にミラーリングを解除することできる。結果、ミッションクリティカルなアプリケーションを稼動しているシステムの可用性を維持しつつ、ＯＳが使用できるメモリ量が増加する。
【図面の簡単な説明】
【００３８】
【図１】本発明のメモリミラーリング方式の一実施例を示す構成図。
【図２（ａ）】本発明のメモリミラーリング構成解除時の動作フロー図。
【図２（ｂ）】同じく本発明のメモリミラーリング構成解除時の動作フロー図。
【図３（ａ）】本発明のメモリミラーリング再構成時の動作フロー図。
【図３（ｂ）】同じく本発明のメモリミラーリング再構成時の動作フロー図。
【図４】本発明のＯＳによる参照が可能なメモリ量の概略図。
【符号の説明】
【００３９】
１０、１１…メモリコントローラ、２０Ａ、２０Ｚ、２１Ａ、２１Ｚ…メモリ、３０Ａ、３０Ｚ、３１Ａ、３１Ｚ…チャネル、６０…管理情報、６１…メモリ構成状態情報、７０…管理バス、８０…通信制御部、９０…システム制御部、１００、１０ｎ…メモリミラーリングのセット、２００、２０ｎ…計算機、３００、３０１、３０ｎ…メモリのセット。
【図１】
2009199478.tif 000003
【図２（ａ）】
2009199478.tif 000004
【図２（ｂ）】
2009199478.tif 000005
【図３（ａ）】
2009199478.tif 000006
【図３（ｂ）】
2009199478.tif 000007
【図４】
2009199478.tif 000008