JP2015141535A - System, controlling method therefor, and computer program - Google Patents

System, controlling method therefor, and computer program Download PDF

Info

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
Application number
JP2014013697A
Other languages
Japanese (ja)
Inventor
松尾 卓幸
Takuyuki Matsuo
卓幸 松尾
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014013697A priority Critical patent/JP2015141535A/en
Publication of JP2015141535A publication Critical patent/JP2015141535A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a system which prevents memory leaks and allows continuous use of processes associated with high rates of cache data usage.SOLUTION: A system 80 for executing a plurality of processes, each having a defined execution period; extends an execution period of a first process based on a cache data usage rate; reduces an execution period of a second process, other than the first process, based on the extended execution period of the first process; and terminates a process whose execution period is over.

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 Patent Document 1, a counter that determines the restart timing is associated with each of a plurality of processes that provide services, and the value of the counter is managed by a single management unit. . The management unit updates each counter value according to the risk of processing, and determines the restart of the process by comparison with a threshold value. According to this system, process restarts are executed in order, so that memory leaks are released in order even during service provision.

特開2011−54114号公報JP 2011-54114 A

本願のシステムでは前述のメモリリークの問題に着目しつつも、高スループットを実現する方法について検討する。データ変換処理における高スループットの確保のためにデータキャッシュを活用することを考える。キャッシュを用意、保持する為には初期投資としてのキャッシュデータ作成時間とある程度まとまったメモリ領域が必要となる。   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 Patent Document 1, a process that is likely to reuse the cache may be restarted as described above. If the process is restarted, the prepared cache is released, leading to a reduction in system throughput.

本発明は、メモリリークの発生を抑制しつつキャッシュデータの使用率が高いプロセスの利用継続を実現するシステムを提供することを目的とする。   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 is a diagram illustrating an example of the overall configuration of a printing system according to an embodiment. サーバPCのハードウエア構成例を説明するブロック図である。It is a block diagram explaining the hardware structural example of server PC. サーバPCのソフトウエア構成例を説明するブロック図である。It is a block diagram explaining the software structural example of server PC. 印刷データ変換部の動作に関連するコンポーネント群を説明する図である。It is a figure explaining the component group relevant to operation | movement of a print data conversion part. コンポーネントの生成、消滅、利用を説明する図である。It is a figure explaining the production | generation, extinction, and utilization of a component. サービスカタログの構成を示す模式図である。It is a schematic diagram which shows the structure of a service catalog. サービスインベントリの構成を示す模式図である。It is a schematic diagram which shows the structure of a service inventory. コンポーネントの寿命処理を行うサーバPCの機能構成を示す図である。It is a figure which shows the function structure of server PC which performs the lifetime process of a component. 実施例1の、PDLFilterのイベントループの処理フローである。6 is a processing flow of an event loop of a PDLFilter according to the first embodiment. PDLFilterの初期化処理の処理フローである。It is a processing flow of the initialization process of PDLFilter. PDLFilterの寿命延長確認処理の処理フローである。It is a processing flow of the lifetime extension confirmation process of PDLFilter. PDLFilterの寿命延長処理の処理フローである。It is a processing flow of the life extension process of PDLFilter. ロケータのイベントループの処理フローである。It is a processing flow of the event loop of a locator. ロケータのメッセージ処理の処理フローである。It is a processing flow of the message processing of a locator. ロケータの寿命延長処理の処理フローである。It is a processing flow of the lifetime extension process of a locator. メモリリーク量の増加量と削減量の関係を示したグラフである。It is the graph which showed the relationship between the increase amount of memory leak amount, and the reduction amount. 実施例2の、PDLFilterのイベントループの処理フローである。10 is a processing flow of an event loop of the PDLFilter in the second embodiment. PDLFilterの寿命延長要求処理の処理フローである。It is a processing flow of a PDLFilter life extension request processing. ロケータのメッセージ処理の処理フローである。It is a processing flow of the message processing of a locator. ロケータの寿命延長処理の処理フローである。It is a processing flow of the lifetime extension process of a locator.

(実施例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-side devices 20 to 40 that request a print conversion service, a printer 60, and service-providing devices 70 to 90. A client 50 who requests print data conversion uses a device such as a personal computer 20, a tablet PC 30, or a portable terminal 40 as a device that transmits a print data conversion request. The client 50 uses an application (not shown) running inside these devices to send print data to a print data conversion unit 330 (described later with reference to FIG. 3) existing on the network 10. Request conversion.

印刷データ変換部330は、サーバPC80上で周知のURLを公開している、いわゆるWebサービスとして動作しているプログラムである。サーバPC80上では、前記URLに対して到着したパーソナルコンピュータ20などの外部機器からの依頼を印刷データ変換部330に転送するWeb通信部310も動作している。URLへ到着する依頼は通常多数になるため、単一のサーバPC80では処理させず、複数のサーバPC80に処理させる構成とする。従って、ロードバランサ70が複数のサーバPC80の前段に設置され、各サーバPC80に転送される依頼が均一に配分される。   The print data conversion unit 330 is a program operating as a so-called Web service that publishes a well-known URL on the server PC 80. On the server PC 80, a Web communication unit 310 is also operating to transfer a request from an external device such as the personal computer 20 that has arrived for the URL to the print data conversion unit 330. Since there are usually a large number of requests that arrive at the URL, a single server PC 80 is not processed, but a plurality of server PCs 80 are processed. Accordingly, the load balancer 70 is installed in front of the plurality of server PCs 80, and requests transferred to the server PCs 80 are evenly distributed.

印刷データ変換部330が提供するサービスは、依頼者50が指定するデータをプリンタ60で印刷できる形式に変換することである。依頼者が指定するデータにはドキュメント、画像ファイルなど各種のアプリケーションプログラムで作成されたフォーマットが存在する。一方、プリンタ60が印刷データとして受け付けるデータは前述のフォーマットとは異なり、PDLで記述されたデータや、印刷部数等の印刷を制御するための命令とパラメータを備えたPJLで記述されたデータとなっている。PJLは、Print Job Languageの略称である。   A service provided by the print data conversion unit 330 is to convert data designated by the client 50 into a format that can be printed by the printer 60. The data designated by the client has formats created by various application programs such as documents and image files. On the other hand, the data received by the printer 60 as print data is different from the above-described format, and is data described in PDL or data described in PJL having instructions and parameters for controlling printing such as the number of copies. ing. PJL is an abbreviation for Print Job Language.

このように、依頼者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 client 50 and the printer 60, a program for filling in the difference is required. A program called a printer driver usually performs this conversion process. The printer driver is usually operated on a PC on which the above-described application program operated by the client 50 is operating. However, since the printer driver process is a heavy process that requires relatively resources such as CPU and memory, the print process becomes impractical when the resources held by the PC operated by the client 50 are small. It will be such a process. As the demand for printing from terminals with relatively few resources, such as terminals operated by the client 50 (for example, personal computers 20, tablet PCs 30 and portable terminals 40), printer driver processing can be performed by services on the Internet. The importance is increasing.

依頼者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 printer 60 with respect to the above-described URL. The converted data generated by the print data conversion unit 330 operating on the server PC 80 in response to the request is returned to the requesting terminal. Depending on the instruction of the client 50, the converted data may be stored in the file server PC 90 accessible by the print data conversion unit 330.

図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 server PC 80 will be described as an example. The server PC 80 includes an HDD 102, a ROM 103, a RAM 104, a CPU 105, an output device 106, an input device 107, and a communication device 108. The CPU 105 controls the entire function of the server PC 80 in an integrated manner. The CPU 105 implements a print service function by reading an OS (operating system) and application programs from the HDD 102 or the ROM 103, loading them into the RAM 104, and executing them. The processing result by the CPU 105 is stored in the HDD 102 as a file or stored in the RAM 104 as data. CPU, HDD, ROM, and RAM are abbreviations for Central Processing Unit, Hard Disk Drive, Read Only Memory, and Random Access Memory, respectively.

HDD102またはROMは、OS上で動作する図3に示すソフトウエア群を格納する。入力装置107は、使用者の入力や各種センサの読み取り値を取得する。出力装置106は、各種情報を出力し、処理結果を表示する。通信装置108は、ネットワークに接続された他のコンピュータや装置と通信を行う。これらのハードウエアはコントロールバス1001で互いに接続されていて、アプリケーションプログラムから操作できるように構成されている。   The HDD 102 or ROM stores software groups shown in FIG. 3 that operate on the OS. The input device 107 acquires user input and reading values of various sensors. The output device 106 outputs various information and displays the processing result. The communication device 108 communicates with other computers and devices connected to the network. These hardware components are connected to each other via a control bus 1001 and can be operated from an application program.

図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 server PC 80 functioning as the system of the present invention. The server PC 80 includes a Web communication unit 310, an application unit 320, a print data conversion unit 330, a locator 340, and a logger 350. The web communication unit 310 receives a request transmitted by the HTTP protocol from an application on the personal computer 20 operated by the client 50. The load balancer 70 is positioned in front of the Web communication unit 310 and distributes the received request to the Web communication units 310 operating on the plurality of server PCs 80. Various methods of distributing are known, but the details thereof are not related to the present invention, so that the description thereof is omitted.

ここで、サーバPC80は必ずしも物理的な一台のサーバPCを意味する必要はない。近年は、単一のPC上に複数の仮想的なPCを出現させる仮想化技術が一般的となっており、ソフトウエアからみれば自身が動作しているオペレーティングシステムが仮想的に作り出されたものか否かは判別がつかないか、あるいは判別する必要がない。従って本発明におけるサーバPC80は「場合によっては仮想化されたPC」を意味する場合もある。これ以降、「PC」という表現は物理的なPCと仮想化されたPCの両方を意味するものとして扱う。   Here, the server PC 80 does not necessarily mean one physical server PC. In recent years, virtualization technology that allows multiple virtual PCs to appear on a single PC has become commonplace, and from the viewpoint of software, an operating system on which it operates is virtually created. It is not possible to determine whether or not, or it is not necessary to determine. Therefore, the server PC 80 in the present invention may mean “in some cases a virtualized PC”. Hereinafter, the expression “PC” is treated as meaning both a physical PC and a virtualized PC.

アプリケーション部320は、要求の送付先として指定されたURLを解析し、関連付けられている印刷データ変換部330を決定するソフトウエアである。通常Web通信部310とアプリケーション部320は複数種のサービスを扱うことが可能であり、URLから対応するサービスを特定して要求を振り分けることができる。本実施例ではその複数種のサービスの一つが印刷データ変換部330であることを想定している。このサービスの他にもサービスが稼働しているが、発明の説明においては印刷データ変換部330以外のサービスは省略する。   The application unit 320 is software that analyzes a URL designated as a request destination and determines an associated print data conversion unit 330. Normally, the Web communication unit 310 and the application unit 320 can handle a plurality of types of services, and can identify requests corresponding to URLs and distribute requests. In the present embodiment, it is assumed that one of the multiple types of services is the print data conversion unit 330. In addition to this service, services are operating, but in the description of the invention, services other than the print data conversion unit 330 are omitted.

印刷データ変換部330は、単一のプロセスではなく複数プロセスが共同して動作することでサービスを提供する形態をとっている。以下では「印刷データ変換サービス」という場合にはこれら複数のプロセスを総称していることに留意されたい。ロケータ340とロガー350は、印刷データ変換部330とは独立して存在するプロセスである。アプリケーション部320は、複数の要求を並列実行させるために印刷データ変換部330を複数起動し、各々に要求を振り分ける。この場合でも、ロケータ340とロガー350は各々一個のプロセスとして存在している。アプリケーション部320はさらに、印刷データ変換部330が動作する際に依頼者50からの一連の要求を特定する為のセッションを管理する。具体的には、同一の依頼者50からの要求は同一の印刷データ変換部330に転送するセッション・アフィニティーを実現している。   The print data conversion unit 330 takes a form in which a service is provided by a plurality of processes operating together instead of a single process. In the following, it should be noted that these processes are collectively referred to as “print data conversion service”. The locator 340 and the logger 350 are processes that exist independently of the print data conversion unit 330. The application unit 320 activates a plurality of print data conversion units 330 in order to execute a plurality of requests in parallel, and distributes the requests to each. Even in this case, each of the locator 340 and the logger 350 exists as one process. The application unit 320 further manages a session for specifying a series of requests from the client 50 when the print data conversion unit 330 operates. Specifically, session affinity is realized in which requests from the same client 50 are transferred to the same print data conversion unit 330.

(印刷データ変換サービス)
図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 data conversion unit 330. As described above, the print data conversion unit 330 operates as a community of a plurality of processes. The components are a print service gateway 211, a proxy module 220, a filter host 240, and various filter groups (270, 280, 290). Here, three types of various filters are shown for explanation, but there are actually many filters, and the combinations are not fixed, and are different for each print data conversion unit 330 to be generated. Filters may be used.

(印刷サービスゲートウェイ)
印刷データ変換部330に対するサービス依頼を受け付けるのは、プロセスとして存在する印刷サービスゲートウェイ211であり、その起動はアプリケーション部320が行う。印刷サービスゲートウェイ211はプロキシモジュール220をロードし、Application Programming Interface(API)で提供している関数群を呼び出すことで変換処理の実行を依頼し、さらに結果を受領する。プロキシモジュール220の提供するAPIを呼び出して印刷データ変換部330にサービスの提供を依頼すると「ジョブ」と呼ばれるデータ構造が生成される。ジョブについての詳細な説明は後述する。
(Print service gateway)
A service request to the print data conversion unit 330 is received by the print service gateway 211 that exists as a process, and the application unit 320 starts it. The print service gateway 211 loads the proxy module 220, requests execution of conversion processing by calling a function group provided by the Application Programming Interface (API), and receives a result. When an API provided by the proxy module 220 is called to request the print data conversion unit 330 to provide a service, a data structure called “job” is generated. A detailed description of the job will be described later.

(ロケータ)
印刷データ変換部330を構成するコンポーネント群が利用するロケータ340は特別な役割を担っている。ロケータ340は、アプリケーション部320が起動した時点で既に起動している特殊なプロセスである。ロケータ340の起動の方法はサーバPC80上で動作しているオペレーティングシステム(OS)によって種々の方法が存在する。例えば、Windows(登録商標)であれば”Windows(登録商標) Service”というシステム起動時に自動的に起動される特殊なプロセスとして実装することが可能である。Linux(登録商標)やUnix(登録商標)ではデーモンプロセスとして動作させることが可能である。
(locator)
A locator 340 used by a component group constituting the print data conversion unit 330 has a special role. The locator 340 is a special process that is already activated when the application unit 320 is activated. There are various methods for starting the locator 340 depending on the operating system (OS) operating on the server PC 80. For example, if it is Windows (registered trademark), it can be implemented as a special process that is automatically started when the system is started, such as “Windows (registered trademark) Service”. Linux (registered trademark) or Unix (registered trademark) can be operated as a daemon process.

ロケータ340は、コンポーネントを生成する機能を有する。さらに、ロケータ340は、他のコンポーネントからの求めに応じて別のコンポーネントのアクセスポイントを返すという機能を提供する。アクセスポイントとは、TCP/IPのリスンポートを指す。あるコンポーネントは、別のコンポーネントが公開しているアクセスポイントを取得し、そのアクセスポイントにアクセスすることでそのコンポーネントが提供する機能を利用する。あるコンポーネントが他のコンポーネントのアクセスポイントをロケータ340に対して問い合わせる動作を“ロケーションクエリ”あるいは単に“クエリ”と呼ぶ。   The locator 340 has a function of generating a component. Further, the locator 340 provides a function of returning an access point of another component in response to a request from another component. An access point refers to a TCP / IP listen port. A component acquires an access point disclosed by another component and uses the function provided by that component by accessing the access point. An operation in which a certain component inquires the access point of another component to the locator 340 is referred to as “location query” or simply “query”.

印刷データ変換部330を構成するコンポーネントのうち、プロキシモジュール220、ジョブコントローラ230、フィルタホスト240は、ロガー350が提供しているロギングデータをログファイルとして記録するサービスを利用している。そのため、ロケータ340に対してロガー350のアクセスポイントを得る目的でクエリを行っている。同様にプロキシモジュール220はジョブコントローラ230をクエリし、ジョブコントローラ230はフィルタA270、フィルタB280、フィルタC290をクエリする。クエリの詳細フローは後述する。   Among the components constituting the print data conversion unit 330, the proxy module 220, the job controller 230, and the filter host 240 use a service that records the logging data provided by the logger 350 as a log file. Therefore, a query is performed for the purpose of obtaining an access point of the logger 350 with respect to the locator 340. Similarly, the proxy module 220 queries the job controller 230, and the job controller 230 queries the filter A270, the filter B280, and the filter C290. The detailed flow of the query will be described later.

(ジョブコントローラ)
プロキシモジュール220を介してジョブ実行を依頼されたジョブコントローラ230は、ジョブ、およびジョブに含まれている印刷データを解析して変換に必要なフィルタを選定する。解析は印刷データの先頭から既定のサイズを読出しその中に含まれている特徴的な内容から印刷データの種類を判定する。例えば、JPEG形式や、PDF形式のデータなどが入力データとして与えられる。次に、ジョブコントローラ230は、ジョブに含まれている変換先の印刷データ形式を取得し、変換元の印刷データ形式と変換先の印刷データ形式の両者が確定した時点で、この変換に必要なフィルタ群を選定する。必要なフィルタの組み合わせとその変換順番は固定的な知識としてジョブコントローラ230に実装されている。
(Job controller)
The job controller 230 requested to execute the job via the proxy module 220 analyzes the job and the print data included in the job and selects a filter necessary for the conversion. In the analysis, a predetermined size is read from the top of the print data, and the type of the print data is determined from the characteristic contents included in the size. For example, data in JPEG format or PDF format is given as input data. Next, the job controller 230 acquires the conversion-destination print data format included in the job, and is necessary for this conversion when both the conversion-source print data format and the conversion-destination print data format are determined. Select a filter group. Necessary combinations of filters and their conversion orders are implemented in the job controller 230 as fixed knowledge.

必要な複数のフィルタを選定したあとに、ジョブコントローラ230はこれらフィルタをロードしているフィルタホスト240を取得する。この例では変換に必要なフィルタとして、フィルタA270、フィルタB280、フィルタC290が必要であり、それらはそれぞれフィルタホスト240にロードされている。   After selecting a plurality of necessary filters, the job controller 230 acquires the filter host 240 that has loaded these filters. In this example, filters A 270, B 280, and C 290 are necessary as filters necessary for conversion, and these are loaded in the filter host 240.

ジョブコントローラ230は、フィルタA270、フィルタB280、フィルタC290との間で、パイプライン300と呼ばれるデータ転送チャネルを作成する。パイプライン300は基本的に片方向にのみデータを転送する。ジョブコントローラ230→フィルタA270→フィルタB280→フィルタC290→ジョブコントローラ230と一周するようにパイプライン300が構成される。また、ジョブコントローラ230はプロキシモジュール220との間にもパイプライン300を作成する。このようにパイプライン300を作成することで、プロキシモジュール220から印刷データが複数のコンポーネントを還流し、最後に変換が終了した形で再びプロキシモジュール220に戻ってくる。   The job controller 230 creates a data transfer channel called a pipeline 300 between the filter A 270, the filter B 280, and the filter C 290. The pipeline 300 basically transfers data only in one direction. The pipeline 300 is configured to go around the job controller 230 → filter A 270 → filter B 280 → filter C 290 → job controller 230. The job controller 230 also creates a pipeline 300 with the proxy module 220. By creating the pipeline 300 in this way, the print data returns from the proxy module 220 to a plurality of components, and finally returns to the proxy module 220 in a form where the conversion is completed.

(フィルタ、フィルタホスト)
フィルタは、データ変換処理のみを実装したライブラリモジュールの形式で用意されている。フィルタホスト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 filter host 240 exists as a process and loads a filter specified at the time of execution. The filter host 240 is in charge of processing such as connection to the control bus 502 and message transmission / reception, generation and connection of the pipeline 300, communication with the job controller 230, and transfer of the log output of the filter to the logger 350.

(ロガー)
ロガー350は、プロセスとして同一コントロールバス502上に一つ存在する。コントロールバス502上のコンポーネントは、ジョブの実行中にログ出力を行う。ログの出力対象としてはファイルが一般的であるが、すべてのコンポーネントが独立してログファイルの出力を行うとサーバPC80上のファイルI/Oの発生回数が増大し印刷データ変換部330全体のパフォーマンスが低下してしまう。そこで、各コンポーネントはログデータをロガー350に対してネットワークを介して送りつけ、ロガー350が一定量のログデータの蓄積時点でログファイルに出力することになっている。ログファイルの出力パス等の設定はロガー350が起動される際に渡されるコンフィギュレーションファイルで指定される。ここで、パイプライン300を還流するデータについて説明する。このデータは「ジョブ」と呼ばれる。
(Logger)
One logger 350 exists on the same control bus 502 as a process. A component on the control bus 502 outputs a log during job execution. As a log output target, a file is generally used. However, if all components output log files independently, the number of file I / O occurrences on the server PC 80 increases, and the overall performance of the print data conversion unit 330 is increased. Will fall. Therefore, each component sends log data to the logger 350 via the network, and the logger 350 outputs to a log file when a certain amount of log data is accumulated. Settings such as the output path of the log file are specified by a configuration file delivered when the logger 350 is started. Here, data for returning the pipeline 300 will be described. This data is called a “job”.

(ジョブ)
データ変換処理は、プロキシモジュール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 proxy module 220. A job is conceptually composed of a data structure called “ticket” in which target data to be converted and setting values for conversion processing are bundled in a coherent format. The job is given unique identification information so that it can be identified (job ID). The generated job is stored as a file in a storage device such as the HDD 102. Further, when taking out from the storage device, it is possible to specify the job ID, acquire the file, and refer to the contents. The act of discarding a job is realized as deleting a file. The job includes the contents of the print data directly in the file, or includes reference information such as a file path of the print data filed. Further, the job includes information about a print file format that can be processed by the printer 60 that performs printing. In addition, print settings for specifying a print processing method such as the number of copies to be printed and a print imposition instruction are included. Hereinafter, an action for processing a job may be referred to as “execute a job”.

(印刷データ)
プリンタが理解可能な形式で作成され、その内容をプリンタのメモリを介してハードウエアロジックに与えることが可能なバイナリ形式のデータを印刷データと称する。または、ファームウエアとして実装されている変換ロジックに与えて印刷エンジンが処理可能な形式に変換できる何らかの記述言語(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 personal computer 20, the tablet PC 30 or the portable terminal 40 in FIG. 1 or embedded in a conversion request from the memory. Alternatively, the print data is acquired by extracting a reference (URL or file path) to a file stored in advance in the file server PC 90 of FIG. 1 from the conversion request and acquiring the file contents.

ここで図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 data conversion unit 330 querying other components will be described.
(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 locator 340 manages this end point. Furthermore, there is a need for a means for a component to obtain dynamically generated endpoints of other components. This means is a query. The locator 340 answers this query.

(コンポーネントの生成)
コンポーネントは基本的に動的に生成される。図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 locator 340 exists. This situation corresponds to immediately after the server PC 80 is activated in FIG. At this point, it is assumed that the print data conversion unit 330 has not been activated yet. The locator 340 is connected to the control bus 502 alone.

ロケータ340は、図6に示すサービスカタログ501を保持している。サービスカタログ501は、このサーバ80上にインストールされているコンポーネントのリストから構成されている。コンポーネントごとに名前、バージョン、実行ファイルパス、起動時のコンフィギュレーションファイルパス、コンポーネントの寿命、起動モード、リーク量(リークレシオ)が記載されている。起動モードは、オンデマンドで起動するかホットスタンバイさせておくかを示すモードである。リーク量は、稼働に伴って発生する単位時間当たりのメモリリーク量である。コンポーネントの名前はその機能を表す一般的な名称が階層構造で表現される。例えば”FilterHost”という機能名が”system”という階層の下に定義されているため、“/system/FilterHost”という階層形式の表記となっている。この名前の表記方法は特に本発明の特徴とはなっていないがコンポーネントを組織的にかつユニークに命名する為に用いられている。同一の名前を持つコンポーネントであっても、そのバージョンが異なれば異なる機能を提供するためサービスカタログ501上では異なるエントリーとして扱われる。   The locator 340 holds a service catalog 501 shown in FIG. The service catalog 501 is composed of a list of components installed on the server 80. For each component, the name, version, executable file path, configuration file path at startup, component life, startup mode, and leak amount (leak ratio) are described. The start mode is a mode indicating whether to start on demand or to make a hot standby. The leak amount is a memory leak amount per unit time that occurs with the operation. The component name is expressed in a hierarchical structure as a general name indicating its function. For example, since the function name “FilterHost” is defined under the hierarchy “system”, it has a hierarchical format of “/ system / FilterHost”. Although this name notation is not particularly characteristic of the present invention, it is used to systematically and uniquely name components. Even components having the same name are treated as different entries on the service catalog 501 in order to provide different functions if their versions are different.

図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 certain component A 503 is designated as hot standby (startup). When the locator 340 is activated, the locator 340 refers to the service catalog 501 and finds the component A 503 whose activation mode is designated as hot standby. The locator 340 acquires the path and lifetime of the configuration file 505 from the service catalog 501 and gives them as arguments to start the executable file path program of the component A 503. When the component A 503 is activated, it is given a unique ID when it is connected to the control bus 502. This ID is a GUID in this embodiment, but it may be in other formats. In addition, on-demand is defined in the activation mode. A component having an on-demand activation mode is not automatically activated when the system is activated, and is literally activated only after a query that literally specifies the component is made.

図5(C)は、起動したコンポーネントA503が、起動時に与えられたコンフィギュレーションファイル505の内容を参照して必要な初期値等を取り出し、さらにその初期値を使って自身を初期化する例を示す。初期化が完了するとサービスを提供する為に、TCP/IPのポートを取得しサービスI/F504の待ち受けを開始する。コンポーネントA503は、これで他のコンポーネントへのサービスの提供の準備ができたため、コントロールバス502に自身のアドバタイズメッセージ506を作成して送信する。   FIG. 5C shows an example in which the activated component A 503 refers to the contents of the configuration file 505 given at the time of activation, extracts necessary initial values and the like, and initializes itself using the initial values. Show. When the initialization is completed, in order to provide a service, a TCP / IP port is acquired and waiting for the service I / F 504 is started. Since the component A 503 is now ready to provide services to other components, the component A 503 creates its own advertisement message 506 and transmits it to the control bus 502.

アドバタイズメッセージ506には、コンポーネントA503の名前、ID、バージョン、サービスI/F504のURL、ポート番号、寿命が記載されている。このメッセージがロケータ340宛てに送信される。アドバタイズメッセージ506はコンポーネントが自身の起動完了とサービス提供開始を宣言する行為である。このメッセージを受信したロケータ340はコンポーネントA503の起動を確認し、かつサービスI/Fを取得することができる。   The advertisement message 506 describes the name, ID, version, URL of the service I / F 504, port number, and life of the component A 503. This message is transmitted to locator 340. The advertisement message 506 is an action in which a component declares its own start completion and service provision start. The locator 340 that has received this message can confirm the activation of the component A 503 and can acquire the service I / F.

図5(D)は、ロケータ340がコンポーネントA503からのアドバタイズメッセージ506を受信した直後にコンポーネントA503の起動を確認し、以降の管理の為に管理テーブルであるサービスインベントリ507に登録を行った例を示す。   FIG. 5D shows an example in which the locator 340 confirms the activation of the component A 503 immediately after receiving the advertisement message 506 from the component A 503 and registers it in the service inventory 507 that is a management table for subsequent management. Show.

図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 service inventory 507. In this example, the service inventory 507 includes an ID, a name, a version, a URL, a Port, a life (time), a life (number of jobs), a life time, a state, a start time, and a last contact time. When locator 340 receives advertisement message 506, it creates an entry for each component that is the source of the message. Then, the locator 340 transcribes the content of the advertisement message 506 and registers it in the service inventory. As the contents of the entry, the “survival time” column records the surviving time (in seconds) since the component was created. This survival time is created from the contents of a heartbeat message 508 described later. In the “status” column, a value indicating the status of the component is transferred from a state change message 512 described later. The “activation time” column records the time when the component was activated, and the “last contact time” column records the reception time of the last message received by the locator 340 from the component. In this embodiment, the time is stored as the system time acquired from the operating system. Normally, multiple processes of components with the same name and version are generated. These entries on the service inventory 507 can be identified because at least the ID and the Port number are different from each other.

図5(E)は、コンポーネントA503からハートビートメッセージ508を受け取った例を示す。ハートビートメッセージとは、自身が正常に稼動していることを外部に知らせるために送る信号やパケットである。各コンポーネントは定期的にハートビートメッセージ508をロケータ340宛てに送信しなければならない決まりとなっている。ロケータ340はこのメッセージを受け取ることにより送信元コンポーネントの生存を確認し、サービスインベントリ507の「生存時間」欄と「最終連絡時刻」欄を更新する。   FIG. 5E shows an example of receiving a heartbeat message 508 from the component A 503. A heartbeat message is a signal or packet sent to notify the outside that the device is operating normally. Each component is required to periodically send a heartbeat message 508 to the locator 340. By receiving this message, the locator 340 confirms the existence of the transmission source component, and updates the “survival time” column and “last contact time” column of the service inventory 507.

もし、コンポーネントからのハートビートメッセージ508が既定時間滞ると、ロケータ340はこのコンポーネントの「状態」欄を「行方不明」に変更する。この状態でさらに既定時間ハートビートメッセージが滞ると、そのコンポーネントは自動的にサービスインベントリ507上からエントリーごと削除される。サービスインベントリ507上から削除されたコンポーネントはもはや他のコンポーネントからのクエリに対して検索されなくなり、サービスを提供できなくなる。エントリーの削除は対象コンポーネントのIDを基に行われるため、同一名称の他のコンポーネントのエントリーには影響は与えない。   If the heartbeat message 508 from the component is delayed for a predetermined time, the locator 340 changes the “status” column of this component to “missing”. In this state, when the heartbeat message is further delayed for a predetermined time, the component is automatically deleted from the service inventory 507 for each entry. Components deleted from the service inventory 507 are no longer searched for queries from other components, and services cannot be provided. Since the deletion of the entry is performed based on the ID of the target component, the entry of another component with the same name is not affected.

図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 component A 503 transmits a query message 509 to the locator 340 in order to use the component B 514. The query message 509 describes the name of the component B 514 and the version to be used. Multiple versions of a component can be created. A plurality of components with the same name are created due to differences in functions and released to the market as different versions. Therefore, the component A 503 can perform a query by designating the version of the component B 514 that the user wants to use, such as the version “2.0.0.1”. If there is no need to use a specific version, the version field is empty. In the example shown in FIG. 5F, since the component B 514 has not yet been generated, the locator 340 newly generates the component B 514. A component B 514 is generated in the same manner as the component A 503 generation procedure shown in FIGS.

図5(G)は、ロケータ340がクエリに対するレスポンスをコンポーネントA503にクエリレスポンスメッセージ510として返却する例を示す。クエリレスポンスメッセージ510にはコンポーネントB514の名前、バージョン、サービスI/Fを示すURLとポート番号が格納されている。   FIG. 5G shows an example in which the locator 340 returns a response to the query as a query response message 510 to the component A 503. The query response message 510 stores the name and version of the component B 514, the URL indicating the service I / F, and the port number.

図5(H)は、クエリレスポンスメッセージ510を受け取ったコンポーネントA503が、取得したコンポーネントB514のサービスI/Fを利用する様子である。コンポーネントによってはサービスI/Fにアクセスする他のサービスからのサービス要求を同時に扱えるものとそうでないものが存在する。例えば、ロガー350は、複数のサービスからのロギングデータを同時並行的に受け取りログファイルに記録していく能力を有する。一方、パイプラインを構成してジョブを変換するフィルタは、同時並行処理の能力をもたない。   FIG. 5H shows a state where the component A 503 that has received the query response message 510 uses the service I / F of the acquired component B 514. Some components can handle service requests from other services accessing the service I / F at the same time, and others can not. For example, the logger 350 has the ability to receive logging data from a plurality of services in parallel and record them in a log file. On the other hand, a filter that forms a pipeline and converts jobs does not have the capability of simultaneous parallel processing.

従って、コンポーネントB514が同時並行処理能力を持たないコンポーネントであるとすると、コンポーネントA503がアクセスしてきた時点で他のコンポーネントからの要求を受け付けられない状態すなわちビジー状態に遷移する。この状態は、コンポーネントA503が明示的なアクセス終了をサービスI/Fを通じてコンポーネントB514に宣言するまで継続する。コンポーネントB514はビジー状態に遷移したら、自身を利用したいコンポーネントA以外の他のコンポーネントのクエリによって検出されないことが望ましい。   Therefore, assuming that the component B 514 is a component that does not have the simultaneous parallel processing capability, the state transits to a state where a request from another component cannot be accepted, that is, a busy state when the component A 503 accesses. This state continues until the component A 503 declares an explicit access end to the component B 514 through the service I / F. When the component B 514 transitions to the busy state, it is desirable that the component B 514 is not detected by a query of another component other than the component A that wants to use the component B 514.

そこで、図5(I)に示すように、コンポーネントB514は、ステートチェンジメッセージ512をロケータ340に対して送信する。ステートチェンジメッセージ512には、コンポーネントB514がビジー状態に遷移したことが記されている。このメッセージを受け取ったロケータ340は、サービスインベントリ507に登録されたコンポーネントB514のエントリーを検索し、「状態」欄に受け取った状態を転記する。さらに「最終連絡時刻」欄も更新する。コンポーネントB514の「状態」欄がビジー状態に変更になった為、ロケータ340は以降、名前を指定したクエリを受け取ってもコンポーネントB514のインスタンスを選定することはなくなる。ただし、サービスインベントリ507には他のコンポーネントBのプロセスが複数存在している可能性がある。それらのいずれかがビジー状態でなければ「利用可能なコンポーネントB」としてクエリの発行元のコンポーネントにレスポンスが返却される。   Therefore, as shown in FIG. 5I, the component B 514 transmits a state change message 512 to the locator 340. The state change message 512 indicates that the component B 514 has transitioned to the busy state. Upon receiving this message, the locator 340 searches for the entry of the component B 514 registered in the service inventory 507, and transcribes the received state in the “state” column. In addition, the “last contact time” field is also updated. Since the “state” column of the component B 514 is changed to the busy state, the locator 340 does not select an instance of the component B 514 even if it receives a query specifying a name. However, there may be a plurality of other component B processes in the service inventory 507. If any of them is not busy, a response is returned to the component that issued the query as “available component B”.

複数の同一名とバージョンを持ったコンポーネントインスタンス群からどのインスタンスをクエリの結果として選択するのかに関しては、ロケータ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 locator 340. However, since the algorithm is not related to the present invention, the description is omitted.

図5(J)は、寿命に達したコンポーネントB514が自ら終了する直前にGoodbyeメッセージ(513)を送信した例を示す。このメッセージを受け取ったロケータ340は、サービスインベントリ507のコンポーネントB514のエントリーを削除する。   FIG. 5J illustrates an example in which a Goodbye message (513) is transmitted immediately before the component B 514 that has reached the end of its life ends itself. Upon receiving this message, the locator 340 deletes the entry for the component B 514 in the service inventory 507.

(寿命の延長処理)
次に、本発明の要点であるコンポーネントの寿命の操作に関する部分を説明する。図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 server PC 80 that performs processing related to component life management. The server PC 80 includes a filter 240 (PDL Filter 450, Layout Filter 460), a locator 340, and a job controller 230. These are extracted main components for executing the processing of the print data conversion unit 330. PDLFilter 450 and LayoutFilter 460 are the same filter components as filter A270, filter B280, and filter C290 in FIG. 4 and are responsible for the data conversion process.

図8に示す例では、PDLFilter450は、フォントキャッシュ部1、キャッシュ統計部2、寿命延長判定部3、寿命管理部4を備える。フォントキャッシュ部1は、文字コードの変換処理でフォントキャッシュを検索し、所望の文字イメージが存在していたら利用する。キャッシュ統計部2は、フォントキャッシュ部1から指示を受け、文字種と文字コード別にキャッシュヒットの回数、ヒット率をジョブ単位に集計して記録する。寿命延長判定部3は、プロセスの実行期間の延長と延長する実行期間の長さを決定する。寿命管理部4は、PDLFilter450に設定された寿命を管理し、余命が一定の値に達すると、後述する「寿命イベント」を生成する。また、ロケータから寿命設定値を取得し、その設定値を自身の新寿命として再設定する。   In the example illustrated in FIG. 8, the PDLFilter 450 includes a font cache unit 1, a cache statistics unit 2, a life extension determination unit 3, and a life management unit 4. The font cache unit 1 searches the font cache by character code conversion processing and uses it if a desired character image exists. The cache statistics unit 2 receives an instruction from the font cache unit 1 and counts and records the number of cache hits and the hit rate for each character type and character code for each job. The life extension determination unit 3 determines the extension of the process execution period and the length of the execution period to be extended. The life management unit 4 manages the life set in the PDLFilter 450, and generates a “life event” to be described later when the remaining life reaches a certain value. Also, the service life setting value is acquired from the locator, and the setting value is reset as its own new service life.

ロケータ340は、プロセス管理部5、リーク管理部6、サービスカタログ501、サービスインベントリ507を備える。プロセス管理部5は、各プロセスからメッセージを受信し、メッセージの内容に応じて各種処理を実行する。例えば、プロセス管理部5は、フィルタ240から後述する寿命延長メッセージを取得し、図14,図15を用いて後述する寿命延長処理を実行する。リーク管理部6は、あるプロセスの寿命が延長される際に、現在稼働しているプロセスのなかから寿命を短縮すべきものを選定する。そして、選定したプロセスに対し、負の値を記した寿命変更メッセージを送信する。また、ジョブコントローラ230、LayoutFilter460は、自身の寿命を管理する寿命管理部7,8を備える。寿命管理部7,8は、リーク管理部6から寿命短縮の指示を受けると、自身に設定された寿命の値を指定された値で再設定する。   The locator 340 includes a process management unit 5, a leak management unit 6, a service catalog 501, and a service inventory 507. The process management unit 5 receives a message from each process and executes various processes according to the content of the message. For example, the process management unit 5 acquires a life extension message to be described later from the filter 240 and executes a life extension process to be described later with reference to FIGS. When the lifetime of a certain process is extended, the leak management unit 6 selects a process whose lifetime should be shortened from among currently operating processes. And the lifetime change message which described the negative value with respect to the selected process is transmitted. Further, the job controller 230 and the LayoutFilter 460 include life management units 7 and 8 that manage their own lifespan. When receiving a life shortening instruction from the leak management unit 6, the life management units 7 and 8 reset the life value set in the life management unit 7 and 8 to a specified value.

以下の説明では、寿命を延長してほしいコンポーネントとしてPDLFilter450を、寿命を短縮されるコンポーネントとしてLayoutFilter460とジョブコントローラ230を選定したものとする。また、ロケータ340が寿命を短縮するコンポーネントを選定する。PDLFilter450の動作をフローチャートを用いて説明し、寿命の延長を宣言する処理を明らかにする。その後、宣言を受けたロケータ340が寿命を短縮させるコンポーネントを選定する処理を説明し、最後に寿命を短縮されるコンポーネントの処理を説明する。サーバPC80のCPU105は、HDD102またはROM103に記憶したプログラムをRAM104にロードし実行することにより図3や図8に示す各機能を実行する。   In the following description, it is assumed that the PDLFilter 450 is selected as a component whose life is to be extended, and the LayoutFilter 460 and the job controller 230 are selected as components whose life is shortened. In addition, the locator 340 selects a component that shortens the lifetime. The operation of the PDLFilter 450 will be described using a flowchart, and the process for declaring the extension of the lifetime will be clarified. After that, the processing for selecting a component whose lifetime is shortened by the locator 340 having received the declaration will be described, and finally, the processing of the component whose lifetime will be shortened will be described. The CPU 105 of the server PC 80 executes the functions shown in FIGS. 3 and 8 by loading the program stored in the HDD 102 or the ROM 103 into the RAM 104 and executing it.

(PDLFilterの処理フロー)
最初にPDLFilter450の処理フローについて説明する。図9は、PDLFilter450がフィルタホスト240にロードされて起動した時点から開始するイベントループ処理(S001)である。コンポーネントは、起動した時点でメッセージキューを備えている。コンポーネントは、外部コンポーネントとの通信手段であるコントロールバス502からメッセージを受信した時点でメッセージに対応するイベントを作成し、メッセージキューに投函する。コンポーネントは、そのほかにも内部のモジュールからの通知もイベントとして作成し投函する。
(PDLFilter processing flow)
First, the processing flow of the PDLFilter 450 will be described. FIG. 9 shows an event loop process (S001) that starts when the PDLFilter 450 is loaded into the filter host 240 and started. The component has a message queue when it is started. The component creates an event corresponding to the message when it receives the message from the control bus 502 that is a means for communicating with the external component, and posts it to the message queue. In addition, the component also creates notifications from internal modules as events.

PDLFilter450は、起動した直後に、図10に示す初期化処理(S100)を実行する。初期化処理(S100)は、各種の初期設定を行う処理の集合である。   Immediately after starting, the PDLFilter 450 executes the initialization process (S100) shown in FIG. The initialization process (S100) is a set of processes for performing various initial settings.

図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 PDLFilter 450 analyzes the contents of the configuration file passed at the time of activation and acquires necessary operation parameters. One of the acquired operation parameters is “life”. In S <b> 102, the PDLFilter 450 sets the acquired lifetime in the lifetime management unit 4. The lifetime is a value expressed in seconds. As a function, the PDLFilter 450 takes charge of processing for extracting a character type and a character code from a job flowing through the pipeline 300 (not shown in FIG. 8), creating a corresponding character image, and storing it in print data. Save the created character image in the cache area without deleting it. In S103, the area is initialized.

図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 PDLFilter 450 loops indefinitely while waiting for two events. The waiting events are “job execution request” and “life”. First, in step S <b> 002, the PDLFilter 450 determines whether the event received from the job controller 230 is an “execution request”. This job execution request is an event created in response to the job execution request transmitted from the job controller 230 to the service I / F 504 created by the filter. When the “job execution request” is detected in S002, the PDLFilter 450 executes the job execution process in S200. Since the job execution is newly created and the process proceeds on the thread, the process proceeds in parallel with the event loop process (S001). Since job execution processing is state-managed, even if a new job execution request event arrives during job processing, the request is rejected. The job execution process is a process of examining the contents of the job that flows back through the pipeline 300, which is a path of print data created by the job controller 230, and converting the character type and character code included into a character image.

ジョブ実行処理では、PDLFilter450は文字コードの変換において、まず図8のフォントキャッシュ部1を検索し、所望の文字イメージが存在していたら利用する。また、PDLFilter450は、キャッシュ統計部2に文字種と文字コード別にキャッシュヒットの回数、ヒット率をジョブ単位に集計して、キャッシュ統計情報として記録する。   In the job execution process, the PDL Filter 450 first searches the font cache unit 1 in FIG. 8 for character code conversion, and uses it if a desired character image exists. Also, the PDL Filter 450 aggregates the number of cache hits and the hit rate for each character type and character code in the cache statistics unit 2 for each job and records them as cache statistical information.

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 PDLFilter 450 determines whether it is a “life event”. The life event is an event issued from the life management unit 4. In the life management unit 4, the life specified at the time of activation is subtracted every moment. The life management unit 4 generates and submits a “life event” so that the process stop process is started when the remaining life reaches a certain value.

S003において、PDLFilter450が寿命イベントと判断した場合、S300に処理は進む。S300の詳細は図11を用いて後述する。S300の処理後、処理はS004に進み、PDLFilter450は寿命を延長するか否かを判断する。寿命を延長しない場合、処理はS500に進み、PDLFilter450は処理を終了する。寿命を延長する場合、処理はS400に進み、PDLFilter450は寿命延長処理を実行する。寿命延長処理の詳細は図12を用いて後述する。   In S003, when the PDLFilter 450 determines that it is a life event, the process proceeds to S300. Details of S300 will be described later with reference to FIG. After the process of S300, the process proceeds to S004, and the PDL Filter 450 determines whether to extend the life. If the lifetime is not extended, the process proceeds to S500, and the PDLFilter 450 ends the process. When extending the life, the process proceeds to S400, and the PDLFilter 450 executes the life extension process. Details of the life extension process will be described later with reference to FIG.

図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 extension determination unit 3 executes a life extension confirmation process in S300. In S301, the life extension determination unit 3 determines whether or not job execution processing is in progress at the time when a life event is detected. When the job is being executed, only the reception of the life event is stored, and the processing is interrupted until the job execution is completed.

S302において、寿命延長判定部3は、キャッシュ統計部2が保持している直近のジョブにおけるキャッシュデータのヒット率(使用率)から将来のジョブにおけるヒット率を予想する。この予想には、印刷データ変換部330に特有の評価方法をとることができる。例えば、直近の3ジョブのヒット率の平均を算出し、さらに直近のジョブのヒット率に重みを付けて加算するなどの評価方法が採用できる。S303において、予想値が既定以上になる場合には、寿命延長判定部3はプロセスの寿命延長と延長する寿命の長さを決定する。   In S <b> 302, the life extension determination unit 3 predicts the hit rate in the future job from the cache data hit rate (usage rate) in the most recent job held by the cache statistics unit 2. For this prediction, an evaluation method unique to the print data conversion unit 330 can be taken. For example, it is possible to employ an evaluation method such as calculating the average hit rate of the three most recent jobs and further adding a weight to the hit rate of the most recent job. In S303, when the expected value is equal to or greater than the predetermined value, the life extension determination unit 3 determines the life extension of the process and the length of the life to be extended.

図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 extension determination unit 3 is inspected. If the life extension is not determined, the end process of S500 is executed and the process ends. In the termination process, resources and memory created during the process are released. When the life extension is determined, the life extension process of S400 is executed. In S401, the life extension determination unit 3 calculates and sets a set value to be set in the life management unit 4 from the determined life length (extension amount) and the current time. Subsequently, in S402, the life extension determination unit 3 creates a life extension message 515 including the length of the life to be extended, transmits it to the locator 340, and ends the process.

(ロケータの処理フロー)
S402の通知を受けたロケータ340が行う処理フローについて説明する。図13は、ロケータ340が起動した時点から開始するイベントループ処理(S1001)である。ロケータ340もコンポーネントであるため、メッセージキューを保持している。他のコンポーネントと異なり、ロケータ340はサービスI/Fを提供せず、他のコンポーネントとのコントロールバス502を経由したメッセージ交換がプロセスの外部との通信手段である。その際の受信で発生するイベントと、内部のモジュールからの通知がイベントとして作成され、先のメッセージキューへ投函される。
(Locator processing flow)
A processing flow performed by the locator 340 that has received the notification in S402 will be described. FIG. 13 shows an event loop process (S1001) that starts when the locator 340 is activated. Since the locator 340 is also a component, it holds a message queue. Unlike other components, the locator 340 does not provide a service I / F, and message exchange with the other components via the control bus 502 is a means of communication with the outside of the process. An event that occurs at that time and a notification from an internal module are created as an event and posted to the previous message queue.

ロケータ340は、起動した直後に初期化処理(S1100)を実行する。初期化処理は、各種の初期設定を行う処理の集合である。S1101では、ロケータ340は、起動時に渡されたコンフィギュレーションファイルの内容を解析して必要な動作パラメータを取得する。初期化処理には、既に説明したように、サービスカタログ501を参照し、起動モードが「ホットスタンバイ(startup)」に指定されているコンポーネントを生成する処理も含まれる。ロガー350もホットスタンバイに指定されているためこの時点で生成される。S1100の初期化処理が終了すると、処理はメッセージ処理(S1002)に進む。   The locator 340 executes an initialization process (S1100) immediately after starting. The initialization process is a set of processes for performing various initial settings. In S1101, the locator 340 analyzes the contents of the configuration file passed at startup and obtains necessary operation parameters. As described above, the initialization process includes a process of generating a component in which the startup mode is designated as “hot standby” by referring to the service catalog 501. Since the logger 350 is also designated as hot standby, it is generated at this point. When the initialization process in S1100 ends, the process proceeds to message processing (S1002).

図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 advertisement message 506, the heartbeat message 508, the query message 509, the state change message 512, the Goodbye message 513, and the life extension message 515 already described. In S1003, locator 340 determines whether or not the received message is life extension message 515. In the case of the life extension message, the process proceeds to S1004, and the life extension process is executed. As many other messages as the number of messages are prepared in association with the determination shown in S1005 and the processing in the case where the determination is Yes. Since messages other than the life extension message 515 have already been described, description thereof is omitted here.

図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 life extension message 515. In S1100, the process management unit 5 refers to the service inventory 507 from the source node ID included in the message and identifies the source of the life extension message 515. Here, the PDL Filter 450 is specified.

S1101では、プロセス管理部5は、サービスインベントリ507内のPDLFilter450の寿命を寿命延長メッセージ515に記載の延長量を加えた値に置換する。続いて、S1102では、プロセス管理部5は、現在の推定リーク量を更新するとともに、サービスカタログ501のリークレシオと寿命の延長分から、寿命延長に伴って増加するリーク増分を計算する。計算されたリーク増分はリーク管理部6に対して入力される。   In step S1101, the process management unit 5 replaces the lifetime of the PDLFilter 450 in the service inventory 507 with a value obtained by adding the extension amount described in the lifetime extension message 515. Subsequently, in S1102, the process management unit 5 updates the current estimated leak amount and calculates a leak increment that increases with the life extension from the leak ratio of the service catalog 501 and the life extension. The calculated leak increment is input to the leak management unit 6.

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 PDLFilter 450. Specifically, the leak management unit 6 selects a process whose life should be shortened from among the active processes based on the input leak increment. Various methods such as a method of preferentially selecting from those having a high leak ratio and a method of preferentially selecting from the one having a long lifetime can be considered for selection. The leak management unit 6 calculates the amount of leak that increases with the extended lifetime of the PDLFilter 450. Then, the leak management unit 6 calculates a leak amount that decreases as the life of the selected process is shortened by the time when the PDLFilter 450 starts to extend (the calculation method will be described later).

S1104では、リーク管理部6は、選定したプロセスに対して寿命変更メッセージ516を送信する。S1005では、リーク管理部6は、寿命延長に伴うリーク増加量からS1104で計算した寿命短縮によるリーク減少量を減じ、まだ零あるいは負値になっていないか(つまりは相殺が完了したか)を判断する。ここでリーク増加量及びリーク減少量は後述するように、主にプロセスの実行期間によって決定される。相殺していないと判断された場合、処理はS1103に戻り、リーク管理部6は他の実行中プロセスのなかから別ものものを選定する。S1105では、リーク管理部6は選定すべきプロセスが存在しない場合には処理を終了する。   In S1104, the leak management unit 6 transmits a life change message 516 to the selected process. In S1005, the leak management unit 6 subtracts the leak reduction amount due to the shortening of the lifetime calculated in S1104 from the leak increase amount associated with the extension of the lifetime, and determines whether it has not yet become zero or a negative value (that is, whether the offset has been completed). to decide. Here, the leak increase amount and the leak decrease amount are mainly determined by the execution period of the process, as will be described later. If it is determined that there is no cancellation, the process returns to S1103, and the leak management unit 6 selects another one from other running processes. In S1105, the leak management unit 6 ends the process when there is no process to be selected.

図8では寿命短縮の対象としてジョブコントローラ230とLayoutFilter460の2つのコンポーネントが選定されたものとしている。リーク管理部6は、ジョブコントローラ230とLayoutFilter460の双方に対して負の値を記した寿命変更メッセージ516を送信する。このメッセージには現在設定されている寿命からの変化分が記載されている。変化分が「20」となっていれば20秒の寿命延長を意味し、「−30」と負の値であれば、30秒の寿命短縮を意味する。   In FIG. 8, it is assumed that two components of the job controller 230 and the LayoutFilter 460 are selected as targets for shortening the lifetime. The leak management unit 6 transmits a life change message 516 in which negative values are written to both the job controller 230 and the LayoutFilter 460. This message describes the change from the currently set life. If the change is “20”, it means that the life is extended by 20 seconds, and if it is a negative value “−30”, it means that the life is shortened by 30 seconds.

(寿命を短縮されるコンポーネントの処理)
ロケータ340が選定したジョブコントローラ230とLayoutFilter460に対して、其々の寿命の短縮量が計算されて寿命変更メッセージ516が送信される。ジョブコントローラ230とLayoutFilter460は、寿命管理部7,8に対し寿命変更メッセージ516を引き渡す。各寿命管理部7,8はメッセージから寿命設定値を取得し、その設定値を自身の新寿命として設定する。
(Processing of components whose life is shortened)
The lifetime reduction message 516 is transmitted to the job controller 230 and the LayoutFilter 460 selected by the locator 340 by calculating the shortening amount of each lifetime. The job controller 230 and the LayoutFilter 460 deliver the life change message 516 to the life management units 7 and 8. Each of the life management units 7 and 8 acquires a life set value from the message, and sets the set value as its own new life.

(リーク増加分の相殺計算)
図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) PDLFilter 450, (2) Job Controller 230, and (3) LayoutFilter 460. In FIG. 16A, t1 means the time when the PDLFilter 450 is activated.

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, PDLFilter 450 starts processing the job. Necessary memory is secured and used according to job processing, but memory used due to a problem in the program is not released and a memory leak occurs. Accordingly, since the leak accumulates as time elapses from t2, the memory usage amount is monotonously increased. In this case, the slope of the straight line differs depending on the value described in the leak ratio of the service catalog 501 shown in FIG.

ここで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 PDLFilter 450 is (t3-t1). That is, if the process is terminated at time t3, the memory usage returns to zero. As described above, when the PDL Filter 450 changes (extends) its own end time from t3 to t4, the total amount of memory leak that increases with the extension is represented by ΔS (B). This part means the total amount of wasted memory that could not be diverted elsewhere on the PC. Strictly speaking, t1 and t2 are different, but t2 can be regarded as t1 in the calculation of ΔS (B). Therefore, if the leak ratio is k, ΔS (B) is calculated by the following equation.
ΔS (B) = 1/2 · k · {(t3−t1) + (t4−t1)} · (t4−t3)
Here, k is obtained from the “leak ratio” of the service catalog 501, t 1 is obtained from “start time” of the service inventory 507, and t 3 is obtained from the value obtained by adding “life (time)” of the service inventory 507 to t 1. Further, (t4-t3) is obtained from the “change” of the life change message 516 transmitted by the PDL Filter 450.

同様に図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 certain job controller 230, and changes in the memory usage of a process responsible for LayoutFilter 460, respectively. It is assumed that the process of the job controller 230 (2) starts at time t5, starts job processing at time t6, and ends at time t7. Here, the end time of the job controller 230 is earlier than the end time of the PDLFilter 450. Therefore, assuming that the job controller 230 that was scheduled to end at time t7 is ended at time t3 (extension start time of the extended PDLFilter 450), the amount of memory in the ΔS (J) portion is reduced from 0 to 0. Will be. Again, ΔS (J) is calculated according to the following equation, where h is the leak ratio.
Δ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 LayoutFilter 460 process is scheduled to end at time t10. Assuming that the lifetime of the period corresponding to the extended period from t3 to t4 is shortened, if the leak ratio is g, ΔS (L) is Calculated by the formula.
Δ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 locator 340. The locator 340 can select an appropriate component for the purpose of offsetting the increase in leakage and shorten its lifetime.

(実施例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 locator 340 as the lifetime extension message 515, thereby determining the extension. The locator 340 that has received the life extension message 515 orders other components to shorten the life in order to offset the amount of leakage that increases with the life extension. In this system, the extension decision and the extension amount do not reflect the status of other components, so in some cases, there may be a shortage of components available for offsetting. In that case, the system will increase leakage.

実施例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 locator 340 as an extension request, and the extension of the lifetime is performed according to the pros and cons of the extension included in the response. Run. The locator 340 searches for a component that is being executed when a lifetime extension message is received, determines a component whose lifetime can be shortened, and responds to the lifetime extension. According to this embodiment, it is possible to meet a request for limiting the leak amount of the entire system rather than the processing efficiency.

図17は、実施例2におけるPDLFilter450がフィルタホスト240にロードされて起動した時点から開始するイベントループ処理(S005)である。実施例1におけるイベントループ処理(S001)に比べてS006の判断、およびその後の処理が追加されている。さらに、S400の寿命延長処理がS410の寿命延長要求処理に変更されている。以下、変更点についてのみ説明を行う。変更のない処理ステップについての説明は実施例1と同一の説明が適用できる。   FIG. 17 shows an event loop process (S005) that starts when the PDLFilter 450 in the second embodiment is loaded into the filter host 240 and activated. Compared to the event loop process (S001) in the first embodiment, the determination in S006 and subsequent processes are added. Further, the life extension process in S400 is changed to the life extension request process in S410. Only the changes will be described below. The same description as that of the first embodiment can be applied to the description of the processing steps without change.

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 PDLFilter 450 because the life is approaching. In S003, the PDLFilter 450 detects a “life event”. Thereafter, the life extension confirmation process of S300 is executed, and the necessity and extension amount of the life extension are calculated. In step S5300, the PDL Filter 450 executes a life extension confirmation process. If the result of S5300 is inspected and extension is necessary, the life extension request process of S410 in FIG. 18 is executed. As shown in FIG. 18, in S411, the life extension determination unit creates a life extension message 515 and transmits it to the locator 340.

この後、PDLFilter450はロケータ340からの「寿命延長レスポンスメッセージ」の到着を待つ。S006では、PDLFilter450は寿命延長メッセージを検出する。S007では、PDLFilter450はメッセージの内容を解析する。メッセージ内の結果が寿命延長を決定した旨が記載されている場合には、処理はS420に進む。S420では、PDLFilter450は、レスポンスメッセージに記載されている寿命延長量を取得して寿命管理部4に設定する。この時点で新寿命が確定しPDLFilter450は寿命が延長される。S007においてメッセージに寿命延長が拒否された旨が記載されている場合には、S500に処理が進み、PDLFilter450はプロセスを終了する。   Thereafter, the PDLFilter 450 waits for arrival of a “life extension response message” from the locator 340. In S006, the PDLFilter 450 detects a life extension message. In S007, the PDL Filter 450 analyzes the content of the message. If the result in the message indicates that the life extension has been determined, the process proceeds to S420. In S420, the PDL Filter 450 acquires the life extension amount described in the response message and sets it in the life management unit 4. At this point, the new life is determined and the life of the PDLFilter 450 is extended. If it is described in S007 that the extension of life has been rejected in the message, the process proceeds to S500, and the PDL Filter 450 ends the process.

図19は、ロケータ340のメッセージ処理を説明するフローチャートである。実施例1と比較して寿命延長処理(S1006)が変更になっている。S1003では、ロケータ340は寿命延長メッセージ515を受信し、S1006に処理が進む。   FIG. 19 is a flowchart for explaining message processing of the locator 340. Compared to the first embodiment, the life extension process (S1006) is changed. In S1003, the locator 340 receives the life extension message 515, and the process proceeds to S1006.

図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 service inventory 507 from the transmission source node ID included in the message, and identifies the transmission source of the life extension message 515. Here, the process management unit 5 identifies the PDLFilter 450. Subsequently, a leak increment that increases with the life extension is calculated from the leak ratio of the service catalog 501 and the extension of the life (S1102). The calculated leak increment becomes an input to the leak management unit 6.

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 PDLFilter 450. Then, the leak management unit 6 calculates the amount of leak that decreases as the life of the selected process is shortened by the time when the PDLFilter 450 starts to extend.

S1104では、リーク管理部6は、選定したプロセスに対して寿命変更メッセージ516を送信する。S1005では、リーク管理部6は、寿命延長に伴うリーク増加量からS1104で計算した寿命短縮によるリーク減少量を減じ、まだ零あるいは負値になっていないか(つまりは相殺が完了したか)を判断する。相殺がしていないと判断された場合、処理はS1103に戻り、リーク管理部6は、他の実行中プロセスのなかから別ものプロセスを選定する。   In S1104, the leak management unit 6 transmits a life change message 516 to the selected process. In S1005, the leak management unit 6 subtracts the leak reduction amount due to the shortening of the lifetime calculated in S1104 from the leak increase amount associated with the extension of the lifetime, and determines whether it has not yet become zero or a negative value (that is, whether the offset has been completed). to decide. If it is determined that the offset has not been made, the process returns to S1103, and the leak management unit 6 selects another process from other running processes.

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 PDLFilter 450 based on the reduction amount.

プロセス管理部5は、サービスインベントリ507内のPDLFilter450の寿命を算出された延長量を加えた値に置換する(S1101)。S1106において、プロセス管理部5は、算出された寿命延長量を記載したレスポンスメッセージを作成し、PDLFilter450に送信し、処理を終了する。この処理フローから理解できるように、本実施例では実施例1と異なり、寿命短縮対象となるコンポーネントの選定が先に実施され、その後、確定した削減量に応じて寿命延長を望むコンポーネントの延長期間が確定することになる。この実施例では、システムのリーク増加を抑制することが効率よりも重視された印刷データ変換サービスが提供されることになる。   The process management unit 5 replaces the lifetime of the PDLFilter 450 in the service inventory 507 with a value obtained by adding the calculated extension amount (S1101). In step S1106, the process management unit 5 creates a response message describing the calculated life extension amount, transmits the response message to the PDLFilter 450, and ends the process. As can be understood from this processing flow, unlike the first embodiment, in this embodiment, the component for which the lifetime is to be shortened is selected first, and then the extension period of the component whose lifetime is desired to be extended according to the determined reduction amount. Will be confirmed. In this embodiment, a print data conversion service is provided in which suppression of an increase in system leakage is more important than efficiency.

(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウエア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(または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のプロセスの実行期間におけるメモリリーク量を算出し、算出されたメモリリーク量によって前記延長された第1のプロセスの実行期間におけるメモリリーク量が相殺されない場合に、別の前記第2のプロセスを選定し、実行期間を短縮する
ことを特徴とする請求項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.
前記短縮手段は、起動中であって、且つ、前記キャッシュデータの使用率が低い、または寿命が長い前記第2のプロセスの実行期間を短縮する
ことを特徴とする請求項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のプロセスの実行期間に一致する期間を前記第2のプロセスの実行期間から短縮し、前記第2のプロセスの実行期間の終了時間が前記第1のプロセスの実行期間の終了時間よりも早い場合、前記第2のプロセスの終了時間から前記延長された第1のプロセスの実行期間の延長開始時間までの期間を前記第2のプロセスの実行期間から短縮する
ことを特徴とする請求項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:
前記第2のプロセスの実行期間を短縮しても前記延長された第1のプロセスの実行期間におけるメモリリーク量が相殺されない場合に、短縮された全ての前記第2のプロセスの実行期間におけるメモリリーク量を算出し、算出されたメモリリークに基づいて前記第1のプロセスの実行期間の延長期間を決定する決定手段をさらに備える
ことを特徴とする請求項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.
請求項8に記載の制御方法をコンピュータにより実行させることを特徴とするコンピュータプログラム。   A computer program for causing a computer to execute the control method according to claim 8.
JP2014013697A 2014-01-28 2014-01-28 System, controlling method therefor, and computer program Pending JP2015141535A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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