Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7736993B2 - プログラムおよび管理方法 - Google Patents
[go: Go Back, main page]

JP7736993B2 - プログラムおよび管理方法 - Google Patents

プログラムおよび管理方法

Info

Publication number
JP7736993B2
JP7736993B2 JP2021126671A JP2021126671A JP7736993B2 JP 7736993 B2 JP7736993 B2 JP 7736993B2 JP 2021126671 A JP2021126671 A JP 2021126671A JP 2021126671 A JP2021126671 A JP 2021126671A JP 7736993 B2 JP7736993 B2 JP 7736993B2
Authority
JP
Japan
Prior art keywords
group
core
energy consumption
process group
processor core
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.)
Active
Application number
JP2021126671A
Other languages
English (en)
Other versions
JP2023021662A (ja
Inventor
聡 平井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021126671A priority Critical patent/JP7736993B2/ja
Priority to US17/717,188 priority patent/US11822408B2/en
Publication of JP2023021662A publication Critical patent/JP2023021662A/ja
Application granted granted Critical
Publication of JP7736993B2 publication Critical patent/JP7736993B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)

Description

本発明はプログラムおよび管理方法に関する。
現在、情報処理装置が備えるプロセッサはマルチコア化されていることが多い。プロセッサは、複数のプロセッサコアを有し、複数のプロセッサコアを用いて複数の演算を並列に実行し得る。ここで、プロセッサの動作を制御する技術が考えられている。
例えば、プロセスごとに実行命令数やメモリアクセス数といったイベントの発生回数をカウントする情報処理装置の提案がある。提案の情報処理装置は、プロセス切り替え発生時、切り替え後プロセスに対するイベントの発生回数のカウント値と閾値との比較結果に基づいて、プロセッサにおけるオーバークロック機能の有効または無効を決定し、クロック周波数を制御する。これにより、プロセスの動作特性に応じて、プロセッサにおける処理効率を効果的に向上させる一方で、無駄な消費電力が抑制される。
また、同程度の負荷の処理を実行するなどのように互いに相関のある論理プロセッサ同士をグループ化して管理するマルチプロセッサシステムの提案もある。提案のマルチプロセッサシステムは、物理プロセッサへの割り当て対象となっている論理プロセッサが属する論理プロセッサグループに属する論理プロセッサの電力状態情報に基づいて、論理プロセッサが割り当てられる物理プロセッサの電力状態情報を決定する。
特開2012-164006号公報 特開2012-181627号公報
上記提案のように、クロック周波数変更などの動作制御により、プロセッサで単位時間に消費されるエネルギーの制御やプロセッサの処理効率の向上を図ることが考えられる。
ところで、情報処理装置は、ジョブ、仮想マシンまたはコンテナなどに対応する一群のプロセスのグループ、すなわち、プロセスグループとして各プロセスを管理することがある。例えば、情報処理装置のオペレーティングシステムは、ある時点において存在する複数のプロセスグループを管理し得る。
しかし、上記提案のようにプロセスごとのイベントのカウント値と閾値との比較結果でプロセッサ単位のクロック周波数を制御する方法では、プロセスグループごとにプロセッサを効率的に利用するのが難しいことがある。例えば、あるプロセスグループのプロセスを実行するプロセッサコアと、他のプロセスグループのプロセスを実行する他のプロセッサコアとが同一プロセッサに存在する場合に、各プロセスグループに対して細かなプロセッサの動作制御を行えないという問題がある。
1つの側面では、本発明は、プロセッサを効率的に利用可能にするプログラムおよび管理方法を提供することを目的とする。
1つの態様では、プログラムが提供される。このプログラムは、コンピュータに、コンピュータが有する1または複数のプロセッサに含まれる複数のプロセッサコアのうちの第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、第1プロセスの実行時間と実行時間の間の第1プロセッサコアの消費エネルギーとを取得し、それぞれが1以上のプロセスが属するグループである複数のプロセスグループのうち、第1プロセスが属する第1プロセスグループに属する1以上のプロセスを特定し、特定した1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、第1プロセスグループの実行に伴う単位時間当たりの消費エネルギーを示す指標を計算し、第1プロセスグループに属するプロセスを次に実行開始する際に、第1プロセスグループに対して計算した指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作を制御する、処理を実行させる。
また、1つの態様では、管理方法が提供される。
1つの側面では、プロセッサを効率的に利用可能にすることができる。
第1の実施の形態の情報処理装置を説明する図である。 第2の実施の形態の情報処理装置のハードウェア例を示す図である。 CPUのハードウェア例を示す図である。 PMUのハードウェア例を示す図である。 情報処理装置の機能例を示す図である。 プロセス消費電力管理テーブルの例を示す図である。 プロセスグループ消費電力管理テーブルの例を示す図である。 切り替え元プロセス管理処理の例を示すフローチャートである。 切り替え先プロセス管理処理の例を示すフローチャートである。 管理情報の遷移の第1の例を示す図である。 管理情報の遷移の第2の例を示す図である。 コアに対するプロセスの割り当て例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、メモリ11とプロセッサ12とを有する。メモリ11は、例えばRAM(Random Access Memory)などの揮発性記憶装置である。プロセッサ12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)などを含み得る。プロセッサ12は、複数のプロセッサコアを有する。情報処理装置10は、複数のプロセッサを有してもよい。1つのプロセッサコアは、1つの時点では1つのプロセスが割り当てられる。1つのプロセッサコアは、時分割で、複数のプロセスが割り当てられる。
メモリ11は、プロセスグループ情報11a、プロセス実行情報11bおよび指標計算結果情報11cを記憶する。プロセスグループ情報11aは、プロセスグループとプロセスグループに属するプロセスとを対応付ける情報である。プロセスグループは、プロセスのグループである。プロセスグループは、ジョブ、アプリケーション、仮想マシンまたはコンテナなどに対応する一群のプロセスに相当する。プロセスグループには1以上のプロセスが属する。
プロセスグループは、例えば、情報処理装置10で実行されるオペレーティングシステムにより管理される。プロセスグループは、プロセスグループの識別情報であるプロセスグループID(IDentifier)により識別される。プロセスグループID「gn」のプロセスグループは、プロセスグループgnと表記される。nは自然数である。プロセスは、プロセスの識別情報であるプロセスIDにより識別される。プロセスID「pn」のプロセスは、プロセスpnと表記される。
例えば、プロセスグループ情報11aは、プロセスグループg1に、プロセスp1,p2が属することを示す。また、プロセスグループ情報11aは、プロセスグループg2に、プロセスp3が属することを示す。プロセスグループ情報11aは他のプロセスグループの情報も含み得る。プロセスグループ情報11aは、オペレーティングシステムにより生成される情報でもよいし、オペレーティングシステムから取得される情報でもよい。
プロセス実行情報11bは、プロセスとプロセスの実行情報とを対応付ける情報である。プロセスの実行情報は、プロセスの実行時間とプロセスの実行に伴うプロセッサコア単位の消費エネルギーとを含む。プロセスの実行時間は、あるプロセッサコアによる該当のプロセスの直前の実行時間である。消費エネルギーは、プロセッサコアで消費されたエネルギーである。エネルギーの単位は、例えばジュール(J)である。
指標計算結果情報11cは、プロセスグループごとの単位時間当たりの消費エネルギーの指標の計算結果を保持する情報である。当該指標は、プロセス実行情報11bに保持されるプロセスごとの実行情報に基づいてプロセッサ12により計算される。単位時間は1秒でもよい。すなわち、指標の単位は、ワット(W)(=ジュール毎秒(J/s))でもよい。指標の単位にワットを用いる場合、プロセスグループごとの単位時間当たりの消費エネルギーの指標は、プロセスグループごとの消費電力の指標となる。
プロセッサ12は、プロセッサコア12a,12b,12c,12dを有する。プロセッサ12は、プロセッサコア12a~12dを用いて複数のプロセスを並列に実行する。プロセッサ12は、プロセッサコア12a~12dにおける動作周波数や電圧を個別に制御可能である。動作周波数の制御は、動作クロックの周波数の制御とも言える。プロセッサ12は、プロセッサコア12a~12dのうちの一部のプロセッサコアを用いて、下記に示すプロセッサコア12a~12dの動作制御を行う。ただし、プロセッサ12は、プロセッサコア12a~12dの動作制御を行うプロセッサコアを、プロセッサコア12a~12dとは別個に有してもよい。
プロセッサ12は、第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、第1プロセスの実行時間と当該実行時間の間の第1プロセッサコアの消費エネルギーとを取得する。プロセッサ12は、取得した実行時間と消費エネルギーとを、第1プロセスのプロセスIDに対応付けて、プロセス実行情報11bに記録する。
例えば、プロセッサ12は、プロセッサコア12cにより実行するプロセスをプロセスp1から他のプロセスに切り替える際に、プロセスp1の実行時間と当該実行時間の間のプロセッサコア12cの消費エネルギーとを取得する。プロセッサ12は、例えば、オペレーティングシステムが管理するプロセスの実行時間のタイマから、当該実行時間を取得してもよい。当該タイマは、プロセスp1を実行開始してから切り替えまでの実行時間を計測する。あるいは、プロセッサ12は、例えば、オペレーティングシステムが管理するプロセスの実行開始時刻と、当該プロセスを他のプロセスに切り替える時点の時刻との差分により、実行時間を求めてもよい。
また、プロセッサ12は、プロセッサコアの消費エネルギーを、当該プロセッサコアが有する性能モニタリングカウンタから取得し得る。性能モニタリングカウンタは、該当のプロセッサコアで一定のエネルギーが消費された際に発生するイベントの発生回数をカウントする。プロセッサ12は、例えば、プロセスp1をプロセッサコア12cで実行開始する際にプロセッサコア12cの性能モニタリングカウンタのカウント値をリセットする。そして、プロセッサ12は、プロセッサコア12cで実行するプロセスをプロセスp1から他のプロセスに切り替える際に、プロセッサコア12cの性能モニタリングカウンタのカウント値を読み取り、当該カウント値に基づいて消費エネルギーを取得する。
例えば、プロセッサ12は、プロセスp1に対して実行時間t1および消費エネルギーe1を取得し、プロセス実行情報11bに記録する。
プロセッサ12は、第1プロセスが属する第1プロセスグループに属する1以上のプロセスを特定する。例えば、プロセッサ12は、プロセスグループ情報11aに基づいて、プロセスp1が属するプロセスグループg1に属するプロセスp1,p2を特定する。
プロセッサ12は、特定した1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、第1プロセスグループの実行に伴う単位時間当たりの消費エネルギーを示す指標を計算する。プロセッサ12は、計算した指標をプロセスグループIDに対応付けて、指標計算結果情報11cに記録する。
当該指標は、例えば、該当のプロセスグループに属する各プロセスによる単位時間当たりの消費エネルギーの積算値(総和)である。あるいは、当該指標は、該当のプロセスグループに属する各プロセスの単位時間当たりの消費エネルギーの平均値でもよい。更に別の例として、当該指標は、該当のプロセスグループに属する各プロセスに対して記録された消費エネルギーの和を、該当のプロセスグループに属する各プロセスに対して記録された実行時間の和で割った値でもよい。
例えば、プロセッサ12は、プロセス実行情報11bに記録されているプロセスp1,p2それぞれの実行時間t1,t2および消費エネルギーe1,e2に基づいて、プロセスグループg1に対する指標v1を計算する。プロセッサ12は、プロセスグループg1に対応付けて、指標計算結果情報11cに指標v1を記録する。
プロセッサ12は、第1プロセスグループに属するプロセスを次に実行開始する際に、第1プロセスグループに対して計算した指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作を制御する。例えば、プロセッサ12は、プロセスグループg1に属するプロセスp2を次に実行開始する際に、プロセスグループg1に対して計算した指標v1と閾値との比較に応じて、プロセスp2を割り当てるプロセッサコア12dの動作を制御する。閾値は、複数のプロセスグループに対して一律の値が定められてもよいし、複数のプロセスグループそれぞれに対して別個の値が定められてもよい。閾値は、メモリ11に予め格納される。
プロセッサコアの動作の制御の例としては、プロセッサコアにおける動作周波数の変更および電圧の変更の少なくとも一方が考えられる。また、プロセッサコアの動作の制御は、プロセッサコアの消費電力を低減する制御でもよい。
より具体的には、プロセッサ12は、例えば、プロセッサ12は、指標v1が閾値よりも大きい場合に、プロセッサコア12dにおける動作周波数および電圧の少なくとも一方を下げることで、プロセッサコア12dによる消費電力を低減させてもよい。あるいは、プロセッサ12は、指標v1が閾値よりも小さい場合に、プロセッサコア12dにおける動作周波数または電圧を上げることで、プロセッサコア12dによる演算を高速化させてもよい。
情報処理装置10によれば、第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、第1プロセスの実行時間と実行時間の間の第1プロセッサコアの消費エネルギーとが取得される。複数のプロセスグループのうち、第1プロセスが属する第1プロセスグループに属する1以上のプロセスが特定される。特定した1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、第1プロセスグループの実行に伴う単位時間当たりの消費エネルギーを示す指標が計算される。第1プロセスグループに属するプロセスを次に実行開始する際に、第1プロセスグループに対して計算した指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作が制御される。
これにより、情報処理装置10は、プロセッサ12を効率的に利用可能にすることができる。
例えば、情報処理装置10は、あるプロセスグループのプロセスを実行するプロセッサコアと、他のプロセスグループのプロセスを実行する他のプロセッサコアとが同一プロセッサに存在する場合でも、各プロセスグループに対してプロセッサの動作制御を行える。
また、上記のように、情報処理装置10は、各プロセッサコアの動作周波数や電圧を、プロセスグループに応じて個別に制御可能になる。
このため、例えば、情報処理装置10は、あるプロセスグループの演算による消費電力が過大になることを抑えたり、比較的消費電力が小さいプロセスグループに対する演算を高速化したりすることができる。あるいは、プロセスグループごとの閾値を調整することで、重要な、あるいは優先度の高いプロセスグループに比較的多くの電力資源を利用させるといった制御も可能になる。
また、ジョブ、アプリケーション、仮想マシンまたはコンテナなどに対応するプロセスグループの単位は、ユーザに提供されるサービスの1単位として扱われることがある。このため、情報処理装置10は、プロセスグループ単位にプロセッサの動作制御を可能にすることで、電力効率やユーザのサービス利用時の消費電力に応じた課金額などを考慮した制御を行い易くすることができる。
なお、第1の実施の形態では、プロセッサ12が複数のプロセッサコアを備える例を示したが、プロセッサ12が備えるプロセッサコアの数は1つでもよい。例えば、情報処理装置10は、シングルコアプロセッサを複数有してもよい。この場合も、情報処理装置10は、プロセスグループごとに、情報処理装置10が備える複数のプロセッサを効率的に利用可能にすることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置100は、CPU101,101a,…、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101,101a,…それぞれは、第1の実施の形態のプロセッサ12の一例である。RAM102は、第1の実施の形態のメモリ11の一例である。情報処理装置100は、コンピュータと呼ばれてもよい。
CPU101,101a,…は、プログラムの命令を実行するプロセッサである。CPU101,101a,…は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。CPU101,101a,…は複数のプロセッサコアを含む。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行され得る。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101,101a,…が実行するプログラムやCPU101,101a,…が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力インタフェース105は、情報処理装置100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107は、ネットワーク50に接続され、ネットワーク50を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC107は、無線通信インタフェースでもよい。
図3は、CPUのハードウェア例を示す図である。
CPU101は、コア110,110a,…を有する。コア110,110a,…は、演算を行う演算回路である。CPU101は、コア110,110a,…を用いて、複数のプロセスを並列に実行する。コア110,110a,…それぞれは、プロセッサコアやCPUコアと呼ばれてもよい。例えば、1つのコアが、第1プロセスを実行し、第1プロセスの実行を中断し、次に第2プロセスを実行する、というように、時分割で複数のプロセスを実行し得る。更に、当該コアまたは他のコアが、中断された第1プロセスの実行を再開することもある。
コア110は、性能モニタリング機構(PMU:Performance Monitoring Unit)120および周波数制御回路130を有する。コア110aは、PMU120aおよび周波数制御回路130aを有する。
PMU120は、コア110における各種のイベントの発生回数を計測する。PMU120が計測するイベントは、消費エネルギーに関するイベントを含む。具体的には、PMU120は、コア110における消費エネルギーが一定値に達するごとにイベントを発生させることが可能であり、当該イベントの発生回数を計数するカウンタを有する。
周波数制御回路130は、コア110の動作周波数、すなわち、動作クロックの周波数を制御する。例えば、周波数制御回路130は、コア110の動作周波数を高くしたり、低くしたりする。
PMU120aはPMU120と同様の機能を有する。周波数制御回路130aは周波数制御回路130と同様の機能を有する。また、コア110,110a以外の他のコアもPMUおよび周波数制御回路を有する。
CPU101aを含む他のCPUもCPU101と同様に複数のコアを有する。
図4は、PMUのハードウェア例を示す図である。
PMU120は、カウンタ設定回路121および性能モニタリングカウンタ122,123,…を有する。
カウンタ設定回路121は、性能モニタリングカウンタ122,123,…それぞれでカウントするイベントの識別情報を、性能モニタリングカウンタ122,123,…に設定する。
性能モニタリングカウンタ122,123,…は、コア110において発生したイベントを計数するカウンタである。性能モニタリングカウンタ122,123,…それぞれは、計数対象のイベントの識別情報が設定される。性能モニタリングカウンタ122,123,…それぞれは、設定されたイベントの識別情報に対応するイベントの発生回数を計数する。性能モニタリングカウンタ122,123,…それぞれのカウント値は、当該イベントの発生回数に相当する。
例えば、カウンタ設定回路121は、性能モニタリングカウンタ122に対し、計数対象のイベントとして、「消費エネルギー積算値」を設定する。この場合、性能モニタリングカウンタ122は、コア110で一定のエネルギーが消費されるたびに、カウント値CounterValue1を1ずつ増やす。性能モニタリングカウンタ122のカウント値CounterValue1は、消費エネルギー積算値に対応する値となる。性能モニタリングカウンタ122のカウント値は、コア110に割り当てられるプロセスの切り替え時に、0にリセットされる。
カウンタ設定回路121は、性能モニタリングカウンタ123を含む他の性能モニタリングカウンタに他のイベントの識別情報を設定し、当該他のイベントの発生回数を計数させてもよい。
図5は、情報処理装置の機能例を示す図である。
情報処理装置100は、管理情報記憶部140、OS150、仮想マシン160,160a,…およびコンテナ170,170a,…を有する。管理情報記憶部140には、RAM102やHDD103の記憶領域が用いられる。CPU101は、RAM102に記憶されたプログラムを実行することで、OS150、仮想マシン160,160a,…およびコンテナ170,170a,…の機能を発揮する。
管理情報記憶部140は、管理情報を記憶する。管理情報は、OS150の処理に用いられるデータである。管理情報は、プロセス消費電力管理テーブル141およびプロセスグループ消費電力管理テーブル142を含む。プロセス消費電力管理テーブル141は、プロセスの実行に伴うコアの消費電力を保持するテーブルである。プロセスグループ消費電力管理テーブル142は、プロセスグループ単位のコアの単位時間における消費エネルギーの指標を保持するテーブルである。
OS150は、情報処理装置100におけるハードウェアおよびソフトウェアの動作を制御する。OS150は、情報処理装置100のハードウェアリソースを用いて、仮想マシン160,160a,…およびコンテナ170,170a,…を動作させる。OS150は、仮想マシン160,160a,…およびコンテナ170,170a,…それぞれのプロセスを管理する。当該プロセスは、仮想マシン160,160a,…およびコンテナ170,170a,…それぞれに関して、OS150が管理する処理の実行単位である。
OS150は、スケジューラ180を有する。スケジューラ180は、CPU101,101a,…それぞれの各コアに対するプロセスの割り当てや、各コアの動作周波数の制御を行う。スケジューラ180は、プロセス切り替え部181、消費エネルギー取得部182およびコア周波数制御部183を有する。
プロセス切り替え部181は、仮想マシン160,160a,…およびコンテナ170,170a,…それぞれに含まれるプロセスを、各コアに割り当てる。プロセス切り替え部181は、各コアに割り当てるプロセスの切り替えを行う。
ここで、仮想マシン160,160a,…およびコンテナ170,170a,…それぞれは、ユーザの処理要求の入力などに応じて実行される1以上のプロセスを有する。OS150は、仮想マシン160,160a,…およびコンテナ170,170a,…それぞれをプロセスグループとして管理する。
プロセスグループに属するプロセスの数は、時間の経過に伴い増減する。例えば、あるタイミングにおいて、あるプロセスグループに属するプロセスが新たに生成されたり、別のタイミングにおいて当該プロセスグループに属するプロセスが消滅したりする。プロセス切り替え部181は、1つのコアに対して、複数のプロセスを、時分割で割り当てる。
消費エネルギー取得部182は、CPU101,101a,…それぞれに含まれる各コアのPMUの性能モニタリングカウンタを参照して、当該コアにおける消費エネルギー積算値に対応するカウント値を読み出す。消費エネルギー取得部182は、読み出したカウント値に基づいて、消費エネルギーを取得する。
具体的には、消費エネルギー取得部182は、プロセス切り替え部181によるプロセス切り替え時に、当該プロセスの実行に伴うコアの消費エネルギーと当該プロセスの実行時間とを取得し、プロセス消費電力管理テーブル141に記録する。
消費エネルギー取得部182は、プロセスの実行に伴うコアの消費エネルギーを、当該コアのPMUの性能モニタリングカウンタのカウント値に基づいて取得する。消費エネルギー取得部182は、当該コアにより次のプロセスの実行を開始する直前に、当該コアのPMUの性能モニタリングカウンタのカウント値をリセットする。消費エネルギー取得部182は、OS150により管理されるプロセスの実行時間を計測するタイマを参照して、当該プロセスの直前の実行時間を取得する。消費エネルギー取得部182は、OS150により管理されるプロセスの前回の実行開始時刻と、当該プロセスを他のプロセスに切り替える時点の時刻との差分により、実行時間を求めてもよい。
また、消費エネルギー取得部182は、プロセス消費電力管理テーブル141に基づいて、プロセスグループ単位の単位時間当たりの消費エネルギーの指標を計算する。消費エネルギー取得部182は、計算した指標をプロセスグループ消費電力管理テーブル142に記録する。単位時間当たりの消費エネルギーの指標は、消費電力の指標でもよい。単位時間当たりの消費エネルギーの指標は、例えば平均消費電力である。単位時間当たりの消費エネルギーの指標は、平均消費電力量でもよい。平均消費電力量の単位は、ワット(W)と時間(単位時間の長さ)の積となる。
コア周波数制御部183は、プロセスグループ消費電力管理テーブル142に基づいて、CPU101,101a,…それぞれに含まれる各コアの動作を制御する。例えば、コア周波数制御部183は、消費エネルギーの指標が閾値以上であるプロセスグループに属するプロセスを割り当てるコアの消費電力を低減させる制御を行う。消費電力を低減させる制御は、例えば、該当のコアの動作周波数および電圧の少なくとも一方を低減させることである。
仮想マシン160,160a,…それぞれは、情報処理装置100のOS150上で動作する仮想的なコンピュータである。情報処理装置100は、仮想マシンに対して、物理マシンと呼ばれてもよい。
また、コンテナ170,170a,…それぞれは、1以上のプロセスの隔離された実行環境である。例えば、コンテナ型仮想化では、ソフトウェアの実行に用いられるライブラリなどの資源を纏めたコンテナが、ソフトウェアの実行環境として定義される。例えば、情報処理装置100は、OS150のカーネル上でコンテナを起動し、コンテナを用いてソフトウェアを実行する。
図6は、プロセス消費電力管理テーブルの例を示す図である。
プロセス消費電力管理テーブル141は、管理情報記憶部140に記憶される。プロセス消費電力管理テーブル141は、プロセスID、プロセスグループID、消費エネルギー、実行時間および平均消費電力の項目を含む。
プロセスIDの項目には、プロセスIDが登録される。プロセスグループIDの項目には、該当のプロセスIDのプロセスが属するプロセスグループのプロセスグループIDが登録される。消費エネルギーの項目には、プロセスの実行に伴う消費エネルギーが登録される。消費エネルギーの単位は、例えば、ミリジュール(mJ)である。実行時間の項目には、プロセスの実行時間が登録される。プロセスの実行時間は、消費エネルギーのモニタリングが行われた時間に相当する。実行時間の単位は、例えば、ミリ秒(msec)である。平均消費電力の項目には、プロセスの実行に伴う平均消費電力が登録される。平均消費電力の単位は、例えば、ワット(W)である。平均消費電力は、(消費エネルギー/実行時間)で計算される。
例えば、プロセス消費電力管理テーブル141は、プロセスID「100」、プロセスグループID「1」、消費エネルギー「240」、実行時間「100」、平均消費電力「2.4」のレコードを含む。このレコードは、プロセスID「100」のプロセスがプロセスグループID「1」のプロセスグループに属し、当該プロセスの消費エネルギーが240mJ、実行時間が100msecであり、平均消費電力が240(mJ)/100(msec)=2.4Wであることを示す。
プロセス消費電力管理テーブル141は、他のプロセスのレコードも登録される。プロセス消費電力管理テーブル141は、第1の実施の形態のプロセスグループ情報11aおよびプロセス実行情報11bの一例である。
ここで、プロセスは生成されてから消滅するまでに、実行状態、実行可能状態および待ち状態という3つの状態を取り得る。すなわち、プロセスは、時系列に、実行、実行中断、実行、実行中断というように、実行が途中で中断されたり、実行が再開されたりする。これに対し、消費エネルギー取得部182は、同一のプロセスIDに対して、最新の実行時における消費エネルギー、実行時間および平均消費電力をプロセス消費電力管理テーブル141に記録する。このように、消費エネルギー取得部182は、各プロセスの実行に伴う単位時間の消費エネルギーの最新の値を保持してもよい。これにより、消費エネルギー取得部182は、後述のプロセスグループ単位の消費エネルギーの指標を、適切に得ることができる。各プロセスに対する古い消費エネルギーの情報は、現在の消費エネルギーとは異なる可能性が高いからである。
消費エネルギー取得部182は、新たなプロセスが生成された場合に、プロセス消費電力管理テーブル141に該当のプロセスのレコードを追加する。消費エネルギー取得部182は、追加時におけるレコードに、プロセスID、プロセスグループIDの値を登録する。なお、消費エネルギー取得部182は、プロセスIDとプロセスグループIDとの対応関係を、OS150から取得する。消費エネルギー取得部182は、追加時におけるレコードの消費エネルギー、実行時間および平均消費電力の項目を、設定なしとする。消費エネルギー取得部182は、消費エネルギー、実行時間および平均消費電力の項目が設定なしのレコードを、プロセスグループ単位の消費エネルギーの指標の計算に用いない。また、消費エネルギー取得部182は、既存のプロセスが消滅する場合、プロセス消費電力管理テーブル141から該当のプロセスのレコードを削除する。
更に、消費エネルギー取得部182は、直近の所定時間の間に実行されたプロセスの情報のみをプロセス消費電力管理テーブル141に保持してもよい。当該所定時間としては、5分間や10分間などが考えられる。このようにして、消費エネルギー取得部182は、各コアについて単位時間の消費エネルギーの最新の値を保持してもよい。これにより、消費エネルギー取得部182は、後述のプロセスグループ単位の消費エネルギーの指標を、適切に得ることができる。各プロセスに対する古い消費エネルギーの情報は、現在の消費エネルギーとは異なる可能性が高いからである。
図7は、プロセスグループ消費電力管理テーブルの例を示す図である。
プロセスグループ消費電力管理テーブル142は、管理情報記憶部140に記憶される。プロセスグループ消費電力管理テーブル142は、プロセスグループID、プロセスIDリスト、平均消費電力および閾値の項目を含む。
プロセスグループIDの項目には、プロセスグループIDが登録される。プロセスIDリストの項目には、該当のプロセスグループIDのプロセスグループに属するプロセスのプロセスIDのリスト、すなわち、プロセスIDリストが登録される。平均消費電力の項目には、プロセスグループIDに対して計算された平均消費電力が登録される。平均消費電力の単位は、例えば、ワット(W)である。閾値の項目には、該当のプロセスグループIDに対する閾値が登録される。閾値の単位は、例えば、ワット(W)である。
ここで、消費エネルギー取得部182は、あるプロセスグループに関して、プロセス消費電力管理テーブル141に記録されているプロセスの平均消費電力の総和を、プロセスグループ単位の平均消費電力とする。
例えば、プロセスグループID「1」のプロセスグループにはプロセスID「100」のプロセスおよびプロセスID「101」のプロセスが属する。プロセス消費電力管理テーブル141によれば、プロセスID「100」のプロセスの平均消費電力は2.4Wである。また、プロセスID「101」のプロセスの平均消費電力は2.5Wである。よって、消費エネルギー取得部182は、プロセス消費電力管理テーブル141に対して、プロセスグループID「1」の平均消費電力を2.4+2.5=4.9Wと計算する。
例えば、プロセスグループ消費電力管理テーブル142は、プロセスグループID「1」、プロセスIDリスト「100,101」、平均消費電力「4.9」、閾値「5」のレコードを含む。このレコードは、プロセスグループID「1」のプロセスグループには、プロセスID「100」のプロセスとプロセスID「101」のプロセスとが属することを示す。また、当該レコードは、当該プロセスグループの平均消費電力が4.9Wであり、閾値が5Wであることを示す。
プロセスグループ消費電力管理テーブル142には、他のプロセスグループのレコードも登録される。プロセスグループ消費電力管理テーブル142は、第1の実施の形態の指標計算結果情報11cの一例である。
次に、情報処理装置100の処理手順を説明する。情報処理装置100は、あるコアにより実行していたプロセスを他のプロセスに切り替える際に、次の手順を実行する。切り替え元のプロセスは、切り替え元プロセスと表記される。切り替え先のプロセスは、切り替え先プロセスと表記される。
一例として、プロセス切り替え部181がコア110に対するプロセス切り替えを行う場合を例示する。情報処理装置100は、他のコアに対するプロセス切り替えを行う場合も、他のコアに対して下記と同様の手順を実行する。
図8は、切り替え元プロセス管理処理の例を示すフローチャートである。
(S10)消費エネルギー取得部182は、PMU120の性能モニタリングカウンタ122のカウント値を読み出し、プロセス実行時の消費エネルギーを取得し、プロセス消費電力管理テーブル141に記録する。前述のように、PMU120の性能モニタリングカウンタ122は、コア110により一定のエネルギーE(J)が消費されたというイベントの発生回数Cを計数する。したがって、消費エネルギー取得部182は、EとCとの積により、切り替え元プロセスの実行に伴う消費エネルギーを得ることができる。なお、消費エネルギー取得部182は、切り替え元プロセスのプロセスIDと、切り替え元プロセスを実行していたコア110の情報をプロセス切り替え部181から取得することで、切り替え元プロセスと切り替え元プロセスを実行していたコア110を特定する。消費エネルギー取得部182は、カウント値を読み出した後、性能モニタリングカウンタ122のカウント値を0にリセットする。
(S11)消費エネルギー取得部182は、タイマを読み出し、プロセスの実行時間を取得し、プロセス消費電力管理テーブル141に記録する。例えば、消費エネルギー取得部182は、OS150が管理するタイマに基づいて、切り替え元プロセスの実行時間を取得する。消費エネルギー取得部182は、OS150により管理されるプロセスの前回の実行開始時刻と、当該プロセスを他のプロセスに切り替える時点の時刻との差分により、実行時間を求めてもよい。
(S12)消費エネルギー取得部182は、ステップS10で記録した消費エネルギーと、ステップS11で記録した実行時間とから、プロセスの平均消費電力を算出し、プロセス消費電力管理テーブル141に記録する。消費エネルギー取得部182は、消費エネルギー/実行時間を、切り替え元プロセスの平均消費電力として計算する。
(S13)消費エネルギー取得部182は、プロセスグループ消費電力管理テーブル142の平均消費電力を更新する。具体的には、消費エネルギー取得部182は、プロセス消費電力管理テーブル141に基づいて、ステップS12で平均消費電力を記録したプロセスが属するプロセスグループを特定する。消費エネルギー取得部182は、特定したプロセスグループに対し、プロセス消費電力管理テーブル141に基づいて平均消費電力を計算し、プロセスグループ消費電力管理テーブル142に記録する。一例では、消費エネルギー取得部182は、あるプロセスグループに関して、プロセス消費電力管理テーブル141に記録されている当該プロセスグループに属するプロセスの平均消費電力の総和を、プロセスグループ単位の平均消費電力とする。そして、消費エネルギー取得部182は、切り替え元プロセス管理処理を終了する。
図9は、切り替え先プロセス管理処理の例を示すフローチャートである。
(S20)コア周波数制御部183は、プロセスグループ消費電力管理テーブル142から切り替え先プロセスが属するプロセスグループの平均消費電力と閾値とを読み出す。なお、コア周波数制御部183は、切り替え先プロセスのプロセスIDと、切り替え先プロセスが割り当てられるコア110の情報をプロセス切り替え部181から取得することで、切り替え先プロセスと切り替え先プロセスが割り当てられるコア110を特定する。
(S21)コア周波数制御部183は、ステップS20で読み出した平均消費電力が、ステップS20で読み出した閾値以上であるか否かを判定する。平均消費電力が閾値以上の場合、コア周波数制御部183は、ステップS22に処理を進める。平均消費電力が閾値未満の場合、コア周波数制御部183は、ステップS23に処理を進める。
(S22)コア周波数制御部183は、コア110のコア周波数を低減させる。具体的には、コア周波数制御部183は、通常の動作周波数よりも低い動作周波数での動作を周波数制御回路130aに指示する。周波数制御回路130aは、当該指示を受け付けると、コア110の動作周波数を通常の動作周波数よりも低くする。そして、コア周波数制御部183は、ステップS24に処理を進める。
(S23)コア周波数制御部183は、コア110を通常のコア周波数に設定する。具体的には、コア周波数制御部183は、通常の動作周波数での動作を周波数制御回路130aに指示する。周波数制御回路130aは、当該指示を受け付けると、コア110の動作周波数を通常の動作周波数とする。そして、コア周波数制御部183は、ステップS24に処理を進める。
(S24)プロセス切り替え部181は、コア110による切り替え先プロセスの実行を開始させる。コア110は、プロセス切り替え部181により割り当てられたプロセスを実行する。そして、プロセス切り替え部181は、切り替え先プロセス管理処理を終了する。
なお、切り替え先プロセス管理処理は、プロセス切り替え時、消費エネルギー取得部182によるプロセスグループ消費電力管理テーブル142の更新後に、実行されてもよい。あるいは、切り替え先プロセス管理処理は、プロセス切り替え時、消費エネルギー取得部182によるプロセスグループ消費電力管理テーブル142の更新前に、実行されてもよい。
また、コア周波数制御部183は、ステップS22の動作周波数の低減により、コア110の消費電力を低減させることができる。コア周波数制御部183は、動作周波数の低減に代えて、または、動作周波数の低減と併せて、コア110に供給する電圧を通常の電圧よりも低減させることで、コア110の消費電力を低減させてもよい。
次に、プロセス切り替えに伴う管理情報の具体的な遷移例を説明する。以下では、切り替え先プロセス管理処理が、プロセス切り替え時、消費エネルギー取得部182によるプロセスグループ消費電力管理テーブル142の更新後に、実行される例を示す。
図10は、管理情報の遷移の第1の例を示す図である。
プロセス切り替え部181は、プロセス切り替えにより、コア110で実行されていたプロセスID「100」のプロセスの実行を中断させ、プロセスID「101」のプロセスをコア110に実行させるものとする。すなわち、切り替え元プロセスは、プロセスID「100」のプロセスである。切り替え先プロセスは、プロセスID「101」のプロセスである。
例えば、消費エネルギー取得部182は、プロセスID「100」のプロセスに関して、消費エネルギー260mJ、実行時間100msを取得する。この場合、消費エネルギー取得部182は、プロセスID「100」に対応付けて、消費エネルギー260mJおよび実行時間100msを、プロセス消費電力管理テーブル141に記録する。また、消費エネルギー取得部182は、プロセスID「100」に対して、平均消費電力260/100=2.6Wを、プロセス消費電力管理テーブル141に記録する。これにより、消費エネルギー取得部182は、プロセス消費電力管理テーブル141を、プロセス消費電力管理テーブル141aに更新する。
消費エネルギー取得部182は、プロセス消費電力管理テーブル141aにおけるプロセスID「100」のレコードの更新に応じて、当該プロセスID「100」のプロセスが属するプロセスグループ単位の平均消費電力を更新する。
具体的には、消費エネルギー取得部182は、プロセス消費電力管理テーブル141aに基づいて、プロセスID「100」のプロセスが属するプロセスグループのプロセスグループID「1」を特定する。そして、消費エネルギー取得部182は、プロセス消費電力管理テーブル141aに基づいて、プロセスグループID「1」のプロセスグループに属するプロセスのプロセスID「100」、「101」を特定する。
そして、消費エネルギー取得部182は、プロセス消費電力管理テーブル141aに記録されているプロセスID「100」、「101」それぞれに対応する平均消費電力の和2.6+2.5=5.1Wを求める。消費エネルギー取得部182は、プロセスグループID「1」に対して、プロセスIDリスト「100,101」と平均消費電力5.1Wとを、プロセスグループ消費電力管理テーブル142に記録する。これにより、消費エネルギー取得部182は、プロセスグループ消費電力管理テーブル142を、プロセスグループ消費電力管理テーブル142aに更新する。
コア周波数制御部183は、プロセスグループ消費電力管理テーブル142aに基づいて、切り替え先プロセスのプロセスID「101」に対し、当該切り替え先プロセスが属するプロセスグループのプロセスグループID「1」を特定する。コア周波数制御部183は、プロセスグループ消費電力管理テーブル142aのプロセスグループID「1」のレコードを参照して、平均消費電力5.1Wと閾値5Wとを取得する。コア周波数制御部183は、平均消費電力5.1Wと閾値5Wとを比較し、平均消費電力5.1Wが、閾値5W以上であると判定する。すると、コア周波数制御部183は、コア110の動作周波数を通常の動作周波数よりも低減させる設定を行う。その後、プロセス切り替え部181は、プロセスID「101」の切り替え先プロセスをコア110により実行開始させる。コア110は、通常の動作周波数よりも低い動作周波数で、プロセスID「101」のプロセスを実行する。
図11は、管理情報の遷移の第2の例を示す図である。
上記に続いて、プロセス切り替え部181は、プロセス切り替えにより、コア110で実行されていたプロセスID「101」のプロセスの実行を中断させ、プロセスID「100」のプロセスをコア110に実行させるものとする。すなわち、切り替え元プロセスは、プロセスID「101」のプロセスである。切り替え先プロセスは、プロセスID「100」のプロセスである。
例えば、消費エネルギー取得部182は、プロセスID「101」のプロセスに関して、消費エネルギー230mJ、実行時間100msを取得する。この場合、消費エネルギー取得部182は、プロセスID「101」に対応付けて、消費エネルギー230mJおよび実行時間100msを、プロセス消費電力管理テーブル141aに記録する。また、消費エネルギー取得部182は、プロセスID「101」に対して、平均消費電力230/100=2.3Wを、プロセス消費電力管理テーブル141aに記録する。これにより、消費エネルギー取得部182は、プロセス消費電力管理テーブル141aを、プロセス消費電力管理テーブル141bに更新する。
消費エネルギー取得部182は、プロセス消費電力管理テーブル141bにおけるプロセスID「101」のレコードの更新に応じて、当該プロセスID「101」のプロセスが属するプロセスグループ単位の平均消費電力を更新する。
具体的には、消費エネルギー取得部182は、プロセス消費電力管理テーブル141bに基づいて、プロセスID「101」のプロセスが属するプロセスグループのプロセスグループID「1」を特定する。そして、消費エネルギー取得部182は、プロセス消費電力管理テーブル141bに基づいて、プロセスグループID「1」のプロセスグループに属するプロセスのプロセスID「100」、「101」を特定する。
そして、消費エネルギー取得部182は、プロセス消費電力管理テーブル141bに記録されているプロセスID「100」、「101」それぞれに対応する平均消費電力の和2.6+2.3=4.9Wを求める。消費エネルギー取得部182は、プロセスグループID「1」に対して、プロセスIDリスト「100,101」と平均消費電力4.9Wとを、プロセスグループ消費電力管理テーブル142aに記録する。これにより、消費エネルギー取得部182は、プロセスグループ消費電力管理テーブル142aを、プロセスグループ消費電力管理テーブル142bに更新する。
コア周波数制御部183は、プロセスグループ消費電力管理テーブル142bに基づいて、切り替え先プロセスのプロセスID「100」に対し、当該切り替え先プロセスが属するプロセスグループのプロセスグループID「1」を特定する。コア周波数制御部183は、プロセスグループ消費電力管理テーブル142bのプロセスグループID「1」のレコードを参照して、平均消費電力4.9Wと閾値5Wとを取得する。コア周波数制御部183は、平均消費電力4.9Wと閾値5Wとを比較し、平均消費電力4.9Wが、閾値5Wより小さいと判定する。すると、コア周波数制御部183は、コア110の動作周波数を通常の動作周波数とする設定を行う。その後、プロセス切り替え部181は、プロセスID「100」の切り替え先プロセスをコア110により実行開始させる。コア110は、通常の動作周波数で、プロセスID「100」のプロセスを実行する。
このように、コア周波数制御部183は、プロセスグループ単位の消費エネルギーの指標に基づいて、コアの動作周波数を制御する。
ところで、図10,11の例では、同一のプロセスグループに属する複数のプロセスがコア110に時分割で割り当てられる場合を例示したが、プロセス切り替え部181は、各コアに対してプロセスを柔軟に割り当てることができる。
図12は、コアに対するプロセスの割り当て例を示す図である。
例えば、CPU101は、コア110,110aに加えて、コア110b,110cを有する。CPU101aは、コア110d,110e,110f,110gを有する。また、プロセス161,162,163,…は、仮想マシン160に属する。プロセス161a,162a,163a,…は、仮想マシン160aに属する。プロセス171,172,173,…は、コンテナ170に属する。仮想マシン160,160aおよびコンテナ170それぞれは、1つのプロセスグループに相当する。
例えば、ある時点において、コア110~110gは、仮想マシン160,160aおよびコンテナ170それぞれに属する次のプロセスを実行する。コア110は、プロセス161を実行する。コア110aは、プロセス162を実行する。コア110bは、プロセス163を実行する。コア110cは、プロセス161aを実行する。コア110dは、プロセス162aを実行する。コア110eは、プロセス171を実行する。コア110fは、プロセス172を実行する。コア110gは、プロセス173を実行する。当該時点において、プロセス163aは、何れのコアにも割り当てられておらず、実行が中断された状態である。
このように、プロセス切り替え部181は、同一のプロセスグループに属する2つのプロセスをそれぞれ異なるコアに割り当てることもある。また、プロセス切り替え部181は、それぞれ異なるプロセスグループに属する2つのプロセスを、同一のコアに割り当てることもある。
情報処理装置100は、プロセスグループに対して、コアごとに動作周波数や電圧を変更する。このため、情報処理装置100は、プロセスグループに対して、CPU101,101a,…の動作を詳細に制御することができる。
例えば、情報処理装置100は、あるプロセスグループのプロセスを実行するコアと、他のプロセスグループのプロセスを実行する他のコアとが同一CPUに存在する場合でも、各プロセスグループに対してCPUの動作制御を行える。より具体的には、上記のように、情報処理装置100は、各コアの動作周波数や電圧を、プロセスグループに応じて個別に制御可能になる。
このため、例えば、情報処理装置100は、あるプロセスグループの演算による消費電力が過大になることを抑えたり、比較的消費電力が小さいプロセスグループに対する演算を高速化したりすることができる。あるいは、プロセスグループごとの閾値を調整することで、重要な、あるいは優先度の高いプロセスグループに比較的多くの電力資源を利用させるといった制御も可能になる。
また、ジョブ、アプリケーション、仮想マシンまたはコンテナなどに対応するプロセスグループの単位は、ユーザに提供されるサービスの1単位として扱われることがある。このため、情報処理装置100は、プロセスグループ単位にCPUの動作制御を可能にすることで、電力効率やユーザのサービス利用時の消費電力に応じた課金などを考慮した制御を行い易くすることができる。
なお、第2の実施の形態では、CPU101,101a,…それぞれが複数のコアを備える例を示したが、各CPUが備えるコアの数は1つでもよい。例えば、情報処理装置100は、シングルコアプロセッサを複数有してもよい。この場合も、情報処理装置100は、プロセスグループごとに、情報処理装置100が備える複数のCPUを効率的に利用可能にすることができる。
また、消費エネルギー取得部182は、プロセスグループ単位の消費エネルギーの指標として、当該プロセスグループに属するプロセスの平均消費電力の総和(積算値)を求めるものとしたが、他の計算により当該指標を求めてもよい。
例えば、消費エネルギー取得部182は、該当のプロセスグループに属する各プロセスの単位時間当たりの消費エネルギーの平均値を当該指標としてもよい。一例として、消費エネルギー取得部182は、図11のプロセス消費電力管理テーブル141bに対し、プロセスグループID「1」の消費エネルギーの指標を、(2.6+2.3)/2=2.45Wとしてもよい。この場合、当該計算方法に応じた閾値がプロセスグループ消費電力管理テーブル142bに予め設定される。
更に別の例として、消費エネルギー取得部182は、該当のプロセスグループに属する各プロセスに対して記録された消費エネルギーの和を、該当のプロセスグループに属する各プロセスに対して記録された実行時間の和で割った値を当該指標としてもよい。一例として、消費エネルギー取得部182は、図11のプロセス消費電力管理テーブル141bに対し、プロセスグループID「1」の消費エネルギーの指標を、(260+230)/(100+100)=2.45Wとしてもよい。この場合も、当該計算方法に応じた閾値がプロセスグループ消費電力管理テーブル142bに予め設定される。
消費エネルギー取得部182は、プロセスグループに属する複数のプロセスが同時に実行されたか否かに応じて、指標の計算方法を変えてもよい。例えば、消費エネルギー取得部182は、同一プロセスグループに属する複数のプロセスが同時に実行された場合は、各プロセスの平均消費電力の和を指標とし、当該複数のプロセスが同時に実行されていない場合は、上記の他の計算方法を用いることも考えられる。
例えば、情報処理装置100は、次の処理を実行する。
消費エネルギー取得部182は、複数のプロセッサコアのうちの第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、第1プロセスの実行時間と実行時間の間の第1プロセッサコアの消費エネルギーとを取得する。消費エネルギー取得部182は、それぞれがプロセスのグループである複数のプロセスグループのうち、第1プロセスが属する第1プロセスグループに属する、現存する1以上のプロセスを特定する。消費エネルギー取得部182は、特定した当該1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、第1プロセスグループの実行に伴う単位時間当たりの消費エネルギーを示す指標を計算する。コア周波数制御部183は、第1プロセスグループに属するプロセスを次に実行開始する際に、第1プロセスグループに対して計算した指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作を制御する。
これにより、情報処理装置100は、プロセッサを効率的に利用可能になる。CPU101,101a,…それぞれは、プロセッサの一例である。コア110,110a,…それぞれは、プロセッサコアの一例である。仮想マシン160,160a,…およびコンテナ170,170a,…それぞれは、プロセスグループの一例である。プロセスグループは、ジョブまたはアプリケーションなどの単位でもよい。
ここで、第1プロセスグループに属する、現存する1以上のプロセスは、例えばオペレーティングシステムが現在管理しているプロセスであり、第1プロセスグループにおいて同時に実行されている1以上のプロセスでもよい。また、当該1以上のプロセスは、現在存在しているが実行が中断されているプロセス(実行待ちのプロセス)を含んでもよい。
コア周波数制御部183は、プロセッサコアの動作の制御では、プロセッサコアの動作周波数および電圧の少なくとも一方を制御する。
これにより、情報処理装置100は、プロセッサコアの省電力化を図ったり、演算の高速化を図ったりすることができる。
コア周波数制御部183は、プロセッサコアの動作の制御では、指標が閾値以上の場合に、プロセッサコアの動作周波数および電圧の少なくとも一方を低減させる。
これにより、情報処理装置100は、プロセッサコアの消費電力を低減させ、省電力化を図れる。
あるいは、コア周波数制御部183は、プロセッサコアの動作の制御では、指標が閾値以下の場合に、プロセッサコアの動作周波数を増加させる制御を行ってもよい。これにより、情報処理装置100は、比較的消費電力が小さいと推定されるプロセスグループに対してより大きな電力資源を割り当てて、演算を高速化することができる。
また、消費エネルギー取得部182は、上記指標の計算では、第1プロセスグループに属する1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、当該1以上のプロセスそれぞれの実行時における単位時間当たりのプロセッサコアの消費エネルギーを算出してもよい。そして、消費エネルギー取得部182は、当該1以上のプロセスそれぞれの実行時における単位時間当たりの消費エネルギーの積算値(総和)を、上記指標として算出してもよい。
これにより、情報処理装置100は、プロセスグループ単位の消費エネルギーの指標を適切に求めることができる。
あるいは、消費エネルギー取得部182は、第1プロセスグループに属する1以上のプロセスに対して取得された実行時間と消費エネルギーとに基づいて、当該1以上のプロセスそれぞれの実行時における単位時間当たりのプロセッサコアの消費エネルギーの平均値を、上記指標として算出してもよい。
このようにしても、情報処理装置100は、プロセスグループ単位の消費エネルギーの指標を適切に求めることができる。
また、消費エネルギー取得部182は、第1プロセッサコアの消費エネルギーの取得では、第1プロセッサコアが備えるカウンタにより計数されたイベントの発生回数を読み出し、読み出したイベントの発生回数に基づいて消費エネルギーを取得してもよい。当該カウンタは、第1プロセッサコアにより消費されたエネルギーに応じたイベントの発生回数を計数する。また、消費エネルギー取得部182は、カウンタからイベントの発生回数を読み出した後、当該カウンタを0にリセットする。
これにより、情報処理装置100は、第1プロセスの実行に伴う第1プロセッサコアによる消費エネルギーを適切に取得できる。例えば、プロセッサコアが備えるカウンタは、プロセッサコア単位の、比較的細かな消費エネルギーに応じたイベントを計数する。このため、情報処理装置100は、プロセッサコア単位のプロセスの実行に伴う消費エネルギーを精度良く取得できる。カウンタを0にリセットすることは、カウンタによるイベントの発生回数のカウント値を0に設定することに相当する。性能モニタリングカウンタ122は、上記カウンタの一例である。
コア周波数制御部183は、上記指標と閾値との比較では、複数のプロセスグループそれぞれに対応する閾値を保持するメモリから第1プロセスグループに対応する閾値を取得し、取得した閾値と指標とを比較してもよい。
これにより、情報処理装置100は、プロセッサコアの動作制御を行う指標の基準値(閾値)をプロセスグループに応じて変えることができる。例えば、情報処理装置100は、プロセスグループの重要度または優先度などに応じたプロセッサコアの動作制御や、各プロセスグループに対応するユーザの課金額などに応じたプロセッサコアの動作制御が可能になる。例えば、情報処理装置100は、プロセスグループの重要度または優先度が高いほど、当該プロセスグループに対応する閾値を高くしてもよい。また、例えば、情報処理装置100は、ユーザの課金額が多いほど、当該ユーザが利用するプロセスグループに対応する閾値を高くしてもよい。なお、RAM102は、上記メモリの一例である。閾値を保持するメモリは、HDD103やSSDなどにより実現されてもよい。
また、複数のプロセッサコアは、情報処理装置100における1または複数のプロセッサに含まれる。例えば、情報処理装置100は、1つのマルチコアプロセッサを有してもよいし、複数のマルチコアプロセッサを有してもよい。また、情報処理装置100は、複数のシングルコアプロセッサを有してもよい。
このように、情報処理装置100は、種々のプロセッサ構成に対して、プロセッサを効率的に利用可能になる。
なお、第1の実施の形態の情報処理は、プロセッサ12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101,101a,…にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 情報処理装置
11 メモリ
11a プロセスグループ情報
11b プロセス実行情報
11c 指標計算結果情報
12 プロセッサ
12a,12b,12c,12d プロセッサコア

Claims (8)

  1. コンピュータに、
    前記コンピュータが有する1または複数のプロセッサに含まれる複数のプロセッサコアのうちの第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、前記第1プロセスの実行時間と前記実行時間の間の前記第1プロセッサコアの消費エネルギーとを取得し、
    それぞれが1以上のプロセスが属するグループである複数のプロセスグループのうち、前記第1プロセスが属する第1プロセスグループに属する前記1以上のプロセスを特定し、特定した前記1以上のプロセスに対して取得された前記実行時間と前記消費エネルギーとに基づいて、前記第1プロセスグループの実行に伴う単位時間当たりの前記消費エネルギーを示す指標を計算し、
    前記第1プロセスグループに属する前記プロセスを次に実行開始する際に、前記第1プロセスグループに対して計算した前記指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作を制御する、
    処理を実行させるプログラム。
  2. 前記プロセッサコアの動作の制御では、前記プロセッサコアの動作周波数および電圧の少なくとも一方を制御する、
    請求項1記載のプログラム。
  3. 前記プロセッサコアの動作の制御では、前記指標が前記閾値以上の場合に、前記プロセッサコアの動作周波数および電圧の少なくとも一方を低減させる、
    請求項2記載のプログラム。
  4. 前記指標の計算では、前記第1プロセスグループに属する前記1以上のプロセスに対して取得された前記実行時間と前記消費エネルギーとに基づいて、前記第1プロセスグループに属する前記1以上のプロセスそれぞれの実行時における前記単位時間当たりの前記プロセッサコアの前記消費エネルギーを算出し、前記第1プロセスグループに属する前記1以上のプロセスそれぞれの実行時における前記単位時間当たりの前記消費エネルギーの積算値を算出する、
    請求項1記載のプログラム。
  5. 前記指標の計算では、前記第1プロセスグループに属する前記1以上のプロセスに対して取得された前記実行時間と前記消費エネルギーとに基づいて、前記第1プロセスグループに属する前記1以上のプロセスそれぞれの実行時における前記単位時間当たりの前記プロセッサコアの前記消費エネルギーの平均値を算出する、
    請求項1記載のプログラム。
  6. 前記消費エネルギーの取得では、前記第1プロセッサコアが備えるカウンタであって、前記第1プロセッサコアにより消費されたエネルギーに応じたイベントの発生回数を計数する前記カウンタにより計数された前記イベントの発生回数を読み出し、読み出した前記イベントの発生回数に基づいて前記消費エネルギーを取得し、前記カウンタを0にリセットする、
    請求項1記載のプログラム。
  7. 前記指標と前記閾値との比較では、前記複数のプロセスグループそれぞれに対応する前記閾値を保持するメモリから前記第1プロセスグループに対応する前記閾値を取得し、取得した前記閾値と前記指標とを比較する、
    請求項1記載のプログラム。
  8. コンピュータが、
    前記コンピュータが有する1または複数のプロセッサに含まれる複数のプロセッサコアのうちの第1プロセッサコアにより実行するプロセスを第1プロセスから第2プロセスに切り替える際に、前記第1プロセスの実行時間と前記実行時間の間の前記第1プロセッサコアの消費エネルギーとを取得し、
    それぞれが1以上のプロセスが属するグループである複数のプロセスグループのうち、前記第1プロセスが属する第1プロセスグループに属する前記1以上のプロセスを特定し、特定した前記1以上のプロセスに対して取得された前記実行時間と前記消費エネルギーとに基づいて、前記第1プロセスグループの実行に伴う単位時間当たりの前記消費エネルギーを示す指標を計算し、
    前記第1プロセスグループに属する前記プロセスを次に実行開始する際に、前記第1プロセスグループに対して計算した前記指標と閾値との比較に応じて、当該プロセスを割り当てるプロセッサコアの動作を制御する、
    管理方法。
JP2021126671A 2021-08-02 2021-08-02 プログラムおよび管理方法 Active JP7736993B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021126671A JP7736993B2 (ja) 2021-08-02 2021-08-02 プログラムおよび管理方法
US17/717,188 US11822408B2 (en) 2021-08-02 2022-04-11 Computer-readable recording medium storing program and management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021126671A JP7736993B2 (ja) 2021-08-02 2021-08-02 プログラムおよび管理方法

Publications (2)

Publication Number Publication Date
JP2023021662A JP2023021662A (ja) 2023-02-14
JP7736993B2 true JP7736993B2 (ja) 2025-09-10

Family

ID=85039111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021126671A Active JP7736993B2 (ja) 2021-08-02 2021-08-02 プログラムおよび管理方法

Country Status (2)

Country Link
US (1) US11822408B2 (ja)
JP (1) JP7736993B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2025142892A (ja) * 2024-03-18 2025-10-01 株式会社日立製作所 仮想化システム及び仮想化システムの制御方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010033207A (ja) 2008-07-28 2010-02-12 Fujitsu Ltd 仮想バッテリを備えた仮想マシンシステムおよび仮想バッテリを備えた仮想マシンシステム用プログラム
JP2010039802A (ja) 2008-08-06 2010-02-18 Nec Corp マルチプロセッサシステム、スケジューリング方法およびそのプログラム
JP2012164006A (ja) 2011-02-03 2012-08-30 Fujitsu Ltd クロック周波数制御プログラム、クロック周波数制御装置
JP2012181627A (ja) 2011-02-28 2012-09-20 Panasonic Corp 電力制御装置及び電力制御方法
JP2013524317A (ja) 2010-03-25 2013-06-17 マイクロソフト コーポレーション 分散コンピューティングシステムにおける電力供給の管理
JP2017134668A (ja) 2016-01-28 2017-08-03 富士通株式会社 情報処理システム、情報処理システムの制御方法および管理装置の制御プログラム
CN113138909A (zh) 2020-01-20 2021-07-20 Oppo广东移动通信有限公司 负载统计方法、装置、存储介质及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2003083693A1 (ja) * 2002-04-03 2005-08-04 富士通株式会社 分散処理システムにおけるタスクスケジューリング装置
JP2007207173A (ja) * 2006-02-06 2007-08-16 Fujitsu Ltd 性能分析プログラム、性能分析方法、および性能分析装置
JP5278471B2 (ja) * 2011-03-09 2013-09-04 日本電気株式会社 クラスタシステム
US9311209B2 (en) * 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
WO2015015756A1 (ja) * 2013-08-02 2015-02-05 日本電気株式会社 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム
GB2530782A (en) * 2014-10-02 2016-04-06 Ibm Voltage droop reduction in a processor
JP6447217B2 (ja) * 2015-02-17 2019-01-09 富士通株式会社 実行情報通知プログラム、情報処理装置および情報処理システム
JP2016162428A (ja) * 2015-03-05 2016-09-05 富士通株式会社 情報処理システム、管理装置、および情報処理システムの管理方法
US11080095B2 (en) * 2017-06-04 2021-08-03 Apple Inc. Scheduling of work interval objects in an AMP architecture using a closed loop performance controller
JP6959506B2 (ja) * 2017-06-12 2021-11-02 富士通株式会社 並列処理システムのシステム管理装置、並列処理システムおよび電力制御方法
JP7193718B2 (ja) * 2018-12-19 2022-12-21 富士通株式会社 制御プログラム、情報処理装置及び制御方法
US11237616B1 (en) * 2020-07-27 2022-02-01 International Business Machines Corporation Governing power budget with token passing
US12093100B2 (en) * 2020-09-26 2024-09-17 Intel Corporation Hierarchical power management apparatus and method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010033207A (ja) 2008-07-28 2010-02-12 Fujitsu Ltd 仮想バッテリを備えた仮想マシンシステムおよび仮想バッテリを備えた仮想マシンシステム用プログラム
JP2010039802A (ja) 2008-08-06 2010-02-18 Nec Corp マルチプロセッサシステム、スケジューリング方法およびそのプログラム
JP2013524317A (ja) 2010-03-25 2013-06-17 マイクロソフト コーポレーション 分散コンピューティングシステムにおける電力供給の管理
JP2012164006A (ja) 2011-02-03 2012-08-30 Fujitsu Ltd クロック周波数制御プログラム、クロック周波数制御装置
JP2012181627A (ja) 2011-02-28 2012-09-20 Panasonic Corp 電力制御装置及び電力制御方法
JP2017134668A (ja) 2016-01-28 2017-08-03 富士通株式会社 情報処理システム、情報処理システムの制御方法および管理装置の制御プログラム
CN113138909A (zh) 2020-01-20 2021-07-20 Oppo广东移动通信有限公司 负载统计方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
US20230035134A1 (en) 2023-02-02
JP2023021662A (ja) 2023-02-14
US11822408B2 (en) 2023-11-21

Similar Documents

Publication Publication Date Title
Wang et al. Smartharvest: Harvesting idle cpus safely and efficiently in the cloud
US8683476B2 (en) Method and system for event-based management of hardware resources using a power state of the hardware resources
JP5885920B2 (ja) 仮想cpuベースの、周波数、及び電圧制御
JP5434616B2 (ja) 仮想計算機、仮想計算機モニタ、および計算機の制御方法
JP6447217B2 (ja) 実行情報通知プログラム、情報処理装置および情報処理システム
US7788461B2 (en) System and method for reclaiming allocated memory to reduce power in a data processing system
US8108632B2 (en) Kernel and application cooperative memory management
Sharma et al. Resource deflation: A new approach for transient resource reclamation
JP5839119B2 (ja) 情報処理装置、電池残量通知方法および電池残量通知プログラム
CN106662909A (zh) 操作系统中的启发式处理器电力管理
Gupta et al. Heterovisor: Exploiting resource heterogeneity to enhance the elasticity of cloud platforms
US20120239952A1 (en) Information processing apparatus, power control method, and recording medium
USRE50734E1 (en) Apparatus for managing disaggregated memory and method thereof
US9110723B2 (en) Multi-core binary translation task processing
US20120185776A1 (en) Analyzing resource consumption of software executing during a usage scenario
KR102469927B1 (ko) 분할 메모리 관리장치 및 방법
Zhang et al. CloudGC: Recycling idle virtual machines in the cloud
Maruf et al. Memtrade: Marketplace for disaggregated memory clouds
JP7736993B2 (ja) プログラムおよび管理方法
JPWO2011155047A1 (ja) マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
US9323642B2 (en) Calculation apparatus, calculation method, and recording medium for calculation program
US20250328377A1 (en) Systems and methods for scheduling workloads
JP7104327B2 (ja) 情報処理装置、仮想マシン管理プログラムおよび仮想マシン管理方法
Kim et al. Credit-based runtime placement of virtual machines on a single NUMA system for QoS of data access performance
Li et al. Freezing-based Memory and Process Co-design for User Experience on Resource-limited Mobile Devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250514

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: 20250729

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250811

R150 Certificate of patent or registration of utility model

Ref document number: 7736993

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150