JP6377197B1 - スレッド数変動通信装置及びスレッド数変動通信プログラム - Google Patents
スレッド数変動通信装置及びスレッド数変動通信プログラム Download PDFInfo
- Publication number
- JP6377197B1 JP6377197B1 JP2017040151A JP2017040151A JP6377197B1 JP 6377197 B1 JP6377197 B1 JP 6377197B1 JP 2017040151 A JP2017040151 A JP 2017040151A JP 2017040151 A JP2017040151 A JP 2017040151A JP 6377197 B1 JP6377197 B1 JP 6377197B1
- Authority
- JP
- Japan
- Prior art keywords
- threads
- thread
- cpu usage
- usage rate
- traffic volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Webシステムにおいては、多くの利用者からのリクエストに対して、できるだけ早く応答することが求められている。
大量のリクエストに対応するためには、同時に処理できるスレッド数を増やせばよい。しかし、同時に処理するスレッド数を増加させると、個々のリクエストに対する応答は遅くなってしまうという課題がある。
その解決方法の一つとして、最大スレッド数を定義して、データ送信スレッドを最大値まで増加させる制御方法が知られている。
このような制御方法をとるアプリケーションとして、例えばWebコンテナであるtomcatがある。
tomcatでは、リアルタイムのCPU使用率を考慮せず最大値を設定するので、動作時に必ずしもCPU使用率が適正値となっているとは限らず、データ送信サーバの性能を最大限引き出すことができない課題がある。
また、特許文献1(特開2010−231313号公報)では、CPU使用率の適正値を考慮した発明を公開している。しかし、この発明では、CPU使用率は考慮しているが、データ送信におけるトラフィック量を考慮していない。
データ送信で重要となる指標の一つは、トラフィック量であり、CPU使用率を考慮するだけでは十分ではない。
また、特許文献1は1スレッド処理時間についても考慮していないため、データ送信サーバの性能を最大限に引き出すことができず、利用者からの個々のリクエストに早く応答することができていないという課題がある。
ネットワークを使用してデータを送信するデータ送信部と、
前記データ送信部がデータ送信するときに、少なくともCPU使用率とトラフィック量に基づき最適スレッド数を決定する最適スレッド数決定部と、
を備える。
本実施の形態では、スレッド数変動通信装置100について説明する。
図1は、スレッド数変動通信装置100を含むシステム全体の構成図である。図1に示すように、スレッド数変動通信装置100は、隣接したネットワーク装置(図示せず)を経由しネットワーク300を介してデータ送信先装置200へデータを送信する。
ネットワーク装置とは例えば、スイッチングハブやルータで構成される。
データ送信先装置200は、1台以上のコンピュータである。
スレッド数変動通信装置100は、コンピュータであり、プロセッサ910、記憶装置920、通信インタフェース930といったハードウェアを備える。
またスレッド数変動通信装置100は、機能構成として、データ送信部101、スレッド数設定変更部102、CPUコア数取得部103、CPU使用率取得部104、トラフィック量取得部105、通信時間取得部106、スレッド処理時間算出部107、測定データファイル入出力部108、測定データファイル109、最適スレッド数決定部110、初期設定ファイル111とを備える。
以下の説明では、データ送信部101とスレッド数設定変更部102とCPUコア数取得部103とCPU使用率取得部104と通信時間取得部106とスレッド処理時間算出部107とトラフィック量取得部105と測定データファイル入出力部108と最適スレッド数決定部110とを、スレッド数変動通信装置100の「部」の機能という。スレッド数変動通信装置100の「部」の機能は、ソフトウェアで実現される。
また記憶部150は、記憶装置920で実現される。
記憶部150には、測定データファイル109および初期設定ファイル111が記憶されている。
プロセッサ910は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ910は、具体的には、CPU(Central・Processing・Unit)である。
スレッド数変動通信装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
なお、情報が各部同士でメモリ922を介して授受されることを表すメモリ922と各部間の矢印については省略する。
なお、「部」の機能を実現するプログラムをスレッド数変動通信プログラムともいう。
スレッド数変動通信プログラムは、「部」として説明している機能を実現するプログラムである。また、スレッド数変動通信プログラムプロダクトと称されるものは、スレッド数変動通信プログラムが記録された記憶媒体および記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
データ送信部101は、例えばhttpを利用してデータを他コンピュータへ送信する部であり、1スレッドが1送信を実行する。また複数スレッドを同時に起動することで、通信の並行動作を実現することも可能である。
ここでいうトラフィック量とは、スレッド数変動通信装置100からデータ送信先装置200に対してデータ送信を行う際に利用する経路において、スレッド数変動通信装置100と隣接するネットワーク装置間のトラフィック量のことを言う。
トラフィック量の測定方法は、Windows(登録商標)の場合、パフォーマンスモニタを用いること、またネットワークモニタを用いることで実現可能である。
方法1.トラフィック量を最大とするスレッド数を最適スレッド数として決定する方法
方法2.CPU使用率およびトラフィック量が所定の範囲内であり、1スレッド毎の処理時間を最小とするスレッド数を最適スレッド数として決定する方法
方法3.スレッド数変動通信装置が動作している間、CPU使用率およびトラフィック量が所定の範囲内となるスレッド数を維持する方法
スレッド数設定変更部102が、設定する初期値は、スレッド数変動通信装置100内に設定しておいてもよいし、初期設定ファイル111に設定し、この初期設定ファイル111から読み込ませるようにしてもよい。
データの送信は、スレッド数変動通信装置100からデータ送信先装置200に対して行う。送信プロトコルや、テストデータのデータサイズは、所定のものを使用すればよい。
今回は、ステップS101で指定したスレッド数の値は1であるので、一つのスレッドでデータ送信を行う。
スレッド数が2の場合は、2つのスレッドを同時実行することで、データ送信を並行処理する。
CPU使用率は、CPU使用率取得部104において測定開始から測定終了までに取得したCPU使用率の平均値とする。CPU使用率は平均値の代わりに最大値を利用することでもよい。また、複数CPU/複数コアの場合は、それぞれのCPU/コアの平均値を利用してもよいし、最大値を使用するようにしてもよい。
トラフィック量は、トラフィック量取得部105において測定開始から測定終了までに取得したトラフィック量の平均値とする。トラフィック量は平均値の代わりに最大値を利用することでもよい。
終了判定は、現在のスレッド数が所定のスレッド数より大きいかどうかで判定する。
所定の最終スレッド数を図3のように例えば500とすると、現在のスレッド数を、例えば2とすると、現在のスレッド数2は所定のスレッド数500より小さいので、判定結果はNoとなり、CPU使用率測定開始(ステップS103)に戻り、CPU使用率測定開始(ステップS103)以降の処理を繰り返す。
最適スレッド数決定部110は、測定データファイル109に保存されたスレッド毎の測定結果から、トラフィック量が最大となるスレッド数を決定する(ステップS114)。
図4は、測定データファイル109の一例で、スレッド数が1から500までの値をとるときに、各スレッド数での測定結果を表にしたものである。
図4は、スレッド数、CPU使用率(%)、トラフィック量(Kbps)、1スレッド処理時間(秒)の列を持つ。
以上により、最適スレッド数決定部110は、方法1.トラフィック量を最大とするスレッド数として、最適スレッド数を300に設定する。
例えば、トラフィック量が最大となるスレッド数の3分の2のスレッド数を最適スレッド数とする方法とする。この場合、最適スレッド数は200となる。スレッド数200の場合のトラフィック量は、90,000Kbpsとなり、スレッド数300のときのスレッド数92,000Kbpsよりも2,000Kbps少なくなるが、CPU使用率は90%でCPU使用率には余裕を持たせることが可能となる。
実施の形態2では、実施の形態1の変形例として、方法2.CPU使用率およびトラフィック量が所定の範囲内であり、1スレッド毎の処理時間を最小とするスレッド数を最適スレッド数として決定する方法について説明する。
初期スレッド数1から最終スレッド数500になるまで処理を繰り返した後、最適スレッド数決定部110は、測定データファイル109に保存されたスレッド毎の測定結果から、最適スレッド数を決定する(ステップS114)。
このため、図3のステップS101からステップS113までの処理の説明は省略する。
具体例として、CPU使用率の値が45%以上、トラフィック量が10,000Kbps以上の範囲内で1スレッド処理時間を最小とするスレッド数を求める
また、トラフィック量の列を見ると、トラフィック量が10,000Kbps以上となるのは、スレッド数が、10以上であることがわかる。
この中で、1スレッド処理時間を最小とするのは、1スレッド処理時間が2.0秒となるスレッド数が10のときであることがわかる。
以上により、最適スレッド数決定部110は、最適スレッド数を10に設定する
実施の形態3では、方法3.スレッド数変動通信装置が動作している間、CPU使用率およびトラフィック量が所定の範囲内となるスレッド数を維持する方法について説明する。
この場合、スレッド数の値を動的に変更することでスレッド数変動通信装置100が動作するコンピュータを有効に使用することが可能となる。
まず、スレッド数設定変更部102は、データ送信部101が初期値として起動するスレッド数を設定する(ステップS201)。
スレッド数設定変更部102が設定する初期値は、測定データファイル109を読込み、方法1.1スレッドの処理時間が最小かつトラフィック量を一定値以上とするスレッド数で求めたスレッド数300を初期値として設定することとしてもよいし、方法2.1スレッドの処理時間が最小かつCPU使用率が所定の範囲内かつトラフィック量が一定値以上で決定するスレッド数で求めたスレッド数10を初期値として設定するようにしてもよい。
また、トラフィック量の最大値はCPUコア数に依存することから、CPUコア数取得部103で次に取得するCPUコア数を元に決めるようにしてもよい。
なお、図5のS202〜S211は、図3のS102〜S111と同じ処理内容である。
次に、CPU使用率取得部104は、CPU使用率測定を開始する(ステップS203)。
次に、トラフィック量取得部105は、トラフィック量の測定を開始する(ステップS204)。次に、通信時間取得部106は、データ送信開始時刻を取得する(ステップS205)。
現在のスレッド数が、ステップS201で指定したスレッド数が例えば10であったとすると、10個のスレッドを使用して並行してデータ送信を行う。
CPU使用率は、CPU使用率取得部104において測定開始から測定終了までに取得したCPU使用率の平均値とする。CPU使用率は平均値の代わりに最大値を利用することでもよい。また、複数CPU/複数コアの場合は、それぞれのCPU/コアの平均値を利用してもよいし、最大値を使用するようにしてもよい。
トラフィック量は、トラフィック量取得部105において測定開始から測定終了までに取得したトラフィック量の平均値とする。トラフィック量は平均値の代わりに最大値を利用することでもよい。
判定処理では、CPU使用率が所定の範囲内であるか、トラフィック量が所定の範囲内であるかを判定する。
所定の範囲内より小さい場合、スレッド数を一定数増加する(ステップS213)。所定の範囲内より大きな場合、スレッド数を一定数減少する(ステップS214)。
初期スレッド数は10とする。
図6は、測定データファイル109の一例である。図4と同様、スレッド数、CPU使用率(%)、トラフィック量(Kbps)、1スレッド処理時間(秒)の列を持つ。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図6のようになるとする。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ増やしていく。
さらに、測定を繰り返しながら、スレッド数を一定数ずつ増やしていき、最初に条件を満たすスレッド数を最適スレッド数として採用する。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図7のようになるとする。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ減らしていく。
各スレッド数での測定値の説明のために、運用時に測定した結果が仮に図8のようになるとする。
そこで、測定を繰り返しながら、スレッド数を一定数ずつ増やしていく。
スレッド毎の処理時間がより重要となる場合、例えばWebシステムのような全体のトラフィック量だけでなく、個々の応答をより重視する場合には、1スレッド毎の処理時間を条件の一つとすることも有効である。
Claims (2)
- ネットワークを使用してデータ送信処理をするデータ送信部と、
前記データ送信部がデータ送信するときに、少なくとも測定されたスレッド数毎のCPU使用率と、トラフィック量とに基づき最適スレッド数を決定する最適スレッド数決定部とを備え
前記最適スレッド数決定部は、前記スレッド数を1から予め定められた値まで一定数ずつ増加させ、前記スレッド数毎に前記CPU使用率と、
前記トラフィック量と、
1スレッド毎の前記データ送信処理時間と、
を測定し、前記CPU使用率および前記トラフィック量が所定の範囲内であり、1スレッドの平均処理時間を最小とする前記スレッド数を最適スレッド数として決定すること
を特徴とするスレッド数変動通信装置。 - コンピュータを、請求項1記載のスレッド数変動通信装置として機能させるスレッド数変動通信プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017040151A JP6377197B1 (ja) | 2017-03-03 | 2017-03-03 | スレッド数変動通信装置及びスレッド数変動通信プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017040151A JP6377197B1 (ja) | 2017-03-03 | 2017-03-03 | スレッド数変動通信装置及びスレッド数変動通信プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6377197B1 true JP6377197B1 (ja) | 2018-08-22 |
JP2018147141A JP2018147141A (ja) | 2018-09-20 |
Family
ID=63249983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017040151A Expired - Fee Related JP6377197B1 (ja) | 2017-03-03 | 2017-03-03 | スレッド数変動通信装置及びスレッド数変動通信プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6377197B1 (ja) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001256207A (ja) * | 2000-03-08 | 2001-09-21 | Mitsubishi Electric Corp | コンピュータ装置及び記録媒体 |
JP2002259143A (ja) * | 2001-03-05 | 2002-09-13 | Nec Soft Ltd | タスク数自動制御装置、タスク数自動制御方法、オンライントランザクション処理システム、プログラム |
JP2006209165A (ja) * | 2005-01-25 | 2006-08-10 | Hitachi Ltd | 同時実行多重度調整システム及び方法 |
JP4170302B2 (ja) * | 2005-03-10 | 2008-10-22 | 富士通株式会社 | 負荷制御装置および負荷制御プログラム |
JP2006301749A (ja) * | 2005-04-18 | 2006-11-02 | Hitachi Information Technology Co Ltd | サーバ装置 |
JP4570527B2 (ja) * | 2005-07-20 | 2010-10-27 | 富士通株式会社 | システム性能監視プログラム及びシステム性能監視方法 |
JP5181121B2 (ja) * | 2008-03-17 | 2013-04-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | タスク数制御装置、タスク数制御方法、及びコンピュータプログラム |
JP4977069B2 (ja) * | 2008-03-19 | 2012-07-18 | 株式会社野村総合研究所 | メール配信速度調整システム及びプログラム |
JP5691749B2 (ja) * | 2011-03-31 | 2015-04-01 | 富士通株式会社 | リソース抑制プログラム、リソース監視プログラム、リソース抑制装置、リソース監視装置、リソース抑制方法、リソース監視方法及びリソース抑制システム |
WO2013129061A1 (ja) * | 2012-02-28 | 2013-09-06 | 日本電気株式会社 | 同時接続数制御システム、同時接続数制御サーバ、同時接続数制御方法および同時接続数制御プログラム |
JPWO2014045417A1 (ja) * | 2012-09-21 | 2016-08-18 | 富士通株式会社 | 情報処理装置、および負荷試験方法 |
JP6260375B2 (ja) * | 2014-03-17 | 2018-01-17 | 富士通株式会社 | 管理装置、管理プログラム及び情報処理システム |
-
2017
- 2017-03-03 JP JP2017040151A patent/JP6377197B1/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2018147141A (ja) | 2018-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9766818B2 (en) | Electronic system with learning mechanism and method of operation thereof | |
CN109756230B (zh) | 数据压缩存储方法、数据压缩方法、装置、设备及介质 | |
JP7296197B2 (ja) | 損失データ圧縮方法 | |
US8893146B2 (en) | Method and system of an I/O stack for controlling flows of workload specific I/O requests | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
JP2013529813A (ja) | 帯域幅適応型メモリ圧縮 | |
US20160179565A1 (en) | Device Remote Access Method, Thin Client, and Virtual Machine | |
EP2808789B1 (en) | Multi-core apparatus and job scheduling method thereof | |
CN107357642B (zh) | 一种计算任务调整方法及装置 | |
JP6273966B2 (ja) | ストレージ管理装置、性能調整方法及び性能調整プログラム | |
US20210181829A1 (en) | Memory throttling | |
US8307011B2 (en) | System and method for determining overall utilization | |
JP6060276B2 (ja) | 監視レコード管理方法及びデバイス | |
CN110601872A (zh) | 一种传输方法及装置、存储介质 | |
CN109151848B (zh) | 确定网络服务质量的方法、装置及服务器 | |
US7873759B2 (en) | Information processing system and method of allocating I/O to paths in same | |
JP6377197B1 (ja) | スレッド数変動通信装置及びスレッド数変動通信プログラム | |
CN115328825A (zh) | 用于内存访问的集成电路、处理方法、电子设备和介质 | |
CN112367384B (zh) | 基于Kafka集群的动态限速方法、装置以及计算机设备 | |
JP6848278B2 (ja) | ストレージ管理装置、性能調整方法及び性能調整プログラム | |
WO2020024392A1 (zh) | 节点处理方法及装置、存储介质和电子设备 | |
KR102625723B1 (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
KR102296940B1 (ko) | 클라우드 환경 내에서 가상 머신을 위한 마이그레이션을 수행하기 위한 전자 장치 및 그의 동작 방법 | |
CN112182454A (zh) | 一种网页优化的方法、装置及存储介质、电子设备 | |
CN109344043A (zh) | 一种性能分析方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180607 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180717 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180724 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6377197 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |