(57)【特許請求の範囲】
【請求項１】
複数のスレッドが複数のデータを並行して処理するデータ処理装置であって、
前記各スレッドにおいて、前記各データを受信するデータ受信部と、
前記データを書き込むためのバッファと、
前記各スレッドにおいて、前記バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込部と、
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得する入出力負荷率取得部と、
前記バッファにおけるバッファ使用率および前記入出力負荷率を格納する装置状態格納部と、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定部と、
前記各スレッドにおいて、前記ファイル出力判定部によってファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力部と、
を備えたデータ処理装置。
【請求項２】
前記ファイル出力判定部は、前記バッファ使用率および前記入出力負荷率に基づく複数の判定条件を用いて、前記ファイル出力を行うか否かを判定することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置のパフォーマンス情報を取得するパフォーマンス情報取得部と、
前記パフォーマンス情報および前記入出力負荷率が所定の目標条件を満たさない場合、前記判定条件を所定のルールに従って変更する判定条件変更部と、
をさらに備えることを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
複数のスレッドが複数のデータを並行して処理するデータ処理装置を用いて、
前記各スレッドにおいて、前記各データを受信し、
前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込み、
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得し、
前記バッファにおけるバッファ使用率および前記入出力負荷率を装置状態格納部に格納し、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定し、
前記各スレッドにおいて、前記ファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力する、データ処理方法。
【請求項５】
複数のスレッドが複数のデータを並行して処理するデータ処理装置に、
前記各スレッドにおいて、前記各データを受信するデータ受信ステップと、
前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込ステップと、
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得する入出力負荷率取得ステップと、
前記バッファにおけるバッファ使用率および前記入出力負荷率を装置状態格納部に格納する装置状態格納ステップと、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定ステップと、
前記各スレッドにおいて、前記ファイル出力判定ステップでファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力ステップと、
を実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドで処理するデータを一括してファイル出力するデータ処理装置に関する。
【背景技術】
【０００２】
一般に、複数のスレッドで処理するデータを一括してファイル出力するデータ処理装置が知られている。このようなデータ処理装置は、短時間で大量に発生するデータを効率よく処理することができる。具体的には、このようなデータ処理装置は、１回のトランザクションにおいて、複数のスレッドが、それぞれ入力データを受信し、受信した入力データを1つのバッファに出力し、バッファを1つのファイルとして出力する。すなわち、このようなデータ処理装置は、複数のデータの一括入力処理および一括コミット処理を実現している。
【０００３】
このようなデータ処理装置は、複数のスレッドが1つのバッファにデータを出力する際に、ブロックという単位でバッファの一部を各スレッドに割り当てる。各スレッドは、１つのブロックを占有してデータを書き込む。
【０００４】
したがって、このようなデータ処理装置では、各スレッドがバッファ内で割り当てられたブロックに出力することにより、バッファへの書き込みの際にスレッド間の排他制御を行う必要がない。
【０００５】
このようなデータ処理装置は、このように排他制御を行わないことにより、処理の高速化を実現してきた。
【０００６】
さらに、このようなデータ処理装置は、全ブロックにデータが保存されたバッファを、コミット前に先行してファイル出力することにより、コミット時における入出力の負荷を低減してきた。
【０００７】
しかしながら、このようなデータ処理装置は、１つのバッファ内のブロック全てが一杯になった時、あるいは、全スレッドがバッファへのデータ出力を完了したことを宣言した時（すなわち、コミット時）に、ファイル出力を行っていた。このため、スレッド毎のデータ出力量に偏りがあった場合、出力量の少ないブロックが埋まらず、バッファ内の全ブロックが一杯にならない。したがって、このようなデータ処理装置では、スレッド毎のデータ出力量に偏りがある場合、バッファ内のデータをコミット時までファイル出力することが出来ず、コミット時にファイル出力が集中してしまうという問題があった。
【０００８】
このような問題を解決するものとして、バッファ内の１つのブロックが一杯になったらそのバッファをファイル出力するデータ出力装置がある（例えば、特許文献１参照）。これにより、特許文献１に記載されたデータ処理装置は、コミット時のファイル出力の集中を解消している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−０６７０４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載されたデータ処理装置は、スレッド毎のデータ出力量に偏りがあった場合、出力量の少ないブロックにデータがあまり書き込まれない状態でそのバッファをファイル出力してしまう。また、出力量の多いスレッドのブロックはすぐに埋まるため、特許文献１に記載されたデータ処理装置は、データがあまり書き込まれていないブロックを含むバッファを頻繁にファイル出力することになる。
【００１１】
特許文献１に記載されたデータ処理装置におけるファイル出力の課題について、図１５を参照して説明する。なお、図１５において、バッファＡおよびバッファＢはそれぞれブロック１〜３を含む。また、各ブロックを示す矩形内において、斜線パターンの矩形はブロック内で既にデータが書きこまれている領域を示し、格子パターンの矩形は新たにデータが書き込まれた領域を示し、白地の矩形はブロック内の空き領域を示している。
【００１２】
図１５（ａ）は、特許文献１に記載されたデータ処理装置によって生成されたスレッドが各ブロックを占有して書き込みを行っている状態を示す図である。図１５（ａ）において、スレッド１がブロック２に書き込みを行い、スレッド２がブロック３に書き込みを行い、スレッド３がブロック１に書き込みを行っている。
【００１３】
図１５（ｂ）は、図１５（ａ）の状態から、スレッド２がさらにブロック３に書き込みを行うことにより、ブロック３に書き込み領域がなくなった状態を示す図である。
【００１４】
このとき、特許文献１に記載されたデータ処理装置は、ブロック３に書き込み領域がなくなったので、ブロック１およびブロック２が十分に書き込まれていない状態で、バッファＡをファイル出力することになる。
【００１５】
図１５（ｃ）は、スレッド２がバッファＡのファイル出力を行っているため、スレッド１およびスレッド３が新たにバッファＢにブロックを確保してデータ書き込みを行っている状態を示す図である。図１５（ｃ）に示すように、特許文献１に記載されたデータ処理装置では、まだ書き込み領域が充分に残っていたバッファＡ内のブロックを使用していたスレッド１およびスレッド３も、新たなバッファＢにブロックを確保してデータ書き込みを行うことになる。
【００１６】
このように、特許文献１に記載されたデータ処理装置は、データが十分に書き込まれていないブロックを含むバッファをファイル出力することにより、ファイル出力回数を増大させてしまう。ファイル出力回数の増大は、処理を遅延させるとともに、出力先の記憶装置における入出力負荷を増大させる。
【００１７】
したがって、特許文献１に記載されたデータ処理装置は、コミット時のファイル出力の集中を解消するものの、ファイル出力回数の増大を招くという課題があった。
【００１８】
本発明は、上述の課題を解決するためになされたもので、複数のスレッドで処理するデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながらも、ファイル出力回数の増大を抑制するデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明のデータ処理装置は、複数のスレッドが複数のデータを並行して処理するデータ処理装置であって、前記各スレッドにおいて、前記各データを受信するデータ受信部と、前記データを書き込むためのバッファと、前記各スレッドにおいて、前記バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込部と、前記バッファにおけるバッファ使用率を格納する装置状態格納部と、前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定部と、前記各スレッドにおいて、前記ファイル出力判定部によってファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力部と、を備える。
【００２０】
また、本発明のデータ処理方法は、複数のスレッドが複数のデータを並行して処理するデータ処理装置を用いて、前記各スレッドにおいて、前記各データを受信し、前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込み、前記バッファにおけるバッファ使用率を装置状態格納部に格納し、前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定し、前記各スレッドにおいて、前記ファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力する。
【００２１】
また、本発明のコンピュータ・プログラムは、複数のスレッドが複数のデータを並行して処理するデータ処理装置に、前記各スレッドにおいて、前記各データを受信するデータ受信ステップと、前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込ステップと、前記バッファにおけるバッファ使用率を装置状態格納部に格納する装置状態格納ステップと、前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定ステップと、前記各スレッドにおいて、前記ファイル出力判定ステップでファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力ステップと、を実行させる。
【発明の効果】
【００２２】
本発明は、複数のスレッドで処理するデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながらも、ファイル出力回数の増大を抑制するデータ処理装置を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施の形態としてのデータ処理装置のハードウェア構成図である。
【図２】本発明の第１の実施の形態としてのデータ処理装置の機能ブロック図である。
【図３】本発明の第１の実施の形態としてのデータ処理装置の動作を説明するフローチャートである。
【図４】本発明の第２の実施の形態としてのデータ処理装置の機能ブロック図である。
【図５】本発明の第２の実施の形態としてのデータ処理装置の動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としてのデータ処理装置の動作例を説明する図である。
【図７】本発明の第２の実施の形態としてのデータ処理装置の動作例を説明する他の図である。
【図８】本発明の第２の実施の形態としてのデータ処理装置の動作例を説明する他の図である。
【図９】本発明の第２の実施の形態としてのデータ処理装置の動作例を説明する他の図である。
【図１０】本発明の第３の実施の形態としてのデータ処理装置の機能ブロック図である。
【図１１】本発明の第３の実施の形態における複数の判定条件を説明する図である。
【図１２】本発明の第３の実施の形態としてのデータ処理装置の動作を説明するフローチャートである。
【図１３】本発明の第４の実施の形態としてのデータ処理装置の機能ブロック図である。
【図１４】本発明の第４の実施の形態としてのデータ処理装置の動作を説明するフローチャートである。
【図１５】関連技術のデータ処理装置の課題を説明する図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２５】
（第１の実施の形態）
本発明の第１の実施の形態としてのデータ処理装置１のハードウェア構成を図１に示す。
【００２６】
図１において、データ処理装置１は、ＣＰＵ（Central Processing Unit）１００１と、ＲＡＭ（Random Access Memory）１００２と、ＲＯＭ（Read Only Memory）１００３と、周辺機器接続インタフェース１００４とを少なくとも備えたコンピュータ装置によって構成されている。
【００２７】
次に、データ処理装置１の機能ブロック構成を図２に示す。
【００２８】
図２において、データ処理装置１は、データ受信部１０１と、バッファ１０２と、データ書込部１０３と、装置状態格納部１０４と、ファイル出力判定部１０５と、ファイル出力部１０６とを備えている。また、データ処理装置１は、ハードディスクドライブ等の出力先記憶装置９に接続されている。
【００２９】
ここで、データ受信部１０１およびファイル出力部１０６は、周辺機器接続インタフェース１００４と、ＲＡＭ１００２に読み込まれたコンピュータ・プログラムを実行するＣＰＵ１００１とによって構成される。データ書込部１０３は、ＲＡＭ１００２に読み込まれたコンピュータ・プログラムを実行するＣＰＵ１００１によって構成される。また、装置状態格納部１０４と、ファイル出力判定部１０５とは、ＲＡＭ１００２と、ＲＡＭ１００２に読み込まれたコンピュータ・プログラムを実行するＣＰＵ１００１によって構成される。また、バッファ１０２は、ＲＡＭ１００２によって構成される。
【００３０】
なお、出力先記憶装置９は、周辺機器接続インタフェース１００４を介して、データ処理装置１に接続されている。また、出力先記憶装置９は、データ処理装置１を構成するコンピュータ装置の外部に接続されていてもよいし、内蔵されていてもよい。
【００３１】
また、データ処理装置１は、図示しないスレッド生成部を用いて、入力データを処理するための複数のスレッドを生成する。図２には、３つのスレッドを示しているが、本発明のデータ処理装置が生成するスレッドの数を限定するものではない。
【００３２】
データ受信部１０１は、前述の各スレッドにおいて、各スレッドが対象とする入力データを受信する。
【００３３】
バッファ１０２は、複数のブロックによって構成される。各ブロックには、各スレッドにおけるデータ書込部１０３によってデータが書き込まれる。また、各ブロックは、各スレッドによって占有される。なお、図２には、１つのバッファ１０２内に３つのブロックを示しているが、本発明のデータ処理装置におけるバッファを構成するブロック数を限定するものではない。また、図２には、３つのバッファ１０２を示しているが、本発明のデータ処理装置が備えるバッファ数を限定するものではない。
【００３４】
装置状態格納部１０４は、各バッファのバッファ使用率を格納している。ここで、バッファ使用率とは、各バッファの全容量に対する使用容量の割合である。
【００３５】
また、装置状態格納部１０４は、さらに各バッファのブロック使用状況を記憶しておいてもよい。ここで、ブロック使用状況とは、各バッファを構成する各ブロックがいずれのスレッドによって使用されているかを表す情報や、各ブロックの空き容量を表す情報である。
【００３６】
また、装置状態格納部１０４は、データ書込部１０３によってバッファ１０２にデータが書き込まれると、バッファ使用率およびブロック使用状況を更新する。
【００３７】
データ書込部１０３は、各スレッドにおいて、バッファ１０２内に１つのブロックを確保することにより、確保したブロックを占有してデータを書き込む。
【００３８】
例えば、データ書込部１０３は、装置状態格納部１０４のブロック使用状況に基づいてブロックを確保してもよい。
【００３９】
このとき、データ書込部１０３は、該当するスレッドにおいてまだブロックを確保していない場合は、どのスレッドによっても使用されていないブロックを確保する。
【００４０】
あるいは、データ書込部１０３は、既に確保しているブロックに書き込み領域があれば、そのブロックに書き込み領域を確保する。
【００４１】
あるいは、データ書込部１０３は、既に確保しているブロックに書き込み領域がなくなっている場合、そのブロックが含まれるバッファ内の他のブロックで、どのスレッドによっても使用されていないブロックを確保する。
【００４２】
あるいは、データ書込部１０３は、既に確保しているブロックに書き込み領域がなく、そのブロックが含まれるバッファ内に使用されていないブロックがない場合、他のバッファ内にブロックを確保する。
【００４３】
あるいは、データ書込部１０３は、既に確保しているブロックを含むバッファに後述のファイル出力排他ロックが設定されている場合も、他のバッファ内にブロックを確保する。
【００４４】
このように、データ書込部１０３は、確保したブロックの書き込み領域にデータを書き込む。
【００４５】
また、データ書込部１０３は、データの書き込みの完了を、装置状態格納部１０４およびファイル出力判定部１０５に通知する。
【００４６】
ファイル出力判定部１０５は、各スレッドにおいて、装置状態格納部１０４に格納されたバッファ使用率が所定の判定条件を満たすか否かに基づいて、バッファ１０２内のデータをファイル出力するか否かを判定する。
【００４７】
具体的には、ファイル出力判定部１０５は、データ書込部１０３からデータの書き込みの完了を通知されると、装置状態格納部１０４を参照して、バッファ使用率を取得する。また、ファイル出力判定部１０５は、あらかじめ定められた判定条件を取得する。そして、ファイル出力判定部１０５は、取得したバッファ使用率が、取得した判定条件を満たす場合に、ファイル出力を行うと判定する。
【００４８】
例えば、判定条件は、「バッファ使用率が閾値以上である」という条件であってもよい。この場合、ファイル出力判定部１０５は、バッファ使用率が閾値以上である場合にファイル出力を行うと判定し、そうでない場合に、ファイル出力を行わないと判定する。
【００４９】
また、ファイル出力判定部１０５は、ファイル出力を行うと判定したことを、ファイル出力部１０６に通知する。
【００５０】
ファイル出力部１０６は、各スレッドにおいて、ファイル出力判定部１０５によってファイル出力すると判定された場合に、該当するスレッドが書き込んでいたブロックを含むバッファ１０２内のデータをファイル出力する。このとき、ファイル出力部１０６は、ファイル出力するバッファがファイル出力中であることを表すファイル出力排他ロックを、該当するバッファに設定する。
【００５１】
以上のように構成されたデータ処理装置１の動作について、図３を参照して説明する。
【００５２】
まず、データ受信部１０１は、入力データを受信する（ステップＳ１）。
【００５３】
次に、データ書込部１０３は、装置状態格納部１０４に記憶されたブロック使用状況に基づいて、バッファ１０２内のブロックの書き込み領域を確保する（ステップＳ２）。
【００５４】
次に、データ書込部１０３は、確保したブロックの書き込み領域にデータを書き込む（ステップＳ３）。
【００５５】
次に、データ書込部１０３は、データの書き込み完了を装置状態格納部１０４に通知することにより、バッファ使用率およびブロック使用状況を更新させる（ステップＳ４）。
【００５６】
次に、ファイル出力判定部１０５は、装置状態格納部１０４からバッファ使用率を取得する（ステップＳ５）。
【００５７】
次に、ファイル出力判定部１０５は、取得したバッファ使用率が、判定条件として定められた閾値以上であるか否かを判断する（ステップＳ６）。
【００５８】
ここで、バッファ使用率が閾値以上でないと判断された場合、データ処理装置１は動作を終了する。
【００５９】
一方、ステップＳ６において、バッファ使用率が閾値以上であると判断した場合、ファイル出力判定部１０５はファイル出力を行うと判定する（ステップＳ７）。
【００６０】
次に、ファイル出力部１０６が、該当するバッファ１０２内のデータをファイル出力する（ステップＳ８）。
【００６１】
以上で、データ処理装置１は動作を終了する。
【００６２】
次に、本発明の第１の実施の形態の効果について説明する。本発明の第１の実施の形態としてのデータ処理装置は、複数のスレッドで処理したデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながらも、ファイル出力回数の増大を抑制することができる。
【００６３】
その理由は、各スレッドがバッファにデータを書き込んだときに、そのバッファのバッファ使用率に基づいて、ファイル出力を行うか否かを判定するからである。これにより、バッファ内の各ブロックの使用率に偏りがある場合でも、バッファ全体の使用率に基づいてファイル出力するので、データ使用率の少ないバッファを頻繁に出力することがない。このため、ファイル出力の頻度を抑えることできる。また、その結果、処理の遅延および入出力負荷を軽減することができる。
【００６４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。なお、本実施の形態の説明で参照する各図面において、本発明の第１の実施の形態と同一の構成または同様に動作するステップには同一の符号を付して、本実施の形態における詳細な説明を省略する。
【００６５】
本発明の第２の実施の形態としてのデータ処理装置２は、本発明の第１の実施の形態としてのデータ処理装置１と同様に図１に示した構成を備えるコンピュータ装置によって構成される。
【００６６】
データ処理装置２の機能ブロック構成を図３に示す。
【００６７】
図３において、データ処理装置２は、本発明の第１の実施の形態としてのデータ処理装置１に対して、装置状態格納部１０４に替えて装置状態格納部２０４と、ファイル出力判定部１０５に替えてファイル出力判定部２０５とを備え、さらに入出力負荷率取得部２０７を備える点が異なる。
【００６８】
ここで、入出力負荷率取得部２０７は、周辺機器接続インタフェース１００４、および、ＲＡＭ１００２に読み込まれたコンピュータ・プログラムを実行するＣＰＵ１００１によって構成される。
【００６９】
装置状態格納部２０４は、本発明の第１の実施の形態における装置状態格納部１０４と同様に構成され、さらに、入出力負荷率を格納している。ここで、入出力負荷率とは、データ受信部１０１によって受信されたデータの出力先となる出力先記憶装置９の入出力負荷を表わすビジー率である。
【００７０】
入出力負荷率取得部２０７は、出力先記憶装置９の入出力負荷率を取得し、取得した入出力負荷率を装置状態格納部２０４に通知することにより格納させる。
【００７１】
例えば、入出力負荷率取得部２０７は、装置状態格納部２０４からの要求に応じて入出力負荷率を取得し、取得した入出力負荷率を装置状態格納部２０４に通知してもよい。この場合、装置状態格納部２０４は、ファイル出力判定部２０５からの参照要求に応じて、入出力負荷率取得部２０７に、入出力負荷率を要求するようにする。
【００７２】
あるいは、入出力負荷率取得部２０７は、あらかじめ定められた間隔で入出力負荷率を取得して、装置状態格納部２０４に通知するようにしてもよい。
【００７３】
ファイル出力判定部２０５は、各スレッドにおいて、装置状態格納部２０４に格納されたバッファ使用率および入出力負荷率が所定の判定条件を満たすか否かに基づいて、バッファ１０２内のデータをファイル出力するか否かを判定する。
【００７４】
具体的には、ファイル出力判定部２０５は、データ書込部１０３からデータの書き込みの完了を通知されると、装置状態格納部２０４を参照して、バッファ使用率および入出力負荷率を取得する。また、ファイル出力判定部２０５は、あらかじめ定められた判定条件を取得する。そして、ファイル出力判定部２０５は、取得したバッファ使用率および入出力負荷率が、取得した判定条件を満たす場合に、ファイル出力を行うと判定する。
【００７５】
例えば、判定条件は、「バッファ使用率が第１の閾値以上であり、かつ、入出力負荷率が第２の閾値以下である」という条件であってもよい。この場合、ファイル出力判定部２０５は、バッファ使用率が第１の閾値以上であり、かつ、入出力負荷率が第２の閾値以下である場合に、ファイル出力を行うと判定し、そうでない場合に、ファイル出力を行わないと判定する。
【００７６】
また、ファイル出力判定部２０５は、ファイル出力を行うと判定したことを、ファイル出力部１０６に通知する。
【００７７】
以上のように構成されたデータ処理装置２の動作について、図３を参照して説明する。
【００７８】
まず、データ処理装置２は、ステップＳ１〜ステップＳ６まで、本発明の第１の実施の形態としてのデータ処理装置１と同様に動作することにより、バッファ使用率が第１の閾値以上であるか否かを判断する。
【００７９】
ここで、バッファ使用率が第１の閾値以上でないと判断された場合、データ処理装置２は動作を終了する。
【００８０】
一方、ステップＳ６において、バッファ使用率が第１の閾値以上であると判断した場合、ファイル出力判定部２０５は、装置状態格納部２０４から入出力負荷率を取得する（ステップＳ２１）。
【００８１】
次に、ファイル出力判定部２０５は、取得した入出力負荷率が、第２の閾値以下であるか否かを判断する（ステップＳ２２）。
【００８２】
ここで、入出力負荷率が第２の閾値以下ではないと判断された場合、データ処理装置２は動作を終了する。
【００８３】
一方、ステップＳ２２において、入出力負荷率が第２の閾値以下であると判断した場合、ファイル出力判定部２０５はファイル出力を行うと判定する（ステップＳ２３）。
【００８４】
次に、ファイル出力部１０６が、該当するバッファ１０２内のデータをファイル出力する（ステップＳ８）。
【００８５】
以上で、データ処理装置２は動作を終了する。
【００８６】
次に、データ処理装置２の動作例を、図６〜図９を用いて説明する。なお、ここでは、データ処理装置２によって既にスレッド１〜３が生成されているものとする。また、データ処理装置２は、バッファ１０２としてバッファＡおよびバッファＢを有し、各バッファはブロック１〜３を含んでいるものとして説明する。
【００８７】
また、図６〜図９において、各ブロックを示す矩形内において、斜線パターンの矩形はブロック内で既にデータが書きこまれている領域を示し、格子パターンの矩形は新たにデータが書き込まれた領域を示し、白地の矩形はブロック内の空き領域を示している。
【００８８】
図６（ａ）は、ある時点におけるバッファＡの状態を示している。ここでは、スレッド１がブロック２を使用し、スレッド２がブロック３を使用して、それぞれデータを書き込んだ状態を示している。
【００８９】
図６（ｂ）は、図６（ａ）の時点における装置状態格納部２０４に格納された情報を示している。図６（ｂ）において、装置状態格納部２０４には、バッファＡのブロック使用状況として、ブロック２の使用者がスレッド１であり、ブロック３の使用者がスレッド２であることを表す情報が格納されている。また、バッファＡのバッファ使用率として３５％が格納され、入出力負荷率として５０％が格納されている。
【００９０】
なお、装置状態格納部２０４には、図６（ｂ）に示した情報の他、各ブロックの空き容量を表す情報（図示せず）等も格納されている。
【００９１】
図６（ｃ）は、あらかじめ定められたファイル出力の判定条件を示している。ここでは、ファイル出力の判定条件として、「バッファ使用率６０％以上かつ入出力負荷率４５％以下」という条件が定められている。
【００９２】
次に、図６の状態において、スレッド１、スレッド２、およびスレッド３の各データ書込部１０３がデータ書き込みをする場合の動作について、図７を参照して説明する。
【００９３】
図７では、スレッド１およびスレッド２におけるデータ書込部１０３は、装置状態格納部２０４から、使用中のブロックを含むバッファＡのブロック使用状況を取得する。そして、スレッド１およびスレッド２は、ともに現在使用しているブロックの書き込み領域に書き込めるので、データを書き込む（ステップＳ２、３）。
【００９４】
また、スレッド３におけるデータ書込部１０３は、使用中のブロックがまだ存在しないので、いずれのスレッドによっても使用されていないブロック１を確保する（ステップＳ２）。そして、スレッド３におけるデータ書込部１０３は、ブロック１の書き込み領域に新規にデータを書き込む（ステップＳ３）。
【００９５】
次に、各スレッド１〜３におけるデータ書込部１０３は、データの書き込み完了を装置状態格納部２０４に通知する。そして、通知を受けた装置状態格納部２０４は、ブロック使用状況およびバッファ使用率を更新する（ステップＳ４）。これにより、装置状態格納部２０４には、バッファＡのブロック使用状況として、ブロック１の使用者がスレッド３であることが追加された情報が格納される。また、装置状態格納部２０４に格納されたバッファ使用率は、５０％に更新される。
【００９６】
このような図７の状態において、各スレッド１〜３におけるファイル出力判定部２０５は、装置状態格納部２０４からバッファＡのバッファ使用率５０％を取得する（ステップＳ５）。
【００９７】
そして、各ファイル出力判定部２０５は、バッファＡのバッファ使用率５０％が、図６（ｃ）に示した判定条件の６０％以上ではないので（ステップＳ６でＮｏ）、バッファＡをファイル出力しないと判定する。
【００９８】
次に、図７の状態において、スレッド１、スレッド３およびスレッド２のデータ書込部１０３がデータ書き込みをする場合の動作について、図８を参照して説明する。
【００９９】
図８において、まず、スレッド１におけるデータ書込部１０３は、装置状態格納部２０４から書き込み先のバッファＡのブロック使用状況を取得する。そして、このデータ書込部１０３は、使用しているブロック２に書き込み領域が確保できるので、データを書き込む（ステップＳ２、３）。
【０１００】
スレッド１におけるデータ書込部１０３は、データの書き込み完了を装置状態格納部２０４に通知する。通知を受けた装置状態格納部２０４は、バッファＡのバッファ使用率を５５％に更新する（ステップＳ４）。スレッド１におけるファイル出力判定部２０５は、装置状態格納部２０４から取得したバッファＡのバッファ使用率５５％が、図６（ｃ）に示した判定条件の６０％以上を満たしていないので（ステップＳ６でＮｏ）、バッファＡをファイル出力しないと判定する。
【０１０１】
次に、スレッド３におけるデータ書込部１０３は、装置状態格納部２０４から書き込み先のバッファＡのブロック使用状況を取得する。そして、このデータ書込部１０３は、使用しているブロック１に書き込み領域が確保できるので、データを書き込む（ステップＳ２、３）。
【０１０２】
スレッド３におけるデータ書込部１０３は、データの書き込み完了を装置状態格納部２０４に通知する。通知を受けた装置状態格納部２０４は、バッファＡのバッファ使用率を６０％に更新する（ステップＳ４）。
【０１０３】
スレッド３におけるファイル出力判定部２０５は、装置状態格納部２０４から取得したバッファＡのバッファ使用率６０％が、図６（ｃ）に示した判定条件の６０％以上を満たしているので（ステップＳ５、Ｓ６でＹｅｓ）、さらに、装置状態格納部２０４から、入出力負荷率４０％を取得する（ステップＳ２１）。
【０１０４】
ここで、ファイル出力判定部２０５は、入出力負荷率４０％が、図６（ｃ）に示した判定条件の閾値４５％以下を満たしているので（ステップＳ２２でＹｅｓ）、バッファＡをファイル出力すると判定する（ステップＳ２３）。
【０１０５】
そして、スレッド３のファイル出力部１０６は、バッファＡのファイル出力を行う（ステップＳ８）。このとき、スレッド３のファイル出力部１０６は、バッファＡにファイル出力排他ロックを設定する。
【０１０６】
次に、スレッド２におけるデータ書込部１０３は、装置状態格納部２０４から書き込み先のバッファＡのブロック使用状況を取得する。そして、このデータ書込部１０３は、バッファＡにファイル出力排他ロックが設定されているため、バッファＢのブロック１に書き込み領域を確保する（ステップＳ２）。
【０１０７】
そして、スレッド２におけるデータ書込部１０３は、バッファＢのブロック１にデータを書き込む（ステップＳ３）。
【０１０８】
そして、スレッド２におけるデータ書込部１０３は、データの書き込み完了を装置状態格納部２０４に通知する。そして、装置状態格納部２０４は、バッファＢのブロック使用状況およびバッファ使用率を更新する（ステップＳ４）。これにより、装置状態格納部２０４には、バッファＢのバッファ使用率３％が格納される。また、バッファＢのブロック使用状況として、ブロック１の使用者がスレッド２であることを表す情報が追加される。
【０１０９】
そして、スレッド２におけるファイル出力判定部２０５は、装置状態格納部２０４から取得したバッファＢのバッファ使用率３％が、図６（ｃ）に示した判定条件の６０％以上を満たしていないので（ステップＳ５、ステップＳ６でＮｏ）、バッファＢをファイル出力しないと判定する。
【０１１０】
次に、図８の状態から、スレッド３がファイル出力を行い、スレッド１およびスレッド２がデータ書き込みを行う場合の動作について、図９を参照して説明する。
【０１１１】
図９において、スレッド３のファイル出力部１０６は、バッファＡ内のデータを出力先記憶装置９に出力する。
【０１１２】
スレッド１におけるデータ書込部１０３は、書き込み先だったバッファＡのブロック使用状況を装置状態格納部２０４から取得する。そして、このデータ書込部１０３は、バッファＡにファイル出力排他ロックが設定されているため、バッファＢのブロック２に書き込み領域を確保する（ステップＳ２）。
【０１１３】
そして、スレッド１におけるデータ書込部１０３は、バッファＢのブロック２の書き込み領域にデータを書き込む（ステップＳ３）。
【０１１４】
スレッド２におけるデータ書込部１０３は、装置状態格納部２０４から書き込み先のバッファＢのブロック使用状況を取得する。そして、このデータ書込部１０３は、バッファＢのブロック１に引き続き書き込み領域が確保できるので（ステップＳ２）、これにデータを書き込む（ステップＳ３）。
【０１１５】
スレッド１およびスレッド２におけるデータ書込部１０３は、データの書き込み完了を装置状態格納部２０４に通知する。通知された装置状態格納部２０４は、バッファＢのブロック使用状況およびバッファ使用率を更新する（ステップＳ４）。これにより、装置状態格納部２０４には、バッファＢのバッファ使用率１０％が格納される。また、バッファＢのブロック使用状況として、ブロック２の使用者がスレッド１であることが追加された情報が格納される。
【０１１６】
そして、スレッド１およびスレッド２における各ファイル出力判定部２０５は、装置状態格納部２０４から取得したバッファＢのバッファ使用率１０％が、図６（ｃ）に示した判定条件の６０％以上を満たしていないので（ステップＳ５、ステップＳ６でＮｏ）、バッファＢをファイル出力しないと判定する。
【０１１７】
また、スレッド３におけるファイル出力部１０６は、バッファＡ内のデータのファイル出力を完了すると、バッファＡに設定したファイル出力排他ロックを解除するとともに、バッファＡを解放する。
【０１１８】
以上で、データ処理装置２の動作例の説明を終了する。
【０１１９】
次に、本発明の第２の実施の形態の効果について説明する。本発明の第２の実施の形態としてのデータ処理装置は、複数のスレッドで処理したデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながら、ファイル出力回数の増大をさらに抑制することができる。
【０１２０】
その理由は、ファイル出力判定部の判定条件として、バッファ使用率に加えて入出力負荷率を用いるためである。これにより、本発明の第２の実施の形態としてのデータ処理装置は、バッファ使用率が高い場合でも入出力負荷率が高い場合にはファイル出力を行わないように抑制するからである。
【０１２１】
（第３の実施の形態）
次に、本発明の第３の実施の形態について、図面を参照して詳細に説明する。なお、本実施の形態の説明で参照する各図面において、本発明の第２の実施の形態と同一の構成または同様に動作するステップには同一の符号を付して、本実施の形態における詳細な説明を省略する。
【０１２２】
本発明の第３の実施の形態としてのデータ処理装置３は、本発明の第２の実施の形態としてのデータ処理装置２と同様に図１に示した構成を備えるコンピュータ装置によって構成される。
【０１２３】
データ処理装置３の機能ブロック構成を図１０に示す。
【０１２４】
図１０において、データ処理装置３は、本発明の第２の実施の形態としてのデータ処理装置２に対して、ファイル出力判定部２０５に替えてファイル出力判定部３０５を備える点が異なる。
【０１２５】
ファイル出力判定部３０５は、バッファ使用率および入出力負荷率に基づく複数の判定条件を用いて、ファイル出力を行うか否かを判定する。例えば、ファイル出力判定部３０５は、バッファ使用率の範囲に応じて異なる入出力負荷率の閾値を設定することにより、複数の判定条件を設定する。
【０１２６】
複数の判定条件の一例を、図１１に示す。図１１は、第１〜第３の３つの判定条件を設定した例である。
【０１２７】
図１１に示した第１〜第３の判定条件を用いる場合、ファイル出力判定部３０５は、バッファ使用率が５０％以上で６０％より小さく、かつ、入出力負荷率が４０％以下であるという第１の判定条件が満たされる場合には、ファイル出力を行うと判定する。また、バッファ使用率が６０％以上で７０％より小さく、かつ、入出力負荷率が５０％以下であるという第２の判定条件が満たされる場合にも、ファイル出力を行うと判定する。また、バッファ使用率が７０％以上であり、かつ、入出力負荷率が６０％以下であるという第３の判定条件が満たされる場合にも、ファイル出力を行うと判定する。
【０１２８】
一方、ファイル出力判定部３０５は、バッファ使用率が５０％より小さいか、または、入出力負荷率が６０％より大きい場合は、第１〜第３のいずれの判定条件も満たさないとして、ファイル出力を行わないと判定する。
【０１２９】
以上のように構成されたデータ処理装置３の動作について、図１２を用いて説明する。
【０１３０】
まず、データ処理装置３は、ステップＳ１〜ステップＳ５まで、本発明の第１の実施の形態としてのデータ処理装置１と同様に動作することにより、バッファ使用率を取得する。
【０１３１】
次に、ファイル出力判定部３０５は、取得したバッファ使用率が、複数の判定条件におけるバッファ使用率の各範囲のいずれかに含まれるか否かを判断する（ステップＳ３１）。
【０１３２】
例えば、図１１の３つの判定条件を用いる場合、ファイル出力判定部３０５は、取得したバッファ使用率が、第１の判定条件におけるバッファ使用率の範囲「５０％以上６０％より小さい」、第２の判定条件におけるバッファ使用率の範囲「６０％以上７０％より小さい」、および、第３の判定条件におけるバッファ使用率の範囲「７０％以上」のいずれかに含まれるか否かを判断する。すなわち、ファイル出力判定部３０５は、この例の場合では、バッファ使用率が５０％以上であるか否かを判断することになる。
【０１３３】
ここで、バッファ使用率が、各判定条件におけるバッファ使用率の範囲のいずれにも含まれないと判断された場合、データ処理装置３は動作を終了する。
【０１３４】
一方、ステップＳ３１において、バッファ使用率が、いずれかの判定条件におけるバッファ使用率の範囲に含まれると判断した場合、ファイル出力判定部３０５は、装置状態格納部２０４から入出力負荷率を取得する（ステップＳ３２）。
【０１３５】
次に、ファイル出力判定部３０５は、取得したバッファ使用率および入出力負荷率が、複数の判定条件のいずれかを満たすか否かを判断する（ステップＳ３３）。
【０１３６】
ここで、バッファ使用率および入出力負荷率が、いずれの判定条件も満たさないと判断された場合、データ処理装置３は動作を終了する。
【０１３７】
一方、ステップＳ３３において、バッファ使用率および入出力負荷率が、いずれかの判定条件を満たすと判断した場合、ファイル出力判定部３０５はファイル出力を行うと判定する（ステップＳ３４）。
【０１３８】
次に、ファイル出力部１０６は、該当するバッファ１０２内のデータをファイル出力する（ステップＳ８）
以上で、データ処理装置３は動作を終了する。
【０１３９】
次に、本発明の第３の実施の形態の効果について述べる。
【０１４０】
本発明の第３の実施の形態としてのデータ処理装置は、複数のスレッドで処理したデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながらも、ファイル出力回数の増大を効率的に抑制することができる。
【０１４１】
その理由は、バッファ使用率および入出力負荷率に基づく複数の判定条件を設定するからである。これにより、バッファ使用率が低いバッファほどファイル出力をより多く抑制するとともに、バッファ使用率が高いバッファほどファイル出力の抑制を少なくすることができるからである。
【０１４２】
（第４の実施の形態）
次に、本発明の第４の実施の形態について、図面を参照して詳細に説明する。なお、本実施の形態の説明で参照する各図面において、本発明の第２の実施の形態と同一の構成または同様に動作するステップには同一の符号を付して、本実施の形態における詳細な説明を省略する。
【０１４３】
本発明の第４の実施の形態としてのデータ処理装置４は、本発明の第２の実施の形態としてのデータ処理装置２と同様に図１に示した構成を備えるコンピュータ装置によって構成される。
【０１４４】
データ処理装置４の機能ブロック構成を図１３に示す。
【０１４５】
図１３において、データ処理装置３は、本発明の第２の実施の形態としてのデータ処理装置１に対して、パフォーマンス情報取得部４０８と、判定条件変更部４０９とをさらに備える点が異なる。
【０１４６】
ここで、パフォーマンス情報取得部４０８および判定条件変更部４０９は、ＲＡＭ１００２に読み込まれたコンピュータ・プログラムを実行するＣＰＵ１００１によって構成される。
【０１４７】
パフォーマンス情報取得部４０８は、データ処理装置４におけるパフォーマンス情報を取得する。ここで、パフォーマンス情報とは、例えば、単位時間あたりにファイル出力したデータ量であってもよいし、入力されたデータがファイル出力されるまでの遅延時間であってもよく、その他、データ処理装置４のある時点におけるパフォーマンスを表す情報であればよい。
【０１４８】
判定条件変更部４０９は、パフォーマンス情報および入出力負荷率が所定の目標条件を満たさない場合、ファイル出力判定部２０５によって用いられる判定条件を所定のルールに従って変更する。
【０１４９】
具体的には、判定条件変更部４０９は、パフォーマンス情報取得部４０８および入出力負荷率取得部２０７から、それぞれパフォーマンス情報および入出力負荷率を取得する。そして、判定条件変更部４０９は、取得したパフォーマンス情報および入出力負荷率が、あらかじめ定められた目標条件を満たすか否かを判定する。そして、あらかじめ定められた目標条件を満たさないと判定した場合、判定条件変更部４０９は、所定のルールにしたがって、判定条件を変更する。
【０１５０】
ここで、目標条件とは、例えば、パフォーマンス情報および入出力負荷率のそれぞれに対する目標の値または値の範囲であってもよい。
【０１５１】
また、所定のルールとは、例えば、取得した入出力負荷率とその目標値との差分値に応じて、判定条件に含まれるバッファ使用率の閾値および入出力負荷率の閾値の増減分を設定するルールであってもよい。
【０１５２】
具体的には、所定のルールは、取得した入出力負荷率がその目標値より高い場合、判定条件のバッファ使用率の閾値を増やすとともに入出力負荷率の閾値を減らすよう、それぞれの増減分を差分値に応じて設定したルールであってもよい。すなわち、所定のルールは、取得した入出力負荷率が目標値より高い場合、ファイル出力すると判定されるバッファ数を抑えるよう判定条件を変更するルールであってもよい。
【０１５３】
また、所定のルールとは、取得したパフォーマンス情報と、その目標条件との差分に応じて、判定条件に含まれるバッファ使用率の閾値および入出力負荷率の閾値の増減分を設定するルールであってもよい。
【０１５４】
具体的には、所定のルールは、パフォーマンス情報として取得した単位時間あたりのファイル出力データ量がその目標値に達していない場合、判定条件のバッファ使用率の閾値を減らすとともに入出力負荷率の閾値を増やすよう、それぞれの増減分を差分値に応じて設定するルールであってもよい。すなわち、所定のルールは、取得した単位時間あたりのファイル出力データ量が目標値に達していない場合、ファイル出力すると判定されるバッファ数を増やすよう判定条件を変更するルールであってもよい。
【０１５５】
また、所定のルールは、パフォーマンス情報として取得した遅延時間がその目標値より大きい場合、判定条件のバッファ使用率の閾値を増やすとともに入出力負荷率の閾値を減らすよう、それぞれの増減分を差分値に応じて設定するルールであってもよい。すなわち、所定のルールは、取得した遅延時間が目標値より大きい場合、ファイル出力すると判定されるバッファ数を抑えるよう判定条件を変更するルールであってもよい。
【０１５６】
また、所定のルールは、取得した入出力負荷率とその目標値との差分値、および、パフォーマンス情報とその目標値との差分値の組み合わせに応じて定められていてもよい。
【０１５７】
以上のように構成されたデータ処理装置４の動作について、図１４を参照して説明する。なお、データ処理装置４のファイル出力動作については、本発明の第２の実施の形態としてのデータ処理装置２と同様であるため、本実施の形態における説明を省略する。
【０１５８】
ここでは、データ処理装置４の判定条件変更動作について説明する。
【０１５９】
まず、判定条件変更部４０９は、パフォーマンス情報取得部４０８から、パフォーマンス情報を取得する（ステップＳ４１）。
【０１６０】
次に、判定条件変更部４０９は、入出力負荷率取得部２０７から、入出力負荷率を取得する（ステップＳ４２）。
【０１６１】
次に、判定条件変更部４０９は、取得したパフォーマンス情報および入出力負荷率が所定の目標条件を満たすか否かを判断する（ステップＳ４３）。
【０１６２】
ここで、パフォーマンス情報および入出力負荷率が所定の目標条件を満たすと判断した場合、データ処理装置４は動作を終了する。
【０１６３】
一方、ステップＳ４３において、パフォーマンス情報および入出力負荷率が所定の目標条件を満たさないと判断した場合、判定条件変更部４０９は、所定のルールにしたがって判定条件を変更する（ステップＳ４４）。
【０１６４】
以上で、データ処理装置４は判定条件を変更する動作を終了する。
【０１６５】
なお、データ処理装置４は、上述の動作を所定の間隔で繰り返し実行するようにしてもよい。
【０１６６】
次に、本発明の第４の実施の形態の効果について述べる。
【０１６７】
本発明の第４の実施の形態としてのデータ処理装置は、複数のスレッドで処理したデータを一括してファイル出力する際に、ファイル出力回数の増大を抑制しながらも、パフォーマンスを向上させることができる。
【０１６８】
その理由は、判定条件変更部がパフォーマンス情報および入出力負荷率を監視することにより、これらが目標条件を満たさないときは判定条件を動的に変更するからである。
【０１６９】
なお、上述した本発明の各実施の形態において、各フローチャートを参照して説明したデータ処理装置の動作を、本発明のコンピュータ・プログラムとしてデータ処理装置に接続された記憶装置（記憶媒体）に格納しておき、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは記憶媒体によって構成される。
【０１７０】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１７１】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１７２】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
複数のスレッドが複数のデータを並行して処理するデータ処理装置であって、
前記各スレッドにおいて、前記各データを受信するデータ受信部と、
前記データを書き込むためのバッファと、
前記各スレッドにおいて、前記バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込部と、
前記バッファにおけるバッファ使用率を格納する装置状態格納部と、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定部と、
前記各スレッドにおいて、前記ファイル出力判定部によってファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力部と、
を備えたデータ処理装置。
（付記２）
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得する入出力負荷率取得部をさらに備え、
前記装置状態格納部は、前記バッファ使用率に加えて前記入出力負荷率をさらに格納し、
前記ファイル出力判定部は、前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定することを特徴とする付記１に記載のデータ処理装置。
（付記３）
前記ファイル出力判定部は、前記バッファ使用率および前記入出力負荷率に基づく複数の判定条件を用いて、前記ファイル出力を行うか否かを判定することを特徴とする付記２に記載のデータ処理装置。
（付記４）
前記データ処理装置のパフォーマンス情報を取得するパフォーマンス情報取得部と、
前記パフォーマンス情報および前記入出力負荷率が所定の目標条件を満たさない場合、前記判定条件を所定のルールに従って変更する判定条件変更部と、
をさらに備えることを特徴とする付記１から付記３のいずれかに記載のデータ処理装置。
（付記５）
複数のスレッドが複数のデータを並行して処理するデータ処理装置を用いて、
前記各スレッドにおいて、前記各データを受信し、
前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込み、
前記バッファにおけるバッファ使用率を装置状態格納部に格納し、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定し、
前記各スレッドにおいて、前記ファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力する、データ処理方法。
（付記６）
前記データ処理装置を用いて、
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得し、
前記装置状態格納部に、前記バッファ使用率に加えて前記入出力負荷率をさらに格納し、
前記各スレッドにおいて前記ファイル出力を行うか否かを判定する際に、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定することを特徴とする付記５に記載のデータ処理方法。
（付記７）
複数のスレッドが複数のデータを並行して処理するデータ処理装置に、
前記各スレッドにおいて、前記各データを受信するデータ受信ステップと、
前記各スレッドにおいて、バッファ内に１つのブロックを確保することにより、確保したブロックに前記データを書き込むデータ書込ステップと、
前記バッファにおけるバッファ使用率を装置状態格納部に格納する装置状態格納ステップと、
前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定するファイル出力判定ステップと、
前記各スレッドにおいて、前記ファイル出力判定ステップでファイル出力すると判定された場合に、前記バッファ内のデータをファイル出力するファイル出力ステップと、
を実行させるコンピュータ・プログラム。
（付記８）
前記データ処理装置に、
前記データのファイル出力先となる出力先記憶装置の入出力負荷率を取得する入出力負荷率取得ステップをさらに実行させ、
前記装置状態格納ステップで、前記バッファ使用率に加えて前記入出力負荷率をさらに格納し、
前記ファイル出力判定ステップで、前記各スレッドにおいて、前記装置状態格納部に格納された前記バッファ使用率および前記入出力負荷率が所定の判定条件を満たすか否かに基づいて、前記バッファ内のデータをファイル出力するか否かを判定することを特徴とする付記７に記載のコンピュータ・プログラム。
【産業上の利用可能性】
【０１７３】
本発明は、複数のスレッドで処理したデータを一括してファイル出力する際に、コミット時のファイル出力の集中を解消しながらも、ファイル出力回数の増大を抑制するデータ処理装置を提供することができ、例えば、交換機における通話料金課金システムのように、短時間で大量に発生するデータを処理するシステムに適用されるデータ処理装置として好適である。
【符号の説明】
【０１７４】
１、２、３、４    データ処理装置
９    出力先記憶装置
１０１    データ受信部
１０２    バッファ
１０３    データ書込部
１０４、２０４    装置状態格納部
１０５、２０５、３０５    ファイル出力判定部
１０６    ファイル出力部
２０７    入出力負荷率取得部
４０８    パフォーマンス情報取得部
４０９    判定条件変更部
１００１    ＣＰＵ
１００２    ＲＡＭ
１００３    ＲＯＭ
１００４    周辺機器接続インタフェース
【図１】
0005593955.tif 000002
【図２】
0005593955.tif 000003
【図３】
0005593955.tif 000004
【図４】
0005593955.tif 000005
【図５】
0005593955.tif 000006
【図６】
0005593955.tif 000007
【図７】
0005593955.tif 000008
【図８】
0005593955.tif 000009
【図９】
0005593955.tif 000010
【図１０】
0005593955.tif 000011
【図１１】
0005593955.tif 000012
【図１２】
0005593955.tif 000013
【図１３】
0005593955.tif 000014
【図１４】
0005593955.tif 000015
【図１５】
0005593955.tif 000016