JP2015141535A - System, controlling method therefor, and computer program - Google Patents
System, controlling method therefor, and computer program Download PDFInfo
- Publication number
- JP2015141535A JP2015141535A JP2014013697A JP2014013697A JP2015141535A JP 2015141535 A JP2015141535 A JP 2015141535A JP 2014013697 A JP2014013697 A JP 2014013697A JP 2014013697 A JP2014013697 A JP 2014013697A JP 2015141535 A JP2015141535 A JP 2015141535A
- Authority
- JP
- Japan
- Prior art keywords
- execution period
- life
- component
- extension
- message
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、ネットワーク上でWebサービスとして稼働するプログラムに関し、特に印刷装置に出力可能な形式にデータを変換するデータ変換サービスに関する。 The present invention relates to a program that operates as a Web service on a network, and more particularly to a data conversion service that converts data into a format that can be output to a printing apparatus.
一般的に、Webサービスは高可用性が求められる。従って、Webサービスを構成するプログラムにメモリリークがあれば、長期に渡る稼働でWebサービスを提供するサーバ全体に影響を与えることになる。メモリリークに対する対策の一つとして、Webサービスを複数の機能コンポーネントに分割し、各々のコンポーネントを独立したプロセスとして動作させる方法が適用されている。機能コンポーネントは、その機能の複雑度やプログラムコードの量、処理内容における例外処理の発生頻度によってメモリリークの発生量に差があることが経験的に知られている。 In general, Web services are required to have high availability. Therefore, if there is a memory leak in the program that configures the Web service, it will affect the entire server that provides the Web service over a long period of operation. As one countermeasure against the memory leak, a method of dividing a Web service into a plurality of functional components and operating each component as an independent process is applied. It is empirically known that functional components have a difference in the amount of memory leaks depending on the complexity of the functions, the amount of program code, and the frequency of exception processing in the processing content.
例えば、特許文献1に開示されているシステムでは、サービスを提供する複数のプロセスの各々に再起動のタイミングを決定するカウンタを関連付けて、そのカウンタの値を単一の管理部が管理している。管理部は、処理のリスクに応じて各カウンタ値を更新し、閾値との比較により該プロセスの再起動を決定する。このシステムによれば、プロセスの再起動が順に実行され、従ってサービス提供中も順にメモリリークが解放される。
For example, in the system disclosed in
本願のシステムでは前述のメモリリークの問題に着目しつつも、高スループットを実現する方法について検討する。データ変換処理における高スループットの確保のためにデータキャッシュを活用することを考える。キャッシュを用意、保持する為には初期投資としてのキャッシュデータ作成時間とある程度まとまったメモリ領域が必要となる。 In the system of the present application, a method for realizing high throughput will be examined while paying attention to the above-described memory leak problem. Consider using a data cache to ensure high throughput in data conversion processing. In order to prepare and hold a cache, a cache data creation time as an initial investment and a certain memory area are required.
例えばプリンタドライバと同様の機能を提供するWebサービスでは、印刷用のフォントデータのキャッシュなどが例として挙げられる。印刷ドキュメントにおけるフォントはページ毎に異なったりすることは少なく、少なくともあるドキュメントの中は同じフォントが指定されていることが考えられる。さらに、同一の利用者から作成される印刷ドキュメントは、同一のフォントを利用する傾向が高いものと想定する。従って、このように同一利用者から複数のドキュメントをWebサービスが受け取った結果、フォントデータのキャッシュが再使用されると、以降も異なる印刷ジョブに対して継続的にキャッシュの再使用が発生する可能性は高いと予想できる。 For example, in a web service that provides the same function as that of a printer driver, a font data font for printing is an example. Fonts in a printed document rarely differ from page to page, and it is conceivable that the same font is designated at least in a certain document. Further, it is assumed that print documents created from the same user have a high tendency to use the same font. Therefore, if the Web service receives a plurality of documents from the same user as described above and the font data cache is reused, the cache can be reused continuously for different print jobs. Can be expected to be high.
しかし、一方で前述のようにキャッシュを用意するとメモリ領域が必要となり、メモリ領域が必要になればメモリリークが発生する可能性が高まる。これに対して特許文献1のようにプロセスの再起動を行うと、前述のように今後もキャッシュを再使用する可能性の高いプロセスを再起動してしまいかねない。プロセスが再起動されれば用意したキャッシュは解放されてしまい、システムのスループット低下につながる。
However, if a cache is prepared as described above, a memory area is required. If a memory area is required, the possibility of a memory leak increases. On the other hand, if the process is restarted as in
本発明は、メモリリークの発生を抑制しつつキャッシュデータの使用率が高いプロセスの利用継続を実現するシステムを提供することを目的とする。 An object of the present invention is to provide a system that realizes continuation of use of a process having a high cache data usage rate while suppressing occurrence of a memory leak.
本発明の一実施形態の実行期間が定められた複数のプロセスを実行するシステムは、キャッシュデータの使用率に基づいて、第1のプロセスの実行期間を延長する延長手段と、延長された前記第1のプロセスの実行期間に基づいて、前記第1のプロセス以外の第2のプロセスの実行期間を短縮する短縮手段と、実行期間が終了したプロセスを終了する終了手段と、を備える。 A system for executing a plurality of processes with a predetermined execution period according to an embodiment of the present invention includes: an extension unit that extends the execution period of the first process based on a usage rate of cache data; A shortening unit that shortens an execution period of a second process other than the first process based on an execution period of one process; and an ending unit that ends a process whose execution period has ended.
本発明のシステムによれば、メモリリークの発生を抑制しつつキャッシュデータの使用率が高いプロセスの利用継続を実現することが可能となる。従って、システムの動作に安定性と高スループットを提供するパフォーマンス性の高いシステムを提供することが可能となる。 According to the system of the present invention, it is possible to realize continuation of use of a process having a high cache data usage rate while suppressing occurrence of a memory leak. Therefore, it is possible to provide a system with high performance that provides stability and high throughput to the operation of the system.
(実施例1)
図1は本発明の一実施形態の分散処理システムの構成例を示す図である。分散処理システムは、印刷変換サービスを要求する依頼者側の装置20乃至40、プリンタ60、サービス提供側の装置70乃至90から構成される。印刷データの変換を依頼する依頼者50は、印刷データの変換要求を送信する機器として、パーソナルコンピュータ20、タブレットPC30、携帯端末40などの機器を利用する。依頼者50は、これらの機器の内部で動作しているアプリケーション(不図示)を用いて、ネットワーク10上に存在する印刷データ変換部330(図3を参照して後述)に対して印刷データの変換を依頼する。
Example 1
FIG. 1 is a diagram showing a configuration example of a distributed processing system according to an embodiment of the present invention. The distributed processing system includes requester-
印刷データ変換部330は、サーバPC80上で周知のURLを公開している、いわゆるWebサービスとして動作しているプログラムである。サーバPC80上では、前記URLに対して到着したパーソナルコンピュータ20などの外部機器からの依頼を印刷データ変換部330に転送するWeb通信部310も動作している。URLへ到着する依頼は通常多数になるため、単一のサーバPC80では処理させず、複数のサーバPC80に処理させる構成とする。従って、ロードバランサ70が複数のサーバPC80の前段に設置され、各サーバPC80に転送される依頼が均一に配分される。
The print
印刷データ変換部330が提供するサービスは、依頼者50が指定するデータをプリンタ60で印刷できる形式に変換することである。依頼者が指定するデータにはドキュメント、画像ファイルなど各種のアプリケーションプログラムで作成されたフォーマットが存在する。一方、プリンタ60が印刷データとして受け付けるデータは前述のフォーマットとは異なり、PDLで記述されたデータや、印刷部数等の印刷を制御するための命令とパラメータを備えたPJLで記述されたデータとなっている。PJLは、Print Job Languageの略称である。
A service provided by the print
このように、依頼者50とプリンタ60の間には扱うデータ形式の差異が存在する為に、その差異を埋るプログラムが必要とされる。通常この変換処理を行うのがプリンタドライバと呼ばれるプログラムである。プリンタドライバは、依頼者50が操作する前述のアプリケーションプログラムが動作しているPC上で動作させることが通常である。しかし、プリンタドライバの処理は比較的CPU、メモリなどのリソースを必要とする重い処理であるため、依頼者50の操作するPCの保持するリソースが少ない場合には印刷処理が実用的でなくなる程時間のかかる処理になってしまう。依頼者50が操作する端末(例えば、パーソナルコンピュータ20、タブレットPC30、携帯端末40)などリソースの比較的少ない端末からの印刷の需要が高まるにつれプリンタドライバの処理をインターネット上のサービスで行わせることの重要性が増している。
As described above, since there is a difference in the data format to be handled between the
依頼者50は、前述の各種端末から前述のURLに対して印刷データをプリンタ60で印刷できる形式に変換するように依頼を行う。依頼に応じてサーバPC80上で動作している印刷データ変換部330が生成した変換後のデータは依頼元の端末に対して返送される。依頼者50の指示によっては、変換後のデータは印刷データ変換部330がアクセス可能なファイルサーバPC90で保管される場合もある。
The requester 50 requests the above-described various terminals to convert the print data into a format that can be printed by the
図2は、図1に示す各装置が備えるハードウエア構成例を示す図である。以下では、サーバPC80を例に説明する。サーバPC80は、HDD102、ROM103、RAM104、CPU105、出力装置106、入力装置107、通信装置108を備える。CPU105は、サーバPC80の機能全体を統合的に制御する。また、CPU105は、OS(オペレーティングシステム)とアプリケーションプログラムをHDD102またはROM103から読み出してRAM104にロードし、実行することでプリントサービスの機能を実現する。CPU105による処理結果はファイルとしてHDD102に格納、またはデータとしてRAM104に記憶される。なお、CPU、HDD、ROM、RAMはそれぞれ、Central Processing Unit、Hard Disk Drive、Read Only Memory、Random Access Memoryの略称である。
FIG. 2 is a diagram illustrating a hardware configuration example included in each device illustrated in FIG. 1. Hereinafter, the
HDD102またはROMは、OS上で動作する図3に示すソフトウエア群を格納する。入力装置107は、使用者の入力や各種センサの読み取り値を取得する。出力装置106は、各種情報を出力し、処理結果を表示する。通信装置108は、ネットワークに接続された他のコンピュータや装置と通信を行う。これらのハードウエアはコントロールバス1001で互いに接続されていて、アプリケーションプログラムから操作できるように構成されている。
The
図3は、本発明のシステムとして機能するサーバPC80のソフトウエア構成例を示す図である。サーバPC80は、Web通信部310、アプリケーション部320、印刷データ変換部330、ロケータ340、ロガー350を備える。Web通信部310は、依頼者50が操作したパーソナルコンピュータ20上のアプリケーションからHTTPプロトコルで送信されたリクエストを受け取る。ロードバランサ70は、Web通信部310の前段に位置し、複数のサーバPC80上で動作しているWeb通信部310に受信したリクエストを振り分ける。この振り分ける方式は種々知られているがその詳細は本発明には関係がないため説明を省略する。
FIG. 3 is a diagram showing a software configuration example of the
ここで、サーバPC80は必ずしも物理的な一台のサーバPCを意味する必要はない。近年は、単一のPC上に複数の仮想的なPCを出現させる仮想化技術が一般的となっており、ソフトウエアからみれば自身が動作しているオペレーティングシステムが仮想的に作り出されたものか否かは判別がつかないか、あるいは判別する必要がない。従って本発明におけるサーバPC80は「場合によっては仮想化されたPC」を意味する場合もある。これ以降、「PC」という表現は物理的なPCと仮想化されたPCの両方を意味するものとして扱う。
Here, the
アプリケーション部320は、要求の送付先として指定されたURLを解析し、関連付けられている印刷データ変換部330を決定するソフトウエアである。通常Web通信部310とアプリケーション部320は複数種のサービスを扱うことが可能であり、URLから対応するサービスを特定して要求を振り分けることができる。本実施例ではその複数種のサービスの一つが印刷データ変換部330であることを想定している。このサービスの他にもサービスが稼働しているが、発明の説明においては印刷データ変換部330以外のサービスは省略する。
The
印刷データ変換部330は、単一のプロセスではなく複数プロセスが共同して動作することでサービスを提供する形態をとっている。以下では「印刷データ変換サービス」という場合にはこれら複数のプロセスを総称していることに留意されたい。ロケータ340とロガー350は、印刷データ変換部330とは独立して存在するプロセスである。アプリケーション部320は、複数の要求を並列実行させるために印刷データ変換部330を複数起動し、各々に要求を振り分ける。この場合でも、ロケータ340とロガー350は各々一個のプロセスとして存在している。アプリケーション部320はさらに、印刷データ変換部330が動作する際に依頼者50からの一連の要求を特定する為のセッションを管理する。具体的には、同一の依頼者50からの要求は同一の印刷データ変換部330に転送するセッション・アフィニティーを実現している。
The print
(印刷データ変換サービス)
図4は、印刷データ変換部330の動作に関連するソフトウエアコンポーネント群の関連を説明する図である。印刷データ変換部330は、先に説明したように複数のプロセスの共同体として動作している。その構成要素は印刷サービスゲートウェイ211、プロキシモジュール220、フィルタホスト240および各種フィルタ群(270,280,290)である。ここでは説明の為に各種フィルタは3種類示してあるが、実際には多くのフィルタが存在しており、さらにその組み合わせは固定化されておらず、生成される印刷データ変換部330毎に異なるフィルタが使用される可能性がある。
(Print data conversion service)
FIG. 4 is a diagram for explaining the relationship between software component groups related to the operation of the print
(印刷サービスゲートウェイ)
印刷データ変換部330に対するサービス依頼を受け付けるのは、プロセスとして存在する印刷サービスゲートウェイ211であり、その起動はアプリケーション部320が行う。印刷サービスゲートウェイ211はプロキシモジュール220をロードし、Application Programming Interface(API)で提供している関数群を呼び出すことで変換処理の実行を依頼し、さらに結果を受領する。プロキシモジュール220の提供するAPIを呼び出して印刷データ変換部330にサービスの提供を依頼すると「ジョブ」と呼ばれるデータ構造が生成される。ジョブについての詳細な説明は後述する。
(Print service gateway)
A service request to the print
(ロケータ)
印刷データ変換部330を構成するコンポーネント群が利用するロケータ340は特別な役割を担っている。ロケータ340は、アプリケーション部320が起動した時点で既に起動している特殊なプロセスである。ロケータ340の起動の方法はサーバPC80上で動作しているオペレーティングシステム(OS)によって種々の方法が存在する。例えば、Windows(登録商標)であれば”Windows(登録商標) Service”というシステム起動時に自動的に起動される特殊なプロセスとして実装することが可能である。Linux(登録商標)やUnix(登録商標)ではデーモンプロセスとして動作させることが可能である。
(locator)
A
ロケータ340は、コンポーネントを生成する機能を有する。さらに、ロケータ340は、他のコンポーネントからの求めに応じて別のコンポーネントのアクセスポイントを返すという機能を提供する。アクセスポイントとは、TCP/IPのリスンポートを指す。あるコンポーネントは、別のコンポーネントが公開しているアクセスポイントを取得し、そのアクセスポイントにアクセスすることでそのコンポーネントが提供する機能を利用する。あるコンポーネントが他のコンポーネントのアクセスポイントをロケータ340に対して問い合わせる動作を“ロケーションクエリ”あるいは単に“クエリ”と呼ぶ。
The
印刷データ変換部330を構成するコンポーネントのうち、プロキシモジュール220、ジョブコントローラ230、フィルタホスト240は、ロガー350が提供しているロギングデータをログファイルとして記録するサービスを利用している。そのため、ロケータ340に対してロガー350のアクセスポイントを得る目的でクエリを行っている。同様にプロキシモジュール220はジョブコントローラ230をクエリし、ジョブコントローラ230はフィルタA270、フィルタB280、フィルタC290をクエリする。クエリの詳細フローは後述する。
Among the components constituting the print
(ジョブコントローラ)
プロキシモジュール220を介してジョブ実行を依頼されたジョブコントローラ230は、ジョブ、およびジョブに含まれている印刷データを解析して変換に必要なフィルタを選定する。解析は印刷データの先頭から既定のサイズを読出しその中に含まれている特徴的な内容から印刷データの種類を判定する。例えば、JPEG形式や、PDF形式のデータなどが入力データとして与えられる。次に、ジョブコントローラ230は、ジョブに含まれている変換先の印刷データ形式を取得し、変換元の印刷データ形式と変換先の印刷データ形式の両者が確定した時点で、この変換に必要なフィルタ群を選定する。必要なフィルタの組み合わせとその変換順番は固定的な知識としてジョブコントローラ230に実装されている。
(Job controller)
The
必要な複数のフィルタを選定したあとに、ジョブコントローラ230はこれらフィルタをロードしているフィルタホスト240を取得する。この例では変換に必要なフィルタとして、フィルタA270、フィルタB280、フィルタC290が必要であり、それらはそれぞれフィルタホスト240にロードされている。
After selecting a plurality of necessary filters, the
ジョブコントローラ230は、フィルタA270、フィルタB280、フィルタC290との間で、パイプライン300と呼ばれるデータ転送チャネルを作成する。パイプライン300は基本的に片方向にのみデータを転送する。ジョブコントローラ230→フィルタA270→フィルタB280→フィルタC290→ジョブコントローラ230と一周するようにパイプライン300が構成される。また、ジョブコントローラ230はプロキシモジュール220との間にもパイプライン300を作成する。このようにパイプライン300を作成することで、プロキシモジュール220から印刷データが複数のコンポーネントを還流し、最後に変換が終了した形で再びプロキシモジュール220に戻ってくる。
The
(フィルタ、フィルタホスト)
フィルタは、データ変換処理のみを実装したライブラリモジュールの形式で用意されている。フィルタホスト240はプロセスとして存在し、実行時に指定されたフィルタをロードする。フィルタホスト240はコントロールバス502への接続とメッセージ送受信、パイプライン300の生成と接続、ジョブコントローラ230との通信、フィルタのログ出力のロガー350への転送などの処理を担当する。
(Filter, filter host)
The filter is prepared in the form of a library module that implements only data conversion processing. The
(ロガー)
ロガー350は、プロセスとして同一コントロールバス502上に一つ存在する。コントロールバス502上のコンポーネントは、ジョブの実行中にログ出力を行う。ログの出力対象としてはファイルが一般的であるが、すべてのコンポーネントが独立してログファイルの出力を行うとサーバPC80上のファイルI/Oの発生回数が増大し印刷データ変換部330全体のパフォーマンスが低下してしまう。そこで、各コンポーネントはログデータをロガー350に対してネットワークを介して送りつけ、ロガー350が一定量のログデータの蓄積時点でログファイルに出力することになっている。ログファイルの出力パス等の設定はロガー350が起動される際に渡されるコンフィギュレーションファイルで指定される。ここで、パイプライン300を還流するデータについて説明する。このデータは「ジョブ」と呼ばれる。
(Logger)
One
(ジョブ)
データ変換処理は、プロキシモジュール220のAPIを通じて依頼される際に、ジョブの形で引き渡される。ジョブは概念的には変換されるべき対象データと変換処理用の設定値などをまとまりのある形式に束ねた「チケット」と呼ばれるデータ構造から構成される。ジョブには、識別できるようにユニークな識別情報が与えられる(ジョブID)。生成されたジョブはファイルとしてHDD102などの記憶装置に格納される。また記憶装置から取り出す際にはジョブIDを指定してそのファイルを取得して内容を参照することが可能である。またジョブを破棄する行為はファイルの削除として実現される。ジョブはこの印刷データの内容を直接ファイル内に含むか、またはファイル化した印刷データのファイルパスなどの参照情報を含んでいる。さらにジョブは、印刷を行わせるプリンタ60が処理できる印刷ファイル形式についての情報も含んでいる。さらに、印刷部数や印刷の面付指示などの印刷の処理方法を指定する印刷設定を含んでいる。以降では、ジョブを処理する行為を「ジョブを実行する」と呼ぶことがある。
(job)
The data conversion process is delivered in the form of a job when requested through the API of the
(印刷データ)
プリンタが理解可能な形式で作成され、その内容をプリンタのメモリを介してハードウエアロジックに与えることが可能なバイナリ形式のデータを印刷データと称する。または、ファームウエアとして実装されている変換ロジックに与えて印刷エンジンが処理可能な形式に変換できる何らかの記述言語(PDL)で記述されたデータを印刷データと称する。印刷データは、図1のパーソナルコンピュータ20、タブレットPC30や携帯端末40などの機器内に保持されているファイルから、またはメモリ内から変換要求に埋め込まれた形で取得される。あるいは、図1のファイルサーバPC90に予め格納されているファイルへの参照(URLあるいはファイルパス)を変換要求から取り出してそのファイル内容を取得することにより印刷データは取得される。
(Print data)
Data in a binary format that is created in a format that can be understood by the printer and that can be given to the hardware logic via the memory of the printer is called print data. Alternatively, data described in some description language (PDL) that can be converted into a format that can be processed by the print engine by being given to conversion logic implemented as firmware is called print data. The print data is acquired from a file held in a device such as the
ここで図4に立ち戻り、印刷データ変換部330を構成しているコンポーネント群が他のコンポーネントをクエリする意義と手順を説明する。
(クエリの意義)
コンポーネントが提供しているサービスは、ネットワークからアクセスできるエンドポイントとして他のコンポーネントに公開される。具体的には、TCP/IPのアドレスとポート番号の組が公開される。コンポーネントは他のコンポーネントの提供するサービスI/Fを取得して利用する。複数種類のコンポーネントがプロセスとして複数存在し、かつ同一コンポーネントも同一PC上に複数存在する。従って、各コンポーネントが公開するサービスI/Fのポート番号は固定にすることができず、自ずと動的に生成せざるを得なくなる。動的に生成されたエンドポイントは何らかの管理機構が無くては他から参照することはできない。このエンドポイントをロケータ340が管理する。さらに、コンポーネントが他のコンポーネントの動的に生成されたエンドポイントを取得する手段が必要である。この手段がクエリである。このクエリにロケータ340が回答する。
Returning to FIG. 4, the significance and procedure of the component group constituting the print
(Significance of query)
Services provided by components are disclosed to other components as endpoints accessible from the network. Specifically, a set of TCP / IP address and port number is disclosed. A component acquires and uses a service I / F provided by another component. There are a plurality of types of components as processes, and a plurality of the same components exist on the same PC. Accordingly, the port number of the service I / F disclosed by each component cannot be fixed, and must be dynamically generated. Dynamically generated endpoints cannot be referenced from others without some sort of management mechanism. The
(コンポーネントの生成)
コンポーネントは基本的に動的に生成される。図5はコンポーネントの生成シーケンスを説明した図である。図5(A)ではロケータ340のみが存在する状況である。この状況は図3においてサーバPC80が起動した直後に相当する。この時点ではまだ印刷データ変換部330は起動していない想定である。ロケータ340は単独でコントロールバス502に接続している状態である。
(Component generation)
Components are basically generated dynamically. FIG. 5 is a diagram illustrating a component generation sequence. In FIG. 5A, only the
ロケータ340は、図6に示すサービスカタログ501を保持している。サービスカタログ501は、このサーバ80上にインストールされているコンポーネントのリストから構成されている。コンポーネントごとに名前、バージョン、実行ファイルパス、起動時のコンフィギュレーションファイルパス、コンポーネントの寿命、起動モード、リーク量(リークレシオ)が記載されている。起動モードは、オンデマンドで起動するかホットスタンバイさせておくかを示すモードである。リーク量は、稼働に伴って発生する単位時間当たりのメモリリーク量である。コンポーネントの名前はその機能を表す一般的な名称が階層構造で表現される。例えば”FilterHost”という機能名が”system”という階層の下に定義されているため、“/system/FilterHost”という階層形式の表記となっている。この名前の表記方法は特に本発明の特徴とはなっていないがコンポーネントを組織的にかつユニークに命名する為に用いられている。同一の名前を持つコンポーネントであっても、そのバージョンが異なれば異なる機能を提供するためサービスカタログ501上では異なるエントリーとして扱われる。
The
図5(B)は、あるコンポーネントA503の起動モードがホットスタンバイ(startup)に指定されている場合の例を示している。ロケータ340は、自身が起動したらこのサービスカタログ501を参照し、起動モードがホットスタンバイに指定されているコンポーネントA503を発見する。ロケータ340は、サービスカタログ501からコンフィギュレーションファイル505のパスと寿命を取得し、引数に与えてコンポーネントA503の実行ファイルパスのプログラムを起動させる。コンポーネントA503は、起動するとコントロールバス502に接続する時点でユニークなIDを与えられる。このIDは本実施例ではGUIDであるが他の形式でも構わない。起動モードにはそのほかにオンデマンド(on−demand)が定義されている。オンデマンドの起動モードを持つコンポーネントはそのシステム起動時には自動的には起動されず、文字通りそのコンポーネントを指定したクエリがなされて初めて起動される。
FIG. 5B shows an example in which the startup mode of a
図5(C)は、起動したコンポーネントA503が、起動時に与えられたコンフィギュレーションファイル505の内容を参照して必要な初期値等を取り出し、さらにその初期値を使って自身を初期化する例を示す。初期化が完了するとサービスを提供する為に、TCP/IPのポートを取得しサービスI/F504の待ち受けを開始する。コンポーネントA503は、これで他のコンポーネントへのサービスの提供の準備ができたため、コントロールバス502に自身のアドバタイズメッセージ506を作成して送信する。
FIG. 5C shows an example in which the activated
アドバタイズメッセージ506には、コンポーネントA503の名前、ID、バージョン、サービスI/F504のURL、ポート番号、寿命が記載されている。このメッセージがロケータ340宛てに送信される。アドバタイズメッセージ506はコンポーネントが自身の起動完了とサービス提供開始を宣言する行為である。このメッセージを受信したロケータ340はコンポーネントA503の起動を確認し、かつサービスI/Fを取得することができる。
The
図5(D)は、ロケータ340がコンポーネントA503からのアドバタイズメッセージ506を受信した直後にコンポーネントA503の起動を確認し、以降の管理の為に管理テーブルであるサービスインベントリ507に登録を行った例を示す。
FIG. 5D shows an example in which the
図8は、サービスインベントリ507の内容を模式的に表した図である。この例では、サービスインベントリ507は、ID、名前、バージョン、URL、Port、寿命(時間)、寿命(ジョブ数)、生存時間、状態、起動時間、最終連絡時刻を備える。ロケータ340が、アドバタイズメッセージ506を受け取った時点でそのメッセージの送信元であるコンポーネント毎のエントリーを作成する。そして、ロケータ340が、アドバタイズメッセージ506の内容を転記してサービスインベントリに登録する。なお、エントリーの内容として、「生存時間」欄にはコンポーネントが作成されてからの生存時間(秒数)が記録される。この生存時間は後述するハートビートメッセージ508の内容から作成される。また「状態」欄にはコンポーネントの状態を示す値が後述するステートチェンジメッセージ512から転記される。「起動時刻」欄はコンポーネントが起動された時刻が、また「最終連絡時刻」欄はロケータ340がコンポーネントから最後に受け取ったメッセージの受け取り時刻を記録してある。本実施例では、時刻はオペレーティングシステムから取得されたシステム時刻で格納されている。通常、名前とバージョンが同一であるコンポーネントのプロセスは複数生成される。これらのサービスインベントリ507上のエントリーは少なくとも互いに、IDとPort番号が異なった値になるため識別が可能である。
FIG. 8 is a diagram schematically showing the contents of the
図5(E)は、コンポーネントA503からハートビートメッセージ508を受け取った例を示す。ハートビートメッセージとは、自身が正常に稼動していることを外部に知らせるために送る信号やパケットである。各コンポーネントは定期的にハートビートメッセージ508をロケータ340宛てに送信しなければならない決まりとなっている。ロケータ340はこのメッセージを受け取ることにより送信元コンポーネントの生存を確認し、サービスインベントリ507の「生存時間」欄と「最終連絡時刻」欄を更新する。
FIG. 5E shows an example of receiving a
もし、コンポーネントからのハートビートメッセージ508が既定時間滞ると、ロケータ340はこのコンポーネントの「状態」欄を「行方不明」に変更する。この状態でさらに既定時間ハートビートメッセージが滞ると、そのコンポーネントは自動的にサービスインベントリ507上からエントリーごと削除される。サービスインベントリ507上から削除されたコンポーネントはもはや他のコンポーネントからのクエリに対して検索されなくなり、サービスを提供できなくなる。エントリーの削除は対象コンポーネントのIDを基に行われるため、同一名称の他のコンポーネントのエントリーには影響は与えない。
If the
図5(F)は、コンポーネントA503がコンポーネントB514を利用するために、ロケータ340に対してクエリメッセージ509を送信した例を示す。このクエリメッセージ509には、コンポーネントB514の名前と利用したいバージョンが記されている。コンポーネントは複数のバージョンが作成され得る。同一の名前のコンポーネントが機能の違いにより複数作成されて異なるバージョンとして市場にリリースされる。従ってコンポーネントA503はバージョン“2.0.0.1”の様に自分が利用したいコンポーネントB514のバージョンを指定してクエリを行うことができる。もし、特定バージョンを利用する必要が無いならばバージョン欄は空で指定することになっている。図5(F)に示す例では、コンポーネントB514はまだ生成されていない為、ロケータ340はコンポーネントB514を新たに生成する。図5(B)〜(D)に示したコンポーネントA503の生成手順と同じようにコンポーネントB514が生成される。
FIG. 5F illustrates an example in which the
図5(G)は、ロケータ340がクエリに対するレスポンスをコンポーネントA503にクエリレスポンスメッセージ510として返却する例を示す。クエリレスポンスメッセージ510にはコンポーネントB514の名前、バージョン、サービスI/Fを示すURLとポート番号が格納されている。
FIG. 5G shows an example in which the
図5(H)は、クエリレスポンスメッセージ510を受け取ったコンポーネントA503が、取得したコンポーネントB514のサービスI/Fを利用する様子である。コンポーネントによってはサービスI/Fにアクセスする他のサービスからのサービス要求を同時に扱えるものとそうでないものが存在する。例えば、ロガー350は、複数のサービスからのロギングデータを同時並行的に受け取りログファイルに記録していく能力を有する。一方、パイプラインを構成してジョブを変換するフィルタは、同時並行処理の能力をもたない。
FIG. 5H shows a state where the
従って、コンポーネントB514が同時並行処理能力を持たないコンポーネントであるとすると、コンポーネントA503がアクセスしてきた時点で他のコンポーネントからの要求を受け付けられない状態すなわちビジー状態に遷移する。この状態は、コンポーネントA503が明示的なアクセス終了をサービスI/Fを通じてコンポーネントB514に宣言するまで継続する。コンポーネントB514はビジー状態に遷移したら、自身を利用したいコンポーネントA以外の他のコンポーネントのクエリによって検出されないことが望ましい。
Therefore, assuming that the
そこで、図5(I)に示すように、コンポーネントB514は、ステートチェンジメッセージ512をロケータ340に対して送信する。ステートチェンジメッセージ512には、コンポーネントB514がビジー状態に遷移したことが記されている。このメッセージを受け取ったロケータ340は、サービスインベントリ507に登録されたコンポーネントB514のエントリーを検索し、「状態」欄に受け取った状態を転記する。さらに「最終連絡時刻」欄も更新する。コンポーネントB514の「状態」欄がビジー状態に変更になった為、ロケータ340は以降、名前を指定したクエリを受け取ってもコンポーネントB514のインスタンスを選定することはなくなる。ただし、サービスインベントリ507には他のコンポーネントBのプロセスが複数存在している可能性がある。それらのいずれかがビジー状態でなければ「利用可能なコンポーネントB」としてクエリの発行元のコンポーネントにレスポンスが返却される。
Therefore, as shown in FIG. 5I, the
複数の同一名とバージョンを持ったコンポーネントインスタンス群からどのインスタンスをクエリの結果として選択するのかに関しては、ロケータ340が保持している選択アルゴリズムに依存している。しかし、そのアルゴリズムは本発明とは関係がない為説明を省略する。
Which instance is selected as a query result from a plurality of component instance groups having the same name and version depends on the selection algorithm held by the
図5(J)は、寿命に達したコンポーネントB514が自ら終了する直前にGoodbyeメッセージ(513)を送信した例を示す。このメッセージを受け取ったロケータ340は、サービスインベントリ507のコンポーネントB514のエントリーを削除する。
FIG. 5J illustrates an example in which a Goodbye message (513) is transmitted immediately before the
(寿命の延長処理)
次に、本発明の要点であるコンポーネントの寿命の操作に関する部分を説明する。図8は、コンポーネントの寿命管理に係る処理を行うサーバPC80の機能構成例を示す。サーバPC80は、フィルタ240(PDLFilter450、LayoutFilter460)、ロケータ340、ジョブコントローラ230を備える。これらは、印刷データ変換部330の処理を実行する主要なコンポーネントを抜き出したものである。PDLFilter450とLayoutFilter460は図4のフィルタA270、フィルタB280、フィルタC290と同じフィルタコンポーネントであり、データ変換プロセスを担当する。
(Life extension process)
Next, the part related to the operation of the component life which is the main point of the present invention will be described. FIG. 8 shows a functional configuration example of the
図8に示す例では、PDLFilter450は、フォントキャッシュ部1、キャッシュ統計部2、寿命延長判定部3、寿命管理部4を備える。フォントキャッシュ部1は、文字コードの変換処理でフォントキャッシュを検索し、所望の文字イメージが存在していたら利用する。キャッシュ統計部2は、フォントキャッシュ部1から指示を受け、文字種と文字コード別にキャッシュヒットの回数、ヒット率をジョブ単位に集計して記録する。寿命延長判定部3は、プロセスの実行期間の延長と延長する実行期間の長さを決定する。寿命管理部4は、PDLFilter450に設定された寿命を管理し、余命が一定の値に達すると、後述する「寿命イベント」を生成する。また、ロケータから寿命設定値を取得し、その設定値を自身の新寿命として再設定する。
In the example illustrated in FIG. 8, the
ロケータ340は、プロセス管理部5、リーク管理部6、サービスカタログ501、サービスインベントリ507を備える。プロセス管理部5は、各プロセスからメッセージを受信し、メッセージの内容に応じて各種処理を実行する。例えば、プロセス管理部5は、フィルタ240から後述する寿命延長メッセージを取得し、図14,図15を用いて後述する寿命延長処理を実行する。リーク管理部6は、あるプロセスの寿命が延長される際に、現在稼働しているプロセスのなかから寿命を短縮すべきものを選定する。そして、選定したプロセスに対し、負の値を記した寿命変更メッセージを送信する。また、ジョブコントローラ230、LayoutFilter460は、自身の寿命を管理する寿命管理部7,8を備える。寿命管理部7,8は、リーク管理部6から寿命短縮の指示を受けると、自身に設定された寿命の値を指定された値で再設定する。
The
以下の説明では、寿命を延長してほしいコンポーネントとしてPDLFilter450を、寿命を短縮されるコンポーネントとしてLayoutFilter460とジョブコントローラ230を選定したものとする。また、ロケータ340が寿命を短縮するコンポーネントを選定する。PDLFilter450の動作をフローチャートを用いて説明し、寿命の延長を宣言する処理を明らかにする。その後、宣言を受けたロケータ340が寿命を短縮させるコンポーネントを選定する処理を説明し、最後に寿命を短縮されるコンポーネントの処理を説明する。サーバPC80のCPU105は、HDD102またはROM103に記憶したプログラムをRAM104にロードし実行することにより図3や図8に示す各機能を実行する。
In the following description, it is assumed that the
(PDLFilterの処理フロー)
最初にPDLFilter450の処理フローについて説明する。図9は、PDLFilter450がフィルタホスト240にロードされて起動した時点から開始するイベントループ処理(S001)である。コンポーネントは、起動した時点でメッセージキューを備えている。コンポーネントは、外部コンポーネントとの通信手段であるコントロールバス502からメッセージを受信した時点でメッセージに対応するイベントを作成し、メッセージキューに投函する。コンポーネントは、そのほかにも内部のモジュールからの通知もイベントとして作成し投函する。
(PDLFilter processing flow)
First, the processing flow of the
PDLFilter450は、起動した直後に、図10に示す初期化処理(S100)を実行する。初期化処理(S100)は、各種の初期設定を行う処理の集合である。
Immediately after starting, the
図10は、S100の初期化処理を説明するフローチャートである。S101では、PDLFilter450は、起動時に渡されたコンフィギュレーションファイルの内容を解析して必要な動作パラメータを取得する。取得した動作パラメータの一つに「寿命」がある。S102では、PDLFilter450は、寿命管理部4に取得した寿命を設定する。寿命は秒単位で表現した値である。PDLFilter450は、機能として図8には図示していないパイプライン300を流れるジョブ中から文字種、文字コードを取り出し、対応する文字イメージを作成して印刷データに格納する処理を担当している。一度作成した文字イメージは削除せずキャッシュ領域に保存しておく。S103ではその領域の初期化が行われる。
FIG. 10 is a flowchart for explaining the initialization process of S100. In S101, the
図9に戻り、初期化処理が終了した後、処理はS002に進む。S002以降の処理では、PDLFilter450は2つのイベントを待ち受けながら終了するまで無限にループする。待ち受けるイベントは「ジョブ実行要求」と「寿命」である。まず、S002で、PDLFilter450は、ジョブコントローラ230から受け付けたイベントが「実行要求」か否かを判断する。このジョブ実行要求は、フィルタが作成したサービスI/F504に対してジョブコントローラ230が送信してきたジョブ実行要求に対応して作成されるイベントである。S002で「ジョブ実行要求」を検出すると、PDLFilter450はS200のジョブ実行処理を実行する。ジョブ実行は新たにスレッドが作成されてそのスレッド上で処理が進むため、イベントループ処理(S001)と並行に処理が進む。ジョブ実行処理はステート管理される為、ジョブ処理中に新たなジョブ実行要求イベントが到着してもその要求は拒否される。ジョブの実行処理はジョブコントローラ230が作成した印刷データの通路であるパイプライン300を還流するジョブの内容を検査し、含まれている文字種と文字コードを文字イメージに変換する処理である。
Returning to FIG. 9, after the initialization process is completed, the process proceeds to S002. In the processing after S002, the
ジョブ実行処理では、PDLFilter450は文字コードの変換において、まず図8のフォントキャッシュ部1を検索し、所望の文字イメージが存在していたら利用する。また、PDLFilter450は、キャッシュ統計部2に文字種と文字コード別にキャッシュヒットの回数、ヒット率をジョブ単位に集計して、キャッシュ統計情報として記録する。
In the job execution process, the
S002において、ジョブ実行要求ではない場合、処理はS003に進む。S003では、PDLFilter450は、「寿命イベント」か否かを判断する。寿命イベントは、寿命管理部4から発行されるイベントである。寿命管理部4では、起動時に指定された寿命が刻々と減算されている。寿命管理部4は、余命が一定の値に達したらプロセスの停止処理を開始するように「寿命イベント」を生成して投函する。
If it is not a job execution request in S002, the process proceeds to S003. In S003, the
S003において、PDLFilter450が寿命イベントと判断した場合、S300に処理は進む。S300の詳細は図11を用いて後述する。S300の処理後、処理はS004に進み、PDLFilter450は寿命を延長するか否かを判断する。寿命を延長しない場合、処理はS500に進み、PDLFilter450は処理を終了する。寿命を延長する場合、処理はS400に進み、PDLFilter450は寿命延長処理を実行する。寿命延長処理の詳細は図12を用いて後述する。
In S003, when the
図11は、寿命延長確認処理を説明するフローチャートである。S003で寿命イベントを検出すると、寿命延長判定部3がS300の寿命延長確認処理を実行する。S301では、寿命延長判定部3は、寿命イベントを検出した時点でジョブ実行処理中か否かを判断する。実行中の場合は寿命イベントの受信が記憶されるのみでジョブの実行が終了するまで処理が中断される。
FIG. 11 is a flowchart for explaining the life extension confirmation process. When a life event is detected in S003, the life
S302において、寿命延長判定部3は、キャッシュ統計部2が保持している直近のジョブにおけるキャッシュデータのヒット率(使用率)から将来のジョブにおけるヒット率を予想する。この予想には、印刷データ変換部330に特有の評価方法をとることができる。例えば、直近の3ジョブのヒット率の平均を算出し、さらに直近のジョブのヒット率に重みを付けて加算するなどの評価方法が採用できる。S303において、予想値が既定以上になる場合には、寿命延長判定部3はプロセスの寿命延長と延長する寿命の長さを決定する。
In S <b> 302, the life
図12は、寿命延長処理を説明するフローチャートである。S400では、寿命延長判定部3が判定した寿命延長結果を検査する。寿命延長が決定されない場合には、S500の終了処理が実行されてプロセスが終了する。終了処理では、処理中に作成したリソース、メモリの解放が行われる。寿命延長が決定された場合には、S400の寿命延長処理が実行される。S401では、寿命延長判定部3は、決定された延長する寿命の長さ(延長量)と現在時刻から寿命管理部4に設定する設定値を計算して設定する。続いて、S402では、寿命延長判定部3は、延長する寿命の長さを含めた寿命延長メッセージ515を作成してロケータ340に送信し、処理を終える。
FIG. 12 is a flowchart for explaining the life extension process. In S400, the life extension result determined by the life
(ロケータの処理フロー)
S402の通知を受けたロケータ340が行う処理フローについて説明する。図13は、ロケータ340が起動した時点から開始するイベントループ処理(S1001)である。ロケータ340もコンポーネントであるため、メッセージキューを保持している。他のコンポーネントと異なり、ロケータ340はサービスI/Fを提供せず、他のコンポーネントとのコントロールバス502を経由したメッセージ交換がプロセスの外部との通信手段である。その際の受信で発生するイベントと、内部のモジュールからの通知がイベントとして作成され、先のメッセージキューへ投函される。
(Locator processing flow)
A processing flow performed by the
ロケータ340は、起動した直後に初期化処理(S1100)を実行する。初期化処理は、各種の初期設定を行う処理の集合である。S1101では、ロケータ340は、起動時に渡されたコンフィギュレーションファイルの内容を解析して必要な動作パラメータを取得する。初期化処理には、既に説明したように、サービスカタログ501を参照し、起動モードが「ホットスタンバイ(startup)」に指定されているコンポーネントを生成する処理も含まれる。ロガー350もホットスタンバイに指定されているためこの時点で生成される。S1100の初期化処理が終了すると、処理はメッセージ処理(S1002)に進む。
The
図14は、メッセージ処理(S1002)を説明するフローチャートである。処理されるメッセージは、既に説明したアドバタイズメッセージ506、ハートビートメッセージ508、クエリメッセージ509、ステートチェンジメッセージ512、Goodbyeメッセージ513と寿命延長メッセージ515である。S1003では、ロケータ340は、受信したメッセージが寿命延長メッセージ515か否かが判断される。寿命延長メッセージの場合、処理はS1004に進み、寿命延長処理が実行される。その他のメッセージもS1005に示すような判断およびYesと判断された場合の処理が関連つけられてメッセージの数だけ用意されている。寿命延長メッセージ515以外のメッセージは既に説明済みであるため、ここでの説明は省略する。
FIG. 14 is a flowchart for explaining message processing (S1002). The messages to be processed are the
図15は、寿命延長処理を説明するフローチャートである。寿命延長メッセージ515はプロセス管理部5が処理する。S1100では、プロセス管理部5は、メッセージに含まれている送信元のノードIDからサービスインベントリ507を参照して、寿命延長メッセージ515の送信元を特定する。ここでは、PDLFilter450であると特定される。
FIG. 15 is a flowchart for explaining the life extension process. The process management unit 5 processes the
S1101では、プロセス管理部5は、サービスインベントリ507内のPDLFilter450の寿命を寿命延長メッセージ515に記載の延長量を加えた値に置換する。続いて、S1102では、プロセス管理部5は、現在の推定リーク量を更新するとともに、サービスカタログ501のリークレシオと寿命の延長分から、寿命延長に伴って増加するリーク増分を計算する。計算されたリーク増分はリーク管理部6に対して入力される。
In step S1101, the process management unit 5 replaces the lifetime of the
S1003で、リーク管理部6は、延長されたPDLFilter450の実行期間に応じてこのプロセス以外のプロセスを選定する。具体的には、リーク管理部6は、入力されたリーク増分に基づいて、起動中のプロセスの中から寿命を短縮すべきプロセスを選定する。選定にあたってはリークレシオが高いものから優先的に選定する方法や寿命が長いものから優先的に選定する方法など種々考えられるがいずれの方法でも構わない。リーク管理部6は、PDLFilter450の延長された寿命に伴い増加するリーク量を計算する。そして、リーク管理部6は、選択したプロセスの寿命をPDLFilter450が延長開始する時点までに短縮するものとして減少するリーク量を計算する(計算方法は後述する)。
In step S <b> 1003, the leak management unit 6 selects a process other than this process according to the execution period of the extended
S1104では、リーク管理部6は、選定したプロセスに対して寿命変更メッセージ516を送信する。S1005では、リーク管理部6は、寿命延長に伴うリーク増加量からS1104で計算した寿命短縮によるリーク減少量を減じ、まだ零あるいは負値になっていないか(つまりは相殺が完了したか)を判断する。ここでリーク増加量及びリーク減少量は後述するように、主にプロセスの実行期間によって決定される。相殺していないと判断された場合、処理はS1103に戻り、リーク管理部6は他の実行中プロセスのなかから別ものものを選定する。S1105では、リーク管理部6は選定すべきプロセスが存在しない場合には処理を終了する。
In S1104, the leak management unit 6 transmits a
図8では寿命短縮の対象としてジョブコントローラ230とLayoutFilter460の2つのコンポーネントが選定されたものとしている。リーク管理部6は、ジョブコントローラ230とLayoutFilter460の双方に対して負の値を記した寿命変更メッセージ516を送信する。このメッセージには現在設定されている寿命からの変化分が記載されている。変化分が「20」となっていれば20秒の寿命延長を意味し、「−30」と負の値であれば、30秒の寿命短縮を意味する。
In FIG. 8, it is assumed that two components of the
(寿命を短縮されるコンポーネントの処理)
ロケータ340が選定したジョブコントローラ230とLayoutFilter460に対して、其々の寿命の短縮量が計算されて寿命変更メッセージ516が送信される。ジョブコントローラ230とLayoutFilter460は、寿命管理部7,8に対し寿命変更メッセージ516を引き渡す。各寿命管理部7,8はメッセージから寿命設定値を取得し、その設定値を自身の新寿命として設定する。
(Processing of components whose life is shortened)
The
(リーク増加分の相殺計算)
図16を参照し、リーク量の算出を具体的に説明する。図16は、(1)PDLFilter450、(2)ジョブコントローラ230、(3)LayoutFilter460の3つのコンポーネントの時間とメモリ使用量の関係を示す。図16(1)のt1はPDLFilter450が起動した時刻を意味する。
(Calculation of increase in leak)
The calculation of the leak amount will be specifically described with reference to FIG. FIG. 16 shows the relationship between the time and memory usage of the three components (1)
t1の時点では起動しただけで、ジョブを処理しておらずメモリ使用量はコンポーネントが動作上で必要としているメモリだけが確保されている。時刻t2でPDLFilter450はジョブを処理開始した。ジョブ処理に応じて必要なメモリが確保されて使用されるがプログラム上の不具合によって利用されたメモリの解放が行われずメモリリークが発生することになる。従って、t2から時間の経過とともにリークが蓄積していくためメモリ使用量は単調増加の様態を示す。その際の直線の傾きは図7に示すサービスカタログ501のリークレシオに記載された値に応じて異なる。
At the time of t1, it is only activated, and the job is not processed, and only the memory required for the operation of the component is ensured. At time t2,
ここでPDLFilter450に当初設定された寿命(生存期間)は(t3−t1)である。すなわちt3の時点でプロセスを終了したならばメモリ使用量は0に戻る。先に説明したように、PDLFilter450が自らの終了時刻をt3からt4に変更(延長)した場合には、その延長に伴って増加したメモリリークの総量はΔS(B)で表わされる。この部分はPC上で他に転用できなかった無駄なメモリの総量を意味する。厳密にはt1とt2は異なるが、ΔS(B)の計算上t2はt1とみなして差支えない。従って、リークレシオをkとすると、ΔS(B)は以下の式により計算される。
ΔS(B)=1/2・k・{(t3−t1)+(t4−t1)}・(t4−t3)
ここで、kはサービスカタログ501の「リークレシオ」、t1はサービスインベントリ507の「起動時刻」、t3はt1にサービスインベントリ507の「寿命(時間)」を加えた値から得られる。また、(t4−t3)は、PDLFilter450が送信した寿命変更メッセージ516の「変化分」から得られる。
Here, the lifetime (lifetime) initially set in the
ΔS (B) = 1/2 · k · {(t3−t1) + (t4−t1)} · (t4−t3)
Here, k is obtained from the “leak ratio” of the
同様に図16(2)と図16(3)は、それぞれあるジョブコントローラ230を担当するプロセスのメモリ使用量の計時変化と、LayoutFilter460を担当するプロセスのメモリ使用量の計時変化である。ジョブコントローラ230(2)のプロセスは時刻t5で起動し、時刻t6でジョブ処理を開始し、時刻t7で終了する予定であるとする。ここでは、ジョブコントローラ230の終了時間はPDLFilter450の終了時間よりも早い。従って、時刻t7で終了する予定であったジョブコントローラ230を時刻t3(延長されたPDLFilter450の延長開始時間)で終了させると仮定するとΔS(J)部分のメモリ量がリークする予定から0に削減されることになる。ここでも、リークレシオをhとすると、ΔS(J)は以下の式により計算される。
ΔS(J)=1/2・h・{(t3−t5)+(t7−t5)}・(t7−t3)
Similarly, FIGS. 16 (2) and 16 (3) show changes in the memory usage of a process responsible for a
ΔS (J) = 1/2 · h · {(t3−t5) + (t7−t5)} · (t7−t3)
また、LayoutFilter460プロセスは時刻t10で終了する予定のところ、延長されたt3からt4までの期間に一致する期間の寿命を短縮すると仮定すると、リークレシオをgとするならば、ΔS(L)は以下の式により計算される。
ΔS(L)=1/2・g・{(t3−t8)+(t4−t8)}・(t4−t3)
従って、現在実行中のコンポーネントの中から以下の式を満たすプロセスが選定される。
ΔS(B)<=ΔS(J)+ΔS(L)
リーク管理部6は、選定したプロセスに対し、寿命を短縮するように制御する。
Further, the
ΔS (L) = 1/2 · g · {(t3−t8) + (t4−t8)} · (t4−t3)
Therefore, a process that satisfies the following expression is selected from the components currently being executed.
ΔS (B) <= ΔS (J) + ΔS (L)
The leak management unit 6 controls the selected process so as to shorten the lifetime.
以上、本発明のシステムによれば、メモリリークの発生を抑制しつつキャッシュデータの使用率が高いプロセスの利用継続を実現することが可能となる。具体的には、実施例1では、寿命が間近に迫ったコンポーネントが自身の寿命の延長が有効と判断したらその延長をロケータ340に通知する。ロケータ340はリーク増加分を相殺する目的で適当なコンポーネントを選定してその寿命を短縮させることができる。
As described above, according to the system of the present invention, it is possible to realize the continuation of the use of a process having a high cache data usage rate while suppressing the occurrence of a memory leak. Specifically, in the first embodiment, when it is determined that the extension of the lifetime of a component whose lifetime is approaching is effective, the extension is notified to the
(実施例2)
実施例1では、寿命の延長を望むコンポーネントは自分で延長を決定し、その決定をロケータ340に寿命延長メッセージ515として送信することで延長が確定していた。寿命延長メッセージ515を受け取ったロケータ340は、寿命延長にともなって増加するリーク量を相殺すべく他のコンポーネントに対して寿命の短縮を命じる。このシステムでは、延長の決定と延長量には他のコンポーネントの状況が反映されていないため、場合によっては相殺に利用できるコンポーネントが不足する場合がある。その場合には、システムはリークが増加することになる。
(Example 2)
In the first embodiment, the component desiring to extend the lifetime determines the extension by itself, and transmits the determination to the
実施例2では、寿命の延長を望むコンポーネントは延長の必要性と延長期間は算出するものの、ロケータ340に対して延長要求として送信し、その応答に含まれる延長の是非、延長量に従って寿命延長を実行する。ロケータ340は、寿命延長メッセージを受信した時点で実行中のコンポーネントの検索を行い、寿命短縮可能なコンポーネントを確定させたうえで寿命延長に応答する。この実施例によれば処理効率よりも、システム全体のリーク量を制限したい要求にこたえることが可能になる。
In the second embodiment, although the component that desires the extension of life calculates the necessity of extension and the extension period, the component is transmitted to the
図17は、実施例2におけるPDLFilter450がフィルタホスト240にロードされて起動した時点から開始するイベントループ処理(S005)である。実施例1におけるイベントループ処理(S001)に比べてS006の判断、およびその後の処理が追加されている。さらに、S400の寿命延長処理がS410の寿命延長要求処理に変更されている。以下、変更点についてのみ説明を行う。変更のない処理ステップについての説明は実施例1と同一の説明が適用できる。
FIG. 17 shows an event loop process (S005) that starts when the
S100の初期化処理が終了したあとはS002、S006、S003において各々イベントの到着を待ってループしている。寿命管理部4は寿命が近づいたため「寿命イベント」をPDLFilter450に対して投函する。S003で、PDLFilter450は「寿命イベント」を検出する。その後S300の寿命延長確認処理が実行され寿命延長の必要性と延長量が計算される。S5300では、PDLFilter450は寿命延長確認処理を実行する。S5300の結果が検査されて、延長が必要である場合には図18のS410の寿命延長要求処理が実行される。図18に示すように、S411において、寿命延長判定部は、寿命延長メッセージ515を作成しロケータ340に対して送信する。
After the initialization process of S100 is completed, the process loops waiting for the arrival of events in S002, S006, and S003. The life management unit 4 posts a “life event” to the
この後、PDLFilter450はロケータ340からの「寿命延長レスポンスメッセージ」の到着を待つ。S006では、PDLFilter450は寿命延長メッセージを検出する。S007では、PDLFilter450はメッセージの内容を解析する。メッセージ内の結果が寿命延長を決定した旨が記載されている場合には、処理はS420に進む。S420では、PDLFilter450は、レスポンスメッセージに記載されている寿命延長量を取得して寿命管理部4に設定する。この時点で新寿命が確定しPDLFilter450は寿命が延長される。S007においてメッセージに寿命延長が拒否された旨が記載されている場合には、S500に処理が進み、PDLFilter450はプロセスを終了する。
Thereafter, the
図19は、ロケータ340のメッセージ処理を説明するフローチャートである。実施例1と比較して寿命延長処理(S1006)が変更になっている。S1003では、ロケータ340は寿命延長メッセージ515を受信し、S1006に処理が進む。
FIG. 19 is a flowchart for explaining message processing of the
図20は、寿命延長処理(S1006)の詳細を説明するフローチャートである。S1100において、プロセス管理部5は、メッセージに含まれている送信元のノードIDからサービスインベントリ507を参照して寿命延長メッセージ515の送信元を特定する。ここでは、プロセス管理部5は、PDLFilter450であると特定する。続いてサービスカタログ501のリークレシオと寿命の延長分から寿命延長に伴って増加するリーク増分を計算する(S1102)。計算されたリーク増分はリーク管理部6に対する入力となる。
FIG. 20 is a flowchart for explaining the details of the life extension process (S1006). In step S1100, the process management unit 5 refers to the
S1003では、リーク管理部6は、現在稼働しているプロセスの中から寿命を短縮すべきプロセスを選定する。リーク管理部6は、リーク管理部6は、PDLFilter450の延長された寿命に伴い増加するリーク量を計算する。そして、リーク管理部6は、選択したプロセスの寿命をPDLFilter450が延長開始する時点までに短縮するものとして減少するリーク量を計算する。
In step S1003, the leak management unit 6 selects a process whose life should be shortened from among the currently operating processes. The leak management unit 6 calculates the leak amount that increases with the extended life of the
S1104では、リーク管理部6は、選定したプロセスに対して寿命変更メッセージ516を送信する。S1005では、リーク管理部6は、寿命延長に伴うリーク増加量からS1104で計算した寿命短縮によるリーク減少量を減じ、まだ零あるいは負値になっていないか(つまりは相殺が完了したか)を判断する。相殺がしていないと判断された場合、処理はS1103に戻り、リーク管理部6は、他の実行中プロセスのなかから別ものプロセスを選定する。
In S1104, the leak management unit 6 transmits a
S1105において、寿命短縮対象の実行プロセスが尽きてしまった場合にもループを抜け、処理はS1101に進む。この時点で寿命短縮対象として選定されたプロセスのリーク削減量が確定する。プロセス管理部5は、この削減量に基づいてPDLFilter450の寿命延長量を算出する。
In S1105, if the execution process subject to the life reduction is exhausted, the loop is exited and the process proceeds to S1101. At this point, the amount of leakage reduction of the process selected as the life shortening target is determined. The process management unit 5 calculates the life extension amount of the
プロセス管理部5は、サービスインベントリ507内のPDLFilter450の寿命を算出された延長量を加えた値に置換する(S1101)。S1106において、プロセス管理部5は、算出された寿命延長量を記載したレスポンスメッセージを作成し、PDLFilter450に送信し、処理を終了する。この処理フローから理解できるように、本実施例では実施例1と異なり、寿命短縮対象となるコンポーネントの選定が先に実施され、その後、確定した削減量に応じて寿命延長を望むコンポーネントの延長期間が確定することになる。この実施例では、システムのリーク増加を抑制することが効率よりも重視された印刷データ変換サービスが提供されることになる。
The process management unit 5 replaces the lifetime of the
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウエア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
(Other embodiments)
The present invention can also be realized by executing the following processing. That is, software (computer program) that implements the functions of the above-described embodiments is supplied to a system or apparatus via a network or various storage media. Then, the computer (or CPU, MPU, etc.) of the system or apparatus reads out and executes the program. In this case, the program and the storage medium storing the program constitute the present invention.
Claims (9)
キャッシュデータの使用率に基づいて、第1のプロセスの実行期間を延長する延長手段と、
延長された前記第1のプロセスの実行期間に基づいて、前記第1のプロセス以外の第2のプロセスの実行期間を短縮する短縮手段と、
実行期間が終了したプロセスを終了する終了手段と、を備える
ことを特徴とするシステム。 A system for executing a plurality of processes with a predetermined execution period,
An extension means for extending the execution period of the first process based on the usage rate of the cache data;
Shortening means for shortening the execution period of the second process other than the first process based on the extended execution period of the first process;
And a termination unit that terminates the process whose execution period has ended.
前記短縮手段は、前記延長された第1のプロセスの実行期間におけるメモリリーク量が相殺されるように1または複数の前記第2のプロセスの実行期間を短縮する
ことを特徴とする請求項1に記載のシステム。 A calculation means for calculating a memory leak that increases as the execution period of each process elapses;
The said shortening means shortens the execution period of one or several said 2nd processes so that the amount of memory leaks in the execution period of the said extended 1st process may be offset. The described system.
ことを特徴とする請求項2に記載のシステム。 The shortening unit calculates a memory leak amount in the execution period of the shortened second process, and the memory leak amount in the execution period of the extended first process is not offset by the calculated memory leak amount The system according to claim 2, wherein another second process is selected and the execution period is shortened.
ことを特徴とする請求項1乃至3のいずれか一項に記載のシステム。 The said shortening means shortens the execution period of the said 2nd process which is starting and the usage rate of the said cache data is low or has a long lifetime. The one of the Claims 1 thru | or 3 characterized by the above-mentioned. The system according to one item.
ことを特徴とする請求項1乃至4のいずれか一項に記載のシステム。 The shortening means shortens a period corresponding to the extended execution period of the first process from the execution period of the second process, and the end time of the execution period of the second process is the first process. If the execution period is earlier than the end time of the second process, the period from the end time of the second process to the extended start time of the extended execution period of the first process is shortened from the execution period of the second process. The system according to any one of claims 1 to 4, characterized in that:
ことを特徴とする請求項1乃至5のいずれか一項に記載のシステム。 If the amount of memory leak in the extended execution period of the first process is not offset even if the execution period of the second process is shortened, memory leaks in the execution periods of all the shortened second processes 6. The apparatus according to claim 1, further comprising a determination unit configured to calculate an amount and determine an extension period of the execution period of the first process based on the calculated memory leak. system.
ことを特徴とする請求項1乃至6のいずれか一項に記載のシステム。 The system according to any one of claims 1 to 6, wherein data conversion processing requested by an external device is performed by the plurality of processes.
キャッシュデータの使用率に基づいて、第1のプロセスの実行期間を延長する延長工程と、
延長された前記第1のプロセスの実行期間に基づいて、前記第1のプロセス以外の第2のプロセスの実行期間を短縮する短縮工程と、
実行期間が終了したプロセスを終了する終了工程と、を含む
ことを特徴とする制御方法。 A method of controlling a system that executes a plurality of processes with a predetermined execution period,
An extension step of extending the execution period of the first process based on the usage rate of the cache data;
A shortening step of shortening an execution period of a second process other than the first process based on the extended execution period of the first process;
And a termination process for terminating the process whose execution period has been terminated.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014013697A JP2015141535A (en) | 2014-01-28 | 2014-01-28 | System, controlling method therefor, and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014013697A JP2015141535A (en) | 2014-01-28 | 2014-01-28 | System, controlling method therefor, and computer program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015141535A true JP2015141535A (en) | 2015-08-03 |
Family
ID=53771848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014013697A Pending JP2015141535A (en) | 2014-01-28 | 2014-01-28 | System, controlling method therefor, and computer program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015141535A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018041274A (en) * | 2016-09-07 | 2018-03-15 | キヤノン株式会社 | Information processing apparatus and method for controlling the same, printing system, and program |
CN109310982A (en) * | 2016-06-28 | 2019-02-05 | 株式会社可乐丽 | For removing the composition of sulfur-containing compound |
-
2014
- 2014-01-28 JP JP2014013697A patent/JP2015141535A/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109310982A (en) * | 2016-06-28 | 2019-02-05 | 株式会社可乐丽 | For removing the composition of sulfur-containing compound |
US11291947B2 (en) | 2016-06-28 | 2022-04-05 | Kuraray Co., Ltd. | Composition for removing sulfur-containing compound |
JP2018041274A (en) * | 2016-09-07 | 2018-03-15 | キヤノン株式会社 | Information processing apparatus and method for controlling the same, printing system, and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5653151B2 (en) | Cloud computing system, cloud computing system control method, and management application | |
JP4569846B2 (en) | I / O node control method and method | |
US8321530B2 (en) | Cloud computing system, server computer, device connection method, and storage medium | |
US8938510B2 (en) | On-demand mailbox synchronization and migration system | |
US20100185766A1 (en) | Load distribution apparatus, load distribution method, and storage medium | |
US20120086978A1 (en) | Cloud computing system, information processing method, and storage medium | |
JP2011192250A (en) | Cloud computing system, and control method therefor | |
JP2010517198A (en) | Distributed task system and distributed task management method | |
US10802753B2 (en) | Distributed compute array in a storage system | |
JP6336602B2 (en) | Packet flow control method, related apparatus, and computing node | |
US9424059B1 (en) | System and methods for implementing quality of service in a networked virtualization environment for storage management | |
US7426547B2 (en) | Document shadowing intranet server, memory medium and method | |
US7908377B2 (en) | Computer system and data sharing method | |
JP2015141535A (en) | System, controlling method therefor, and computer program | |
WO2017141363A1 (en) | Data processing system and data processing method | |
CN108153794B (en) | Page cache data refreshing method, device and system | |
JP4455523B2 (en) | Information processing system, information processing method, program, and storage medium | |
JP2017010227A (en) | Web server, management system, and control method thereof | |
JPWO2008149657A1 (en) | I / O control system, I / O control method, and I / O control program | |
JP5972094B2 (en) | Information processing apparatus, information processing method, and program | |
US9753682B2 (en) | Information processing apparatus, information processing method, and computer-readable storage medium | |
JP2015176590A (en) | Print control apparatus and program | |
JP6335527B2 (en) | System, system control method, and computer program | |
JP4089506B2 (en) | File sharing system, server and program | |
JP2020024636A (en) | Scheduling device, scheduling system, scheduling method and program |