Nothing Special   »   [go: up one dir, main page]

JP2014235579A - Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program - Google Patents

Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program Download PDF

Info

Publication number
JP2014235579A
JP2014235579A JP2013116792A JP2013116792A JP2014235579A JP 2014235579 A JP2014235579 A JP 2014235579A JP 2013116792 A JP2013116792 A JP 2013116792A JP 2013116792 A JP2013116792 A JP 2013116792A JP 2014235579 A JP2014235579 A JP 2014235579A
Authority
JP
Japan
Prior art keywords
cpu usage
usage rate
group
bundle
thread
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.)
Pending
Application number
JP2013116792A
Other languages
Japanese (ja)
Inventor
幸生 小池
Yukio Koike
幸生 小池
裕士 黒田
Yuji Kuroda
裕士 黒田
啓介 角田
Keisuke Tsunoda
啓介 角田
大司 矢原
Daiji Yahara
大司 矢原
箕浦 大祐
Daisuke Minoura
大祐 箕浦
佐藤 敦
Atsushi Sato
敦 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013116792A priority Critical patent/JP2014235579A/en
Publication of JP2014235579A publication Critical patent/JP2014235579A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To control CPU usage rate for each software module.SOLUTION: A CPU usage control device 1 includes mapping means 12 which generates a second thread of an OS layer for mapping to a first thread one-on-one each time the first thread is generated for executing a software module in an execution environment layer, group managing means 14 for managing a group in which the second thread is summarized for each software module, receiving means 16 for receiving a set value of CPU usage rate and a group of control object in the group, calculating means 15 for calculating CPU usage time of the second thread belonging to the group of control object on the basis of the set value of the CPU usage rate, and controlling means 11 for controlling CPU usage rate of the group of control object by using the CPU usage time.

Description

本発明は、ソフトウェア実行環境でのソフトウェアモジュールに対するCPU使用率を制御するCPU使用率制御装置、CPU使用率制御方法、およびCPU使用率制御プログラムに関する。   The present invention relates to a CPU usage rate control device, a CPU usage rate control method, and a CPU usage rate control program for controlling a CPU usage rate for a software module in a software execution environment.

ソフトウェア実行環境の一つとしてJava(登録商標)VMが存在し、JavaVM上で動作するソフトウェアモジュールとしては、OSGiバンドルがある。   A Java (registered trademark) VM exists as one of the software execution environments, and an OSGi bundle is a software module that operates on the Java VM.

JavaVM(JavaVirtualMachine)は、OSから見て単一のプロセスで動作し、そのJavaVM上で動作するソフトウェアモジュールは、複数のJavaスレッドを生成可能であり、JavaVMによって並列的に複数の処理を実行することができる。アプリケーションによっては、ある一部のJavaスレッドを優先的に処理させたい場合がある。Java API仕様では、Javaスレッドの優先順位の変更方法が定められている(非特許文献1)。   JavaVM (Java Virtual Machine) operates as a single process as viewed from the OS, and a software module that operates on the JavaVM can generate a plurality of Java threads, and a plurality of processes can be executed in parallel by the JavaVM. Can do. Depending on the application, it may be desired to preferentially process some Java threads. In the Java API specification, a method for changing the priority order of Java threads is defined (Non-Patent Document 1).

また、OSGi(Open Services Gateway initiative)は、あるソフトウェアを複数のJavaソフトウェアモジュールで構成するための技術である(非特許文献2)。1つのJavaVM上で、OSGiFW(OSGi Freamwork)を動作させ、当該OSGiFW上で、複数のOSGiバンドル(以下、バンドル)を動作させることができる。このバンドルは、OSGiFW動作中に、インストール・アンインストール、スタート・ストップを動的に実行することができる。   In addition, OSGi (Open Services Gateway initiative) is a technique for configuring a piece of software with a plurality of Java software modules (Non-patent Document 2). An OSGiFW (OSGi Framework) can be operated on one JavaVM, and a plurality of OSGi bundles (hereinafter referred to as bundles) can be operated on the OSGiFW. This bundle can dynamically execute install / uninstall and start / stop during the OSGiFW operation.

“クラス Thread、java.lang.Thread.setPriority(int)”、Java 2 Platform Std. Ed. v1.4.0、<URL:http://docs.oracle.com/javase/jp/1.4/api/java/lang/Thread.html#setPriority(int)>“Class Thread, java.lang.Thread.setPriority (int)”, Java 2 Platform Std. Ed. V1.4.0, <URL: http://docs.oracle.com/javase/jp/1.4/api/java/ lang / Thread.html # setPriority (int)> “OSGi Specifications”、OSGi Alliance、<URL:http://www.osgi.org/Specifications/HomePage>“OSGi Specifications”, OSGi Alliance, <URL: http://www.osgi.org/Specifications/HomePage>

エンドユーザもしくはソフトウェア実行環境の運用者は、特定の重要なバンドルを、確実に動作させたい場合がある。例えば、CPU負荷の高いゲーム動作時にも緊急地震速報の計算を1秒以内に完了させたいなど、他バンドルの動作負荷状況に関わらず、あるバンドルの動作を保証したい場合がある。そのために、バンドル単位でCPU使用率の制御を行いたいというニーズがあるが、以下の課題がある。   An end user or an operator of a software execution environment may want to ensure that certain critical bundles operate. For example, there is a case where it is desired to guarantee the operation of a certain bundle regardless of the operation load status of other bundles, for example, when it is desired to complete the calculation of the earthquake early warning within one second even during a game operation with high CPU load. Therefore, there is a need to control the CPU usage rate in bundle units, but there are the following problems.

(1)非特許文献1のJavaスレッド優先度変更は、実際の動作が規定されていない。   (1) The Java thread priority change in Non-Patent Document 1 does not specify the actual operation.

(2)非特許文献1のJavaスレッド優先度変更は、バンドル自身が行うため、バンドルの作成者であるエンドユーザの思惑と、ソフトウェア実行環境の運用者の思惑とが異なる場合がある。すなわち、その優先度変更を外部からコントロールできず、外部コントロールするにはバンドルそれぞれに改修が必要であるため、とても対応しきれるものではない。   (2) Since the bundle thread itself changes the Java thread priority in Non-Patent Document 1, the speculation of the end user who is the creator of the bundle may be different from the speculation of the operator of the software execution environment. In other words, the priority change cannot be controlled from the outside, and each bundle needs to be modified for external control.

(3)非特許文献1のJavaスレッド優先度変更は、全体を総合的に俯瞰し、優先度設定を制限する仕組みが定められていない。そのため、例えば全てのJavaスレッドに最高の優先度を設定した場合、実質的に何の意味もなさない場合がある。   (3) The Java thread priority change of Non-Patent Document 1 is a comprehensive overview of the whole, and a mechanism for limiting priority setting is not defined. For this reason, for example, when the highest priority is set for all Java threads, there is a case where there is substantially no meaning.

(4)ソフトウェア実行環境のJavaスレッドがバンドルを動作させる場合もあり、また、1つのバンドルが複数のJavaスレッドを動作させる場合もある。すなわち、必ずしも1つのバンドルに対し1つのJavaスレッドが存在するわけではなく、Javaスレッド単位での優先度設定では、バンドル単位での設定とはならない。   (4) A Java thread in the software execution environment may operate a bundle, or a single bundle may operate a plurality of Java threads. That is, one Java thread does not necessarily exist for one bundle, and setting of priority in units of Java threads does not set in units of bundles.

本発明は、上記の事情に鑑みなされたもので、本発明の目的は、ソフトウェアモジュール毎にCPU使用率を制御するCPU使用率制御装置、CPU使用率制御方法、およびCPU使用率制御プログラムを提供することにある。   The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a CPU usage rate control device, a CPU usage rate control method, and a CPU usage rate control program for controlling the CPU usage rate for each software module. There is to do.

上記の課題を解決するため、第1の本発明は、単一プロセスの実行環境で動作するソフトウェアモジュールのCPU使用率を制御するCPU使用率制御装置であって、前記実行環境レイヤにおいて、ソフトウェアモジュールを実行するための第1スレッドが生成される毎に、OSレイヤの第2スレッドを生成して当該第1スレッドに1対1で対応付ける対応付け手段と、ソフトウェアモジュール毎に第2スレッドをまとめたグループを管理するグループ管理手段と、前記グループの中から制御対象グループおよび当該制御対象グループのCPU使用率の設定値を受け付ける受付手段と、前記CPU使用率の設定値に基づいて、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する算出手段と、前記CPU使用時間を用いて、前記制御対象グループのCPU使用率を制御する制御手段と、を備える。   In order to solve the above-mentioned problem, a first aspect of the present invention is a CPU usage rate control device for controlling the CPU usage rate of a software module that operates in an execution environment of a single process. Each time a first thread for executing is generated, a second thread of the OS layer is generated and associated with the first thread in one-to-one correspondence with the second thread for each software module. A group management means for managing a group; a receiving means for receiving a control target group and a CPU usage rate setting value of the control target group from the group; and the control target group based on the CPU usage rate setting value And calculating means for calculating the CPU usage time of the second thread belonging to And a control means for controlling the CPU usage rate of the control target group.

上記CPU使用率制御装置において、前記グループ管理手段は、前記実行環境以外のプロセスおよび非制御対象グループを、所定のグループで管理する。   In the CPU usage rate control apparatus, the group management unit manages a process other than the execution environment and a non-control target group in a predetermined group.

上記CPU使用率制御装置において、前記算出手段は、前記制御対象グループのCPU使用時間と、前記所定のグループに設定されたCPU使用時間の比が、前記制御対象グループのCPU使用率の設定値と、前記所定のグループが利用可能なCPU使用率の比と同じになるように、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する。   In the CPU usage rate control apparatus, the calculation means is configured such that a ratio between the CPU usage time of the control target group and the CPU usage time set for the predetermined group is a set value of the CPU usage rate of the control target group. The CPU usage time of the second thread belonging to the control target group is calculated so as to be the same as the ratio of the CPU usage rate that can be used by the predetermined group.

上記CPU使用率制御装置において、前記実行環境は、JavaVirtualMachineであって、前記ソフトウェアモジュールは、OSGiバンドルである。   In the CPU usage rate control apparatus, the execution environment is Java Virtual Machine, and the software module is an OSGi bundle.

第2の本発明は、コンピュータが行う、単一プロセスの実行環境で動作するソフトウェアモジュールのCPU使用率を制御するCPU使用率制御方法であって、前記実行環境レイヤにおいて、ソフトウェアモジュールを実行するための第1スレッドが生成される毎に、OSレイヤの第2スレッドを生成して当該第1スレッドに1対1で対応付ける対応付けステップと、ソフトウェアモジュール毎に第2スレッドをまとめたグループを管理するグループ管理ステップと、前記グループの中から制御対象グループおよび当該制御対象グループのCPU使用率の設定値を受け付ける受付ステップと、前記CPU使用率の設定値に基づいて、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する算出ステップと、前記CPU使用時間を用いて、前記制御対象グループのCPU使用率を制御する制御ステップと、を行う。   According to a second aspect of the present invention, there is provided a CPU usage rate control method for controlling a CPU usage rate of a software module operating in a single process execution environment performed by a computer, wherein the software module is executed in the execution environment layer. Each time the first thread is generated, a second thread of the OS layer is generated and associated with the first thread in one-to-one correspondence, and a group in which the second threads are grouped for each software module is managed. A group management step; a receiving step for receiving a control target group and a CPU usage rate setting value of the control target group from the group; and a second belonging to the control target group based on the CPU usage rate setting value A calculation step of calculating the CPU usage time of the thread, and when the CPU is used Using, it performs a control step for controlling the CPU usage rate of the control target group.

上記CPU使用率制御方法において、前記グループ管理ステップは、前記実行環境以外のプロセスおよび非制御対象グループを、所定のグループで管理する。   In the CPU usage rate control method, the group management step manages a process other than the execution environment and a non-control target group in a predetermined group.

上記CPU使用率制御方法において、前記算出ステップは、前記制御対象グループのCPU使用時間と、前記所定のグループに設定されたCPU使用時間の比が、前記制御対象グループのCPU使用率の設定値と、前記所定のグループが利用可能なCPU使用率の比と同じになるように、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する。   In the CPU usage rate control method, the calculation step includes a ratio between the CPU usage time of the control target group and the CPU usage time set for the predetermined group, and a set value of the CPU usage rate of the control target group. The CPU usage time of the second thread belonging to the control target group is calculated so as to be the same as the ratio of the CPU usage rate that can be used by the predetermined group.

第3の本発明は、上記CPU使用率制御装置としてコンピュータを機能させるためのCPU使用率制御プログラムである。   The third aspect of the present invention is a CPU usage rate control program for causing a computer to function as the CPU usage rate control device.

本発明によれば、ソフトウェアモジュール毎にCPU使用率を制御するCPU使用率制御装置、CPU使用率制御方法、およびCPU使用率制御プログラムを提供することができる。   According to the present invention, it is possible to provide a CPU usage rate control device, a CPU usage rate control method, and a CPU usage rate control program for controlling the CPU usage rate for each software module.

本発明の一実施の形態におけるCPU使用率制御装置の構成図である。It is a block diagram of the CPU usage rate control apparatus in one embodiment of this invention. グループ情報の一例を示す図である。It is a figure which shows an example of group information. CPU使用率の制御を示すシーケンス図である。It is a sequence diagram which shows control of CPU usage rate. 設定画面の一例を示す図である。It is a figure which shows an example of a setting screen. バンドルグループ管理部の保持情報(初期状態)を示す図である。It is a figure which shows the holding information (initial state) of a bundle group management part. バンドルグループ管理部の保持情報(OSGi起動態)を示す図である。It is a figure which shows the holding information (OSGi starting state) of a bundle group management part. バンドルグループ管理部の保持情報(CPUリソース制御開始状態)を示す図である。It is a figure which shows the holding information (CPU resource control start state) of a bundle group management part. バンドルグループ管理部の保持情報(CPUリソース制御終了状態)を示す図である。It is a figure which shows the holding information (CPU resource control completion state) of a bundle group management part. 本実施形態を説明するための説明図である。It is explanatory drawing for demonstrating this embodiment.

以下、本発明の実施の形態を、図面を用いて説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

本実施形態では、あるOS上で1つのプロセスで動作するソフトウェア実行環境と、そのソフトウェア実行環境上で動作する複数のソフトウェアモジュール(ソフトウェアプログラム)について説明する。具体例として本実施形態では、ソフトウェア実行環境としてJavaVMを、ソフトウェアモジュールとしてOSGiバンドルを例として以下説明するが、本発明はこれに限定されるものではなく、同様の仕組みを持つ他のソフトウェア実行環境およびソフトウェアジュールについても適用可能である。   In the present embodiment, a software execution environment that operates in one process on a certain OS and a plurality of software modules (software programs) that operate in the software execution environment will be described. As a specific example, in the present embodiment, JavaVM will be described below as an example of a software execution environment, and an OSGi bundle will be described as an example of a software module. However, the present invention is not limited to this, and other software execution environments having a similar mechanism. It is also applicable to software modules.

また、本実施形態の前提として、CPUは、OSによってスケジューリングされており、そのスケジューリングの単位としては、プロセス、LWP(Light Weight Process)などがある。LWPは、OSレイヤにおけるスレッドである。   Further, as a premise of the present embodiment, the CPU is scheduled by the OS, and a unit of the scheduling includes a process, LWP (Light Weight Process) and the like. LWP is a thread in the OS layer.

ソフトウェアモジュールの処理を時間的に並列に動作させるための仕組みとして、OSレイヤにはプロセスとLWP(スレッド)が存在する。JavaVMは、OSから見ると1つのプロセスとして動作する。一方、JavaVMは、JavaVM内で処理を時間的に並列に動作させる仕組みとしてJavaスレッドを用意している。LWPは、自身に対応するJavaスレッドを実行するが、JavaスレッドとLWPとは、動作するレイヤが異なることからそれぞれ独立した存在である。   As a mechanism for causing software module processes to operate in parallel in time, a process and an LWP (thread) exist in the OS layer. JavaVM operates as one process when viewed from the OS. JavaVM, on the other hand, prepares a Java thread as a mechanism for operating processes in parallel in JavaVM. The LWP executes a Java thread corresponding to itself, but the Java thread and the LWP are independent from each other because the operating layers are different.

図1は、本発明の実施形態に係るCPU使用率制御装置1の機能構成を示すブロック図である。図示するCPU使用率制御装置1は、LWP単位CPU制御部11と、Javaスレッド・LWP対応部12と、バンドルスレッド化部13と、バンドルグループ管理部14と、LWPグループ管理部15と、バンドルCPU使用率設定部16とを備える。   FIG. 1 is a block diagram showing a functional configuration of a CPU usage rate control device 1 according to an embodiment of the present invention. The CPU usage rate control device 1 shown in FIG. 1 includes an LWP unit CPU control unit 11, a Java thread / LWP correspondence unit 12, a bundle threading unit 13, a bundle group management unit 14, an LWP group management unit 15, and a bundle CPU. A usage rate setting unit 16.

[LWP単位CPU制御部11]
LWP単位CPU制御部11(制御手段)は、OSレイヤで動作し、LWP単位もしくはLWPのグループ単位で、CPU使用率を制御する。具体的には、各LWPまたはLWPの各グループに対してのCPU使用時間の値(CPUスケジューリング比率)を保持し、その比率に従ってCPUをスケジューリングすることで、CPU使用率を制御する。
[LWP unit CPU control unit 11]
The LWP unit CPU control unit 11 (control unit) operates in the OS layer, and controls the CPU usage rate in LWP units or LWP group units. Specifically, the CPU usage rate is controlled by holding the CPU usage time value (CPU scheduling ratio) for each LWP or each group of LWP and scheduling the CPU according to the ratio.

なお、CPUを制御する際には、例えばLinux(登録商標)のcgroupsを利用することができる。cgroupsは、プロセス、LWP単位またはLWPのグループ単位で、CPU使用率を制御するLinuxのカーネル機能である。cgroupsについては、例えば、http://ja.wikipedia.org/wiki/Cgroupsに記載されている
[Javaスレッド・LWP対応部12]
Javaスレッド・LWP対応部12(対応付け手段)は、JavaVMレイヤで動作し、1つのJavaスレッドを生成する毎に、それを実行するための1つのLWPを生成し、JavaVM上のJavaスレッドをOS上のLWPに、1:1で対応させる。
When controlling the CPU, for example, Linux (registered trademark) cgroups can be used. cgroups is a Linux kernel function that controls the CPU usage rate in units of processes, LWP units, or LWP groups. cgroups is described in, for example, http://en.wikipedia.org/wiki/Cgroups [Java Thread / LWP Corresponding Unit 12]
The Java thread / LWP correspondence unit 12 (association means) operates in the Java VM layer, and each time one Java thread is generated, one LWP for executing the Java thread is generated, and the Java thread on the Java VM is set as the OS. The above LWP is made to correspond 1: 1.

[バンドルスレッド化部13]
バンドルスレッド化部13は、OSGiFWで動作し、OSGiFWによって生成されたJavaスレッドが、あるバンドルの処理を呼び出す(バンドルを起動等する)際に、そのバンドルを実行するためのJavaスレッドを新規に生成し、そのバンドルをJavaスレッドとして起動する。バンドルの処理を呼び出す処理としては、例えば、バンドルのスタートやストップ等のOSGiFWからバンドルへのイベンティングなどが該当する。
[Bundle threading unit 13]
The bundle threading unit 13 operates on OSGiFW, and when a Java thread generated by OSGiFW calls a bundle process (starts a bundle or the like), a new Java thread for executing the bundle is generated. Then, the bundle is activated as a Java thread. The process for calling the bundle process includes, for example, eventing from OSGiFW to the bundle such as starting and stopping the bundle.

また、Javaスレッド・LWP対応部12によって、生成されたJavaスレッドはLWPと対応付けられるため、バンドルスレッド化部13は、新規のJavaスレッドを生成すると、同時にそれに対応するLWPのIDを、OSから取得することができる。   In addition, since the Java thread generated by the Java thread / LWP correspondence unit 12 is associated with the LWP, the bundle threading unit 13 generates a new Java thread and at the same time, assigns the ID of the corresponding LWP from the OS. Can be acquired.

また、OSGiFWは、Javaスレッドが呼び出そうとしているバンドルのIDを取得することができるので、バンドルスレッド化部13は、呼び出そうとするバンドルのIDを取得し、Javaスレッド・LWP対応部12によって生成されたLWPのIDと紐付けてバンドルグループ管理部14に引き渡す。   Further, since the OSGiFW can acquire the ID of the bundle that the Java thread intends to call, the bundle threading unit 13 acquires the ID of the bundle that is to be called, and the Java thread / LWP corresponding unit 12 The ID is associated with the LWP ID generated by, and delivered to the bundle group management unit 14.

また、バンドルスレッド化部13は、バンドルが新たにインストールされた場合またはアンインストールされた場合に、それをバンドルグループ管理部14へ通知する。通知情報には、インストールされたもしくはアンインストールされたこと、そのバンドルのIDなどが含まれる。   Further, the bundle threading unit 13 notifies the bundle group management unit 14 when a bundle is newly installed or uninstalled. The notification information includes installation or uninstallation, the bundle ID, and the like.

[バンドルグループ管理部14]
バンドルグループ管理部14(グループ管理手段)は、OSGiFWで動作し、バンドル毎に、当該バンドルに所属するLWPを管理する。バンドルスレッド化部13から通知されたバンドルのIDと、LWPのIDとを、図示しない記憶部に保持する。また、LWPグループ管理部15に対して、グループを生成・削除するよう指示する。具体的には、バンドルCPU使用率設定部16からの設定情報を受け付け、ユーザがCPU使用率制御対象として設定したバンドル毎に、グループを生成する指示を行い、それ以外のグループを削除するよう、LWPグループ管理部15に指示する。その際に、バンドルグループ管理部14が指示する情報には、生成・削除の指示と、バンドルのID(グループのID)と、ユーザが設定したCPU使用率と、そのバンドルに所属するLWPのIDとが含まれる。
[Bundle group management unit 14]
The bundle group management unit 14 (group management means) operates on the OSGiFW and manages the LWP belonging to the bundle for each bundle. The bundle ID notified from the bundle threading unit 13 and the LWP ID are stored in a storage unit (not shown). In addition, the LWP group management unit 15 is instructed to generate / delete a group. Specifically, the setting information from the bundle CPU usage rate setting unit 16 is received, an instruction to generate a group is issued for each bundle set by the user as a CPU usage rate control target, and other groups are deleted. Instructs the LWP group management unit 15. At that time, the information instructed by the bundle group management unit 14 includes the generation / deletion instruction, the bundle ID (group ID), the CPU usage rate set by the user, and the ID of the LWP belonging to the bundle. And are included.

[LWPグループ管理部15]
LWPグループ管理部15(算出手段)は、OSレイヤで動作し、バンドルスレッド化部13によってLWPに対応付けられたJavaスレッド群をグループとして束ねて扱い、LWP単位CPU制御部11を呼び出す。なお、LWPグループ管理部15は、OSレイヤ以外の他のレイヤに実装され、動作することとしてもよい。
[LWP group management unit 15]
The LWP group management unit 15 (calculation unit) operates in the OS layer, and bundles and handles the Java thread group associated with the LWP by the bundle threading unit 13 and calls the LWP unit CPU control unit 11. The LWP group management unit 15 may be mounted and operated in a layer other than the OS layer.

具体的には、LWPグループ管理部15は、バンドルグループ管理部14から指示があったバンドルのID毎に「グループ」を生成し、バンドルグループ管理部14からLWPのIDとバンドルのIDとが送られるたびに、そのLWPのIDを該当するバンドルIDのグループに所属させ、グループ情報として、図示しない記憶部に記憶する。   Specifically, the LWP group management unit 15 generates a “group” for each bundle ID instructed by the bundle group management unit 14, and sends the LWP ID and the bundle ID from the bundle group management unit 14. Each time, the ID of the LWP belongs to the group of the corresponding bundle ID, and is stored in a storage unit (not shown) as group information.

図2に、グループ情報の一例を示す。図示するグループ情報には、グループ毎(バンドル毎)に、対応するバンドルのIDと、当該グループに含まれるLWPのIDと、設定値と、制御値とが対応付けて記憶されている。設定値は、ユーザによりバンドルCPU使用率設定部16に入力される値であって、本実施形態ではCPU使用率を用いるものとする。なお、設定値は、当該グループに対する動作を保障するための値である。   FIG. 2 shows an example of group information. In the group information shown in the figure, the ID of the corresponding bundle, the ID of the LWP included in the group, the set value, and the control value are stored in association with each group (for each bundle). The set value is a value input to the bundle CPU usage rate setting unit 16 by the user, and the CPU usage rate is used in the present embodiment. The set value is a value for ensuring the operation for the group.

制御値は、LWP単位CPU制御部11へ投入するために、当該グループに設定された値である。制御値は、後述するように、設定値に基づいて算出される。LWP単位CPU制御部11に、上述したcgroupsを利用する場合には、cpu.sharesの値が制御値として設定される。なお、cpu.sharesは、cgroupsにおいて、該当するグループに配分されるCPU使用時間の整数値(CPUスケジューリング比率)である。   The control value is a value set for the group in order to be input to the LWP unit CPU control unit 11. The control value is calculated based on the set value as will be described later. When the above-described cgroups is used in the LWP unit CPU control unit 11, the value of cpu.shares is set as a control value. Note that cpu.shares is an integer value (CPU scheduling ratio) of CPU usage time allocated to the corresponding group in cgroups.

また、LWPグループ管理部15は、JavaVM以外のプロセスも同時に「グループ」によって管理する。   Further, the LWP group management unit 15 also manages processes other than JavaVM by “group” at the same time.

ここで、LWPグループ管理部15は、あるLWPおよびプロセスを、どのグループに所属させるか、について説明する。本実施形態では、以下のルールに基づいて、所属グループを決定するものとする。   Here, the LWP group management unit 15 will explain to which group a certain LWP and process belong. In the present embodiment, the belonging group is determined based on the following rules.

(1)JavaVM以外のプロセスについては、ある1つのグループ(以下、「ルートグループ」)に所属させる。これは新たなプロセスが発生するたびに行う。   (1) Processes other than JavaVM belong to a certain group (hereinafter, “root group”). This is done each time a new process occurs.

(2)バンドルグループ管理部14から引き渡されたLWPのIDについては、それと同時に引き渡されたバンドルのIDのグループに所属させる。   (2) The LWP ID delivered from the bundle group management unit 14 belongs to the bundle ID group delivered at the same time.

(3)いずれかのグループに所属しているLWPが生成したLWPについては、生成元のLWPと同じグループに所属させる。これは、あるJavaスレッドが別のJavaスレッドを生成した場合が該当する。   (3) An LWP generated by an LWP belonging to one of the groups is made to belong to the same group as the source LWP. This corresponds to the case where a certain Java thread generates another Java thread.

(4)上記(1)〜(3)以外のLWPは、ルートグループに所属させる。   (4) LWPs other than (1) to (3) above belong to a root group.

(5)プロセスおよびLWPが停止または消滅した場合は、所属していたグループから削除する。   (5) If the process and LWP are stopped or disappear, they are deleted from the group to which they belong.

また、グループおよびグループ情報は、以下のルールに基づいて生成または消滅させる。   The group and group information are generated or deleted based on the following rules.

(A)ルートグループは、LWPグループ管理部15の起動時に、1つだけ生成する。   (A) Only one route group is generated when the LWP group management unit 15 is activated.

(B)各バンドルのグループについては、バンドルグループ管理部14から指示があった際に生成する。既に保持しているグループと同じバンドルIDの場合には生成しない。   (B) A group of each bundle is generated when an instruction is given from the bundle group management unit 14. It is not generated when the bundle ID is the same as the group already held.

(C)バンドルグループ管理部14からグループの削除指示があった場合、削除する。その場合、削除指示されたグループに所属していたLWPは、ルートグループに所属させる。   (C) When there is an instruction to delete a group from the bundle group management unit 14, it is deleted. In that case, the LWP belonging to the group instructed to be deleted belongs to the root group.

[バンドルCPU使用率設定部16]
バンドルCPU使用率設定部16は、OSGiレイヤで動作し、ユーザ(オペレータもしくはエンドユーザ)向けの設定用GUI(Graphical User Interface)、WebUIなどを有する。なお、バンドルCPU使用率設定部16は、OSGiレイヤ以外の他のレイヤに実装され、動作することとしてもよい。
[Bundle CPU usage rate setting unit 16]
The bundle CPU usage rate setting unit 16 operates in the OSGi layer, and includes a setting GUI (Graphical User Interface) for a user (operator or end user), a Web UI, and the like. Note that the bundle CPU usage rate setting unit 16 may be mounted and operated in a layer other than the OSGi layer.

バンドルCPU使用率設定部16は、GUI生成時にインストール済みのバンドル一覧とその動作状態(動作中・非動作中)をOSGiFWから取得し、ユーザ端末2に表示する。   The bundle CPU usage rate setting unit 16 acquires from the OSGiFW a list of bundles already installed at the time of GUI generation and their operating states (operating / not operating), and displays them on the user terminal 2.

ユーザは、あるバンドル(動作状態を問わない)に対して割り当てたいCPUリソースを、CPU使用率(%)で指定し設定する。バンドルCPU使用率設定部16は、ユーザの設定内容を受け付け、バンドルグループ管理部14に出力する。また、バンドルCPU使用率設定部16は、合計したCPU使用率が事前に定めた閾値を超える場合には、ユーザに警告を発する。例えば、ユーザが設定したCPU使用率の合計が99%を超えると、警告メッセージをユーザ端末2に送信する。   The user designates and sets the CPU resource to be allocated to a certain bundle (regardless of the operation state) by the CPU usage rate (%). The bundle CPU usage rate setting unit 16 receives the setting contents of the user and outputs them to the bundle group management unit 14. Further, the bundle CPU usage rate setting unit 16 issues a warning to the user when the total CPU usage rate exceeds a predetermined threshold. For example, when the total CPU usage rate set by the user exceeds 99%, a warning message is transmitted to the user terminal 2.

以上説明した本実施形態のCPU使用率制御装置1は、例えば、CPUと、メモリと、HDD等の外部記憶装置などを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされたCPU使用率制御装置1用のプログラムを実行することにより、CPU使用率制御装置1の各機能が実現される。また、CPU使用率制御装置1のプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。   The CPU usage rate control device 1 of the present embodiment described above can use a general-purpose computer system including a CPU, a memory, an external storage device such as an HDD, and the like. In this computer system, each function of the CPU usage rate control device 1 is realized by the CPU executing a program for the CPU usage rate control device 1 loaded on the memory. Further, the program of the CPU usage rate control device 1 can be stored in a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, a DVD-ROM, or can be distributed via a network.

次に、本実施形態の動作について説明する。   Next, the operation of this embodiment will be described.

図3は、本実施形態におけるCPU使用率制御装置1の動作を示すシーケンス図である。   FIG. 3 is a sequence diagram showing the operation of the CPU usage rate control device 1 in the present embodiment.

図3では、ユーザが、各バンドルのCPUリソース制御設定を変更した際の、各バンドルのCPUリソース制御の流れを以下に示す。   In FIG. 3, the flow of CPU resource control of each bundle when the user changes the CPU resource control setting of each bundle is shown below.

ステップS10:バンドルグループ管理部14は、常に各バンドルのライフサイクル(インストール、アンインストール)を監視し、またバンドルスレッド化部13から通知されたバンドルのIDと、LWPのIDとを保持している。   Step S10: The bundle group management unit 14 always monitors the life cycle (installation and uninstallation) of each bundle, and holds the bundle ID and LWP ID notified from the bundle threading unit 13. .

ステップS11:まず、ユーザ端末2は、ユーザの指示により選択されたバンドルと、当該バンドルに割り当てるCPU使用率とを、バンドルCPU使用率設定部16に送信する。   Step S11: First, the user terminal 2 transmits the bundle selected by the user's instruction and the CPU usage rate assigned to the bundle to the bundle CPU usage rate setting unit 16.

図4は、バンドルCPU使用率設定部16がユーザ端末2に表示する設定画面の一例である。ユーザは、ユーザ端末2に表示される設定画面を用いて、制御対象とするバンドルと、そのバンドルに割り当てるCPU使用率とを設定する。   FIG. 4 is an example of a setting screen displayed on the user terminal 2 by the bundle CPU usage rate setting unit 16. The user uses the setting screen displayed on the user terminal 2 to set the bundle to be controlled and the CPU usage rate assigned to the bundle.

「バンドルシンボリックネーム」の列は、バンドルの一覧を表している。「バンドル状態」の列は、各バンドルの動作状態を表しているが、この列は無くてもよい。バンドル状態には、動作中(ACTIVE)、停止中(RESOLVED)、インストール済みだが未動作(INSTALLED)などがある。ユーザは、一覧に存在するどの状態のバンドルに対しても設定することができる。   The column “bundle symbolic name” represents a list of bundles. The “bundle state” column represents the operation state of each bundle, but this column may be omitted. The bundle state includes operating (ACTIVE), stopping (RESOLVED), installed but not operating (INSTALLED), and the like. The user can set the bundle for any state existing in the list.

「最低品質保証CPU使用率」の列は、動作保証を行いたいバンドルに対して設定するCPU使用率(%)の最低値を投入するテキストボックスである。コンピュータの負荷が大きくなった際にも、最低限、この設定値のCPU使用率が該当するバンドルに与えられることを示す。一方、コンピュータの負荷が小さい場合には、この設定値を超えてCPUを使用する場合もあるし、逆に、設定されたバンドルが処理を行っていない際には、他のバンドルがこの設定値のCPUを使用する場合もある。   The column of “minimum quality assurance CPU usage rate” is a text box for inputting a minimum value of CPU usage rate (%) set for a bundle for which operation guarantee is to be performed. This also indicates that the CPU usage rate of this set value is given to the corresponding bundle at a minimum even when the load on the computer increases. On the other hand, when the load on the computer is small, the CPU may be used beyond this setting value. Conversely, when the set bundle is not processing, the other bundles use this setting value. The CPU may be used.

「CPUリソース制御適用フラグ」の列は、CPUリソース制御(CPU使用率制御)を適用しているか否かを示すものである。「制御開始」および「制御終了」の列は、ラジオボタンで選択可能に表示され、CPUリソース制御をONもしくはOFFにすることができる。最下段の「合計」の行は、「CPUリソース制御適用フラグ」がONであるバンドルの「最低品質保証CPU使用率」に設定されたCPU使用率の合計値を表している。   The column of “CPU resource control application flag” indicates whether or not CPU resource control (CPU usage rate control) is applied. The columns “control start” and “control end” are displayed so as to be selectable by radio buttons, and the CPU resource control can be turned on or off. The “total” line at the bottom represents the total value of the CPU usage rate set in the “minimum quality assurance CPU usage rate” of the bundle whose “CPU resource control application flag” is ON.

ステップS12:バンドルCPU使用率設定部16は、ステップS11で送信されたユーザの設定情報を受信し、バンドルグループ管理部14に送出する。ここで、バンドルグループ管理部14に送出される情報は、「制御開始」がONになっている、ユーザが制御対象として設定した各バンドルのIDと、それに対応して設定された「最低品質保証CPU使用率」である。なお、バンドルの状態が動作中(ACTIVE)であってもそれ以外であっても、「制御開始」がONになっているバンドルについては、バンドルグループ管理部14に出力される。   Step S12: The bundle CPU usage rate setting unit 16 receives the user setting information transmitted in step S11 and sends it to the bundle group management unit 14. Here, the information sent to the bundle group management unit 14 includes the ID of each bundle that is set as a control target by the user and “minimum quality assurance” that is set as the control target. CPU utilization ". Note that a bundle whose “control start” is ON is output to the bundle group management unit 14 regardless of whether the bundle is in operation (ACTIVE) or not.

ステップS13:バンドルグループ管理部14は、バンドルCPU使用率設定部16からの情報を受け付け、ユーザが制御対象として設定したバンドル毎に、LWPグループ管理部15に対しグループを生成するように指示し、それ以外のグループを削除するよう指示する。   Step S13: The bundle group management unit 14 receives information from the bundle CPU usage rate setting unit 16, instructs the LWP group management unit 15 to generate a group for each bundle set as a control target by the user, Instructs other groups to be deleted.

LWPグループ管理部15に指示する情報は、制御対象として設定された各バンドルについては、生成指示と、バンドルのID(グループのID)と、ユーザが設定したCPU使用率(最低品質保証CPU使用率)と、当該バンドルに所属するLWPのIDなどである。一方、制御対象として設定されない非制御対象の各バンドルについては、削除指示と、バンドルのID(グループのID)と、当該バンドルに所属するLWPのIDなどである。   The information instructed to the LWP group management unit 15 includes, for each bundle set as a control target, a generation instruction, a bundle ID (group ID), and a CPU usage rate set by the user (minimum quality assurance CPU usage rate). ) And the ID of the LWP belonging to the bundle. On the other hand, for each non-control target bundle that is not set as a control target, there are a deletion instruction, a bundle ID (group ID), an LWP ID belonging to the bundle, and the like.

ステップS14:LWPグループ管理部15は、バンドルグループ管理部14からの指示情報を受け付け、生成指示された制御対象のバンドルについては、対応するグループを生成(または更新)し、削除指示された非制御対象のバンドルについては、対応するグループを削除して、グループ情報(図2)を更新する。   Step S14: The LWP group management unit 15 receives the instruction information from the bundle group management unit 14, generates (or updates) a corresponding group for the control target bundle for which generation is instructed, and performs non-control for which deletion is instructed For the target bundle, the corresponding group is deleted and the group information (FIG. 2) is updated.

なお、生成指示された制御対象のバンドルのIDのグループが、既にグループ情報に存在する場合は、当該グループを新たに生成することなく、ステップS13で送信された指示情報を用いてグループ情報を更新する。また、削除指示された非制御対象のバンドルのIDのグループが、グループ情報に存在する場合は、当該グループのレコードを削除し、当該グループに所属するLWPは、ルートグループに所属させる。   In addition, when the group of the ID of the bundle to be controlled that has been instructed already exists in the group information, the group information is updated using the instruction information transmitted in step S13 without newly generating the group. To do. If the group of the ID of the bundle to be controlled that is instructed to be deleted exists in the group information, the record of the group is deleted, and the LWP belonging to the group belongs to the root group.

生成指示されたバンドルの各グループについては、具体的には、LWPグループ管理部15は、ステップS13で送信された指示情報を用いて、バンドルのIDと、所属するLWPのIDと、ユーザが設定したCPU使用率(設定値)を、グループ情報に登録(または更新)する。そして、LWPグループ管理部15は、後述するように、CPU使用率に対応する、LWP単位CPU制御部11への制御値を算出する。   For each group of bundles instructed to generate, specifically, the LWP group management unit 15 uses the instruction information transmitted in step S13 to set the bundle ID, the LWP ID to which the user belongs, and the user setting. The CPU usage rate (setting value) is registered (or updated) in the group information. Then, the LWP group management unit 15 calculates a control value to the LWP unit CPU control unit 11 corresponding to the CPU usage rate, as will be described later.

例えば、LWP単位CPU制御部11として、上述のcgroupsを利用する場合、cpu.sharesの値を算出することになる。また、Linux のniceを利用する場合には、独自に実装されたOS上のCPUスケジューリング機能を利用して算出する。   For example, when using the above cgroups as the LWP unit CPU control unit 11, cpu. The value of shares is calculated. In addition, when using the Linux nice, it is calculated using a CPU scheduling function on the OS that is uniquely implemented.

ステップS15:LWPグループ管理部15は、算出した各グループの制御値(例えばcpu.sharesの値)を、LWP単位CPU制御部11に投入する。なお、ステップS14およびステップS15の処理は、バンドルの状態が動作中であるか否かとは無関係に行われる。   Step S15: The LWP group management unit 15 inputs the calculated control value of each group (for example, the value of cpu.shares) to the LWP unit CPU control unit 11. Note that the processing in step S14 and step S15 is performed regardless of whether or not the bundle state is in operation.

ステップS16:LWP単位CPU制御部11は、LWPグループ管理部15から投入された制御値に基づいて、各グループ(バンドル)に属するLWPのCPU使用率を制御する。具体的には、各グループに属するLWPが使用したCPU使用時間の比が、各グループに設定されたCPU使用率の設定値の比と同等になるように、CPUのスケジューリングを行う。これによって、S11でユーザが設定したCPU使用率となるように、CPU使用時間が制御されることとなる。例えば、cgroupsでは、グループ毎に、cpu.sharesとして与えられた整数の比に応じてCPUの使用時間を、相対的に配分する制御を行う。   Step S16: The LWP unit CPU control unit 11 controls the CPU usage rate of the LWP belonging to each group (bundle) based on the control value input from the LWP group management unit 15. Specifically, the CPU scheduling is performed so that the ratio of the CPU usage time used by the LWPs belonging to each group is equal to the ratio of the CPU usage rate setting values set for each group. As a result, the CPU usage time is controlled so that the CPU usage rate set by the user in S11 is obtained. For example, in cgroups, cpu. Control is performed to relatively distribute the CPU usage time in accordance with the integer ratio given as shares.

ただし、グループに属するLWPが1つも存在しない場合は、そのグループに対してはCPUスケジューリングを行わない。あるいは、スケジューリングは行うが、LWPが1つも存在しないので、次のスケジューリングにスキップするようにしてもよい。   However, if there is no LWP belonging to a group, CPU scheduling is not performed for that group. Alternatively, although scheduling is performed, since no LWP exists, it may be skipped to the next scheduling.

以上の処理により、各バンドルのCPU使用時間が、ステップS11で投入されたCPU使用率となるように制御されることとなる。   With the above processing, the CPU usage time of each bundle is controlled to be the CPU usage rate input in step S11.

次に、LWPグループ管理部15について詳述する。   Next, the LWP group management unit 15 will be described in detail.

ここでは、OSとしてLinux、ソフトウェア実行環境としてJavaVMおよびOSGi、ソフトウェアモジュールとしてOSGiバンドル、LWP単位CPU制御部11としてcgroupsを用いた場合を例として、LWPグループ管理部15の詳細について説明する。図5〜図8は、LWPグループ管理部15が保持する情報の遷移を示す。   Here, the details of the LWP group management unit 15 will be described by taking as an example the case of using Linux as the OS, JavaVM and OSGi as the software execution environment, OSGi bundle as the software module, and cgroups as the LWP unit CPU control unit 11. 5 to 8 show transition of information held by the LWP group management unit 15.

図5は、JavaVMおよびOSGiが起動する前の初期状態を示す。この初期状態では、OS上の全てのプロセス(LWPを含む)は、ルートグループに属している。   FIG. 5 shows an initial state before JavaVM and OSGi are activated. In this initial state, all processes (including LWP) on the OS belong to the root group.

ここで、ルートグループに設定するcgroupsのcpu.shares(制御値)は、固定値Nとする。初期状態であることから固定値Nを任意の値で設定してもよいが、他のバンドルへ設定するCPU使用率とのバランスを考慮して、ここでは1024とする。以下の例ではこの値を基準に計算を行う。   Here, cgroups cpu. The shares (control value) is a fixed value N. The fixed value N may be set to an arbitrary value because it is in the initial state, but here it is set to 1024 in consideration of the balance with the CPU usage rate set for other bundles. In the following example, calculation is performed based on this value.

次に、図6に、JavaVMおよびOSGiが起動し、バンドルCPU使用率設定部16にユーザからの設定情報が入力され、バンドルグループ管理部14からグループ生成指示があった後の状態を示す。   Next, FIG. 6 illustrates a state after JavaVM and OSGi are activated, setting information from the user is input to the bundle CPU usage rate setting unit 16, and a group generation instruction is issued from the bundle group management unit 14.

LWPグループ管理部15は、ユーザが制御対象として設定したバンドル毎にグループ(図中の「ProcessGroup」)を生成する。すなわち、バンドルグループ管理部14より送出された指示情報により、生成指示された制御対象のバンドルのIDと、LWPのIDと、ユーザが設定したCPU使用率とが通知されるため、それらを対応付けたグループ情報を生成する。   The LWP group management unit 15 generates a group (“ProcessGroup” in the figure) for each bundle set as a control target by the user. That is, the instruction information sent from the bundle group management unit 14 notifies the ID of the bundle to be controlled that is instructed to generate, the ID of the LWP, and the CPU usage rate set by the user. Group information is generated.

そして、LWPグループ管理部15は、制御対象のバンドルの各グループに対して、ユーザが設定したCPU使用率を用いて、cpu.sharesを以下の式で算出する。

Figure 2014235579
Then, the LWP group management unit 15 uses the CPU usage rate set by the user for each group of the bundles to be controlled, using cpu. Shares is calculated by the following equation.
Figure 2014235579

上記式の左辺は、制御対象のバンドル(グループ)のcpu.sharesの値(制御値)である。右辺分母は、非制御対象の全てのプロセスおよびLWPが利用可能なCPU使用率を意味する。右辺分子の「ユーザ設定CPU使用率」は、ユーザが設定したCPU使用率(設定値)である。また、右辺分子の「1024」は、ルートグループに設定された固定値Nであって、非制御対象の全てのプロセスおよびLWPに設定されているcpu.sharesの合計値である。   The left side of the above formula indicates the cpu. Of the bundle (group) to be controlled. This is the value (control value) of shares. The right-hand side denominator means the CPU usage rate that can be used by all non-control target processes and LWPs. The “user setting CPU usage rate” in the numerator on the right side is the CPU usage rate (setting value) set by the user. Also, “1024” in the numerator on the right side is a fixed value N set in the root group, and all the processes to be controlled and the cpu. The total value of shares.

上記式は、「制御対象バンドルのcpu.sharesの値」と「非制御対象の全てのプロセスおよびLWPに設定されているcpu.sharesの値の合計」の比が、「制御対象バンドルにユーザが設定したCPU使用率」と「非制御対象の全てのプロセスおよびLWPが利用可能なCPU使用率」の比と同じになるように、「制御対象バンドルのcpu.sharesの値」を算出するものである。なお、バンドルの状態(動作中か否か)に関わらず、全ての制御対象のバンドルについて算出する。   The above formula shows that the ratio of “the value of cpu.shares of the control target bundle” and “the total of the values of cpu.shares set in all non-control target processes and LWPs” is “the user in the control target bundle “Cpu.shares value of control target bundle” is calculated so as to be equal to the ratio of “CPU usage rate set” and “CPU usage rate that can be used by all non-control target processes and LWPs”. is there. Note that the calculation is performed for all bundles to be controlled regardless of the bundle state (whether or not it is operating).

次に、図7に、ユーザの指示によりあるバンドル(図中のバンドルC)を制御対象とした場合(制御を開始した状態)を示す。また、図8に、あるバンドル(図中のバンドルC)が制御対象から外れた場合(制御を終了した状態)を示す。図7および図8のどちらの場合も、全ての制御対象のバンドルのグループに対してcpu.sharesの値を再計算する。   Next, FIG. 7 shows a case where a bundle (bundle C in the figure) as a control target is in accordance with a user instruction (a state in which control is started). FIG. 8 shows a case where a certain bundle (bundle C in the figure) is removed from the control target (a state where the control is terminated). In both cases of FIG. 7 and FIG. 8, cpu. Recalculate the value of shares.

以上説明した本実施形態では、バンドルを実行するためのJavaスレッドが生成される毎に、OSレイヤのLWPを生成して、Javaスレッドに1対1で対応付け、そのLWPをバンドル毎にまとめたグループを管理し、前記グループの中から制御対象グループおよび当該制御対象グループのCPU使用率の設定値を受け付けると、そのCPU使用率の設定値に基づいて制御対象グループに属するLWPのCPU使用時間を算出し、制御対象グループのCPU使用率を制御する。これにより、本実施形態では、バンドル単位でCPU使用率を制御し、バンドル単位で設定されたCPU使用率を保証することができる。   In the present embodiment described above, each time a Java thread for executing a bundle is generated, an OS layer LWP is generated, associated with the Java thread on a one-to-one basis, and the LWP is collected for each bundle. When a group is managed and a control target group and a CPU usage rate setting value of the control target group are received from the group, the CPU usage time of the LWP belonging to the control target group is determined based on the CPU usage rate setting value. Calculate and control the CPU usage rate of the control target group. Thereby, in this embodiment, it is possible to control the CPU usage rate in units of bundles and guarantee the CPU usage rate set in units of bundles.

具体的には、図9に示すように、単一のプロセスで動作しているソフトウェア実行環境(JavaVM)内の「塊(=バンドル)」は、通常、OSレイヤからは見えない。つまり、CPUスケジューリング機能の対象とならない。そこで、本実施形態では、まずJavaスレッドという単位にバンドルを分割し、それをOSレイヤのLWPと対応付けたうえで、Javaスレッド(LWP)をバンドルという「塊」の単位で扱うことで、OSレイヤにバンドルという「塊」を認識させることができる。   Specifically, as shown in FIG. 9, the “lumps (= bundles)” in the software execution environment (Java VM) operating in a single process are usually not visible from the OS layer. That is, it is not a target of the CPU scheduling function. Therefore, in the present embodiment, the bundle is first divided into units called Java threads, associated with the OS layer LWP, and then the Java thread (LWP) is handled in units of “lumps” called bundles. The layer can recognize the “bundle” of the bundle.

また、本実施形態では、ユーザが設定しなかった非制御対象のバンドルおよびプロセスに対しては、1つのルートグループにまとめることで、CPU使用率の割り当てが均等となるため、非制御対象のバンドルおよびプロセス内での不均衡が生じないという利点がある。   Further, in this embodiment, the bundles and processes to be controlled that are not set by the user are grouped into one route group so that the CPU usage rate is evenly allocated. And there is an advantage that no imbalance occurs in the process.

すなわち、本実施形態では、どのバンドルに対し、どのJavaスレッド(LWP)が対応するかを管理するバンドルグループ管理部14と、ユーザが設定した「どのバンドルに対してどれだけCPU使用率を与えるか」を満たすために、バンドルに対してCPUの使用時間(スケジューリング比率)を算出するLWPグループ管理部15とを分けて備え、ユーザが設定をした制御対象のバンドルに対してのみグループを作成し、CPUの使用時間を算出する。これにより、非制御対象のバンドルのLWPはルートグループに属するため、CPUスケジューリングにおいては、プロセスと同等の扱いを受けることになり、非制御対象のバンドルおよびプロセス内で不均衡が生じない。   That is, in the present embodiment, the bundle group management unit 14 that manages which Java thread (LWP) corresponds to which bundle, and “how much CPU usage is given to which bundle” set by the user In order to satisfy the above, the LWP group management unit 15 that calculates the CPU usage time (scheduling ratio) for the bundle is provided separately, and a group is created only for the bundle to be controlled set by the user, CPU usage time is calculated. As a result, since the LWP of the non-control target bundle belongs to the root group, the CPU scheduling receives the same treatment as the process, and no imbalance occurs in the non-control target bundle and the process.

なお、本発明は上記実施形態に限定されるものではなく、特許請求の範囲内において、種々変更・応用が可能である。   In addition, this invention is not limited to the said embodiment, A various change and application are possible within a claim.

1 :CPU使用率制御装置
11:LWP単位CPU制御部
12:Javaスレッド・LWP対応部
13:バンドルスレッド化部
14:バンドルグループ管理部
15:LWPグループ管理部
16:バンドルCPU使用率設定部
2 :ユーザ端末
1: CPU usage rate control device 11: LWP unit CPU control unit 12: Java thread / LWP support unit 13: Bundle threading unit 14: Bundle group management unit 15: LWP group management unit 16: Bundle CPU usage rate setting unit 2: User terminal

Claims (8)

単一プロセスの実行環境で動作するソフトウェアモジュールのCPU使用率を制御するCPU使用率制御装置であって、
前記実行環境レイヤにおいて、ソフトウェアモジュールを実行するための第1スレッドが生成される毎に、OSレイヤの第2スレッドを生成して当該第1スレッドに1対1で対応付ける対応付け手段と、
ソフトウェアモジュール毎に第2スレッドをまとめたグループを管理するグループ管理手段と、
前記グループの中から制御対象グループおよび当該制御対象グループのCPU使用率の設定値を受け付ける受付手段と、
前記CPU使用率の設定値に基づいて、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する算出手段と、
前記CPU使用時間を用いて、前記制御対象グループのCPU使用率を制御する制御手段と、を備えること
を特徴とするCPU使用率制御装置。
A CPU usage rate control device for controlling the CPU usage rate of a software module operating in an execution environment of a single process,
In the execution environment layer, each time a first thread for executing a software module is generated, an association unit that generates a second thread of the OS layer and associates the first thread with the first thread one-to-one;
Group management means for managing a group in which the second threads are grouped for each software module;
A receiving unit that receives a set value of a control target group and a CPU usage rate of the control target group from the group;
Calculation means for calculating a CPU usage time of a second thread belonging to the control target group based on a set value of the CPU usage rate;
And a control unit that controls the CPU usage rate of the control target group using the CPU usage time.
請求項1記載のCPU使用率制御装置であって、
前記グループ管理手段は、前記実行環境以外のプロセスおよび非制御対象グループを、所定のグループで管理すること
を特徴とするCPU使用率制御装置。
The CPU usage rate control device according to claim 1,
The group management means manages a process other than the execution environment and a non-control target group in a predetermined group.
請求項2記載のCPU使用率制御装置であって、
前記算出手段は、前記制御対象グループのCPU使用時間と、前記所定のグループに設定されたCPU使用時間の比が、前記制御対象グループのCPU使用率の設定値と、前記所定のグループが利用可能なCPU使用率の比と同じになるように、前記制御対象グループに属する第2スレッドのCPU使用時間を算出すること
を特徴とするCPU使用率制御装置。
The CPU usage rate control device according to claim 2,
The calculation means can use a ratio between the CPU usage time of the control target group and the CPU usage time set for the predetermined group, the set value of the CPU usage rate of the control target group, and the predetermined group. The CPU usage rate control device calculates the CPU usage time of the second thread belonging to the control target group so that the CPU usage rate ratio is the same.
請求項1から3のいずれか一項に記載のCPU使用率制御装置であって、
前記実行環境は、JavaVirtualMachineであって、
前記ソフトウェアモジュールは、OSGiバンドルであること
を特徴とするCPU使用率制御装置。
A CPU usage rate control device according to any one of claims 1 to 3,
The execution environment is Java Virtual Machine,
The CPU usage rate control device, wherein the software module is an OSGi bundle.
コンピュータが行う、単一プロセスの実行環境で動作するソフトウェアモジュールのCPU使用率を制御するCPU使用率制御方法であって、
前記実行環境レイヤにおいて、ソフトウェアモジュールを実行するための第1スレッドが生成される毎に、OSレイヤの第2スレッドを生成して当該第1スレッドに1対1で対応付ける対応付けステップと、
ソフトウェアモジュール毎に第2スレッドをまとめたグループを管理するグループ管理ステップと、
前記グループの中から制御対象グループおよび当該制御対象グループのCPU使用率の設定値を受け付ける受付ステップと、
前記CPU使用率の設定値に基づいて、前記制御対象グループに属する第2スレッドのCPU使用時間を算出する算出ステップと、
前記CPU使用時間を用いて、前記制御対象グループのCPU使用率を制御する制御ステップと、を行うこと
を特徴とするCPU使用率制御方法。
A CPU usage rate control method for controlling the CPU usage rate of a software module operating in a single process execution environment performed by a computer,
In the execution environment layer, each time a first thread for executing a software module is generated, an association step of generating a second thread of the OS layer and associating the first thread with the first thread one-to-one;
A group management step for managing a group in which the second threads are grouped for each software module;
Receiving a control target group and a set value of the CPU usage rate of the control target group from the group;
A calculation step of calculating a CPU usage time of a second thread belonging to the control target group based on a set value of the CPU usage rate;
And a control step of controlling the CPU usage rate of the group to be controlled using the CPU usage time.
請求項5記載のCPU使用率制御方法であって、
前記グループ管理ステップは、前記実行環境以外のプロセスおよび非制御対象グループを、所定のグループで管理すること
を特徴とするCPU使用率制御方法。
The CPU usage rate control method according to claim 5,
In the group management step, a process other than the execution environment and a non-control target group are managed by a predetermined group.
請求項6記載のCPU使用率制御方法であって、
前記算出ステップは、前記制御対象グループのCPU使用時間と、前記所定のグループに設定されたCPU使用時間の比が、前記制御対象グループのCPU使用率の設定値と、前記所定のグループが利用可能なCPU使用率の比と同じになるように、前記制御対象グループに属する第2スレッドのCPU使用時間を算出すること
を特徴とするCPU使用率制御方法。
The CPU usage rate control method according to claim 6,
In the calculation step, a ratio between the CPU usage time of the control target group and the CPU usage time set for the predetermined group is the set value of the CPU usage rate of the control target group and the predetermined group is available. A CPU usage rate control method, comprising: calculating a CPU usage time of a second thread belonging to the control target group so that the CPU usage rate ratio is the same.
請求項1から4のいずれか一項に記載のCPU使用率制御装置としてコンピュータを機能させるためのCPU使用率制御プログラム。   A CPU usage rate control program for causing a computer to function as the CPU usage rate control device according to any one of claims 1 to 4.
JP2013116792A 2013-06-03 2013-06-03 Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program Pending JP2014235579A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013116792A JP2014235579A (en) 2013-06-03 2013-06-03 Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013116792A JP2014235579A (en) 2013-06-03 2013-06-03 Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program

Publications (1)

Publication Number Publication Date
JP2014235579A true JP2014235579A (en) 2014-12-15

Family

ID=52138233

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013116792A Pending JP2014235579A (en) 2013-06-03 2013-06-03 Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program

Country Status (1)

Country Link
JP (1) JP2014235579A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042398B2 (en) 2018-07-09 2021-06-22 Samsung Electronics Co., Ltd. System and method for guest operating system using containers

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042398B2 (en) 2018-07-09 2021-06-22 Samsung Electronics Co., Ltd. System and method for guest operating system using containers

Similar Documents

Publication Publication Date Title
US8595361B2 (en) Virtual machine software license management
US10491704B2 (en) Automatic provisioning of cloud services
US11467874B2 (en) System and method for resource management
RU2016136180A (en) DYNAMIC RESOURCE MANAGEMENT FOR MULTI-TASK APPLICATIONS
US20180041388A1 (en) Method and Control System for Controlling Provisioning of a Service in a Network
JP2017107274A (en) Virtual machine adding method, information processing unit, and virtual machine adding system
US9921882B2 (en) Information processing system, deployment method, processing device, and deployment device
JP6107801B2 (en) Information processing apparatus, information processing system, task processing method, and program
US9699053B2 (en) IT system infrastructure prediction based on epidemiologic algorithm
CN112035220A (en) Processing method, device and equipment for operation task of development machine and storage medium
US10305817B1 (en) Provisioning system and method for a distributed computing environment using a map reduce process
US9195515B1 (en) Method and system for process load balancing
US9882787B2 (en) Service management in appliance-based solutions
JP2014235579A (en) Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program
JP6303486B2 (en) Information processing system, monitoring method, and program
JP2015022385A (en) Virtual system and method for controlling virtual system
JP5847746B2 (en) CPU usage rate control device, CPU usage rate control method, and CPU usage rate control program
JP2018084994A (en) Control system and control method
JP2014235580A (en) Cpu usage rate control device, cpu usage rate control method, and cpu usage rate control program
CN109218259B (en) License management method and device, APPLM functional entity and computer readable storage medium
JP2016051395A (en) Image forming apparatus and resource management method
US11422842B2 (en) Virtual machine operation management in computing devices
JP2016153986A (en) Computer resource use controller
US9722946B1 (en) Apparatus and method for a script execution control environment
JP2011141716A (en) Virtual machine monitoring system and method, and program for virtual machine monitoring