JP2003337711A - 情報処理装置および方法 - Google Patents

情報処理装置および方法

Info

Publication number
JP2003337711A
JP2003337711A JP2002145558A JP2002145558A JP2003337711A JP 2003337711 A JP2003337711 A JP 2003337711A JP 2002145558 A JP2002145558 A JP 2002145558A JP 2002145558 A JP2002145558 A JP 2002145558A JP 2003337711 A JP2003337711 A JP 2003337711A
Authority
JP
Japan
Prior art keywords
program
thread
attribute
execution
information
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
JP2002145558A
Other languages
English (en)
Inventor
Akira Ioku
章 井奥
Yoshiaki Morimoto
義章 森本
Motoaki Satoyama
元章 里山
Masaki Nakano
正樹 中野
Shinichiro Kawasaki
進一郎 川▲崎▼
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002145558A priority Critical patent/JP2003337711A/ja
Publication of JP2003337711A publication Critical patent/JP2003337711A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】システムの利用状況や処理負荷等の実行時情報
をふまえて、スレッドなどの並行処理分割単位の属性を
選択し、応答性などのパフォーマンスを最適化したプロ
グラム実行環境を簡便に提供する。 【解決手段】処理全体を複数の処理単位に分割しこれら
を同時に動作させるプログラム実行環境において、シス
テム運用時にプログラムの実行状況を示す各種履歴情報
を取得する手段と、前記取得情報と設定条件との比較を
もってプログラムの並行処理単位の属性を決定する並行
処理単位属性決定手段とを備えた。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータ上で実
行されるプログラムの実行状態を最適化する方法に関す
るもので、特にマルチスレッドプログラムなど複数の並
行処理単位が同時に動作するようなプログラムの環境に
おいて個々の処理単位の属性を最適化する方法に関す
る。
【0002】
【従来の技術】コンピュータが行う処理の単位にはジョ
ブ、トランザクション、プロセス、スレッド、タスクな
どが知られており、いずれもプログラム内で複数の処理
を並行に実行させる場合の処理分割単位として使用でき
る。プログラムをこれらの処理単位に分割して各々を並
行して処理することは、プログラムの応答性やコンピュ
ータ資源の有効活用のために多用されている。
【0003】複数のスレッドを同時実行させるプログラ
ムは、マルチスレッドプログラムと呼ばれる。マルチス
レッドプログラムの好例は、Web ブラウザである。Web
ブラウザ内で、アプレットあるいはイメージをロードし
ている間にページをスクロールしたり、動画を動かしな
がら音を出し、新規ページをロードしている間にバック
グラウンドでページを印刷したりという並行作業は、プ
ログラムのマルチスレッド化によって可能となってい
る。
【0004】スレッドの実現方法はコンピュータの環境
によって異なる。例えばJavaプログラムにおいて(Java
はSun Microsystems社の登録商標)Javaスレッドの実現
方法は、Javaプログラムの実行基盤(プラットフォー
ム)となるオペレーティングシステム(OS)の管理する
並行分割単位(プロセスやタスク、あるいはスレッドな
ど)とJavaスレッドとの対応づけの違いで分類できる。
OSのタスクやプロセスに1対1でJavaスレッドを直接対
応づけるスレッド実装方式は、ネイティブスレッドまた
はカーネルスレッド方式と呼ばれている。これに対し
て、OSのカーネル空間の外側に位置するユーザ空間で、
すなわちOSから見るとアプリケーションの階層で、スレ
ッドを実装する方式が存在する。これはグリーンスレッ
ド方式と呼ばれる。カーネルスレッドがOSに依存するの
とは対照的に、OSに依存しない方式である。
【0005】カーネルスレッドとグリーンスレッドは、
スレッドの走行環境ならびに利用資源の所在の違いによ
って区分するスレッドの属性といえるが、その他にも
「プリエンプテイブ(preemptive)」と「ノンプリエン
プテイブ(non-preemptive)」で区分されるスケジュー
リングポリシーなどのスレッド属性が存在し、これらの
スレッド属性はマルチスレッドプログラム全体としての
機能面や性能面を左右する長所と短所を合わせもつこと
が知られている。
【0006】例えばカーネルスレッドとユーザースレッ
ドのうちカーネルスレッドには、スレッド切り替えがカ
ーネル空間への処理移行を伴う分遅いという欠点が存在
する反面、OSに直結した構造でOSのデバイス管理機構を
活かせるためにI/Oイベントへの応答性に優れている、
という利点が存在する。一方で、ユーザースレッドに
は、スレッド切り替えがカーネル空間への処理移行が不
要である分速いという利点の反面、I/Oの多重化に不向
き(I/0イベントへの応答性が保証しにくい)欠点が存
在し標準入力で処理が止まるとプログラム全体がブロッ
クされるという問題が生じやすい。
【0007】このように利害得失を合わせもったスレッ
ド属性を、アプリケーションプログラムの特性に応じて
使い分けることができれば望ましい。このような要請を
ふまえ、カーネルスレッドとユーザースレッドの選択を
システム起動時に明示的に指定できるシステムやアプリ
ケーションプログラムでの明示的な選択が可能なシステ
ムが存在する。
【0008】しかしスレッド属性の指定契機がシステム
起動時のみでは、運用時の状況に応じて応答性などを最
適化するには限度があるという問題がある。このような
問題は、処理分割単位がここまで言及してきたスレッド
である場合に限ったものでなくプロセスやタスクである
場合にも同様に存在する。
【0009】
【発明が解決しようとする課題】そこで、本発明におい
ては、システムの利用態様や処理負荷等の実行時情報を
ふまえて、スレッドなどの並行処理分割単位の属性を個
々の並行処理分割単位を起動する際に個別に選択的に決
定する手段を提供し、最適な並列分散処理を実現するプ
ログラム実行環境を提供することを目的とする。
【0010】
【発明を解決するための手段】本発明において、実行を
監視されるプログラムを実行する運用計算機は、プログ
ラムと、これを実行するプログラム実行系、その実行の
際にシステムの利用態様や処理負荷等を検知するプログ
ラム走行状況検知部、を備えている。また、運用計算機
は、プログラム走行状況を記録するために実行履歴作成
部ならび実行履歴テーブルを備えている。
【0011】これを監視する監視用計算機は、前記プロ
グラム走行状況検知部から送られる情報をもとに、起動
するスレッドの適切な属性を判定し決定するためにスレ
ッド属性決定部を備えている。また、監視用計算機は前
記スレッド属性決定部が参照する実行履歴テーブルやス
レッド属性選択基準テーブルをデータベースに備える。
【0012】起動する個々のスレッドの属性を判断する
にあたって参照するのは、OSやOSの上で動作するインタ
プリタ実行系で使用しているシステム資源の使用量、あ
るいは、インタプリタ実行系が使用するライブラリモジ
ュールの使用頻度、など、運用中に経時変化し時々のシ
ステムのパフォーマンスへの影響が大きいと考えられる
実行時情報である。
【0013】
【発明の実施の形態】以下、図を参照して本発明の実施
の形態を説明する。図1は本発明の構成図である。運用
計算機(1)は監視計算機(2)とネットワーク(3)
で接続される。運用計算機(1)はプログラム(12)
を実行するプログラム実行系(11)を備え、また監視
計算機(2)との通信を行うための通信部(13)を備
える。プログラム実行系(11)としてはOSや、OSの上
で動作するJava等のインタプリタ実行系が考えられる。
プログラム実行系(11)はその実行状況を検出するプ
ログラム実行系状況検出部(111)、実行履歴作成部
(112)ならび実行履歴テーブル(113)を備え
る。
【0014】監視計算機(2)は運用計算機(1)と通
信を行う通信部(23)、データベースを更新する登録
するDB更新部(21)、起動するスレッドの適切な属
性を判定し決定するスレッド属性決定部(22)、およ
びデータベース(25)からなる。そして監視計算機
(2)は管理者などがデータベース内の情報を更新する
ための標準入出力部(24)を備える。
【0015】図2はデータベースの構成である。データ
ベース(25)は、実行履歴テーブル(251)とスレ
ッド属性選択基準テーブル(252)を持つ。実行履歴
テーブル(251)は、プログラム実行系(11)の直
前の処理内容を示す情報を保持したテーブルである。図
3は、本発明の好ましい実施例による、実行履歴テーブ
ル(251)の構成を示した例である。この例では、直
前の処理内容を示す情報として、Java実行系で利用され
たクラス・メソッド名称(2511)とその実行時刻
(2512)、ならびに実行回数(2513)を対にし
て示してある。なお、Javaプログラムが実行したJavaの
クラス群(パッケージ)や個々のクラスの名称は、Java
実行系がインタプリタ実行系であり、名称などの意味情
報を原形に近い状態で保持した中間コードで処理するこ
とから、運用中の実行時においても容易に識別できる。
【0016】スレッド属性選択基準テーブル(252)
は、各スレッド属性にとって適した実行状況を記述した
テーブルである。図4は、本発明の好ましい実施例によ
る、スレッド属性選択基準テーブル(252)の構成を
示した例である。この例では、スレッド属性として、カ
ーネルスレッドとユーザースレッドを想定している(2
521)。双方の属性のスレッドに適した実行系の状況
として、実行履歴の面でJavaプログラムにおける各クラ
スの実行回数の閾値、ならびに現在の状況の面で現在動
作中のスレッド数の閾値を、設定してある(252
2)。なお、Javaのクラス群(パッケージ)やクラスの
名称は、Javaプログラムの処理内容や利用資源を象徴す
るものとなっているので、その利用状況はプログラム実
行系の状況を推測する手がかりとして有用である。
【0017】この構成の変形例として、ネットワーク
(3)のかわりにデータバスを利用し、運用計算機
(1)と監視計算機(2)上のモジュールを1つの計算
機上に配置し、同一の計算機で実行することも考えられ
る。また、図1のように実行履歴テーブル(112)、
(251)が運用計算機(1)上と、監視計算機(2)
の両方に存在する場合と、片側にしか存在しない場合も
考えられる。また、図3の実行履歴テーブル(251)
の例では、直前の処理内容を示す情報として、実行した
クラスとその実行時刻を示してあるが、これに限ったも
のではない。スレッド属性選択基準テーブル(252)
についても掲載情報は図4の例に限ったものではない。
【0018】次に図5のスレッド属性決定手順のフロー
を用いて本発明の動作を説明する。プログラム(12)
の実行を開始するに際して、スレッド属性選択基準テー
ブル(252)を設定する(ステップ1000)。設定
は監視計算機に備わった標準入出力部(24)を通じて
管理者の手入力などによって実施される。設定した結果
の例が図4に相当する。
【0019】プログラム(12)の実行が開始すると、
プログラム走行状況検知部(111)がその時々の実行
内容に関わる情報を取得して(ステップ1010)、実
行履歴作成部(112)を起動する。実行履歴作成部
(112)は、プログラム走行状況検知部(111)か
らの情報を、実行履歴テーブル(113)を更新する。
(ステップ1020)。監視計算機は、実行履歴テーブ
ル(113)の更新分をネットワーク(3)経由で定期
的に受信して、監視計算機(2)上のデータベース更新
部(21)を用いてデータベース(25)内の実行履歴
テーブル(251)を最新の内容に更新しておく。
【0020】プログラム走行状況検知部(111)は、
スレッド起動命令がプログラムから発行されたと判断し
た場合は(ステップ1070)、スレッド属性決定部
(22)にスレッド起動命令が発行されたことを通知す
る。
【0021】スレッド属性決定部(22)は、スレッド
属性選択基準テーブル(252)を参照し、スレッド属
性決定に必要な情報をプログラム実行系状況検出部(1
11)を通じてネットワーク(3)経由で取得する。そ
して、スレッド属性決定部(22)は、前記取得情報を
スレッド属性選択基準テーブル(252)の設定内容と
比較して、起動するスレッドの属性を適切なものに決定
し(ステップ1080)、その決定内容をプログラム実
行系(11)にネットワーク(3)経由で通知する。前
記通知を受けたプログラム実行系(11)は、通知され
た属性でスレッドを起動する(ステップ1040、ステ
ップ1090)。
【0022】スレッド属性選択基準テーブル(252)
が図4の例は、スレッド数とクラスの使用状況がスレッ
ド属性の決定に必要となることを示している。この例に
おいて、プログラム実行系状況検出部(111)を通じ
て取得したスレッド数が100未満であり、さらに、実行
履歴テーブル(251)の最新内容が図3の例の内容で
あれば、クラスAの最近実行回数5回以上とスレッド数が
100未満という図4のスレッド属性選択基準テーブル
(252)記載の条件をともに満足するので、起動する
スレッドの属性をカーネルスレッドと決定する。一方
で、プログラム実行系状況検出部(111)を通じて取
得したスレッド数が100以上であれば、起動するスレッ
ドの属性をユーザースレッドと決定する。
【0023】前記手順では、スレッド属性決定を実行履
歴と現在のリソース量の両方をもとに行ったが、変形例
として、スレッド属性選択基準テーブル(252)にど
ちらか一方の記載しか存在しない場合は、本フローで存
在しない情報の取得を行っている部分を省略するだけで
よい。
【0024】なお、スレッド属性選択基準テーブル(2
52)の設定ならびに更新を行うタイミングとして、前
記手順に示したようにプログラム実行開始直前のシステ
ム起動時に行ってもよいし、その他にはエラーが生じて
異常終了した際に毎回行ってもよいし、予め管理者が設
定した時間毎に定期的に行ってもよい。さらには、管理
者が必要と判断した場合にのみ行うことが考えられる。
【0025】本発明に係るシステムは、Java、C及びC+
+を含む種々のコンピュータプログラミング言語で記述
された全てのマルチスレッド化プログラムに適用し得る
ものである。また、並行処理単位はスレッドに限らず、
プロセスやタスクなどで並行処理を行うプログラムにも
同様に適用し得るものである。
【0026】以上、本発明の一実施形態について説明し
たが、本発明は上述した実施形態に限定されるものでは
ない。本発明は、上述した説明から可能な範囲で、ま
た、本発明の実施形態から導かれる範囲で、種々の変形
例が可能である。例えば、上述した実施形態は、ソフト
ウエアを含むものであるが、本発明は、ハードウエアと
ソフトウエアとの組み合わせ、又はハードウエアのみに
よって実装され得るものである。本発明は、様々なプロ
グラミング言語によって実装することができる。
【0027】
【発明の効果】本発明によると、カーネルスレッドとユ
ーザースレッドといったスレッド属性を個々のスレッド
の起動時にシステムの運用状況に合わせて更新し最適化
することが可能になる。しかも、プログラムのコーディ
ングの変更や再コンパイル等を行うことなくスレッド属
性を容易に変更することが可能になる。結果として、本
発明によると、マルチスレッドプログラムの走行状況を
最適化する効果を提供できる。並行処理単位はスレッド
に限らず、プロセスやタスクなどによる並行処理を同様
に最適化する効果を提供できる。
【0028】とくに本発明をJava実行系に適用する効果
は顕著である。Java実行系に対する運用中の動的最適化
技術においては、従来技術の最適化対象が単一の並行処
理単位内の高速化にとどまるという限定的なものである
のに対して、本発明をJava実行系に適用した場合にはそ
の最適化対象を複数の処理単位による並行処理環境全体
に拡大することができる。さらには、I/O応答性とシス
テム資源利用状況に最適化項目を拡大できる。また、Ja
vaプログラムが実行したJavaのクラス群(パッケージ)
や個々のクラスの名称を実行時情報として活用できるた
め、最適化が容易にかつ的確に行える効果も生まれる。
Java実行系がインタプリタ実行系であり、名称などの意
味情報を原形に近い状態で保持した中間コードで処理す
ることから、運用中の実行時において容易に識別でき、
しかもその名称が処理内容や利用資源を象徴しているた
めである。
【図面の簡単な説明】
【図1】 本発明の構成を示す図である。
【図2】 データベースの構成を示す図である。
【図3】 実行履歴テーブルの構成を示す図である。
【図4】 スレッド属性選択基準テーブルの構成を示す
図である。
【図5】 スレッド属性決定手順を示したフローであ
る。
【符号の説明】
1…運用計算機、2…監視計算機、3…ネットワーク、
11…プログラム実行系、111…プログラム実行系状
況検出部、112…実行履歴作成部、113…実行履歴
テーブル、12…プログラム、13…通信部、21…D
B更新部、22…異常判定部、23…通信部、24…標
準入出力部、25…データベース、251…実行履歴テ
ーブル、252…スレッド属性選択基準テーブル。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 里山 元章 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 中野 正樹 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 川▲崎▼ 進一郎 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 Fターム(参考) 5B098 GA02 GA05 GC01

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】処理全体を複数の処理単位に分割しこれら
    を同時に動作させるプログラム実行環境において、シス
    テム運用時にプログラムの実行状況を示す各種履歴情報
    を取得する手段と、前記取得情報と設定条件との比較を
    もってプログラムの並行処理単位の属性を決定する並行
    処理単位属性決定手段とを有することを特徴とする情報
    処理装置。
  2. 【請求項2】処理全体を複数の処理単位に分割しこれら
    を同時に動作させるプログラム実行環境において、シス
    テム運用時にプログラムの実行状況を示す各種履歴情報
    を取得ならびに蓄積工程と、前記取得情報と設定条件と
    の比較をもってプログラムの並行処理単位の属性を決定
    する工程とを有することを特徴とする情報処理方法。
  3. 【請求項3】請求項1において、並行処理単位がスレッ
    ドであり、並行処理単位属性決定手段が前記スレッドを
    ユーザースレッドとして起動するかカーネルスレッドと
    して起動するかを決定することを特徴とする情報処理装
    置。
JP2002145558A 2002-05-21 2002-05-21 情報処理装置および方法 Pending JP2003337711A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002145558A JP2003337711A (ja) 2002-05-21 2002-05-21 情報処理装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002145558A JP2003337711A (ja) 2002-05-21 2002-05-21 情報処理装置および方法

Publications (1)

Publication Number Publication Date
JP2003337711A true JP2003337711A (ja) 2003-11-28

Family

ID=29704809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002145558A Pending JP2003337711A (ja) 2002-05-21 2002-05-21 情報処理装置および方法

Country Status (1)

Country Link
JP (1) JP2003337711A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305404A (ja) * 2007-06-06 2008-12-18 Internatl Business Mach Corp <Ibm> データをバックアップするシステム、方法、およびプログラム
JP2012038359A (ja) * 2004-03-05 2012-02-23 Oracle America Inc バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置
US11403112B2 (en) 2018-11-08 2022-08-02 Ricoh Company, Ltd. Information processing apparatus, method of starting up an information processing apparatus

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012038359A (ja) * 2004-03-05 2012-02-23 Oracle America Inc バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置
JP2008305404A (ja) * 2007-06-06 2008-12-18 Internatl Business Mach Corp <Ibm> データをバックアップするシステム、方法、およびプログラム
US8874518B2 (en) 2007-06-06 2014-10-28 International Business Machines Corporation System, method and program product for backing up data
US9413857B2 (en) 2007-06-06 2016-08-09 International Business Machines Corporation System, method and program product for backing up data
US11169890B2 (en) 2007-06-06 2021-11-09 International Business Machines Corporation System, method and program product for backing up data
US11403112B2 (en) 2018-11-08 2022-08-02 Ricoh Company, Ltd. Information processing apparatus, method of starting up an information processing apparatus

Similar Documents

Publication Publication Date Title
EP1011043B1 (en) Method and apparatus for loading a java application program
JP5106036B2 (ja) コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法、コンピュータ・システム及びコンピュータ・プログラム
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
JP3989911B2 (ja) グローバル割込み待ち行列の仮想化
US7406699B2 (en) Enhanced runtime hosting
US6052707A (en) Preemptive multi-tasking with cooperative groups of tasks
US20150169346A1 (en) Method for controlling a virtual machine and a virtual machine system
US8713582B2 (en) Providing policy-based operating system services in an operating system on a computing system
EP0817047A2 (en) Generation and delivery of signals in a two-level, multithreaded system
KR20070083460A (ko) 다중 커널을 동시에 실행하는 방법 및 시스템
JP2004522234A (ja) 仮想スレッドを介したコンピューター多重タスク
US20040111729A1 (en) External event interrupt for server-side programs
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
US20050246708A1 (en) Method of assigning virtual process identifier to process within process domain
US6256752B1 (en) Method and apparatus for dynamic swappable bytecode loop in java virtual machines
US7475386B1 (en) Mechanism for disjoint instrumentation providers in a tracing framework
JP2003337711A (ja) 情報処理装置および方法
JP4820553B2 (ja) ルールに基づいてデータの決定的なディスパッチを実行する方法、コンピュータプログラムおよびコンピューティングシステム
CN117407054A (zh) 中断处理方法、电子设备和存储介质
US9135054B1 (en) Method and apparatus to migrate stacks for thread execution
JP2001282560A (ja) 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体
KR20130048504A (ko) 임계성에 기초한 파티션 스케쥴링 장치 및 방법
JPH05108380A (ja) データ処理システム
JPH01195562A (ja) 入出力装置割当て制御方式
JP2000222221A (ja) コンパイル方法および装置、並びにメソッド活動度計算方法および装置