(57)【要約】【課題】印刷ジョブの優先度がプログラム可能である印刷システムおよび印刷方法を提供すること。【解決手段】スケジューラコンポーネントが印刷ジョブの管理およびスケジューリングを監視し、プライオリタイザと協働して、プログラミングおよびカスタマイズを容易にする。ある実施形態では、システムにインターフェースを提供し、プライオリタイザをプログラムし、挿入して、印刷ジョブの異なるプロパティに従ってスケジューラの挙動をカスタマイズすることを可能にする。ある実施形態では、システムは、システム内の印刷キューの相対的な優先順位付け用のモデルを用いて、印刷キュー間でシステムリソースの適正なバランスを強化させる。ある実施形態では、印刷ジョブを投入する際、システムがレンダリング動作および印刷動作を個別にスケジューリング可能で、確実に装置のスタベーションが生じないようにするのを助ける。【選択図】図２
2006236337.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ読取可能な命令を有する１つまたは複数のコンピュータ読取可能な媒体であって、コンピュータ読取可能な命令が実行された場合、
１つまたは複数のプライオリタイザであって、個々のプライオリタイザは、印刷キューに関連付けられており、印刷ジョブに関連付けられたデータを処理し、前記印刷ジョブをスケジューリングするのに使用する特定の印刷キュー用のスケジューリングデータを生成するよう構成可能であるプライオリタイザと、
前記スケジューリングデータを処理し、かつ特定の印刷キュー用の印刷ジョブをスケジューリングするよう構成されたスケジューラと
を備えたコンピュータアーキテクチャを実装するコンピュータ読取可能な命令を有することを特徴とするコンピュータ読取可能な媒体。
【請求項２】
プライオリタイザを構成して、重み値または時間値のうち少なくとも１つを生成することを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項３】
前記コンピュータ読取可能な命令は、複数のプライオリタイザが構成され、互いに関連付けられて、特定の印刷キュー用のプライオリタイザのシーケンスを定義することを可能にすることを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項４】
前記コンピュータ読取可能な命令は、
複数のプライオリタイザが構成され、互いに関連付けられて、特定の印刷キューのプライオリタイザのシーケンスを定義することを可能にし、および
シーケンスの個々のプライオリタイザに優先順位を割当てることを可能にする
ことを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項５】
前記コンピュータ読取可能な命令は、複数のプライオリタイザが構成され、互いに関連付けられて、特定の印刷キュー用のプライオリタイザのシーケンスを定義することを可能にし、プライオリタイザの前記シーケンスは、個々の印刷ジョブ用に、スケジューラが印刷ジョブをスケジューリングするのに使用するタプルを生成することを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項６】
前記コンピュータ読取可能な命令は、ユーザが関連付けられたプライオリタイザを構成できるよう構成された個々のプライオリタイザユーザインターフェースをさらに定義することを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項７】
前記コンピュータ読取可能な命令は、１つまたは複数の優先度キューをさらに利用して、スケジューラが印刷ジョブをスケジューリングするのを支援することを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項８】
前記コンピュータ読取可能な命令は、１つまたは複数の優先度キューを利用して、スケジューラが印刷ジョブをスケジューリングするのを支援し、第１型の優先度キューは、
印刷装置に関連付けられた印刷キューでの相対的な印刷ジョブの優先順位付けを表わすプリンタ優先度キューと、
複数の印刷キューのうちの１つのキューを表わすリソースアービトレーションキューと
を備えたことを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項９】
前記コンピュータ読取可能な命令は、１つまたは複数の優先度キューを利用して、スケジューラが印刷ジョブをスケジューリングするのを支援し、第１型の優先度キューは、
印刷装置に関連付けられた印刷キューにおける相対的な印刷ジョブの優先順位付けを表わすプリンタ優先度キューと、
複数の印刷キューのうちの１つのキューを表わすリソースアービトレーションキューであって、前記１つまたは複数の優先度キューがデータを維持するために利用されるリソースアービトレーションキューとを備え、前記データは、
個々の印刷ジョブ用の相対的な優先度タプルと、
関連付けられた印刷装置のグローバルな優先度において特定の印刷ジョブを処理する効果を指示するグローバルな優先度効果と、
印刷ジョブを保留するのに使用できる保留カウントと
を含む
ことを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項１０】
１つまたは複数の前記プライオリタイザを複数の異なる型のプライオリタイザグループから選択できることを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項１１】
１つまたは複数の前記プライオリタイザを複数の異なる型のプライオリタイザグループから選択でき、第１型のプライオリタイザは、
１つの印刷ジョブを別の印刷ジョブに対しランク付けするのに使用するデータを生成する相対的な優先度プライオリタイザと、
１つの印刷装置の別の印刷装置に対する相対的な重みに影響を与える修飾子としてグローバルな優先度効果を利用するグローバルな優先度効果プライオリタイザと、
経過時間後に、優先度における最優先のブーストを印刷ジョブが受信することを可能にする時間フィールドを利用する時間ＦＩＦＯプライオリタイザと、
優先度におけるブーストを印刷ジョブが受信することを可能にする時間ブーストフィールドを利用する時間ブーストプライオリタイザと
を備えたことを特徴とする請求項１に記載のコンピュータ読取可能な媒体。
【請求項１２】
印刷が行われる物理プリンタに関連付けられている装置キューの個々を維持するステップと、
装置キュー毎に、所与の物理プリンタがアイドル状態になる見込みの指示を提供するスタベーションリスクを維持するステップと、
少なくとも１つの前記スタベーションリスクを使用して、レンダラでレンダリングする印刷ジョブをスケジューリングするステップと
を有することを特徴とするコンピュータ実装方法。
【請求項１３】
個々の装置キューを維持する前記ステップは、前記キューを優先度キューとして維持するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
個々の装置キューを維持する前記ステップは、それぞれが特定の印刷ジョブに関連付けられている個々のタプルを維持するステップを含み、前記タプルは、印刷に関する印刷ジョブをスケジューリングするのに利用されることを特徴とする請求項１２に記載の方法。
【請求項１５】
個々の装置キューを維持する前記ステップは、個々の装置キューに関して、個々の装置キュー内の個々の印刷ジョブが印刷システム上で有するグローバルな効果を確定するのに使用されるグローバルな優先度値を維持するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
個々の装置キューを維持する前記ステップは、個々の装置キューに関して、個々の装置キューの個々の印刷ジョブが印刷システム上で有するグローバルな効果を確定するのに使用されるグローバルな優先度値を維持するステップを含み、
装置キューのスタベーションリスクおよびグローバルな優先度値に少なくとも部分的に基づく個々の装置キューの優先順位付けを提供するリソースアービトレーションキューを維持するステップをさらに有する
ことを特徴とする請求項１２に記載の方法。
【請求項１７】
個々の装置キューを維持する前記ステップは、前記装置キューをプールされた印刷システムの一部として維持するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１８】
個々の装置キューを維持する前記ステップは、
各々が特定の印刷ジョブに関連付けられた個々のタプルを維持するステップであって、前記タプルが、印刷する印刷ジョブをスケジューリングするのに利用される維持するステップと、
個々の装置キューに関して、個々の装置キュー内の個々の印刷ジョブが印刷システム上で有するグローバルな効果を確定するのに使用されるグローバルな優先度値を維持するステップと
を含むことを特徴とする請求項１２に記載の方法。
【請求項１９】
個々の装置キューを維持する前記ステップは、
各々が特定の印刷ジョブに関連付けられた個々のタプルを維持するステップであって、前記タプルが、印刷する印刷ジョブをスケジューリングするのに利用される維持するステップと、
個々の装置キューに関して、個々の装置キュー内の個々の印刷ジョブが印刷システム上で有するグローバルな効果を確定するのに使用されるグローバルな優先度値を維持するステップとを含み、
装置キューのスタベーションリスクおよびグローバルな優先度値に少なくとも部分的に基づく個々の装置キューの優先順位付けを提供するリソースアービトレーションキューを維持するステップをさらに有する
ことを特徴とする請求項１２に記載の方法。
【請求項２０】
前記ステップは、プールされた印刷システムの一部として行われることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷ジョブキューイングならびにスケジューリングのシステムおよび方法に関する。
【背景技術】
【０００２】
一般的に、印刷サーバは、１組の物理プリンタまたは論理プリンタに対して印刷するジョブをスケジューリングする。通常、印刷ジョブの中にはかなり大きく、多くのリソースを消費するものがあるので、システムにおいて印刷のジョブが受付けられると、印刷サーバの想定される性能とその実際の性能とに大きな影響を与える可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
例えば、多くのジョブをレンダリングまたは印刷するようスケジューリングされる場合、コンピュータの物理メモリを使い果たし、「スラッシング」として知られる状態につながりかねない。スラッシングとは、仮想メモリからハードディスクへの書込みとハードディスクから仮想メモリへの書込みとが繰り返されると発生する状態である。この繰り返しはすなわち、印刷ジョブの処理において、システムスラッシングとなってしまったジョブがスケジューリングされたことにより、進行が遅くなりかねない。このような状況では、スケジューリングの決定が、システムの実際の性能に影響を与えかねない。同様に、ハードディスク上の複数のファイルから十分なデータを個別に読取った場合、このことがディスクのヘッドの過剰な動きを誘発するので、性能を実際に低下させる可能性がある。
【０００４】
別の例では、印刷を行うための１つの大きなジョブとそれより小さな一連のジョブが必要であることを考慮されたい。この状況では、印刷を行うための小さなジョブの後に大きなジョブがくれば、より多くのユーザがより迅速にジョブを受信することになる。この状況では、実際の性能よりむしろ、想定される性能の方が低下する。これはどちらの場合でもサーバのスループットは、低下しないためである。
【０００５】
印刷ジョブは、サイズおよび／または所望の優先度が変わる傾向があるので、印刷サーバの管理者が、システム内の印刷ジョブの優先度を制御でき、ある時期に印刷ジョブのスケジューリングをすることもできる手段を提供することが望ましいであろう。さらに、ユーザが自分のジョブの優先度を変更することを管理者が承認している場合、ユーザが変更することができることが望ましい。
【０００６】
従って、本発明は、改良された印刷ジョブキューイングならびにスケジューリングのシステムおよび方法を提供することに関する。
【課題を解決するための手段】
【０００７】
印刷ジョブの優先度がプログラム可能である印刷システムおよび印刷方法を説明する。一態様では、スケジューラコンポーネントは印刷ジョブの管理およびスケジューリングを監視し、プライオリタイザと呼ばれるコンポーネントと協働してプログラミングおよびカスタマイズを容易にする。少なくともいくつかの態様では、システムにインターフェースを提供し、プライオリタイザをプログラムし、かつ挿入して、異なる印刷ジョブのプロパティに従ってスケジューラの挙動をカスタマイズすることができる。少なくともいくつかの態様において、システムは、システム内の印刷キューの相対的な優先順位付け用のモデルを利用して、印刷キュー間のシステムリソースの適正なバランスを強化させる。少なくともいくつかの態様では、印刷ジョブを投入するとき、システムがレンダリング動作と印刷動作とを個別にスケジューリングすることができ、「スタベーションリスク」として知られるヒューリスティックを使用して、システム内のレンダリングを抑えることによって、確実に装置のスタベーションが生じないようにするのを助ける。
【発明を実施するための最良の形態】
【０００８】
（概要）
以下の実施形態では、システム内の印刷ジョブの相対的な優先度がプログラム可能である印刷システムを説明する。少なくともいくつかの実施形態では、スケジューラコンポーネントは、印刷ジョブの管理およびスケジューリングを監視し、プライオリタイザと呼ばれるコンポーネントと協働してプログラミングおよびカスタマイズを容易にする。少なくともいくつかの実施形態では、システムにインターフェースを提供し、プライオリタイザをプログラムし、かつ挿入して印刷ジョブの異なるプロパティに従ってスケジューラの挙動をカスタマイズすることを可能にする。よって、少なくともいくつかの実施形態では、各種プログラミング言語の知識が必ずしもあるわけではないシステム管理者でも、印刷ジョブを管理するカスタムの挙動を容易に定義することができる。例えば、少なくともいくつかの実施形態では、ユーザインターフェースを提供し、管理ユーザがプライオリタイザ用の各種パラメータ値を構成することを可能にする。管理ユーザは、プライオリタイザの相対的なランキングを変更することもできる。このように、それほどプログラムに精通していないユーザが、プログラミング能力を要さずに、スケジューラの挙動をさらにカスタマイズすることを可能にする。少なくともいくつかの実施形態では、印刷ジョブの個々の特性に基づいて、プログラムで印刷ジョブを時間的に遅らせることや、または速めることができる。
【０００９】
さらに、少なくともいくつかの実施形態において、システムは、システム内の印刷キューの相対的な優先順位付け用のモデルを利用して、印刷キュー間のシステムリソースの適正な（または、管理者の裁量で偏った）バランスを課す。これによって、システムは、システム内のプリンタ全体でのジョブの負荷のバランスを適正に保たせることが可能になる。さらに、各種キュー全体の負荷を適正に判定するために使用する機構は、経験の少ないユーザがシステムの挙動をカスタマイズ可能な方式でプログラムすることも可能である。
【００１０】
当業者には理解されるように、少なくともいくつかの実施形態において、システムは、これ以上追加の処理が必要でないことを判定するために、Ｏ（１）の演算量を用いた動作を達成することができる。
【００１１】
少なくともいくつかの実施形態では、ジョブを印刷するときに、システムがレンダリング動作および印刷動作を個別にスケジューリングすることができる。これによって、システム内のＣＰＵとメモリの集約的なレンダリングタスクの数を制限しつつ、プリンタに印刷出力を送信するＩ／Ｏバウンドタスクの所望の装置スループットをシステムが達成することが可能になる。以下に説明する実施形態において、システムは、「スタベーションリスク」として周知のヒューリスティックを使用して、システム内のレンダリングを抑えることによって、確実に装置のスタベーションが生じないようにするのを助ける。
【００１２】
少なくともいくつかの実施形態では、システムは、自然なプーリングモデルの表現を可能とする。これによって、以下で明らかになるように、システムの正規ユーザと管理ユーザの両者が、特定のキューの印刷能力に影響を与える全ジョブを見ることが可能になる。
【００１３】
少なくともいくつかの実施形態では、システムは、別のジョブを印刷しなければならないか否かを判定するために、ＣＰＵ計算量Ｏ（１）を用い、また、スケジュール決定のためにＣＰＵ計算量Ｏ（Ｌｏｇ2Ｊ）＋Ｏ（Ｌｏｇ2Ｐ）を用いることで、これらの目的を達成する。ここでＪは１つのキュー内にあるジョブの数であり、Ｐはシステム内の物理プリンタの数である。例えば、２００個のキューおよび１００万個のジョブが均等に分散されたシステムにおいて、１つのスケジュール決定のために２億の比較を要する可能性がある現在のシステムに比べ、本システムは典型的に、２０の比較のみを利用して、１つのスケジュール決定を行う。
【００１４】
（例示的なクライアント装置コンポーネント／印刷サーバコンポーネント）
まず、各種実施形態を説明する前に、コンピューティング装置の説明を下記に提供する。当業者には理解されるように、このコンピューティング装置の各種コンポーネントを利用して、クライアントと印刷サーバの両方を実装することができる。
【００１５】
このようなコンピューティング装置として、図１は、下記の実施形態を利用できる例示的なコンピューティング装置を示す。説明するコンピューティング装置は、例示目的のみで提供されるものであり、特許請求した主題の適用を特定のコンピューティング装置１つのみに限定する意図はないことを理解されたい。
【００１６】
コンピューティング装置１４２は、１つまたは複数のプロセッサまたは処理装置１４４と、システムメモリ１４６と、システムメモリ１４６を含む各種システムコンポーネントを処理装置１４４に結合するバス１４８とを備える。バス１４８は、数種のバス構造のいずれかのうち１つまたは複数を表現し、メモリバスまたはメモリコントローラや、周辺バス、加速グラフィックス・ポート（ＡＧＰ）、様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む。システムメモリ１４６は、リードオンリメモリ（ＲＯＭ）１５０およびランダムアクセスメモリ（ＲＡＭ）１５２を備える。ＲＯＭ１５０には、立ち上げ時などに、コンピューティング装置１４２内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入／出力システム（ＢＩＯＳ）１５４が格納されている。
【００１７】
コンピューティング装置１４２は、ハードディスク（図示せず）から読取り、かつそこに書込むためのハードディスクドライブ１５６と、取外し可能な磁気ディスク１６０から読取り、かつそこに書込むための磁気ディスクドライブ１５８と、ＣＤ−ＲＯＭまたは他の光メディアなどの取外し可能な光ディスク１６４から読取りかつそこに書込むための光ディスクドライブとをさらに備える。ハードディスクドライブ１５６および磁気ディスクドライブ１５８、光ディスクドライブ１６２は、ＳＣＳＩインターフェース１６６または他の適切なインターフェースによってバス１４８に接続されている。これらのドライブおよびそれに関連付けられたコンピュータ読取可能な媒体は、コンピュータ読取可能な命令や、コンピュータ読取可能なデータ構造、コンピュータ読取可能なプログラムモジュール、さらにコンピュータ読取可能な他のデータの不揮発性ストレージをコンピュータ１４２に提供する。本明細書中で説明する環境例は、ハードディスクおよび、取外し可能な磁気ディスク１６０、取外し可能な光ディスク１６４を採用するが、磁気カセットや、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、さらにはリードオンリメモリ（ＲＯＭ）など、コンピュータによってアクセス可能であり、データを格納できる他種のコンピュータ読取可能な媒体を動作環境例で使用してもよいことを当業者は理解されたい。
【００１８】
ハードディスク１５６、磁気ディスク１６０、光ディスク１６４、ＲＯＭ１５０、またはＲＡＭ１５２には、多くのプログラムモジュールを格納することができ、このプログラムモジュールは、オペレーティングシステム１７０および、１つまたは複数のアプリケーションプログラム１７２（ユーザエージェントもしくはブラウザなど）、他のプログラムモジュール１７４、さらにプログラムデータ１７６を含む。キーボード１７８およびポインティングデバイス１８０といった入力装置を介して、ユーザはコンピュータ１４２にコマンドおよび情報を入力することができる。他の入力装置（図示せず）は、マイクロフォンまたは、ジョイスティックや、ゲームパッド、サテライトディッシュ、スキャナなどを備えることができる。これらおよび他の入力装置は、バス１４８に接続されたインターフェース１８２を通して処理装置１４４に接続されている。バス１４８には、ビデオアダプタ１８６などのインターフェースを介し、モニタ１８４または他種の表示装置も接続されている。モニタ１８４に加え、パーソナルコンピュータは、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）を典型的に備える。
【００１９】
コンピュータ１４２は通常、１つまたは複数のプリンタに順に接続される印刷サーバ１８８などの、１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作する。印刷サーバ１８８は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の共通ネットワークノードであってもよく、一般的にコンピュータ１４２に関連する上述した要素の多くまたはすべてを備える。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１９０およびワイドエリアネットワーク（ＷＡＮ）１９２から成る。このようなネットワーク環境はオフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットで通常のものである。
【００２０】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１４２は、ネットワークインターフェースまたはアダプタ１９４を通してローカルネットワークへ接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１４２は一般的に、モデム１９６またはインターネットなどのワイドエリアネットワーク１９２上に通信を確立するための他の手段を備える。内蔵または外付けモデム１９６がシリアルポートインターフェース１６８を介してバス１４８へ接続される。ネットワーク環境では、パーソナルコンピュータ１４２またはその一部に関連して示したプログラムモジュールがリモートメモリストレージ装置に格納されてもよい。示されたネットワーク接続は、例であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよいことが理解されよう。
【００２１】
一般に、コンピュータ１４２のデータプロセッサは、コンピュータ１４２の各種のコンピュータ読取可能な記憶媒体内に、異なる時に格納された命令によってプログラムされる。プログラムおよびオペレーティングシステムは一般的に、例えば、フロッピー（登録商標）ディスクまたはＣＤ−ＲＯＭ上に分散され、そこから、コンピュータの２次メモリにインストールまたはロードされる。実行時に、このプログラムおよびオペレーティングシステムは、コンピュータのプライマリメモリに、少なくとも一部がロードされる。本明細書で説明するシステムは、これらおよび他の各種のコンピュータ読取可能な記憶媒体が、説明したブロックを実装するための命令またはプログラムを含む場合に、マイクロプロセッサまたは他のデータプロセッサとの関連でこのような媒体を備える。説明したシステムは、本明細書で説明した方法および技法に従ってプログラムすれば、コンピュータそのものを備えることもできる。
【００２２】
図示するために、オペレーティングシステムなどのプログラムおよび他の実行可能なプログラムコンポーネントを本明細書では離散ブロックとして示しているが、このようなプログラムおよびコンポーネントは、コンピュータの異なるストレージコンポーネントに様々な時に常駐し、コンピュータのデータプロセッサによって実行されることが認められる。
【００２３】
（例示的な実施形態の概要および説明）
図２は、一実施形態による例示的なシステムのハイレベル図であり、システム２００で示す。以下の説明において、個々のオブジェクトを説明し、各オブジェクトの見出しの下にそのオブジェクトについてのプロパティおよび／または特徴のいくつかを記載する。これに続き、「ジョブの優先度の判定」というタイトルの節で、ある特定の印刷ジョブの優先度を表わす方法と優先順位付けプロセスにおけるプライオリタイザの役割を説明する。
【００２４】
前置きとはなるが、図２の具体的な実施例を説明する前に、次に説明する特定の具体的な実施例の基となる原理および考え方についての考察を以下で検討する。
【００２５】
特に、次の考察に、プライオリタイザまたはプライオリタイザオブジェクトという概念を説明する。プライオリタイザは、印刷システムをプログラム可能にするプログラマチック機構である。特に重要なのは、プライオリタイザがある特定の印刷ジョブに着目し、その印刷ジョブに関連付けられた重みまたは時間を生成することである。プライオリタイザのシーケンスを管理者が定義することができ、またプライオリタイザのこのシーケンスをある特定の印刷キューに関連付けることができる。そして、プライオリタイザのシーケンスは、ある特定の印刷ジョブのために、重み値および／または時間値を含むことができる値のベクトルであるタプルを生成する。システム管理者は、以下に説明するユーザインターフェースを介し、プライオタイザに構成データを提供することによって、各プライオリタイザを具体的に構成することができる。その後、ある特定の印刷ジョブのために生成したタプルをスケジューラオブジェクトによって解釈し、かつ処理して、印刷システム内の特定の印刷ジョブをスケジューリングすることができる。
【００２６】
動作原理では、ある特定の印刷キューの構成に従って印刷システムをプログラムしたいとシステム管理者が思った場合、ユーザインターフェース駆動のアプローチでは、システム管理者は、その特定のキュー用の１つまたは複数のプライオリタイザを単に選択する。各プライオリタイザのユーザインターフェースコンポーネントを使用することによって、システム管理者は、次に、このプライオリタイザをパラメータ化し、特定のキュー用のプライオリタイザに優先順位を割当てることができる。
【００２７】
図２の記述に戻ると、上述したばかりの原理を具現化した具体的なシステム２００が示されている。以下に記載するものは一例に過ぎず、特許請求した主題の適用をこの特定のシステムに限定する意図はないことが理解される。
【００２８】
従って、この例でシステム２００は、１つまたは複数のクライアント装置２４２および１つまたは複数の印刷サーバ２８８を含む。ここで、クライアント装置２４２および印刷サーバ２８８は、図１との関連で説明したコンポーネントと同じか、またはそれに類似したコンポーネントを含むことができる。しかし、簡潔にするために、図２の例ではこれらのコンポーネントを図示しない。
【００２９】
一実施例によると、クライアント装置２４２は、プライオリタイザユーザインターフェース２４４を備える。ユーザインターフェース２４４は、システム管理者（または他のユーザ）が、上述したようにプライオリタイザをプログラムするか、あるいは構成することが可能になるように構成される。図示して説明する実施形態では、ユーザインターフェース２４４は、カスタマイズされたユーザインターフェースを表示し、１つのプリンタまたは複数のプリンタ用の優先順位付けデータ（以下で説明）を表示する。プライオリタイザユーザインターフェースは、下記のメソッドをサポートする。
【００３０】
・Ｎａｍｅ−プライオリタイザユーザインターフェース２４４は、自身の論理ＩＤに加え、人間が読取ることのできる表示名を有する。
【００３１】
・ＡｐｐＣｏｍｐｏｎｅｎｔＩＤ−これはプライオリタイザユーザインターフェースの一意なコンポーネントＩＤである。
【００３２】
あるプライオリタイザを呼び出して、その初期構成データを取得するか、既存の構成を変更するかのどちらかを行うことができる。これらの動作は、各プライオリタイザをサポートするＧｅｔＣｏｎｆｉｇｕｒａｔｉｏｎコマンドおよびＣｈａｎｇｅＣｏｎｆｉｇｕｒａｔｉｏｎコマンドによってサポートされている。
【００３３】
図示して説明する実施形態では、印刷サーバ２８８は、次のオブジェクトのうち１つまたは複数を備え、それぞれのオブジェクトを以下で説明する。すなわち、それぞれのオブジェクトとは、スケジューラオブジェクト２５２および、印刷ジョブオブジェクト２５４、プリンタオブジェクト２５６、論理サーバオブジェクト２５８、優先順位オブジェクト２６０、プライオリタイザデータオブジェクト２６２、プライオリタイザオブジェクト２６８である。さらに、クライアント装置２４２および印刷サーバ２８８が通信できる機構をデータインターフェースコンポーネント２７０が提供する。適合するデータインターフェースおよびプロトコルのいずれをも利用することができる。
【００３４】
（スケジューラオブジェクト）
図示して説明する実施形態では、スケジューラオブジェクト２５２は、印刷ジョブを選択して特定のプリンタに送信する役割を担う。そうするために、スケジューラオブジェクト２５２は、プライオリタイザによって生成されるデータを処理する。
【００３５】
さらに、スケジューラオブジェクトは、以下に説明するように、印刷ジョブの優先度が確実に遵守されるようにする。さらに、スケジューラオブジェクトは、システム全体で所望のスループットを確保するために、印刷ジョブを管理する。このように、スケジューラオブジェクトは、全印刷装置に適切なデータを適切な時に提供して、どのような過度の遅れも防ぐ役割を与えられている。さらに、以下に説明するように、スケジューラオブジェクト２５２は、そのほかの点では優先度がジョブスタベーションにつながってしまった場合に、何らかのある程度の適正化を図ろうとする。
【００３６】
図示して説明する実施形態では、スケジューラオブジェクト２５２は、深刻なオーバーヘッドを引き起こさずに、多数の物理装置にある多数の印刷ジョブから選択できるよう構成される。一連の優先度を柔軟に維持することが望ましく、キューは、下記のプロパティを有する優先度キューのスキューヒープの実装に基づく。 
・挿入と除去の両方についてはＯ（ｌｏｇ2Ｎ）であり、
・侵害的な実装−挿入または除去にはメモリが必要ないので、キューからアイテムを挿入または除去することが常にできる。 
・スキューヒープは統計的に常にバランスを保っている。ベクトルベースのヒープを保障してバランスを保たせるが、機能するためには外部ベクトルが必要である。
【００３７】
所与の優先度に関して、システムは、印刷ジョブの先入れ先出し（ＦＩＦＯ）順のキューをその特定の優先度で維持する。これは、同じ優先度でジョブをスケジューリングすることに関するオーバーヘッドを軽減するのに役立つ。
【００３８】
さらに、一実施形態によると、システムは、優先度キューの３種類の論理型を維持する。すなわち、時間優先度キュー、プリンタ優先度キュー、およびリソースアービトレーションキューであり、各キューを図３で詳細に説明する。しかし、まず下記について考察する。
【００３９】
時間優先度キューとは、ジョブが再スケジューリングされるべき時間をキューの優先度として使用する優先度キューである。例えば、印刷装置がエラー状態になった場合、ジョブは、それが除去されるべき所望の時間（例えば５秒間）を優先度として有する時間キューの中に移る。この時間は、デルタ（または変更）として格納されず、むしろ絶対時間として格納され、スケジューラオブジェクト内の僅かな遅れによって引き起こされるドリフトを防ぐ。
【００４０】
プリンタ優先度キューとは、ある装置に対するキュー内の相対的な優先順位付けを表わすキューである。
【００４１】
リソースアービトレーションキューとは、プリンタキュー間で適正に負荷のバランスを保つことを目的とする複数のプリンタキューのうちの１つである。これらをすべて以下に詳細に記述する。
【００４２】
（印刷ジョブオブジェクト）
印刷ジョブオブジェクト２５４を作成し、ある特定の印刷出力要求を表現する。各印刷ジョブオブジェクトは、２つのコマンドをサポートする。すなわち、ＣｈａｎｇｅＰｒｉｏｒｉｔｙおよびＣｈａｎｇｅＳｃｈｅｄｕｌｅＴｉｍｅコマンドであり、これらのコマンドは、クライアントからはアクセス不可能である。
【００４３】
プライオリタイザオブジェクト（以下で説明する）がコマンドを呼び出して、関連するジョブの優先度またはスケジューリングされた時間を変更することができる。結果として、これらのコマンドを呼び出したとき、ジョブのスケジューリングキュー内でそのジョブが自動で移動する。両方のコマンドが新規の時間または優先度を取り、下記で明らかになるように、プライオリタイザの固有のコンポーネントＩＤ（以下で説明する）およびシステムが、これら両方のコマンドを使用して、優先度ｎ−タプルのどのフィールドを変更すべきかを解決する。
【００４４】
（プリンタオブジェクト）
プリンタオブジェクト２５６は、印刷システムにおけるスケジューリングの論理ユニットである。従って、プリンタオブジェクト２５６は、プライオリタイザ構成データを格納するオブジェクトでもある。図示して説明する実施形態において、１つのプリンタオブジェクトでは、１つの物理プリンタに対してインターフェースは１対１に対応する。
【００４５】
（論理サーバオブジェクト）
プライオリタイザオブジェクトは、１つの論理サーバにインストールされている。また、１つの論理サーバが、管理者によって作成された一連の優先順位を有する。１つの論理サーバオブジェクトを提供する理由の１つは、ある場合では、１つの物理サーバが単体で２つ以上の論理サーバを有することができるためである。例えば、１つの印刷クラスタが多数の論理サーバを有し、論理サーバは、管理者の判断か、または物理クラスタノードの欠陥のために、このクラスタにあるノード間を移動する。
【００４６】
（優先順位オブジェクト）
優先順位オブジェクト２６０を使用して、１つまたは複数のプライオリタイザオブジェクトのシーケンスの優先順位を定義する。図示および説明する実施形態では、１つのプライオリタイザが、１つのジョブに対し１つの重みの割当て、または時間内に転送するジョブのスケジューリングが可能である。キューにある重みに対応するデータと、いわゆるジョブチケットなどのジョブに関連付けられた他のデータとの両方によって、この重みをどのように判定するかをパラメータ化する。このキューのデータおよびプライオリタイザの相対的な優位度を管理者が変更することができる。例えば、通常のスタッフメンバーが提出したジョブに対し、幹部が提出したジョブを優先順位付けするプライオリタイザが１つあり、大きいジョブの優先度を低くする別のプライオリタイザが１つある場合、管理者は、＜Ｅｘｅｃｕｔｉｖｅ  Ｐｒｉｖｉｌｅｇｅ＞＜Ｌａｒｇｅ  Ｊｏｂ  Ｐｅｎａｌｔｙ＞という１つの優先順位と、＜Ｌａｒｇｅ  Ｊｏｂ  Ｐｅｎａｌｔｙ＞＜Ｅｘｅｃｕｔｅ  Ｐｒｉｖｉｌｅｇｅ＞という別の優先順位とを指定することができる。後者の優先順位では、幹部のジョブが大きくない場合のみ、そのジョブに優先権が与えられる。
【００４７】
図示および説明する実施形態では、常に１つの優先順位がある。この優先順位は、印刷する時間間隔と、ユーザが要求した優先度と、必須時間優先度と、デフォルトのグローバルな優先度ペナルティとだけを維持する。実装例では、これが、Ｗｉｎｄｏｗ（登録商標）ＮＴのプラットフォームによって現在実装されている印刷サーバとの互換性を維持する。さらに、優先順位オブジェクトは、必須時間可能性（ｍａｎｄａｔｏｒｙ  ｔｉｍｅ  ｃａｐａｂｉｌｉｔｙ）を付加し、デフォルト機構を提供して、キュー間の適正さを確保する。
【００４８】
（プライオリタイザデータオブジェクト）
プライオリタイザの構成は、ある特定の印刷キューに関連付けられる。この構成は、プライオリタイザのＸＳＤスキーマに一致する。図示して説明する実施形態では、所与のあるプライオリタイザが常に、１つのプリンタ／ジョブの組合せのために呼び出される。この特定例では、プライオリタイザデータオブジェクト２６２は下記のフィールドを有する。 
・ＰｒｉｏｒｉｔｉｚｅｒＩＤ−これは、対応するプライオリタイザに一意のＩＤであり、印刷システムが正しいプライオリタイザをそのデータに関連付けることを可能にする。 
・Ｄａｔａ−これは、プライオリタイザに格納されたＸＳＤスキーマに一致するＸＭＬ文書である。 
・ＳｈｏｕｌｄＢｕｍｐ−これはＢｏｏｌｅａｎフィールドであり、他のジョブをバンプするのにこのフィールドを使うべきか否かを記録する。あるジョブをバンプした場合、このフィールドの優先度がより高ければ、文書の印刷がすでに始まっていても、そのジョブを移動させ、除去する。
【００４９】
（プライオリタイザオブジェクト）
図示して説明する実施形態では、プライオリタイザオブジェクト２６８とはプラグ可能なコンポーネントであり、あるジョブに対する重みを割り当てることや、またはそのジョブを時間内に（無期限の可能性もある）転送することを延期することができる。プライオリタイザオブジェクトは、下記のプロパティを有する。 
・Ｎａｍｅ−プライオリタイザの表示名。これは、そのプライオリタイザの論理ＩＤとは異なり、典型的にＧＵＩＤまたは厳密名である。 
・Ｄａｔａ  Ｓｃｈｅｍａ−これは、プライオリタイザのデータの形式を記述するＸＳＤスキーマである。 
・ＵＩＣｏｍｐｏｎｅｎｔＩＤ−これは、プライオリタイザに対応するＵＩコンポーネントのＩＤである。プリンタ毎の優先順位付けデータの構成を表示する必要がある場合に、このコンポーネントをサーバからダウンロードすることができる。 
・Ｔｙｐｅ−これは、プライオリタイザが戻した値をどのように解釈すべきかを識別する列挙である。本実施形態において、Ｔｙｐｅとは、時間ブースト、時間ＦＩＦＯ、相対的またはグローバルな優先度効果を識別するものであり、それぞれ以下で説明する。
【００５０】
また、プライオリタイザオブジェクトは、ＪｏｂＣｈａｎｇｅ（）と呼ばれるメソッドをサポートする。このメソッドは、ジョブが到着した際にはいつでも印刷システムによって呼び出され、印刷システムがスプールを終了したときや、印刷を開始するときおよび印刷が終了したときにも印刷システムによって呼び出される。また、ジョブが経過する間の遅延時間または必須時間であるときはいつでも、このメソッドに通知される。プライオリタイザが他のイベントを知りたい場合、メソッドは、印刷システムのデータインターフェース通知機構を使用できる。
【００５１】
異なる型のプライオリタイザを複数使用でき、各プライオリタイザは、所望の結果を達成するよう指示された異なる一連の挙動を有することができる。図示および説明する下記の実施形態では、システムによってサポートされた異なる型のプライオリタイザが４つあり、すぐ次に続く章でそれぞれのプライオリタイザを詳細に説明するが、これらの特定の型のプライオリタイザは、特許請求された主題の適用の限定を意図するものではないことを理解されたい。
【００５２】
（ジョブの優先度の判定）
図示して説明する実施形態では、ある印刷ジョブの優先度を３つのデータで表現する。３つのデータとはすなわち、相対的な優先度タプル、グローバルな優先度効果、および保留カウントである。
【００５３】
相対的な優先度タプルとは、１組の数的な重みであり、例えば、［Ｗ１，Ｗ２，Ｗ３，Ｗ４］である。各重みは、プライオリタイザオブジェクトによって割当てられる。１つのキューに２つの印刷ジョブが投入された場合、各重みは、一方のジョブの相対的な優先度を判定するために、他方のジョブのタプルに対応する重みと比較される。
【００５４】
グローバルな優先度効果とは、単一の値であり、物理プリンタのグローバルな優先度にある特定の印刷ジョブを処理する効果を指示する。グローバルな優先度効果は、正または負の効果となり得る。例えば、幹部の印刷ジョブが優先度の高いブーストを割当てられる可能性があるが、そうでなければ、ジョブは、そのサイズによって決まるグローバルな優先度ペナルティを割当てられる可能性もある。キュー内の複数のプライオリタイザがグローバルな優先度効果を返した場合、その結果を合計して、ジョブの全体的な優先度効果を判定する。
【００５５】
保留カウントは、プライオリタイザにより使用されて、キュー内の印刷ジョブを保留し、それを後の段階で解除することができる。印刷ジョブの保留は、ジョブの優先度を判定するのに必要なデータが即座に分からない場合に役立つ可能性がある。例えば、プライオリタイザが１００Ｋより大きいジョブの優先度を低下させたい場合に、この閾値を越えるサイズまでキューにジョブを保留しなければならず、その後優先度を調整し、ジョブを解除することが可能となる。また、保留を用いて、ジョブを時間内で遅らせることもできる。これについては後で説明する。アクティブな保留はどれもジョブが印刷を行うのを妨げるので、保留カウントは、常にタプルの第１要素であると効果的である。従って、ジョブタプルを以下のように表現することができる。 
[HoldCount, W1, W2, W3, W4].
【００５６】
動作中、プライオリタイザオブジェクトに、その構成データとそれが優先順位付けしなくてはならないジョブとを渡す。その次にプライオリタイザは、その構成データおよび関連ジョブデータを処理し、重みおよび状態を戻す。状態は、次の情報を指示する。 
・成功−プライオリタイザは、このジョブの優先度を正しく判定。 
・保留−プライオリタイザは、このジョブを保留する必要がある。これは、ある時点で（保留を解除できる時点で）自動通知される時間プライオリタイザであるか、または何か他の状態でプライオリタイザにジョブを解除させる適切な変更通知をプライオリタイザが登録したことかのいずれかを示唆する。 
・エラー保留−プライオリタイザが、ジョブを正しく保留するのに十分なリソースを有していない。この効果は、プライオリタイザが保留を解除できるか、または他のリソースが利用できるようになりプライオリタイザを機能させることができるかを期待してプライオリタイザを定期的に呼び出す以外は、保留と同じである。 
・エラー−プライオリタイザに予想外のエラーが起きたら、プライオリタイザが後日成功するか分からないので、ジョブは削除される。
【００５７】
状態が保留（Ｈｏｌｄ）、エラー（Ｅｒｒｏｒ）、またはエラー保留（Ｅｒｒｏｒ  Ｈｏｌｄ）の場合に、プライオリタイザオブジェクトはまた、プライオリタイザユーザインターフェース２４４（図２）を介して表示できる、あるユーザ情報を戻す。このユーザ情報は、以下の情報を特定の印刷ジョブに関連付ける。 
・保留ＧＵＩＤ。ユーザインターフェースがＧＵＩＤを認識する場合、ユーザインターフェースは、クライアントのロケールにあるローカライズされた文字列をロードすることができる。 
・文字列パラメータの配列。ＧＵＩＤに関連付けられた文字列によってフォーマットされた場合に、この配列によって人間が読取り可能な説明が生成される。 
・フォールバック文字列。これは、クライアントがＧＵＩＤを認識しない場合、文字列を供給するサーバ側のリソースからロードされた文字列である。この文字列をまずクライアントロケール内で検索し、それからシステムロケール内で検索する。呼び出し側の言語をサーバ上で利用できない可能性があるのは理にかなっており、その場合メッセージをサーバのデフォルト言語で取り戻すことができる。
【００５８】
上述したように、プライオリタイザユーザインターフェース２４４は、印刷ジョブが保留状態の場合にこの情報を表示する。これは、ユーザのジョブがキュー内で保留される場合に、ユーザの混乱を減らすよう意図されたものである。例えばプライオリタイザが、午前２時から午前６時の間に印刷する大きな印刷ジョブを遅延させた場合、クライアントに戻されるユーザ情報は、次のメッセージをユーザに向けて表示させる。
【００５９】
「１０ＭＢを超えるサイズのため、午前２時から午前６時の間に印刷するジョブはキューに保留しました。説明が必要な場合は、システム管理者にお問い合わせください。」
上述したように、少なくとも一実施形態では、利用できるプライオリタイザに異なる４つの型がある。すなわち、相対的な優先度プライオリタイザ、グローバルな優先度プライオリタイザ、時間ＦＩＦＯプライオリタイザ、および時間ブーストプライオリタイザである。それぞれのプライオリタイザを個別に以下で説明する。
【００６０】
相対的な優先度プライオリタイザは、プライオリタイザの最も簡単なケースを構築する。相対的な優先度は、１組の重みであり、これを使用して、１つの印刷ジョブをもう１つの印刷ジョブに対しランク付けする。一実施形態では、番号の小さい方がより高い優先度を示唆する。よって、相対的な優先度０を持つ印刷ジョブは、相対的な優先度１を持つ印刷ジョブより高い相対的な優先度を有する。
【００６１】
グローバルな優先度効果プライオリタイザは、修飾子としてのグローバルな優先度効果を使用するものであり、この修飾子は、１つの物理プリンタのもう１つの物理プリンタに対する相対的な重みに影響を与える。例えば、１つのプリンタの相対的な重みへのペナルティを、印刷したページ毎に割当てることができる。このようにして、ある特定のプリンタに対し、大きいジョブは、小さなジョブより負の影響が大きくなる。
【００６２】
時間ＦＩＦＯプライオリタイザが時間フィールドを利用し、時間フィールドは、経過時間後の優先度を最重視するブーストをジョブが受信し、ＦＩＦＯの順位で処理することを可能にする。これを使用して、印刷ジョブのスタベーションを防ぐことができる。例えば、あるタプルを［Ｔｆｉｆｏ１，Ｐ１］と定義し、時間ＦＩＦＯを午後７時に設定した場合、印刷ジョブは、午後７時を過ぎると優先度が急上昇する。Ｐ１が大きなジョブにペナルティを付与する効果を有する場合、このことによって、大きなジョブがこの時間までキュー内でスタベーションした場合、その大きなジョブを最終的に印刷することが可能となる。その後、この閾値に到達した全ジョブがＦＩＦＯの順位で印刷される。
【００６３】
時間ブーストプライオリタイザとは、時間ブーストフィールドを利用するものであり、時間ブーストフィールドは、設定時間後のジョブの優先度を設定時間とする代わりに、設定時間後の優先度を０と設定する（０のほうが優先度は高いことを想起されたい）場合以外は、時間ＦＩＦＯフィールドと同じ方式で動作する。つまり、ある時間におけるジョブの優先権を増すのに時間ブーストを使用するが、ブーストを受信したジョブの順位を判定するには、残りの優先度フィールドも重要なのである。
【００６４】
図示および説明する実施形態において、システムは、時間フィールドを相対的な優先度フィールドとは若干異なる扱いをする。すなわち、プライオリタイザによって戻された時間はいずれも比較され、これから先においてもまだ最小である時間が確定された後で、この時間が経過するまでそのジョブを時間キューに置いておく。時間が経過すると、ジョブはプライオリタイザに戻って渡される。典型的にプライオリタイザはこの時点で、時間を再調整するか、保留を解除することが可能である。
【００６５】
一例として、以下を考慮する。以下のタプルを実装する１組のプライオリタイザを考慮する。 
[Tfifo, Pexec, Tboost, Psmall, Tdelay].
【００６６】
この例では、タプルの各コンポーネントを以下のように定義する。
【００６７】
【表１】
2006236337.tif 000003
【００６８】
Ｔｂｏｏｓｔの効果は、キューに１時間超保留した大きなジョブが、この時点で小さなジョブに対し優先度を急上昇することである。しかし、小さなジョブも長時間遅延させられた場合でも、まだ小さなジョブが大きなジョブを超える優先度を有する。Ｔｆｉｆｏの効果は、時間の終了時における時間ブーストと（ジョブが１００ＭＢより小さい場合に）提出したそのジョブのサイズとに係わらず、３時間を超えてキューに保留された場合に、いずれのジョブをも正確にＦＩＦＯの順位で印刷する（ジョブが１００ＭＢより大きくない場合）。１００ＭＢより大きいジョブは午前２時以降に印刷される。このように大きなジョブがキューに保留されたのが３時間未満でなければ（このようなことはめったにないが）、そのジョブはＦＩＦＯの順位で印刷される。
【００６９】
この例から理解できるように、プライオリタイザを利用して、印刷システムのプログラミングのために強力な機構を提供することができる。適切なプライオリタイザを選択し、それを適宜構成することによって、特定の印刷システムに合わせてカスタマイズして、その特定の印刷システムが有し得るいかなるニーズおよび需要にも一意的に見合う強力なツールがシステム管理者に与えられる。
【００７０】
（スタベーションリスク）
上述したように、少なくともいくつかの実施形態において、印刷システムを構成して、印刷を続行するためのデータを受信する必要がある印刷装置が、待っている大量のデータを有する印刷装置を超える優先度を受信する。
【００７１】
一実施形態によると、各キューは、＜Ｌｏｗ＞、＜Ｍｅｄｉｕｍ＞、および＜Ｈｉｇｈ＞という値を有し得る「スタベーションリスク」を維持する。スタベーションリスクは、所与のプリンタがアイドル状態となる程度を示したものである。スタベーションリスクデータは、装置スケジューラの上流にあるレンダリングコンポーネントが使用して、ジョブを優先付けする。レンダリングコンポーネントは、好適にレンダリングジョブを開始する。レンダリングジョブは、他のジョブの優先度に係わらず、他のキューよりスタベーションリスクが高いキューに移ることになっている。これを使用して、優先度の高いジョブがシステム内の他のジョブを常に無力にするのを防止する。よって、あるキューが優先度の高いジョブを数多く有する場合、そのキューは最終的に満杯となり、そのキューのスタベーションリスクは下がる。その時点で、そのキューのスタベーションリスクが他のキューのスタベーションリスクを超過するまで、他のキューはジョブを優先的に受信する。
【００７２】
任意の適切な方法を使用して、スタベーションリスクを計算できる。一実施形態を除き、プリンタのスループットをまず概算する。この概算は、ある時間間隔に亘るデータを装置が消費する割合をサンプリングした後で、この時間間隔のスループットを次のように計算することによってなされる。 
Rm = <Bytes Sent> / <Time Interval>.
【００７３】
しかし、当業者は理解するように、プリンタのバッファ（またはハードドライブ）は急速に満たされるが、ページの印刷は一般にずっと遅いので、プリンタのスループットはかなり変化し得る。そのため、装置のスループットの「バースト性」をならす何らかの方法があるはずである。
【００７４】
一実施形態によると、これは、消費率を最低率が最大値として計算することによってなされる。最低率は、特定のキューに定義され、望ましくは消費率履歴の認識を有する。数学的には、１つの調整可能なパラメータαを使用し、αが０（履歴がないことを表わす）と１（１つの履歴を表わす）との間の値を１つ有することができる。この調整可能なパラメータを以下の計算に組み込む。上述したように、この計算は、装置のスループットのバースト性を考慮した方式で消費率を計算する。 
Rn = max(αRn-1 + (1-α) Rm,Rmin)
【００７５】
装置に全くデータも送信されてこない場合、この計算は行われない。プリンタドライバまたは（印刷レンダリングドライバもしくはプロトコルアダプタなどの）プラグ可能な他のシステムコンポーネントまたは管理者は、装置を正しくモデル化するαの値を選ぶことができる。上の計算によって、特定のキューにある全ジョブの総バイトカウントを合計でき、この合計から、スタベーションまでの時間の概算を計算できる。すなわち、
Tstarvation = ByteCount/Rn
となる。
【００７６】
一実施形態によると、２つの時間間隔を定義し、ある特定の装置のスタベーションリスクを分類するのに使用する。概算したスタベーション時間が１番目の時間間隔を超過する場合、スタベーションリスクは、高から中に移動する。概算したスタベーション時間が２番目の時間間隔を超過する場合、スタベーションリスクは低と分類される。
【００７７】
一例として、次を考慮する。前の１秒で１０ＫＢ、次の１秒では５ＫＢを受け入れるプリンタで、αを０．８とすると、上で与えられた式による消費率の概算は、
0.8*10k + (1-0.8)*5kB.s-1
となり、
8+1 kB.s-1 = 9 kB.s-1
となる。現在のキューがその中に９００ｋＢのデータを有する場合、スタベーションまでの時間は、
= 900/9s = 100s
である。第１のスタベーションリスク間隔を１分とし、第２のスタベーションリスクを１０分とすると、この特定のキューは、中程度のスタベーションリスクを有すると分類される。
【００７８】
（スケジューリングキュー）
上述の考察に何らかの状況を提供するために、図３を手短に参照する。しかし図３について記述する前に、後に説明する図３の考察に関する何らかの状況を提供する以下のことを考慮する。
【００７９】
上記および下記の実施形態に従うと、当業者には理解されるように、各種キューを優先度キューとして実装することによって、スケジューリングシステムの効率が向上する。優先度キューとは、いずれの親も自分の子のいずれよりも小さくなければならないという基本ルールを有する論理ツリーを定義するデータ構造である。優先度キューがあれば、平均して、論理ツリーの要素の総数の数字のｌｏｇである要素の数字を見て、キュー内に要素を挿入できる。
【００８０】
この特徴によって、スケジューリングが非常に効率的になる。さらにこのことは、プライオリタイザがタプルを生成し、それを利用する理由でもある。特に、タプルによって、スケジューラが２つの特定のジョブを比較することが可能になり、この比較は、各ジョブのタプルを見た後に、この２つのジョブに適当に順位付けすることによってなされる。さらに、スケジューラがスタベーションリスクを要因の１つとしてとらえて考慮する場合に、非常に強力なスケジューリングパラダイムを提供する。
【００８１】
さて図３の例に戻ると、２つの装置キュー３００、３０２が示されている。この２つの装置キューはそれぞれ、１つの物理プリンタ対象のジョブのキューであり、装置キューのジョブは、上述のように順位付けされる。この例では、いくつかのジョブは、保留状態である。このため上述のように、保留状態であるジョブは、保留状態であるジョブより優先度は自動的に低くされる。上記の観点から理解されるように、優先度の低いジョブを即座に印刷することはできない。
【００８２】
個々の装置キューとは別に、印刷ジョブテーブル３０４が提供され、それがシステム上の全ジョブ（または全ジョブのインディシア）を格納する。あるジョブがプールされたプリンタ（プールされたプリンタについては以下に記述する）に実行依頼された場合、そのジョブは対象となる印刷キューのすべてに出現する。これは、２〜３の異なる理由からなされる。第一に、プールされたキューは、プールされた全装置のジョブをすべて含む効果的に仮想キューである。このようにキューを構成すると、同じリソースに関して争おうとする他のジョブは、それらのジョブがプールされた同じキューに送信されても送信されなくても、ユーザが調べることが可能になる。第二に、各物理プリンタが異なる優先順位を有することができ、各プリンタ用の各プライオリタイザが、異なる構成を有し得る。多くの場合、これは優先度タプルを複数の物理プリンタ全体で比較することが無意味であることを意味する。
【００８３】
さらに、ジョブを記述するタプルの諸要素のいずれも、これから先のある一時点を表わす場合、その諸要素は、時間キュー３０６に同時に置かれる。時間キュー３０６は、時間で順位付けされ、要素の絶対時間に従って要素を格納する。これによって、ジョブをキューから取り除くときに、そのジョブを処理することに起因するいかなる長期スキューも防ぐ。
【００８４】
当業者およびその他の業者に理解されるように、一般的に印刷システムは、固定された１組のリソースを有する。この特定例では、システムリソース３０８が、２つのディスクとＣＰＵと物理メモリとを備える。スケジューラ（例えば、図２のスケジューラ２５２）のタスクは、管理者が指定したように相対的な優先度を有するジョブを割当てることである。キューの相対的プライオリタイザがこれを行う。またスケジューラは、全てではないにしても多くの場合に、効率的なもので、利用可能なシステムリソースに従ってスケジューリングする最適な数のジョブだとスケジューラが考えるものを選ぼうとしなければならない。これは、システム全体のスループットに関しては、多数のジョブをスケジューリングするより、少数のジョブをスケジューリングする方がより効果的となり得るためである。例えば、あまりにも多くのジョブが、システムがページング動作を開始することをレンダリングする予定である場合、例えば上述した「スラッシング」などといったスケジューリングされたジョブが少ない場合よりシステム性能が悪化しかねない。同様に、非常に速いプリンタが３台あり、全プリンタが１つのディスクからデータを受信する場合、３つ目のジョブがスケジューリングされた場合に起こり得るディスクまたはヘッドの過剰な動きを減らすために、ジョブのうち２つだけをスケジューリングしたほうが現実的には速くなる可能性がある。
【００８５】
リソースの正確な数および種類は重要ではない。スプーラは、印刷可能となる前に、ジョブが取得しなければならないリソースの階層を維持する。ジョブが要するリソースは、何らかのヒューリスティックによって概算でき、その後測定することによって、使用中の実リソースを確認することができる。そして、ジョブは、何らかの所定の順位でリソースを取得し、ジョブが完了されるとそのリソースを解除する。この機構によって、スループットを軽減できるが、その結果デッドロックまたはライブロックが生じることはない。リソースの制約に係わらず、１つのジョブを印刷するようスケジューリングし、１つのジョブをレンダリングするようスケジューリングする。印刷に利用可能なジョブが、リソース上で第一の優先度を得る。レンダリングを要するジョブは、印刷準備が整ったジョブより低い優先度を有するが、前もってレンダリングされたジョブとレンダリングを要するジョブの両方をサーバが受信することもあるので、リソースは、レンダリングするために保留するリザーブを有する。使用されないレンダリングリザーブの部分のいずれも印刷ジョブに割当てられる。
【００８６】
システムリソースはマシンに対し必然的にグローバルであるが、キュー内のジョブの相対的な優先度は、キューにあるプライオリタイザの順位と，このプライオリタイザに供給される構成データとの両方で決まることをさらに考慮する。これは、異なるキューからのジョブの相対的な優先度を判定することが不可能でない場合には一般に困難である。あるマシンに優先順位と構成とが１つだけあるように義務付けることは可能であろうが、印刷サーバが移動またはマージされるか、または分散環境であるかを考慮し、印刷サーバが１つのノードから別のノードに移動し得ることを考慮した場合、このような義務付けは管理および維持することが非常に困難になる。各キューに何らかのシステムリソースをリザーブすることも可能ではあるが、このアプローチは、キューの負荷がバランスを保たない場合に、サーバ上のリソースを十分に活用できない。
【００８７】
一実施形態によると、この相対的な順位付けに関する課題を解決するために選ばれた解決策は、キューを相対的に優先順位付けするデータに続くピースを使用することである。このピースとはすなわち、キューの最上位ジョブにある保留の数、ジョブのスタベーションリスク、およびキューのグローバルな優先度のことである。
【００８８】
キューの最上位ジョブにある保留の数について、次を考慮する。あるキューの上位にあるジョブが保留である場合、そのジョブを処理しようとしても意味がない。キューのジョブのいずれもが保留でないのであれば、保留はジョブの順位を判定する際に常に最高の優先度になることから、ジョブはキューの最上位になることになる。
【００８９】
ある特定のジョブのスタベーションリスクについて、印刷サーバ内の他の適正さを全く考慮しない場合、ある特定の装置にスタベーションがリスクとしてあり、別の装置がそうでない場合、スタベーションがリスク状態にある装置が先にスケジューリングされる。
【００９０】
キューのグローバルな優先度（図３で「リソースアービトレーションキュー」３１０と呼ぶ）については、個々の印刷キューの優先度キューとして維持される。動作中、このグローバルな優先度キューは、ほとんどの汎用オペレーティングシステム内のスレッドまたは処理の優先度にいくつかの点が類似する。特に、各ジョブは１つのグローバルな優先度効果を有し、この効果の値は異なる因子に基づいて変化可能である。一実施形態では、グローバルな優先度効果のデフォルトの挙動は、ジョブ内のページ毎のグローバルな優先度の１ポイントを差し引くことである。さらに、グローバルな優先度効果は、ジョブの優先度を改善することもできる。例えば、「急ぎのジョブ」と定義されたカテゴリがあり、この場合、グローバルな優先度効果が大幅に自動で改善される。あるジョブがグローバルな優先度に負の影響を与える場合、そのジョブをスケジューリングした後に（つまり、キューがペナルティを付与されようとする原因のリソースをジョブが取った後に）この効果を計算する。キューにおいて現在処理しているジョブの負の優先度効果は、通常発生する正規化に係わりなく、ジョブを処理している間は常に有効である。さらに、グローバルな優先度リカバリという概念は、何らかの設定限度に達するまでの時間に亘りキューの優先度を徐々に改善することによって、提供されるものである。
【００９１】
各ジョブに関連付けることができるグローバルな優先度効果に加え、一実施形態によると、各キューが多数の構成パラメータを有することができる。本例では、これらの構成パラメータには、グローバルな優先度範囲、正規化率、および正規化時間間隔が制限なく含まれる。
【００９２】
グローバルな優先度範囲に関し、優先度が低ければ低い番号ほど、より高い優先度を受信する。ジョブの効果および優先度の正規化のいずれにも係わらず、キューの優先度がこの範囲に常に留まる。例えば、標準的な範囲を１０００から２０００とすることができる。管理者が他のキュー範囲を定義し、その範囲を使用して、あるキューの他のキューに対する優先度にペナルティを付与する、または優先度を上げることができる。例えば、管理者は、［０−１０００］という優先度範囲を１組のキューに割当てることが可能であり、このキューは常に、デフォルト範囲を有するキューに対する優先権を受信する。
【００９３】
正規化率とは、ある時間の間で優先度が正規化する割合のことを言う。デフォルトにおいては、各時間間隔につき１ポイント優先度の番号を小さくできる。
【００９４】
正常化時間間隔とは、正常化がおきるデフォルトの時間間隔のことを言う。例示的なデフォルトの間隔を１分間とすることが可能である。
【００９５】
（レンダラにおけるスケジューリング）
さて、レンダラと装置スケジューラ間の関係を考慮する。この２つのコンポーネントの各々は、独自の論理キューを有することが不可欠であって、レンダラに格納されたジョブは、クライアント装置または装置スケジューラに格納された対応するジョブとは論理的に異なるジョブである。これらの各キュー内の対応する印刷ジョブは、処理およびマシンの境界全体に一貫したジョブＧＵＩＤ（グローバル一意識別子）の長所によって関連付けられる。
【００９６】
動作時、レンダラは一般的に、（拡張メタデータ形式（ＥＭＦ）などの）中間形式で印刷ジョブデータを受信し、フィルタのパイプラインを介して中間形式を処理して異なる形式のデータを生成する。このデータは、スケジューリングし、かつ印刷装置へ提供するためにサーバに送信される。さらに、レンダラと装置スケジューラの特徴は非常に異なる。特に、装置スケジューラは、「Ｉ／Ｏバウンド」であると言える。これは、装置スケジューラが、プリンタがデータ要求に応答するのを実際に待つことが多いことを意味する。一方レンダラは一般的に、「ＣＰＵバウンド」である。これは、レンダラが、特定のコンピューティング装置が許可するのと同じくらい速くデータを処理し、そのデータを書き出すことを意味する。このため、２つの異なる種類のスケジューリングがこれらの各コンポーネントに関して発生することになるのはかなり論理的である。
【００９７】
一実施形態によると、ある特定のプリンタのスタベーションリスクを使用して、レンダリングアクティビティをコーディネートし、スタベーション状況が発生する見込みを減らす。より詳細には、レンダラは、ダウンストリームの物理プリンタがアイドル状態であるか、ジョブを開始しようとしている（つまり、スタベーションのリスクが高い）かのどちらかの場合、そのプリンタ用のジョブを優先的にスケジューリングする。すでにレンダリングされた大量のデータを有し、そのためスタベーションのリスクが低いプリンタにジョブが対象とされている場合、レンダラが、レンダリングするジョブをスケジューリングするのは優先的ではなくなる。
【００９８】
（印刷プール）
印刷プールとは、印刷キューと物理印刷装置間の多対多の関係を定義する機構である。すなわち、複数のプリンタに関連付けられ、かつデータを提供する１つの論理プリンタを印刷サーバが有することができる。
【００９９】
一例として、２つのプールされたプリンタを有する１つのシステムを示す図４を考慮する。プールされた各プリンタは、２つの物理プリンタに関連付けられ、各プリンタは対応する独自の印刷キューを有する。プールされた２つのプリンタの印刷キューは、各物理プリンタに関連付けられた印刷キューによって判定され、同様に物理プリンタは、各物理プリンタのスケジューリングキューと関連ポートのキャッシュされた装置キューとから判定される。この例では、「印刷キュー」と指定されたキューは、仮想キューである。
【０１００】
この例では、プールされた１つのプリンタから２つの物理プリンタに対してスケジューリングされた印刷ジョブを各物理プリンタと仮想プリンタプールの両方で視認可能である。さらに、特定のプールされたプリンタの印刷キューは、対応する各物理プリンタに関連付けられた印刷キューをマージすることによって判定される。
【０１０１】
（結論）
上述の印刷システムおよび方法によって、印刷ジョブの優先度をプログラム可能にすることができる。スケジューラコンポーネントが印刷ジョブの管理およびスケジューリングを監視し、プライオリタイザと呼ばれるコンポーネントと協働して、プログラミングおよびカスタマイズを容易にする。少なくともいくつかの実施形態では、システムにインターフェースを提供し、プライオリタイザをプログラムし、挿入して、異なる印刷ジョブのプロパティに従うスケジューラの挙動をカスタマイズすることを可能にする。少なくともいくつかの実施形態において、システムは、システム内の印刷キューの相対的な優先順位付け用のモデルを利用して、印刷キュー間でシステムリソースの適正なバランスを強化する。少なくともいくつかの実施形態では、ジョブを印刷するときに、システムがレンダリング動作および印刷動作を個別にスケジューリングすることができ、「スタベーションリスク」として周知のヒューリスティックを使用して、システム内のレンダリングを抑えることによって、確実に装置のスタベーションが生じないようにするのを助ける。
【０１０２】
構造的特長および／または方法論的ステップに特有の言葉で本発明を説明したが、添付請求項で定義された本発明を説明した特有の特徴またはステップに限定する必要はないことが理解されよう。むしろ、特有の特徴およびステップは、特許請求した本発明を実装する好適な形態として開示されている。
【図面の簡単な説明】
【０１０３】
【図１】１つまたは複数の実施形態を実装できるコンピューティング装置のハイレベル・ブロック図である。
【図２】一実施形態によるクライアント装置および印刷サーバの例示的なコンポーネントを示すブロック図である。
【図３】一実施形態による各種スケジューリングキューを含むスケジューリングシステムを示すブロック図である。
【図４】プールされたプリンタの概念を示すシステムのブロック図である。
【図１】
2006236337.tif 000004
【図２】
2006236337.tif 000005
【図３】
2006236337.tif 000006
【図４】
2006236337.tif 000007