JP6529678B2 - アプリケーションの実行を加速する方法及びデバイス - Google Patents

アプリケーションの実行を加速する方法及びデバイス Download PDF

Info

Publication number
JP6529678B2
JP6529678B2 JP2018534086A JP2018534086A JP6529678B2 JP 6529678 B2 JP6529678 B2 JP 6529678B2 JP 2018534086 A JP2018534086 A JP 2018534086A JP 2018534086 A JP2018534086 A JP 2018534086A JP 6529678 B2 JP6529678 B2 JP 6529678B2
Authority
JP
Japan
Prior art keywords
application
data
order
execution
data parts
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.)
Active
Application number
JP2018534086A
Other languages
English (en)
Other versions
JP2018538637A (ja
Inventor
べック シクステン
べック シクステン
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.)
DACS Laboratories GmbH
Original Assignee
DACS Laboratories GmbH
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 DACS Laboratories GmbH filed Critical DACS Laboratories GmbH
Publication of JP2018538637A publication Critical patent/JP2018538637A/ja
Application granted granted Critical
Publication of JP6529678B2 publication Critical patent/JP6529678B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1724Details of de-fragmentation performed by the file system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、第1の態様によれば、アプリケーションの実行の方法に関する。第2の態様によれば、本発明はデータパーツを送信する方法に関する。第3の態様によれば、本発明はデータパーツの格納に関する。更なる態様によれば、本発明は、更に、デバイス及びコンピュータプログラムに関する。
上述の種類の一般的な方法、具体的にはアプリケーションの実行の方法、は、従来技術から知られている。
アプリケーションの起動処理中に、アプリケーションが最終的にユーザによる対話的使用のための準備ができる前に、数秒もしくは数分、又はアプリケーションがインターネットなどのネットワークを介してサーバから最初にダウンロードされる必要がある場合は、数時間さえも、経過する可能性がある。しかしながら、一般的に、ユーザは選択したアプリケーションをできるだけ早く使用することを望んでいるであろうし、これは、起動処理はできるだけ短くすべきであることを意味する。
更に、最近では、実行可能アプリケーションがもはやデータ媒体で配布されず、ネットワーク、一例としてインターネット、を介して配布されるので、実行可能アプリケーションを転送する必要が益々頻繁に生じている。この場合にも、アプリケーションを開始するまでの時間が短いことが達成されることが確実になるように、多くのアプローチが取られてきた。
1つの例はビデオストリーミングと呼ばれるものであり、アプリケーションはサーバ上で実行され、オーディオ及びビデオストリームのみが、アプリケーションが使用されることが意図されているクライアントに転送される。
しかしながら、これに関する欠点は、待ち時間が或る状況において長すぎて、サーバから離れたクライアント上でアプリケーションを満足に、特に流動的に、使用することを可能にすることができないことである。一例として、帯域幅が十分ではない可能性があるか又は特にインターネットを介する転送では、数百ミリ秒までの待ち時間が発生する可能性がある。加えて、オーディオ及び/又はビデオストリームの形態でのデータの連続転送が必要であり、これはクライアントが連続的にオンラインである必要があることを意味する。
これらの欠点に対処するために、アプリケーションがサーバによって必要に応じてクライアントに提供されるアプリケーションストリーミングとして知られているものが使用されている。しかしながら、アプリケーションはサーバ上のビデオストリーミングと同様には実行されずに、オーディオ及び/又はビデオデータのみがクライアントに転送されることになり、どちらかと言えば、アプリケーション自体は転送され、クライアントによってローカルに実行される。アプリケーションがクライアント上でローカルに実行されるので、サーバのパフォーマンスはアプリケーションの実行のために設計される必要はない。加えて、長い待ち時間は問題にならないか又は無関係ですらある。
従って、アプリケーションが、最初にインターネットなどのネットワークを介してリモートサーバからダウンロードされる必要がある場合、アプリケーションが最終的にユーザによって対話的に使用されることができるまでに実際には数時間がかかる可能性がある。
この特定の欠点に対処するために、従来技術から、一例として、アプリケーションを開始するまでの時間が最終的に短縮されるように、アプリケーションのダウンロード及びインストールに必要な時間を短縮することが知られている。この目的のために、例えば、ソフトウェアタイトルのブロックが、実行可能な閾値に到達するまでダウンロードされることができる。その後、ソフトウェアタイトルは実行されることができ、ソフトウェアタイトルの更なるブロックのダウンロードは、ソフトウェアタイトルが実行されている間、継続されることができる。
このようにして、具体的にはアプリケーションがリモートサーバからダウンロードされる必要がある場合に、アプリケーションを開始する前及びそれまでの時間を短縮することができる。しかしながら、(部分的な)ダウンロードに続いて、その後アプリケーションは、ユーザのローカルメモリ、一例としてユーザのハードディスク、に通常通り格納される。この点に関して、最良の場合のシナリオでは、アプリケーションの実際の起動処理は、ローカルにインストールされたアプリケーションと同じくらい速いだけであろう。これは、この場合も、必要なデータが既にローカルに利用可能であるにもかかわらず、アプリケーションの起動には、ユーザが対話的にアプリケーションを使用することができるまでに、まだ数秒又は数分かかることを意味している。
しかしながら、上述のように、アプリケーションの起動までの時間を短縮することだけでなく、実行自体及び特に実際の起動自体を加速することにも関心がある。コンピュータゲームの場合、コンピュータゲームの起動時に、ユーザ又はゲーマーは、コンピュータゲームがやっと再生されるまで、一例として、ビデオシーケンスによって気をそらされることが多い。この点に関して、アプリケーション起動自体の短縮も望ましい。これは他のアプリケーションにも同様に適用される。それは、また、アプリケーションストリーミングを介してユーザに利用可能にされるアプリケーション及びローカルにユーザに既に利用可能であるアプリケーションの両方に適用される。
従って、本発明の目的は、アプリケーションの実行、具体的には起動、の加速を可能にする意図で、一般的な方法、デバイス、及びコンピュータプログラムを示すことである。
第1の態様によれば、本発明は、少なくとも1つのデバイスによって遂行されるアプリケーションを実行する方法に関し、前記方法は、
− データメモリからアプリケーションの実行に必要なデータパーツを提供するステップであって、データパーツは少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されるステップ、
を備える。
本発明は、データパーツがデータメモリから提供されるとき、データパーツが特定の順序で、すなわち、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されているという事実を利用する。これは、アプリケーションの必要なデータパーツを通常より早く定常的に利用可能にすることができ、具体的には、アプリケーションの起動処理が、プログラムがローカルに既にインストールされているか又は最初にリモートサーバからダウンロードされる必要があるかどうかにかかわらず、劇的に加速することができることを意味する。従って、具体的には、アプリケーションの実行を加速する方法が提供される。
ここで、データメモリは、一例として、ほんの数例を挙げると、ハードディスク、ソリッドステートディスク(SSD)、作業メモリ(RAM)、又は外部ドライブによって提供されることができる。
しかしながら、アプリケーションがデータメモリ(例えばハードディスク上)に従来の仕方で格納されている場合、データメモリ内の個々のデータパーツの順序は、一例として、ファイルの所属又はフォルダ構造に依存する。更に、データパーツは断片化された形態で存在することが多く、それはアプリケーションの実行を更に遅くする。断片化は、何よりも使用されている実際のファイルシステムに起因する可能性がある。ほとんどのファイルシステムは、最適な全体的な性能が達成されることができるように開発され、アプリケーションに属するデータパーツがデータメモリ内で時間と共に断片化されることにつながる。近代的なファイルシステムは、進行中の動作の間この影響を最小限に抑えることができるが、それでもなお、個々のファイルのデータパーツの順序は以前と同じように壊される。利用可能なデータメモリの様々な物理的アクセス機構にかかわらず、換言すると、一例として、回転スピンドルを有するハードディスク、ソリッドステートディスク(SSD)、又は作業メモリ(RAM)の場合であろうとなかろうと、直接アクセス(ランダムアクセス又はシーク動作として知られるターゲット・ジャンプ(独:gezielter Spruenge,英:targeted jump)によるアクセスとも呼ばれる)は全く同様に遅い。
データパーツは、今、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されているので、本発明は、データパーツを、ストリーミング処理中の連続ストリームと同様の手法で利用可能にされることを可能にする。データメモリが、一例として、回転スピンドルを有するハードディスクである場合、一般に、要求されたデータパーツと同じトラック上に位置する全てのデータパーツは、これらが何れにしても書き込み読み出しヘッドを通過するので、読み出される。従って、同じトラック上の更なるデータパーツの読み出しによる追加の遅延は生じない。これらが後に要求されることがある場合には、それらは直ちに利用可能である。この点に関して、データパーツのプリロード(「データプリフェッチ」)が達成される。データメモリが、一例として、ソリッドステートベース(一例としてSSD、RAM)上のデータメモリである場合、一般に、1つのステップで、要求されたデータパーツのみではなく、メモリページ全体が読み出される。従って、キャッシュは、隣接して格納されたデータパーツも含む。必要な次のデータパーツが短時間後に要求される場合、これはキャッシュにおいて既に利用可能である。この場合も、データパーツのプリフェッチが達成される。最後に、この方法は、(多数のホップを有する)遠距離では、ラウンドトリップ遅延時間が数百ミリ秒である可能性があり、個々のデータパーツの要求にはかなり時間がかかる可能性があるので、ネットワークを介する通信においても有利である可能性がある。
アプリケーションは、具体的には、有用又は所望の、非システム向けの機能を処理、サポート、又は提供するために使用されるコンピュータプログラムとすることができる。アプリケーションは、画像処理、ビデオ処理、テキスト処理、スプレッドシート、及び/又は財務会計、顧客管理などの特定の業務機能に使用されることが基本的に考えられる。アプリケーションは、少なくとも部分的にはユーザ空間で実行される。特に好ましくは、アプリケーションは、コンピュータゲーム又はその一部であるか又はそれを備える。方法は、アプリケーションを実行するステップを備えることもできる。
性能を更に高くするために、この方法は、好ましくは(少なくとも部分的には)カーネル空間で実行される。
アプリケーションを実行するために、アプリケーションは、一例として、1つ又は複数の実行可能ファイルを備えることができる。ここでは、一例として、直接又はランタイムシステムによって実行されることができる機械コードでのバイナリファイル又はバイトコードファイルあるいはオペレーティングシステムシェルによって解釈されることができるテキストファイルが関わっている可能性がある。データパーツは、具体的には、実行可能ファイルのデータパーツとすることができる。
アプリケーションを実行するために必要なデータパーツは、具体的には、必須の及び/又は任意選択的に必要なデータパーツであると理解されることができる。
データパーツがデータメモリに格納される順序が予期される必要な順序に基づくという事実は、具体的には、データパーツがデータメモリに格納されている(物理的な)順序が必要な(経時的)順序から決定されていることを意味する。一例として、データパーツがデータメモリに格納されている順序は、予期される必要な順序である。これが少なくとも一部の領域において起きるという事実は、具体的には、データメモリにおいて、アプリケーションを実行するために必要なデータパーツは、ある程度、従来通りに、すなわち、予期される必要な順序とは独立して格納されることもできることを意味する。
ここで、予期される必要な順序は、具体的には、アプリケーションがデータパーツをその順序で必要とするであろうことが予期されることができることを意味する。言い換えれば、データパーツは、具体的には、アプリケーション用のデータパーツの経時的必要性を反映する順序で物理的に格納される。予期される必要な順序は、具体的には、経験的に決定されることができる。具体的には、予期される必要な順序は、本発明の第3の態様に関連してより詳細に説明されるように決定されることができる。
必ずしも、アプリケーションの実行に必要な全てのデータパーツが記述したように格納されている必要はない。一例として、アプリケーションの実行に必要なデータパーツのほんの一部は、少なくとも一部の領域において予期される必要な順序に基づく順番で格納されていることもできる。
第1の態様による方法は、具体的には、他の態様に関連してより詳細に説明される少なくとも1つの第1のデバイスによって実行されることができる。
第1の態様の方法の実施形態によれば、方法は、
− アプリケーションの実行に必要なデータパーツを要求するステップ、
を更に備える。
要求するステップは、一例として、アプリケーションによって、オペレーティングシステム及び/又はファイルシステムによって、遂行されることができる。一例として、アプリケーションは、実行のためにデータパーツを必要とし、これをファイルシステムに渡す。要求するステップは、一例として、データメモリ内のデータパーツを明白に識別する(相対的及び/又は絶対的な)アドレッシングが引き渡されることで行われる。アドレッシングは、一例として、(一例として、メモリアドレス又はメモリオフセット値の形態で)データメモリ内のデータパーツの位置を指定することができる。一例として、アドレッシングは、複数のデータパーツを備えるデータメモリの領域を指定することができる。その後、アドレッシングに基づいて、(少なくとも)必要なデータパーツが読み出され提供されて、一例として、アプリケーション、ファイルシステム、及び/又はオペレーティングシステムに返される。上述したように、一般に、要求されたデータパーツだけでなく、物理的に隣接する他のデータパーツも読み出される。最適な場合には、必要なデータパーツは、別のデータパーツのプリフェッチにより既にデータメモリから読み出されており、従って、一例としてより高速なキャッシュにおいて利用可能であるため、もはやデータメモリから読み出される必要さえない。従って、データパーツは、説明された方法で著しくより高速に要求に応答して提供されることができる。
第1の態様の方法の実施形態によれば、方法は、
− アプリケーションの実行に必要なデータパーツの要求するステップに使用されるアドレッシングを、データメモリに格納されているデータパーツの順序にマッピングするステップ、
を更に備える。
要求するステップに使用されるアドレッシングをマッピングすることにより、(一例として、ファイルシステムレベルでの)アドレッシングは通常のように行われることができる。これは、例えば、アプリケーションの従来のインストールの場合と同様に、必要なデータパーツが元のアドレッシングによって要求されることができることを意味する。具体的には、要求するステップに使用されるアドレッシングは、第2のアドレッシングにマッピングされる第1のアドレッシングとすることができる。一例として、要求されたメモリアドレス又は第1のメモリアドレス領域は、第2のメモリアドレス又は第2のメモリアドレス領域にマッピングされることができる。一例として、第1のブロック番号又は第1のブロック番号範囲(又は複数の範囲)は、第2のブロック番号又は第2のブロック番号範囲(又は複数の範囲)にマッピングされることができる。マッピングは曖昧ではなく、具体的には1対1であることが好ましい。
第1の態様の方法の実施形態によれば、使用されるアドレッシングのマッピングは、ファイルシステム層の下で行われる。
一般に、ファイルシステムはオペレーティングシステムの特定の層を表す。(オペレーティングシステムの更なる層又はアプリケーションなどの)上の層はファイルにアクセスできる。ファイルシステムは、一般に、これらの抽象データをアドレッシング(一例として、ブロック番号、トラック、セクタまたは類似のもの)に変換する。下の層では、ファイルシステムドライバは、この目的のために、一例として、関連するデバイスドライバと通信することができる。
今使用されているアドレッシングのマッピングがファイルシステムの層の下で行われる故に、マッピングは非常に効率的に遂行されることができる。一例として、必要なデータパーツがファイルシステム層(又はこれより上の層)から要求される場合、ファイルシステムは通常のようにデータパーツをアドレッシングすることができるので、ファイルシステム又はその上への適応は省かれることができる。一例として、マッピングはデバイスドライバによって行われる。従って、マッピングは、好ましくは、デバイスドライバに関連付けられる層で行われる。
従って、アプリケーションの実行に必要なデータパーツの提供は、具体的には、デバイスドライバに関連付けられる層から行われることもできる。
第1の態様の方法の実施形態によれば、方法は、
− アプリケーションの実行に必要なデータパーツを受信するステップ、
を更に備える。
アプリケーションの実行に必要なデータパーツが、アプリケーションの実行中に、まだデータメモリに格納されていないか又は少なくとも部分的に格納されていないことが可能である。その後、残りのデータパーツは完全に又は部分的に受信されることができる。データパーツは、一例として、別のローカル又はリモートのデータメモリによって受信されることができる。一例として、データパーツは、ネットワークを介して、一例としてインターネットを介して、受信される。データパーツは、好ましくは、インターネットを介してリモートサーバから受信される。
一例として、要求された必要なデータパーツがデータメモリに格納されていないと判定される場合、これらのデータパーツは、それらを受信するために、(一例としてリモートサーバから)要求されることができる。しかしながら、データパーツが好ましくは連続的に受信されるので、データメモリにまだ格納されていない必要なデータパーツに対する個々の要求は好ましくは不要である。これは、個々のデータパーツは要求される必要がなく、データパーツがストリームに類似して少しずつ受信されることを意味する。これは、アプリケーションの実行を更に加速する。一方で、一例として、必要なデータパーツが既にデータメモリに格納されているか又は現在必要でないと判定される場合、説明された連続の受信を、既に格納されている及び(現在)必要でないデータパーツに対して(少なくとも部分的に)スキップすることもできる。その後、これらのデータパーツは、一例として、後の時点で受信されることができる。
データパーツは、好ましくは(少なくとも部分的には)少なくとも一部の領域において予期される必要な順序に基づく順序で受信されることができる。このように、最初に必要であると予期されるデータパーツは受信される最初のものでもある。これは、必要なデータパーツ(特に、アプリケーションを開始するために必要なデータパーツ)が最初にリモートサーバから受信される必要がある場合に、特に有利である。
アプリケーションの実行に必要なデータパーツは、具体的には、更なる態様に関連してより詳細に説明されるように、少なくとも第2のデバイスによって受信されることができる。
第1の態様の方法の実施形態によれば、方法は、
− 少なくとも一部の領域において予期される必要な順序に基づく順序でデータパーツをデータメモリに格納するステップ、
を更に備える。
必要なデータパーツがデータメモリにまだ格納されていない場合、一例として、これらが最初に受信される必要がある故に、これらは、受信後にデータメモリに好ましくは格納される。少なくとも一部の領域における順序での格納は、既に説明したように、予期される必要な順序に基づいているので、アプリケーションの実行の加速が達成される。
第1の態様の方法の実施形態によれば、データパーツはデータブロック及び/又は連続のデータブロックであり、順序はブロック順序である。
データブロックが少なくとも一部の領域において予期される必要なブロック順序に基づくブロック順序でデータメモリに格納されている場合、アプリケーションの実行の加速が特に効果的に達成されることができることが示されている。ブロック順序は、一例として、個々のデータブロック又は連続のデータブロックの順序を指定することができる。
データブロックは、具体的には限定され、設定されたバイト数と見なされる。データブロックは、個々のトランスポート単位又はアクセスでの最小の読み出し可能又は書き込み可能な単位と見なされることができる。データブロックの構造及びデータブロックの要素は、それぞれのデータメモリ、ファイルシステム、又は他の要因に依存することができる。
データブロックは、一例として、512バイトから4096バイトのサイズを有することができる。しかしながら、本質的に、より小さい、特により大きいデータブロックが考えられる。一般に、各データブロックは、データメモリ内で明白にアドレッシングされることができる。これは、様々な方法を使用して行うことができる。一例として、連続番号のブロック(LBA)を介するデータブロックのアドレッシングが行うことができる。同様に(スピンドルを有するハードディスクの場合)、シリンダ番号、ヘッド番号、セクタ番号(CHS)を介してブロックをアドレッシングすることが考えられる。他のデータブロックアドレッシング方法も考えられる。
また、データブロック及びブロック順序に基づく第1の態様による方法の実装に特に有利なのは、このようにして、実質的に全てのオペレーティングシステムとの高いレベルの互換性が達成されるという事実である。実際の機能は、プラットフォームに関係なく実際に実装されることができる。達成される必要のある全ては、一例として、対応するデバイスドライバを、それぞれのオペレーティングシステムにおける対応する(仮想)ブロックデバイスの作動方法に適合させることである。
第1の態様の方法の実施形態によれば、データパーツはブロックデバイス、具体的には仮想ブロックデバイス、に格納される。
(仮想)ブロックデバイスを使用することにより、データメモリは利用可能にされることができ、データブロックの形態でのデータパーツの所望の順序が達成されることができる。(仮想)ブロックデバイス又はブロック指向のデバイスは、データをデータブロックで格納又は転送する(仮想)デバイスであると理解される。ブロックデバイスは、具体的にはオペレーティングシステム自体のバッファを使用することができる。ブロックデバイスは、具体的には、ハードディスク、SSD、USBスティックまたは類似のものとすることができる。仮想ブロックデバイスは、実際には、オペレーティングシステムに対して、ブロックデバイスが存在し、オペレーティングシステムと通信しているか又は通信することができると見せ掛ける。具体的には、仮想ブロックデバイスは、ソフトウェアベースで、具体的にはデバイスドライバを介して、各システムにおいて利用可能とされることができるので有利である。この場合、物理データメモリは、一例として、ローカルハードディスクのデータメモリの一部によって提供されることができる。
デバイスドライバは、有利にも、具体的にはカーネル空間においてそれ自体のキャッシュに関連付けられることができるか又はこれをそれに利用可能にすることができる。このことはデータブロックの提供を更に加速する。この点に関し、第1の態様の方法は、好ましくは、ブロックデバイスを既存のファイルシステムにマウントするステップを更に備える。このようにして、ブロックデバイス上に又はブロックデバイスに存在するファイルシステムに格納されているデータは、オペレーティングシステムに利用可能にさせられることができる。仮想ブロックデバイスでは、データは、一例として、イメージに格納される。
第1の態様の方法の実施形態によれば、データメモリからアプリケーションの実行に必要なデータパーツを提供するために、デバイスドライバ、好ましくはブロックデバイスドライバ、が使用される。デバイスドライバは、好ましくは、仮想ブロックデバイス用のデバイスドライバである。
デバイスドライバは、具体的には、(仮想)デバイスとの相互作用を制御するコンピュータプログラム又はソフトウェアモジュールであると理解される。この目的のために、ドライバは、一方では、一例として(仮想)デバイスと直接通信し、データを(仮想)デバイスと交換することができる。他方では、デバイスドライバは、一例として、(仮想)デバイスが同様のデバイスと同じ手法でアドレッシングされることができるように、オペレーティングシステム及び/又はアプリケーションソフトウェア(従って、具体的にはデバイスドライバに関連付けられる層の上に位置する層)に標準化されたインターフェイスを提供することができる。
これに関して、第1の態様の方法は、好ましくは、データメモリからアプリケーションの実行に必要なデータパーツを提供するデバイスドライバをインストールするステップを更に備える。一例として、インストールはユーザによって開始される。その後、(仮想)デバイスは既存のファイルシステムにマウントされることができる。(仮想)デバイスを使用して、最終的に、データメモリがアクセスされることができ、アプリケーションが実行されることができる。
第1の態様の方法の実施形態によれば、方法は、
− 特に、必要なデータパーツがデータメモリ内で利用可能でない場合、イベントキューの処理を一時中断するステップと、
− イベントキューの処理を再開するステップと、
を更に備える。
イベントキューは、具体的には、データメモリに適用されることが意図される動作(具体的には、書き込み及び/又は読み出し動作)を備えることができる。
一例として、要求された必要なデータパーツがデータメモリに(未だ)格納されておらず、従って利用可能でない場合、アプリケーションの誤動作を避けるために、イベントキューの処理を一時中断することが有利である可能性がある。イベントキューが以前に説明したデバイスドライバ又は(仮想)デバイスのイベントキューである場合、特に有利である。その後、一時中断は、一例としてデバイスドライバによって遂行されることができる。しかしながら、基本的には、(オペレーティングシステム又はプログラムの)外部コマンドによってデバイスドライバのイベントキューを一時中断することも可能である。その際、ファイルシステムなどのデバイスドライバに関連付けられる層の上の層がデバイスドライバを待っているという事実を利用することは有利である。従って、データパーツが利用可能でない場合、状況は、実際には、あたかも遅延を引き起こす(仮想)デバイスの遅い読み出しが存在したかのようである。
一例として、イベントキューの処理は所定時間の間一時中断される。一例として、イベントキューの処理が一時中断される時間が決定される(一例として、計算又は推定される)。データパーツが、一例としてネットワークを介して一例として伝送速度を使用して受信される場合、必要なデータパーツが受信される(ことが予測される)であろうし、且つデータメモリに格納することができて従って利用可能となることができる時が推定されることができる。
その後、データパーツが利用可能かどうかがチェックされることができる。データパーツが利用可能である場合、イベントキューの処理が再開されることができる。そうでない場合、イベントキューの処理の更なる一時中断が行われる可能性がある。
第1の態様の方法の実施形態によれば、アプリケーションの開始に関連するデータパーツに少なくとも関するデータパーツは、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納される。
アプリケーション開始に関連するデータパーツは、アプリケーションを開始するのに関連するデータパーツであると理解される。一例として、アプリケーション開始に関連するデータパーツは、アプリケーションがユーザによって対話的に使用されることができる限りにおいてアプリケーションを実行するために必要とされるデータパーツである。一例として、アプリケーション開始に関連するデータパーツは、アプリケーション全体の10%未満及び/又は50メガバイト未満を占める。これは、具体的には、アプリケーションの実行時に起動が加速されることを可能にする。
しかしながら、これとは独立に、少なくとも一部の領域において予期される必要な順序に基づく順序で、アプリケーションを開始するのに直接には必要ではない(しかし後になってからのみ必要となる)データパーツを格納することも明らかに可能である。
一例として、データパーツが予期される必要な順序に基づいて格納されているアプリケーションのデータパーツの第1の量が提供され、データパーツが予期される必要な順序に基づいていなく、それとは独立しているアプリケーションのデータパーツの第2の量が提供されることも考えられる。その結果、第1の量は、一例として迅速な実行が可能となるように、アプリケーション関連のデータパーツを備えることができるのに対して、第2の量におけるデータパーツの順序は最適化される必要はない。
第1の態様の方法の実施形態によれば、方法は、
− アプリケーションを実行するためにアプリケーションに関連付けられるメタデータ情報を使用するステップ、
を更に備える。
メタデータ情報は、具体的には、アプリケーションを実行するために(少なくとも部分的に)必要なアプリケーション特有の情報であると理解される。一例として、メタデータ情報は、アプリケーションのインストール及び/又は実行中に、アプリケーションを実行するシステム(例えば、オペレーティングシステム及び/又はファイルシステム)にもたらされる変更を備える。一例として、メタデータ情報は、経路情報、ファイル情報、ディレクトリ情報、環境変数に関する情報及び/又はデータベース(例えば、登録データベース)に関する情報、あるいはこれらに対する変更(例えば、新規エントリ)を備える。メタデータ情報は更なる従属情報も備えることができる。
同様に、メタデータ情報は、アプリケーションの実行に必要なデータパーツを要求するために使用されるアドレッシングを、データメモリに格納されるデータパーツの順序にマッピングすることを可能にするマッピング情報を含むことができる。しかしながら、マッピング情報はメタデータ情報とは独立に転送されることもできる。
第2の態様によれば、本発明は、少なくとも1つのデバイスによって実施される、具体的には第1の態様による方法で使用される、データパーツを送信する方法にも関し、方法は、
− アプリケーションの実行に必要なデータパーツを送信するステップであって、データパーツは、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納される、ステップ、
を備える。
第1の態様に関連して既に述べたように、データパーツは、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されているので、必要なデータパーツアプリケーションが概して通常よりも素早くアプリケーションに利用可能となること及び具体的にはアプリケーション起動処理が劇的に加速されることが可能である。
第2の態様による方法は、具体的には、更なる態様に関連してより詳細に記載される少なくとも1つの第2のデバイスによって実行されることができる。
データパーツは、一例として第1の態様による方法を実施する第1のデバイスに送信されることができる。一例として、データパーツは、少なくとも1つのファイル、一例としてイメージ、に格納される。これは、イメージのみが送信される必要があることを意味する。送信されたデータパーツが受信されて格納される場合、これらは、有利にも、少なくとも一部の領域において予期される必要な順序に基づく順序で、直接データメモリ内に受け取り側で自動的に格納される。
そのような順序が決定されることができる手法は、本発明の第3の態様に関連して一例として説明される。
第2の態様の方法の実施形態によれば、データパーツは少なくとも部分的に格納された順序で送信される。
データパーツは少なくとも部分的に格納された順序で送信されるので、最初に必要とされると予期されるデータパーツが送信されるべき最初のものであり、最初に受信されることができる。従って、具体的には、必要なデータパーツ(具体的には、アプリケーションを開始するために必要なデータパーツ)が(例えば、第1のデバイスによって)依然として受信される必要がある状況において、アプリケーションを開始するまでの時間も短縮される。
第2の態様の方法の実施形態によれば、方法は、
− アプリケーションの実行に必要なデータパーツの少なくとも一部を送信する要求を受信するステップ、
を更に備える。
一例として、必要なデータパーツがそこのデータメモリに格納されていないことが第1のデバイスによって判別される場合、これらのデータパーツは、それらが受信されるために要求されることができる。その後、データパーツの送信の要求は、第2の態様の方法の過程で、一例として第2のデバイスによって、受信されることができる。
送信リクエストでは、個々のデータパーツ又はデータパーツの範囲が要求されることが考えられる。しかしながら、データパーツは好ましくは連続的に送信されるので、必要なデータパーツを個々に要求することは好ましくは不要である。これは、データパーツが、受信される必要のある個々のデータパーツの要求なしに、ストリームに類似して少しずつ送信されることを意味する。これは、アプリケーションの受信ひいては実行を加速する。
第2の態様の方法の実施形態によれば、方法は、
− アプリケーションの実行のためにアプリケーションに関連付けられるメタデータ情報を送信するステップ、
を更に備える。
第1の態様に関連して既に説明したように、メタデータ情報は、一例として、経路情報、ファイル情報、ディレクトリ情報、環境変数に関する情報及び/又はデータベース(例えば、登録データベース)に関する情報、あるいはこれらに対する変更(例えば、新規エントリ)を備える。メタデータ情報は、一例として、同様に、少なくとも1つのファイルに含まれることができる。同様に、メタデータ情報が含まれる少なくとも1つの別個のファイルが提供されることができる。メタデータ情報はメモリに保持されることもできる。メタデータ情報は好ましくは最初に送信される。一例として、メタデータ情報は、プッシュ処理の過程で又はプル処理の過程で送信されることができる。
同様に、メタデータ情報は、アプリケーションの実行に必要なデータパーツを要求するために使用されるアドレッシングを、データメモリに格納されるデータパーツの順序にマッピングすることを可能にするマッピング情報を備えることができる。しかしながら、マッピング情報はメタデータ情報とは独立に転送されることもできる。
更なる実施形態に関して、具体的にはデータブロックとしてのデータパーツの実施形態に関して、第1の態様に関連する説明が参照される。
第3の態様によれば、本発明は、少なくとも1つのデバイスによって実施される必要なデータパーツを格納する方法にも関し、前記方法は、
− アプリケーションの実行に必要なデータパーツの取得された必要な順序を受信するステップと、
− 取得された必要な順序に少なくとも基づいて、予期される必要な順序を決定するステップと、
− 少なくとも一部の領域において予期される必要な順序に基づく順序で必要なデータパーツをデータメモリに格納するステップと、
を備える。
方法は、必要なデータパーツが少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されることを可能にする。
少なくとも取得された必要な順序に基づいて、予期される必要な順序は決定されることができる。一例として、取得された必要な順序は、予期される必要な順序に対応する。一例として、取得された必要な順序は、予期される必要な順序を決定する際において、複数の要因(一例として、更なる取得された必要な順序)のうちの1つにすぎない。
最後に、必要なデータパーツは、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに格納されることができる。結果として、データパーツは、一例としてデータメモリにおけるアプリケーションの通常のインストール後に存在する元の格納された順序と比較して、再配列される。従って、最適化されたアプリケーションが利用可能である。第1の態様に関連して既に説明したように、これは、アプリケーションの実行が、一例として第1の態様の方法に従って、今や加速されることを可能にする。
加えて、一例としてデータメモリにおけるアプリケーションの通常のインストール後に存在する元の格納された順序と再配列された順序との間のマッピングを可能にするマッピング情報が格納されることができる。言い換えると、マッピング情報は、アプリケーションの実行に必要なデータパーツを要求するために使用されるアドレッシングを、データメモリに再配列されたデータパーツの順序にマッピングすることを可能にする。
方法は、アプリケーションによって必要な全てのデータパーツに対して必ずしも遂行される必要はなく、それは、一例として、必要なデータパーツのほんの一部に対して遂行されることもできる。
方法は、具体的には、更なる態様に関連してより詳細に記載されるように、少なくとも第3のデバイスによって実施されることができる。
第3の態様の方法の実施形態によれば、方法は、以下のステップ、
− デバイスドライバ、好ましくはブロックデバイスドライバ、をインストールするステップ、
− イメージを生成するステップ、
− デバイスドライバを介して、具体的にはインストールされたデバイスドライバを介して、デバイスをマウントするステップ、
− アプリケーションを、特に、生成されたイメージ上にインストールするステップ、
− アプリケーションの実行のためにアプリケーションに関連付けられるメタデータ情報を決定するステップ、
− アプリケーションを実行するステップ、
− アプリケーションの実行に必要なデータパーツの必要な順序を取得するステップ、
のうちの1つ又は複数を更に備える。
1つ又は複数のステップは、具体的には、アプリケーションの実行に必要なデータパーツの必要な順序の取得を準備するために役立つ。1つ又は複数(特に全て)の上記のステップは、一例として、1つ又は複数のデータ処理システム上で、具体的には分析環境で、実施される。分析環境は、具体的には、ソフトウェアを分析するために使用される技術的/組織的インフラであると理解される。
デバイスドライバ、具体的にはブロックデバイスドライバ、を介して、アプリケーションを実行するために必要なデータパーツの必要な順序の取得は極めて効率的に遂行されることができる。イメージも生成されることができる。デバイスドライバのインストールに続いて、デバイス、具体的にはブロックデバイス及びそれによるイメージも、既存のファイルシステム内のデバイスドライバを介してマウントされることができる。ここで、ブロックデバイスは、好ましくは仮想ブロックデバイスである。デバイスひいてはイメージも、デバイスドライバを介してアクセスされることができる。その後、アプリケーションはデバイス上にひいてはイメージ上にもインストールされることができる。
加えて、アプリケーションに関連付けられるメタデータ情報は、この時点でアプリケーションの実行のために決定されることができる。これは、一例として、アプリケーションのインストール前とインストール後のシステム(例えば、オペレーティングシステム及び/又はファイルシステム)の比較によって行われることができる。同様に、(一例として、書き込み及び/又は読み出し処理の取得による)実際のシステム変更の性能が取得されることができる。これは、他のデバイス(一例として、第1のデバイス)上でのアプリケーションの実行を単純化する。これらは、既にインストールされているアプリケーション及びメタデータ情報のイメージだけが利用可能にされることを必要とし、再インストールは不要である。第1の態様及び第2の態様に関連して既に説明されたように、メタデータ情報は、一例として、経路情報、ファイル情報、ディレクトリ情報、環境変数に関する情報及び/又はデータベース(例えば、登録データベース)に関する情報、あるいはこれらに対する変更(例えば、新しいエントリ)を備える。
次に、アプリケーションが実行されることができる。このアプリケーションは、第1の態様の方法に従って実行されるアプリケーションに対応する。これに関して、第1の態様に関連する説明が参照される。しかしながら、ここでは、アプリケーションによって必要とされるデータパーツは、初期に(少なくとも部分的には)少なくとも一部の領域において予期される必要な順序に基づく順序でまだ格納されていない。
アプリケーションの実行の過程で、アプリケーションはその実行のために或る(経時的)順序でデータパーツを必要とするであろう。この目的のために、一例として、アプリケーション、オペレーティングシステム、及び/又はファイルシステムは、必要なデータパーツを要求することができる。この順序は取得されることができ、これは、有利にもファイルシステムのレベルの下位で行われることができる。一例として、取得はデバイスドライバによって行われる。第1の態様に関して既に説明されたように、データパーツは好ましくはデータブロックであり、順序はブロック順序である。この点について、第1の態様に関連する説明が参照される。
第3の態様の方法の実施形態によれば、アプリケーションの実行に必要なデータパーツの取得された必要な順序は、アプリケーションの実行中に必要なデータパーツに対する読み出し動作に関するログ情報を備える。
このようにして、アプリケーションの実行に必要なデータパーツの順序の取得は、極めて効率的に遂行されることができる。情報をログすることは、デバイスドライバによって特に有利に遂行される。一例として、デバイスドライバにおいて定義された書き込み及び/又は読み出し動作は、何れにせよ、アプリケーションの実行中に必要なデータパーツに対する読み出し動作に関する情報をログすることを可能にするように、拡張される。(相対的又は絶対的な)アドレッシングがログされるので、必要なデータパーツに対する読み出し動作に関する情報をログすることは、一例として実施されることができる。一例として、ログ情報を含むログファイルが生成される。
第3の態様の方法の実施形態によれば、ログ情報はそれぞれの必要なデータパーツの曖昧でない識別を可能にする。
曖昧でない識別は、曖昧でない(相対的及び/又は絶対的な)アドレッシングをログすることによって達成されることができる。アドレッシングは、一例として、(曖昧でないメモリアドレス又は曖昧でないメモリオフセット値の形態で)データメモリ内のデータパーツの曖昧でない位置を備えることができる。一例として、アドレッシングは、複数のデータパーツを備えるデータメモリの曖昧でない領域を指定することができる。データパーツが一例としてデータブロックである場合、一例として、曖昧でないブロック番号又は曖昧でないブロック番号範囲がログされることができる。
第3の態様の方法の実施形態によれば、ログ情報はまた、以下の情報、
− 時間情報、
− アプリケーション特有のイベント、
− ユーザ特有の情報、
のうちの1つ又は複数を備える。
時間情報は、一例としてデータパーツ又はデータパーツの範囲が必要とされた時点、すなわち、具体的には対応するデータパーツ又は範囲に対する読取りアクセスが行われた時点、に関する相対的及び/又は絶対的な時間情報を備えることができる。
アプリケーション特有のイベントは、一例としてアプリケーションの起動の開始、アプリケーションの対話部分の開始、及び/又は或るアプリケーションセクションの開始(ゲームでは、一例として、レベル1、レベル2、レベル3などの開始)とすることができる。
ユーザ特有の情報は、一例としてユーザ入力情報とすることができる。入力情報は、具体的には(例えば、キーボード又はマウスを有する)入力デバイスを使用して入力される入力、一例としてどのキーが押されたか、に関する情報である。
予期される必要な順序の決定は、その後、有利にも、これらの情報の項目のうちの1つ又は複数に基づいて実施されることができる。一例として、入力情報などの或るユーザ特有の情報は、予期される必要な順序に影響を及ぼす可能性がある。これは、その後、一例としてアプリケーションの実行に必要なデータパーツの受信後に考慮に入れられることができる。
第3の態様の方法の実施形態によれば、アプリケーションの実行に必要なデータパーツの多数の取得された必要な順序が受信され、予期される必要な順序は、多数の取得された必要な順序に少なくとも基づいて決定される。
一例として、取得は少なくとも2回、好ましくは多数回遂行される。その後、予期される必要な順序が少なくとも多数の取得された必要な順序に基づいて決定される場合、予期される必要な順序は、より信頼性高く決定されることができる。これは、アプリケーションのプログラムフローがユーザによって影響を受ける可能性がある対話型アプリケーションでは特に有利であり、それは、このように、必要なデータパーツの順序も影響を受けるからである。一例として、この目的のために、それぞれの取得された必要な順序が、集約された順序又は結合された順序を形成するように集約され、それに基づいて、予期される必要な順序が決定されることができる。
一例として、多数の取得が、様々なデバイス上で、一例として一連の分析デバイス上で、実施されることができる。他方、予期される必要な順序の決定及び必要なデータパーツの保存は、好ましくは中央デバイス上で実施されることができる。
第3の態様の方法の実施形態によれば、取得された必要な順序のうちの連続セクションの場合には、連続セクションは短縮される。
これは、具体的には取得が多数回遂行される場合にも、必要な順序の連続セクションを可能な限り1つの列として受信することが達成されることを可能にし、取得された必要な順序が短縮される。従って、例として、一例として、必要なデータパーツの連続セクション(2、3、4、5、…、n−1、n)が取得される場合、連続セクションは(2…n)のように短縮され、そのようにログされる。しかしながら、連続セクションは必ずしも短縮される必要はない。一例として、或る長さの連続セクション又は最大数の連続セクションのみが短縮される。
第3の態様によれば、格納されている必要なデータパーツは、その後一例として、第2の態様の方法に従って送信されることができる。第1の態様の方法では、アプリケーションの起動は最終的に加速されることができる。
更なる態様によれば、本発明は、第1の態様による方法を実施及び/又は制御する適切な手段として構成されるか又はその手段を備えるデバイス(第1のデバイス)にも関する。第1のデバイスは、具体的には、エンドユーザ、一例としてクライアント、のデータ処理システムとすることができる。
更なる態様によれば、本発明は、コンピュータプログラムがプロセッサ上で動作する場合、プロセッサが第1の態様(又はその一部)による方法を実施及び/又は制御することを可能にするプログラム命令を備えるコンピュータプログラム(第1のコンピュータプログラム)にも関する。
更なる態様によれば、上記の目的は、第2の態様による方法を実施及び/又は制御する適切な手段として構成されるか又はその手段を備えるデバイス(第2のデバイス)によっても達成される。第2のデバイスは、具体的には、データをエンドユーザに対して利用可能にするサーバとすることができる。
更なる態様によれば、本発明は、コンピュータプログラムがプロセッサ上で動作している場合、プロセッサが第2の態様(又はその一部)による方法を実施及び/又は制御することを可能にするプログラム命令を備えるコンピュータプログラム(第2のコンピュータプログラム)にも関する。
更なる態様によれば、上記の目的は、第3の態様による方法を実施及び/又は制御する適切な手段として構成されるか又はその手段を備えるデバイス(第3のデバイス)によっても達成される。第3のデバイスは、具体的には、複数のデータ処理システムを備えることができ、一例として、第3のデバイスは複数の分析データ処理システム及び中央サーバを備える。
更なる態様によれば、本発明は、コンピュータプログラムがプロセッサ上で動作している場合、プロセッサが第3の態様(又はその一部)による方法を実施及び/又は制御することを可能にするプログラム命令を備えるコンピュータプログラム(第3のコンピュータプログラム)にも関する。
それぞれのデバイスは、好ましくは、少なくとも1つのプロセッサ及びコンピュータプログラムコードを有する少なくとも1つのメモリを備え、少なくとも1つのメモリ及びコンピュータプログラムコードは、第1の態様、第2の態様、及び/又は第3の態様による少なくとも1つの方法で、少なくとも1つのプロセッサを実施及び/又は制御するように構成される。
例えば、第1のデバイス、第2のデバイス、及び第3のデバイスは、本発明によるそれぞれの方法のそれぞれのステップ(又はこれらのうちの一部)を実施することができるように、ソフトウェア及び/又はハードウェアベースで構成される、互いに異なるデータ処理システムである。ソフトウェア及び/又はハードウェアベースで構成されることは、例えば、一例としてコンピュータプログラムの形態で、それぞれの方法のステップ(又はその一部)の実施を可能にするために必要なそれぞれのデータ処理システムの準備を意味するように意図されている。データ処理システムの例は、コンピュータ、デスクトップコンピュータ、ラップトップコンピュータなどのポータブルコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント、スマートフォン、及び/又はシンクライアントである。
しかしながら、一例として、個々の態様の、一例として第2の態様及び第3の態様の、ステップは、共有データ処理システム上で実施されることも基本的に考えられる。態様のステップは様々なデータ処理システム上で実施されることが同様に考えられる。
例えば、第1のデバイス、第2のデバイス、及び/又は第3のデバイスは、各々、プロセッサなどの本発明によるコンピュータプログラムのうちの1つを実行する手段を含む。プロセッサは、例えば、制御ユニット、マイクロプロセッサ、マイクロコントローラなどのマイクロ制御ユニット、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、又はフィールドプログラマブルゲートアレイ(FPGA)であると理解されるように意図されている。
例えば、第1のデバイス、第2のデバイス、及び/又は第3のデバイスは、何れの場合も、プログラムメモリ及び/又はメインメモリなどの情報を格納する手段も備える。
例えば、第1のデバイス、第2のデバイス、及び/又は第3のデバイスは、何れの場合も、ネットワークインタフェースなどのネットワークを介して情報を受信及び/又は送信する手段も備える。例えば、第1のデバイス、第2のデバイス、及び/又は第3のデバイスは、1つ又は複数のネットワークを介して互いに接続される且つ/又は接続可能である。
コンピュータプログラムは、一例としてネットワークを介して配布可能である。コンピュータプログラムは、少なくとも部分的には、プロセッサのソフトウェア及び/又はファームウェアとすることができる。
第1のコンピュータプログラム、第2のコンピュータプログラム、及び/又は第3のコンピュータプログラムは、一例としてアプリケーションプログラムを備えることができる。第1のコンピュータプログラム及び/又は第2のコンピュータプログラムは具体的にはデバイスドライバを備える。
本発明によるコンピュータプログラムは、何れの場合も、本発明による1つ又は複数のコンピュータプログラムを含む機械可読記憶媒体に格納されることができ、例えば、磁気、電気、電磁気、光学、及び/又は他のタイプの記憶媒体として構成される。このような機械可読記憶媒体は、好ましくは物理的(従って有形)であり、例えばデータ媒体デバイスとして構成される。そのようなデータ媒体デバイスは、一例として、携帯可能であるか又は取り外せないようにデバイスにインストールされる。そのようなデータ媒体デバイスの例は、例えばNORフラッシュメモリなどのランダムアクセス(RAM)を有するかもしくはNANDフラッシュメモリなどの逐次型アクセスを有する揮発性もしくは不揮発性メモリ及び/又は読み出し(ROM)もしくは読み出し/書き込みアクセスを有するメモリである。機械可読は、例えば記憶媒体がコンピュータ又はデータ処理システムによって、一例としてプロセッサによって、読まれ(読み出され)又は書き込まれることができることを意味するように意図されている。
この明細書に記載されている例示的実施形態は、全ての互いの組み合わせで開示されることも意図されている。
本発明の更なる有利な例示的実施形態は、具体的には図面に関連して本発明の多くの実例の以下の詳細な説明によって示される。
しかしながら、本出願に添付されている図面は、明確化の目的のためにのみ使用されることが意図され、本発明の保護の範囲を決定することが意図されるものではない。添付の図面は一定の縮尺ではなく、本発明の一般概念を反映する例としてのみ意図されている。特に、図面に示されている特徴は、決して、本発明の必須の構成要素の一部と見なされるものではない。
図面を以下に示す。
例示的なデータ処理システムのブロック図 様々な態様による方法を実施するための様々な例示的なデバイスのシステムの概略図 第3の態様による方法の例示的実施形態の文脈において実施されることができる例示的な方法のフロー図 オペレーティングシステムの様々な層の概略図 第3の態様による方法の例示的実施形態のフロー図 第2の態様による方法の例示的実施形態のフロー図 第1の態様による方法の例示的実施形態のフロー図
図1はデータ処理システム1の例示的実施形態のブロック図を示す。データ処理システム1は様々な態様によるデバイスの一例としての機能を果たし、具体的には、第1のデバイス、第2のデバイス、及び/又は第3のデバイスはデータ処理システム1に従って実装されることができる。
データ処理システム1は、一例として、コンピュータ、デスクトップコンピュータ、ラップトップコンピュータなどのポータブルコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント、スマートフォン、及び/又はシンクライアントとすることができる。データ処理システムは、一例として、サーバ又はクライアントの機能を実行することができる。
データ処理システム1のプロセッサ100は、具体的には、マイクロプロセッサ、マイクロコントローラなどのマイクロ制御ユニット、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、又はフィールドプログラマブルゲートアレイ(FPGA)として構成される。
プロセッサ100は、プログラムメモリ120に格納されているプログラム命令を実行し、一例として中間結果又は類似のものをメインメモリ110に格納する。例えば、プログラムメモリ120は、フラッシュメモリ、磁気メモリ、EEPROMメモリ(電気的に消去可能なプログラム可能な読み出し専用メモリ)、及び/又は光メモリなどの不揮発性メモリである。メインメモリ110は、例えば、揮発性又は不揮発性メモリであり、具体的には、スタティックRAMメモリ(SRAM)、ダイナミックRAMメモリ(DRAM)、強誘電体RAMメモリ(FeRAM)及び/又は磁気RAMメモリ(MRAM)などのランダムアクセスメモリ(RAM)である。
プログラムメモリ120は、好ましくは、データ処理システム1への固定接続を有するローカルデータ媒体である。データ処理システム1への固定接続を有するデータ媒体は、一例としてデータ処理システム1に組み込まれたハードディスクである。代替的に、データ媒体は、一例として、メモリスティック、リムーバブル記憶デバイス、ポータブルハードドライブ、CD、DVD、及び/又はディスケットなどの、データ処理システム1に分離可能に接続されているデータ媒体とすることもできる。
プログラムメモリ120は、データ処理システム1が起動される場合、少なくとも部分的にメインメモリ110にロードされ、プロセッサ100によって実行されるデータ処理システム1のオペレーティングシステムを含む。具体的には、データ処理システム1が起動される場合、オペレーティングシステムのコアの少なくとも一部がメインメモリ110にロードされ、プロセッサ100によって実行される。データ処理システム1のオペレーティングシステムは、一例として、Windows、UNIX(登録商標)具体的にはLinux(登録商標)、Android、Apple iOS、及び/又はMACオペレーティングシステムである。
オペレーティングシステムは、具体的には、データ処理のためにデータ処理システム1の使用を可能にする。オペレーティングシステムは、一例として、メインメモリ110及びプログラムメモリ120、ネットワークインタフェース130、並びに入力/出力デバイス140などのリソースを管理し、他の基本プログラム機能をとりわけプログラミングインターフェースを介して利用可能にし、且つプログラムの実行を制御する。
プロセッサ100は、一例として、データ処理システム1とネットワークとの間のリンクを作成するためにネットワークカード、ネットワークモジュール、及び/又はモデムであり且つそれらとして構成されるネットワークインタフェース130を制御する。ネットワークインタフェース130は、一例としてネットワークを介してデータを受信してこれをプロセッサ100に渡し且つ/又はプロセッサ100からデータを受信してそれをネットワークを介して送信することができる。ネットワークの例は、イーサネット(登録商標)ネットワークもしくはIEEE802ネットワークなどのローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク、有線ネットワーク、携帯電話ネットワーク、電話ネットワーク、及び/又はインターネットである。
プロセッサ100は少なくとも1つの入力/出力デバイス140を更に制御することができる。入力/出力デバイス140は、一例として、キーボード、マウス、ディスプレイユニット、マイクロホン、タッチセンシティブ・ディスプレイデバイス、拡声器、スキャナー、ディスクドライブ、及び/又はカメラである。入力/出力デバイス140は、一例として、ユーザからの入力を受信してこれらをプロセッサ100に渡し且つ/又はプロセッサ100からユーザ向けの出力情報を受信することができる。
図2は様々な態様による方法を実施するための様々な例示的なデバイスのシステム2の概略図である。
サーバ200は、コンピュータ210と共に、図3に関連してより詳細に説明されるように、第3の態様による方法の実施形態を実施することができる。同様に、サーバ200は、図5に関連してより詳細に説明されるように、第2の態様による方法の実施形態を実施することができる。最後に、コンピュータ250は、図6に関連してより詳細に説明されるように、第1の態様による方法の実施形態を実施することができる。
初めに、図3は、第3の態様による方法の例示的実施形態の文脈において実施されることができる例示的な方法のフロー図3を示す。
方法は1つ又は複数のコンピュータ210上で実施されることができる。ここで、コンピュータ210は分析環境を提供する。初めに、何れの場合でも仮想ブロックデバイス用のブロックデバイスドライバがインストールされる(ステップ310)。次に、イメージがそれぞれのコンピュータ210上に生成される(ステップ320)。ブロックデバイスドライバの助けを借りて、仮想ブロックデバイス及びそれによりイメージも、それぞれのコンピュータ210のオペレーティングシステムのファイルシステムにマウントされることができる(ステップ330)。次に、最適化されることになっているアプリケーション(例えば、コンピュータゲーム)は、生成されたイメージ上にインストールされることができる(ステップ340)。ここで、イメージは、それぞれのコンピュータ210のそれぞれのローカル(例えば、ハードディスク上)のプログラムメモリ120に物理的に格納される。従って、アプリケーションの実行に必要なデータブロックは、それぞれのプログラムメモリ内に存在する。しかしながら、これらはまだ最適化された順序30で格納されていない。
ステップ340の後又は少なくとも部分的にはステップ340の間に実施されることができるステップ350において、アプリケーションに関連付けられるメタデータ情報は、アプリケーションの実行のために決定されることができる。そうすることで、アプリケーションを開始するために必要な、それぞれのコンピュータ210にインストールされたオペレーティングシステム及びファイルシステムへの変更が取得される。これらは、一例としてファイルに格納される。
その後、アプリケーションはそれぞれのコンピュータ210上で実行され(ステップ360)、それぞれのユーザ220によって使用されることができる。そうすることで、アプリケーションの実行に必要なデータブロックの必要な順序を取得することができる(ステップ370)。
ここで、図4は、一例として、個々のコンピュータ210又は250上に存在するオペレーティングシステム4の様々な層の概略図である。4つの層410、420、430、440が示されている。オペレーティングシステム4は、その上、その下、又はその間に配置される追加の層を有することもできる。層420において、デバイスドライバ421、422(「ドライバ1」、「ドライバ2」)が提供される。これらは、下層410のハードウェアとの相互作用を制御するコンピュータプログラム又はソフトウェアモジュールとすることができる。その一方で、デバイスドライバは、層430のファイルシステム431、432(「ファイルシステム1」、「ファイルシステム2」)と通信する。次に、ファイルシステムは、一例として、アプリケーションによって使用されることができる層440のシステムコールルーチンと通信することができる。基本的に、一例として様々なファイルシステムが1つのドライバと通信する必要があるだけでよいように、ドライバの様々なインスタンスが使用されることもできる。一例として、複数のインスタンスは、各々が異なるアプリケーションを含む仮想ブロックデバイスを同時に使用することができる。
ここで、アプリケーションが或るデータブロックを必要とする場合、これらはファイルシステム、一例としてファイルシステム431、を介して要求される。この要求は、イメージ上にインストールされているアプリケーションにアクセスすることができるブロックデバイスドライバ、一例としてドライバ421、によって対処され、必要なデータブロックが返される。
ここで、ブロックデバイスドライバ421における書き込み及び/又は読み出し動作は、要求されたデータブロックが(例えば、データブロックを明白に識別するブロック番号、メモリアドレス及び/又はメモリオフセットをログすることによって)ログされるように拡張される。従って、アプリケーションの実行に必要なデータブロックの必要なブロック順序は、ブロックデバイスドライバ421を使用してログされる。加えて、時間オフセットの形態での時間情報がログされる。アプリケーション特有のイベントまたはユーザ特有の情報などの更なる情報が同様にログされる。
一例として、コンピュータ210のうちの1つの上で、必要なデータブロックのブロック番号及び関連付けられる時間オフセットを示す以下の第1の必要な順序が取得される。
Figure 0006529678
一例として、コンピュータ210のうちの別のものの上で、必要なデータブロックのブロック番号及び関連付けられる時間オフセットを示す以下の第2の必要な順序が取得される。
Figure 0006529678
次に、図5は第3の態様による方法の例示的実施形態のフロー図を示す。
多数の取得された順序は、一例として、サーバは、ネットワーク230を介してサーバ200に利用可能にされることができ、アプリケーションの実行に必要なデータブロックの取得された必要な順序を受信する(ステップ510)。
これらに基づいて、サーバ200は予期される必要な順序を決定することができる(ステップ520)。この目的のために、複数の取得された順序は、時間情報に従ってソートされ短縮されることができ、次の順序になる。
Figure 0006529678
予期される必要なブロック順序(0、2、0、8、9、5、6、7)もそれから決定されることができる。任意選択的に、含まれている多数のデータブロックは、予期される必要なブロック順序(0、2、8、9、5、6、7)となるように、無視されることができる。
このようにして決定された予期される必要なブロック順序は、その後、少なくとも一部の領域において予期される必要な順序に基づく順序で、具体的には予期される必要な順序自体で、必要なデータブロックをデータメモリに格納するために使用される(ステップ530)。
一例として、インストールされたアプリケーションを示す元のイメージのデータブロックは再配列される。加えて、マッピング情報は格納され、元のイメージを再配列されたイメージにマッピングすることを可能にする。
次に、図6は第2の態様による方法の例示的実施形態のフロー図を示す。方法は、一例としてサーバ200によって同様に実施されることができる。
初めに、サーバ200は、アプリケーションの実行に必要なデータブロックうちの少なくとも一部を送信する要求を受信する(ステップ610)。要求は、一例としてインターネット240などのネットワークを介してコンピュータ250のうちの1つによって行われることができる。
対応するコンピュータ250上で、アプリケーションの実行のためにアプリケーションに関連付けられるメタデータ情報が未だ利用可能でない場合、これらが最初に送信されることができる(ステップ620)。メタデータ情報と一緒に又はそれらとは別に、元のイメージの再配列イメージへのマッピングを可能にする格納されているマッピング情報もコンピュータ250に送信される。次に、必要なデータブロックが対応するコンピュータに送信される(ステップ630)。一例として、イメージは、説明されたように再配列されたアプリケーションのデータブロックと共に送信される。そうすることで、データブロックは、ステップ530によって可能にされるように、少なくとも一部の領域において予期される必要な順序に基づく既存の順序で、サーバ200上でデータメモリに格納される。そうすることで、データブロックも好ましくは格納されている順序で送信される。
図7は第1の態様による方法の例示的実施形態のフロー図を示す。方法は、一例として何れの場合もコンピュータ250によって実施されることができる。一例として、コンピュータ250のユーザ260はアプリケーションを実行することを望む。この目的のために、対応するコンピュータ250は、一例としてインターネット240を介してサーバ200に要求を送信することができる。
対応するコンピュータ250上には、仮想ブロックデバイス用のブロックデバイスドライバが既にインストールされている。このようにして、仮想ブロックデバイスはコンピュータ250のオペレーティングシステムのファイルシステムにマウントされることができる。ブロックデバイスドライバ(例えば、ドライバ421)のインストール及び仮想デバイスのマウントは、既に図3及び図4に関連して更に詳細に説明されており、これは同じ手法でここで行われることができる。それがまだ行われていない場合、コンピュータ250は、例えばステップ620に従って送信されたアプリケーションに関連付けられるアプリケーションの実行のためのメタデータ情報を受信することができる(ステップ710)。同様に、コンピュータ250も、元のイメージの再配列イメージへのマッピングを可能にする格納されているマッピング情報を、メタデータ情報と共に(又はこれとは別に)受信する(ステップ711)。
コンピュータ250は、好ましくは、データパーツに必要な記憶スペースに関する情報(例えば、サイズ)も受信する。
この情報(例えば、経路情報及びファイル情報)の助けを借りて、必要なサイズを有するイメージのマウントが行われることができ、アプリケーションは(一例として実行可能ファイルを用いて)実行されることができる(ステップ720)。これは、アプリケーションのデータブロックが対応するコンピュータ250のデータメモリにローカルに未だ格納されていない場合でさえも、情報が実行可能ファイルを介して既に利用可能であるので、適用される。
アプリケーションは、今その実行のためにデータブロックを必要とする。これらは、一例としてブロックデバイスドライバ(例えば、ドライバ421)からファイルシステム(例えば、ファイルシステム431)によって要求される(ステップ730)。
必要なデータブロックがデータメモリ内で利用可能でない場合、デバイスドライバ・イベントキューの処理は一時中断される(任意選択的ステップ740)。データブロックが既に利用可能である場合、処理はステップ780(下記参照)から継続することができる。しかしながら、一時中断が起きる場合、アプリケーションの実行に必要なデータブロックは最初にサーバ200から受信されることができる(ステップ750)。
データブロックは、少なくとも一部の領域において予期される必要な順序に基づく順序で、対応するコンピュータ250のローカルデータメモリ(例えば、ハードディスク)に直接格納される(ステップ760)。それは、データブロックが再配列されたイメージによりサーバ200からその順序で転送されるからである。
データブロックがローカルで利用可能である場合、デバイスドライバのイベントキューの処理は再開されることができる(任意選択的ステップ770)。
要求されたデータブロックが受信されたイメージ内のデータブロックのブロック順序の変更により変更されているので、デバイスドライバは、アプリケーションの実行に必要なデータブロックを要求するために使われるアドレッシングを、データメモリに格納されているデータブロックの順序にマッピングする(ステップ780)。これは、元のイメージを再配列されたイメージにマッピングすることを可能にする、サーバ200によって以前に格納されたマッピング情報がコンピュータ250に転送されているので、可能である。
従って、アプリケーションの実行に必要なデータブロックは、ブロックデバイスドライバによってコンピュータ250のデータメモリから提供されることができる。データブロックは、少なくとも一部の領域において予期される必要な順序に基づく順序でデータメモリに既に格納されているので、その提供は極めて効率的に行われることができる(ステップ790)。具体的には、アプリケーションの開始は、このようにして、アプリケーションがサーバ200から未だダウンロードされる必要があるか又は既にコンピュータ250に格納されているかどうかとは独立に加速されることができる。

Claims (23)

  1. 少なくとも1つのデバイスによって遂行されるアプリケーションを実行する方法であって、前記アプリケーションは、アプリケーションのプログラムフローがアプリケーションのユーザによって少なくとも部分的に影響を受ける対話型アプリケーションであり、
    前記方法は、
    − データメモリから前記アプリケーションの前記実行に必要なデータパーツを提供するステップ(790)を備え、前記データパーツは少なくとも一部の領域において予期される必要な経時的順序に基づく物理的順序で前記データメモリに格納され、前記予期される必要な経時的順序は、少なくとも前記アプリケーションのそれぞれの実行中に取得された多数の必要な経時的順序の組み合わせに基づく、
    方法。
  2. 前記方法は、
    − 前記アプリケーションの実行に必要な前記データパーツを要求するステップ(730)、
    を更に備える、請求項1に記載の方法。
  3. 前記方法は、
    − 前記アプリケーションの実行に必要な前記データパーツの前記要求するステップに使用されるアドレッシングを、前記データメモリに格納されている前記データパーツの前記順序にマッピングするステップ(780)、
    を更に備える、請求項2に記載の方法。
  4. 使用される前記アドレッシングの前記マッピングはファイルシステム(431、432)層(430)の下で行われる、請求項3に記載の方法。
  5. 前記方法は、
    − 前記アプリケーションの実行に必要な前記データパーツを受信するステップ(750)、
    を更に備える、請求項1〜4の何れか一項に記載の方法。
  6. 前記方法は、
    − 少なくとも一部の領域において予期される必要な順序に基づく前記順序で前記データパーツをデータメモリに格納するステップ(760)、
    を更に備える、請求項1〜4の何れか一項に記載の方法。
  7. 前記データパーツはデータブロック及び/又は連続のデータブロックであり、前記順序はブロック順序である、請求項1〜6の何れか一項に記載の方法。
  8. 前記データパーツはブロックデバイス、具体的には仮想ブロックデバイス、に格納される、請求項1〜7の何れか一項に記載の方法。
  9. 前記データメモリから前記アプリケーションの実行に必要な前記データパーツを前記提供するステップのために、デバイスドライバ(421、422)、好ましくはブロックデバイスドライバ、が使用される、請求項1〜8の何れか一項に記載の方法。
  10. 前記方法は、
    − 特に、前記必要なデータパーツが前記データメモリ内で利用可能でない場合、イベントキューの処理を一時中断するステップ(740)と、
    − 前記イベントキューの前記処理を再開するステップ(770)と、
    を更に備える、請求項1〜9の何れか一項に記載の方法。
  11. 前記アプリケーションの開始に関連するデータパーツに少なくとも関する前記データパーツは、少なくとも一部の領域において予期される必要な順序に基づく順序で前記データメモリに格納される、請求項1〜10の何れか一項に記載の方法。
  12. 前記方法は、
    − 前記アプリケーションの実行のために前記アプリケーションに関連付けられるメタデータ情報を使用するステップ、
    を更に備える、請求項1〜11の何れか一項に記載の方法。
  13. 少なくとも1つのデバイスによって実施される、具体的には請求項1〜12の何れか一項に記載の方法で使用される、データパーツを送信する方法であって、
    − アプリケーションの実行に必要なデータパーツを送信するステップ(630)であって、前記アプリケーションは、アプリケーションのプログラムフローがアプリケーションのユーザによって少なくとも部分的に影響を受ける対話型アプリケーションであり、前記データパーツは少なくとも一部の領域において予期される必要な経時的順序に基づく物理的順序でデータメモリに格納され、前記予期される必要な経時的順序は、少なくとも前記アプリケーションのそれぞれの実行中に取得された多数の必要な経時的順序の組み合わせに基づくステップを備える、
    方法。
  14. 前記データパーツは少なくとも部分的に前記格納された順序で送信される、請求項13に記載の方法。
  15. 前記方法は、
    − 前記アプリケーションの実行に必要な前記データパーツの少なくとも一部を送信する要求を受信するステップ(610)、
    を更に備える、請求項13または14に記載の方法。
  16. 前記方法は、
    − 前記アプリケーションの実行のために前記アプリケーションに関連付けられるメタデータ情報を送信するステップ(630)、
    を更に備える、請求項13〜15の何れか一項に記載の方法。
  17. 少なくとも1つのデバイスによって実施されるデータパーツを格納する方法であって、
    − アプリケーションの実行に必要な前記データパーツの多数の取得された必要な経時的順序を受信するステップ(510)であって、前記アプリケーションは、アプリケーションのプログラムフローがアプリケーションのユーザによって少なくとも部分的に影響を受ける対話型アプリケーションであり、前記アプリケーションのそれぞれの実行に必要な前記データパーツの前記多数の取得された必要な経時的順序は、前記アプリケーションのそれぞれの実行中の前記必要なデータパーツに対する読み出し動作に関するログ情報を備えるステップと、
    − 前記多数の取得された必要な経時的順序の組み合わせに少なくとも基づいて、予期される必要な経時的順序を決定するステップ(520)と、
    − 少なくとも一部の領域において前記予期される必要な経時的順序に基づく物理的順序で前記必要なデータパーツをデータメモリに格納するステップ(530)と、
    を備える方法。
  18. 前記方法は、以下のステップ、
    − デバイスドライバ、好ましくはブロックデバイスドライバ、をインストールするステップ(310)、
    − イメージを生成するステップ(320)、
    − デバイスドライバを介して、具体的にはインストールされた前記デバイスドライバを介して、デバイスをマウントするステップ(330)、
    − 前記アプリケーションを、特に、生成された前記イメージ上にインストールするステップ(340)、
    − 前記アプリケーションの前記実行のために前記アプリケーションに関連付けられるメタデータ情報を決定するステップ(350)、
    − 前記アプリケーションを実行するステップ(360)、
    − アプリケーションの前記実行に必要な前記データパーツの前記必要な順序を取得するステップ(370)、
    のうちの1つ又は複数を更に備える、請求項17に記載の方法。
  19. 前記ログ情報は前記それぞれの必要なデータパーツの曖昧でない識別を可能にする、請求項17または18に記載の方法。
  20. 前記ログ情報はまた、以下の情報、
    − 時間情報、
    − アプリケーション特有のイベント、
    − ユーザ特有の情報、
    のうちの1つ又は複数を備える、請求項17〜19の何れか一項に記載の方法。
  21. 取得された必要な順序のうちの連続セクションの場合には、前記連続セクションは短縮される、請求項17〜20の何れか一項に記載の方法。
  22. 請求項1〜21の何れか一項に記載の方法を実施及び/又は制御する適切な手段として構成されるか又は前記手段を備えるデバイス。
  23. コンピュータプログラムがプロセッサ上で動作する場合、前記プロセッサが請求項1〜21の何れか一項に記載の方法を実施及び/又は制御することを可能にするプログラム命令を備えるコンピュータプログラム。
JP2018534086A 2015-10-29 2016-10-28 アプリケーションの実行を加速する方法及びデバイス Active JP6529678B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102015118522.9A DE102015118522A1 (de) 2015-10-29 2015-10-29 Verfahren und Vorrichtung zum beschleunigten Ausführen von Applikationen
DE102015118522.9 2015-10-29
PCT/EP2016/076111 WO2017072312A2 (de) 2015-10-29 2016-10-28 Verfahren und vorrichtung zum beschleunigten ausführen von applikationen

Publications (2)

Publication Number Publication Date
JP2018538637A JP2018538637A (ja) 2018-12-27
JP6529678B2 true JP6529678B2 (ja) 2019-06-12

Family

ID=57226961

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018534086A Active JP6529678B2 (ja) 2015-10-29 2016-10-28 アプリケーションの実行を加速する方法及びデバイス

Country Status (11)

Country Link
US (1) US11216286B2 (ja)
EP (1) EP3368975B1 (ja)
JP (1) JP6529678B2 (ja)
KR (1) KR102119832B1 (ja)
CN (2) CN108475203A (ja)
CA (1) CA3003543C (ja)
CY (1) CY1124987T1 (ja)
DE (2) DE102015118522A1 (ja)
ES (1) ES2904537T3 (ja)
PL (1) PL3368975T3 (ja)
WO (1) WO2017072312A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108389124B (zh) * 2018-02-26 2020-11-03 平安普惠企业管理有限公司 数据处理方法、装置、计算机设备和存储介质
JP6649989B2 (ja) * 2018-05-25 2020-02-19 株式会社日立製作所 ストレージシステム及びその制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819082A (en) 1995-06-07 1998-10-06 Sierra On-Line, Inc. Data storage optimization using an access order resource list
US20010044850A1 (en) 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US20030142561A1 (en) * 2001-12-14 2003-07-31 I/O Integrity, Inc. Apparatus and caching method for optimizing server startup performance
US7464250B2 (en) 2004-03-11 2008-12-09 International Business Machines Corporation Method to reduce disk access time during predictable loading sequences
JP4625271B2 (ja) * 2004-05-26 2011-02-02 株式会社日立製作所 ネットワークブート用キャッシュ装置
US8607005B2 (en) 2006-02-17 2013-12-10 International Business Machines Corporation Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching
US10002000B2 (en) * 2007-04-09 2018-06-19 Open Invention Network, Llc Trace-assisted startup optimization from a virtual disk
US8141001B2 (en) 2008-07-09 2012-03-20 Harold Lee Peterson System, method and computer-readable medium for directing a computational system to defragment and maintain a disc memory
JP2010237837A (ja) * 2009-03-30 2010-10-21 Nec Corp ファイルシステム及びそのデータ再配置方法,プログラム
US10489295B2 (en) * 2012-10-08 2019-11-26 Sandisk Technologies Llc Systems and methods for managing cache pre-fetch

Also Published As

Publication number Publication date
US11216286B2 (en) 2022-01-04
CN116048409A (zh) 2023-05-02
PL3368975T3 (pl) 2022-02-28
CA3003543A1 (en) 2017-05-04
KR102119832B1 (ko) 2020-06-16
EP3368975B1 (de) 2022-01-05
DE102015118522A1 (de) 2017-05-04
CA3003543C (en) 2021-03-23
DE202016009093U1 (de) 2022-03-29
CY1124987T1 (el) 2023-01-05
US20180246737A1 (en) 2018-08-30
WO2017072312A2 (de) 2017-05-04
EP3368975A2 (de) 2018-09-05
JP2018538637A (ja) 2018-12-27
WO2017072312A3 (de) 2017-07-27
KR20180100111A (ko) 2018-09-07
ES2904537T3 (es) 2022-04-05
CN108475203A (zh) 2018-08-31

Similar Documents

Publication Publication Date Title
US10474397B2 (en) Unified indirection in a multi-device hybrid storage unit
US10432723B2 (en) Storage server and storage system
US9348842B2 (en) Virtualized data storage system optimizations
US20090132621A1 (en) Selecting storage location for file storage based on storage longevity and speed
US9075528B2 (en) High-efficiency virtual disk management system
US9609044B2 (en) Methods, systems, and media for stored content distribution and access
US8732355B1 (en) Dynamic data prefetching
CN108475201B (zh) 一种虚拟机启动过程中的数据获取方法和云计算系统
US20160342542A1 (en) Delay destage of data based on sync command
US20230306010A1 (en) Optimizing Storage System Performance Using Data Characteristics
JP6095539B2 (ja) I/o処理制御装置及びi/o処理制御方法
US20140082275A1 (en) Server, host and method for reading base image through storage area network
CN112486858A (zh) 一种数据预取方法以及装置
JP6529678B2 (ja) アプリケーションの実行を加速する方法及びデバイス
US9575680B1 (en) Deduplication rehydration
US20210291049A1 (en) Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data
US10430287B2 (en) Computer
EP4020197A1 (en) Methods and apparatus for loading of a container image
US11132128B2 (en) Systems and methods for data placement in container-based storage systems
CN113110849A (zh) 按需加载资源
US9785350B2 (en) Data storage device having a virtual machine
JP2010170268A (ja) ストレージシステムの制御方法、ストレージ制御装置及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181017

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190415

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190514

R150 Certificate of patent or registration of utility model

Ref document number: 6529678

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250