JPWO2012095984A1 - スケジューリング方法及びスケジューリングシステム - Google Patents

スケジューリング方法及びスケジューリングシステム Download PDF

Info

Publication number
JPWO2012095984A1
JPWO2012095984A1 JP2012552604A JP2012552604A JPWO2012095984A1 JP WO2012095984 A1 JPWO2012095984 A1 JP WO2012095984A1 JP 2012552604 A JP2012552604 A JP 2012552604A JP 2012552604 A JP2012552604 A JP 2012552604A JP WO2012095984 A1 JPWO2012095984 A1 JP WO2012095984A1
Authority
JP
Japan
Prior art keywords
speculative
cpus
cpu
maximum
threads
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.)
Granted
Application number
JP2012552604A
Other languages
English (en)
Other versions
JP5644866B2 (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
Publication of JPWO2012095984A1 publication Critical patent/JPWO2012095984A1/ja
Application granted granted Critical
Publication of JP5644866B2 publication Critical patent/JP5644866B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

複数のCPU(21)の中の一のCPU(21)が、複数のCPU(21)ごとに、次のことを行う。一のCPU(21)は、複数のCPU(21)のそれぞれに割り当て可能な投機処理数の最大値から対応するCPU(21)に割り当てられている処理数を引き算する。一のCPU(21)は、複数のCPU(21)の引算結果を加算して最大投機処理数を求める。一のCPU(21)は、最大投機処理数以下の投機処理を複数のCPU(21)に割り当てる。投機処理は、信頼性のない処理であり、バックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。

Description

この発明は、スケジューリング方法及びスケジューリングシステムに関する。
従来、計算機システムにおいて、将来実行されるであろうと予測される処理を予めバックグラウンドで実行しておく投機処理の技術がある。例えば、ウェブページごとのリンク先一覧を、過去の履歴を基にした選択頻度とともに保持し、過去の選択頻度が高いURL(Uniform Resource Locator)のデータを先読みしてキャッシュ領域に読み込むことによって、ウェブ(Web)ページデータの高速表示を可能とする技術がある。一方、バッテリで動作するマルチタスク計算装置において、バッテリ電力を維持する技術がある。例えば、信頼性のないアプリケーションがバックグラウンドに存在する場合、この信頼性のないアプリケーションの実行を抑止する方法がある。
特開平11−24982号公報 特表2007−520777号公報
投機処理の実行量を増やすほど、投機処理の結果が実際に使用される確率、すなわち投機処理の成功率が高くなる。しかし、投機処理の実行量が増えると、メモリ領域や電力などのリソースが多く消費される。そのため、携帯電話機などの、リソースが少ない組み込み機器では、投機処理により実行されるスレッドが切り替わる際のオーバーヘッドが増えてしまい、電力効率が下がり、消費電力の増大を招くという問題点がある。一方、投機処理の実行量を減らすと、投機処理の成功率が下がってしまう。
消費電力の増大を抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。投機処理の成功率が下がるのを抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。
スケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUごとに、次のことを行うことを要件とする。一のCPUは、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求める。一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てる。投機処理はバックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。つまり、投機処理は、信頼性のない処理である。
上記スケジューリング方法及びスケジューリングシステムによれば、消費電力の増大を抑制することができる。投機処理の成功率が下がるのを抑制することができる。
図1は、実施例1にかかるスケジューリング方法を示すフローチャートである。 図2は、実施例1にかかるスケジューリング方法を説明する模式図である。 図3は、実施例2にかかる移動体通信システムの一例を示すブロック図である。 図4は、実施例2にかかる端末を示すブロック図である。 図5は、実施例2における選択頻度テーブルの一例を示す図表である。 図6は、実施例2における投機の実行量と投機の成功率との関係の一例を示す特性図である。 図7は、実施例2におけるスレッドスイッチ率を説明する模式図である。 図8は、実施例2における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。 図9は、実施例2における係数テーブルの一例を示す図表である。 図10は、実施例2においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。 図11は、実施例2においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。 図12は、実施例2にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。 図13は、実施例2にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。 図14は、実施例2にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。
以下に、この発明にかかるスケジューリング方法及びスケジューリングシステムの実施例を図面に基づいて詳細に説明する。実施の形態にかかるスケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUに割り当て可能な最大投機処理数を求め、最大投機処理数以下の投機処理を複数のCPUに割り当てるものである。なお、この実施例によりこの発明が限定されるものではない。
(実施例1)
図1は、実施例1にかかるスケジューリング方法を示すフローチャートである。図1に示すように、複数のCPUを備えた装置において、スケジューリングが開始されると、複数のCPUの中の一のCPUが、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。この演算によって、CPUごとに割り当て可能な投機処理数が求まる(ステップS1)。
次いで、一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求める(ステップS2)。次いで、一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てる(ステップS3)。それによって、各CPUに、複数のCPUに割り当てられる投機処理数の合計値が最大投機処理数以下となるように、投機処理が割り当てられる。
図2は、実施例1にかかるスケジューリング方法を説明する模式図である。図2には、CPUの数が4個である例が示されている。図2に示すように、投機処理は投機スレッド1という単位で実行される。また、図2では、投機処理以外の処理は全て他スレッド2とされている。各CPU(#0、#1、#2、#3)3,4,5,6は、投機スレッド上限数まで、投機スレッドを割り当てることができる。つまり、投機スレッド上限数は、CPUのそれぞれに割り当て可能な投機処理数の最大値である。図2に示す例では、特に限定しないが、投機スレッド上限数は3である。
ただし、各CPU(#0、#1、#2、#3)3,4,5,6には、投機スレッド1以外の他スレッド2が割り当てられている。従って、各CPU(#0、#1、#2、#3)3,4,5,6に実際に割り当て可能な投機スレッド1の数は、投機スレッド上限数から各CPU(#0、#1、#2、#3)3,4,5,6に実際に割り当てられている他スレッド2の数を引いた数となる。
図2に示す例では、特に限定しないが、CPU#0_3及びCPU#3_6には2個の他スレッド2が割り当てられている。従って、CPU#0_3及びCPU#3_6に割り当て可能な投機スレッド1の数は、投機スレッド上限数の3から他スレッドの数2を引いた1となる。同様に、CPU#1_4では、他スレッドの数が1であるので、割り当て可能な投機スレッド1の数は、3から1を引いた2となる。
CPU#2_5では、4個の他スレッド2が割り当てられており、引き算の結果が負の値となるので、CPU#2_5には投機スレッドを割り当てることができない。従って、割り当て可能な投機スレッド1の数は0である。このように、投機スレッド上限数が求まれば、CPUごとに割り当て可能な投機スレッドの数が求められる。投機スレッド上限数及び各CPU(#0、#1、#2、#3)3,4,5,6に割り当てられている他スレッド2の数は、スケジューリングを行う一のCPU、例えばCPU#0_3のスケジューラが把握している。
最大投機処理数は、各CPU(#0、#1、#2、#3)3,4,5,6に割り当て可能な投機スレッド1の数を合計した値であるので、例えば図2に示す例では4個となる。これを式で表すと、最大投機処理数nは次の(1)式で表される。ただし、NはCPUあたりの投機スレッド上限数を表し、Axは、CPU#xに存在する他スレッドの数を表す。また、[N−Ax]が負の値である場合は0とする。
Figure 2012095984
スケジューリングを行う例えばCPU#0_3のスケジューラは、(1)式で表されるn個以下の投機スレッド1を複数のCPU(#0、#1、#2、#3)3,4,5,6に分散して割り当てる。割り当てる投機スレッド1の数は、nよりも少なくてもよいのは勿論である。なお、CPUの数は2個であってもよいし、3個であってもよいし、5個以上であってもよい。
実施例1によれば、各CPUで、投機スレッドと他スレッドとを合わせて投機スレッド上限数までのスレッドが処理されるので、スレッドが切り替わる際のオーバーヘッドの増大を抑制することができる。従って、電力効率の低下を抑制し、消費電力の増大を抑制することができる。また、複数のCPUで、合わせて最大投機処理数以下の数の投機処理が実行されるので、投機処理の成功率が下がるのを抑制することができる。
(実施例2)
実施例2は、実施例1のスケジューリング方法を、例えば移動体通信システムの例えば携帯電話機などの携帯情報端末におけるスケジューリング方法に適用したものである。携帯情報端末はバッテリにより駆動されてもよい。
・移動体通信システムの説明
図3は、実施例2にかかる移動体通信システムの一例を示すブロック図である。図3に示すように、携帯情報端末などの端末11は無線通信により基地局12に接続する。基地局12はキャリアネットワーク13に接続されている。キャリアネットワーク13はインターネットなどのネットワーク14に接続されている。ネットワーク14にはサービスサーバ15が接続されている。端末11は、サービスサーバ15からネットワーク14、キャリアネットワーク13及び基地局12を介してサービスの提供を受ける。
サービスサーバ15の一例として、例えばウェブサーバやファイルサーバが挙げられる。ウェブサーバは、端末11からの要求に基づいて端末11にウェブページの文書や画像を送信したり、ソフトウェアを実行して結果を端末11に送信したりする。ファイルサーバは、ネットワーク上の他の装置から、自身が管理する記憶装置へのアクセスを可能にする。
・端末の説明
図4は、実施例2にかかる端末を示すブロック図である。図4に示すように、端末11は、複数のCPU21、メモリ22及びパワーマネージメントユニット(PMU:Power Management Unit)23がバス24に接続された構成を有する。スケジューラ25は、複数のCPU21のうちのいずれか一つのCPU21で動作するオペレーティングシステム(OS)によって実現される。
スケジューラ25は、メモリ22から選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得する。スケジューラ25は、パワーマネージメントユニット23からバッテリ残量39の情報を取得する。スケジューラ25は、選択頻度テーブル36を取得すると、投機ライブラリ33を呼び出す。スケジューラ25は、計算ライブラリ31が算出した投機スレッド上限数及びCPU負荷情報34に基づいて投機ライブラリ33を動作させる。
計算ライブラリ31は、選択頻度テーブル36、オーバーヘッド情報37、係数テーブル38、バッテリ残量39及び評価式32に基づいて投機スレッド上限数(図2参照)を計算する。評価式32は、例えば次の(2)式で表される式であってもよい。E(N)は変数Nのときの評価値である。P’(N)は変数Nのときの投機の成功率である。投機の成功率は選択頻度テーブル36から求められる。S(N)は変数Nのときのスレッドスイッチ率である。スレッドスイッチ率はオーバーヘッド情報37から求められる。αとβは、バッテリ残量39と係数テーブル38とから求められる係数である。評価値E(N)が例えば最大となるような変数Nの値が投機スレッド上限数であってもよい。投機の成功率、スレッドスイッチ率及び係数テーブル38については後述する。
Figure 2012095984
スケジューラ25は、CPU負荷情報34により、各CPU21に割り当てられている他スレッドの数(上記(1)式のAx)を把握することができる。従って、投機ライブラリ33は、計算ライブラリ31が算出した投機スレッド上限数とCPU負荷情報34とに基づいて、CPU21ごとに、割り当て可能な投機スレッドの数(上記(1)式の[N−Ax])を把握することができる。
投機ライブラリ33は、各CPU21の割り当て可能な投機スレッドの数を合計することにより、最大投機処理数(上記(1)式のn)を求めることができる。投機ライブラリ33は、最大投機処理数以下の投機実行量、例えばn個分の投機スレッドを生成する。投機ライブラリ33は、投機スレッドとして、例えば選択頻度テーブル36に登録されている選択肢を選択頻度の降順に、投機スレッド上限数まで生成してもよい。投機スレッドはバックグラウンドで実行される。
メモリ22には、統計情報データベース35、オーバーヘッド情報37及び係数テーブル38が格納されている。統計情報データベース35には、複数の選択頻度テーブル36が格納されている。選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が登録されている。オーバーヘッド情報37により、スレッド数と、ユーザモードの単位時間に占めるスレッドの切り替え時間の割合(スレッドスイッチ率)と、の関係が得られる。係数テーブル38には、バッテリ残量39と係数α及びβとの関係が登録されている。
選択頻度テーブル36は、過去の操作履歴から作成されてもよいし、ユーザが操作するたびにその操作内容を反映して更新されてもよい。また、端末11が外部から選択頻度テーブル36を取得するようにしてもよい。例えば端末11がサービスを要求すると、サービスサーバが、端末11から要求されたサービスに対応する選択頻度テーブル36を端末11へ送信するようにしてもよい。このように、選択頻度テーブル36をどのようにして作成するか、あるいはどこから取得するか、ということについては限定しない。オーバーヘッド情報37はオペレーティングシステムやCPUに固有な値であるので、予めシステムの製作者が用意してもよい。係数テーブル38は予めシステムの製作者が用意してもよい。
パワーマネージメントユニット23は、バッテリの残量を監視し、バッテリ残量39の情報を有する。パワーマネージメントユニット23は、端末11の各部に供給する電源を制御する。
・投機の成功率の説明
図5は、実施例2における選択頻度テーブルの一例を示す図表である。図5に示すように、選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が例えば降順に登録されている。
図6は、実施例2における投機の実行量と投機の成功率との関係の一例を示す特性図である。図6には、選択頻度テーブル36において降順にn番目までの選択肢の選択頻度を累積した特性曲線が示されている。図6に示す特性曲線は次の(3)式で表される。ただし、P(n)は投機実行量n個のときの投機の成功率である。Pnは選択頻度テーブル36において降順でn番目の選択肢Cnの選択頻度である。投機実行量nの値は、例えば上記(1)式から求まる。図6及び(3)式に示すように、投機実行量nが増えるほど、投機の成功率P(n)は100%に近づく。従って、投機の成功率の観点からは、スレッド数が多い方が好ましい。ただし、選択頻度テーブル36に登録されている選択肢を選択頻度の高い順に実行していくと、投機の成功率は鈍化していく。上記(2)式においてP’(N)は、投機実行量n(このときの投機の成功率はP(n))を投機スレッド上限数Nとしたときの投機の成功率である。
Figure 2012095984
・スレッドスイッチ率の説明
図7は、実施例2におけるスレッドスイッチ率を説明する模式図である。図7に示すように、ユーザモードの単位時間をT(例えば1n秒)とし、スレッド41の切り替え(スレッドスイッチ42)にかかる時間をt(例えば10μ秒)とすると、投機スレッド上限数Nに対するスレッドスイッチ率S(N)は次の(4)式で表される。(4)式をグラフ化した特性図を図8に示す。
Figure 2012095984
図8は、実施例2における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。図8に示すように、スレッド数が増えるとスレッドスイッチ率が大きくなる。スレッドスイッチ率が大きくなると、オーバーヘッドが増えてしまう。オーバーヘッドが増えると、電力効率が低下してしまう。従って、電力効率の観点からは、スレッド数を多くし過ぎないのが好ましい。
・係数テーブルの説明
図9は、実施例2における係数テーブルの一例を示す図表である。図9に示すように、係数テーブル38には、バッテリ残量に応じて上記(2)式の評価式における係数α及びβが登録されている。例えば図示例では、バッテリ残量が50%を超える場合には、αが2であり、βが1である。バッテリ残量が30%を超え、50%以下である場合には、αが1であり、βが2である。バッテリ残量が30%以下である場合には、αが0であり、βが2である。
上記評価式より明らかであるように、評価値E(n)において、αの値が大きいほど投機の成功率の重みが大きくなり、βの値が大きいほどスレッドスイッチ率の重みが大きくなる。従って、バッテリ残量が十分である場合には、投機の成功率が高くなるように投機スレッドの数が増える。一方、バッテリ残量が減ってくると、スレッドスイッチ率が下がり、電力効率が優先されるように投機スレッドの数が減る。バッテリ残量が殆どない場合には投機処理が行われない。なお、α及びβの値、並びにα及びβの値が変わるバッテリ残量の境界値は、図9に示す値に限定されないのは勿論である。
・投機スレッド上限数の求め方
図10は、実施例2においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図10に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が50%を超える場合の例である。αが2であり、βは1であるので、上記(2)式の評価式は次の(5)式で表される。また、図11は、実施例2においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図11に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が30%を超え、50%以下である場合の例である。αが1であり、βは2であるので、上記(2)式の評価式は次の(6)式で表される。
Figure 2012095984
Figure 2012095984
図10に示す特性曲線では、例えばNが40であるときに評価値E(N)が最大となる。図10に示す例では、投機スレッド上限数Nは例えば40であってもよい。一方、図11に示す特性曲線では、例えばNが28であるときに評価値E(N)が最大となる。図11に示す例では、投機スレッド上限数Nは例えば28であってもよい。投機スレッド上限数Nが大きくなると、各CPUに割り当て可能な投機スレッドの数が増えるので、複数のCPUで処理される投機スレッドの数が増える。従って、バッテリ残量が多いときには複数のCPUで処理される投機スレッド数が増えるので、投機の成功率が高くなる。一方、バッテリ残量が少ないときには複数のCPUで処理される投機スレッド数が減るので、電力効率が良くなる。
・スケジューリング方法の説明
一例として、端末が携帯電話機であり、携帯電話機においてユーザがメニューに対して種々の選択などを行うメニュー操作を例にして、実施例2にかかるスケジューリング方法を説明する。以下の説明では、携帯電話機が2個のCPUコア(CPU#0、CPU#1)を有しているとする。
[スケジューラの動作]
図12は、実施例2にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。図12に示すように、ユーザが携帯電話機を操作して例えばメニュートップ画面を開くと、スケジューラ25は統計情報データベース35にアクセスし、例えばメニュートップ画面に対応する選択頻度テーブル36の取得を試みる(ステップS11)。メニュートップ画面に対応する選択頻度テーブル36の選択肢は、例えばメニュートップ画面から移行できるメニューであってもよい。選択頻度テーブル36の選択頻度は、各選択肢が過去に選択された確率であってもよい。
スケジューラ25は、該当する選択頻度テーブル36の取得に成功した場合(ステップS12:Yes)、投機ライブラリ33を呼び出し(ステップS13)、スケジューリングを終了する。一方、スケジューラ25は、該当する選択頻度テーブル36の取得に成功しなかった場合(ステップS12:No)、投機ライブラリ33の呼び出しを行わずに、スケジューリングを終了する。なお、スケジューラ25は、メニュートップ画面に限らず、メニュートップ画面で選択されたメニューによって表示されるメニュー画面などについても、同様に動作する。
[投機ライブラリの動作]
図13は、実施例2にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。図13に示すように、投機ライブラリ33は、スケジューラ25から呼び出されると、計算ライブラリ31を呼び出す(ステップS21)。それによって、投機ライブラリ33は、計算ライブラリ31から投機スレッド上限数Nを取得する。次いで、投機ライブラリ33は、投機スレッド上限数Nと、CPU#0に存在する実行待ちの他スレッドの数A0と、CPU#1に存在する実行待ちの他スレッドの数A1とに基づいて、投機実行量nを算出する(ステップS22)。
例えば投機スレッド上限数Nが40であり、CPU#0で実行待ちの他スレッドの数が37であり、CPU#1で実行待ちの他スレッドの数が34であるとする。この場合、CPU#0が行うことができる投機実行量は3(=40−37)であり、CPU#1が行うことができる投機実行量は6(=40−34)である。従って、CPU#0及びCPU#1を合わせた投機実行量nは9(=3+6)である。
次いで、投機ライブラリ33は、ステップS11でスケジューラ25が取得した選択頻度テーブル36から、ステップS22で算出した投機実行量n個分の選択肢を取得する(ステップS23)。例えば投機実行量nが9である場合、投機ライブラリ33は、メニュートップ画面から選択することができるメニューのうち、選択頻度が高いものから順に9個のメニューを取得してもよい。
次いで、投機ライブラリ33は、取得した選択肢を投機実行する投機スレッドを生成する。投機スレッドは、ユーザがメニューを選択したときに生成されるスレッドと同様に生成される。例えば投機ライブラリ33が選択頻度テーブル36から9個のメニューを取得した場合には、投機ライブラリ33は9個の投機スレッドを生成してもよい。そして、投機ライブラリ33は、各CPUに、生成した投機スレッドを割り当てる(ステップS24)。
例えばCPU#0が行うことができる投機実行量が3であり、CPU#1が行うことができる投機実行量が6であり、投機ライブラリ33が9個の投機スレッドを生成した場合、投機ライブラリ33はCPU#0に3個の投機スレッドを割り当て、CPU#1に6個の投機スレッドを割り当てる。各CPUに割り当てられた投機スレッドは、各CPUにおいてバックグラウンドで実行される。バックグラウンドでの実行内容は、フォアグラウンドでの実行内容と同じである。バックグラウンドでの実行内容は携帯電話機の画面に表示されないので、携帯電話機の画面を見ながらユーザが現在行っている作業、すなわちフォアグラウンドでの実行内容に支障が生じることはない。
次いで、投機ライブラリ33は、ユーザの操作によって何らかのメニューが選択されると、投機が成功したか否かを判断する(ステップS25)。例えば投機ライブラリ33は、ユーザ操作により選択されたメニューと、バックグラウンドで実行されている投機スレッドのメニューとが一致しているか否かを判断する。投機が成功した場合(ステップS25:Yes)、投機ライブラリ33は成功した投機スレッドをフォアグラウンドに移行させる(ステップS26)。
例えば投機に成功した投機スレッドがバックグラウンドでの実行によってバックグラウンドでメニュー画面を描画している場合、投機ライブラリ33は、バックグラウンドで描画されたメニュー画面を携帯電話機の画面に表示する。そして、投機ライブラリ33は、その他の全ての投機スレッドを削除し(ステップS27)、図12のステップS13に戻る。一方、投機が成功しなかった場合、すなわち投機が全て失敗した場合には(ステップS25:No)、投機ライブラリ33は全ての投機スレッドを削除し(ステップS27)、図12のステップS13に戻る。
[計算ライブラリの動作]
図14は、実施例2にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。図14に示すように、計算ライブラリ31は、投機ライブラリ33から呼び出されると、対応する選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得する(ステップS31)。次いで、計算ライブラリ31は、例えば「・投機スレッド上限数の求め方」の項において説明したようにして、上述した評価式の値E(N)が最大となる投機スレッド上限数Nを求める(ステップS32)。そして、図13のステップS21に戻る。
実施例2によれば、実施例1と同様の効果が得られる。
21 CPU
25 スケジューラ
36 選択頻度テーブル
37 オーバーヘッド情報
39 バッテリ残量
この発明は、スケジューリング方法及びスケジューリングシステムに関する。
従来、計算機システムにおいて、将来実行されるであろうと予測される処理を予めバックグラウンドで実行しておく投機処理の技術がある。例えば、ウェブページごとのリンク先一覧を、過去の履歴を基にした選択頻度とともに保持し、過去の選択頻度が高いURL(Uniform Resource Locator)のデータを先読みしてキャッシュ領域に読み込むことによって、ウェブ(Web)ページデータの高速表示を可能とする技術がある。一方、バッテリで動作するマルチタスク計算装置において、バッテリ電力を維持する技術がある。例えば、信頼性のないアプリケーションがバックグラウンドに存在する場合、この信頼性のないアプリケーションの実行を抑止する方法がある。
特開平11−24982号公報 特表2007−520777号公報
投機処理の実行量を増やすほど、投機処理の結果が実際に使用される確率、すなわち投機処理の成功率が高くなる。しかし、投機処理の実行量が増えると、メモリ領域や電力などのリソースが多く消費される。そのため、携帯電話機などの、リソースが少ない組み込み機器では、投機処理により実行されるスレッドが切り替わる際のオーバーヘッドが増えてしまい、電力効率が下がり、消費電力の増大を招くという問題点がある。一方、投機処理の実行量を減らすと、投機処理の成功率が下がってしまう。
消費電力の増大を抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。投機処理の成功率が下がるのを抑制することができるスケジューリング方法及びスケジューリングシステムを提供することを目的とする。
スケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUごとに、次のことを行うことを要件とする。一のCPUは、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求める。一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てる。投機処理はバックグラウンドで処理されていても、実際にはその処理結果が必要とされずに破棄されることがある。つまり、投機処理は、信頼性のない処理である。
上記スケジューリング方法及びスケジューリングシステムによれば、消費電力の増大を抑制することができる。投機処理の成功率が下がるのを抑制することができる。
図1は、実施例1にかかるスケジューリング方法を示すフローチャートである。 図2は、実施例1にかかるスケジューリング方法を説明する模式図である。 図3は、実施例2にかかる移動体通信システムの一例を示すブロック図である。 図4は、実施例2にかかる端末を示すブロック図である。 図5は、実施例2における選択頻度テーブルの一例を示す図表である。 図6は、実施例2における投機の実行量と投機の成功率との関係の一例を示す特性図である。 図7は、実施例2におけるスレッドスイッチ率を説明する模式図である。 図8は、実施例2における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。 図9は、実施例2における係数テーブルの一例を示す図表である。 図10は、実施例2においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。 図11は、実施例2においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。 図12は、実施例2にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。 図13は、実施例2にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。 図14は、実施例2にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。
以下に、この発明にかかるスケジューリング方法及びスケジューリングシステムの実施例を図面に基づいて詳細に説明する。実施の形態にかかるスケジューリング方法及びスケジューリングシステムは、複数のCPUの中の一のCPUが、複数のCPUに割り当て可能な最大投機処理数を求め、最大投機処理数以下の投機処理を複数のCPUに割り当てるものである。なお、この実施例によりこの発明が限定されるものではない。
(実施例1)
図1は、実施例1にかかるスケジューリング方法を示すフローチャートである。図1に示すように、複数のCPUを備えた装置において、スケジューリングが開始されると、複数のCPUの中の一のCPUが、複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算する。この演算によって、CPUごとに割り当て可能な投機処理数が求まる(ステップS1)。
次いで、一のCPUは、複数のCPUの引算結果を加算して最大投機処理数を求める(ステップS2)。次いで、一のCPUは、最大投機処理数以下の投機処理を複数のCPUに割り当てる(ステップS3)。それによって、各CPUに、複数のCPUに割り当てられる投機処理数の合計値が最大投機処理数以下となるように、投機処理が割り当てられる。
図2は、実施例1にかかるスケジューリング方法を説明する模式図である。図2には、CPUの数が4個である例が示されている。図2に示すように、投機処理は投機スレッド1という単位で実行される。また、図2では、投機処理以外の処理は全て他スレッド2とされている。各CPU(#0、#1、#2、#3)3,4,5,6は、投機スレッド上限数まで、投機スレッドを割り当てることができる。つまり、投機スレッド上限数は、CPUのそれぞれに割り当て可能な投機処理数の最大値である。図2に示す例では、特に限定しないが、投機スレッド上限数は3である。
ただし、各CPU(#0、#1、#2、#3)3,4,5,6には、投機スレッド1以外の他スレッド2が割り当てられている。従って、各CPU(#0、#1、#2、#3)3,4,5,6に実際に割り当て可能な投機スレッド1の数は、投機スレッド上限数から各CPU(#0、#1、#2、#3)3,4,5,6に実際に割り当てられている他スレッド2の数を引いた数となる。
図2に示す例では、特に限定しないが、CPU#0_3及びCPU#3_6には2個の他スレッド2が割り当てられている。従って、CPU#0_3及びCPU#3_6に割り当て可能な投機スレッド1の数は、投機スレッド上限数の3から他スレッドの数2を引いた1となる。同様に、CPU#1_4では、他スレッドの数が1であるので、割り当て可能な投機スレッド1の数は、3から1を引いた2となる。
CPU#2_5では、4個の他スレッド2が割り当てられており、引き算の結果が負の値となるので、CPU#2_5には投機スレッドを割り当てることができない。従って、割り当て可能な投機スレッド1の数は0である。このように、投機スレッド上限数が求まれば、CPUごとに割り当て可能な投機スレッドの数が求められる。投機スレッド上限数及び各CPU(#0、#1、#2、#3)3,4,5,6に割り当てられている他スレッド2の数は、スケジューリングを行う一のCPU、例えばCPU#0_3のスケジューラが把握している。
最大投機処理数は、各CPU(#0、#1、#2、#3)3,4,5,6に割り当て可能な投機スレッド1の数を合計した値であるので、例えば図2に示す例では4個となる。これを式で表すと、最大投機処理数nは次の(1)式で表される。ただし、NはCPUあたりの投機スレッド上限数を表し、Axは、CPU#xに存在する他スレッドの数を表す。また、[N−Ax]が負の値である場合は0とする。
Figure 2012095984
スケジューリングを行う例えばCPU#0_3のスケジューラは、(1)式で表されるn個以下の投機スレッド1を複数のCPU(#0、#1、#2、#3)3,4,5,6に分散して割り当てる。割り当てる投機スレッド1の数は、nよりも少なくてもよいのは勿論である。なお、CPUの数は2個であってもよいし、3個であってもよいし、5個以上であってもよい。
実施例1によれば、各CPUで、投機スレッドと他スレッドとを合わせて投機スレッド上限数までのスレッドが処理されるので、スレッドが切り替わる際のオーバーヘッドの増大を抑制することができる。従って、電力効率の低下を抑制し、消費電力の増大を抑制することができる。また、複数のCPUで、合わせて最大投機処理数以下の数の投機処理が実行されるので、投機処理の成功率が下がるのを抑制することができる。
(実施例2)
実施例2は、実施例1のスケジューリング方法を、例えば移動体通信システムの例えば携帯電話機などの携帯情報端末におけるスケジューリング方法に適用したものである。携帯情報端末はバッテリにより駆動されてもよい。
・移動体通信システムの説明
図3は、実施例2にかかる移動体通信システムの一例を示すブロック図である。図3に示すように、携帯情報端末などの端末11は無線通信により基地局12に接続する。基地局12はキャリアネットワーク13に接続されている。キャリアネットワーク13はインターネットなどのネットワーク14に接続されている。ネットワーク14にはサービスサーバ15が接続されている。端末11は、サービスサーバ15からネットワーク14、キャリアネットワーク13及び基地局12を介してサービスの提供を受ける。
サービスサーバ15の一例として、例えばウェブサーバやファイルサーバが挙げられる。ウェブサーバは、端末11からの要求に基づいて端末11にウェブページの文書や画像を送信したり、ソフトウェアを実行して結果を端末11に送信したりする。ファイルサーバは、ネットワーク上の他の装置から、自身が管理する記憶装置へのアクセスを可能にする。
・端末の説明
図4は、実施例2にかかる端末を示すブロック図である。図4に示すように、端末11は、複数のCPU21、メモリ22及びパワーマネージメントユニット(PMU:Power Management Unit)23がバス24に接続された構成を有する。スケジューラ25は、複数のCPU21のうちのいずれか一つのCPU21で動作するオペレーティングシステム(OS)によって実現される。
スケジューラ25は、メモリ22から選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得する。スケジューラ25は、パワーマネージメントユニット23からバッテリ残量39の情報を取得する。スケジューラ25は、選択頻度テーブル36を取得すると、投機ライブラリ33を呼び出す。スケジューラ25は、計算ライブラリ31が算出した投機スレッド上限数及びCPU負荷情報34に基づいて投機ライブラリ33を動作させる。
計算ライブラリ31は、選択頻度テーブル36、オーバーヘッド情報37、係数テーブル38、バッテリ残量39及び評価式32に基づいて投機スレッド上限数(図2参照)を計算する。評価式32は、例えば次の(2)式で表される式であってもよい。E(N)は変数Nのときの評価値である。P’(N)は変数Nのときの投機の成功率である。投機の成功率は選択頻度テーブル36から求められる。S(N)は変数Nのときのスレッドスイッチ率である。スレッドスイッチ率はオーバーヘッド情報37から求められる。αとβは、バッテリ残量39と係数テーブル38とから求められる係数である。評価値E(N)が例えば最大となるような変数Nの値が投機スレッド上限数であってもよい。投機の成功率、スレッドスイッチ率及び係数テーブル38については後述する。
Figure 2012095984
スケジューラ25は、CPU負荷情報34により、各CPU21に割り当てられている他スレッドの数(上記(1)式のAx)を把握することができる。従って、投機ライブラリ33は、計算ライブラリ31が算出した投機スレッド上限数とCPU負荷情報34とに基づいて、CPU21ごとに、割り当て可能な投機スレッドの数(上記(1)式の[N−Ax])を把握することができる。
投機ライブラリ33は、各CPU21の割り当て可能な投機スレッドの数を合計することにより、最大投機処理数(上記(1)式のn)を求めることができる。投機ライブラリ33は、最大投機処理数以下の投機実行量、例えばn個分の投機スレッドを生成する。投機ライブラリ33は、投機スレッドとして、例えば選択頻度テーブル36に登録されている選択肢を選択頻度の降順に、投機スレッド上限数まで生成してもよい。投機スレッドはバックグラウンドで実行される。
メモリ22には、統計情報データベース35、オーバーヘッド情報37及び係数テーブル38が格納されている。統計情報データベース35には、複数の選択頻度テーブル36が格納されている。選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が登録されている。オーバーヘッド情報37により、スレッド数と、ユーザモードの単位時間に占めるスレッドの切り替え時間の割合(スレッドスイッチ率)と、の関係が得られる。係数テーブル38には、バッテリ残量39と係数α及びβとの関係が登録されている。
選択頻度テーブル36は、過去の操作履歴から作成されてもよいし、ユーザが操作するたびにその操作内容を反映して更新されてもよい。また、端末11が外部から選択頻度テーブル36を取得するようにしてもよい。例えば端末11がサービスを要求すると、サービスサーバが、端末11から要求されたサービスに対応する選択頻度テーブル36を端末11へ送信するようにしてもよい。このように、選択頻度テーブル36をどのようにして作成するか、あるいはどこから取得するか、ということについては限定しない。オーバーヘッド情報37はオペレーティングシステムやCPUに固有な値であるので、予めシステムの製作者が用意してもよい。係数テーブル38は予めシステムの製作者が用意してもよい。
パワーマネージメントユニット23は、バッテリの残量を監視し、バッテリ残量39の情報を有する。パワーマネージメントユニット23は、端末11の各部に供給する電源を制御する。
・投機の成功率の説明
図5は、実施例2における選択頻度テーブルの一例を示す図表である。図5に示すように、選択頻度テーブル36には、選択肢とその選択肢の選択頻度との関係が例えば降順に登録されている。
図6は、実施例2における投機の実行量と投機の成功率との関係の一例を示す特性図である。図6には、選択頻度テーブル36において降順にn番目までの選択肢の選択頻度を累積した特性曲線が示されている。図6に示す特性曲線は次の(3)式で表される。ただし、P(n)は投機実行量n個のときの投機の成功率である。Pnは選択頻度テーブル36において降順でn番目の選択肢Cnの選択頻度である。投機実行量nの値は、例えば上記(1)式から求まる。図6及び(3)式に示すように、投機実行量nが増えるほど、投機の成功率P(n)は100%に近づく。従って、投機の成功率の観点からは、スレッド数が多い方が好ましい。ただし、選択頻度テーブル36に登録されている選択肢を選択頻度の高い順に実行していくと、投機の成功率は鈍化していく。上記(2)式においてP’(N)は、投機実行量n(このときの投機の成功率はP(n))を投機スレッド上限数Nとしたときの投機の成功率である。
Figure 2012095984
・スレッドスイッチ率の説明
図7は、実施例2におけるスレッドスイッチ率を説明する模式図である。図7に示すように、ユーザモードの単位時間をT(例えば1n秒)とし、スレッド41の切り替え(スレッドスイッチ42)にかかる時間をt(例えば10μ秒)とすると、投機スレッド上限数Nに対するスレッドスイッチ率S(N)は次の(4)式で表される。(4)式をグラフ化した特性図を図8に示す。
Figure 2012095984
図8は、実施例2における投機スレッド上限数とスレッドスイッチ率との関係の一例を示す特性図である。図8に示すように、スレッド数が増えるとスレッドスイッチ率が大きくなる。スレッドスイッチ率が大きくなると、オーバーヘッドが増えてしまう。オーバーヘッドが増えると、電力効率が低下してしまう。従って、電力効率の観点からは、スレッド数を多くし過ぎないのが好ましい。
・係数テーブルの説明
図9は、実施例2における係数テーブルの一例を示す図表である。図9に示すように、係数テーブル38には、バッテリ残量に応じて上記(2)式の評価式における係数α及びβが登録されている。例えば図示例では、バッテリ残量が50%を超える場合には、αが2であり、βが1である。バッテリ残量が30%を超え、50%以下である場合には、αが1であり、βが2である。バッテリ残量が30%以下である場合には、αが0であり、βが2である。
上記評価式より明らかであるように、評価値E(n)において、αの値が大きいほど投機の成功率の重みが大きくなり、βの値が大きいほどスレッドスイッチ率の重みが大きくなる。従って、バッテリ残量が十分である場合には、投機の成功率が高くなるように投機スレッドの数が増える。一方、バッテリ残量が減ってくると、スレッドスイッチ率が下がり、電力効率が優先されるように投機スレッドの数が減る。バッテリ残量が殆どない場合には投機処理が行われない。なお、α及びβの値、並びにα及びβの値が変わるバッテリ残量の境界値は、図9に示す値に限定されないのは勿論である。
・投機スレッド上限数の求め方
図10は、実施例2においてバッテリ残量が多い場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図10に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が50%を超える場合の例である。αが2であり、βは1であるので、上記(2)式の評価式は次の(5)式で表される。また、図11は、実施例2においてバッテリ残量が少ない場合の投機スレッド上限数と評価値との関係の一例を示す特性図である。図11に示す例は、例えば図9に示す係数テーブル38においてバッテリ残量が30%を超え、50%以下である場合の例である。αが1であり、βは2であるので、上記(2)式の評価式は次の(6)式で表される。
Figure 2012095984
Figure 2012095984
図10に示す特性曲線では、例えばNが40であるときに評価値E(N)が最大となる。図10に示す例では、投機スレッド上限数Nは例えば40であってもよい。一方、図11に示す特性曲線では、例えばNが28であるときに評価値E(N)が最大となる。図11に示す例では、投機スレッド上限数Nは例えば28であってもよい。投機スレッド上限数Nが大きくなると、各CPUに割り当て可能な投機スレッドの数が増えるので、複数のCPUで処理される投機スレッドの数が増える。従って、バッテリ残量が多いときには複数のCPUで処理される投機スレッド数が増えるので、投機の成功率が高くなる。一方、バッテリ残量が少ないときには複数のCPUで処理される投機スレッド数が減るので、電力効率が良くなる。
・スケジューリング方法の説明
一例として、端末が携帯電話機であり、携帯電話機においてユーザがメニューに対して種々の選択などを行うメニュー操作を例にして、実施例2にかかるスケジューリング方法を説明する。以下の説明では、携帯電話機が2個のCPUコア(CPU#0、CPU#1)を有しているとする。
[スケジューラの動作]
図12は、実施例2にかかるスケジューリング方法におけるスケジューラの動作を示すフローチャートである。図12に示すように、ユーザが携帯電話機を操作して例えばメニュートップ画面を開くと、スケジューラ25は統計情報データベース35にアクセスし、例えばメニュートップ画面に対応する選択頻度テーブル36の取得を試みる(ステップS11)。メニュートップ画面に対応する選択頻度テーブル36の選択肢は、例えばメニュートップ画面から移行できるメニューであってもよい。選択頻度テーブル36の選択頻度は、各選択肢が過去に選択された確率であってもよい。
スケジューラ25は、該当する選択頻度テーブル36の取得に成功した場合(ステップS12:Yes)、投機ライブラリ33を呼び出し(ステップS13)、スケジューリングを終了する。一方、スケジューラ25は、該当する選択頻度テーブル36の取得に成功しなかった場合(ステップS12:No)、投機ライブラリ33の呼び出しを行わずに、スケジューリングを終了する。なお、スケジューラ25は、メニュートップ画面に限らず、メニュートップ画面で選択されたメニューによって表示されるメニュー画面などについても、同様に動作する。
[投機ライブラリの動作]
図13は、実施例2にかかるスケジューリング方法における投機ライブラリの動作を示すフローチャートである。図13に示すように、投機ライブラリ33は、スケジューラ25から呼び出されると、計算ライブラリ31を呼び出す(ステップS21)。それによって、投機ライブラリ33は、計算ライブラリ31から投機スレッド上限数Nを取得する。次いで、投機ライブラリ33は、投機スレッド上限数Nと、CPU#0に存在する実行待ちの他スレッドの数A0と、CPU#1に存在する実行待ちの他スレッドの数A1とに基づいて、投機実行量nを算出する(ステップS22)。
例えば投機スレッド上限数Nが40であり、CPU#0で実行待ちの他スレッドの数が37であり、CPU#1で実行待ちの他スレッドの数が34であるとする。この場合、CPU#0が行うことができる投機実行量は3(=40−37)であり、CPU#1が行うことができる投機実行量は6(=40−34)である。従って、CPU#0及びCPU#1を合わせた投機実行量nは9(=3+6)である。
次いで、投機ライブラリ33は、ステップS11でスケジューラ25が取得した選択頻度テーブル36から、ステップS22で算出した投機実行量n個分の選択肢を取得する(ステップS23)。例えば投機実行量nが9である場合、投機ライブラリ33は、メニュートップ画面から選択することができるメニューのうち、選択頻度が高いものから順に9個のメニューを取得してもよい。
次いで、投機ライブラリ33は、取得した選択肢を投機実行する投機スレッドを生成する。投機スレッドは、ユーザがメニューを選択したときに生成されるスレッドと同様に生成される。例えば投機ライブラリ33が選択頻度テーブル36から9個のメニューを取得した場合には、投機ライブラリ33は9個の投機スレッドを生成してもよい。そして、投機ライブラリ33は、各CPUに、生成した投機スレッドを割り当てる(ステップS24)。
例えばCPU#0が行うことができる投機実行量が3であり、CPU#1が行うことができる投機実行量が6であり、投機ライブラリ33が9個の投機スレッドを生成した場合、投機ライブラリ33はCPU#0に3個の投機スレッドを割り当て、CPU#1に6個の投機スレッドを割り当てる。各CPUに割り当てられた投機スレッドは、各CPUにおいてバックグラウンドで実行される。バックグラウンドでの実行内容は、フォアグラウンドでの実行内容と同じである。バックグラウンドでの実行内容は携帯電話機の画面に表示されないので、携帯電話機の画面を見ながらユーザが現在行っている作業、すなわちフォアグラウンドでの実行内容に支障が生じることはない。
次いで、投機ライブラリ33は、ユーザの操作によって何らかのメニューが選択されると、投機が成功したか否かを判断する(ステップS25)。例えば投機ライブラリ33は、ユーザ操作により選択されたメニューと、バックグラウンドで実行されている投機スレッドのメニューとが一致しているか否かを判断する。投機が成功した場合(ステップS25:Yes)、投機ライブラリ33は成功した投機スレッドをフォアグラウンドに移行させる(ステップS26)。
例えば投機に成功した投機スレッドがバックグラウンドでの実行によってバックグラウンドでメニュー画面を描画している場合、投機ライブラリ33は、バックグラウンドで描画されたメニュー画面を携帯電話機の画面に表示する。そして、投機ライブラリ33は、その他の全ての投機スレッドを削除し(ステップS27)、図12のステップS13に戻る。一方、投機が成功しなかった場合、すなわち投機が全て失敗した場合には(ステップS25:No)、投機ライブラリ33は全ての投機スレッドを削除し(ステップS27)、図12のステップS13に戻る。
[計算ライブラリの動作]
図14は、実施例2にかかるスケジューリング方法における計算ライブラリの動作を示すフローチャートである。図14に示すように、計算ライブラリ31は、投機ライブラリ33から呼び出されると、対応する選択頻度テーブル36、オーバーヘッド情報37及び係数テーブル38を取得する(ステップS31)。次いで、計算ライブラリ31は、例えば「・投機スレッド上限数の求め方」の項において説明したようにして、上述した評価式の値E(N)が最大となる投機スレッド上限数Nを求める(ステップS32)。そして、図13のステップS21に戻る。
実施例2によれば、実施例1と同様の効果が得られる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数のCPUの中の一のCPUが、
前記複数のCPUごとに、前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算し、
前記複数のCPUの引算結果を加算して最大投機処理数を求め、
前記最大投機処理数以下の投機処理を前記複数のCPUに割り当てること
を特徴とするスケジューリング方法。
(付記2)投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択すること
を特徴とする付記1に記載のスケジューリング方法。
(付記3)前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする付記1に記載のスケジューリング方法。
(付記4)前記割り当て可能な投機処理数の最大値は、
投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
を特徴とする付記2に記載のスケジューリング方法。
(付記5)前記最大投機処理数以下の投機処理の一の投機処理が実際に実行されるときは、他の投機処理は削除されること
を特徴とする付記1乃至付記4の何れか一に記載のスケジューリング方法。
(付記6)前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする付記1乃至付記4の何れか一に記載のスケジューリング方法。
(付記7)前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
を特徴とする付記5に記載のスケジューリング方法。
(付記8)複数のCPUと、
前記複数のCPUに処理を割り当てるスケジューラと、
を含み、
前記スケジューラによって前記複数のCPUに割り当てられる投機処理数が最大投機処理数を超えないこと
を特徴とするスケジューリングシステム。
(付記9)前記最大投機処理数は、
前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から前記複数のCPUのそれぞれに割り当てられている処理数を引き算し、引き算された結果を前記複数のCPUの数分加算することで得られること
を特徴とする付記8に記載のスケジューリングシステム。
(付記10)前記スケジューラは、投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てること
を特徴とする付記8に記載のスケジューリングシステム。
(付記11)前記スケジューラは、投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てること
を特徴とする付記9に記載のスケジューリングシステム。
(付記12)選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記8に記載のスケジューリングシステム。
(付記13)選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記9に記載のスケジューリングシステム。
(付記14)選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記10に記載のスケジューリングシステム。
(付記15)選択された投機処理はバックグラウンドで実行され、選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
を特徴とする付記11に記載のスケジューリングシステム。
(付記16)前記実際に実行される投機処理以外の投機処理は削除されること
を特徴とする付記12乃至付記15の何れか一に記載のスケジューリングシステム。
(付記17)投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて割り当て可能な投機処理数の最大値が設定されること
を特徴とする付記9乃至付記15の何れか一に記載のスケジューリングシステム。
(付記18)投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて割り当て可能な投機処理数の最大値が設定されること
を特徴とする付記16に記載のスケジューリングシステム。
21 CPU
25 スケジューラ
36 選択頻度テーブル
37 オーバーヘッド情報
39 バッテリ残量

Claims (18)

  1. 複数のCPUの中の一のCPUが、
    前記複数のCPUごとに、前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から対応するCPUに割り当てられている処理数を引き算し、
    前記複数のCPUの引算結果を加算して最大投機処理数を求め、
    前記最大投機処理数以下の投機処理を前記複数のCPUに割り当てること
    を特徴とするスケジューリング方法。
  2. 投機処理が実行される確率に基づいて、前記最大投機処理数以下の投機処理を選択すること
    を特徴とする請求項1に記載のスケジューリング方法。
  3. 前記割り当て可能な投機処理数の最大値は、
    投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
    を特徴とする請求項1に記載のスケジューリング方法。
  4. 前記割り当て可能な投機処理数の最大値は、
    投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて設定されること
    を特徴とする請求項2に記載のスケジューリング方法。
  5. 前記最大投機処理数以下の投機処理の一の投機処理が実際に実行されるときは、他の投機処理は削除されること
    を特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。
  6. 前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
    を特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。
  7. 前記最大投機処理数以下の投機処理の一の投機処理が外部から指定される処理と一致するとき、前記投機処理をバックグラウンドからフォアグラウンドに移行すること
    を特徴とする請求項5に記載のスケジューリング方法。
  8. 複数のCPUと、
    前記複数のCPUに処理を割り当てるスケジューラと、
    を含み、
    前記スケジューラによって前記複数のCPUに割り当てられる投機処理数が最大投機処理数を超えないこと
    を特徴とするスケジューリングシステム。
  9. 前記最大投機処理数は、
    前記複数のCPUのそれぞれに割り当て可能な投機処理数の最大値から前記複数のCPUのそれぞれに割り当てられている処理数を引き算し、引き算された結果を前記複数のCPUの数分加算することで得られること
    を特徴とする請求項8に記載のスケジューリングシステム。
  10. 前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てること
    を特徴とする請求項8に記載のスケジューリングシステム。
  11. 前記スケジューラは、前記投機処理が実際に実行される確率に基づいて前記最大投機処理数以下の投機処理を選択し、前記複数のCPUに選択された投機処理を割り当てること
    を特徴とする請求項9に記載のスケジューリングシステム。
  12. 前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
    を特徴とする請求項8に記載のスケジューリングシステム。
  13. 前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
    を特徴とする請求項9に記載のスケジューリングシステム。
  14. 前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
    を特徴とする請求項10に記載のスケジューリングシステム。
  15. 前記選択された投機処理はバックグラウンドで実行され、前記選択された投機処理の中で実際に実行される投機処理がフォアグラウンドに移行されること
    を特徴とする請求項11に記載のスケジューリングシステム。
  16. 前記実際に実行される投機処理以外の投機処理は削除されること
    を特徴とする請求項12乃至請求項15の何れか一に記載のスケジューリングシステム。
  17. 投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されること
    を特徴とする請求項9乃至請求項15の何れか一に記載のスケジューリングシステム。
  18. 投機処理が実際に実行される確率と、処理を切り替えるための時間と、バッテリの残量の少なくとも何れか一の要素に基づいて前記割り当て可能な投機処理数の最大値が設定されること
    を特徴とする請求項16に記載のスケジューリングシステム。
JP2012552604A 2011-01-13 2011-01-13 スケジューリング方法及びスケジューリングシステム Expired - Fee Related JP5644866B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/050485 WO2012095984A1 (ja) 2011-01-13 2011-01-13 スケジューリング方法及びスケジューリングシステム

Publications (2)

Publication Number Publication Date
JPWO2012095984A1 true JPWO2012095984A1 (ja) 2014-06-09
JP5644866B2 JP5644866B2 (ja) 2014-12-24

Family

ID=46506905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012552604A Expired - Fee Related JP5644866B2 (ja) 2011-01-13 2011-01-13 スケジューリング方法及びスケジューリングシステム

Country Status (3)

Country Link
US (1) US9507635B2 (ja)
JP (1) JP5644866B2 (ja)
WO (1) WO2012095984A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11140243B1 (en) 2019-03-30 2021-10-05 Snap Inc. Thermal state inference based frequency scaling
US11442513B1 (en) 2019-04-16 2022-09-13 Snap Inc. Configuration management based on thermal state

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124982A (ja) 1997-06-30 1999-01-29 Nec Corp 履歴に基づくWebページ先読み方式
JPH11259280A (ja) * 1998-03-13 1999-09-24 Matsushita Electric Ind Co Ltd プログラム開発支援装置及びコンピュータシステムに適用されるプログラムを記録した記録媒体
JP2001356904A (ja) * 2000-06-13 2001-12-26 Fujitsu Ltd プロセッサ
GB0315492D0 (en) 2003-07-02 2003-08-06 Symbian Ltd A method of enabling a multitasking wireless information device to conserve battery power
US7594228B2 (en) * 2003-09-23 2009-09-22 Lam Siu H Method and apparatus to perform task scheduling
US20050144602A1 (en) * 2003-12-12 2005-06-30 Tin-Fook Ngai Methods and apparatus to compile programs to use speculative parallel threads
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7765450B2 (en) * 2005-10-20 2010-07-27 Jon Udell Methods for distribution of test generation programs
JP5154119B2 (ja) * 2007-03-26 2013-02-27 テレフオンアクチーボラゲット エル エム エリクソン(パブル) プロセッサ
US8060884B2 (en) * 2007-07-10 2011-11-15 Sharp Laboratories Of America, Inc. Deterministic task scheduling in a computing device
JP2009048269A (ja) * 2007-08-14 2009-03-05 Mitsubishi Electric Corp 並列処理装置
US8140646B2 (en) * 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
WO2011045112A1 (en) * 2009-10-12 2011-04-21 International Business Machines Corporation A method system and program to optimize job execution scheduled from and executed on external application containers

Also Published As

Publication number Publication date
US9507635B2 (en) 2016-11-29
WO2012095984A1 (ja) 2012-07-19
US20130305257A1 (en) 2013-11-14
JP5644866B2 (ja) 2014-12-24

Similar Documents

Publication Publication Date Title
US10101910B1 (en) Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
JP5939740B2 (ja) 動的にリソースを割り当てる方法、システム及びプログラム
US20050273568A1 (en) Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US10289446B1 (en) Preserving web browser child processes by substituting a parent process with a stub process
CN108154298B (zh) 配送任务分配方法、装置、电子设备及计算机存储介质
JP2010176637A (ja) コンピュータリソース管理装置、コンピュータリソース提供システム
US10643193B2 (en) Dynamic workload capping
JP5644866B2 (ja) スケジューリング方法及びスケジューリングシステム
CN112631504A (zh) 利用堆外内存实现本地缓存的方法和装置
CN114116173A (zh) 动态调整任务分配的方法、装置和系统
JP4862056B2 (ja) 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法
US20210117237A1 (en) Method, devices and computer program products for resource usage
JP2018190355A (ja) リソース管理方法
JP2007328413A (ja) 負荷分散方法
JP4368730B2 (ja) 処理割当管理装置、処理割当管理装置の制御方法、及びプログラム
CN108616576B (zh) 一种调度应用服务器的方法和装置
JP2011018281A (ja) ジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラム
JP5045576B2 (ja) マルチプロセッサシステム及びプログラム実行方法
CN111190733B (zh) 用于进行rsa计算的计算资源调度方法及装置
JP6059259B2 (ja) 計算機システム及び計算機リソースの割当方法
JP2018045493A (ja) Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法
Xie et al. A novel independent job rescheduling strategy for cloud resilience in the cloud environment
JP5476208B2 (ja) リクエスト処理システム、方法及びプログラム
JP7367565B2 (ja) 電力制御装置および電力制御プログラム
Bhatia et al. An analysis report of workflow scheduling algorithm for cloud environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140919

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141020

R150 Certificate of patent or registration of utility model

Ref document number: 5644866

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees