JP2005092875A - スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法 - Google Patents

スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法 Download PDF

Info

Publication number
JP2005092875A
JP2005092875A JP2004237613A JP2004237613A JP2005092875A JP 2005092875 A JP2005092875 A JP 2005092875A JP 2004237613 A JP2004237613 A JP 2004237613A JP 2004237613 A JP2004237613 A JP 2004237613A JP 2005092875 A JP2005092875 A JP 2005092875A
Authority
JP
Japan
Prior art keywords
data
thread
application
device driver
computer
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
JP2004237613A
Other languages
English (en)
Other versions
JP2005092875A5 (ja
Inventor
Jeffrey C Fuller
シー.フラー ジェフリー
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005092875A publication Critical patent/JP2005092875A/ja
Publication of JP2005092875A5 publication Critical patent/JP2005092875A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Communication Control (AREA)

Abstract

【課題】 スレッドスケジューリングを使用して、高速I/Oモードの使用を増加させる、デバイスドライバからアプリケーションにデータを配信する。
【解決手段】 配信の用意ができているデータを格納するためのデータキュー内のデータ量が少ない場合、システムのスレッドスケジューリングは、デバイスドライバのスレッドを促進するように変更され、アプリケーションによって消費するためのより多くのデータをデータキューに入れる機会をデバイスドライバに与える。デバイスドライバのスレッドの促進は、アプリケーションスレッドから、必ずしもデバイスドライバスレッドとは限らない別のスレッドに切り替える、デバイスドライバスレッドの優先度を上げる、および/またはアプリケーションスレッドの優先度を下げることによって行うことができる。
【選択図】 図2

Description

本発明は、一般にコンピュータデータ処理に関し、より詳細には、アプリケーションによって処理するデータを提供する操作に関する。
データ入出力(I/O)は、1つのコンピュータ構成要素から別の構成要素にデータをわたすことを伴い、しばしばデジタル処理での限定要因またはネックとなっている。例えば、コンピュータ上で稼働するアプリケーションは、一般に、例えばカーネルモードなどより低レベルのデバイスドライバが、処理するためのデータをアプリケーションに送り込むことに依存している。したがってアプリケーションの性能は、アプリケーションがそのタスクを実行するのに必要なデータをドライバがどれぐらい効率的に提供することができるかに依存する。
従来、アプリケーションは、2つのモードでデータをデバイスドライバから受信することができる。第1のモードでは、アプリケーションは、要求されたデータが現在使用不可である場合、デバイスドライバからデータを受信する旨の要求を通知(post)する。アプリケーションはデバイスドライバが要求されたデータを提供するのを待たず、要求されたデータは、その後データが使用可能になったときにアプリケーションに配信されるという点で、この要求は非同期的に扱われる。第2のモードでは、データの要求は、同期的に処理される。この場合、要求されたデータは、すでにキューに入れられており、要求に応答して即座に配信されることが可能である。データの配信の非同期の方法は、一般にあまり好ましくない。というのは、データ要求を追跡するためにデータ構造を割り振り、初期化する必要があるため、処理およびメモリのかなりのオーバーヘッド、および非同期の完了のオーバーヘッドをまねくからである。これに対して同期モードでは、こうしたオーバーヘッドはないが、ドライバが、アプリケーションによるシステムコールに応答してピックアップするためにデータをすでにキューに入れていることが必要である。要求されたデータを配信する際に遅延がないため、同期モードは、Microsoft Windows(登録商標)プラットフォームでは「高速I/O」とも呼ばれる。ただし、他のプラットフォームでは、異なる用語を使用することもある。
同期方法は、オーバーヘッドをかなり低減し、即座にデータを配信する利点があるため、非同期方法の使用より同期方法の使用を増加させることが望ましい。
上記を鑑み、本発明は、スレッドスケジューリングを使用して、要求されたデータを即座に配信できる確率を向上させることによってアプリケーションへのデータの配信の同期処理、すなわち高速I/Oモードの使用を増加させる、デバイスドライバからアプリケーションにデータを配信するシステムおよび方法を提供する。アプリケーションが処理するためのデータを必要とするとき、アプリケーションに配信する用意ができているデータを格納するためにデバイスドライバによって使用されるデータキューがチェックされる。データキュー内のデータ量が少ない場合、システムのスレッドスケジューリングは、デバイスドライバのスレッドを促進するように変更され、それによってアプリケーションによって消費するためのより多くのデータをデータキューに入れる機会がデバイスドライバに与えられる。デバイスドライバのスレッドの促進は、アプリケーションスレッドから、必ずしもデバイスドライバスレッドとは限らない別のスレッドに切り替える、デバイスドライバスレッドの優先度を上げる、および/またはアプリケーションスレッドの優先度を下げるなどを含めて様々な方法で行うことができる。
図面を参照すると、図中、同様の参照番号は同様の要素を指しており、本発明は、適したコンピューティング環境で実施されるものとして示されている。必須ではないが、本発明を、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明する。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。さらに、本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施できることを当分野の技術者であれば理解できよう。本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリ記憶装置に置くことができる。
次の説明は、本発明を実施するために使用できる汎用コンピューティング装置の説明から始め、スレッドスケジューリングによって高速データI/Oを促進する本発明のシステムおよび方法を、図面2〜5を参照してより詳しく説明する。次に図1を参照すると、汎用コンピューティング装置を、処理ユニット21、システムメモリ22、およびシステムメモリを含む様々なシステム構成要素を処理ユニット21に結合するシステムバス23を含む従来のパーソナルコンピュータ20の形で示している。システムバス23は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。システムメモリは、読取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。基本入出力システム(BIOS)26は、例えば起動中など、パーソナルコンピュータ20内の要素間での情報の転送を助ける基本ルーチンを含み、ROM24に格納されている。パーソナルコンピュータ20は、ハードディスク60から読み取り、あるいはそこに書き込むハードディスクドライブ27、リムーバブル磁気ディスク29から読み取り、あるいはそこに書き込む磁気ディスクドライブ28、およびCD−ROMや他の光媒体など、リムーバブル光ディスク31から読み取り、あるいはそこに書き込む光ディスクドライブ30をさらに含む。
ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれハードディスクドライブインターフェイス32、磁気ディスクドライブインターフェイス33、および光ディスクドライブインターフェイス34によってシステムバス23に接続される。ドライブおよびその関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ20の他のデータの不揮発性記憶装置を提供する。本明細書に記載した環境の例は、ハードディスク60、リムーバブル磁気ディスク29、およびリムーバブル光ディスク31を使用するが、動作環境の例において、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ、読取り専用メモリ、ストレージエリアネットワークなど、コンピュータによってアクセス可能なデータを格納できる他のタイプのコンピュータ可読媒体を使用することもできることを当分野の技術者であれば理解されよう。
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含めて、いくつかのプログラムモジュールをハードディスク60、磁気ディスク29、光ディスク31、ROM24またはRAM25に格納することができる。ユーザは、コマンドおよび情報をキーボード40およびポインティング装置42などの入力装置を介してパーソナルコンピュータ20に入力することができる。図示はしていないが、他の入力装置には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているシリアルポートインターフェイス46を介して処理ユニット21に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)、ネットワークインターフェイスカードなど他のインターフェイスによって接続されていてもよい。モニタ47または他のタイプの表示装置もまた、ビデオアダプタ48などのインターフェイスを介してシステムバス23に接続される。パーソナルコンピュータは一般に、モニタに加えて、図には示していないがスピーカやプリンタなどの他の周辺出力装置を含んでいる。
パーソナルコンピュータ20は、リモートコンピュータ49など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルーター、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にパーソナルコンピュータ20に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置50のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN)52を含む。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、パーソナルコンピュータ20は、ネットワークインターフェイスまたはアダプタ53を介してローカルネットワーク51に接続される。WANネットワーキング環境で使用する場合、パーソナルコンピュータ20は一般に、モデム54、またはWAN52を介して通信を確立する他の手段を含む。モデム54は、内蔵のものでも外付けのものでもよく、シリアルポートインターフェイス46を介してシステムバス23に接続される。ネットワーク式環境では、パーソナルコンピュータ20に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
以下の説明では、特に指定のない限り、1つまたは複数のコンピュータによって実行される動作および操作の象徴を参照して本発明を説明する。したがって、コンピュータで実行されると言うこともあるこうした動作および操作は、コンピュータの処理単位による構造化された形式のデータを表す電気信号の操作を含むことは理解されよう。この操作は、データを変換し、またはコンピュータのメモリシステムのいくつかの場所にデータを維持し、このことは、当分野の技術者にはよく理解されているようにコンピュータを再構成し、そうでない場合はその動作を変更する。データが維持されるデータ構造は、データの形式で定義された特定の特性を有するメモリの物理位置である。しかし、本発明を上記の文脈で説明しているが、これに限定されるものではなく、以下に記載する様々な動作および操作をハードウェアでも実施できることを当分野の技術者であれば理解できよう。
図2を参照すると、本発明は、デバイスドライバ70からアプリケーション72へのデータのスループットを向上させるシステムおよび方法を対象にしている。デバイスドライバは、その機能を実行するためにアプリケーションによって要求されたデータを送り込む。アプリケーション72へのデータ配信の効率を向上させるために、デバイスドライバは、アプリケーションに即座に配信する用意ができているデータを格納するデータキュー76を維持する。図2に示すように、デバイスドライバ70は一般に、アプリケーション72よりコンピュータアーキテクチャのレベルが低い。例えば、デバイスドライバ70は、オペレーティングシステムのカーネルモードである可能性があり、一方アプリケーション72は、オペレーティングシステムのユーザモードで稼働する。デバイスドライバ70は、より低いレベルの別のドライバ80であるデータソースからデータを受信する可能性がある。データソースは、別のソースからデータを受信する可能性がある。例えば、図2に示した実施形態では、ドライバ80は、インターネットなどのネットワーク82からデータを受信する可能性がある。
デバイスドライバ70からアプリケーション72にデータを配信するには、アプリケーションによる消費のためにデータキュー76内に十分なデータがあるかどうかに応じて、2つのモードがある。「低速I/O」モードでは、データキュー76内に十分なデータがなく、アプリケーション72は、非同期データ配信を要求する。データは、その後デバイスドライバ70から使用可能になったときに、アプリケーション72に配信される。低速であることに加えて、非同期データ要求を追跡するためにデータ構造が割り振られ、初期化されなければならないため、このモードのデータ配信には、メモリおよび処理でのオーバーヘッドが高いという短所もある。これに対して「高速I/O」モードでは、アプリケーション72は、同期データ要求を通知し、要求されたデータがアプリケーションに即座に配信される。このモードのデータ配信は、非同期モードのオーバーヘッドのタイプをまねくことがない。さらに、アプリケーションによって必要とされるデータは、アプリケーションから即座に使用可能になる。アプリケーションは、必要なデータを有しているときにのみその機能を実行することができるため、アプリケーションの性能は、アプリケーションがデータを必要としているときにアプリケーションにどれだけ速くデータを配信することができるかに依存する。したがってアプリケーションの性能は、ほとんど常に高速I/Oモードでデータの配信が実行される場合、かなり向上される。当然、高速I/Oモードに必要な状態は、アプリケーション72によって要求されたデータが、アプリケーションによって消費できるように、データキュー76内にすでにあることである。
本発明の特徴によれば、高速I/Oのために十分なデータがデータキュー76内にある確率は、データキューに新しいデータを投入するより多くの機会をデバイスドライバ70に与えることによって向上し、このことは、スレッドスケジューリングによって達成される。図3を参照すると、高速I/Oモードでデータを配信できるのに十分なデータをデータキュー76が確実に含むようにするために、ステップ92でデータキュー76内のデータ量が時々チェックされる。このチェックは、例えば、アプリケーション72がより多くのデータを必要とするたびに、しかしアプリケーション72がデータ要求を発行する前に行うことができる。あるいは、チェックは、例えばドライバ80などのデータソースが、デバイスドライバのデータをより多く持つようになるたびに行うことができる。データキュー76内のデータの量が、例えば事前に選択された閾値より少ないなど、少なすぎることがステップ96で決定されると、コンピュータシステム上で稼働する構成要素のスレッドスケジューリングは、ステップ98で、デバイスドライバのスレッドを促進して、より多くのデータをデータキューに入れる機会をデバイスドライバに与えるように変更される。本明細書で使用する場合、デバイスドライバスレッドの「促進」とは、デバイスドライバスレッドが稼働される番になるのをより速くすることを意味する。デバイスドライバのスレッドが稼働されると、こうしたデータがソースから入手可能な場合、デバイスドライバ70は、ステップ100で、より多くのデータをデータキュー76に入れることができる。後にアプリケーションスレッドが稼働されると、アプリケーションは、ステップ102で、高速I/Oを介してデータキュー内のデータを取り出すことができる。
図2に戻ると、スレッドスケジューリングがどのように変更されるかは、オペレーティングシステムの実施に依存する。例えば、コンピュータの構成要素がスレッドスケジューリングでの優先度を変更する、または他のスレッドに切り替えるために呼び出すアプリケーションプログラミングインターフェイス(API)機能110を提供することができる。一実施形態では、アプリケーション72は、データを要求する前に、データキュー76内に十分なデータがあるかどうかをチェックする。データ量が少ないと見なされると、アプリケーションスレッドは、譲る(yield)というその意志をスレッドマネージャ120に知らせるためのAPI110の適切な機能を呼び出すことによって、プロセッサを別のスレッドに譲る。切り替えられる次のスレッドは、デバイスドライバスレッドでなくてもよいことに留意されたい。それでもやはり、そのスレッドを別のスレッドに単に譲ることによって、アプリケーションは、デバイスドライバスレッドに切り替えられる時間を加速し、データ要求を通知する前に、より多くのデータをキューに入れる機会をデバイスドライバに与える。
上述したように、アプリケーションスレッドから別のスレッドに切り替えることに加えて、デバイスドライバスレッドの促進は、デバイスドライバスレッドの優先度を上げる、またはアプリケーションスレッドの優先度を下げることによって行うこともできる。スレッドの優先度の上げ下げは、API機能の呼出によって行うことができる。一実施形態では、アプリケーション72またはデバイスドライバ70は、デバイスドライバスレッドの優先度を上げるためのAPI110を呼び出すことができる。あるいは、またはそれに加えて、デバイスドライバのデータソースは、図2の実施形態ではドライバ80であり、デバイスドライバスレッドの優先度を上げるためのAPIを呼び出すことができる。
スレッドスケジューリングを使用して高速I/Oを促進する効果を示すために、従来の同期処理の例、および高速I/Oの促進の例をそれぞれ図4および5に示している。こうした2つの例では、アプリケーションは、「App Pool」と呼ばれ、インターネットから受信されるWeb要求を満たす(serve)。この場合、App Poolによって処理されるデータは、Web要求の形である。Web要求をApp Poolに送り込む責任を負うデバイスドライバは、Http.sysドライバ126である。Http.sysドライバ126は、要求をインターネットから受信するトランスポートドライバインターフェイス(TDI)ドライバ128からWeb要求を受信する。TDIドライバ128は、Http.sysドライバによってピックアップされるネットワークから受信するWeb要求を格納するためのバッファ130を有する。同様に、Http.sysドライバ126は、App Pool122によってピックアップされる要求を格納するためのキュー136を有する。
図4に示した例では、本発明の高速I/Oの促進は実施されておらず、App Pool122は、それが処理するデータ、つまりWeb要求がキュー136内にないときに、従来の非同期データ要求を通知する。A〜Eとラベル付けされたキュー136およびバッファ130の連続した5つの状態を図4に示している。矢印138は、App Pool122、Http.sysドライバ126、またはTDIドライバ128のどれがプロセッサを有しているか、すなわちどれがそのスレッドを稼働させているかを示すために使用されている。したがって状態Aでは、App Poolスレッドが稼働している。App Pool122は、Web要求を受信しようとしたとき、キュー136が空であることを発見する。従来通り、App Pool122は、キュー136内に2つの「IRPの受信(receive IRPs)」を通知する。IRP(「I/O要求パケット」)は、データの非同期配信に使用するデータ構造である。状態Bでは、Http.sysスレッドが稼働する番である。Http.sysは、バッファ130から取り出すWeb要求を使用して通知された2つのIRPの受信を完了する。状態Cでは、Http.sysは、バッファ130内の残りのWeb要求をキュー136に移動させる。状態Dでは、App Poolスレッドが戻る。このとき、キュー136内には1つのWeb要求がある。App Poolが処理中、割り込み駆動されているTDIドライバ128は、より多くのWeb要求をバッファ130内に入れることができる。状態Eでは、App Poolは、高速I/Oを介してキュー136内のWeb要求のみを消費し、再度データ不足を被る。その間、TDIは、引き続きWeb要求をバッファに追加し続ける。
図5で示した例では、高速I/Oの促進が実施されている。図5は、A〜Cとラベル付けされた3つの状態を示している。App Poolは、呼の受信を行っているときに、キュー136内で常にデータ項目を見つけることが好ましい。Web要求がキュー136内にあるとき、呼の受信は、高速I/Oを介して即座に完了される。これは、App Poolがキュー136内のデータを使い果たすぎりぎりのときに、Http.sysが促進される場合、より頻繁に起こる可能性がある。状態Aで示すように、App Pool122は、キュー136をチェックし、キュー内にはわずかしかデータが残っていないことがわかる。これに応答して、App Pool122は、そのスレッドを譲り、Http.sysスレッドの優先度を上げて、Http.sysが稼働する可能性が高くなるようにする。状態Bでは、Http.sysスレッドが稼働し、Http.sysドライバは、バッファ130からキュー136にWeb要求を移動させる。状態CでApp Poolスレッドが戻ると、高速I/Oを介して取り出す十分なWeb要求がキュー136内にある。キュー136内の要求の数が再度少なくなると、App Poolスレッドは、別のスレッドに譲る。
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面を参照して本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものと見なされるべきではないことを理解されたい。したがって、本明細書に記載した本発明は、頭記の特許請求の範囲、およびその均等物の範囲内に含まれ得るすべての実施形態を含む。
本発明のディレクトリサービスのオブジェクト割り当て管理を実施できるコンピュータシステムの例を示す概略ブロック図である。 ドライバからアプリケーションにデータを配信する旨のデータ要求の同期処理、すなわち高速I/Oの使用を促進するために本発明の一実施形態を実施するコンピュータシステムを示す概略図である。 スレッドスケジューリングを使用して高速I/Oの使用を増加させる方法の概要を示すフロー図である。 デバイスドライバおよびそのデータキューの様々な状態を、非同期データ配信が従来の方法で使用される一例として示す概略図である。 デバイスドライバおよびそのデータキューの状態を、本発明の一実施形態によるスレッドスケジューリングの変更によって高速I/Oの使用を促進する効果の一例として示す概略図である。
符号の説明
20 コンピュータ
70 デバイスドライバ
72 アプリケーション
76 データキュー
80 ドライバ
82 ネットワーク(インターネット)
120 スレッドマネージャ

Claims (22)

  1. デバイスドライバからコンピュータ上で稼働しているアプリケーションにデータを配信するステップを行うコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
    前記デバイスドライバによって使用されるデータキュー内のデータをチェックして、前記アプリケーションへの同期配信の用意ができているデータ項目を格納するステップと、
    前記データキュー内のデータ量が閾値を超えている場合、前記アプリケーションに前記データキュー内のデータを同期的に配信するステップと、
    前記データキュー内のデータ量が閾値を下回っている場合、スレッドスケジューリングによって前記デバイスドライバのスレッドを促進させるステップと
    を含むことを特徴とするコンピュータ可読媒体。
  2. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記アプリケーションのスレッドを別のスレッドに譲るステップを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  3. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記デバイスドライバの前記スレッドの優先度を上げるステップを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  4. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記アプリケーションの前記スレッドの優先度を下げるステップを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  5. 前記アプリケーションに配信するためにデータ項目を前記デバイスドライバによって第2のドライバのバッファから前記データキューに移動させるステップを実行するコンピュータ可読命令をさらに有することを特徴とする請求項1に記載のコンピュータ可読媒体。
  6. 前記データ項目はWeb要求であることを特徴とする請求項1に記載のコンピュータ可読媒体。
  7. 第2のドライバによってインターネットからWeb要求を受信するステップと、
    前記受信されたWeb要求を前記第2のドライバによってバッファに格納するステップと、
    前記アプリケーションに同期配信するために前記バッファ内の前記Web要求を前記デバイスドライバによって前記データキューに移動させるステップと
    を実行するコンピュータ可読命令をさらに有することを特徴とする請求項6に記載のコンピュータ可読媒体。
  8. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記コンピュータのスレッドスケジューリングを変更するAPI機能を呼び出すステップを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  9. デバイスドライバからスレッドスケジューリングを実施するコンピュータ上で稼働するアプリケーションにデータを配信する方法であって、
    前記デバイスドライバによって使用されるデータキュー内のデータをチェックして、前記アプリケーションへの同期配信の用意ができているデータ項目を格納するステップと、
    前記データキュー内のデータ量が閾値を超えている場合、前記アプリケーションに前記データキュー内のデータを同期的に配信するステップと、
    前記データキュー内のデータ量が閾値を下回っている場合、スレッドスケジューリングによって前記デバイスドライバのスレッドを促進させるステップと
    を含むことを特徴とする方法。
  10. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記アプリケーションのスレッドを別のスレッドに譲るステップを含むことを特徴とする請求項9に記載の方法。
  11. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記デバイスドライバの前記スレッドの優先度を上げるステップを含むことを特徴とする請求項9に記載の方法。
  12. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記アプリケーションのスレッドの優先度を下げるステップを含むことを特徴とする請求項9に記載の方法。
  13. 前記アプリケーションに配信するためにデータ項目を前記デバイスドライバによって第2のドライバのバッファから前記データキューに移動させるステップをさらに含むことを特徴とする請求項9に記載の方法。
  14. 前記データ項目はWeb要求であることを特徴とする請求項9に記載の方法。
  15. 第2のドライバによってインターネットからWeb要求を受信するステップと、
    前記受信されたWeb要求を前記第2のドライバによってバッファに格納するステップと、
    前記アプリケーションに同期配信するために前記バッファ内の前記Web要求を前記デバイスドライバによって前記データキューに移動させるステップと
    をさらに含むことを特徴とする請求項14に記載の方法。
  16. 前記デバイスドライバの前記スレッドを促進する前記ステップは、前記コンピュータのスレッドスケジューリングを変更するAPI機能を呼び出すステップを含むことを特徴とする請求項9に記載の方法。
  17. コンピュータシステムのスレッドスケジューリングを管理するスレッドマネージャと、
    データ項目を処理するアプリケーションと、
    前記アプリケーションに配信する用意ができているデータ項目を格納するデータキューと、
    前記アプリケーションに配信する用意ができているデータ項目を前記データキューに格納する、前記アプリケーションに前記データ項目を転送するデバイスドライバと
    を含み、前記アプリケーションは、前記データキューをチェックし、前記データキュー内のデータ量が閾値を超えると、前記データキューに格納されているデータ項目を同期的に受信し、前記データキュー内のデータ量が前記閾値を下回ると、前記デバイスドライバのスレッドを促進するようにプログラムされている
    ことを特徴とするコンピュータシステム。
  18. 前記アプリケーションは、前記アプリケーションのスレッドを別のスレッドに譲ることによって前記デバイスドライバの前記スレッドを促進することを特徴とする請求項17に記載のコンピュータシステム。
  19. 前記アプリケーションは、前記デバイスドライバのスレッドの優先度を上げることによって前記デバイスドライバの前記スレッドを促進することを特徴とする請求項17に記載のコンピュータシステム。
  20. 前記アプリケーションは、前記アプリケーションのスレッドの優先度を下げることによって前記デバイスドライバの前記スレッドを促進することを特徴とする請求項17に記載のコンピュータシステム。
  21. 前記アプリケーションによって処理されるデータ項目を受信し、前記デバイスドライバによって取り出すために、前記受信されたデータ項目をバッファ内に入れる第2のドライバをさらに含むことを特徴とする請求項17に記載のコンピュータシステム。
  22. 前記コンピュータシステムのスレッドスケジューリングを変更するAPI機能をさらに含み、前記アプリケーションは、前記装置ドライブの前記スレッドを促進するために前記API機能を呼び出すことを特徴とする請求項17に記載のコンピュータシステム。
JP2004237613A 2003-08-29 2004-08-17 スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法 Pending JP2005092875A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/652,709 US7690003B2 (en) 2003-08-29 2003-08-29 System and method for increasing data throughput using thread scheduling

Publications (2)

Publication Number Publication Date
JP2005092875A true JP2005092875A (ja) 2005-04-07
JP2005092875A5 JP2005092875A5 (ja) 2007-09-27

Family

ID=34217711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004237613A Pending JP2005092875A (ja) 2003-08-29 2004-08-17 スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法

Country Status (5)

Country Link
US (1) US7690003B2 (ja)
EP (1) EP1536334A3 (ja)
JP (1) JP2005092875A (ja)
KR (1) KR20050021312A (ja)
CN (1) CN100424647C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015515702A (ja) * 2012-04-23 2015-05-28 マーベル ワールド トレード リミテッド ピアツーピア(p2p)デバイスの間のスループットを向上させるためのスレッド優先度の調節

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8126861B2 (en) * 2004-01-02 2012-02-28 Cerner Innovation, Inc. System and method for managing large data sets
ITUD20050209A1 (it) 2005-12-09 2007-06-10 Eurotech Spa Metodo per l'individuazione di affinita' tra soggetti e relativo apparato
KR101282139B1 (ko) 2006-09-11 2013-07-04 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한컴퓨터시스템 및 그 제어방법
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
KR20080064608A (ko) * 2007-01-05 2008-07-09 삼성전자주식회사 SPI(Simple PriorityInheritance) 방식에 따른 멀티태스킹 방법 및임베디드 시스템
DE102007028730A1 (de) * 2007-06-21 2008-12-24 Siemens Ag Verfahren und Vorrichtung zum Betreiben eines technischen Systems
CN101436146B (zh) * 2008-12-15 2012-05-09 中兴通讯股份有限公司 动态调节远程设备管理进程的优先级的方法及系统
US7975047B2 (en) 2008-12-19 2011-07-05 Oracle International Corporation Reliable processing of HTTP requests
US9218211B2 (en) * 2009-01-02 2015-12-22 International Business Machines Corporation Priority promotion for service requests
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
CN102298580A (zh) 2010-06-22 2011-12-28 Sap股份公司 使用异步缓冲器的多核查询处理
EP2405353B1 (en) * 2010-07-07 2017-11-22 Sap Se Multi-core query processing using asynchronous buffers
CN101937465B (zh) * 2010-09-10 2013-09-11 中兴通讯股份有限公司 分布式文件系统及其中的上层文件系统的访问方法
US8677361B2 (en) * 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
KR101397592B1 (ko) 2012-03-21 2014-05-20 삼성전자주식회사 멀티미디어 콘텐츠를 수신하기 위한 방법 및 장치
US9411637B2 (en) * 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
CN103838547B (zh) * 2012-11-27 2018-05-11 中国电信股份有限公司 一种队列的管理方法和装置
KR101321430B1 (ko) * 2013-01-23 2013-10-28 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한 컴퓨터시스템 및 그 제어방법
US9563474B2 (en) 2013-06-13 2017-02-07 Wipro Limited Methods for managing threads within an application and devices thereof
KR101380747B1 (ko) * 2013-07-16 2014-04-02 삼성전자주식회사 별도 버튼을 이용하여 성능모드 변경이 가능한 컴퓨터시스템 및 그 제어방법
CN104298617B (zh) * 2014-08-20 2017-12-08 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
SG11201806092TA (en) 2016-03-01 2018-08-30 Ascendis Pharma Bone Diseases As Pth prodrugs
WO2018011266A1 (en) 2016-07-13 2018-01-18 Ascendis Pharma A/S Conjugation method for carrier-linked prodrugs
CA3037447A1 (en) 2016-09-29 2018-04-05 Ascendis Pharma Bone Diseases A/S Pth compounds with low peak-to-trough ratios
MA46428A (fr) 2016-09-29 2019-08-07 Ascendis Pharma Bone Diseases As Schéma posologique incrémentiel dans des composés de pth à libération contrôlée
WO2018060310A1 (en) 2016-09-29 2018-04-05 Ascendis Pharma Bone Diseases A/S Dosage regimen for a controlled-release pth compound
AU2017336253B2 (en) 2016-09-29 2023-02-23 Ascendis Pharma Growth Disorders A/S Combination therapy with controlled-release CNP agonists
CA3055985A1 (en) 2017-03-22 2018-09-27 Genentech, Inc. Hydrogel cross-linked hyaluronic acid prodrug compositions and methods
KR101889749B1 (ko) 2017-07-21 2018-09-20 주식회사 티맥스데이터 메시지 스케줄링 방법
JP7490563B2 (ja) 2018-03-28 2024-05-27 アセンディス ファーマ オンコロジー ディヴィジョン エー/エス Il-2コンジュゲート
EP3773681A1 (en) 2018-03-28 2021-02-17 Ascendis Pharma A/S Conjugates
MX2020012179A (es) 2018-05-18 2021-01-29 Ascendis Pharma Bone Diseases As Dosis inicial de conjugados de hormona paratiroidea (pth).
WO2020064844A1 (en) 2018-09-26 2020-04-02 Ascendis Pharma A/S Treatment of infections
JP7383703B2 (ja) 2018-09-26 2023-11-20 アセンディス ファーマ エー/エス 新規ヒドロゲルコンジュゲート
AU2019348440A1 (en) 2018-09-26 2021-03-25 Ascendis Pharma A/S Degradable hyaluronic acid hydrogels
MX2021007707A (es) 2019-01-04 2021-08-05 Ascendis Pharma Oncology Div A/S Niveles de farmacos locales sostenidos para los agonistas inmunitarios innatos.
CA3125541A1 (en) 2019-01-04 2020-07-09 Ascendis Pharma Oncology Division A/S Minimization of systemic inflammation
JP2022516308A (ja) 2019-01-04 2022-02-25 アセンディス ファーマ オンコロジー ディヴィジョン エー/エス パターン認識受容体アゴニストのコンジュゲート
US20220054477A1 (en) 2019-01-04 2022-02-24 Ascendis Pharma Oncology Division A/S Induction of sustained local inflammation
CA3129357A1 (en) 2019-02-11 2020-08-20 Ascendis Pharma Bone Diseases A/S Liquid pharmaceutical formulations of pth conjugates
CA3143278A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Tyrosine kinase inhibitor conjugates
WO2020254613A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Controlled-release tyrosine kinase inhibitor compounds with localized pk properties
WO2020254617A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Anti-ctla4 compounds with localized pk properties
WO2020254607A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Anti-ctla4 compounds with localized pd properties
WO2020254612A1 (en) 2019-06-21 2020-12-24 Ascendis Pharma Oncology Division A/S Controlled-release tyrosine kinase inhibitor compounds with localized pd properties
US20220305136A1 (en) 2019-06-21 2022-09-29 Ascendis Pharma Oncology Division A/S Anti-ctla4 conjugates
EP4090357A1 (en) 2020-01-13 2022-11-23 Ascendis Pharma Bone Diseases A/S Hypoparathyroidism treatment
EP4161956A1 (en) 2020-06-03 2023-04-12 Ascendis Pharma Oncology Division A/S Il-2 sequences and uses thereof
US20230340055A1 (en) 2020-08-28 2023-10-26 Ascendis Pharma Oncology Division A/S Glycosylated il-2 proteins and uses thereof
US20230364199A1 (en) 2020-09-28 2023-11-16 Ascendis Pharma Bone Diseases A/S Improvement of physical and mental well-being of patients with hypoparathyroidism
AU2022246997A1 (en) 2021-04-01 2023-09-28 Ascendis Pharma A/S Use of long-acting growth hormone for treating inflammation-induced diseases
JP2023009354A (ja) * 2021-07-07 2023-01-20 富士通株式会社 演算処理装置および演算処理方法
IL311539A (en) 2021-09-22 2024-05-01 Ascendis Pharma Bone Diseases As Long-term PTH compound treatments

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773090A (ja) * 1993-06-21 1995-03-17 Hitachi Ltd 計算機システムおよび二次記憶装置
JPH07334403A (ja) * 1994-06-09 1995-12-22 Sony Corp ファイル管理方法およびこれを使用した画像データ処理装置
JP2001014177A (ja) * 1999-06-30 2001-01-19 Fujitsu Ltd 非同期データ入出力処理方法およびそのプログラム記録媒体
JP2002529850A (ja) * 1998-11-09 2002-09-10 インテル コーポレイション システムにおける要求のスケジューリング

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5060140A (en) * 1986-01-16 1991-10-22 Jupiter Technology Inc. Universal programmable data communication connection system
GB8814633D0 (en) * 1987-11-18 1988-07-27 Ibm Bus flow control mechanism
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US5812844A (en) * 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US5875329A (en) * 1995-12-22 1999-02-23 International Business Machines Corp. Intelligent batching of distributed messages
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6289369B1 (en) * 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6578065B1 (en) * 1999-09-23 2003-06-10 Hewlett-Packard Development Company L.P. Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
US6880017B1 (en) * 2000-03-20 2005-04-12 International Business Machines Corporation System and method for providing an adaptive streaming flow control mechanism between the TCP and IP layers of the TCP/IP suite of protocols
DE10291762B4 (de) * 2001-04-25 2014-07-10 Sony Corporation Datenübertragungsverfahren und Datenübertragungsgerät zum Übertragen von Datenstromdaten
US7286549B2 (en) * 2002-10-30 2007-10-23 Intel Corporation Method, system, and program for processing data packets in packet buffers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773090A (ja) * 1993-06-21 1995-03-17 Hitachi Ltd 計算機システムおよび二次記憶装置
JPH07334403A (ja) * 1994-06-09 1995-12-22 Sony Corp ファイル管理方法およびこれを使用した画像データ処理装置
JP2002529850A (ja) * 1998-11-09 2002-09-10 インテル コーポレイション システムにおける要求のスケジューリング
JP2001014177A (ja) * 1999-06-30 2001-01-19 Fujitsu Ltd 非同期データ入出力処理方法およびそのプログラム記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015515702A (ja) * 2012-04-23 2015-05-28 マーベル ワールド トレード リミテッド ピアツーピア(p2p)デバイスの間のスループットを向上させるためのスレッド優先度の調節

Also Published As

Publication number Publication date
EP1536334A3 (en) 2007-09-05
CN100424647C (zh) 2008-10-08
EP1536334A2 (en) 2005-06-01
KR20050021312A (ko) 2005-03-07
CN1595361A (zh) 2005-03-16
US7690003B2 (en) 2010-03-30
US20050050552A1 (en) 2005-03-03

Similar Documents

Publication Publication Date Title
JP2005092875A (ja) スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法
US6981051B2 (en) Adaptive flow control protocol
CA2697155C (en) Allocating network adapter resources among logical partitions
US8195798B2 (en) Application server scalability through runtime restrictions enforcement in a distributed application execution system
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
US8307053B1 (en) Partitioned packet processing in a multiprocessor environment
US6457064B1 (en) Method and apparatus for detecting input directed to a thread in a multi-threaded process
US20020007420A1 (en) Adaptive flow control protocol
JP5752111B2 (ja) マルチプロセッサ・コンピューティング装置
US7668175B2 (en) Dynamic power management for I/O resource pools
US11005970B2 (en) Data storage system with processor scheduling using distributed peek-poller threads
KR20130138146A (ko) 적응형 프로세스 중요도
EP3598310B1 (en) Network interface device and host processing device
US11061841B2 (en) System and method for implementing a multi-threaded device driver in a computer system
US7765548B2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
US6993598B2 (en) Method and apparatus for efficient sharing of DMA resource
CN111857992A (zh) 一种Radosgw模块中线程资源分配方法和装置
US7581045B2 (en) Method, system, and article of manufacture for mapping programming interfaces
US20220222013A1 (en) Scheduling storage system tasks to promote low latency and sustainability
US9898405B2 (en) Working set adjustment in a managed environment
US8607245B2 (en) Dynamic processor-set management
US20050050550A1 (en) Method and system for moderating thread priority boost for I/O completion
JP2003330873A (ja) 情報処理装置及び入出力方法並びにプログラム
US20170357540A1 (en) Dynamic range-based messaging
US20230153031A1 (en) Storage device supporting multi-host and operation method thereof

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070809

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100305

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100803