(57)【要約】【課題】ＣＰＵ使用率、トラフィック量、１スレッド処理時間を考慮してスレッド数を決定しデータ送信することを課題とする。【解決手段】スレッド数変動通信装置は、ネットワークを使用してデータを送信するデータ送信部と、前記データ送信部がデータ送信するときに、少なくとも測定されたスレッド数毎のＣＰＵ使用率と、ネットワークの負荷に基づき最適スレッド数を決定する最適スレッド数決定部と、を備える。【選択図】図２
2018147141.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを使用してデータを送信するデータ送信部と、
前記データ送信部がデータ送信するときに、少なくとも測定されたスレッド数毎のＣＰＵ使用率と、トラフィック量とに基づき最適スレッド数を決定する最適スレッド数決定部と
を備えたことを特徴とするスレッド数変動通信装置。
【請求項２】
前記最適スレッド数決定部は、前記スレッド数を１から予め定められた値まで一定数ずつ増加させ、前記スレッド数毎に前記ＣＰＵ使用率と、前記トラフィック量を測定し、
前記トラフィック量を最大とする前記スレッド数を最適スレッド数として決定することを特徴とする
請求項１に記載のスレッド数変動通信装置。
【請求項３】
前記最適スレッド数決定部は、
前記トラフィック量を最大とする前記スレッド数が複数ある場合は、その中でＣＰＵ使用率が最小となる前記スレッド数を最適スレッド数として決定することを特徴とする
請求項２に記載のスレッド数変動通信装置。
【請求項４】
前記最適スレッド数決定部は、前記スレッド数を１から予め定められた値まで一定数ずつ増加させ、そのときの前記ＣＰＵ使用率と、
前記スレッド数毎に前記トラフィック量と、
１スレッド毎の処理時間と、
を測定し、前記ＣＰＵ使用率および前記トラフィック量が所定の範囲内であり、１スレッド毎の処理時間を最小とする前記スレッド数を最適スレッド数として決定することを特徴とする
請求項１に記載のスレッド数変動通信装置。
【請求項５】
前記最適スレッド数決定部は、前記スレッド数変動通信装置が動作している間、前記ＣＰＵ使用率および前記トラフィック量が所定の範囲内となるように、
前記ＣＰＵ使用率が所定の範囲内より小さい場合は、前記スレッド数を一定数増加させ、
前記ＣＰＵ使用率が所定の範囲内より大きい場合は、前記スレッド数を一定数減少させ、
前記トラフィック量が所定の範囲内より小さい場合は、前記スレッド数を一定数増加させ、
前記トラフィック量が所定の範囲内より大きい場合は、前記スレッド数を一定数減少させることで、
前記ＣＰＵ使用率および前記トラフィック量を所定の範囲内となるまで繰り返し、
前記ＣＰＵ使用率および前記トラフィック量が所定の範囲内となる前記スレッド数を維持することを特徴とする
請求項１に記載のスレッド数変動通信装置。
【請求項６】
コンピュータを、請求項１〜５のいずれか１項に記載のスレッド数変動通信装置として機能させるスレッド数変動通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ送信方法に関し、コンピュータが処理すべき情報処理量の単位であるスレッド数を決定する技術に関するものである。
【背景技術】
【０００２】
多くのコンピュータシステムでは、ネットワークを使用したデータ送信を一般的に行っている。
Ｗｅｂシステムにおいては、多くの利用者からのリクエストに対して、できるだけ早く応答することが求められている。
大量のリクエストに対応するためには、同時に処理できるスレッド数を増やせばよい。しかし、同時に処理するスレッド数を増加させると、個々のリクエストに対する応答は遅くなってしまうという課題がある。
その解決方法の一つとして、最大スレッド数を定義して、データ送信スレッドを最大値まで増加させる制御方法が知られている。
このような制御方法をとるアプリケーションとして、例えばＷｅｂコンテナであるｔｏｍｃａｔがある。
ｔｏｍｃａｔでは、リアルタイムのＣＰＵ使用率を考慮せず最大値を設定するので、動作時に必ずしもＣＰＵ使用率が適正値となっているとは限らず、データ送信サーバの性能を最大限引き出すことができない課題がある。
また、特許文献１（特開２０１０−２３１３１３号公報）では、ＣＰＵ使用率の適正値を考慮した発明を公開している。しかし、この発明では、ＣＰＵ使用率は考慮しているが、データ送信におけるトラフィック量を考慮していない。
データ送信で重要となる指標の一つは、トラフィック量であり、ＣＰＵ使用率を考慮するだけでは十分ではない。
また、特許文献１は１スレッド処理時間についても考慮していないため、データ送信サーバの性能を最大限に引き出すことができず、利用者からの個々のリクエストに早く応答することができていないという課題がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２３１３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この発明は、少なくともＣＰＵ使用率と測定されたスレッド数毎のネットワークの負荷（以下、トラフィック量と言う）を考慮してスレッド数を決定しデータ送信することを課題とする。
【課題を解決するための手段】
【０００５】
この発明の一態様に係るスレッド数変動通信装置は、
ネットワークを使用してデータを送信するデータ送信部と、
前記データ送信部がデータ送信するときに、少なくともＣＰＵ使用率とトラフィック量に基づき最適スレッド数を決定する最適スレッド数決定部と、
を備える。
【発明の効果】
【０００６】
この発明のスレッド数変動通信装置によると、少なくともＣＰＵ使用率とトラフィック量を考慮したスレッド数を決定することができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１、２、３におけるシステム全体構成図。
【図２】実施の形態１、２、３におけるスレッド数変動通信装置１００の構成図。
【図３】実施の形態１、２におけるスレッド数変動通信装置１００の処理の流れを示した図。
【図４】実施の形態１、２で測定した測定データファイルの一例を示した図。
【図５】実施の形態３におけるスレッド数変動通信装置１００の運用での処理の流れを示した図。
【図６】実施の形態３で測定した測定データファイルの一例を示した図。
【図７】実施の形態３で測定した測定データファイルの一例を示した図。
【図８】実施の形態３で測定した測定データファイルの一例を示した図。
【発明を実施するための形態】
【０００８】
実施の形態１．
本実施の形態では、スレッド数変動通信装置１００について説明する。
図１は、スレッド数変動通信装置１００を含むシステム全体の構成図である。図１に示すように、スレッド数変動通信装置１００は、隣接したネットワーク装置（図示せず）を経由しネットワーク３００を介してデータ送信先装置２００へデータを送信する。
ネットワーク装置とは例えば、スイッチングハブやルータで構成される。
データ送信先装置２００は、１台以上のコンピュータである。
【０００９】
図２は、本実施の形態におけるスレッド数変動通信装置１００の構成図を示した図である。
スレッド数変動通信装置１００は、コンピュータであり、プロセッサ９１０、記憶装置９２０、通信インタフェース９３０といったハードウェアを備える。
またスレッド数変動通信装置１００は、機能構成として、データ送信部１０１、スレッド数設定変更部１０２、ＣＰＵコア数取得部１０３、ＣＰＵ使用率取得部１０４、トラフィック量取得部１０５、通信時間取得部１０６、スレッド処理時間算出部１０７、測定データファイル入出力部１０８、測定データファイル１０９、最適スレッド数決定部１１０、初期設定ファイル１１１とを備える。
以下の説明では、データ送信部１０１とスレッド数設定変更部１０２とＣＰＵコア数取得部１０３とＣＰＵ使用率取得部１０４と通信時間取得部１０６とスレッド処理時間算出部１０７とトラフィック量取得部１０５と測定データファイル入出力部１０８と最適スレッド数決定部１１０とを、スレッド数変動通信装置１００の「部」の機能という。スレッド数変動通信装置１００の「部」の機能は、ソフトウェアで実現される。
また記憶部１５０は、記憶装置９２０で実現される。
記憶部１５０には、測定データファイル１０９および初期設定ファイル１１１が記憶されている。
【００１０】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ９１０は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
【００１１】
記憶装置９２０は、補助記憶装置９２１およびメモリ９２２を含む。補助記憶装置９２１は、具体的には、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、フラッシュメモリ、または、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）である。メモリ９２２は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。記憶部１５０は、メモリ９２２により実現される。なお、記憶部１５０は、補助記憶装置９２１により実現されていてもよいし、補助記憶装置９２１とメモリ９２２の両方により実現されてもよい。
【００１２】
通信インタフェース９３０は、外部の装置と通信するためのインタフェースである。通信インタフェース９３０は、具体例としては、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＨＤＭＩ（登録商標，Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）のポートである。
【００１３】
補助記憶装置９２１には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９２２にロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。補助記憶装置９２１には、ＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリ９２２にロードされ、プロセッサ９１０はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
スレッド数変動通信装置１００は、１つのプロセッサ９１０のみを備えていてもよいし、複数のプロセッサ９１０を備えていてもよい。複数のプロセッサ９１０が「部」の機能を実現するプログラムを連携して実行してもよい。
【００１４】
「部」の機能による処理の結果を示す情報、データ、信号値、および、変数値は、補助記憶装置９２１、メモリ９２２、または、プロセッサ９１０内のレジスタ又はキャッシュメモリに記憶される。なお、図２において、「部」の各部と記憶部１５０とを結ぶ矢印は、各部による処理の結果を記憶部１５０に記憶する、あるいは、記憶部１５０から情報を各部が読み出すことを表している。また、各部同士を結ぶ矢印は、制御の流れを表している。矢印の記載は一部省略しているものもある。
なお、情報が各部同士でメモリ９２２を介して授受されることを表すメモリ９２２と各部間の矢印については省略する。
【００１５】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムをスレッド数変動通信プログラムともいう。
スレッド数変動通信プログラムは、「部」として説明している機能を実現するプログラムである。また、スレッド数変動通信プログラムプロダクトと称されるものは、スレッド数変動通信プログラムが記録された記憶媒体および記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００１６】
図１に示したデータ送信先装置２００も、コンピュータであり、ハードウェアとしては、図２に示したスレッド数変動通信装置１００と同様に、プロセッサ９１０、記憶装置９２０、通信インタフェース９３０といったハードウェアを備える。
【００１７】
スレッド数変動通信装置１００の全体構成を、図２を使用して説明する。
データ送信部１０１は、例えばｈｔｔｐを利用してデータを他コンピュータへ送信する部であり、１スレッドが１送信を実行する。また複数スレッドを同時に起動することで、通信の並行動作を実現することも可能である。
【００１８】
スレッド数設定変更部１０２は、データ送信部１０１が起動するスレッド数を設定・変更する部である。データ送信部１０１は、スレッド数設定変更部１０２の指示を受けて、起動可能なスレッド数を動的に変更する。
【００１９】
ＣＰＵコア数取得部１０３は、スレッド数変動通信装置１００が動作するコンピュータのＣＰＵコア数を取得する部である。例えばＷｉｎｄｏｗｓ（登録商標）の場合、Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ（以下、ＯＳと言う）のｓｅｔコマンドを用いることでコア数を取得することができる。
【００２０】
ＣＰＵ使用率取得部１０４は、スレッド数変動通信装置１００が動作するコンピュータのＣＰＵ使用率を取得する部である。例えばＷｉｎｄｏｗｓ（登録商標）の場合、ＯＳのｔｙｐｅｐｅｒｆコマンドを用いることで取得することができる。
【００２１】
トラフィック量取得部１０５は、スレッド数変動通信装置１００が動作するコンピュータのトラフィック量をリアルタイムに測定する部である。
ここでいうトラフィック量とは、スレッド数変動通信装置１００からデータ送信先装置２００に対してデータ送信を行う際に利用する経路において、スレッド数変動通信装置１００と隣接するネットワーク装置間のトラフィック量のことを言う。
トラフィック量の測定方法は、Ｗｉｎｄｏｗｓ（登録商標）の場合、パフォーマンスモニタを用いること、またネットワークモニタを用いることで実現可能である。
【００２２】
通信時間取得部１０６は、データ送信部１０１で起動する全スレッドの処理時間を求める部である。
【００２３】
スレッド処理時間算出部１０７は、１スレッドの処理時間を計測する部である。
【００２４】
測定データファイル入出力部１０８は、測定データファイル１０９に対して入出力する部であり、ファイルの読込み、書込みを行う。
【００２５】
測定データファイル１０９は、スレッド数、ＣＰＵ使用率、トラフィック量、および１スレッド処理時間を保存するデータベースである。測定データファイル１０９は、データベース以外のテキストファイルでも構わない。
【００２６】
最適スレッド数決定部１１０は、測定データファイル１０９に保存された情報に基づき最適なスレッド数を決定する部である。
【００２７】
初期設定ファイル１１１は、スレッド数の初期値をパラメータとして保存するデータベースである。初期設定ファイル１１１は、データベース以外のテキストファイルでも構わない。
【００２８】
本発明では、スレッド数決定方法として、次の３つの方法を示す。
方法１．トラフィック量を最大とするスレッド数を最適スレッド数として決定する方法
方法２．ＣＰＵ使用率およびトラフィック量が所定の範囲内であり、１スレッド毎の処理時間を最小とするスレッド数を最適スレッド数として決定する方法
方法３．スレッド数変動通信装置が動作している間、ＣＰＵ使用率およびトラフィック量が所定の範囲内となるスレッド数を維持する方法
【００２９】
実施の形態１では、方法１．トラフィック量を最大とするスレッド数を最適スレッド数として決定する方法について説明する。
【００３０】
方法１．トラフィック量を最大とするスレッド数を最適スレッド数として決定する方法は、スレッド数がＣＰＵコア数に比べて増大し、個々のスレッド処理時間にアイドリングが発生して個々の処理時間は悪化するが、トラフィック量が最大となるため、総送信時間が最小となる方法である。
【００３１】
図３から図４を参照して、実施の形態１に係るスレッド数変動通信装置１００の動作を説明する。
【００３２】
まず、図３においてスレッド数設定変更部１０２は、データ送信部１０１が初期値として起動するスレッド数を設定する（ステップＳ１０１）。ここでは、例として初期スレッド数を１とする。
スレッド数設定変更部１０２が、設定する初期値は、スレッド数変動通信装置１００内に設定しておいてもよいし、初期設定ファイル１１１に設定し、この初期設定ファイル１１１から読み込ませるようにしてもよい。
【００３３】
次に、ＣＰＵコア数取得部１０３が、ＣＰＵコア数を取得する（ステップＳ１０２）。
【００３４】
次に、ＣＰＵ使用率取得部１０４は、スレッド数変動通信装置１００が動作するコンピュータのＣＰＵ使用率の測定を開始する（ステップＳ１０３）。
【００３５】
次に、トラフィック量取得部１０５は、スレッド数変動通信装置１００が動作するコンピュータのトラフィック量の測定を開始する（ステップＳ１０４）。
【００３６】
次に、通信時間取得部１０６が、スレッド数変動通信装置１００が動作するコンピュータのデータ送信開始時刻を取得する（ステップＳ１０５）。
【００３７】
次に、データ送信部１０１は、指定されたスレッド数でデータ送信処理を開始する（ステップＳ１０６）。
データの送信は、スレッド数変動通信装置１００からデータ送信先装置２００に対して行う。送信プロトコルや、テストデータのデータサイズは、所定のものを使用すればよい。
今回は、ステップＳ１０１で指定したスレッド数の値は１であるので、一つのスレッドでデータ送信を行う。
スレッド数が２の場合は、２つのスレッドを同時実行することで、データ送信を並行処理する。
【００３８】
すべてのスレッドのデータ送信が完了すると、通信時間取得部１０６は、データ送信終了時刻を取得する（ステップＳ１０７）。
【００３９】
次に、トラフィック量取得部１０５は、トラフィック量の測定を終了する（ステップＳ１０８）。
【００４０】
次に、ＣＰＵ使用率取得部１０４は、スレッド数変動通信装置１００が動作するコンピュータのＣＰＵ使用率の測定を終了する（ステップＳ１０９）。
【００４１】
次に、スレッド処理時間算出部１０７は、通信時間取得部１０６で測定した値（総和）をスレッド数で除算し、１スレッド処理時間（平均）を算出する（ステップＳ１１０）。
【００４２】
次に、測定データファイル入出力部１０８は、測定結果として、スレッド数、ＣＰＵ使用率、トラフィック量、１スレッド処理時間を測定データファイル１０９に保存する（ステップＳ１１１）。
ＣＰＵ使用率は、ＣＰＵ使用率取得部１０４において測定開始から測定終了までに取得したＣＰＵ使用率の平均値とする。ＣＰＵ使用率は平均値の代わりに最大値を利用することでもよい。また、複数ＣＰＵ／複数コアの場合は、それぞれのＣＰＵ／コアの平均値を利用してもよいし、最大値を使用するようにしてもよい。
トラフィック量は、トラフィック量取得部１０５において測定開始から測定終了までに取得したトラフィック量の平均値とする。トラフィック量は平均値の代わりに最大値を利用することでもよい。
【００４３】
次に、スレッド数設定変更部１０２は、スレッド数を一定数加算する（ステップＳ１１２）。図３の例では、一定数を１としている。加算する前のスレッド数を、例えば１とすると、加算された結果スレッド数は２となる。
【００４４】
最適スレッド数決定部１１０は、終了判定を実施する（ステップＳ１１３）。
終了判定は、現在のスレッド数が所定のスレッド数より大きいかどうかで判定する。
所定の最終スレッド数を図３のように例えば５００とすると、現在のスレッド数を、例えば２とすると、現在のスレッド数２は所定のスレッド数５００より小さいので、判定結果はＮｏとなり、ＣＰＵ使用率測定開始（ステップＳ１０３）に戻り、ＣＰＵ使用率測定開始（ステップＳ１０３）以降の処理を繰り返す。
【００４５】
最適スレッド数決定部１１０の終了判定で使用する所定の最終スレッド数は、初期設定ファイル１１１に設定し、この初期設定ファイル１１１から読み込ませるようにしてもよいし、トラフィック量の最大値はＣＰＵコア数に依存することから、ＣＰＵコア数取得部１０３で取得したＣＰＵコア数を元に決めるようにしてもよい。
【００４６】
初期スレッド数１から最終スレッド数５００になるまで処理を繰り返した後、現在のスレッド数が５０１なると、所定のスレッド数５００より大きいので、判定結果はＹｅｓとなり、最適スレッド数決定処理を行う（ステップＳ１１４）。
最適スレッド数決定部１１０は、測定データファイル１０９に保存されたスレッド毎の測定結果から、トラフィック量が最大となるスレッド数を決定する（ステップＳ１１４）。
【００４７】
具体例として、ステップＳ１１４の処理を、図４を用いて説明する。
図４は、測定データファイル１０９の一例で、スレッド数が１から５００までの値をとるときに、各スレッド数での測定結果を表にしたものである。
図４は、スレッド数、ＣＰＵ使用率（％）、トラフィック量（Ｋｂｐｓ）、１スレッド処理時間（秒）の列を持つ。
【００４８】
図４のトラフィック量の列を見ると、トラフィック量の最大値は９２，０００Ｋｂｐｓであることがわかる。なお、このときのスレッド数は３００であることがわかる。
以上により、最適スレッド数決定部１１０は、方法１．トラフィック量を最大とするスレッド数として、最適スレッド数を３００に設定する。
【００４９】
トラフィック量を最大とするスレッド数を求める方法では、同じトラフィック量となるスレッド数が複数見つかる場合がある。この場合、ＣＰＵ使用率の少ないスレッド数がより好ましいため、見つかったスレッド数の中で、ＣＰＵ使用率が最小となるスレッド数を方法１．トラフィック量を最大とするスレッド数として、最適スレッド数に設定する。
【００５０】
前記方法１．トラフィック量の最大値で決定する方法の変形例として、トラフィック量の最大値との差が僅差であれば、よりスレッド数の少ないトラフィック量のスレッド数を最適スレッド数とすることも可能である。
【００５１】
図４では、スレッド数が３００のとき、トラフィック量が最大の９２，０００Ｋｂｐｓとなっている。しかし、このときのＣＰＵ使用率は１００％となっており、トラフィック量は大きいがＣＰＵ使用率も高く、スレッド数変動通信装置１００が動作するコンピュータとしては高負荷で逼迫している。このような場合には、所定の割合だけ少ないスレッド数を最適スレッド数として構成することがむしろ好ましい。
例えば、トラフィック量が最大となるスレッド数の３分の２のスレッド数を最適スレッド数とする方法とする。この場合、最適スレッド数は２００となる。スレッド数２００の場合のトラフィック量は、９０，０００Ｋｂｐｓとなり、スレッド数３００のときのスレッド数９２，０００Ｋｂｐｓよりも２，０００Ｋｂｐｓ少なくなるが、ＣＰＵ使用率は９０％でＣＰＵ使用率には余裕を持たせることが可能となる。
【００５２】
このように本実施の形態によると、トラフィック量を最大とするスレッド数を提示する。これは、スレッド毎の処理時間を考慮する必要はなく、全体のトラフィック量が重要となる場合の最適解を提示することが可能となる。
【００５３】
実施の形態２．
実施の形態２では、実施の形態１の変形例として、方法２．ＣＰＵ使用率およびトラフィック量が所定の範囲内であり、１スレッド毎の処理時間を最小とするスレッド数を最適スレッド数として決定する方法について説明する。
【００５４】
方法２．ＣＰＵ使用率およびトラフィック量が所定の範囲内であり、１スレッド毎の処理時間を最小とするスレッド数を最適スレッド数として決定する方法は、スレッド数変動通信装置１００が動作するコンピュータのＣＰＵ使用率、トラフィック量を一定範囲に保ちながら、個々のスレッドでの処理時間をできるだけ小さくするスレッド数に決定する方法である。
【００５５】
図３から図４を参照して、実施の形態２に係るスレッド数変動通信装置１００の動作を説明する。
【００５６】
まず、図３のステップＳ１０１からステップＳ１１３までの処理は、実施の形態１と同じである。
初期スレッド数１から最終スレッド数５００になるまで処理を繰り返した後、最適スレッド数決定部１１０は、測定データファイル１０９に保存されたスレッド毎の測定結果から、最適スレッド数を決定する（ステップＳ１１４）。
このため、図３のステップＳ１０１からステップＳ１１３までの処理の説明は省略する。
【００５７】
実施の形態２における図３のＳ１１４の処理を、図４を用いて説明する。
具体例として、ＣＰＵ使用率の値が４５％以上、トラフィック量が１０，０００Ｋｂｐｓ以上の範囲内で１スレッド処理時間を最小とするスレッド数を求める
【００５８】
図４において、ＣＰＵ使用率の列を見ると、ＣＰＵ使用率が４５％以上となるのは、スレッド数が９より大きい時であることがわかる。
また、トラフィック量の列を見ると、トラフィック量が１０，０００Ｋｂｐｓ以上となるのは、スレッド数が、１０以上であることがわかる。
この中で、１スレッド処理時間を最小とするのは、１スレッド処理時間が２．０秒となるスレッド数が１０のときであることがわかる。
以上により、最適スレッド数決定部１１０は、最適スレッド数を１０に設定する
【００５９】
このように本実施の形態によると、トラフィック量だけでなく、スレッド毎の処理時間がより重要となる場合のスレッド数を提示する。これは、Ｗｅｂシステムのような全体のトラフィック量だけでなく、個々の応答をより重視する場合の最適解となる。
【００６０】
実施の形態３．
実施の形態３では、方法３．スレッド数変動通信装置が動作している間、ＣＰＵ使用率およびトラフィック量が所定の範囲内となるスレッド数を維持する方法について説明する。
【００６１】
方法３．スレッド数変動通信装置が動作している間、ＣＰＵ使用率およびトラフィック量が所定の範囲内となるスレッド数を維持する方法は、運用時にＣＰＵ使用率、トラフィック量、１スレッド毎の処理時間を計測し、所定の範囲から外れる場合、スレッド数を増減させることで、ＣＰＵ使用率、トラフィック量の適正化を図り、運用時のスレッド数の最適化を実現する方法である。
【００６２】
スレッド数変動通信装置１００が動作するコンピュータ上で、他のアプリケーションが動作することにより、ＣＰＵ使用率またはトラフィック量が増減することで、ＣＰＵ使用率またはトラフィック量が所定の範囲から外れ、設計とおりの性能を期待できないときがある。
この場合、スレッド数の値を動的に変更することでスレッド数変動通信装置１００が動作するコンピュータを有効に使用することが可能となる。
【００６３】
図５を使用して実施の形態３の処理の流れを説明する。
まず、スレッド数設定変更部１０２は、データ送信部１０１が初期値として起動するスレッド数を設定する（ステップＳ２０１）。
スレッド数設定変更部１０２が設定する初期値は、測定データファイル１０９を読込み、方法１．１スレッドの処理時間が最小かつトラフィック量を一定値以上とするスレッド数で求めたスレッド数３００を初期値として設定することとしてもよいし、方法２．１スレッドの処理時間が最小かつＣＰＵ使用率が所定の範囲内かつトラフィック量が一定値以上で決定するスレッド数で求めたスレッド数１０を初期値として設定するようにしてもよい。
また、トラフィック量の最大値はＣＰＵコア数に依存することから、ＣＰＵコア数取得部１０３で次に取得するＣＰＵコア数を元に決めるようにしてもよい。
【００６４】
次に、ＣＰＵコア数取得部１０３は、ＣＰＵコア数を取得する（ステップＳ２０２）。
なお、図５のＳ２０２〜Ｓ２１１は、図３のＳ１０２〜Ｓ１１１と同じ処理内容である。
次に、ＣＰＵ使用率取得部１０４は、ＣＰＵ使用率測定を開始する（ステップＳ２０３）。
次に、トラフィック量取得部１０５は、トラフィック量の測定を開始する（ステップＳ２０４）。次に、通信時間取得部１０６は、データ送信開始時刻を取得する（ステップＳ２０５）。
【００６５】
次に、データ送信部１０１は、指定されたスレッド数でデータ送信処理を開始する（ステップＳ２０６）。
現在のスレッド数が、ステップＳ２０１で指定したスレッド数が例えば１０であったとすると、１０個のスレッドを使用して並行してデータ送信を行う。
【００６６】
次に、データ送信が完了すると、通信時間取得部１０６は、データ送信終了時刻を取得する（ステップＳ２０７）。次に、トラフィック量取得部１０５は、トラフィック量の測定を終了する（ステップＳ２０８）。次に、ＣＰＵ使用率取得部１０４は、ＣＰＵ使用率測定を終了する（ステップＳ２０９）。
【００６７】
スレッド処理時間算出部１０７は、通信時間取得部１０６で測定した値（総和）をスレッド数で除算し、１スレッド処理時間（平均）とする（ステップＳ２１０）。
【００６８】
測定データファイル入出力部１０８は、測定結果として、スレッド数、ＣＰＵ使用率、トラフィック量、１スレッド処理時間を測定データファイル１０９に保存する（ステップＳ２１１）。
ＣＰＵ使用率は、ＣＰＵ使用率取得部１０４において測定開始から測定終了までに取得したＣＰＵ使用率の平均値とする。ＣＰＵ使用率は平均値の代わりに最大値を利用することでもよい。また、複数ＣＰＵ／複数コアの場合は、それぞれのＣＰＵ／コアの平均値を利用してもよいし、最大値を使用するようにしてもよい。
トラフィック量は、トラフィック量取得部１０５において測定開始から測定終了までに取得したトラフィック量の平均値とする。トラフィック量は平均値の代わりに最大値を利用することでもよい。
【００６９】
次に、測定値が所定の範囲内か判定処理を実行する（ステップＳ２１２）。
判定処理では、ＣＰＵ使用率が所定の範囲内であるか、トラフィック量が所定の範囲内であるかを判定する。
所定の範囲内より小さい場合、スレッド数を一定数増加する（ステップＳ２１３）。所定の範囲内より大きな場合、スレッド数を一定数減少する（ステップＳ２１４）。
【００７０】
ＣＰＵ使用率およびトラフィック量がともに所定の範囲になるまで測定を繰り返し、最初に条件を満たすスレッド数を最適スレッド数として採用する（ステップＳ２１５）。
【００７１】
具体例として、ＣＰＵ使用率の所定の範囲を８０〜９５％、トラフィック量の所定の範囲を９０，０００Ｋｂｐｓ以上とし、適正なスレッド数を求めてみる。
初期スレッド数は１０とする。
【００７２】
ステップＳ２１２の処理を、図６を用いて説明する。
図６は、測定データファイル１０９の一例である。図４と同様、スレッド数、ＣＰＵ使用率（％）、トラフィック量（Ｋｂｐｓ）、１スレッド処理時間（秒）の列を持つ。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図６のようになるとする。
【００７３】
スレッド数が１０のときの測定結果は、図６を見るとＣＰＵ使用率は７０％、トラフィック量は８，０００Ｋｂｐｓとなっており、ＣＰＵ使用率とトラフィック量が共に所定の範囲を下回っていることがわかる。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ増やしていく。
【００７４】
スレッド数が１００のときの測定結果を見ると、図６よりＣＰＵ使用率は８０％、トラフィック量は８０，０００Ｋｂｐｓとなっており、トラフィック量がまだ所定の範囲を下回っていることがわかる。
さらに、測定を繰り返しながら、スレッド数を一定数ずつ増やしていき、最初に条件を満たすスレッド数を最適スレッド数として採用する。
【００７５】
図６を見ると、スレッド数が２００の測定結果を見ると、ＣＰＵ使用率は９０％、トラフィック量は９０，０００Ｋｂｐｓとなっている。所定の範囲であるＣＰＵ使用率８０〜９５％、トラフィック量９０，０００Ｋｂｐｓ以上の範囲に入っており、最初に条件を満たすスレッド数は２００であることがわかる。
【００７６】
運用を続けていくと、スレッド数変動通信装置１００が動作するコンピュータ上で動作する他のアプリケーションの影響でＣＰＵ使用率またはトラフィック量の増減により、ＣＰＵ使用率またはトラフィック量が所定の範囲から外れ、設計とおりの性能を期待できなくなるときがある。
【００７７】
例えば、図７はスレッド数２００で、ＣＰＵ使用率、トラフィック量ともに所定の範囲を保って運用していたが、スレッド数変動通信装置１００が動作するコンピュータ上で動作する他のアプリケーションの影響により、ＣＰＵ使用率、トラフィック量が増加してしまい、設計時の所定の範囲を外れてしまったケースである。
【００７８】
図７は、測定データファイル１０９の一例である。図４と同様、スレッド数、ＣＰＵ使用率（％）、トラフィック量（Ｋｂｐｓ）、１スレッド処理時間（秒）の列を持つ。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図７のようになるとする。
【００７９】
スレッド数が２００のときの測定結果は、図７を見るとＣＰＵ使用率は１００％、トラフィック量は９１，１９９Ｋｂｐｓとなっており、ＣＰＵ使用率が所定の範囲８０〜９５％を上回っていることがわかる。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ減らしていく。
【００８０】
図７を見ると、スレッド数が１００のときの測定結果を見ると、ＣＰＵ使用率は９５％、トラフィック量は９２，０００Ｋｂｐｓとなっており、所定の範囲であるＣＰＵ使用率８０〜９５％、トラフィック量９０，０００Ｋｂｐｓ以上の範囲に入っており、最初に条件を満たすスレッド数は１００であることがわかる。
【００８１】
図８はスレッド数２００で、ＣＰＵ使用率、トラフィック量ともに所定の範囲を保って運用していたが、スレッド数変動通信装置１００が動作するコンピュータ上で動作する他のアプリケーションの影響により、図７とは反対に、ＣＰＵ使用率、トラフィック量が減少してしまい、設計時の所定の範囲を外れてしまったケースである。
【００８２】
図８は、測定データファイル１０９の一例である。図４と同様、スレッド数、ＣＰＵ使用率（％）、トラフィック量（Ｋｂｐｓ）、１スレッド処理時間（秒）の列を持つ。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図８のようになるとする。
【００８３】
スレッド数が２００のときの測定結果は、図８を見るとＣＰＵ使用率は８０％、トラフィック量は８０，０００Ｋｂｐｓとなっており、トラフィック量が所定の範囲９０，０００Ｋｂｐｓ以上を下回っていることがわかる。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ増やしていく。
【００８４】
図８を見ると、スレッド数を３００のときの測定結果を見ると、図８よりＣＰＵ使用率は９０％、トラフィック量は９０，０００Ｋｂｐｓとなっており、所定の範囲であるＣＰＵ使用率８０〜９５％、トラフィック量９０，０００Ｋｂｐｓ以上の範囲に入っており、最初に条件を満たすスレッド数は３００であることがわかる。
【００８５】
実施の形態３の変形例として、最適なスレッド数を維持する条件として、ＣＰＵ使用率およびトラフィック量に加えて、１スレッド毎の処理時間を所定の範囲とすることを特徴とするように構成することも可能である。
スレッド毎の処理時間がより重要となる場合、例えばＷｅｂシステムのような全体のトラフィック量だけでなく、個々の応答をより重視する場合には、１スレッド毎の処理時間を条件の一つとすることも有効である。
【００８６】
このように本実施の形態によると、限られたリソースの中で利用者にとって、運用時における最適なスレッド数を提示する。通常、個々のリソース値は変動するため、利用者にとっての最適なスレッド数も変動する。リソース値に合わせて最適なスレッド数の範囲を維持することを可能とし、運用時における幅広い利用を可能としている。
【符号の説明】
【００８７】
１００  スレッド数変動通信装置、１０１  データ送信部、１１０  最適スレッド数決定部、３００  ネットワーク。
【図１】
2018147141.tif 000003
【図２】
2018147141.tif 000004
【図３】
2018147141.tif 000005
【図４】
2018147141.tif 000006
【図５】
2018147141.tif 000007
【図６】
2018147141.tif 000008
【図７】
2018147141.tif 000009
【図８】
2018147141.tif 000010
【手続補正書】
【提出日】平成30年3月5日(2018.3.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを使用してデータを送信するデータ送信部と、
前記データ送信部がデータ送信するときに、少なくとも測定されたスレッド数毎のＣＰＵ使用率と、トラフィック量とに基づき最適スレッド数を決定する最適スレッド数決定部とを備え、
前記最適スレッド決定部は、前記スレッド数を１から予め定められた値まで一定数ずつ増加させ、前記スレッド数毎に前記ＣＰＵ使用率と、
前記トラフィック量と、
１スレッド毎の処理時間と、
を測定し、前記ＣＰＵ使用率および前記トラフィック量が所定の範囲内であり、１スレッド毎の処理時間を最小とする前記スレッド数を最適スレッド数として決定すること
を特徴とするスレッド数変動通信装置。
【請求項２】
コンピュータを、請求項１記載のスレッド数変動通信装置として機能させるスレッド数変動通信プログラム。
【手続補正書】
【提出日】平成30年6月7日(2018.6.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを使用してデータ送信処理をするデータ送信部と、
前記データ送信部がデータ送信するときに、少なくとも測定されたスレッド数毎のＣＰＵ使用率と、トラフィック量とに基づき最適スレッド数を決定する最適スレッド数決定部とを備え
前記最適スレッド数決定部は、前記スレッド数を１から予め定められた値まで一定数ずつ増加させ、前記スレッド数毎に前記ＣＰＵ使用率と、
前記トラフィック量と、
１スレッド毎の前記データ送信処理時間と、
を測定し、前記ＣＰＵ使用率および前記トラフィック量が所定の範囲内であり、１スレッドの平均処理時間を最小とする前記スレッド数を最適スレッド数として決定すること
を特徴とするスレッド数変動通信装置。
【請求項２】
コンピュータを、請求項１記載のスレッド数変動通信装置として機能させるスレッド数変動通信プログラム。