(57)【要約】      （修正有）【課題】通信ログを主記憶等バッファリングしておき、後で当該通信ログをＨＤＤ等に格納し直す場合、格納し直しの為の入出力が他の処理に及ぼす影響を抑制できる通信ログ記録装置を提供する。【解決手段】通信ログ記録装置１０は、ログ採取部１１、ログ保存部１２、ログ記憶部１３、通信カウンタ１４、ログ一時記憶部１５、受信要求記憶部１６、通信処理部２１、及び、通信待ち部２２を備える。ログ採取部は、アプリケーション１７が要求した通信を実行して、受信要求を受け付けると、通信カウンタから順番を取って受信要求の発行順を示すログＩＤの生成と受信の開始を行い、受信の終了時にログＩＤと読み込んだ受信データとを含む通信ログを採取して、ログ記憶手段より高速なログ一時記憶部に一時的に記録する。ログ保存部は、通信待ち時間中に通信ログをログ一時記憶部から読み出して、ログ記憶部に格納し直す。通信ログはログ記憶部に蓄積されていく。【選択図】図１
2019125321.tif 000002
【特許請求の範囲】
【請求項１】
ログ記憶手段と、
前記ログ記憶手段より高速なログ一時記憶手段と、
受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報を前記ログ一時記憶手段に格納するログ採取手段と、
要求された送信または前記受信が開始された後、前記ログ一時記憶手段内に格納されている前記ログ情報をログ記憶手段に格納し直すログ保存手段と、を備える通信ログ記録装置。
【請求項２】
前記ログ採取手段は、同期型の前記受信要求を受け付けると、前記ログIDの生成と前記受信の開始を行い、前記受信の終了待ち合わせ後に、生成した前記ログIDと前記受信データを含む前記ログ情報を前記ログ一時記憶手段に格納する請求項１の通信ログ記録装置。
【請求項３】
実行中である非同期型の前記受信要求を識別する受信要求IDと、前記ログIDを関連付けて格納する受信要求記憶手段をさらに備え、
前記ログ採取手段は、１）前記非同期型の前記受信要求を受け付けると、前記ログIDの生成と前記受信要求IDの取得を行って両者を関連付けて前記受信要求記憶手段に格納する処理と、前記受信を開始する処理とを実行した後、前記受信要求を発行したアプリケーションの実行を再開させ、２）前記受信の終了時に、終了した前記受信の前記受信要求IDに関連付けられて前記受信要求記憶手段に格納されている前記ログIDと、前記受信データを含む前記ログ情報を前記ログ一時記憶手段に格納する請求項１の通信ログ記録装置。
【請求項４】
前記ログ記憶手段、および、前記ログ一時記憶手段は、前記通信ログ記録装置が実行するプロセスごとに設けられ、
前記ログ採取手段は各々の前記プロセスにより起動されて、前記ログ情報を、起動されている前記プロセスに設けられている前記ログ一時記憶手段に格納し、
前記ログ保存手段は各々の前記プロセスにより実行されて、起動されている前記プロセスとは別の前記プロセスに設けられている前記ログ一時記憶手段内に格納されている前記ログ情報を、前記別の前記プロセスに設けられている前記ログ記憶手段に格納し直す、請求項１乃至請求項３の何れか一項の通信ログ記録装置。
【請求項５】
前記ログ情報を所定サイズに分割したどの区画までが、ログ記憶手段に保存されたかを示す保存情報を記憶する保存情報記憶手段を備え、
前記ログ保存手段は、前記保存情報が示す次の前記区画を前記ログ一時記憶手段から前記ログ記憶手段に格納し直し、前記保存情報に当該区画を保存済みとして記録する、請求項１乃至請求項４の何れか一項の通信ログ記録装置。
【請求項６】
受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報をログ記憶手段より高速なログ一時記憶手段に格納し、
要求された送信または前記受信が開始された後、前記ログ一時記憶手段内の前記ログ情報を、ログ記憶手段に格納し直す、通信ログ記録方法。
【請求項７】
同期型の前記受信要求を受け付けると、前記ログIDの生成と前記受信の開始を行い、前記受信の終了待ち合わせ後に、生成した前記ログIDと前記受信データを含む前記ログ情報を前記ログ一時記憶手段に格納する請求項６の通信ログ記録方法。
【請求項８】
１）非同期型の前記受信要求を受け付けると、前記ログIDの生成と実行中である非同期型の前記受信要求を識別する受信要求IDの取得を行って両者を関連付けて受信要求記憶手段に格納する処理と、前記受信を開始する処理とを実行した後、前記受信要求を発行したアプリケーションの実行を再開させ、２）前記受信の終了時に、終了した前記受信の前記受信要求IDに関連付けられて前記受信要求記憶手段に格納されている前記ログIDと、前記受信データを含む前記ログ情報を前記ログ一時記憶手段に格納する請求項６の通信ログ記録方法。
【請求項９】
ログ記憶手段と、前記ログ記憶手段より高速なログ一時記憶手段と、を備えるコンピュータに、
受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報を前記ログ一時記憶手段に格納するログ採取処理と、
要求された送信または前記受信が開始された後、前記ログ一時記憶手段内に格納されている前記ログ情報をログ記憶手段に格納し直すログ保存処理と、を実行させる通信ログ記録プログラム。
【請求項１０】
同期型の前記受信要求を受け付けると、前記ログIDの生成と前記受信の開始を行い、前記受信の終了待ち合わせ後に、生成した前記ログIDと前記受信データを含む前記ログ情報を前記ログ一時記憶手段に格納する前記ログ採取処理を前記コンピュータに実行させる、請求項９の通信ログ記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ログ記録装置、通信ログ記録方法、および、通信ログ記録プログラム、特に、アプリケーションが発行した受信要求の順序と受信データを含む通信ログを効率的に記録する装置等に関する。
【背景技術】
【０００２】
アプリケーションが発行した受信要求の順序と受信データを含む通信ログは、有用なデータであり、例えば、データ記録型再演法での利用に適している。
【０００３】
プログラムのデバッグは問題の状態を再現する必要がある。プロセス間で通信して処理を進めるプログラム、例えばメッセージパッシング型・分散並列プログラムは、プロセス間で通信して処理を進めるため、状態の再現に通信結果が必要となる。この問題の解決法の一つに、データ記録型再演法がある（非特許文献１）。これは、デバッグ対象プロセスが行った通信結果を記録し、デバッグ実行(再演)時は、通信の代わりに以前に記録した通信結果を参照する。これにより、実際の通信が不要となり、デバッグ対象プロセスのみの実行でデバッグが可能となる。
【０００４】
特許文献１は、並列プログラムの実行再現方法を開示する。この方法は、モニタモードで実行中の並列プログラムが主記憶上の共有データにアクセスした記録を、主記憶上におかれたシステム履歴テープに書き込む。この方法は、再演モードにおいて、システム履歴テープに書き込まれている記録を用いて、並列プログラムの実行を再現する。
【０００５】
特許文献２は、連続性があるとみなされた通信ログを一次保存領域にバッファリングしておき、バッファリング期間が満了すると、一次保存領域に保存されていた通信ログを二次保存領域に保存する情報処理装置を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０３-２４０１３７号公報
【特許文献２】特開２０１１-０６００３０号公報
【非特許文献】
【０００７】
【非特許文献１】データ再演法による並列プログラムデバッギング  情報処理学会論文誌：コンピューティングシステム, Vol. 46, No. SIG 12 (ACS11),214-224ページ, 2005年８月.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データ受信を伴うプログラムのデータ記録型再演法に用いられるような通信ログは、受信データを含むため、データ量が多いという特徴がある。このような多くの通信ログを、特許文献１が開示するように主記憶上に置いておくことは出来ない。揮発性が問題となる場合もある。
【０００９】
一方、特許文献２が開示するように、通信ログを主記憶等の一次保存領域にバッファリングしておき、後で、当該通信ログをハードディスク等の二次保存領域に格納し直す場合は、この為の入出力が他の処理に悪影響を及ぼす可能性がある。すなわち他の処理が通信ログの入出力終了を待ち合わせる場合、この入出力は、当該他の処理の実行を遅延させる。非同期型入出力等により通信ログの入出力と当該他の処理を例列して実行した場合でも、この入出力は当該他の処理環境に以下のような悪影響を与える。
【００１０】
問題(a) 再演されるプログラムが非同期型入出力を使用しない場合でも、DMA（Direct Memory Access）エンジンなどの特別なハードウェアが必要となる。
【００１１】
問題(b) 非同期型入出力処理のプロセス・スレッドの為の仕組みと資源が必要となる。
【００１２】
問題(c) 非同期型入出力処理のため、プログラムで利用できるCPU（Central Processing Unit）コアが減少する。
問題(d) 非同期型入出力処理のプロセス・スレッドとプログラムがCPUコアを共用する場合、コンテキストスイッチのオーバヘッドがかかる。また、計算中のプログラムと非同期型入出力処理が切り替わる場合、計算のCPUコア使用率が低下する
本発明は、通信ログを主記憶等にバッファリングしておき、後で当該通信ログをハードディスク等に格納し直す場合に、格納し直し時の入出力が他の処理に及ぼす影響を抑制できる通信ログ記録装置等を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一つの実施の形態の通信ログ記録装置は、ログ記憶手段と、前記ログ記憶手段より高速なログ一時記憶手段と、受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報を前記ログ一時記憶手段に格納するログ採取手段と、要求された送信または前記受信が開始された後、前記ログ一時記憶手段内に格納されている前記ログ情報をログ記憶手段に格納し直すログ保存手段と、を備える。
【００１４】
本発明の一つの実施の形態の通信ログ記録方法は、受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報をログ記憶手段より高速なログ一時記憶手段に格納し、要求された送信または前記受信が開始された後、前記ログ一時記憶手段内に格納されている前記ログ情報をログ記憶手段に格納し直す。
【００１５】
本発明の一つの実施の形態の通信ログ記録プログラムは、ログ記憶手段と、前記ログ記憶手段より高速なログ一時記憶手段と、を備えるコンピュータに、受信要求を受け付けると、前記受信要求の発行順を示すログIDの生成と受信の開始を行い、前記受信の終了時に前記ログIDと読み込んだ受信データとを含むログ情報を前記ログ一時記憶手段に格納するログ採取処理と、要求された送信または前記受信が開始された後、前記ログ一時記憶手段内に格納されている前記ログ情報をログ記憶手段に格納し直すログ保存処理と、を実行させる。
【発明の効果】
【００１６】
本発明にかかる通信ログ記録装置等は、通信ログを主記憶等にバッファリングしておき、後で当該通信ログをハードディスク等に格納し直す場合に、格納し直しの為の入出力が、他の処理に及ぼす影響を抑制できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、第一の実施の形態にかかる通信ログ記録装置１０の構成を示す図である。
【図２】図２は、ログ一時記憶部１５、および、ログ記憶部１３に格納される通信ログのデータ構造を示す図である。
【図３】図３は、受信要求記憶部１６に格納されるテーブルのデータ構造を示す図である。
【図４】図４は、コンピュータ装置６０の構成を示す図である。
【図５】図５は、通信を要求されたときのログ採取部１１の動作を表したフローチャートである。
【図６】図６は、非ブロッキング型通信の終了待ち合わせ要求を受けたときのログ採取部１１の動作を表したフローチャートである。
【図７】図７は、ログ保存部１２の動作を表したフローチャートである。
【図８】図８は、タイムラインで通信終了直後に当該通信の通信ログを保存した場合（Ａ）と、通信ログ記録装置１０の場合（Ｂ）との実行時間の差を表す図である。
【図９】図９は、第二の実施の形態におけるログ一時記憶部１５の構成を示す図である。
【図１０】図１０は、第二の実施の形態のログ保存部１２の動作を表したフローチャートである。
【図１１】図１１は、タイムラインで、本実施の形態にかかる通信ログ記録装置１０の効果を表す図である。
【図１２】図１２は、第三の実施の形態にかかる通信ログ記録装置１０の構成を示す図である。
【図１３】図１３は、第四の実施の形態にかかる通信ログ記録装置１０の構成を示す図である。
【発明を実施するための形態】
【００１８】
＜第一の実施の形態＞
＜概要＞
本実施の形態にかかる通信ログ記録装置１０は、通信ログの記録をログの採取とログの保存の２つのフェーズに分ける。通信ログ記録装置１０は、ログの採取フェーズでは、通信ログを採取して、高速な記録媒体、例えば半導体メモリ等のログ一時記憶部１５に一時的に記録する。後続するログ保存フェーズにおいて、通信ログ記録装置１０は、通信待ち時間中に通信ログを、ログ一時記憶部１５からＨＤＤ（Hard Disk Drive）等のログ記憶部１３に移動させる。
【００１９】
＜構成＞
図１は、本実施の形態にかかる通信ログ記録装置１０の構成を示す図である。通信ログ記録装置１０は、ログ採取部１１、ログ保存部１２、ログ記憶部１３、通信カウンタ１４、ログ一時記憶部１５、受信要求記憶部１６、通信処理部２１、及び、通信待ち部２２を備える。さらに、通信ログ記録装置１０は、通信を要求する主体であるアプリケーション１７を備えている。この主体は、プログラムであっても良いし、画像処理プロセッサのようなハードウェアであっても良い。
【００２０】
ログ採取部１１は上述したログの採取フェーズを実行する。すなわち、ログ採取部１１は、アプリケーション１７が要求した通信を実行して、通信ログを採取してログ一時記憶部１５に一時的に記録する。ログ保存部１２は上述したログの採取フェーズを実行する。すなわち、ログ保存部１２は、通信待ち時間中に通信ログをログ一時記憶部１５から読み出しで、ログ記憶部１３に格納し直す。通信ログはログ記憶部１３に蓄積されていく。
【００２１】
通信カウンタ１４は、アプリケーション１７が要求した通信の順番を記録するカウンタである。初期値は１である。ログ採取部１１は、アプリケーション１７から通信の要求を受け付けると、ここから順番を取ってログID（Identification）を生成し、通信カウンタ１４の値を１つ増加させる。
【００２２】
通信処理部２１は通信を開始し、通信待ち部２２は通信の終了を待ち合わせる。ここでいう通信は、例えばプロセス間通信であるが、ディスク装置への入出力や、通信網を経由した遠隔装置と通信であっても良い。受信要求記憶部１６は、非ブロッキング型、すなわち非同期型の通信を実行した時に、終了した通信のログIDを得る為のテーブルを記憶する。
【００２３】
図２は、ログ一時記憶部１５、および、ログ記憶部１３に格納される通信ログのデータ構造を示す図である。通信ログは、アプリケーション１７が、通信を要求する都度取得されて、図２におけるテーブルの１行に格納される。通信ログは、ログID，通信手続、実行結果、受信データ、及び、終了フラグの各データ項目を包含する。
【００２４】
ログIDは、アプリケーション１７が要求した通信の順番を表す。ログIDは、他の情報、例えば、アプリケーション１７の識別子やプロセスの識別子を含んでいても良い。受信データは、当該要求で受信したデータの内容を表す。ログIDは、例えば、アプリケーション１７の再演時に、通信要求に対して正しい受信データを出力する為に使うことが出来る。すなわち、再演を実行するシステムは、ｎ（ｎは整数）番目に発行された通信要求が受信要求である場合、ｎ番目を示すログIDを持つ通信ログの受信データを、アプリケーション１７に出力すれば良い。
【００２５】
通信手続は当該要求の種別を示す。通信手続は、受信／送信の区別、同期型通信／非同期型通信の区別を示す。なお、同期型入出力／非同期型入出力は、ブロッキング／非ブロッキングと称されるときもある。実行結果は、通信が正常に終了したか否かを示す。
【００２６】
終了フラグはログ一時記憶部１５内の通信ログだけが有し、通信要求の受信／送信が終了したか否かを示す。なお、終了フラグは初期値が０で通信実行中を示し、通信が終了すると１になる。ログ保存部１２は、受信／送信が終了している通信要求の通信ログを、ログ一時記憶部１５からログ記憶部１３に格納し直す。ログ保存部１２は、通信ログをログ一時記憶部１５からログ記憶部１３に格納し直すとき、終了フラグを取り除く。
【００２７】
なお、再演時等に不要であれば、通信ログは、通信手続、または実行結果を包含しなくても良い。例えば、通信結果は常に正常であるとして、再演が実施される場合である。また、再演時に送信結果を気にしない、例えば、常に正常終了として再演するのであれば、通信ログは受信についてだけ取得しても良い。
【００２８】
図３は、受信要求記憶部１６に格納されるテーブルのデータ構造を示す図である。このテーブルは、実行中の非ブロッキング型の通信要求について、受信要求IDとログIDの関連付けを記憶する。受信要求IDは、アプリケーション１７が発した通信要求の識別子である。受信要求IDは、実行中の非ブロッキング型の通信を識別できる情報であれば何でもよい。受信要求IDは、例えば実行中の非ブロッキング型通信を管理する為の制御情報格変数のアドレスや配列要素の添え字変数値である。
【００２９】
ここで、通信ログ記録装置１０のログ採取部１１、ログ保存部１２、通信処理部２１、及び、通信待ち部２２は、論理回路、または、専用プロセッサとファームウェアで構成される。ログ記憶部１３は、ＨＤＤ、または、ＳＤＤ(Solid State Drive)等の記憶装置である。通信カウンタ１４、ログ一時記憶部１５、および、受信要求記憶部１６は、半導体記憶装置である。
【００３０】
通信ログ記録装置１０は、コンピュータ装置６０で構成されても良い。図４は、コンピュータ装置６０の構成を示す図である。コンピュータ装置６０は、バス６４で相互に接続された、プロセッサ６１、主記憶装置６３、及び、外部記憶装置６２を備える。
【００３１】
プロセッサ６１は、バス６４を経由して、主記憶装置６３、及び、外部記憶装置６２に対してデータの読み書きを行う。また、プロセッサ６１は、主記憶装置６３に格納されている通信ログ記録プログラム６５を実行する。なお、通信ログ記録プログラム６５は、当初は外部記憶装置６２に格納されており、コンピュータ装置６０の初期設定時にプロセッサ６１が外部記憶装置６２から主記憶装置６３にロードしても良い。
【００３２】
ここで、主記憶装置６３は半導体記憶装置である。外部記憶装置６２は、ＨＤＤ、または、ＳＤＤ等の記憶装置である。
【００３３】
コンピュータ装置６０のプロセッサ６１は、通信ログ記録プログラム６５を実行することにより、ログ採取部１１、ログ保存部１２、通信処理部２１、及び、通信待ち部２２として機能する。すなわち、プロセッサ６１は、通信ログ記録プログラム６５を実行することにより、ログ採取部１１、ログ保存部１２、通信処理部２１、及び、通信待ち部２２が行う処理を実行する。
【００３４】
主記憶装置６３は、通信カウンタ１４、ログ一時記憶部１５、および、受信要求記憶部１６として使用される。外部記憶装置６２は、ログ記憶部１３として使用される。
【００３５】
＜動作＞
図５は、通信を要求されたときのログ採取部１１の動作を表したフローチャートである。
【００３６】
ログ採取部１１は、アプリケーション１７が通信を要求したときに起動される。起動されるとログ採取部１１は、通信処理部２１に依頼して通信を開始させる（S11）。その後、ログ採取部１１は通信カウンタ１４を参照してログIDを生成し（S12）、ログ一時記憶部１５の空いている行にログID、通信手続、実行結果、及び、終了フラグを格納する（S13）。ここで、実行結果は、例えば通信処理部２１から報告された値が設定される。終了フラグには、０が設定される。
【００３７】
その後、ログ採取部１１はログ保存部１２に依頼して、ログ一時記憶部１５に終了フラグが１で未保存の通信ログが有れば、その通信ログをログ記憶部１３に格納し直す（S14）。ここで格納し直されるのは、過去に実行した通信についての通信ログである。図７は、この動作フローチャートであり、後述する。
【００３８】
開始した通信がブロッキング型通信の場合（S15でYES）、ログ採取部１１は通信の終了を通信待ち部２２で待ち合わせ、S14で格納した通信ログの終了フラグを１にして、通信待ち部２２から得られた実行結果をログ一時記憶部１５に格納する（S17）。受信の場合、ログ採取部１１は、通信待ち部２２から得られた受信データもログ一時記憶部１５に格納する。その後、ログ採取部１１は処理を了する。
【００３９】
開始した通信が非ブロッキング型通信の場合（S15でNO、S16でYES）、ログ採取部１１は受信要求記憶部１６の空いている行に受信要求IDとログIDを格納する（S18）。その後、ログ採取部１１は処理を了する。
【００４０】
開始した通信がその他、例えば送信で場合（S15でNO、S16でNO）、ログ採取部１１は処理を了する。
【００４１】
図６は、非ブロッキング型通信の終了待ち合わせ要求を受けたときのログ採取部１１の動作を表したフローチャートである。
【００４２】
アプリケーション１７が非ブロッキング型通信の終了待ち合わせ要求を要求したときに起動されて、ログ採取部１１は、入力された受信要求IDで指定された通信の終了を通信待ち部２２で待ち合わせる（S21）。指定された通信が終了すると、ログ採取部１１は受信要求記憶部１６を検索して、受信要求IDが指定された受信要求IDと一致する行からログIDを取得する（S22）。
【００４３】
次いで、ログ採取部１１はログ一時記憶部１５を検索して、ログIDが前ステップで取得したログIDと一致する通信ログにアクセスして、終了フラグを１にセットし、通信待ち部２２から得られた実行結果を格納する（S23）。受信の場合、ログ採取部１１は、通信待ち部２２から得られた受信データも当該通信ログに格納する。その後、ログ採取部１１は、受信要求記憶部１６からS22でアクセスした行のデータを削除して（S24）、処理を終了する。
【００４４】
なお、ログ採取部１１は非ブロッキング型通信の終了同期をとるインターフェースとして、終了待ち合わせ要求以外に終了確認要求をアプリケーション１７に提供しても良い。終了確認を要求された場合、ログ採取部１１はS21の代わりに、通信の終了をチェックして終了していればS22以降のステップを実行し、終了していなければその旨をアプリケーション１７に報告すれば良い。
【００４５】
図７は、ログ保存部１２の動作を表したフローチャートである。このフローチャートは、図５におけるS14の処理を詳しく説明したものである。
【００４６】
ログ採取部１１から起動されたログ保存部１２は、実行中の通信が有り、かつ、終了フラグが１の通信ログがログ一時記憶部１５に有る場合（S31でYES）、ログ一時記憶部１５から終了フラグが１の通信ログを読み出してログ記憶部１３に保存する（S32、S33）。すなわち、ログ保存部１２は、終了フラグが１の通信ログを、ログ一時記憶部１５からログ記憶部１３に格納し直す。その後、ログ保存部１２は、ログ記憶部１３に保存し終えた通信ログをログ一時記憶部１５から削除して（S34）、S31に戻る。
【００４７】
ログ保存部１２は、実行中の通信が無い、または、終了フラグが１の通信ログがログ一時記憶部１５に無い場合（S31でNO）、処理を終了してログ採取部１１を再開する。
【００４８】
＜効果＞
本実施の形態にかかる通信ログ記録装置１０は、通信ログを主記憶等のログ一時記憶部１５にバッファリングしておき、後で当該通信ログをＨＤＤ等のログ記憶部１３に格納し直す場合、格納し直しの為の入出力が他の処理に及ぼす影響を抑制できる。その理由は、ログ保存部１２が通信の実行中に、ログ一時記憶部１５に記憶されている通信ログをログ記憶部１３に格納し直すからである。
【００４９】
通信待ち時間を、通信ログのログ一時記憶部１５からログ記憶部１３への格納し直しに利用することで、通信ログ記録装置１０は、非同期型入出力を用いることなく、また、計算に使用するCPU資源を減らすことなく、通信ログの移動に伴う実行時間の増大を低減できる。
【００５０】
図８は、タイムラインで通信終了直後に当該通信の通信ログを保存した場合（図中のＡ）と、本実施の形態にかかる通信ログ記録装置１０の場合（図中のＢ）との実行時間の差を表している。本実施の形態にかかる通信ログ記録装置１０は、例えば、通信ａの通信ログの格納し直しを通信ａの終了後に行うのではなく、次の通信ｂの実行中に並行して行うようにタイミングを変更している（図中の矢印）。これにより、通信ログ記録装置１０は、通信ａの通信ログの格納し直しを同期型の入出力で行った場合に発生するアプリケーション１７の計算の遅延を防ぐ。また、通信ログ記録装置１０は、通信ａの通信ログの格納し直しを非同期型の入出力で行った場合に当該入出力が与える、アプリケーション１７の計算への影響（コンテキスト変更のオーバヘッド等）を防ぐことが出来る。
【００５１】
＜第二の実施形態＞
＜構成と動作＞
本実施の形態の通信ログ記録装置１０は、汎用ＯＳ（Operating System）を備え、複数のプロセスを並行して実行する。ログ採取部１１、ログ保存部１２、アプリケーション１７、通信処理部２１、および、通信待ち部２２はプロセスにより起動される。本実施の形態の通信ログ記録装置１０は、ログ記憶部１３、通信カウンタ１４、ログ一時記憶部１５、及び、受信要求記憶部１６をプロセスごとに備えている。但し、ログ記憶部１３、及び、ログ一時記憶部１５は、別のプロセスからもアクセス可能となっている。
【００５２】
図９は、本実施の形態におけるログ一時記憶部１５の構成を示す図である。各プロセスのログ一時記憶部１５は、通信ログ記録装置１０のプロセス間共用メモリ上に配置されている。プロセスごとのログ一時記憶部１５は、第一の実施形態のものと同じである。
【００５３】
ログ採取部１１は、プロセスごとに、起動されたプロセス（自プロセスともいう）の通信を反映した通信ログを、自プロセスに設けられたログ一時記憶部１５に格納していく。ログ保存部１２は、自プロセスに設けられたログ一時記憶部１５の通信ログを、自プロセスに設けられたログ記憶部１３に格納し直していく。但し、自プロセスに設けられたログ一時記憶部１５に終了フラグが１の通信ログが存在しないと、自プロセス以外のプロセス（他プロセスともいう）に設けられたログ一時記憶部１５の通信ログを、他プロセスに設けられたログ記憶部１３に格納し直していく。
【００５４】
図１０は、本実施の形態のログ保存部１２の動作を表したフローチャートである。プロセスに起動されているログ採取部１１から起動されるとログ保存部１２は、先ず次プロセスが開始して、実行中、すなわちまだ終了していない通信が有るかをチェックし、無ければ（S41でNO）処理を終了する。
【００５５】
実行中の通信が有れば（S41でYES）、ログ保存部１２は、終了フラグが１の通信ログが自プロセスのログ一時記憶部１５に有るかをチェックする。有れば（S42でYES）、ログ保存部１２は自プロセスに設けられたログ一時記憶部１５の通信ログを、自プロセスに設けられたログ記憶部１３に格納し直して、当該通信ログをログ一時記憶部１５から削除し（S43乃至S45）、S41に戻る。
【００５６】
無ければ（S42でNO）、ログ保存部１２は、終了フラグが１の通信ログが他プロセスのログ一時記憶部１５に有るかをチェックする。有れば（S46でYES）、ログ保存部１２は当該他プロセスに設けられたログ一時記憶部１５の通信ログを、当該他プロセスに設けられたログ記憶部１３に格納し直して、当該通信ログをログ一時記憶部１５から削除し（S47乃至S49）、S41に戻る。
【００５７】
＜効果＞
本実施の形態の通信ログ記録装置１０は、或るプロセスの通信待ち時間を、別のプロセスの通信ログのログ一時記憶部１５からログ記憶部１３への格納し直しに利用することで、前述した効果を奏することが出来る。その理由は、ログ保存部１２が他プロセスに設けられたログ一時記憶部１５の通信ログを、他プロセスに設けられたログ記憶部１３に格納し直していくからである。
【００５８】
図１１は、タイムラインで、本実施の形態にかかる通信ログ記録装置１０の効果を表している。図中、プロセスＡが実行した通信ａの通信ログがログ一時記憶部１５に取得され、後続する通信ｂで通信待ちが発生しないとする。この場合、第一の実施の形態の通信ログ記録装置１０において、通信ａの通信ログは、プロセスＡのログ一時記憶部１５に長時間放置されることになる。最悪の場合、プロセスＡの終了処理でログ記憶部１３に格納し直しが発生し、終了処理が遅延する。
【００５９】
本実施の形態の通信ログ記録装置１０においては、プロセスＡの通信ａの通信ログは、他のプロセスＢの通信ｄの通信待ち時間を利用して、プロセスＡのログ一時記憶部１５からログ記憶部１３に格納し直される。これにより、上述の処理遅延が防止できる。
【００６０】
＜第三の実施形態＞
受信データが非常に大きい場合、通信ログをログ一時記憶部１５からログ記憶部１３へ格納し直す時間が通信の実行時間よりも長くなる場合がある。この場合、超過時間分だけ、アプリケーション１７の処理が遅延することになる。これを防止する為、本実施の形態の通信ログ記録装置１０は、通信ログの格納し直しを通信ログ単位でなく、複数の区画に分割して実施する。
【００６１】
図１２は、本実施の形態にかかる通信ログ記録装置１０の構成を示す図である。本実施の形態にかかる通信ログ記録装置１０は、第一の実施の形態の通信ログ記録装置１０の構成に加え、保存情報記憶部１８を備える。保存情報記憶部１８は、所定サイズに分割したどの区画までが、ログ一時記憶部１５からログ記憶部１３に格納し直されたか、すなわち保存済みにされたかを示す保存情報を記憶する。
【００６２】
通信ログのサイズが所定バイト数以上であることを検出すると、ログ保存部１２は、通信ログを所定サイズの区画に分割し、通信の実行終了待ちが発生するたびに先頭から順次、１区画ずつをログ一時記憶部１５からログ記憶部１３へ格納し直していく。その過程でログ保存部１２は、通信ログのどの区画までを格納し直したか、すなわち保存済みにしたかを保存情報記憶部１８に記録しておく。ログ保存部１２は通信の実行終了待ちが発生するたびに、保存情報記憶部１８が示す次の区画をログ一時記憶部１５からログ記憶部１３へ格納し直す。ログ保存部１２はこの動作を全区画の格納し直しが終了する迄繰り返し、終了した後ログ一時記憶部１５から当該通信ログを削除する。
【００６３】
＜第四の実施形態＞
図１３は、本実施の形態にかかる通信ログ記録装置１０の構成を示す図である。本実施の形態にかかる通信ログ記録装置１０は、ログ記憶部１３と、ログ記憶部１３より高速なログ一時記憶部１５と、ログ採取部１１と、ログ保存部１２と、を備える。
【００６４】
ログ採取部１１は、受信要求を受け付けると、受信要求の発行順を示すログIDの生成と受信の開始を行い、受信の終了時にログIDと読み込んだ受信データとを含むログ情報をログ一時記憶部１５に格納する。ログ保存部１２は、要求された送信または受信が開始された後、ログ一時記憶部１５内に格納されているログ情報をログ記憶部１３に格納し直す。
【００６５】
本実施の形態にかかる通信ログ記録装置１０は、通信ログを主記憶等のログ一時記憶部１５にバッファリングしておき、後で当該通信ログをＨＤＤ等のログ記憶部１３に格納し直す場合、格納し直しの為の入出力が他の処理に及ぼす影響を抑制できる。その理由は、ログ保存部１２が通信の実行中に、ログ一時記憶部１５に記憶されている通信ログをログ記憶部１３に格納し直すからである。
【００６６】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６７】
１０    通信ログ記録装置
１１    ログ採取部
１２    ログ保存部
１３    ログ記憶部
１４    通信カウンタ
１５    ログ一時記憶部
１６    受信要求記憶部
１７    アプリケーション
１８    保存情報記憶部
２１    通信処理部
２２    通信待ち部
６０    コンピュータ装置
６１    プロセッサ
６２    外部記憶装置
６３    主記憶装置
６４    バス
６５    通信ログ記録プログラム
【図１】
2019125321.tif 000003
【図２】
2019125321.tif 000004
【図３】
2019125321.tif 000005
【図４】
2019125321.tif 000006
【図５】
2019125321.tif 000007
【図６】
2019125321.tif 000008
【図７】
2019125321.tif 000009
【図８】
2019125321.tif 000010
【図９】
2019125321.tif 000011
【図１０】
2019125321.tif 000012
【図１１】
2019125321.tif 000013
【図１２】
2019125321.tif 000014
【図１３】
2019125321.tif 000015