以下、図面を参照して、本発明の実施形態を説明する。
図1に、実施形態の印刷制御システムの一例を示す。図1に例示するシステムは、複数のサーバ100A,100B,・・・、データ記憶装置102、配置管理装置104、帯域保証判定装置105、ロードバランサ106、及び複数の実プリンタ108,・・・を有する。
サーバ100A,100B,・・・(以下、区別の必要がない場合は「サーバ100」と総称)は、プログラムを実行可能なコンピュータである。ここでいうコンピュータは、物理的に存在する装置に限定されるものではなく、仮想マシンであってもよい。例えば、サーバ100は、クラウドコンピューティングサービス(以下単に「クラウド」と呼ぶ)が提供する仮想マシン(VM:Virtual Machine)であってもよい。以下では、サーバ100がクラウド上の仮想マシンである場合を代表例にとって説明する。ただし、本実施形態の仕組みは、サーバ100が物理的に実在する装置である場合にも適用可能である。
サーバ100は、ユーザ(クライアント)に対して印刷サービスを提供するプログラムを実行する。サーバ100A,100B、・・・がこのプログラムを実行することにより実現される装置を、図1では印刷サービス110として示している。
図示の例では、印刷サービス110は、1以上の論理プリンタ112及び1以上の物理プリンタ114を生成し、動作させることが可能である。論理プリンタ112及び物理プリンタ114は、印刷システムの業界標準の1つであるDPA(Document Printing Application)(ISO/IEC 10175)に規定された仮想プリンタのオブジェクトである。これら2種類のプリンタ・オブジェクトにより印刷のための制御処理を分担する。大略的には、論理プリンタ112はユーザからの印刷指示の受付処理を行い、物理プリンタ114は、その印刷指示に応じた印刷のために実プリンタ108を制御する。実プリンタ108は用紙等の媒体に対して実際に印刷を行う、物理的に実在するプリンタである。論理プリンタ112と物理プリンタ114の機能分担は、実施形態の制御にとって本質的なことではないので、これ以上の説明は省略する。なお、以下では、論理プリンタ112と物理プリンタ114の区別の必要がない場合は、それらを仮想プリンタと総称する。
物理プリンタ114は、1以上の実プリンタ108に対応づけられており、それら対応する1以上の実プリンタ108に印刷データを送信し、実プリインタ108において印刷処理を実現する。図示例では各物理プリンタ114はそれぞれ1つの実プリンタ108に対応づけられているが、これはあくまで一例にすぎない。
論理プリンタ112は、1以上の物理プリンタ114に対応づけられている。図1では、互いに対応する論理プリンタ112と物理プリンタ114との間を線で結ぶことで、その対応関係を示している。ここでいう「対応関係」は、一方が他方を制御又は管理するといった主従関係があることまでは要求しない(もちろんそのような主従関係がある実装形態も考え得る)。この「対応関係」は、論理プリンタ112が受け付けた印刷指示に応じた印刷処理をその論理プリンタ112と線でつながる物理プリンタ114が担当するという、同じ印刷指示についてのジョブを担当するという意味での対応関係である。なお、ここでいうジョブとは、印刷制御システム又はその各構成要素が、クライアントから受けた印刷指示に応じて行う処理のことである。
個々の仮想プリンタ(すなわち論理プリンタ112、物理プリンタ114)は、それぞれ基幹用と一般用に分類される。基幹用は基幹システムのデータの印刷のために用いられ、一般用は一般的な事務文書の印刷のために用いられる。各仮想プリンタは、パスワード認証やアクセス制御リスト等を用いたアクセス制御技術によりアクセス制限を課すことが可能である。アクセス制御技術により基幹用の仮想プリンタが一般のユーザから利用されることを防止する。また、一般用の仮想プリンタについても、例えば会社内の部署毎の課金管理のために部署毎に別々の仮想プリンタを設けるような場合があり、そのような場合には、一般用の仮想プリンタに対しても、対応する部署からのアクセスしか認めないといったアクセス制御を行う。
本実施形態のシステムは、基幹用の論理プリンタ112及び物理プリンタ114には「帯域」保証を行い、一般用のそれには帯域保証を行わない。
ここでいう「帯域」は、論理プリンタ112及び物理プリンタ114のそれぞれがジョブ群を処理する速度のことを、データ通信の速度を意味する「帯域」のアナロジーとして表したものである。「帯域保証」とは、あらかじめ設定された「帯域」以上の速度でジョブ処理を実行することをシステム側が保証することである。
なお、以下では「帯域」と同じくジョブを処理する速度という意味で「処理レート」(又は単に「レート」)という用語も用いる。「帯域」は「帯域保証」の文脈で用い、「処理レート」又は「レート」はそれを包含したより一般的な意味で用いる。
以下の例では、「帯域」、「処理レート」として、単位時間あたりに実行するジョブの数を用いる。また、「帯域」及び「処理レート」の単位の具体例として「J/H」を用いる。Jはジョブ数であり、Hは1時間である。すなわち、J/Hという単位は、論理プリンタ112又は物理プリンタ114が1時間あたりに実行するジョブの数を示す。なお、帯域等における「単位時間」は1時間に限られるわけではなく、1分など他の長さを用いてもよい。
なお、「帯域」及び「処理レート」を図る単位はジョブに限られるわけではなく、ページなどと言った別の処理単位であってもよい。例えば、1分あたりに処理するページ数で帯域を表す等でもよい。
互いに対応づけられている論理プリンタ112及び物理プリンタ114は1つのグループ(図では破線で囲んで示している)を形成する。図示例では、論理プリンタ112及び物理プリンタ114をそれぞれ1つずつ含むグループが例示されているが、これに限られるわけではない。例えば、1つの論理プリンタ112に対して複数の物理プリンタ114が対応づけられている場合、それら1つの論理プリンタ112と複数の物理プリンタ114が1つのグループとなる。
図1に例示するグループ111a、111cは、基幹用の論理プリンタ112及び物理プリンタ114からなる基幹用のグループである。一方、グループ111bは、一般用の論理プリンタ112及び物理プリンタ114からなる一般用のグループである。1つの論理プリンタ112が基幹用グループと一般用グループの両方に属することはない。物理プリンタ114についても同様である。
以上の例では、仮想プリンタを基幹用と一般用に分類したが、この分類は企業内での印刷制御システムの運用法に沿って分かりやすく説明するためのものにすぎない。本質的な区別は、帯域保証が適用されるか否かである。
なお、印刷サービス110は、図1に示した論理プリンタ112及び物理プリンタ114の他に、論理プリンタ112及び物理プリンタ114による印刷制御処理を管理するための各種機能を有するが、これについては後で説明する。
データ記憶装置102は、サーバ100A,100B,・・・上の印刷サービス110、110、・・・によって共用される記憶装置である。各印刷サービス110(及び当該サービスが管理する論理プリンタ112,物理プリンタ114等のオブジェクト)は、クライアントからの印刷指示に応じた印刷を実現するために必要なデータをデータ記憶装置102に格納する。また各印刷サービス110は、データ記憶装置102に記憶されたデータを必要に応じて参照し、印刷を実現するための処理を実行する。
データ記憶装置102に記憶されるデータには、各論理プリンタ112や各物理プリンタ114を定義する定義情報(後述するプリンタテーブル)が含まれる。
また、論理プリンタ112や物理プリンタ114が実行しているジョブの処理情報をデータ記憶装置102に記憶してもよい。ジョブの処理情報とは、論理プリンタ112又は物理プリンタ114が当該ジョブのための一連の処理の中で処理の対象とする情報、処理の途中又は最終の結果として出力する情報、及びそれら一連の処理の管理のための情報等の総称である。なお、一連の処理の途中の処理結果は、その一連の処理の中の後の処理での処理対象となる場合もある。
例えば、クライアントから印刷指示に付随して受け取った印刷データ(印刷すべき文書をPDL等で記述したデータ)は、ジョブにおける処理の対象となるデータであり、ジョブの処理情報に含まれる。なお、PDLとはPage Description Languageの略であり、ページ記述言語を意味する。PDF(Portable Document Format)もPDLの一種として用いられる。
また、印刷サービス110がPDLで記述された印刷データを解釈することにより生成する印刷可能データは、ジョブの一連の処理のうちの解釈処理の結果のデータであると共に、実プリンタ108での印刷処理の対象となるデータであり、ジョブの処理情報に含まれる。この印刷可能データは、実プリンタ108で印刷処理が可能なデータ形式であればよく、実プリンタ108で解釈可能なPDL形式のデータやラスター画像データ等のデータである。また、印刷サービス110がPDLの印刷データをいったん中間形式のデータに変換し、その中間形式データを印刷可能データに変換する方式を採用している場合、中間形式データもジョブの処理情報の一例である。なお、中間形式とは、印刷対象の文書をPDLとラスター画像の中間の粒度で表現するデータ形式であり、例えばディスプレイリストがその一例である。
また、クライアントから印刷指示に伴って受け取った印刷属性(印刷部数、用紙サイズ、片面印刷か両面印刷か、カラー印刷かモノクロ印刷か等)及びその印刷指示のためのジョブに付与した一意なジョブID(識別情報)等を含むジョブの管理情報も、データ記憶装置102に記憶される処理情報の一例である。
データ記憶装置102に記憶されるジョブの処理情報は、ジョブの進捗に合わせて更新されるようにしてもよい。データ記憶装置102内のジョブの処理情報の更新は、例えば、別のサーバ100へと移動(配置換え)されるために論理プリンタ112や物理プリンタ114等の仮想プリンタが停止される際に実行される。例えば、仮想プリンタが上位の管理装置(例えば配置管理装置104)からの命令に応じて停止する場合に、それまで実行していた処理の結果のデータ(例えば停止指示を受けた時点でPDLデータを中間形式データへ変換し終わっていればその中間形式のデータ)をデータ記憶装置102に格納する等である。
また、ジョブを構成する各処理が完了するごとに、完了した処理の処理結果を反映するようデータ記憶装置102内の当該ジョブの処理情報を更新するという方式も可能である。例えば、クライアントからをPDLデータを受け付ける処理が完了した段階、PDLデータを中間形式データに変換する処理が完了した段階、及び中間形式データを(またはPDLデータを直接)印刷可能データに変換する処理が完了した段階等といった段階ごとに、データ記憶装置102に対してそれら各段階の処理結果のデータ(PDL、中間形式、印刷可能データなど)を格納する等である。また、既に受付済みのジョブについての印刷属性の変更指示をクライアントから受け取った場合に、その指示に応じて、データ記憶装置102内の当該ジョブの管理情報を変更するようにしてもよい。
データ記憶装置102は、1つの例では、クラウド上のVM(仮想マシン)又は、クラウド上のストレージサービスとして実現される。また、データ記憶装置102は、物理的に実在する装置であってももちろんよい。データ記憶装置102としては、冗長化技術等により高い故障耐性を持つものを用いてもよい。
配置管理装置104は、各サーバ100に対する仮想プリンタ(すなわち論理プリンタ112及び物理プリンタ114)の配置を管理する。例えば、配置管理装置104は、帯域保証の対象である仮想プリンタについて、帯域保証が実現できていないことを検知した場合、又は帯域保証が実現できなくなりそうな兆候がある場合に、その仮想プリンタを含む仮想プリンタ群のサーバ100群への配置換えを行う。帯域保証ができていないことやその兆候は、帯域保証判定装置105が検出する。また、配置管理装置104は、各サーバ100の稼働状況(稼働しているか否か)や負荷状況を監視し、停止したサーバ100や過負荷が懸念されるサーバ100を検知した場合に、そのサーバ100上で動作する仮想プリンタを、過負荷の懸念がない別のサーバ100に移動させる処理を行ってもよい。
また、配置管理装置104は、各仮想プリンタがどのサーバ100上に存在するのかの問合せに応答する機能を有していてもよい。
帯域保証判定装置105は、各仮想プリンタの処理レートの実績値の帯域保証レート等に基づいて、帯域保証の対象となっている各仮想プリンタの帯域保証レートが達成できているかどうかを判定する。判定材料である各仮想プリンタの処理レートの実績値の帯域保証レート等の情報は、例えばデータ記憶装置102に記憶されている。このうち各仮想プリンタの処理レートの実績値は、時間の経過に従って随時更新される。
配置管理装置104及び帯域保証判定装置105は、それぞれ、各サーバ100とは独立したVM(仮想マシン)上に構成してもよいし、それらサーバ100のいずれかに同居させてもよい。また、配置管理装置104及び帯域保証判定装置105は、物理的に実在する装置であってももちろんよい。
配置管理装置104及び帯域保証判定装置105が協働して行う帯域保証のための仮想プリンタ群の再配置処理の内容については、後で詳しく説明する。
ロードバランサ106は、クライアントから本システムに対して到来する各種の要求を、本システム内の複数の印刷サービス110に振り分けることで、それら複数の印刷サービス110(ひいてはそれら印刷サービス110をホストするサーバ100)の間の負荷分散を実現する。ロードバランサ106が用いる振り分け方式には、特に限定はない。ラウンドロビン方式等の単純な方式を用いてもよいし、より高度な方式を用いてもよい。
例えば、クラウドサービスが提供する一般的なロードバランサは、クラウド上に実現される個別のアプリケーションシステム(本実施形態では、印刷制御システム)に依存しない振り分け方式を採用している。すなわち、そのような一般的なロードバランサは、アプリケーションシステムにおいてやりとりされる要求の中身を考慮せずに、ラウンドロビン等の単純な方式で振り分けを行う。例えば、クライアントから到来する印刷指示のデータは、その指示の宛先である論理プリンタ112を特定する情報を含んでいるが、そのような一般的なロードバランサは、印刷指示の中身である宛先の情報を見ず、その宛先情報とは無関係にその印刷指示の転送先を決定する。したがって、印刷サービス110(又はその中の論理プリンタ112等の要素)が受け取った要求が自分宛ではなく、他の印刷サービス110等に宛てたものである場合もある。自分宛でない要求を受け取った印刷サービス110は、配置管理装置104への問合せによりその要求の宛先が存在するサーバ100を特定し、特定したサーバ100に対してその要求を転送する。
次に、図2を参照して、印刷サービス110及びデータ記憶装置102の内部構成の一例を説明する。
印刷サービス110は、論理プリンタ管理部1102、論理プリンタ112、物理プリンタ管理部1104、物理プリンタ114、ジョブ管理部1106、ジョブスケジューリング部1108、イベント通知部1110、サーバ間通信制御部1112、及びクライアント通信部1114を有する。
論理プリンタ管理部1102は、個々の論理プリンタ112の実体化処理、解放処理を行うと共に、それら論理プリンタ112を管理する。論理プリンタ管理部1102は、データ記憶装置102に記憶されている論理プリンタテーブル1021に従い、各サーバ100(印刷サービス110)上の各論理プリンタ112を管理する。 論理プリンタ管理部1102に実体化された各論理プリンタ112は、例えば、ジョブの受付処理を行う。すなわち、クライアントから送られてくる印刷指示は、宛先の論理プリンタ112の指定を含んでおり、宛先の論理プリンタ112は、その印刷指示を受け取り、その印刷指示に対応するジョブを生成する。ジョブの生成では、ジョブ管理部1106と協働して、そのジョブのIDや印刷属性などを含むジョブの管理情報を生成してデータ記憶装置102に格納し、その管理情報がこの印刷制御システム内(他の印刷サービスも含む)の様々な要素(当該論理プリンタ112自身や、関連する物理プリンタ114、ジョブ管理部1106等)から参照できるようにする。
物理プリンタ管理部1104は、個々の物理プリンタ114の実体化処理、解放処理を行うと共に、それら物理プリンタ114を管理する。物理プリンタ管理部1104はデータ記憶装置102に記憶されている物理プリンタテーブル1022に従い、各サーバ100上の各物理プリンタ114を管理する。
物理プリンタ管理部1104により実体化された各物理プリンタ114は、この例では、対応する実プリンタ108の状態の監視、その実プリンタ108の制御、印刷対象のPDLデータの中間データや印刷可能データへの変換、ジョブの状態管理等を行う。
ジョブ管理部1106は、ジョブIDを発行したり、クライアントからの更新指示に応じてジョブ管理情報を更新したり、削除指示に応じてジョブを削除したりする等、ジョブ全般に関する管理を行う。
論理プリンタ管理部1102及び物理プリンタ管理部1104は、処理レート計測部1103及び1105をそれぞれ有する。処理レート計測部1103は、論理プリンタ管理部1102が管理する各論理プリンタ112について、論理プリンタ112が実行しているジョブ群の処理の処理レートを計測する。また、処理レート計測部1103は、それら各論理プリンタの処理待ちジョブ数を更に計測してもよい。同様に、処理レート計測部1105は、物理プリンタ管理部1104が管理する各物理プリンタ114の処理レートを計測する。また処理レート計測部1105は、それら各物理プリンタ114の処理待ちジョブ数を更に計測してもよい。
図3に示すように、処理レート計測部1103は、1分間の間に論理プリンタ(LP: Logical Printer)112が処理(例えばジョブの受付処理)を完了したジョブの数をカウントし、このカウント値を処理レート計算の単位時間(例えば単位J/Hを用いる場合は1時間)あたりに換算することで、その論理プリンタ112の処理レートを算出する。図3に示すJ0、J1、・・・、J4はジョブであり、その中の数字はジョブの入力順序を示す。処理レート計測部1103は、更に、論理プリンタ112の前段に設けられている受付キュー内にあるジョブの数を、「処理待ちジョブ数」として取得してもよい。処理レート計測部1103は、管理下にある各論理プリンタ112について、あらかじめ定められた時間間隔毎に上述の処理レートの計算(及び処理待ちジョブ数の取得)を行い、処理レート(及び処理待ちジョブ数)をデータ記憶装置内の処理レート履歴テーブル1027に記録する。
同様に、処理レート計測部1105は、1分間の間に物理プリンタ(PP: Physical Printer)114が処理を完了(すなわち実プリンタ108へのジョブの画像データの送信を完了)したジョブの数をカウントし、このカウント値を単位時間あたりに換算することで、その物理プリンタ114の処理レートを算出する。また、処理レート計測部1105は、物理プリンタ114の前段のバッファ内にある処理待ちジョブ(論理プリンタ112による処理は完了しているが、物理プリンタ114による処理がまだ行われていないジョブ)の数を、処理待ちジョブ数として取得してもよい。処理レート計測部1105は、管理下にある各物理プリンタ113について、あらかじめ定められた時間間隔毎に処理レートの計算(と処理待ちジョブ数の取得)を行い、その処理レート(及び処理待ちジョブ数)をデータ記憶装置内の処理レート履歴テーブル1027に記録する。
図2の説明に戻ると、ジョブスケジューリング部1108は、物理プリンタ114が印刷可能となった時に、データ記憶装置102内のジョブ情報1026に登録されているジョブ群から、物理プリンタ114に対してジョブを割り当てる。物理プリンタ114にジョブを割り当てるのは、その物理プリンタ114が管理する実プリンタ108が次のジョブを印刷可能な状態であり、かつそのジョブが割り当て待ち状態である時である。
イベント通知部1110は、印刷サービス110の内部で発生したイベントを、サーバ間通信制御部1112を介して、他のサーバ100内の印刷サービス110に通知する。イベントの通知先とするサーバ100の範囲は、イベントの種類に応じて決まる。
サーバ間通信制御部1112は、サーバ100間、及び、サーバ100と配置管理装置104その他の情報処理装置との間、の通信(メッセージング)を制御する。
クライアント通信部1114は、クライアントからの各種指示、例えば印刷指示、印刷状態取得指示、サーバ制御指示等、をネットワーク経由で受け付け、プロトコル解析を行う。クライアントから受け付ける指示データは、LPR/IPP等の一般的な印刷プロトコルや、独自の管理プロトコルに従ったものでよい。クライアント通信部1114は、プロトコル解析の結果に従い、サーバ100(印刷サービス110)内の各要素に対して指示を割り当てる。
データ記憶装置102は、論理プリンタテーブル1021、物理プリンタテーブル1022、対応づけテーブル1023、サーバテーブル1024、配置テーブル1025、ジョブ情報1026、及び処理レート履歴テーブル1027を記憶している。以下、図4〜図9を参照して、それら各テーブルの具体例を説明する。
論理プリンタテーブル1021は、印刷制御システム内の各論理プリンタ112の定義情報を保持する表である。図4に論理プリンタテーブル1021のデータ内容の一例を示す。図4に示すように、論理プリンタテーブル1021には、論理プリンタごとに、その論理プリンタのプリンタID、プリンタ名、エンドポイント、プロトコル、アクセス制御情報、及び帯域保証レートといった項目が登録される。項目「プリンタID」は、当該論理プリンタの識別情報である。項目「プリンタ名」は、システム管理者やユーザ等が当該論理プリンタに付けた名称である。項目「エンドポイント」は、当該論理プリンタ112と通信するための通信エンドポイントを示す情報であり、例えば、当該論理プリンタが用いる「プロトコル」に応じた形式で記述される。例えば、IPP(Internet Printing Protocol)に対応する論理プリンタのエンドポイントはURLで記述され、LPR(Line PRinter daemon protocol)に対応する論理プリンタのエンドポイントはIPアドレスの形で記述される。項目「プロトコル」は、その論理プリンタが対応しているプロトコルを示す情報である。なお、1つの論理プリンタが対応するプロトコルは1つに限られるものではなく、複数であってもよい。項目「アクセス制御情報」は、その論理プリンタに対するユーザからのアクセスを制御するために用いる情報である。アクセス制御情報としては様々な形の情報を用いることができる。例えばその論理プリンタを利用可能なユーザやグループの識別情報(ID)のリスト(アクセス制御リスト)であってもよいし、その論理プリンタにアクセス可能なユーザを認証する認証方法(例えばパスワード認証)を規定する情報であってもよい。図示例におけるプリンタID「1」に対応するアクセス制御情報「Group A」は、「Group A」というグループに属するユーザからの利用を認めることを意味する。またプリンタID「2」に対応するアクセス制御情報「basic」はHTTP(HyperText Transfer Protocol)のベーシック認証により認証が成功したユーザからの利用を認めることを意味する。項目「帯域保証レート」は、当該論理プリンタに対して設定された帯域保証レートである。図示例では、帯域保証レートは単位J/Hで表現されている。なお帯域保証レート「−1」は、当該論理プリンタ112が帯域保証の対象でないこと(すなわち「基幹用」でないこと)を意味する。帯域保証レートの値は、例えば基幹用の各仮想プリンタを使用する部署等が要求する処理速度やそれら部署の印刷量の実績等を踏まえ、システム管理者が設定すればよい。
物理プリンタテーブル1022は、印刷制御システム内の各物理プリンタ114の定義情報を保持する表である。図5に物理プリンタテーブル1022のデータ内容の一例を示す。図5に示すように、物理プリンタテーブル1022には、物理プリンタごとに、その物理プリンタのプリンタID、プリンタ名、実プリンタ、エンドポイント、プロトコル、アクセス制御情報及び帯域保証レートといった項目が登録される。項目「実プリンタ」は、その物理プリンタが管理している実プリンタ108を特定する情報である。図示例では、実プリンタ108を特定する情報として、その実プリンタ108のIPアドレスが用いられている。物理プリンタが複数の実プリンタ108を管理する場合、項目「実プリンタ」には、それら複数の実プリンタの情報が登録される。その他の項目は、論理プリンタの定義情報における同名の項目と同じである。
対応づけテーブル1023は、論理プリンタ112と物理プリンタ114の対応関係の情報を保持する。対応付けテーブル1023のデータ内容の一例を図6に示す。図に例示した対応付けテーブル1023には、論理プリンタ112のプリンタ名(又はプリンタID)に対応づけて、その論理プリンタ112に対応づけられた物理プリンタ114のリストが登録されている。論理プリンタ112と物理プリンタ114との対応関係は一対一対応に限らない。1つの論理プリンタ112に対して複数の物理プリンタ114が対応づけられる場合もあるし、その逆もある。ジョブスケジューリング部1108は、対応付けテーブル1023を参照し、論理プリンタ112が受け付けた印刷ジョブを、その論理プリンタ112に対応する物理プリンタ114に割り当てる。
サーバテーブル1024は、本システム内のサーバ100の情報を管理するテーブルである。図7に示すように、サーバテーブル1024には、サーバ100毎に、そのサーバの識別情報(サーバID)、IPアドレス、状態、CPU性能、メインメモリ容量、及び最大処理レートの各項目が登録されている。
IPアドレスの情報は、サーバ100間での通信を行う場合に利用される。IPアドレスは、そのサーバと通信するために用いられる情報の一例であり、同様の役割を果たす別の情報に代えてもよい。項目「状態」は、当該サーバの現在の状態を示す情報である。サーバの状態としては、例えば「稼働中」、「停止中」がある。CPU性能の項目は、当該サーバが有するCPUの性能(例えばクロック数、コア数)を示す。メインメモリ容量の項目は、当該サーバが持つメインメモリの容量を示す。CPU性能及びメインメモリ容量は、当該サーバの処理能力を表す指標値の一例である。配置管理装置104にて論理プリンタ112や物理プリンタ114の再配置が計算される際、これら処理能力の情報が利用される。CPU性能及びメインメモリ容量に代えて、サーバの処理能力を示す別の種類の情報を用いてもよい。例えばIaaS(Infrastructure as a Service)タイプのクラウドサービスが提供する仮想マシン(VM)をサーバ100として用いる場合、クラウドサービスが設定している仮想マシンの性能レベルの情報を用いることもできる。仮想マシンの性能レベルに応じて課金が設定されている場合には、性能レベルの情報は、印刷制御システムを構成するための仮想マシン群のコストを計算するのに用いたり、処理負荷の増減に応じてどの性能レベルの仮想マシンを追加又は削除(停止)するかを判定するのに用いたりすることもできる。最大処理レートは、当該サーバ100が達成可能なジョブの処理レートの最大値である。最大処理レートの値は、実験やシミュレーションにより求めたり、当該サーバの性能(CPUやメモリ量等)から推定したりして設定する。
配置テーブル1025は、仮想プリンタ(論理プリンタ112及び物理プリンタ114)がどのサーバ100に配置されているかを管理するテーブルである。配置テーブル1025のデータ内容の一例を図8に示す。図に例示した配置テーブル1025には、プリンタタイプ、プリンタ名(又はID)及びサーバIDの項目がある。プリンタタイプは、当該仮想プリンタが論理プリンタ、物理プリンタのどちらのタイプであるかを示す。プリンタ名は、当該仮想プリンタの名前(又はID)である。サーバIDは、当該仮想プリンタが配置されているサーバの識別情報である。配置テーブル1025は、後述する配置管理装置104によるサーバ配置の決定に従って更新される。なお、この配置テーブル1025の更新に合わせて、論理プリンタテーブル1021及び物理プリンタテーブル1022における配置先サーバの情報も更新される。
ジョブ情報1026は、印刷指示に応じて生成されたジョブの管理情報及び実体情報からなる。ジョブの管理情報は、ジョブID、ジョブ名、状態、当該ジョブを受け付けた仮想プリンタ、印刷属性(部数、ステープル、カラー等)などの項目を含んでいる。ジョブの実体情報は、当該ジョブで印刷する画像を表す印刷データである。印刷データは、例えば、クライアントから印刷指示と共に受け取ったPDLデータである。また、物理プリンタ114によるPDLデータの中間形式データや印刷可能データへの変換が行われる毎に、データ記憶装置102に記憶される印刷データをその変換結果のデータ(中間形式又はラスター形式等の印刷可能データ)に置き換えてもよい。また、このように置き換える代わりに、各段階の変換結果のデータをデータ記憶装置102に追加記憶してもよい。
処理レート履歴テーブル1027には、各サーバ100上の処理レート計測部1103及び1105が計測した各仮想プリンタの処理レートの実績値が記録される。処理レート計測部1103及び1105は、仮想プリンタの処理レートを計測する毎に、その処理レートを、その仮想プリンタのプリンタID及びその計測の日時(項目「記録日時」)と対応づけて、処理レート履歴テーブル1027に記録する。これら記録される情報の組を履歴レコードと呼ぶ。帯域保証判定装置105の判定で仮想プリンタの処理待ちジョブ数も用いる場合には、処理レート計測部1103及び1105は仮想プリンタの処理レートと共に処理待ちジョブ数も求め、これらを履歴レコードに組み込む。また、帯域保証の判定において更に別の計測値を用いる場合には、履歴レコードにはその計測値も組み込まれる。処理レート計測部1103及び1105が各仮想プリンタの処理レート(及び処理待ちジョブ数等)を定期的に計測する毎に、その計測結果を含んだ履歴レコードが処理レート履歴テーブル1027に追加されていく。
以上、データ記憶装置102内に記憶される情報の例について説明した。印刷サービス110や配置管理装置104等のシステム構成要素は、データ記憶装置102及びその中の各情報の所在場所を示す情報(IPアドレスやURL等)を有しており、処理を進める際、必要に応じてデータ記憶装置102内の情報を参照したり、データ記憶装置102内の情報を更新したり、データ記憶装置102内に新規情報を登録したりする。
図2の例では、論理プリンタテーブル1021〜処理レート履歴テーブル1027のすべての情報が1つのデータ記憶装置102に記憶されているが、これは必須のことではない。それら各情報が印刷サービス110や配置管理装置104により共有されている形であれば、それら個々の情報がネットワーク又はクラウド内の別々の場所に格納されていてもよい。
次に、図10を参照して、帯域保証判定装置105及び配置管理装置104の連携による、帯域保証のための仮想プリンタの配置制御の全体的な処理手順を説明する。
帯域保証判定装置105は、所定時間毎の判定タイミングが到来すると、論理プリンタテーブル1021及び物理プリンタテーブル1022から各論理プリンタ112及び各物理プリンタ114に設定されている帯域保証レートを取得(S10)すると共に、処理レート履歴テーブル1027から各仮想プリンタの履歴レコード(処理レート、処理待ちジョブ数等)を取得する(S12)。S12では、1つの仮想プリンタにつき、最新の履歴レコードから時間を遡る順に、あらかじめ定められた個数のレコードを取得する。そして帯域保証判定装置105は、帯域保証の対象である(すなわち正の値の帯域保証レートが設定されている)仮想プリンタ毎に、その仮想プリンタの帯域保証に失敗しているか、あるいはその兆候があるかどうかを判定する(S14)。
この判定は、S10、S12で取得した帯域保証レートと履歴レコードとに基づき行う。例えば、取得した直近の所定数の履歴レコードの処理レート(実績値)の全て又はその代表値(例えば平均)が、取得した帯域保証レートを下回っている場合に、帯域保証に失敗していると判定する。処理レートと比較する対象を帯域保証レートそのものではなく、それに1以上の安全率を乗じた値とすることで、失敗の兆候を検出するようにしてもよい。すなわち、処理レート(又はそれらの代表値)が、帯域保証レートに対して安全率を乗じた値を下回った場合に、帯域保証の失敗の兆候がある(失敗の可能性が無視できない程度にある)と判定するようにしてもよい。
また、帯域保証の失敗又はその兆候の判定の際に、取得した個々の履歴レコードの処理待ちジョブ数又はそれらの代表値(例えば平均)を考慮に入れてもよい。この場合、例えば、処理待ちジョブ数の全て又はそれらの代表値が、あらかじめ定められた閾値以上であることを、帯域保証の失敗又はその兆候の必要条件とする。すなわち、処理待ちジョブ数の全て又はそれらの代表値がその閾値以上でない場合は、たとえ処理レート(又はそれらの代表値)が帯域保証レート(又はこれに安全率を乗じたもの)を下回っても、帯域保証が失敗した(又はその兆候がある)とは判定しない。例えば極端な例としてジョブが全く来ない状態がしばらく続いた場合を考えると分かるように、そもそも入力されるジョブ自体の数が少ない場合は処理レートが低くなるのは当然であり、そのような場合に帯域保証の失敗等と判定するのは不合理だからである。なお、ここで用いる閾値としては、例えば、ジョブが処理待ち状態から処理開始となるまでの遷移時間を考慮し、常に処理待ち状態のジョブが存在していると判断できる数(例えば10ジョブ)を用いる。
また、帯域保証の失敗又はその兆候があると判定するための必要条件として、更に、S12で取得した直近複数回の中で処理レートが増加していない(あるいは減少傾向である)という条件を加えてもよい。
S14で帯域保証の失敗の兆候がないと判定した場合、帯域保証判定装置105はあらかじめ定めた時間だけスリープし(S16)、その後、S10に戻って次回の判定を実行する。
S14で帯域保証が失敗、又はその兆候があると判定した場合、帯域保証判定装置105は、保証失敗兆候イベントを配置管理装置104に対して通知する(S18)。
配置管理装置104は、保証失敗兆候イベントの通知を受け取ると、本システム内の仮想プリンタ群の再配置を計算する(S20)。この再配置の計算の仕方については、後で説明する。再配置の計算では、現在利用可能(すなわち稼働中)なサーバ100群の中での仮想プリンタの配置換えで全ての仮想プリンタの帯域保証が実現できる再配置が計算できる場合もあれば、それら既存のサーバ100群だけでは帯域保証が実現できず、帯域保証の実現のためには新たなサーバ100(例えばVM)の追加が必要と判定される場合もある。
配置管理装置104は、再配置の計算の結果、既存のサーバ100群のみで帯域保証が可能な再配置のパターンを見つけた場合(S22の判定結果がNo)、その再配置のパターンに従って仮想プリンタ群をサーバ100間で移動させる(S24)。すなわち、計算した再配置パターンにおける配置先のサーバ100が、現在の配置先のサーバ100と異なっている仮想プリンタがあれば、その仮想プリンタを再配置パターンにおける配置先へと移動させる。
配置管理装置104は、再配置の計算の結果、帯域保証のためにサーバの追加が必要であると判定した場合(S22の判定結果がYes)、システム管理者にその旨を通知する(S26)。システム管理者は、その通知に応じてシステムの状況を確認し、新たなサーバ100の追加が必要と判断した場合は、追加のための作業を行う。サーバ100がVMならば、クラウドサービスにVMの追加の手続を行えばよい。このような通知の代わりに、配置管理装置104が、新たなサーバ100(VM)を追加してもよい。
新たなサーバ100の追加の後、再びS20にて再配置を計算し、S22の検査を行う。S22の判定結果がNoとなるまで、新たなサーバの追加(S26)と再配置の計算(S20)が繰り返される。
次に、S20における再配置の計算処理の例を、図11〜図14を参照して説明する。図11に示すように、配置管理装置104は、まず「帯域保証あり」(すなわち帯域保証レートが正の値)の「物理」プリンタの再配置を計算し(S30)、次に「帯域保証なし」(すなわち帯域保証レートが「−1」)の「物理」プリンタの再配置を計算する(S32)。そして、「帯域保証あり」の「論理」プリンタの再配置を計算し(S34)、次に「帯域保証なし」の「論理」プリンタの再配置を計算する(S36)。
このように、本実施形態では、物理プリンタ114群の再配置を先に決定し、その後、論理プリンタ112群の再配置を決定している。これは、論理プリンタ112はジョブの受付という軽い処理を担うのに比較して、物理プリンタ114はPDLデータを印刷可能データに変換する等のはるかに重い処理を担うからである。すなわち、処理負荷がはるかに重い物理プリンタ114の配置を優先的に決定するのである。
「帯域保証あり」の仮想プリンタ(物理プリンタ及び論理プリンタ)の再配置の計算(S30及びS34)は、図12の手順に従って行う。以下では、そのあとに続く図13及び図14の手順の説明も含め、「物理」プリンタの再配置を主たる例にとって説明を進める。その説明の中の「物理」を「論理」に入れ替えれば、ほぼ「論理」プリンタの再配置の説明となる。「論理」プリンタ特有の事項があれば特記する。
配置管理装置104は、物理プリンタテーブル1022から、「帯域保証あり」に該当する物理プリンタを抽出し、その物理プリンタを帯域保証レートが高い順にソートする(S40)。次に、利用可能な各サーバ100の「処理可能レート」を取得する(S42)。サーバ100の最大処理レートをそのサーバ100の「最大容量」に例えると、サーバ100の「処理可能レート」とはそのサーバ100の残り容量にあたる。そのサーバ100に1つずつ仮想プリンタを配置していく毎に、残り容量にあたる「処理可能レート」は、その仮想プリンタの処理レートだけ減る。S42では、この手順の開始にあたり、処理可能レートを初期化する。この手順の適用対象が物理プリンタの場合は、サーバテーブル1024から取得した各サーバ100の最大処理レートを、そのサーバ100の処理可能レートに設定する。一方、この手順の適用対象が論理プリンタの場合は、S42では、既に済んでいる物理プリンタの再配置の結果を反映した、各サーバ100の処理可能レートを取得する。
次に配置管理装置104は、帯域保証レートが高い順に、帯域保証ありのすべての物理プリンタ114についてS44〜S50の処理を繰り返す。図12において、変数PRTは、個々の繰り返しにおける処理対象の物理プリンタ114を表す。配置管理装置104は、変数SVに、その時点で処理可能レートが最大のサーバ100の識別情報をセットする(S44)。次に、処理対象の物理プリンタ114(PRT)の帯域保証レートが、SVが指し示すサーバ100の処理可能レートより低いかどうかを判定する(S46)。PRTの帯域保証レートがSVの処理可能レートより低い場合、そのサーバSVの配置リストにその物理プリンタPRTを追加する(S48)。ここで、配置リストは、配置管理装置104がサーバ100毎に用意するリストであり、当該サーバ100に対して配置する物理プリンタ及び論理プリンタ(の識別情報)を保持する。そして、配置管理装置104は、SVの処理可能レートをPRTの帯域保証レートだけ減らす(S50)。
これにより、帯域保証ありの1つの物理プリンタ114の配置先のサーバ100が決定されたことになる。配置管理装置104は、ソート順でその物理プリンタ114の次の物理プリンタ114を処理対象の物理プリンタPRTにセットし、S44〜S50の処理を繰り返す。以上のようにして、帯域保証レートが高い物理プリンタ114から順に配置先のサーバ100が決定されていく。
以上の処理の繰り返しの中で、S46の判定結果がNoとなった場合、その判定の時点で対象の物理プリンタPRTの帯域保証レート以上の処理可能レートを有するサーバ100は存在しない。この場合、配置管理装置104は、配置不能エラーとする(S52)。配置不能エラーは、現在利用可能なサーバ100群だけでは、帯域保証を満たしつつ仮想プリンタ群をそれらサーバ100群に配置することが実質上不可能であることを示す。逆に言えば、配置不能エラーは、帯域保証を満たすには、本システムに新たなサーバ100を追加することが必要であることを示す。このエラーが生じた場合、図10の全体手順におけるS22の判定結果がYesとなり、システム管理者にサーバ追加の必要性を示す通知が送られることになる。配置不能エラーが生じた場合、図12の手順は中止される。
「帯域保証なし」の仮想プリンタの再配置の計算(S32及びS36)は、図13及び図14の手順に従って行う。図12の場合と同様、物理プリンタ114の再配置の場合を主たる例にとって説明する。
この手順では、配置管理装置104は、物理プリンタテーブル1022を参照して帯域保証レートが「−1」である物理プリンタ114を抽出し、抽出した各物理プリンタ114の直近の1以上の所定数個の実績レート、すなわち処理レートの実績値を、処理レート履歴テーブル1027から取得する(S60)。1つの物理プリンタ114に対して直近の1つの実績レートを取得する場合、その実績レートがその物理プリンタ114の現在(すなわち図13の処理の実行時点)の処理レート(ジョブ群の処理速度)であるとみなす。1つの物理プリンタ114に対して直近の複数の処理レートを取得する場合は、それら複数の処理レートの平均等の代表値を、当該物理プリンタ114の、図13及び図14の処理の実行時点での処理レートとみなす。なお、用いる平均処理は単純平均でもよいし、日時の新しい処理レートほど大きい重みを与える加重平均であってもよい。次に、配置管理装置104は、それら物理プリンタ114を、S60で求めた処理レートの高い順にソートする(S62)。
次に配置管理装置104は、帯域保証なしのすべての物理プリンタ114について、S60で求めた処理レートが高い順に、S66〜S69の処理を繰り返す。図12の場合と同様、個々の繰り返しの開始時点で、変数PRTに対し、ソート順で次の物理プリンタ114の識別情報をセットする。また配置管理装置104は、変数SVに、その時点で処理可能レートが最大のサーバ100の識別情報をセットする(S64)。次に、PRTの処理レートが、SVの処理可能レートより低いかどうかを判定する(S66)。PRTの処理レートがSVの処理可能レートより低い場合、SVの配置リストにPRTを追加する(S68)。この配置リストは、図12の処理から引き継いだものである。そして、配置管理装置104は、SVの処理可能レートをPRTの処理レートだけ減らす(S69)。
これにより、帯域保証なしの1つの物理プリンタ114の配置先のサーバ100が決定されたことになる。配置管理装置104は、ソート順でその物理プリンタ114の次の物理プリンタ114を処理対象の物理プリンタPRTにセットし、S64〜S69の処理を繰り返す。以上のようにして、処理レートが高い物理プリンタ114から順に配置先のサーバ100が決定されていく。
以上の処理の繰り返しの中で、S66の判定結果がNoとなった場合、図14の手順に進む。この手順では、配置管理装置104は、SVの配置リストの中に「帯域保証あり」の仮想プリンタが含まれているか否かを判定する(S70)。含まれていないと判定した場合(判定結果がNo)、そのサーバSVには、今回の再配置の計算の中でまだ1つも仮想プリンタが配置されていないか、又は「帯域保証なし」の仮想プリンタしか配置されていない。したがって、当該物理プリンタPRTをそのサーバSVに追加したとしても、「帯域保証あり」の仮想プリンタの帯域保証を脅かすことはない。そこで、配置管理装置104は、図13のS68に進み、SVの配置リストにPRTを追加する。
S70で、SVの配置リストに「帯域保証あり」の仮想プリンタがあると判明した場合、PRTをSVに配置すると、その「帯域保証あり」の仮想プリンタの帯域保証ができなくなる可能性が高い。そこで、この場合は、配置管理装置104は、PRTをSVに配置することは取りやめる。そして、別のサーバ100にPRTが配置できないか試す。すなわち、配置管理装置104は、処理可能レートがSVの次に大きいサーバ100(次点のサーバ)が存在するか否かを判定し(S72)、存在すれば、その「次点のサーバ」を変数SVにセットし(S74)、図13のS66に戻る。
S72で「次点のサーバ」が存在しないことが判明した場合、PRTをどのサーバ100に配置したとしても、他の仮想プリンタの帯域保証を脅かすことを意味する。この場合、配置管理装置104は、配置不能エラーを発する(S76)。これにより図10の全体手順におけるS22の判定結果がYesとなり、システム管理者にサーバ追加の必要性を示す通知が送られることになる。配置不能エラーが生じた場合、図13及び図14の手順は中止される。
物理プリンタについて図12並びに図13及び図14の処理が、配置不能エラーが生じることなく完了すると、すべて(すなわち帯域保証ありと帯域保証なしの両方)の物理プリンタ114の配置先が決定されたことになる。すると今度は、各サーバ100の処理可能レート及び配置リストを引き継いだうえで、論理プリンタ112群を対象として図12並びに図13及び図14の処理を行う。前述のとおり論理プリンタ112群の配置先決定の処理は、物理プリンタ114の場合とほぼ同様なので、説明を省略する。
図12〜図14の手順による仮想プリンタ群の配置先決定の流れの具体例を、図15を参照して説明する。
図15は、1500J/Hの帯域保証レートが設定された2つの物理プリンタPP1及びPP2と、帯域保証なしの8つの物理プリンタPP3〜PP10の、合計10個の物理プリンタを、最大処理レートが2000、2000、及び1500J/Hの3台のサーバ1〜3に配置していく場合の例を示している。物理プリンタPP3〜PP10の処理レート(実績)は、順に、600、500、500、400、200、200、100、100であるとする。
この場合、(1)まず帯域保証レートが最も高い物理プリンタPP1(PP1とPP2の帯域保証レートは同じなので、番号が若い順に配置先を決めていくものとする)が、処理可能レートが最も高いサーバ1に配置され、これによりサーバ1の処理可能レートが500J/Hまで減る。なお、処理可能レートが最大のサーバが複数存在する場合は、あらかじめ定められた番号の順に配置先に選ばれていくものとする。(2)次に帯域保証レートが次に高い物理プリンタPP2が、その時点で処理可能レートが最も高いサーバ2に配置され、これによりサーバ2の処理可能レートが500J/Hに減る。以上で、帯域保証ありの物理プリンタの配置先の決定が完了する。(3)次に帯域保証なしのうち処理レートが最も高い物理プリンタPP3が、その時点で処理可能レートが最も高いサーバ3に配置され、これによりサーバ3の処理可能レートが900J/Hに減る。(4)処理レートがその次に高い物理プリンタPP4が、その時点で処理可能レートが最も高いサーバ3に配置され、これによりサーバ3の処理可能レートが400J/Hに減る。(5)処理レートがその次に高い物理プリンタPP5が、その時点で処理可能レートが最も高いサーバ1に配置され、これによりサーバ1の処理可能レートが0J/Hに減る。(6)処理レートがその次に高い物理プリンタPP6が、その時点で処理可能レートが最も高いサーバ2に配置され、これによりサーバ2の処理可能レートが0J/Hに減る。(7)処理レートがその次に高い物理プリンタPP7が、その時点で処理可能レートが最も高いサーバ3に配置され、これによりサーバ3の処理可能レートが200J/Hに減る。(8)処理レートがその次に高い物理プリンタPP8が、その時点で処理可能レートが最も高いサーバ3に配置され、これによりサーバ3の処理可能レートが0J/Hに減る。これで、すべてのサーバの処理可能レート(残容量)が0になった。処理レートがその次に高い物理プリンタPP9を配置し得るかを、サーバ番号が若いサーバから順に試すが、サーバ1も2も帯域保証ありの物理プリンタPP1又はPP2がすでに配置済みなので、それらサーバ1又は2の処理可能レート(0J/H)を超える処理レート100を有する物理プリンタPP9は配置できない。(9)結局、物理プリンタPP9は、サーバ2の次点の、帯域保証ありの仮想プリンタが1つも配置されていないサーバ3に配置され、これによりサーバ3の処理可能レートが−100J/Hに減る。サーバ3は、帯域保証なしの仮想プリンタしか配置されていないので、処理可能レートが負の値になっても、帯域保証の観点では問題ない。(10)最後の物理プリンタPP10も、帯域保証ありの物理プリンタの配置先となっているサーバ1、2には配置できないので、結局サーバ3に配置されることになる。
以上に説明した実施形態によれば、帯域保証ありの仮想プリンタに割り当てられるべき帯域が、同じサーバ内の帯域保証なしの仮想プリンタの処理負荷により圧迫される可能性を低減することが可能になる。
例えば基幹用の印刷は一般に定型の大量のジョブを印刷し続けることが多く、帯域保証ありの仮想プリンタは、帯域保証レートに近い処理レートで安定して処理を続けると想定できる場合が多い。このような場合、帯域保証ありの仮想プリンタの帯域保証を脅かすのは、印刷指示の数や印刷対象の文書が一定しない一般出力のジョブであり、これら一般ジョブを処理する帯域保証なしの仮想プリンタの処理レートの急激な増大である。そこで、上記の再配置処理では、帯域保証ありの仮想プリンタが配置されるサーバには、それら帯域保証ありの仮想プリンタの帯域保証レートと、帯域保証なしの仮想プリンタの処理レートの直近の実績値との合計がそのサーバの最大処理レートを超えないように、そのサーバに配置する帯域保証なしの仮想プリンタを選択する。このように、帯域保証なしの仮想プリンタの直近の実績処理レートを考慮して再配置を決めるため、帯域保証ありの仮想プリンタの帯域保証が、同じサーバに同居する帯域保証なしの仮想プリンタの処理負荷の変化により脅かされる可能性が低くなる。
さて、帯域保証ありの仮想プリンタの帯域保証が、同じサーバに同居する別の帯域保証「あり」の仮想プリンタの処理負荷の増大により脅かされる場合をさらに考慮してもよい。この場合、例えば、図10のS14で帯域保証失敗の兆候を検知したサーバ100に帯域保証ありの仮想プリンタが複数あるかどうかをチェックし、複数ある場合には、それら複数の仮想プリンタの組を記憶する。そして、帯域保証ありの仮想プリンタを図12の手順に従って再配置する際、記憶した組の仮想プリンタを同じサーバ100に配置しないよう、再配置を求める。より具体的には、例えば、図12の手順のS44の後、処理可能レートが最大のサーバSVの配置リストに、配置対象の仮想プリンタPRTと同じ組(失敗兆候検知時に記憶していたもの)に属する帯域保証ありの仮想プリンタがすでにあるかを判定する。「ある」と判定した場合は、SVを処理可能レートが次点のサーバに変更して同じ判定を繰り返し、その判定で「ない」と判定された場合に、S46に進む。
帯域保証ありの仮想プリンタの配置を求める際に同じサーバに配置が決定されている別の帯域保証ありの仮想プリンタを考慮する別の例として、図16及び図17に示す手順がある。この手順は、図12の手順の代替となる手順であり、図12の手順のステップと同様のステップには同一符号を付して重複説明を省略する。
図16の手順では、配置管理装置104は、図12の手順と同じS40〜S44の処理を行った後、処理可能レートが最大のサーバSVの配置リストに帯域保証ありの仮想プリンタが既に存在するか否かを判定する(S80)。存在しない場合は、S46に進み、図12と同様の処理を行う。
S80で「存在する」と判定した場合、配置管理装置104は、図17に示すように、現在の処理対象の仮想プリンタPRTと配置リスト内の全ての仮想プリンタの各々について、それぞれその仮想プリンタの帯域保証レートと処理レート(実績値)のうち大きい方を選択する(S82)。そして、それら選択した方のレートをそれら全ての仮想プリンタにわたって総和し、その総和がSVの最大処理レート以下であるかどうかを判定する(S84)。その総和がSVの最大処理レート以下であれば、その帯域保証ありの仮想プリンタPRTの配置先をそのサーバSVにしたとしても、そのサーバSVに配置される帯域保証ありの仮想プリンタはPRTも含め、すべて帯域が保証される。そこでこの場合、図16のS48に進み、PRTをSVの配置リストに追加する。
S84で、前述の総和がSVの最大処理レートを上回ることが分かった場合、配置管理装置104は、処理可能レートがSVの次に大きいサーバ100(次点のサーバ)が存在するか否かを判定し(S86)、存在すれば、その「次点のサーバ」を変数SVにセットし(S88)、図16のS80に戻る。S86で処理可能レートがSVの次点のサーバ100が存在しないことが判明した場合、配置管理装置104は、図16のS52に進み、配置不能エラーを発する。この場合、PRTをどのサーバ100に配置しても、いずれかの仮想プリンタの帯域保証が脅かされることになるからである。
以上、実施形態のシステム構成及び処理手順について説明した。以上の例では、各仮想プリンタの帯域保証レートは、ユーザ側からの要求に従ってシステム管理者が設定する固定値であるものとして説明した。しかし、別の例として、各仮想プリンタの帯域保証レートを、システムの運用状況の変化に応じて自動的に変更する機能を(例えば配置管理装置104に)設けてもよい。
例えば、帯域保証ありの仮想プリンタが実質的に使用されない期間に入ったと判定される場合に、その仮想プリンタの帯域保証レートを通常時の値よりも低い所定の値まで自動的に低減してもよい。
例えば基幹出力用の仮想プリンタの場合、業務時間外には使用されないことが多いと考えられる。このようにあらかじめ定められた業務時間外には使用されないことがわかっている場合には、業務の終了時間が過ぎた時点でその仮想プリンタの帯域保証レートを通常時の値から0又はそれに近い低い値に切り替え、次の業務時間の開始とともにその仮想プリンタの帯域保証レートを通常時の値に戻す。
このような定時切り替えが不適切な場合には、例えば帯域保証ありの仮想プリンタに対し、その仮想プリンタが「使用されない期間である」ことを判定する処理レートの閾値を定め、この閾値を用いて制御を行ってもよい。この制御では、その仮想プリンタの処理レートがその閾値より高い状況から、閾値を下回ったことを検知したら、その仮想プリンタの帯域保証レートを通常時の値から、それより低いあらかじめ定めた値(例えばその閾値)へと切り替える。そして、その後その仮想プリンタの処理レートが閾値を上回ったことを検知したら、帯域保証レートを通常時の値に戻す。
また、さらに別の例として、帯域保証ありの仮想プリンタに対応する実プリンタ108が電源オフ等により停止したことを検知すると、その仮想プリンタが使用されない期間に入ったと判定し、その仮想プリンタの帯域保証レートを自動的に0に切り替えるようにしてもよい。そして、その後、対応する実プリンタ108のすべてが稼働状態になったことを検知すると、帯域保証レートを通常時の値に戻す。
以上のように仮想プリンタの帯域保証レートを低減すれば、その分だけ、同じサーバ100上に配置された帯域保証なしの仮想プリンタの処理レートを高くすることが可能になる。また、帯域保証レートを低減した場合に、仮想プリンタの再配置(図12〜図14の処理)を行うことで、通常時には帯域保証ありの仮想プリンタがないサーバ100に詰め込まれていた帯域保証なしの仮想プリンタが、帯域保証ありの仮想プリンタのあるサーバ100にも分散されるので、帯域保証なしの仮想プリンタの処理レートが向上する。
以上の例では、仮想プリンタが論理プリンタ112と物理プリンタ114とに機能分割されていたが、それら両者の機能を併せ持つ仮想プリンタを用いる場合にも、上述の帯域保証のための再配置処理方式は適用可能である。
以上に例示した印刷サービス110、データ記憶装置102、配置管理装置104及び帯域保証判定装置105は、例えば、汎用のコンピュータに当該装置の各機能モジュールの処理を表すプログラムを実行させることにより実現してもよい。ここで言うコンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)、フラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種I/O(入出力)インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVD、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。また、コンピュータは、仮想マシンであってもよい。