JP2005293585A - コンピュータアプリケーションの性能を向上させる方法および装置 - Google Patents

コンピュータアプリケーションの性能を向上させる方法および装置 Download PDF

Info

Publication number
JP2005293585A
JP2005293585A JP2005096692A JP2005096692A JP2005293585A JP 2005293585 A JP2005293585 A JP 2005293585A JP 2005096692 A JP2005096692 A JP 2005096692A JP 2005096692 A JP2005096692 A JP 2005096692A JP 2005293585 A JP2005293585 A JP 2005293585A
Authority
JP
Japan
Prior art keywords
application
processor
argument
module
parallel
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
JP2005096692A
Other languages
English (en)
Inventor
Mehmet Musa
メーメット・ムサ
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005293585A publication Critical patent/JP2005293585A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 コンピュータアプリケーションの性能を向上させる方法および装置を提供する。
【解決手段】 アプリケーション起動引数リストを受け取る(5)こと、該アプリケーション起動引数リストにおいて1つまたは2つ以上の入力引数ファイルを識別する(10)こと、2つまたは3つ以上の入力引数ファイルが存在する(15)場合に、2つまたは3つ以上の並列スレッドを作成する(20)こと、および該並列スレッドを使用して前記入力引数ファイルを処理する(25)こと、を含む、コンピュータアプリケーションの性能を向上させる方法とする。
【選択図】 図1

Description

本発明は、コンピュータアプリケーションの性能を向上させる方法および装置に関する。
かつて、コンピュータアプリケーションは、大きなメインフレームシステムで実行され、パンチカード等の原始的な媒体からメモリにロードされていた。その早期の時代、コンピュータは、大部分が逐次的な方法で使用されていた。換言すると、1つのコンピュータアプリケーションがロードされ、次いで実行されることになっていた。そのアプリケーションが終了すると、次に、新たなアプリケーションをコンピュータにロードし、その後、実行することができた。このような古いコンピュータの歴史を持ち出すことはかなり奇異に見えるかもしれないが、多くのコンピュータアプリケーションは、依然として逐次的な方法で実行されていることは注目に値する。コンピュータプログラムのこの古風な実行方法は、今日、アメリカのほとんどすべての机上にコンピュータを見ることができる時代であっても続いている。
理解するのがさらに困難なことは、コンピュータアプリケーションの逐次実行の古いパラダイムが、多数のプロセッサが同時並列に動作する強力なサーバにおいても継続しているということである。これらの並列プロセッサマシンでは、コンピュータアプリケーションの実行は、依然としてシリアルな方法で行われる。
Unix(登録商標)ベースのコンピュータ環境では、コンピュータアプリケーションは、一般に、新たなコマンドラインがユーザコンソールから受け付けられるごとに実行される。この例では、ユーザがコマンドラインを入力する。それに応答して、オペレーティングシステム(Unixのジャーゴンではシェルとして知られている)に含まれるコマンドエグゼクティブ(command executive)がそのコマンドラインを解析する。コマンドラインの解析が成功すると、オペレーティングシステムに含まれるコマンドエグゼクティブは、コンピュータアプリケーションの実行可能イメージをワーキングメモリにロードする。次に、コマンドエグゼクティブは、ワーキングメモリにそのようにロードされたコンピュータアプリケーションを計算システムのプロセッサに実行させる。実行アプリケーションは、多くの場合、アプリケーションのインスタンティエーション(instantiation)(またはインスタンス)と呼ばれる。
コンピュータアプリケーションの複数のインスタンティエーションを並列に実行できる例が存在する。例えば、Unixオペレーティングシステムは、バックグラウンド実行モードを提供する。バックグラウンド実行モードを使用すると、ユーザは、コンピュータアプリケーションの数個のインスタンスをインスタンス化することができる。次いで、通常、計算システムに含まれる個々の並列プロセッサに、メモリにロードされた1つまたは2つ以上の実行可能イメージを実行させることによって、これらのインスタンスを並列に実行することが可能になる。非常に単純化した観点からすると、コンピュータアプリケーションの個々の並列インスタンスは、このタイプのバックグラウンド実行モードを使用して起動することができる。
バックグラウンド実行に関連する1つの問題は、コンピュータアプリケーションの実行が、依然として、このように起動された並列インスタンティエーションごとに、ユーザによる個々のコマンドラインの入力を必要とするということである。このタイプのバックグラウンド実行に関連した別の問題は、各インスタンティエーションの実行順序を制御できないということである。これは、コンピュータアプリケーションが入力ファイルに作用して、コンピュータアプリケーションが作成する出力ファイルをユーザの所望の順序で出力しなければならないときに大問題となる。例えば、出力デバイスに印刷出力を指示するためにバックグラウンドモードでプリント(print)コマンドを起動することがある。コンピュータユーザが所望のシーケンスで印刷出力を配列したいが、バックグラウンドで実行される印刷アプリケーションの各インスタンスは、ユーザが入力した個々のバックグラウンド印刷コマンドの順序とは関係なく出力を印刷するようにオペレーティングシステムによって許可される場合に生じるフラストレーションを想像されたい。
コンピュータアプリケーションの性能を向上させる方法および装置は、アプリケーション起動引数リストを受け取ることを含む。1つまたは2つ以上の入力引数ファイルが、引数リストにおいて識別される。2つまたは3つ以上の入力引数ファイルが引数リストに存在する場合に、2つまたは3つ以上の並列スレッドが作成される。次いで、入力引数ファイルが、並列スレッドを使用して処理される。
以下では、添付図面および図と共にいくつかの代替的な実施の形態を説明する。添付図面および図において、同じ数字は同じ要素を示す。
図1は、コンピュータアプリケーションの性能を向上させる方法の一代表的な実施の形態を示すフロー図である。この代表的な方法によると、アプリケーションが最初にアプリケーション起動引数リストを受け取ると(ステップ5)、コンピュータアプリケーションの性能が向上される。1つまたは2つ以上の入力引数ファイルは、通常、起動引数リストにおいて識別される(ステップ10)。2つまたは3つ以上の入力引数ファイルが起動引数リストにおいて識別されると(ステップ15)、2つまたは3つ以上の並列スレッドが作成される(ステップ20)。次いで、入力引数ファイルが、並列処理スレッドによって処理される(ステップ25)。例えば、個々の1つのスレッドが、通常、各入力引数ファイルについて作成される。本方法の一変形によると、入力ファイル引数は、任意の方法で並列スレッドの1つに割り当てられることに留意すべきである。例えば、入力ファイル引数は、ランダムに並列スレッドに割り当てることができる。
コンピュータアプリケーションの性能を向上させるこの代表的な方法は、コンピュータプログラムで具現化することができる。実際には、本方法を具現化するコンピュータアプリケーションは、通常、或る形式のタスクマネージャを含む。このタスクマネージャは、アプリケーションが受け取った起動引数リストにおいて識別された各入力引数ファイルについて処理スレッドを作成することができるものである。このようなコンピュータプログラムの一例は、コマンドラインアプリケーションである。このようなコンピュータプログラムのさらに別の例は、グラフィカルユーザインタフェースをサポートする汎用アプリケーションである。したがって、本方法は、コマンドラインアプリケーションおよびグラフィカルユーザインタフェース(GUI)アプリケーションの双方に適用することができる。タスクマネージャは、必ずしも、処理スレッドを直接作成できない場合があることに留意すべきである。逆に、タスクマネージャは、オペレーティングシステムが提供する処理スレッド管理機構と相互作用することができる。
コマンドラインアプリケーションは、通常、コンピュータ可読媒体にファイルとして記憶される。オペレーティングシステム(例えば、UNIX)は、通常、コマンドラインパーサを含む。このコマンドラインパーサは、コンソールから英数字文字列を受け取ることによって人間のユーザと対話する。一例の実施の形態によると、コマンドラインパーサは、コンピュータ可読媒体に記憶された実行可能ファイルの名前を識別する。これは、受け取った英数字文字列をスキャンすることによって行われる。受け取った英数字文字列のスキャンは、通常、事前に設定された或る語彙フォーマットに従って行われる。コマンドラインパーサは、次に、コンソールから受け取った英数字文字列に含まれ得る付加引数を識別する。コマンドラインパーサは、タスクエグゼクティブに実行可能ファイルの名前を渡す。
一例の実施の形態によると、タスクエグゼクティブは、コンピュータ可読媒体に記憶されている識別されたファイルの実行可能イメージをメモリにロードする。実行可能イメージがメモリにロードされると、タスクエグゼクティブは、コンピュータシステムのプロセッサに、実行可能イメージに含まれる命令を実行させる。また、オペレーティングシステムは、プロセッサが、メモリにロードされた実行可能イメージの実行を開始すると、コマンドラインパーサによって識別されたあらゆる付加引数にアクセスできるようにする。この説明は、UNIXのようなオペレーティングシステムを表すが、本方法は、他の形式のコマンドラインプログラムの実行が利用される場合にも適用することができる。したがって、本明細書で提供されるこの説明の多くが、UNIXのようなオペレーティングシステムに適用可能であっても、本明細書に添付の特許請求の範囲の真の範囲および精神は、さまざまな実施の形態を含むように意図されている。このようなさまざまな実施の形態は、必ずしも、UNIX互換性を有する必要はない。
多くのコマンドラインアプリケーションが、人間のユーザがコマンドラインの引数として指定した入力ファイルに対して作用する。例えば、「print(印刷)」は、ユーザがファイルの内容を出力デバイス(例えば、プリンタ)に送信できる一般的なコマンドラインアプリケーションである。この説明中、パーセント文字(%)は、オペレーティングシステムのプロンプトを表すのに使用される。ユーザは、オペレーティングシステムのプロンプトに対してコマンドで応答することが予想される。ユーザが入力したコマンドは、次に、コマンドラインパーサによってスキャンされる。printコマンドラインアプリケーションについて、一般的なコマンドラインは以下のように表すことができる。
(a) %print ファイル1
したがって、コマンド例(a)は、「ファイル1」の名前を有するファイルの内容の印刷を望んでいるユーザによって入力される。このprintコマンドが実行されると、ユーザは、次に、新たなコマンドの入力を促される。ユーザが数個の異なるファイルの内容の印刷を望んでいる場合、ユーザは、コマンド(a)として紹介したコマンドフォーマットに従って、対応する個数のprintコマンドを入力する必要がある。通常、ユーザ対話は、待ち状態のコマンドが完全に実行されるまで一時停止される。したがって、ユーザは、先に入力したコマンドが完全に実行されるとすぐに新たなコマンドプロンプトを待って、これらのコマンドを逐次入力する必要がある。
本方法によると、新たなコマンドラインフォーマットは、printコマンドを高度化したものによってサポートすることができる。例えば、新たなコマンドラインフォーマットは、以下のコマンド(b)で紹介するように、複数の入力ファイル引数が続くコマンド名(例えば「print」)を含む。したがって、この新たなフォーマットに対応する一般的なコマンドラインは、以下のように表すことができる。
(b) %print ファイル1 ファイル2 ファイル3
この新たなコマンドラインフォーマットで提供されるコマンドを解釈することによって、本方法によるprintコマンドが実行される。printコマンドは、コンピュータ可読媒体のファイルに記憶された1つまたは2つ以上の命令シーケンスとして具現化されて、メモリにロードされ、プロセッサにそのコンピュータプログラムを実行させる。プロセッサは、printコマンドを具現化した命令シーケンスの実行を開始すると、複数の入力ファイル引数を受け取る。コマンド(b)によって表される例示の使用ケースによると、入力ファイルの引数は、「ファイル1」、「ファイル2」、および「ファイル3」となる。本方法によると、プロセッサは、printコマンドを具現化する命令シーケンスの実行を続けるにつれて、複数の並列処理スレッドを作成する。各入力ファイル引数は、次に、対応する並列処理スレッドによって処理される。「print」コマンドは、本方法を具現化するコマンドラインアプリケーションの一例にすぎないことに留意すべきである。他のコマンドラインアプリケーションには、asm(アセンブラ)、cc(「c」言語コンパイラ)、pc(Pascal言語コンパイラ)、lp(ラインプリンタユーティリティ)、およびzip(ファイル圧縮ユーティリティ)が含まれ得るが、必ずしもこれらに限定されるものではない。本方法は広く適用することができ、コマンドラインアプリケーションのいずれの例も、本明細書では、例示のために提示されており、本明細書に添付の特許請求の範囲を限定することを意図するものでないことにさらに留意すべきである。また、本明細書に添付の特許請求の範囲は、例示の目的で本明細書に提示したコマンドラインのあらゆる特定の例(例えば、上記のコマンド(a)およびコマンド(b))の構造によっても、また内容によっても限定されるものでもない。
図2は、2つまたは3つ以上の並列処理スレッドを作成する方法の一例の実施の形態を示すフロー図である。プロセッサは、コンピュータアプリケーションを具現化する1つまたは2つ以上のさまざまな命令シーケンスを実行すると、起動引数リストにおいて2つまたは3つ以上の入力ファイル引数が識別される場合に、2つまたは3つ以上の並列処理スレッドを作成する。本方法の代替的な一例の実施の形態によると、作成できる並列処理スレッドの最大数を決定することによって、2つまたは3つ以上の並列処理スレッドの作成が行われる(ステップ30)。次に、多数の並列処理スレッドが、決定された最大数の並列処理スレッドに従って作成される(ステップ35)。本方法を具現化するどの特定のコンピュータアプリケーションもコア機能を含む。このコア機能は、並列処理スレッドのそれぞれに導入され、処理スレッドのそれぞれがアプリケーションのコア機能を実行することを可能にする。処理スレッドが本方法を具現化するコンピュータアプリケーションの独立したインスタンティエーションであると誤ってみなされる可能性があることに留意することは重要である。より適切な観点は、各処理スレッドを、通常ならば複数の入力引数ファイルを受け付けることができないアプリケーションに含まれるコア機能のインスタンティエーションとみなすことである。
各処理スレッドは、一例の実施の形態によると、オペレーティングシステムにスレッド割り当てを要求することによって設定される。このようなスレッド割り当ては、この例によると、1つまたは2つ以上の命令シーケンスを記憶するのに使用できるメモリの割り当てを含む。したがって、コア機能のインスタンティエーションの作成は、割り当てられたメモリに、コア機能を具現化する1つまたは2つ以上の命令シーケンスをロードし、次いで、コア機能の処理資源をスケジューリングするようにオペレーティングシステムに要求することによって行われる。したがって、プロセッサがコア機能の命令シーケンスの実行を開始すると、コンピュータアプリケーションのコア機能が実現される。
図3は、並列処理スレッドの最大数を決定する方法の代替的な実施の形態を示すフロー図である。本方法の一代替的な実施の形態によると、作成できる並列処理スレッドの最大数は、計算システムで利用可能なアクティブプロセッサの個数に従って決定される(ステップ40)。現代、ローエンドのワークステーションおよびサーバでさえも、複数の並列プロセッサを含むことができる。マルチプロセッサ計算システムでは、処理資源は、通常、オペレーティングシステムによって管理される。したがって、オペレーティングシステムに含まれるタスクマネージャは、計算システム内のプロセッサのアクティビティを認識する状態にある。一例示の実施の形態によると、計算システムで利用可能なアクティブプロセッサの個数は、オペレーティングシステムによって管理される環境変数を調べることによって決定される。さらに別の代替例の実施の形態によると、作成できる並列処理スレッドの最大数は、特定の環境内で作成できる並列スレッドの最大数についてのユーザごとのシステム制限に従って設定される(ステップ45)。オペレーティングシステムの一例は、計算システムを使用できるユーザごとに個々のパーティションを提供する。これら個々のパーティションのそれぞれは、オペレーティングシステムが保持するさまざまな環境変数によって管理される。このような1つの環境変数は、特権ユーザ(UNIXのようなシステムでは、これはルートとして一般に知られている)が設定するユーザごとのシステム制限を含むことができる。したがって、特権ユーザは、特定のパーティション内に作成できる並列処理スレッドの最大数を指定することができる。ユーザごとのシステム制限は、一般に、不定期に変更されるだけである。通常、アプリケーションは、このようなユーザごとのシステム制限を変更することができない。さらに別の例示の代替的な実施の形態によると、ユーザ制御される最大並列スレッドの環境変数は、作成できる並列スレッド数を設定するのに使用される(ステップ50)。オペレーティングシステムの一例の実施の形態は、最大並列スレッド(MPT)環境変数として知られている環境変数を保持する。MPT変数の実際の名前は、どのタイプのオペレーティングシステムが計算システムの制御に使用されるかに応じて変化し得る。例えば、UNIXのようなオペレーティングシステムでは、MPT変数は、スレッド最大数(MAX_NUMBER_OF_THREADS)変数と呼ばれる。オペレーティングシステムのこの例の実施の形態によって、ユーザ(すなわち、特定のユーザパーティション内で実行されるアプリケーション)は、MPT環境変数に記憶された値を変更することが可能になる。したがって、本方法のこの例示の代替的な実施の形態は、このようなMPT環境変数に従って作成できる並列処理スレッドの最大数を設定する。本方法のこれらのさまざまな代替的な実施の形態は、例示のために本明細書に提示されるものであり、本明細書に添付の特許請求の範囲を限定するためのものと意図するものではない。
図4は、並列処理スレッドの最大数を決定する方法の他の代替的な実施の形態を示すフロー図である。このような他の代替的な一実施の形態によると、オペレーティングシステムによって保持される1つまたは2つ以上の環境変数(ステップ55)は、本方法を具現化するアプリケーションを作成することを可能にする最大数の並列処理スレッドを設定するのに利用される。オペレーティングシステムの任意の特定の実施の形態が保持できるさまざまなタイプの環境変数のすべてを列挙することは困難である。しかしながら、本明細書に添付の特許請求の範囲は、アプリケーションが作成できる並列処理スレッドの最大量が、特定のオペレーティングシステムが保持するさまざまなタイプの環境変数の1つまたは2つ以上に従って設定される派生的な方法を包含するように意図されている。別の代替的な実施の形態によると、本方法を具現化するアプリケーションは、アプリケーション起動時にアプリケーションが受け取るアプリケーション起動引数リストに含まれる最大スレッド指示子を引数として受け取る(ステップ60)。
図5は、2つまたは3つ以上の並列処理スレッドを作成する方法の一例示の代替的な実施の形態を示すフロー図である。本方法のこの代替的な実施の形態によると、入力引数ファイル数が決定される(ステップ65)。本方法を具現化する一アプリケーションは、一代替的な実施の形態によると、アプリケーション起動引数リストに含まれる入力引数ファイルの個数を単にカウントする。一代替的な実施の形態によると、アプリケーションは、オペレーティングシステムに依拠して、入力引数ファイル数のカウントを提供する(例えば、UNIXは引数カウント変数「argc」を提供する)ことができる。入力引数ファイルの個数が決定されると、この代替的な方法は、対応する個数の並列処理スレッドを作成する(ステップ70)。並列処理スレッドは、この例示の代替的な実施の形態によると、図2に関して上記に提供した説明に従って作成される。
図6は、並列処理スレッドを使用して入力ファイルを処理する方法の一例の実施の形態を示すフロー図である。コンピュータアプリケーションのコア機能のインスタンティエーション(すなわち、複数の並列処理スレッドの1つ)が、コンピュータシステムの処理資源によって実行されると、そのインスタンティエーションは、通常、プロセッサに、入力ファイルから情報をフェッチさせる。
したがって、並列処理スレッドを使用して入力ファイルを処理するこの例の方法は、コンピュータアプリケーションが作成するさまざまな並列処理スレッドに入力引数ファイルを割り当てる(ステップ75)。アプリケーションが受け取る引数リストに含まれる各ファイル引数は、並列処理スレッドの1つにディスパッチされる。並列処理スレッドは、どのファイルを入力として使用するかを決定する手段として、自身が受け取ったファイル引数を使用する。入力引数ファイルを処理スレッドに割り当てることは、本方法の一変形によると、集中プロセスによって行われる。例えば、本方法を具現化するコンピュータアプリケーションは、タスクマネージャプロセスを含むことができる。このようなタスクマネージャプロセスは、一代替的な実施の形態によると、特定の入力引数ファイルに作用するように特定の並列処理スレッドに指示する。本方法のさらに別の代替的な変形によると、入力引数ファイルの割り当ては分配方法で行われる。例えば、本方法を具現化するコンピュータアプリケーションは、未処理の入力ファイル引数を処理キューに置くことができる。したがって、特定の並列処理スレッドは、並列処理スレッドが処理キューから取り出すファイル引数に作用することができる。
さらに別の例の代替的な方法によると、特定の並列処理スレッドによって生成される出力は、起動時にアプリケーションが受け取ったアプリケーション起動引数リストに含まれる引数シーケンスと一致したシーケンスで生成されない場合がある。この問題を軽減するために、この代替的な方法は、複数の並列処理スレッドによって生成された出力を収集し(ステップ80)、アプリケーション起動引数リストに含まれる入力ファイル引数の順序に従って出力を編成する(ステップ85)。
図7は、コンピュータアプリケーションの性能を向上させる方法の一代替的な実施の形態を示すフロー図である。コンピュータアプリケーションの設計に組み込むことができる本方法の実施の形態をこれまで説明してきた。この代替的な方法は、より適切にオペレーティングシステムに組み込まれる。例えば、コマンドラインパーサが、コンピュータアプリケーションの性能を向上させるこの代替的な方法を具現化することができる。一例の方法によると、コンピュータアプリケーションの性能は、アプリケーション起動指令を受け取る(ステップ90)ことによって向上される。一例の方法によると、起動指令は、コンソールから英数字文字列として受け取られる。アプリケーション起動指令は、本方法の一変形によると、コンピュータアプリケーションの名前(例えば、「print」)および起動引数リストを含む。この代替的な方法によると、一定のコンピュータアプリケーションは、「候補アプリケーション」とみなされる。候補アプリケーションは、複数の並列インスタンティエーションにおいて実行できるアプリケーションを含み、アプリケーションの各並列インスタンティエーションは、特定の入力引数ファイルに作用することができる。したがって、本方法は、アプリケーション起動指令で指定されたアプリケーションがこのような候補アプリケーションであるかどうかを判断する(ステップ95)。
図8は、アプリケーションが向上対象の候補であるかどうかを判断する方法の一例の実施の形態を示すフロー図である。この例の方法によると、アプリケーション起動指令で指定されたアプリケーションが、候補アプリケーションの一覧と比較される。指定されたアプリケーションが候補アプリケーションの一覧に発見されると(ステップ125)、指定されたアプリケーションは、候補アプリケーションであると宣言される(ステップ130)。すでに説明したように、候補アプリケーションは、複数の並列インスタンティエーションにおいて実行できるアプリケーションを含む。一例の実施の形態によると、コマンドラインパーサは、指定されたアプリケーションを候補アプリケーションの一覧と比較する機構を提供する。
図7は、さらに、コンピュータアプリケーションの性能を向上させるこの例の方法に従って、アプリケーション起動引数リストが受け取られる(ステップ100)ことも示している。一例の実施の形態によると、コマンドラインパーサは、アプリケーション起動指令に含まれる入力ファイル引数を識別するために、アプリケーション起動指令をスキャンすることができる。アプリケーション起動指令に含まれる2つまたは3つ以上の入力ファイル引数が存在する場合(ステップ105)、この例の方法は、アプリケーションの並列インスタンティエーションを起動する(ステップ110)。引数リストの一部は、アプリケーションの各インスタンティエーションへ送られる(ステップ115)。アプリケーションの各インスタンティエーションは、特定の入力ファイル引数に作用することが可能になる。この説明から理解できるように、多種多様なコンピュータアプリケーションをこのようにして開始することができる。本方法を組み込むために、コンピュータアプリケーション自体を変更する必要はない。オペレーティングシステム(例えば、オペレーティングシステムに含まれるコマンドラインパーサ)は、コンピュータアプリケーションの性能を向上させるこの代替的な方法を具現化することができる。
図9は、コンピュータアプリケーションの並列インスタンティエーションを起動する一例の方法を示すフロー図である。コンピュータアプリケーションの並列インスタンティエーションを起動するこの代替例の方法によると、並列処理スレッドの最大数が決定される(ステップ150)。この並列処理スレッドの最大数は、インスタンス化されるコンピュータアプリケーションの並列インスタンティエーションの個数を制限するのに使用される(ステップ155)。並列処理スレッドの最大数の決定は、本明細書で前述したさまざまな方法および技法を使用して行うことができる。
図10は、入力引数ファイルを処理するシステムの一例の実施の形態を示すブロック図である。この例の実施の形態によると、システム(例えば、計算システム)600は、1つまたは2つ以上のプロセッサ605、コンピュータ可読媒体610、およびメモリ615を備える。一代替的な実施の形態によると、システム600は、さらに、引数リストを受け取るコンソール601も含む。また、システム600のこの例の実施の形態には、1つまたは2つ以上の機能モジュールも含まれる。機能モジュールは、通常、命令シーケンスとして具現化される。機能モジュールを実施する命令シーケンスは、一代替的な実施の形態によると、メモリ615に記憶される。用語「最低限、プロセッサにさせる(minimally causes the processor)」およびその変形したものは、プロセッサ605が特定の機能モジュール(すなわち、命令シーケンス)を実行する際に、プロセッサ605によって実行される機能を制限なく列挙したものとして機能するように意図されていると、読み手には助言をしておく。したがって、添付の特許請求の範囲に規定されたものに加えて、特定の機能モジュールがプロセッサ605に機能を実行させる一実施の形態は、本明細書に添付の特許請求の範囲に含まれることになる。
本方法に従って入力引数ファイルの処理を可能にする、これまでに説明した機能モジュール(すなわち、それら機能モジュールに対応する命令シーケンス)は、一代替的な実施の形態によると、コンピュータ可読媒体上に与えられる。このような媒体の例には、ランダムアクセスメモリ、読み出し専用メモリ(ROM)、コンパクトディスクROM(CD ROM)、フロッピィ(登録商標)ディスク、ハードディスクドライブ、磁気テープ、およびデジタル多用途ディスク(DVD)が含まれるが、これらに限定されるものではない。このようなコンピュータ可読媒体は、単独でまたは組み合わせて、スタンドアロン製品を構成することができ、本明細書で提示した技法および教示に従って入力引数ファイルを処理できるデバイスに汎用計算プラットフォームを変換するのに使用することができる。したがって、本明細書に添付の特許請求の範囲は、本方法および本明細書で説明した教示のすべての実行を可能にするような命令シーケンスで与えられるこのようなコンピュータ可読媒体を含むことになる。
図10は、さらに、システム600の一代替的な実施の形態に従って、アプリケーション210と呼ばれる機能モジュールがメモリ615に含まれることも示している。一代替的な実施の形態によると、アプリケーション210は、引数パーサ215、タスクマスタ233、および機能コア230と呼ばれる他の機能モジュールを含んでいる。
図11は、入力引数ファイルを処理するシステムの一例示の実施の形態のオペレーションを示すデータフロー図である。この例示の実施の形態によると、プロセッサ605は、コマンドパーサ200を含むオペレーティングシステム300を実行する。コマンドパーサは、時に、シェルとして知られている。シェル200は、プロセッサ605によって実行されると、最低限、プロセッサ605に引数リストを受け取らせる。通常、シェル200は、最低限、プロセッサ605にユーザからのコマンドも受け取らせる。このようなコマンドは、通常、ユーザが実行を望むアプリケーションの名前を含む。したがって、シェル200は、特定のアプリケーション、例えば、この例示の実施の形態のアプリケーション210を識別すると、さらに、プロセッサ605に、オペレーティングシステム300に含まれるタスクエグゼクティブ630も実行させる。シェル200とタスクエグゼクティブ630との間のこの相互作用は、単なる例示の目的で本明細書に提示されるものであり、本明細書に添付の特許請求の範囲を限定するためのものでないことに留意すべきである。実際には、本システム600は、コマンドの入力およびコマンドに従ったその後の特定のアプリケーションの実行をユーザに可能にするさまざまなメカニズムを含むことができる。この説明全体を通じて留意すべき重要なことは、この例示の実施の形態によると、プロセッサ605がメモリ615に記憶されたアプリケーション210を実行するということである。プロセッサ605は、アプリケーション210の実行を開始すると、当該アプリケーション210によって、最低限、引数リストを受け取る(205)ようにされる。プロセッサ605は、直接または参照(例えば、ポインタ)によって引数リストを受け取る。
アプリケーション210のこの例示の実施の形態には、引数パーサ215が含まれる。引数パーサは、プロセッサ605によって実行されると、最低限、プロセッサに、シェル200から受け取った(205)引数リストにおいて1つまたは2つ以上の入力引数ファイルを識別させる。引数パーサ215は、アプリケーション210の一代替的な実施の形態によると、最低限、プロセッサ605に、シェル200から受け取った(205)引数リストから個々の入力ファイル引数を抽出させる。これらの入力ファイル引数は、ファイルリストバッファ220に記憶することができる。引数パーサのさらに別の代替的な実施の形態によると、引数パーサ215は、さらに、最低限、プロセッサ605に、引数リストから最大スレッド指示子を抽出させる。この最大スレッド指示子は、次に、アプリケーション210のこの例示の実施の形態に含まれるタスクマネージャ233に提供される(265)。
アプリケーション210のこの例示の実施の形態に含まれる機能コアモジュール230は、プロセッサ605によって実行されると、最低限、プロセッサに、コンピュータ可読媒体(CRM)に記憶された入力ファイルに従って、出力ストリームをコンピュータ可読媒体へ送信させる。一般に、機能コアモジュール230は、アプリケーション210のさまざまな実施の形態に応じて変化する。機能コアモジュール230のこのような変化は、通常、本明細書で説明した例示の実施の形態が表すタイプのアプリケーション210に対応する。例えば、アプリケーション210が印刷アプリケーションである場合、機能コアモジュール230は、プロセッサ605によって実行されると、最低限、プロセッサ605に、入力ファイルの表示を出力デバイス(例えば、プリンタ)へ送信させる命令を含む。さらに別の例によると、アプリケーション210が、アセンブリ言語の命令文をバイナリファイルに変換するアセンブラである場合に、機能コアモジュール230は、プロセッサ605によって実行されると、最低限、プロセッサ605に、入力ファイルに含まれるアセンブリ言語の命令文をバイナリ命令シーケンスファイルに変換させる命令を含む。機能コアモジュール230のさまざまな実施の形態で明らかにすることができる変形の例は2つだけである。この説明にこれらの例を導入することが本明細書に添付の特許請求の範囲に適用できる方法および装置を示すためであることを強調することは重要である。機能コアモジュール230のこれらの例および他のこのような例は、添付の特許請求の範囲を限定するためのものではない。
この例示の実施の形態のタスクマスタモジュール233は、プロセッサ605によって実行されると、最低限、プロセッサ605に、機能コアモジュール230の1つまたは2つ以上のインスタンティエーションを作成させ、プロセッサ605が引数パーサ215を実行した時にプロセッサ605によって識別された入力引数ファイルを機能コアモジュール230の対応するインスタンティエーションへ送信させる(250、260)。さらに、タスクマスタモジュール233は、最低限、プロセッサ605(または別の代理プロセッサ(assignee processor))に、機能コアモジュールの各インスタンティエーションを実行させる。一代替的な実施の形態によると、タスクマスタモジュール233は、オペレーティングシステム300に含まれるタスクエグゼクティブ630にスレッド要求240をディスパッチすることによって、プロセッサ605にインスタンティエーションを作成させる。これに応じて、タスクマスタ233は、通常、ロードポインタ245を受け取る。次に、タスクマスタ233は、機能コアモジュール230をコアイメージとして取り出し、このコアイメージをロードポインタ245に従ってメモリにロードする。タスクマスタ233とタスクエグゼクティブ630との間の他の通信により、システムに含まれ得るいくつかの並列プロセッサの1つを使用して特定のインスタンティエーションの実行が可能になる。
また、図11は、さらに、タスクマスタ233が、一代替的な実施の形態に従って、最低限、プロセッサ605に、最大スレッド数値235を受け取らせるタスクマスタ233も示している。この代替的な実施の形態によると、タスクマスタモジュール233は、まず、最低限、プロセッサ605に、システムに作成できる並列スレッドの最大数を決定させ、次いで、最低限、プロセッサ605に、決定した並列スレッドの最大数に応じて、機能コアモジュール230の多数のインスタンティエーションを作成させることによって、機能コアモジュール230の1つまたは2つ以上のインスタンティエーションをプロセッサ605に作成させる。さらに別の代替的な実施の形態によると、タスクマスタモジュール233は、最低限、プロセッサ605に、引数パーサ215から受け取った最大スレッド指示子265に従って機能コアモジュール230の多数のインスタンティエーションを作成させる。
図12は、最大スレッド決定機能の一実施の形態のオペレーションを説明するデータフロー図である。さらに別の代替的な実施の形態によると、タスクマスタモジュール233は最大スレッド決定機能305を含む。最大スレッド決定機能305は、プロセッサ605によって実行されると、さまざまなシステム変数および/または環境変数を調べることによって、最低限、プロセッサ605に、作成できる並列スレッドの個数を決定させる。例えば、最大スレッド決定機能305の一代替的な実施の形態は、最低限、プロセッサ605に、プロセッサカウント310をオペレーティングシステム300に要求することを行わせる。これに応じて、オペレーティングシステム300は、計算システムで利用可能なアクティブプロセッサの個数の表示を提供する(315)。最大スレッド決定機能305は、次いで、最低限、プロセッサ605に、オペレーティングシステム300が提供するアクティブプロセッサの個数315の表示を最大スレッド数235として設定させる。さらに別の代替的な実施の形態によると、最大スレッド決定機能305は、プロセッサ605によって実行されると、最低限、プロセッサ605に、オペレーティングシステム300が提供するユーザごとの最大並列スレッド制限325に保持される値を最大スレッド数235として設定させる。さらに別の代替的な実施の形態によると、最大スレッド決定機能305は、最低限、プロセッサ605に、ユーザ制御される最大スレッド330の状態変数を、作成できるスレッドの最大数235の基礎として使用させる。そして、さらに別の代替例の実施の形態によると、プロセッサ605が最大スレッド決定機能305を実行すると、最低限、プロセッサ605に、オペレーティングシステム300が提供できる1つまたは2つ以上の他の環境変数345を使用させることが行われる。
図13は、出力オーガナイザを含むアプリケーションの代替的な例示の実施の形態を示すデータフロー図である。上述したように、機能コアのさまざまな並列インスタンティエーションからの出力は、必ずしも、所望のシーケンスで生成されないことがある。したがって、アプリケーション210のこの代替的な例示の実施の形態は、さらに、出力オーガナイザモジュール360を備える。出力オーガナイザモジュール360は、プロセッサ605によって実行されると、最低限、プロセッサ605に、タスクマスタ233がインスタンス化した機能コア230の1つまたは2つ以上のインスタンティエーション(280、285)からの出力ファイル(365、370)を収集させる。各インスタンティエーションからの出力は、アプリケーション210が最初に起動された時にアプリケーション210が受け取った引数リストに含まれる入力ファイル引数の順序に従って編成される。一代替例の実施の形態によると、出力オーガナイザ360は、プロセッサ605が引数パーサ215を実行する時にプロセッサ605によって作成されたファイルリストバッファ220で発見されたファイル引数のシーケンスに従って出力を順序付ける。
また、図10は、さらに別の代替的な実施の形態に従って、入力引数ファイルを処理するシステム600が、1つまたは2つ以上のプロセッサ605、コンピュータ可読媒体610、およびメモリ615を備えることも示している。この代替的な実施の形態によると、メモリには、オペレーティングシステム430を含む命令シーケンスとして具現化される機能モジュールが含まれる。この代替的な実施の形態によると、オペレーティングシステムは、コマンドパーサ400およびタスクエグゼクティブ435を含む。さらに別の代替的な実施の形態によると、オペレーティングシステムは、さらに、ファイルマネージャ440を含む。さらに別の代替的な実施の形態によると、ファイルを処理するシステム600は、さらに、ユーザからアプリケーション起動指令を受け取るのに使用できるコンソール601を含む。
図14は、入力引数ファイル処理システムの一代替的な実施の形態のオペレーションを示すデータフロー図である。この代替的な実施の形態のコマンドパーサ400は、時にシェルと呼ばれ、ユーザと対話することができる。したがって、コマンドパーサ400は、プロセッサ605によって実行されると、最低限、プロセッサ605に、起動指令405を受け取らせる。起動指令405は、通常、コンピュータ可読媒体(CRM)450に記憶されたアプリケーションの名前を含む。さらに、コマンドパーサ400は、プロセッサ605によって実行されると、最低限、プロセッサ605に、引数リスト410を受け取らせる。コマンドパーサ400の一代替的な実施の形態によると、引数リスト410は、起動指令405に含まれることに留意すべきである。これらは、コマンドパーサ400のさまざまな実施の形態の単なる例にすぎない。これらの例の実施の形態は、本明細書に添付の特許請求の範囲を限定するためのものではない。
この例の実施の形態のコマンドパーサ400は、プロセッサ605によって実行されると、最低限、プロセッサに、起動指令405に含まれるアプリケーションを識別させる。コマンドパーサ400は、さらに、最低限、プロセッサ605に、引数リスト410の1つまたは2つ以上の入力引数ファイルを識別させる。コマンドパーサ400は、さらに、最低限、プロセッサ605に、複数のロード指令420および対応するインスタンティエーション引数リスト425を生成させる。これらは、次に、オペレーティングシステム430に含まれるタスクエグゼクティブ435に利用可能にされる。起動指令405で指定されたアプリケーションが向上対象の候補であり、かつ、2つまたは3つ以上の入力引数ファイルが引数リスト410に存在する場合に、コマンドパーサ400は、複数のロード指令420および対応するインスタンティエーション引数リスト425を生成することに留意すべきである。コマンドパーサ400の一代替的な実施の形態によると、コマンドパーサ400は、最低限、プロセッサ605に、起動指令405に指定されたアプリケーションが候補アプリケーションリスト415に含まれるかどうかを判断させることによって、最低限、プロセッサ605に、アプリケーションが向上対象の候補であるかどうかを判断させる。図に提示する候補アプリケーションのどの特定の例も添付の特許請求の範囲を限定するためのものでないことに留意すべきである。
さらに別の例の代替的な実施の形態によると、コマンドパーサ400は、プロセッサ605によって実行されると、生成できる並列処理スレッドの最大数をまず決定することによって、最低限、プロセッサ605に、複数のロード指令420および対応するインスタンティエーション引数リスト425を生成させる。多数のロード指令420および対応するインスタンティエーション引数リスト425は、次に、並列処理スレッドの決定された最大数に従って生成される。コマンドパーサ400のさまざまな代替的な実施の形態は、本明細書で提供した他の教示に従って並列処理スレッドの最大数を決定する。例えば、図12について説明したような並列処理スレッドの最大数の決定を行うこのコマンドパーサ400の実施の形態がある。したがって、この代替的な実施の形態のコマンドパーサ400は、当該実施の形態に含まれる最大スレッド決定機能305から最大スレッド数235を受け取る。コマンドパーサ400のさらに別の例の実施の形態は、引数リスト410に含まれる最大スレッド指示子に従って並列処理スレッドの最大数を設定する。この代替的な例の実施の形態は、起動指令405および引数リスト410をコマンドパーサ400に運ぶ際に最大スレッド指示子を指定することをユーザに可能にする。
さらに別の代替例の実施の形態によると、コマンドパーサ400は、プロセッサ605によって実行されると、最低限、プロセッサ605に、引数リスト410に含まれる入力ファイル引数の個数を決定させることによって、最低限、プロセッサ605に、複数のロード指令420および対応するインスタンティエーション引数リスト425を生成させる。次いで、多数のロード指令420および対応するインスタンティエーション引数リスト425が、入力ファイル引数の決定された個数に従って生成される。
この例の実施の形態のタスクエグゼクティブ435は、プロセッサ605によって実行されると、最低限、プロセッサ605に、ロード指令420に指定されたアプリケーションの個々のインスタンティエーションを作成させる。これは、一代替的な実施の形態によると、最低限、プロセッサ605に、コンピュータ可読媒体450からアプリケーションの実行可能イメージを取り出させる(455)ことによって行われる。通常、プロセッサ605は、オペレーティングシステム430の一代替的な実施の形態に含まれるファイルマネージャ440を実行する。したがって、タスクエグゼクティブ435は、最低限、プロセッサに、ファイルマネージャ440からアプリケーションの実行可能イメージを受け取らせ(460)、続いて、そのアプリケーションをメモリにロードさせる(465、470)。タスクエグゼクティブ435は、さらに、最低限、プロセッサ605に、各アプリケーションインスタンス(480、485)の実行をスケジューリングさせる。このような実行は、一代替例の実施の形態によると、代理プロセッサによって実行される。一代替的な実施の形態によると、ファイルを処理するシステム600は複数のプロセッサ605を含む。したがって、この代替的な実施の形態のシステム600に含まれるプロセッサ605の1つは、アプリケーションのインスタンス(480、485)を実行するように割り当てられる。図示した一実施の形態によると、このようなアプリケーションは、代理プロセッサによって実行されると、最低限、代理プロセッサに、出力ストリームをコンピュータ可読媒体450へ送信させる。最低限、代理プロセッサに、コンピュータ可読媒体450に記憶された入力ファイルに従って出力ストリームを生成させることが行われる。
ファイル処理システム600のさらに別の代替的な例の実施の形態は、オペレーティングシステム430に出力オーガナイザ490を含む。この代替的な例の実施の形態によると、さらに、コマンドパーサ400は、プロセッサ605によって実行されると、最低限、プロセッサ605に、順序リスト491を出力オーガナイザ490へ提供させる。この代替的な実施の形態のファイル処理システム600で実行されるアプリケーションインスタンス(480、485)は、出力オーガナイザ490に出力(482、487)を提供するように指示される。出力オーガナイザ490は、プロセッサ605によって実行されると、最低限、プロセッサ605に、アプリケーションの複数のインスタンティエーションから受け取った出力(482、487)をコマンドパーサ400から受け取った順序リスト491に従って編成させる。さらに、出力オーガナイザ490は、最低限、プロセッサ605に、順序付けられた出力ストリーム500を生成させる。
本方法および本装置をいくつかの代替的な例示の実施の形態の観点で説明してきたが、当業者には、本明細書を読み図面を検討することにより、それらの代替物、変更、並べ替え、および等価物が明らかになると考えられる。したがって、本明細書に添付の特許請求の範囲の真の精神および範囲は、このようなすべての代替物、変更、並べ替え、および等価物を含むことが意図されている。
コンピュータアプリケーションの性能を向上させる方法の一代表的な実施の形態を示すフロー図である。 2つまたは3つ以上の並列処理スレッドを作成する方法の一例の実施の形態を示すフロー図である。 並列処理スレッドの最大数を決定する方法の代替的な実施の形態を示すフロー図である。 並列処理スレッドの最大数を決定する方法の他の代替的な実施の形態を示すフロー図である。 2つまたは3つ以上の並列処理スレッドを作成する方法の一例示の代替的な実施の形態を示すフロー図である。 並列処理スレッドを使用して入力ファイルを処理する方法の一例の実施の形態を示すフロー図である。 コンピュータアプリケーションの性能を向上させる方法の一代替的な実施の形態を示すフロー図である。 アプリケーションが向上対象の候補であるかどうかを決定する方法の一例の実施の形態を示すフロー図である。 コンピュータアプリケーションの並列インスタンティエーションを起動する一例の方法を示すフロー図である。 入力引数ファイルを処理するシステムの一例の実施の形態を示すブロック図である。 ファイルを処理するシステムの一例示の実施の形態のオペレーションを示すデータフロー図である。 最大スレッド決定機能の一実施の形態のオペレーションを説明するデータフロー図である。 出力オーガナイザを含むアプリケーションの一代替的な例示の実施の形態を示すデータフロー図である。 ファイル処理システムの一代替的な実施の形態のオペレーションを示すデータフロー図である。
符号の説明
210 アプリケーション
215 引数パーサ
230 機能コア
233 タスクマネージャ(タスクマスタ)
400 コマンドパーサ
435 タスクエグゼクティブ
440 ファイルマネージャ
600 計算システム(ファイル処理システム)
601 コンソール
605 プロセッサ
615 メモリ

Claims (14)

  1. アプリケーション起動引数リストを受け取る(5)こと、
    該アプリケーション起動引数リストにおいて1つまたは2つ以上の入力引数ファイルを識別する(10)こと、
    2つまたは3つ以上の入力引数ファイルが存在する(15)場合に、2つまたは3つ以上の並列スレッドを作成する(20)こと、および
    該並列スレッドを使用して前記入力引数ファイルを処理する(25)こと、
    を含む、コンピュータアプリケーションの性能を向上させる方法。
  2. 前記2つまたは3つ以上の並列スレッドを作成することは、
    作成できる並列スレッドの最大数を決定する(30)こと、および
    該作成できる並列スレッドの前記最大数に従って多数の並列スレッドを作成する(35)こと、
    を含む、請求項1に記載のコンピュータアプリケーションの性能を向上させる方法。
  3. 前記作成できる並列スレッドの最大数を決定することは、アクティブプロセッサの個数(40)と、最大の並列スレッドについてのユーザごとのシステム制限(45)と、ユーザ制御される最大並列スレッドの環境変数(50)とに従って前記作成できる並列スレッドの最大数を決定することを含む、請求項2に記載のコンピュータアプリケーションの性能を向上させる方法。
  4. アプリケーション起動指令を受け取る(90)こと、
    該アプリケーション起動指令が向上対象の候補であるアプリケーションを指定するかどうかを判断する(95)こと、
    アプリケーション起動引数リストを受け取る(100)こと、
    前記アプリケーションが向上対象の候補であり、かつ、前記アプリケーション起動引数リストに複数の入力引数ファイルが含まれる(105)場合に、前記アプリケーションの2つまたは3つ以上の並列インスタンスを起動する(110)こと、および
    各アプリケーションインスタンスに、前記アプリケーション起動引数リストに含まれる前記入力引数ファイルの対応する1つを含むインスタンティエーションアプリケーション起動引数リストを送る(115)こと、
    を含む、コンピュータアプリケーションの性能を向上させる方法。
  5. 前記アプリケーションが向上対象の候補であるかどうかを判断することは、前記アプリケーションが1つまたは2つ以上の候補アプリケーションの一覧に含まれるかどうかを判断する(125)ことを含む、請求項4に記載のコンピュータアプリケーションの性能を向上させる方法。
  6. 前記アプリケーションの2つまたは3つ以上の並列インスタンスを起動することは、
    作成できる並列スレッドの最大数を決定する(150)こと、および
    該並列スレッドの最大数に従って前記アプリケーションの多数の並列インスタンスを起動する(155)こと、
    を含む、請求項4に記載のコンピュータアプリケーションの性能を向上させる方法。
  7. 前記作成できる並列スレッドの最大数を決定することは、
    アクティブプロセッサの個数(40)と、ユーザごとの最大並列スレッドシステム制限(45)と、ユーザ制御される最大並列スレッドの環境変数(50)との少なくとも1つに従って作成できる並列スレッドの個数を決定することを含む、
    請求項6に記載のコンピュータアプリケーションの性能を向上させる方法。
  8. 命令シーケンスを実行できるプロセッサ(605)と、
    メモリ(615)と、
    引数リストを受け取ることができるコンソール(601)と、
    1つまたは2つ以上の入力ファイルを記憶でき、さらに、出力ストリームを記憶できるコンピュータ可読媒体(610)と、
    前記メモリに記憶された命令シーケンスモジュールであって、
    前記プロセッサによって実行されると、最低限、前記コンソール(601)が受け取った引数リストの1つまたは2つ以上の入力引数ファイル(220)を前記プロセッサに識別させる引数パーサモジュール(215)と、
    前記プロセッサによって実行されると、最低限、前記プロセッサ(605)に、前記コンピュータ可読媒体(610)に記憶された入力ファイルに従って、前記コンピュータ可読媒体(610)へ出力ストリームを送信させる機能コアモジュール(230)と、
    タスクマスタモジュール(233)であって、前記プロセッサによって実行されると、最低限、前記プロセッサに、
    前記機能コアモジュールの1つまたは2つ以上のインスタンティエーションを作成させ、
    前記プロセッサが前記引数パーサ(215)を実行すると、前記機能コアモジュールの対応するインスタンティエーション(250、260)へ、前記プロセッサによって識別された入力引数ファイルを送らせ、
    代理プロセッサが前記機能コアモジュール(230)の各インスタンティエーションを実行することを行わせる、
    タスクマスタモジュールと、
    を含む命令シーケンスモジュールと、
    を備えるファイル処理システム。
  9. 前記タスクマスタモジュールは、最低限、前記プロセッサに、
    作成できる並列スレッドの個数を決定させ(30)、
    該決定された並列スレッドの個数に従って、前記機能コアモジュールの多数のインスタンスを作成させる(35)、
    ことによって、最低限、前記プロセッサに、前記機能コアモジュールの1つまたは2つ以上のインスタンティエーションを作成させる、請求項8に記載のファイル処理システム。
  10. 前記タスクマスタモジュールは、最低限、前記プロセッサに、システムのアクティブプロセッサの個数(315)と、ユーザごとの最大並列スレッドシステム制限(325)と、ユーザ制御される最大スレッドの環境状態変数(330)との少なくとも1つに従って並列スレッドの個数を決定させることによって、最低限、前記プロセッサに、作成できる並列スレッドの個数を決定させる、請求項9に記載のファイル処理システム。
  11. 命令シーケンスを実行できるプロセッサ(605)と、
    メモリ(615)と、
    引数リストを含むアプリケーション起動指令を受け取ることができるコンソール(601)と、
    1つまたは2つ以上の入力ファイルを記憶でき、さらに、出力ストリームを記憶できるコンピュータ可読媒体(610)と、
    前記メモリに記憶された命令シーケンスモジュールであって、
    コマンドラインパーサモジュール(200)であって、前記プロセッサによって実行されると、最低限、前記プロセッサに、
    受け取った起動指令(205)において、実行されるアプリケーションを識別させ、
    該識別されたアプリケーションが向上対象の候補であるかどうかを判断させ、
    前記アプリケーション起動指令に含まれる引数リストにおいて1つまたは2つ以上の入力引数ファイル(220)を識別させ、
    前記識別されたアプリケーションが向上対象の候補であり、かつ、対応するインスタンティエーション引数リストが前記入力引数ファイルの1つを含む前記引数リストに2つまたは3つ以上の入力引数ファイルが存在する場合に、複数のロード指令(270)および対応するインスタンティエーション引数リストをタスクエグゼクティブ用に生成させる、
    コマンドラインパーサモジュールと、
    タスクエグゼクティブモジュール(435)であって、前記プロセッサによって実行されると、最低限、前記プロセッサに、
    前記プロセッサによって実行されると、最低限、前記プロセッサに、前記コンピュータ可読媒体に記憶された入力ファイルに従って出力ストリーム(380)を前記コンピュータ可読媒体へ送信させるアプリケーションモジュール(210)を、前記複数のロード指令および対応するインスタンティエーション引数リストに従って、前記メモリにロードさせ、
    前記コマンドラインパーサによって生成された対応するインスタンティエーション引数リストを前記アプリケーションモジュールへ送信させ、
    代理プロセッサが前記アプリケーションモジュールを実行することを行わせる、
    タスクエグゼクティブモジュールと、
    を含む命令シーケンスモジュールと、
    を備えるファイル処理システム。
  12. 前記コマンドパーサモジュールは、最低限、前記プロセッサに、前記識別されたアプリケーションが事前に設定された候補アプリケーションの一覧に含まれるかどうかを判断させることによって、前記識別されたアプリケーションが向上対象の候補であるかどうかを前記プロセッサに判断させる、請求項11に記載のファイル処理システム。
  13. 前記コマンドパーサモジュールは、最低限、前記プロセッサに、
    作成できる並列スレッドの最大数を決定させ(30)、
    該決定された並列スレッドの最大数に従って、多数のロード指令および対応するインスタンティエーション引数リストを生成させる(35)、
    ことによって、複数のロード指令および対応するインスタンティエーション引数リストを前記プロセッサに生成させる、請求項11に記載のファイル処理システム。
  14. 前記コマンドパーサモジュールは、最低限、前記プロセッサに、システムのアクティブプロセッサの個数(315)と、ユーザごとの最大並列スレッドシステム制限(325)と、ユーザ制御される最大スレッドの環境状態変数(330)との少なくとも1つに従って並列スレッドの個数を決定させることによって、最低限、前記プロセッサに、作成できる並列スレッドの最大個数を決定させる、請求項13に記載のファイル処理システム。
JP2005096692A 2004-03-31 2005-03-30 コンピュータアプリケーションの性能を向上させる方法および装置 Pending JP2005293585A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/816,086 US20050223378A1 (en) 2004-03-31 2004-03-31 Method and apparatus for enhancing computer application performance

Publications (1)

Publication Number Publication Date
JP2005293585A true JP2005293585A (ja) 2005-10-20

Family

ID=35055847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005096692A Pending JP2005293585A (ja) 2004-03-31 2005-03-30 コンピュータアプリケーションの性能を向上させる方法および装置

Country Status (2)

Country Link
US (1) US20050223378A1 (ja)
JP (1) JP2005293585A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070185747A1 (en) * 2006-02-07 2007-08-09 Microsoft Corporation Business process assistance wizard
US9401869B1 (en) * 2012-06-04 2016-07-26 Google Inc. System and methods for sharing memory subsystem resources among datacenter applications
US20200104147A1 (en) * 2018-09-28 2020-04-02 TechnicalitiesPlus Inc Scripted task instructions
US11429361B2 (en) * 2019-01-10 2022-08-30 Vmware, Inc. Agents installation in data centers based on host computing systems load
US11593183B2 (en) 2021-03-02 2023-02-28 International Business Machines Corporation Surrogate process creation technique for high process-per-server scenarios

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424989B1 (en) * 1991-09-20 2002-07-23 Venson M. Shaw Object-oriented transaction computing system
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
FR2820874B1 (fr) * 2001-02-13 2003-05-30 St Microelectronics Sa Procede de gestion a acces aleatoire et rapide d'une memoire dram
WO2002013002A2 (en) * 2000-08-04 2002-02-14 Intrinsic Graphics, Inc. Development of graphics hardware and software
US7240345B2 (en) * 2001-02-16 2007-07-03 Sony Corporation Data processing apparatus and associated method
CA2343437A1 (en) * 2001-04-06 2002-10-06 Ibm Canada Limited-Ibm Canada Limitee Method and system for cross platform, parallel processing
US7249357B2 (en) * 2001-08-20 2007-07-24 Silicon Graphics, Inc. Transparent distribution and execution of data in a multiprocessor environment
US20030172198A1 (en) * 2002-02-21 2003-09-11 Ashutosh Tiwary Workload playback for a system for performance testing of N-tiered computer systems using recording and playback of workloads

Also Published As

Publication number Publication date
US20050223378A1 (en) 2005-10-06

Similar Documents

Publication Publication Date Title
US11449355B2 (en) Non-volatile memory (NVM) based method for performance acceleration of containers
KR100898315B1 (ko) 인핸스드 런타임 호스팅
US5261097A (en) Computer system and method for executing command scripts using multiple synchronized threads
US20200409768A1 (en) Autoscaling using file access or cache usage for cluster machines
US7203941B2 (en) Associating a native resource with an application
US8171482B1 (en) Application environment specifications for provisioning application specific runtime environments using subsets of resources required for execution
US7721286B2 (en) Preemptive multi-tasking with cooperative groups of tasks
US8619269B2 (en) Processing a group of jobs substantially independently while synchronizing and maintaining the original order of the jobs at appropriate points in a workflow
CN1277387A (zh) 监视和处理数据处理系统中相关线程事件的方法和设备
JPH05216692A (ja) プログラム実行を管理する方法およびシステム
US8625133B2 (en) Print data processing apparatus, print data processing method, and storage medium
US6334137B1 (en) Method and system for controlling parallel execution of jobs
EP4398101A1 (en) Task scheduling execution method, and generation method and apparatus for task scheduling execution instruction
EP2080115B1 (en) Automatic native generation
US7420701B2 (en) Systems and methods for providing automatic language switching
JP2008065713A (ja) マルチプロセッサシステム及び割込み制御方法
JPH0683647A (ja) 汎用制御インターフェースを含むデータ処理システム
JP2005293585A (ja) コンピュータアプリケーションの性能を向上させる方法および装置
JPH06243112A (ja) マルチプロセッサ装置
US7973967B2 (en) Pseudo-multithread framework for XPSDrv filter pipeline
JPH10289066A (ja) 画像処理装置及びその方法
US20030107751A1 (en) Multi-mode print data processing
JP2001282560A (ja) 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体
JPH1131134A (ja) コンピュータシステム及び同システムに適用するスケジューリング方法
US5369774A (en) Method and apparatus for handling array type data in a data driven type information processor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070314

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070904