(57)【特許請求の範囲】
【請求項１】
ファイルのバックアップ機能を有する通信装置であって、
バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視する監視手段と、
前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する制御手段と、
を有することを特徴とする通信装置。
【請求項２】
前記制御手段が、前記バックアップ処理のメモリ使用量が前記所定値以下に低下すると、前記バックアップ処理を再開し、以降、前記バックアップ処理の一時停止、前記メモリ領域の解放および前記再開を順次繰り返す、ことを特徴とする請求項１に記載の通信装置。
【請求項３】
ファイルのバックアップ機能を有する通信装置であって、
バックアップ処理を実行するバックアップ実行手段と、
バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えた時に前記バックアップ処理を一時停止させる一時停止指示手段と、
前記一時停止指示に従って、前記バックアップ実行手段によるバックアップ処理を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する制御手段と、
を有することを特徴とする通信装置。
【請求項４】
前記制御手段が、前記バックアップ処理のメモリ使用量が前記所定値以下に低下すると、前記バックアップ実行手段によるバックアップ処理を再開し、以降、前記バックアップ処理の一時停止、前記メモリ領域の解放および前記再開を順次繰り返す、ことを特徴とする請求項３に記載の通信装置。
【請求項５】
ファイルのバックアップ機能を有する通信装置のバックアップ制御方法であって、
監視手段が、バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視し、
制御手段が、前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する、
ことを特徴とするバックアップ制御方法。
【請求項６】
前記制御手段が、前記バックアップ処理のメモリ使用量が前記所定値以下に低下すると、前記バックアップ処理を再開し、以降、前記バックアップ処理の一時停止、前記メモリ領域の解放および前記再開を順次繰り返す、ことを特徴とする請求項５に記載のバックアップ制御方法。
【請求項７】
コンピュータを、ファイルのバックアップ機能を有する通信装置として機能させるプログラムであって、
バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視する第一機能と、
制御手段が、前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する第二機能と、
を前記コンピュータに実現することを特徴とするプログラム。
【請求項８】
前記第二機能が、前記バックアップ処理のメモリ使用量が前記所定値以下に低下すると、前記バックアップ処理を再開し、以降、前記バックアップ処理の一時停止、前記メモリ領域の解放および前記再開を順次繰り返す、ことを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファイルのバックアップ技術に係り、特に携帯端末等の通信装置におけるバックアップ制御方法に関する。
【背景技術】
【０００２】
ユーザが日常頻繁に使用する携帯端末等の通信装置では、限られたリソース内で信頼性の高いバックアップを行う必要があり、そのための技術がいくつか提案されている（たとえば特許文献１を参照）。
【０００３】
また、並列処理を実行する情報処理装置では、複数のプロセスが同時に実行されている場合のメモリ不足に備えたリソース管理も必要である。たとえば特許文献２に開示されたデータ処理装置では、２つのプロセッサに割り当てられたメモリが閾値を超えた場合、一方のプロセッサがフォールバックを行い、余ったメモリを他方のプロセッサに割り当てるというメモリ管理を行うことでメモリ不足によるプロセスの停止を回避する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１８９９６９号公報
【特許文献２】特開２０１１−１２６２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、実装メモリ量が限定的な通信装置では、呼制御処理などの他のプロセスが同時に実行されている状態でバックアップ処理が実行されると、バックアップのためにメモリが使用されてしまい、メモリ不足が発生する可能性が高くなる。メモリ不足が発生すると、メモリ管理を行っても呼制御処理に影響を及ぼして呼損が発生する可能性があり、通話が切断する場合もある。このような問題は、特に実装メモリ容量が小さい通信端末において、バックアップするファイルのサイズが大きい（バックアップ処理で使用されるメモリ容量が多い）場合、バックアップ実施時にバックアップ処理以外の処理が多くのメモリを使用している場合に顕著となる。
【０００６】
このようなバックアップ処理に起因するメモリ不足の問題に対しては、オペレーティングシステム（ＯＳ）によりバックアップ処理に割り当てられるメモリ量を制限することで解決することもできる。たとえば、Ｌｉｎｕｘ（登録商標、以下同様。）では、バックアップ処理を行うプロセス群に対して、cgroup（CPU時間、メモリ、ネットワーク帯域幅などのリソースをユーザが定義したプロセスグループの間で割り当てる仕組み）のメモリ使用量に上限を設定することで、バックアップ処理を実行しても設定以上のメモリは使用されないようにすることができる。これにより、通信端末において呼制御処理等の他の処理への影響を回避することができる。
【０００７】
しかしながら、このようなＯＳによるメモリ使用量制限では、メモリ使用量が上限値になると、所定のプロセス強制終了機能（たとえば、ＬｉｎｕｘにおけるOOM Killer）を設定している場合にはプロセスが強制終了し、プロセス強制終了機能を設定していない場合にはプロセスが停止することになるため、バックアップの処理が正常終了できないという問題があった。
【０００８】
さらに、メモリ使用量制限によってバックアップ処理を一時停止させるだけでは、バックアップのためのメモリ使用量の増加が停止するというだけであり、その時点で使用されていたメモリ使用量は維持されたままである。これでは、通信端末において、メモリ不足の発生による呼制御処理等への影響を払拭することができない。
【０００９】
そこで、本発明の目的は、バックアップ処理を正常終了させるとともに、他の処理（呼制御処理等）への影響をなくすことができる通信装置およびそのバックアップ制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明による通信装置は、ファイルのバックアップ機能を有する通信装置であって、バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視する監視手段と、前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する制御手段と、を有することを特徴とする。
本発明による通信装置は、ファイルのバックアップ機能を有する通信装置であって、バックアップ処理を実行するバックアップ実行手段と、バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えた時に前記バックアップ処理を一時停止させる一時停止指示手段と、前記一時停止指示に従って、前記バックアップ実行手段によるバックアップ処理を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する制御手段と、を有することを特徴とする。
本発明によるバックアップ制御方法は、ファイルのバックアップ機能を有する通信装置のバックアップ制御方法であって、監視手段が、バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視し、制御手段が、前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する、ことを特徴とする。
本発明によるプログラムは、コンピュータを、ファイルのバックアップ機能を有する通信装置として機能させるプログラムであって、バックアップ処理に使用されるメモリ使用量が、前記バックアップ処理に割り当てられたメモリ上限値よりも小さい所定値を超えたか否かを監視する第一機能と、制御手段が、前記バックアップ処理のメモリ使用量が前記所定値を超えると、前記バックアップ処理の実行を一時停止し、かつ、キャッシュ中の前記バックアップ処理に関連するメモリ領域を解放する第二機能と、を前記コンピュータに実現することを特徴とする。
【発明の効果】
【００１１】
上述したように、本発明によれば、バックアップ処理を正常終了させるとともに、他の処理への影響を排除することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の一実施形態による通信装置の模式的システム構成図である。
【図２】図２は、本実施形態によるバックアップ制御方法のプロセス実行時における主要なプロセスを示す模式図である。
【図３】図３は、本実施形態によるバックアップ制御方法によるバックアップ実行プロセスのメモリ使用量を抑制する仕組みを示す模式図である。
【図４】図４は、図２におけるバックアップメインプロセスを示すフローチャートである。
【図５】図５は、図３におけるｆｒｅｅｚｅ指示プロセスを示すフローチャートである。
【図６】図６は、図３におけるキャッシュ解放指示プロセスを示すフローチャートである。
【図７】図７は、図３におけるバックアップ実行プロセスを示すフローチャートである。
【図８】図８（Ａ）はバックアップ対象ファイル一覧の一例を示す図、図８（Ｂ）はメモリ使用量現在地ファイルの一例を示す図、図８（Ｃ）はｆｒｅｅｚｅ状態ファイルの一例を示す図である。
【図９】図９は、本実施形態によるバックアップ制御方法を適用したときのメモリ使用量の時間変化を示すグラフである。
【発明を実施するための形態】
【００１３】
＜実施形態の概要＞
本発明の実施形態によれば、バックアップ処理のメモリ使用量が所定値を上回ると、バックアップ処理の一時停止に加えて、キャッシュ中のバックアップ処理に関連するメモリ領域を解放する。これにより、メモリ不足の発生を未然に防ぐことができ、呼処理制御等に対するバックアップ処理の影響をなくすことが可能となる。
【００１４】
以下、Ｌｉｎｕｘを一例として、本発明の実施形態について詳細に説明する。ただし、本発明は、Ｌｉｎｕｘに限定されるものではなく、他のＯＳであっても同等の機能を有するものであれば適用可能である。
【００１５】
１．システム構成
図１に例示するように、携帯端末等の通信装置１０のＯＳカーネル１１がハードウエア１２とアプリケーションとを結びつけ、複数のプロセスＰ１、Ｐ２・・・からなるプロセスグループ１３とその他の複数のプロセスＰｘ・・・が動作しているものとする。本実施形態によれば、プロセスグループ１３はバックアップ処理を実行するプロセス群であり、その他のプロセスＰｘ等は呼制御処理等を実行するプロセスあるいはプロセスグループである。ＯＳカーネル１１は、複数のプロセスの実行管理、バックアップ処理や呼制御処理等にそれぞれリソースを割り当てるリソース管理などを実行する。
【００１６】
本実施形態によれば、バックアップ処理を行うプロセスグループ１３には以下の機能が実装される。
１）プロセスグループ１３の一時停止機能（たとえば、Ｌｉｎｕｘにおけるcgroupのfreezerサブシステムで提供される）；
２）プロセスグループ１３の現在のメモリ総使用量確認機能（たとえば、Linuxにおけるcgroupのmemoryサブシステムで提供される）；
３）プロセスグループ１３の現在のメモリ総使用量が基準値ＴＨ１を超えた時にプロセスグループ１３の一時停止を行う機能；
４）プロセスグループ１３の現在のメモリ総使用量が基準値ＴＨ１を下回った時にプロセスグループ１３の一時停止を解除する機能；
５）キャッシュ解放機能（たとえば、Ｌｉｎｕｘにおける関数posix_fadvise()によって提供される機能）；および
６）キャッシュ解放の対象ファイルを特定するために、圧縮処理が行われるファイルの圧縮処理の順序、圧縮処理の完了状況がわかるようにバックアップ対象ファイル一覧を作成／更新する機能。
【００１７】
上記ＯＳカーネル１１および複数のプロセスは、ハードウエア１２におけるメモリに格納されたＯＳプログラムおよびアプリケーションプログラムを実行することにより実現することができる。以下、本実施形態によるバックアップ制御について、図面を参照しながら詳細に説明する。
【００１８】
２．動作
２．１）バックアップ処理の実行
図２に示すように、バックアップ処理が実行されると、バックアップメインプロセス１０１からバックアップ対象ファイル一覧１０２、freeze指示プロセス１０３、キャッシュ解放指示プロセス１０４、およびバックアップ実行プロセス１０５がそれぞれ生成される。なお、バックアップ実行プロセス１０５は、cgroupのmemoryサブシステム(/cgroup/memory/test)およびfreezerサブシステム(/cgroup/freezer/test)に登録しておく。
【００１９】
バックアップメインプロセ１０１は、各プロセスを生成した後、バックアップ実行プロセス１０５の終了を待つ。バックアップ実行プロセス１０５が終了すると、freeze指示プロセス１０３およびキャッシュ解放指示プロセス１０４にプロセス終了通知を出す。
【００２０】
バックアップ対象ファイル一覧１０２は、バックアップ処理が行われるファイルをバックアップ処理順に列挙したリストである。バックアップ対象の指定がファイル単位でなくディレクトリ単位で行われた場合、例えばファイル圧縮コマンド（tarコマンド）であれば、ディレクトリエントリを関数readdir()で取得することにより、そのディレクトリ中のファイル名がバックアップ処理の実施順に取得できる。このようにして、バックアップの処理が行われるファイルを、バックアップ処理順に、バックアップ対象ファイル一覧に記載しておくことが可能である。
【００２１】
２．２）バックアップ制御
図３は、バックアップ実行プロセス１０５が実行中に、キャッシュ解放指示プロセス１０４、freeze指示プロセス１０３と連携して動作することで、バックアップ実行プロセス１０５のメモリ使用量を抑える仕組みを示している。
【００２２】
図３において、バックアップ実行プロセス１０５は、tarなどのファイル圧縮コマンドに、個々のファイル圧縮が終わる度に圧縮済ファイル名を表示するオプション(tarであれば-v)を指定し、個々のファイルの圧縮が終わる度に圧縮済ファイル名を圧縮済ファイル一覧１１０に出力していく（動作Ｓ２０１）。
【００２３】
キャッシュ解放指示プロセス１０４は、圧縮済ファイル一覧１１０に新たに記載されたファイル名を監視し（動作Ｓ２０２）、新たに記載されたファイル名があれば、バックアップ対象ファイル一覧１０２を更新する（動作Ｓ２０３）。また、キャッシュ解放指示プロセス１０４は、バックアップ対象ファイル一覧１０２を元にキャッシュ解放を指定するファイル名を決定し、カーネル１１に対して、関数posix_fadvise()を用いて、指定されたファイルが使用するキャッシュの解放指示を行う（動作Ｓ２０４）。
【００２４】
freeze指示プロセス１０３は、メモリ使用量現在値ファイル１１１を監視し、メモリ使用量現在値が基準値ＴＨ１を超えている場合は、freeze状態ファイル１１２に、freeze(一時停止)実施指示を行う(FROZENと記述する)。メモリ使用量現在値が基準値を下回れば、freeze状態ファイル１１２に、freeze(一時停止)解除指示を行う(THAWEDと記述する)。
【００２５】
カーネル１１は、キャッシュ解放指示プロセス１０４から、関数posix_fadvise()を受けると、指定されたファイルに対応するメモリの使用がキャッシュ１１３に発見されれば、キャッシュ１１３8から当該ファイルの使用するメモリの解放を行う（動作Ｓ２０７）。
【００２６】
また、カーネル１１は、freeze状態ファイル１１２を監視し（動作Ｓ２０８）、freeze指定がされた場合（FROZENが記述された場合）、バックアップ実行プロセス１０５のfreeze(一時停止)を実施し、freeze解除指定がされた場合（THAWEDが記述された場合）、バックアップ実行プロセス１０５のfreeze(一時停止)を解除する（動作Ｓ２０９）。
【００２７】
２．３）各プロセスの動作
図４において、バックアップメインプロセス１０１は、上述したように、バックアップ対象ファイル一覧１０２、freeze指示プロセス１０３、キャッシュ解放指示プロセス１０４およびバックアップ実行プロセス１０５を生成し（動作Ｓ３０１〜Ｓ３０４）、その後、バックアップ処理プロセスが終了するまで所定時間（１秒）待ちを繰り返す（動作Ｓ３０５、Ｓ３０６）。バックアップ処理プロセスが終了すると（動作Ｓ３０６のＹＥＳ）、バックアップメインプロセス１０１は、freeze指示プロセス１０３およびキャッシュ解放指示プロセス１０４に対して、それぞれfreeze指示プロセス終了通知およびキャッシュ解放指示プロセス終了通知を出力し（動作Ｓ３０７）、メインプロセスを終了する。
【００２８】
図５において、freeze指示プロセス１０３は、cgroupで指定されたプロセスグループ１３のメモリ使用量現在値をメモリ使用量現在値ファイル１１１から取得し、基準値ＴＨ１と比較する（動作Ｓ４０１）。この基準値ＴＨ１は、freeze指示を行うか否かを決定するための閾値となる。この基準値ＴＨ１には、cgroupで指定されたプロセスグループ１３が使用するメモリの上限値ＴＨ２よりも低い値が設定される。
【００２９】
メモリ使用量が基準値ＴＨ１以下である場合（動作Ｓ４０１のＮＯ）、freezer状態ファイル１１２の値がFROZENまたはFREEZINGかどうかチェックする（動作Ｓ４０２）。freezer状態ファイル１１２の値がFROZENまたはFREEZINGであれば（動作Ｓ４０２のＹＥＳ）、freeze解除指示を行う（動作Ｓ４０３）。ここで、freeze解除指示とは、freezer状態ファイル１１２に”THAWED”を書き込むことを云う。freezer状態ファイル１１２の値がFROZENでもFREEZINGでもなければ（動作Ｓ４０２のＮＯ）、freeze解除指示（動作Ｓ４０３）は行わない。
【００３０】
メモリ使用量が基準値ＴＨ１より大きい場合（動作Ｓ４０１のＹＥＳ）、freezer状態ファイル１１２の値がTHAWEDかどうかチェックする（動作Ｓ４０４）。freezer状態ファイル１１２の値がTHAWEDであれば（動作Ｓ４０４のＹＥＳ）、freeze指示を実行する（動作Ｓ４０５）。ここで、freeze指示4-5とは、freezer状態ファイルにFROZENを書き込むことである。freezer状態ファイル１１２の値がTHAWEDでなければ（動作Ｓ４０４のＮＯ）、freeze指示（動作Ｓ４０５）は行わない。
【００３１】
その後（動作Ｓ４０２のＮＯ、動作Ｓ４０３、動作Ｓ４０４のＮＯ、動作Ｓ４０５の後）、freeze指示プロセス１０３は、所定時間（１秒）待ちを行い（動作Ｓ４０６）、freeze指示プロセス終了通知を受信したかどうか判別し（動作Ｓ４０７）、受信していない場合には動作Ｓ４０１からの処理を繰り返し（動作Ｓ４０７のＮＯ）、freeze指示プロセス終了通知を受信していていればプロセスを終了する（動作Ｓ４０７のＹＥＳ）。なお、freeze指示プロセスが終了となるのは、バックアップメインプロセス１０１から、freeze指示プロセス終了通知をうけたときである。この通知を受け取るのはバックアップ実行プロセス１０５が終了になった後なので、freeze指示プロセス終了通知をうけた後に、freeze解除の処理は必要ない。
【００３２】
図６において、キャッシュ解放指示プロセス１０４は、圧縮済ファイル一覧１１０を読み込み（動作Ｓ５０１）、その中に新規追加ファイル出力があるか否かを確認する（動作Ｓ５０２）。新規追加ファイル出力があれば（動作Ｓ５０２のＹＥＳ）、新規追加ファイルについて、バックアップ対象ファイル一覧１０２の圧縮済欄に、“compressed”を入れる（動作Ｓ５０３）。これ以降、動作Ｓ５０４〜Ｓ５０６で示すように、キャッシュ解放指示プロセス１０４は、動作Ｓ５０２で新規追加ファイル出力がない場合（動作Ｓ５０２のＮＯ）でも、出力があった場合と同じ処理を実施する。
【００３３】
まず、キャッシュ解放指示プロセス１０４は、バックアップ対象ファイル一覧１０２をみて、以下条件ＡおよびＢのいずれかに該当するファイル全てを対象として、キャッシュ解放指示をカーネル１１に通知する（動作Ｓ５０４）。なお、バックアップ対象ファイル一覧１０２については図８（Ａ）を参照されたい。
条件Ａ：fadvise済欄に”advised”が入っているファイルのうち、一番下のファイル；
条件Ｂ：fadvise済欄に”advised”がなく、かつ、圧縮済欄に”compressed”があるファイル。
【００３４】
キャッシュ解放指示は、関数posix_fadvise()によりカーネル１１に通知されるが、これは、１回の関数実行で１ファイルのみ指定する形式のため、ファイルが複数の時は当該ファイルの数だけ関数を実行する必要がある。
【００３５】
続いて、キャッシュ解放指示プロセス１０４は、バックアップ対象ファイル一覧１０２のfadvise済欄に”advised”がなく、かつ、圧縮済欄に”compressed”があるファイル全てに関して、fadvise済欄に“advised”を入れる（動作Ｓ５０５）。
【００３６】
その後、所定時間（１秒）だけ待機し（動作Ｓ５０６）、キャッシュ解放指示プロセス終了通知を受信したか否かを判別し（動作Ｓ５０７）、受信していなければ（動作Ｓ５０７のＮＯ）、上述した動作Ｓ５０１へ戻り、動作Ｓ５０１〜Ｓ５０６の処理を繰り返す。
キャッシュ解放指示プロセス終了通知を受信していた場合は（動作Ｓ５０７のＹＥＳ）、終了処理として上述いた動作Ｓ５０４およびＳ５０５の処理を実施して終了する（動作Ｓ５０８）。
【００３７】
キャッシュ解放指示プロセスが終了となるのは、バックアップメインプロセス１０１から、キャッシュ解放指示プロセス終了通知をうけたときである。動作Ｓ５０８における終了処理で動作Ｓ５０４およびＳ５０５が実行される理由は、キャッシュ１１３上にバックアップ処理のファイルのメモリが確保されているものを即解放するためである。
【００３８】
図７において、バックアップ実行プロセス１０５は、バックアップ対象ファイル全てについて以下の処理を実行する（動作Ｓ６０１）。すなわち、個々のファイルの圧縮処理の実行（動作Ｓ６０２）と、圧縮済ファイル一覧１１０に圧縮完了した個々のファイルのファイル名の出力（動作Ｓ６０３）である。これは、例えば、tarコマンドで-vオプションを指定した際、全てのファイルの圧縮処理が完了になる前に、個々のファイルの圧縮処理が完了になるごとに圧縮処理が完了になったファイル名がログとして出力されることを示している。
【００３９】
２．４）バックアップ処理の状況を示すファイル
図８（Ａ）に例示するように、バックアップ対象ファイル一覧１０２は、バックアップメインプロセス１０１の起動直後に作成される。起動直後は、圧縮済欄およびfadvise済欄は空欄で、ファイル名が記載された状態である。図６の動作Ｓ５０３で説明したように、圧縮済ファイル一覧１１０に新規に追加されたファイルについて、バックアップ対象ファイル一覧１０２の圧縮済欄に“compressed”が記載される。また、図６の動作Ｓ５０５で説明したように、バックアップ対象ファイル一覧１０２のfadvise済欄に”advised”がなく、かつ、圧縮済欄に”compressed”があるファイル全てについて、fadvise済欄に“advised”が記載される。
【００４０】
図８（Ｂ）に例示するように、メモリ使用量現在値ファイル１１１は、cgroupの  memoryサブシステムで指定されたプロセスグループ（この例では、/cgroup/memory/test）のメモリ使用量現在値が記入されている。
【００４１】
図８（Ｃ）に例示するように、freezer状態ファイル１１２は、cgroupのfreezerサブシステムで指定されたプロセスグループ（この例では、/cgroup/freezer/test）の処理が、以下の状況のいずれかを示す。
・プロセスグループの処理が一時停止中（FROZEN）、
・システムがプロセスグループの一時停止処理を実施している最中(FREEZING)
・プロセスグループの一時停止はされていない(THAWED)
【００４２】
freezer状態ファイル１１２に書きこむことができる値は以下の２つである。
・FROZEN（プロセスグループの処理を一時停止するときに指定）
・THAWED（プロセスグループの処理を再開するときに指定）
【００４３】
３．例
上述した本実施形態により、バックアップ処理で使用するメモリ量が上限値を超えないように制御される。すなわち、メモリ使用量が基準値ＴＨ１を超えると、バックアップ処理が停止するとともに、posix_fadvise()の実行により該当キャッシュが解放されメモリ使用量が減少する。メモリ使用量が基準値ＴＨ１を下回った後は、バックアップ処理が再開される。この動作を繰り返すことで、メモリ使用量がバックアップ処理のプロセスグループが利用可能なメモリ上限値を超えないように抑えることができる。以下、図９を参照しながら、具体的なメモリ使用量の変化について説明する。
【００４４】
図９において、バックアップ処理が開始されると、バックアップ実行プロセス１０５がファイル圧縮コマンド（例えばtarコマンド）を実行し、これによってバックアップ処理のプロセスグループ１３が使用するメモリ量が増加していく（動作Ｓ７０１）。なお、ここでは、バックアップ処理のプロセスグループ１３に登録しているプロセスがバックアップ実行プロセス１０５のみの場合を説明するが、バックアップ処理が複数のプロセスに分けて実装されている場合、単一のプロセスだけでなくプロセスグループ全体のメモリ使用量でメモリ制限を実施する。したがって、以下、プロセスグループ全体のメモリ使用量として記載する。
【００４５】
バックアップ処理のプロセスグループのメモリ使用量が基準値ＴＨ１を超えると、バックアップ実行プロセス１０５の動作を停止するfreeze指示がfreeze指示プロセス１０３から出される（動作Ｓ７０２）。具体的には、図８（Ｃ）に示すように、freezer状態ファイル１１２（/cgroup/freezer/test/freezer.state）にFROZENを書きこむと、カーネル１１がバックアップ実行プロセス１０５の処理を一時停止させる。これにより、バックアップ実行プロセス１０５のメモリ使用量の増加は止まるが、バックアップ実行プロセス１０５が参照しているファイルの内容は、キャッシュメモリに確保されたままになってしまうため、この状態ではメモリ使用量は低下しない。
【００４６】
そこで、キャッシュ解放指示プロセス１０４がキャッシュメモリに確保されたままのファイルの内容をキャッシュ解放指示で解放する。具体的には、posix_fadvise()という関数を呼び出して、ファイル単位でキャッシュを解放していく（動作Ｓ７０３）。キャッシュを解放するファイルは、バックアップ対象ファイル一覧１０２に記載されているファイルのうち、上述した条件ＡおよびＢのどちらかに当てはまるファイルである（図６の動作Ｓ５０４参照）。
【００４７】
posix_fadvise()の実行により、キャッシュメモリに配置されていたバックアップ処理対象ファイルのメモリが解放され、バックアップ処理のプロセスグループのメモリ使用量が低下する（動作Ｓ７０４）。バックアップ処理のプロセスグループのメモリ使用量が基準値ＴＨ１を下回った場合は、バックアップ実行プロセス１０５がファイル圧縮コマンド（例 tarコマンド）を実行する処理が再開される（動作Ｓ７０１）。以降、バックアップ処理が終わるまでこれら処理（動作Ｓ７０１〜Ｓ７０４）を繰り返すことで、バックアップ処理のプロセスグループが利用可能なメモリ上限値ＴＨ２に達することを防ぐことができる。
【００４８】
バックアップ処理のプロセスグループが利用可能なメモリ上限値ＴＨ２は、物理的なメモリ容量からバックアップ処理以外の処理（例えば、呼制御処理）が使うメモリ容量を引いた残りのメモリ容量をどれくらいにするかにより、決定される。
【００４９】
cgroupのmemoryサブシステムにおいて、memory.limit_in_bytes(ユーザーメモリの上限)とmemory.memsw.limit_in_bytes(ユーザーメモリ+スワップの上限)の値を設定する機能はすでに存在するが、すでに述べたように、これらの機能で制限値を設定するだけではメモリの上限値ＴＨ２に達したときにバックアップ実行プロセス１０５が停止したままになることや、OOM Killerによって強制終了されてしまうことがある。本実施形態によるバックアップ制御を実装すれば、memory.limit_in_bytes(ユーザーメモリの上限)とmemory.memsw.limit_in_bytes(ユーザーメモリ+スワップの上限)の値の指定は不要となる。
【００５０】
なお、メモリ使用量の基準値ＴＨ１については、ＣＰＵ性能やバックアップ処理のプロセスグループが利用可能なメモリ上限値によって変えるべきもので、バックアップ処理のプロセスグループが利用可能なメモリ上限値に達しないように複数回シミュレーションを行った後、適正な値を選択すればよい。
【００５１】
４．効果
上述したように、本発明の実施形態によれば、バックアップ処理のプロセスグループのメモリ使用量が上限値ＴＨ２を超えないように制御することが可能になる。これにより呼制御処理などの他の処理とバックアップ処理を同時実行するとき、呼制御処理などの他の処理を行うのに十分なメモリ容量を確保することが可能となる。
【００５２】
なお、上記説明ではプロセスグループにバックアップ実行プロセスだけが入っている場合を説明したが、本実施形態によれば、バックアップ処理機能を複数のプロセスで実装し、その複数のプロセス全体でメモリ使用量を制限する場合であってもプロセスグループでのメモリ使用量制限が可能となる。
【産業上の利用可能性】
【００５３】
本発明は、複数プロセスを同時実行およびバックアップ処理を同時実行可能な情報処理装置に適用可能である。
【符号の説明】
【００５４】
１０  通信装置
１１  ＯＳカーネル
１２  ハードウエア
１３  プロセスグループ
１０１  バックアップメインプロセス
１０２  バックアップ対象ファイル一覧
１０３  freeze指示プロセス
１０４  キャッシュ解放指示プロセス
１０５  バックアップ実行プロセス
１１０  圧縮済ファイル一覧
１１１  メモリ使用量現在値ファイル
１１２  freeze状態ファイル
１１３  キャッシュ
【図１】
0006590403.tif 000002
【図２】
0006590403.tif 000003
【図３】
0006590403.tif 000004
【図４】
0006590403.tif 000005
【図５】
0006590403.tif 000006
【図６】
0006590403.tif 000007
【図７】
0006590403.tif 000008
【図８】
0006590403.tif 000009
【図９】
0006590403.tif 000010