JP6245532B2 - 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、方法、ストレージデバイス、ブートファイルプリフェッチシステム、プログラム、及び、コンピュータ可読記録媒体 - Google Patents

先読み技術を利用して行われる、システムのオペレーティングシステムのブート、方法、ストレージデバイス、ブートファイルプリフェッチシステム、プログラム、及び、コンピュータ可読記録媒体 Download PDF

Info

Publication number
JP6245532B2
JP6245532B2 JP2016008317A JP2016008317A JP6245532B2 JP 6245532 B2 JP6245532 B2 JP 6245532B2 JP 2016008317 A JP2016008317 A JP 2016008317A JP 2016008317 A JP2016008317 A JP 2016008317A JP 6245532 B2 JP6245532 B2 JP 6245532B2
Authority
JP
Japan
Prior art keywords
file
processor
boot
storage device
procedure
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
JP2016008317A
Other languages
English (en)
Other versions
JP2016119108A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2016119108A publication Critical patent/JP2016119108A/ja
Application granted granted Critical
Publication of JP6245532B2 publication Critical patent/JP6245532B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Description

コンピュータシステムは、ハードウェア、ファームウェア、およびソフトウェアの組み合わせによって形成されている。コンピュータシステムは通常、1以上のプロセッサと、メモリと、周辺機器および入出力(I/O)デバイス等とを備える。コンピュータシステム上では、オペレーティングシステム(OS)の制御の下、OSのシステムサービスを利用して、さまざまなユーザアプリケーションが実行される。オペレーティングシステムの例を挙げると、Linux(登録商標)およびWindows(登録商標)がある。
ユーザがコンピュータシステムの利用を開始する前に、コンピュータシステムの電源が入れられるとブートプロセスが実行されて、オペレーティングシステムの主要機能部分であるOSカーネルが開始される。一般的なシステムでは、オペレーティングシステムがブートされる前に、BIOS(Basic Input/Output System)ファームウェアが通常実行されてさまざまなセルフテスト等の機能を実行した後、OSブートローダに制御が移される。OSブートローダは、オペレーティングシステムの一部で、ユーザにログインさせるための表示を開始するためのグラフィクス機能を提供することを始めとするさまざまなシステム機能を実現するために必要な、多岐にわたるカーネルアイテムをロードするべく利用される。
システムの起動に要する時間は、コンピュータシステムの速度を説明する際にユーザが考慮する要因のうち1つである。OSソフトウェアの一層の増加に伴い、OSのブート時間にも影響が及び、遅れが生じている。このような遅れは、ユーザにとって望ましいものではない。
本発明の実施形態に応じたコンピュータシステムを示すブロック図である。
本発明の実施形態に応じたシステム起動方法の全体的な流れを示すフローチャートである。
本発明の一実施形態に応じた最適化プロセスを示すフローチャートである。
本発明の一実施形態に応じた最適化起動プロセスを示すフローチャートである。
本発明の実施形態に係るシステムを示すブロック図である。
さまざまな実施形態において、OSカーネルの一部であるシステム起動マネージャは、効率良くOSを起動させるべくさまざまなサブ機能を持つとしてよい。一実施形態によると、システム起動マネージャは、先読みプロファイルコレクタ、プロファイルオプティマイザ、データ先読みエージェント、および、プロセスランチャを有するとしてよい。しかし、実施形態によって異なる機能部を設けるとしてよいものと理解されたい。さらに、実施例によって、それぞれのサブ機能を実行する1以上のコンポーネントは異なるものと理解されたい。また、システム起動マネージャを実行する度に、全ての機能を実行する必要はない。このため、プロファイル機能および最適化機能の実行は省略され得る。例えば、これらの機能は、システムの電源が最初に入れられた際に実行されて、OSブート中に実行されるべきファイルのリストを生成および最適化するとしてよい。この後、システムの電源が入る度にこれらの機能を実行する必要はない。これに代えて、さまざまな実施形態によると、これらの機能がその後実行されるのは、システムを更新する際のみとしてもよい。さまざまなレベルの更新によって、これらの機能の実行がトリガされるとしてよい。例えば、一部の実施例においてこれらの機能がトリガされるのは、OSサービスパックの更新のような大規模な更新の際のみとしてもよい。しかし、別の実施例では、セキュリティアップデート等のより小規模な更新を実行する際に、このような機能をより定期的に実行するとしてもよい。
上述したように、さまざまな実施形態において、システム起動マネージャはOSカーネルの一部であってよい。言うまでもなく、本発明の範囲はこれに限定されるものではなく、ユーザレベル空間でほかの実施例を実装するとしてもよい。図1を参照して、システム起動マネージャがどのような状況で動作するかをより詳細に説明する。図1は、本発明の実施形態に係るコンピュータシステムを示すブロック図である。
図1に示すように、コンピュータシステム10は、ハードウェア20と、OSカーネル30と、アプリケーション40とを含む複数の層を備えるように抽象化される。アプリケーション40は、OSカーネル30のさまざまな機能を用いてハードウェア20上で実行されるさまざまなユーザレベルソフトウェアアプリケーションであってよい。図1から分かるように、ハードウェア20はプロセッサ22を有するとしてよい。プロセッサ22は、例えば、1以上のマルチコアプロセッサであってよい。プロセッサ22はメモリ24に接続されるとしてよい。メモリ24は、より詳細に後述するが、DRAM(ダイナミック・ランダム・アクセス・メモリ)等の揮発性メモリであってよく、OSディスクキャッシュとして機能するとしてよい。さらに、1以上の入出力(I/O)デバイス/周辺機器26を有するとしてよい。I/Oデバイス/周辺機器26には、例えば、ディスプレイ、ネットワークインターフェース、回転ディスク(例えば、ハードドライブ)またはSSD(Solid State Disk)等の大容量ストレージが含まれるとしてよい。上述したようなハードウェアコンポーネントを備えるものとして図示されているが、代表的なシステムはこれら以外にも多くの同様のコンポーネントを備え得るものと理解されたい。
OSカーネル30の制御下でハードウェア20を用いてさまざまな処理が実行されるとしてよい。OSカーネル30は通常、システムまたはアプリケーション40が要求するさまざまな機能を実行し得る。本発明の実施形態に応じた起動方法を可能とするべく、システム起動マネージャ32が設けられているとしてよい。OSカーネル30にはさらに、その他のさまざまなマネージャおよび制御モジュールが設けられるとしてよい。代表的な例を挙げると、さまざまなプロセスについて生成、消去、および処理を実行するべく用いられ得るプロセス制御マネージャ36、プロセス間通信マネージャ34がある。さらに、ハードウェアまたはソフトウェアから受信するさまざまな割り込みに応答するべく用いられる割り込みハンドラ38が設けられるとしてよい。言うまでもなく、OSカーネル30は、さらに多くの同様のコンポーネントを有するとしてよい。アプリケーション40は、OSカーネル30を用いて実行されるさまざまなユーザレベルアプリケーションを有するとしてよい。図1にはこのような具体的な例を図示しているが、本発明の範囲はこれに限定されない。
上述したように、一実施形態によると、システム起動マネージャ32は、プロファイルコレクタ、プロファイルオプティマイザ、先読みエージェント、および、プロセスランチャを有するとしてよい。システム起動マネージャの一般的なタスクは、システムの状態を「オペレーティングシステムカーネル開始」状態から「すべてのユーザインタラクションについて準備完了」状態へと移行させることである。例を挙げると、このようなOSカーネル起動には、ファイルシステムのチェックおよび実装ならびにバックグラウンドタスクおよびクリティカルタスクを実行するさまざまなプロセスの開始といったタスクを完全に理解することを含むとしてよい。OSがLinux(登録商標)である場合に行われるタスクの例を挙げると、Xサーバ、さまざまなデーモン等を起動することを含むとしてよい。
図2は、本発明の実施形態に係るシステム起動方法の全体的な流れを示すフローチャートである。より具体的に説明すると、方法100は、最初のプロファイリングを実行して、最適化処理を実行すると共に、そのような最適化処理の後にさらに起動を行うべく用いられ得る。図2から分かるように、最初に、システム起動の際に、システムの電源が入れられるのはこれが最初か否かを判断する(ひし形105)。例えば、この判断は、システムが以前に電源を入れられたことがあるか否かを示す指標(例えば、ファイルシステムにあるフラグ、または、以前に作成された先読みリストがないこと)を確認することによって為されるとしてよい。電源が入れられるのは最初であると判断される場合、ブロック110に進み、システム起動が実行され得る。この起動処理は、ディスクアクセスによってメモリからファイルを取得して、ファイルをプロセスランチャに与えて、ファイルを実行してさまざまなプロセスを起動する従来の起動処理であってよい。このシステム起動中に、ファイルのリストを生成するとしてよい(ブロック120)。より具体的に説明すると、このシステム起動は、ファイルのリストを作成するプロファイリングコレクションであってよい。一実施形態によると、このリストは、ファイル識別子と、各ファイルに対応付けられている時間指標とを含むとしてよい。例を挙げると、時間指標は、システム起動開始からの時間を測定した結果(例えば、ミリ秒(ms))であってもよいし、または、プロセスランチャを用いてファイルが起動された順序を示すシーケンス番号であってもよい。どちらの場合であっても、リストは、ファイル識別子と、ファイルが実行された順序を示す指標とを含む。
この後、プロファイル最適化を実行して、最適化ファイルリストを生成するとしてよい(ブロック130)。以下でさらに説明するが、このような最適化の目的は、ファイルをストレージ内の対応する位置から取得するために必要なシーク時間を短縮することにあるとしてよい。最適化ファイルリストはその後、格納媒体に格納されるとしてよい(ブロック140)。例えば、最適化ファイルリストは、OSファイルを含む格納媒体と同じ格納媒体、例えば、ディスクドライブまたはソリッドステートディスク等の大容量ストレージデバイスに格納するとしてよい。この時点において、最適化が完了して、通常のOS処理が実行されるとしてよい。
この後でシステムの電源が入ると、システムが更新されたか否かを判断するとしてよい(ひし形150)。更新の種類によってこの判断の結果が肯定的または否定的となるとしてよい。例えば、上述したように、この判断の結果が肯定的となるのは、新しいサービスパック等大規模なシステム更新が行われた場合のみとしてもよいし、別の実施例では、より小規模な更新でもこの判断の結果が肯定的となるとしてよい。更新が行われたと判断された場合、上述した内容のブロック110に戻る。更新が行われなかったと判断された場合、ブロック160に進み、先読みエージェントが最適化ファイルリストに基づき起動ファイルの先読みを実行するとしてよい。ファイルのうち所定量をOSディスクキャッシュ空間に先読みすることに成功すると、ブロック170に進み、先読みされた起動ファイルが存在する旨の通知がプロセスランチャに送られるとしてよい。この結果、プロセスランチャは、大容量ストレージに対してファイルを要求する必要がなくなり、OSキャッシュから起動ファイルを直接実行できるようになる(ブロック180)。尚、ブロック160、170、および180の処理は、OSカーネルが完全にブートされるまで、繰り返し且つ並行して実行されるとしてもよい。実施形態として図2には上述した具体的な実施例を図示しているが、本発明の範囲はこれに限定されない。
以下では、システム起動マネージャのコンポーネントが実行するさまざまな処理をさらに詳細に説明する。最初のシステム起動時(および、特定の更新の後)に行われるプロファイルコレクション実行処理において、先読みプロファイルコレクタコンポーネントがプロファイルを収集する。先読みプロファイルコレクタコンポーネントは、どのファイルが利用されたか、および、ブートプロセス中のどのタイミングにおいて利用されたかを記録する。
プロファイルオプティマイザが実行するプロファイル最適化フェーズにおいて、記録されたプロファイルは、その後利用されるべく、最適データセットに変換される。具体的に説明すると、プロファイルオプティマイザは、システムがソリッドステートディスク(SSD)(シーク時間なし)を実行しているか、システムは回転式ストレージ(シーク時間が非常に長い)を有しているかを検出する。「シーク時間なし」の場合、プロファイル最適化フェーズは、プロファイルのファイルのリストを初回利用に応じてソートすることと、ファイルのどの部分が実際に利用されたかを検出することとを含む。SSDの場合、OSブート中に利用されたファイルの指標と、これらのファイルの利用された部分を示す指標とを含む最適化ファイルリストを生成するとしてよい。このリストはさらに、初回利用タイミングに応じて、つまり順序に応じて、ソートされるとしてよい。
回転式ストレージの場合、これらの処理に加えて、回転式ストレージに関する物理的な制約、つまりシーク時間に対応するべくさらに処理を実行する。回転式ストレージの場合、プロファイルのファイルリストはまず、初回利用タイミングに応じてソートされる。つまり、元々のリストは、初回利用に応じて、順序付けられたリストに作り変えられる。ソート後のリストは、それぞれがブート中の一定期間(例えば1秒)またはディスクから読み出されるデータの一定量を表す複数のグループに分割される。そして、各グループの内容は、ファイルの先頭セクタ番号に応じて各グループのファイルをソートすることによって、シーク回数を低減するように最適化されるとしてよい。
尚、このプロセス中において、オプティマイザはさらに、リスト全体を走査して、ブートプロセス中にアクセスされた(が、別のグループに含まれている)ファイルの中に、最適化処理が行われている現在のグループに含まれているファイルと同位置にあるファイルがあるか否かを判断するとしてよい。このようなファイルがあれば、現在のグループに追加して、ディスクアクセス回数を低減するとしてよい。本発明の範囲はこれに限定されないが、2つのファイルが同位置にあるとみなされるか否かは、両ファイル間の距離に応じて決まるとしてよい。一部の実施形態では、同位置にあることとは、同じトラックにあること、または、隣接するセクタにあることに対応するとしてよい。このように、所与のファイルは、後続のグループのファイルと共にプロセスランチャによってアクセスされるが、上述したような同位置の条件を満たしているので、先立ってOSディスクキャッシュにプリフェッチされるという効果がある。
このように2段階でソートを行うことによって、ファイルリストは、粗ソートレベルで時間に応じてソートされるが、粗ソート後のグループ内でシーク時間を短縮するようにソートされる。この結果得られる最適化ファイルリストはさらに、ファイルに関するメタデータを含むとしてよい。例えば、最適化ファイルリストのデータ構造(OSファイルが格納されている格納媒体と同様の格納媒体に格納され得る)では、グループ間の境界にマークを付けることができる。また、「重要ファイル」に特にマークを付けることもできる。このような「重要ファイル」は通常、ブート中に開始されるべきデーモンのアプリケーションバイナリファイル(つまり、実行可能(.exe)ファイル)である。
図3は、本発明の一実施形態に係る最適化プロセスを示すフローチャートである。当該最適化プロセスは、一部の実施形態において、OSカーネルのシステム起動マネージャのプロファイルオプティマイザによって実行され得る。図3に示すように、方法200は、OSファイルがソリッドステートディスクに格納されているか、回転式ストレージに格納されているかを判断することから開始されるとしてよい(ブロック210)。OSファイルがソリッドステートディスクに格納されている場合、ブロック220に進んで、初回利用タイミングに応じてファイルをソートすることによって、最適化を実行するとしてよい(ブロック220)。また、この結果得られる最適化ファイルリストは、重要ファイルのフラグ等のメタデータを含むとしてよい(ブロック225)。
回転式ストレージが設けられている場合、ブロック230に進む。ブロック230において、初回利用タイミングに応じてファイルをソートするとしてよい。しかし、図3に示すように、さらに最適化処理が実行されるとしてよい。具体的に説明すると、ファイルを複数のグループに分割するとしてよい(ブロック240)。グループは、上述したように、所定量の時間またはデータに対応するとしてよい。そして、それぞれのグループ内で、ディスク位置に応じてソートを実行するとしてよい(ブロック250)。つまり、あるグループ内で、先頭セクタ番号に応じて、ファイルを並べ替えるとしてよい。別の実施例によると、ファイル名のアルファベット順に応じて並び替えるとしてもよい。最後に、最適化リストを生成する際に、重要ファイルにフラグをつけるとしてもよい。また、グループ間の境界にもマークをつけるとしてよい(ブロック260)。実施形態として図3には上述した具体的な実施例を図示したが、本発明の範囲はこれに限定されない。
最適化後、リストは通常のシステム起動で利用されるとしてよい。起動の初期段階で、システム起動マネージャは、データ先読みエージェントサブコンポーネントをアクティブ化する。データ先読みエージェントは、格納媒体からリストを取得して、リストに記載されているファイルをオペレーティングシステムディスクキャッシュ(DRAMであってよい)に1つずつ読み出す。一実施形態によると、SSDストレージに格納されている場合、マルチスレッド方式で読出しを行うとしてよく、回転式ストレージに格納されている場合はシングルスレッド方式で読出しを行うとしてよい。先読みエージェントは、重要ファイルを発見すると、ディスクキャッシュへの読出しの完了を、メモリに格納されている完了リストに記録する。先読みエージェントが各グループの末尾に到達する度に、当該グループ内で発見されて完了リストに記録された重要ファイルを、プロセスランチャコンポーネントに通知する。特定の実施例によると、SSDの場合、このような通知を行わないとしてよい。
プロセスランチャコンポーネントは、メモリに、開始すべきアプリケーションの従来のリストを格納している。プロセスランチャは、依然としてこのリストに記載されている順序でファイルを起動するが、さまざまな実施形態では、先読みエージェントがファイル(および当該ファイルが含まれるグループの残り)の先読みタスクが完了したと通知するまで、プロセスの起動を遅延させる。このような遅延を設けることによって、プロセスランチャによるプロセスの起動は、実際にはディスクI/Oを発生させない(これは、全てのデータが、プロセスが開始されるまでにはOSキャッシュに入っているためである)。このため、このようなディスクI/Oが、先読みエージェントが実行している、注意深くソートされたシークを低減するI/Oパターンを乱す危険性がなくなる。このような遅延を設けることによって実際には、ブートパフォーマンスを向上させることができる。これは、最適I/Oパターンの場合、I/Oパターンが乱される場合に比べて、ディスク速度が10倍から50倍以上高速化されるためである。
図4は、本発明の一実施形態に係る最適化起動プロセスを示すフローチャートである。図4に示すように、方法300は通常、参照番号310で示す一連のフローに図示する先読みエージェントと、参照番号370で示す一連のフローに図示するプロセスランチャとを並行に実行することによって開始されるとしてよい。尚、一般的には、先読みエージェントがプロセスランチャが実行される前にファイルの読出しを開始するべく実行されるとしてよいが、本発明の範囲はこれに限定されない。
先読みエージェントについて、OS格納部、例えば大容量メモリから一度に1つのファイルが読み出されて、OSディスクキャッシュに格納される(ブロック320)。読み出されてOSディスクキャッシュに格納されたファイル毎に、当該ファイルが重要ファイルであるか否か、または、グループの末尾であるか否かを判断するとしてよい(ブロック330)。重要ファイルでもグループの末尾でもなければ、ブロック320に戻る。重要ファイルであるか、または、グループの末尾であれば、ブロック340に進んで、(重要ファイルであれば)ファイル指標を完了リストに格納する。ブロック350においてグループの末尾であると判断されれば、ブロック360に進み、完了リストを(通知365によって)プロセスランチャに送信するとしてよい。
図4に示すように、プロセスランチャの一連のフローは、開始すべき次のプログラムを特定することから開始される(ブロック375)。プログラムの特定は、上述したように、プロセスランチャが保有しているファイルのリストまたはプロセスランチャがアクセスするファイルのリストを参照して行われるとしてよい。しかし、プロセスランチャは、次のプログラムを実行する前に、このプログラムがOSディスクキャッシュ空間に存在する旨の通知を先読みエージェントから受信するまで、待機状態に入るとしてよい(ブロック380)。したがって、(ファイルが先には存在していなかったことを前提として)この通知を受信すると、プログラムを実行するとしてよい(ブロック390)。実施形態として図4には具体的な実施例を図示したが、先読みエージェントとプロセスランチャとの間でのインタラクションおよび通知は他の実施形態でも可能である。このため、実施形態によれば、高効率なソート順序が提供され、プロセス/デーモンの開始を、先読みの進捗状況に対応付ける(つまり、開始されないようにする)。
実施形態は、多くの異なる種類のシステムにおいて実装され得る。図5は、本発明の実施形態に係るシステムを示すブロック図である。図5に示すように、マルチプロセッサシステム500は、ポイント・ツー・ポイント・インターコネクトシステムであって、ポイント・ツー・ポイント・インターコネクト550によって互いに接続された第1のプロセッサ570および第2のプロセッサ580を備える。図5に示すように、プロセッサ570および580はそれぞれ、マルチコアプロセッサであってよく、第1および第2のプロセッサコア(つまり、プロセッサコア574aおよび574bならびにプロセッサコア584aおよび584b)を有するが、プロセッサが備えるコアの数はこれより多くてもよい。プロセッサコアは、本発明の実施形態に応じて、大容量ストレージデバイスに格納されている1以上のOSを起動時にブートするとしてよい。また、プロセッサは、本発明の実施形態に応じて、OSカーネルの一部分を実行して起動ファイルリストの最適化を行うとしてよい。
図5を参照しつつ説明を続けると、第1のプロセッサ570はさらに、メモリコントローラハブ(MCH)572と、ポイント・ツー・ポイント(P−P)インターフェース576および578とを有する。同様に、第2のプロセッサ580は、MCH582と、P−Pインターフェース586および588とを有する。図5に示すように、MCH572および582は、プロセッサを対応するメモリ、つまりメモリ532およびメモリ534に接続する。メモリ532および534は、メインメモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM))のうち対応するプロセッサに局所的に結合されている部分であってよく、ブートプロセス中にアクセスされるべきファイルを格納するOSディスクキャッシュとして機能するとしてよい。第1のプロセッサ570および第2のプロセッサ580はそれぞれ、P−Pインターコネクト552および554によって、チップセット590に接続されるとしてよい。図5に示すように、チップセット590は、P−Pインターフェース594および598を含む。
さらに、チップセット590は、P−Pインターコネクト539によってチップセット590と高機能グラフィクスエンジン538とを接続するインターフェース592を含む。チップセット590はまた、インターフェース596によって第1のバス516に接続されるとしてもよい。図5に示すように、第1のバス516には、さまざまな入出力(I/O)デバイス514、および、第1のバス516を第2のバス520に接続するバスブリッジ518が接続されるとしてよい。第2のバス520に接続されるさまざまなデバイスには、例えば、キーボード/マウス522、通信デバイス526、および、コード530を含み得るディスクドライブ等のデータストレージユニット528が含まれ、一実施形態ではOSを含む。言うまでもなく、他の実施形態は、OSが格納されるディスクドライブに代えて、または、そのようなディスクドライブに加えて、SSDを備えるシステムとして実施されるとしてもよい。また、第2のバス520には、オーディオI/O524が接続されるとしてもよい。
実施形態は、コードとして実装されて、命令を格納する格納媒体に格納されるとしてもよい。当該命令を用いて、当該命令を実行するようにシステムをプログラムし得る。格納媒体としては、これらに限定されるものではないが、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク(登録商標)リードオンリーメモリ(CD−ROM)、書き換え可能コンパクトディスク(登録商標)(CD−RW)および光磁気ディスク等の任意の種類のディスク、リードオンリーメモリ(ROM)等の半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)等のランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM(登録商標))、磁気カードあるいは光カード、または、電子命令を格納するのに適したその他の任意の種類の媒体、を含むとしてよい。
限られた数の実施形態を参照して本発明を説明したが、当業者であれば、数多くの変形例および変更例に想到するであろう。本願特許請求の範囲は、そのような変形例および変更例もすべて、本発明の真の精神および範囲に含まれるものとして扱う。
(項目1)
コンピュータシステムのプロセッサにおいて、上記コンピュータシステムのオペレーティングシステムブートプロセス(OSブートプロセス)中にアクセスされたファイルのリストを作成して、上記OSブートプロセスをプロファイリングする作成段階と、
上記プロセッサにおいて、上記ファイルがアクセスされたのが、ソリッドステート媒体からか、または、回転式媒体からかを判断する判断段階と、
上記ファイルのリストを最適化して、後続する上記コンピュータシステムのOSブートプロセスにおいて利用される最適化ファイルリストを作成する最適化段階と、
上記コンピュータシステムの格納媒体に上記最適化ファイルリストを格納する格納段階と、
を備え、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含み、
上記最適化段階は、上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第1の最適化技術に応じて実行され、上記ファイルが上記回転式媒体からアクセスされた場合は第2の最適化技術に応じて実行される、
方法。
(項目2)
上記最適化ファイルリストを用いて上記OSブートプロセスを実行して、上記アクセスされたファイルを取得して上記アクセスされたファイルの第1の部分をOSディスクキャッシュにロードして、且つ、上記第1の部分の上記ロードの完了の通知をプロセスランチャに送る実行段階、
をさらに備え、
上記プロセスランチャは、上記通知を受け取るまで上記第1の部分の第1のファイルを実行するのを待ち、入出力アクセスが上記第1のファイルを取得しないようにする、
項目1に記載の方法。
(項目3)
上記最適化ファイルリストに含まれる第1の種類のファイルを重要性指標によって特定する特定段階、
をさらに備える項目2に記載の方法。
(項目4)
上記通知を送ることは、上記最適化ファイルリストに含まれる上記第1の種類のファイルを特定する上記特定段階を含む、
項目3に記載の方法。
(項目5)
上記第1の最適化技術は、初回利用タイミングに応じて上記アクセスされたファイルをソートして、上記最適化ファイルリストを形成することを含む、
項目1に記載の方法。
(項目6)
上記第2の最適化技術は、上記初回利用タイミングに応じて上記アクセスされたファイルをソートして、ソート後の上記アクセスされたファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目5に記載の方法。
(項目7)
上記最適化ファイルリストに含まれる第1の種類のファイルを重要性指標によって特定するファイル特定段階と、
上記複数のグループの間の境界を特定する境界特定段階と、
をさらに備える項目6に記載の方法。
(項目8)
第1のグループに同位置ファイルを追加する追加段階、
をさらに備え、
上記同位置ファイルは、上記回転式媒体において、上記第1のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記OSブートプロセスにおいて、別のグループのファイルと共にOSディスクキャッシュからアクセスされる、
項目6に記載の方法。
(項目9)
オペレーティングシステム(OS)の最適化ルーチンを実行するプロセッサと、
上記プロセッサに接続されており、上記OSの少なくとも一部分を格納するOSディスクキャッシュと、
上記OSディスクキャッシュに接続されており、上記OSを格納するストレージデバイスと、
を備え、
上記最適化ルーチンは、上記OSのブート中に実行されるファイルのリストをソートして最適化ファイルリストを生成して、上記ストレージデバイスから上記ファイルを取得するために必要な入出力アクセス時間を低減するルーチンであり、
OSブート中に、上記最適化ファイルリストを用いて、上記OSディスクキャッシュに上記OSの第1の部分をロードして、上記第1の部分の上記ロードの完了の通知をプロセスランチャに送り、
上記プロセスランチャは、上記通知を受け取るまで、上記OSディスクキャッシュから上記第1の部分の第1のファイルにアクセスするのを待ち、入出力アクセスが上記第1のファイルを取得しないようにする、
システム。
(項目10)
上記最適化ルーチンは、上記最適化ファイルリストに含まれる第1の種類のファイルを重要性指標によって特定し、
上記OSブート中に上記通知を送ることは、上記第1の部分に含まれる上記第1の種類のファイルを特定することを含む、
項目9に記載のシステム。
(項目11)
上記最適化ルーチンは、上記ファイルがソリッドステート媒体からアクセスされた場合は、第1の最適化技術に応じて上記ファイルの上記リストを最適化して、上記ファイルが回転式媒体からアクセスされた場合は、第2の最適化技術に応じて上記ファイルの上記リストを最適化する、
項目9に記載のシステム。
(項目12)
上記第1の最適化技術は、初回利用タイミングに応じて、アクセスされた上記ファイルをソートして、上記最適化ファイルリストを形成することを含み、上記第2の最適化技術は、上記初回利用タイミングに応じて上記ファイルをソートして、ソート後の上記ファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目11に記載のシステム。
(項目13)
上記第2の最適化技術は、第1のグループに同位置ファイルを入れることを含み、
上記同位置ファイルは、上記回転式媒体において、上記第1のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記OSブート中に、別のグループのファイルと共に上記OSディスクキャッシュからアクセスされる、
項目12に記載のシステム。
(項目14)
上記最適化ルーチンは、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目9に記載のシステム。
(項目15)
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記OSに対してサービスパック更新が行われた後でのみ実行される、
項目14に記載のシステム。
(項目16)
複数の命令を格納する機械アクセス可能格納媒体を備える物品であって、上記複数の命令が実行されると、システムは、
大容量ストレージデバイスに格納されているオペレーティングシステム(OS)の所定の部分がOSディスクキャッシュに格納されるまで、上記OSから1つのファイルを順次読み出して、上記1つのファイルを上記OSディスクキャッシュに格納して、上記1つのファイルが第1の種類であれば完了リストにファイル指標を格納し、
上記OSの上記所定の部分が格納されると、プロセスランチャに上記完了リストを送信し、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記OSディスクキャッシュから上記次のファイルにアクセスし、
上記プロセスランチャは、上記OSディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
物品。
(項目17)
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
OSブート中にアクセスされたファイルのリストを作成して、上記OSブートをプロファイリングし、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目16に記載の物品。
(項目18)
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断し、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第1の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第2の最適化技術に応じて上記ファイルのリストを最適化する、
項目17に記載の物品。
(項目19)
上記複数の命令は、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目17に記載の物品。
(項目20)
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記OSに対してサービスパック更新が行われた後でのみ実行される、
項目19に記載の物品。
(項目16)
大容量ストレージデバイスに格納されているオペレーティングシステム(OS)の予め定められた部分がOSディスクキャッシュに格納されるまで、上記OSから1つのファイルを順次読み出して、上記1つのファイルを上記OSディスクキャッシュに格納して、上記1つのファイルが第1の種類であれば完了リストにファイル指標を格納する手順、
上記OSの上記予め定められた部分が格納されると、プロセスランチャに上記完了リストを送信する手順、および、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記OSディスクキャッシュから上記次のファイルにアクセスする手順、
をコンピュータに実行させ、
上記プロセスランチャは、上記OSディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
プログラム。
(項目17)
OSブート中にアクセスされたファイルのリストを作成して、上記OSブートをプロファイリングする手順、
をコンピュータにさらに実行させ、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目16に記載のプログラム。
(項目18)
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断する手順、および、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第1の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第2の最適化技術に応じて上記ファイルのリストを最適化する手順、
をコンピュータにさらに実行させる、
項目17に記載のプログラム。
(項目19)
コンピュータを、プロファイルコレクタ、プロファイルオプティマイザ、先読みエージェント、および上記プロセスランチャとして機能させる、
項目17に記載のプログラム。
(項目20)
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記OSに対してサービスパック更新が行われた後でのみ実行される、
項目19に記載のプログラム。

Claims (21)

  1. 複数のブートファイルをプリフェッチする方法であって、
    少なくとも1つのプロセッサが、通信可能に接続された回転式ストレージデバイス又は通信可能に接続されたソリッドステートストレージデバイスの少なくとも1つの存在を検出する手順と、
    前記少なくとも1つのプロセッサが、通信可能に接続され、ブート可能な回転式ストレージデバイスを検出したことに応じて、一のブートファイルプリフェッチを選択的に実行する手順と、
    前記少なくとも1つのプロセッサが、前記少なくとも1つのプロセッサと通信可能に接続され、ブート可能なソリッドステートストレージデバイスを検出したことに応じて、別のブートプロファイルプリフェッチを選択的に実行する手順と、
    を有し、
    前記一のブートファイルプリフェッチは、
    前記少なくとも1つのプロセッサが、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順と、
    前記少なくとも1つのプロセッサが、前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記少なくとも1つのプロセッサに通信可能に接続された回転式ストレージデバイスから、前記少なくとも1つのプロセッサに通信可能に接続されたキャッシュメモリへと移動させる手順と、
    を含む、
    方法。
  2. ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順は、
    前記少なくとも1つのプロセッサが、前記ブートシーケンスに含まれる前記少なくとも1つのファイルを特定するブートファイルログを作成する手順、
    をさらに含む、
    請求項に記載の方法。
  3. ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順は、
    前記少なくとも1つのプロセッサが、ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに含む、
    請求項又は請求項に記載の方法。
  4. 前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記少なくとも1つのプロセッサに通信可能に接続された回転式ストレージデバイスから、前記少なくとも1つのプロセッサに通信可能に接続されたキャッシュメモリへと移動させる手順は、
    前記少なくとも1つのプロセッサが、前記特定された複数のファイルのそれぞれを選択的に連続して移動させる手順であって、前記少なくとも1つのプロセッサが、前記回転式ストレージデバイスから前記キャッシュメモリに移動された先行ファイルを実行することと並行して、前記特定された複数のファイルのそれぞれが、前記回転式ストレージデバイスから前記キャッシュメモリへと移動される手順、
    をさらに含む、
    請求項に記載の方法。
  5. ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順は、
    前記少なくとも1つのプロセッサが、(i)最初のシステム起動時のブートシーケンス、(ii)システムが更新された後のブートシーケンス、又は、(iii)特定のシステム更新の後のブートシーケンスの間に、当該ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに含む、
    請求項から請求項までの何れか一項に記載の方法。
  6. 前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記少なくとも1つのプロセッサに通信可能に接続された回転式ストレージデバイスから、前記少なくとも1つのプロセッサに通信可能に接続されたキャッシュメモリへと移動させる手順は、
    前記少なくとも1つのプロセッサが、前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記回転式ストレージデバイスから、DRAM中のオペレーティングシステムキャッシュへと移動させる手順、
    をさらに含む、
    請求項から請求項までの何れか一項に記載の方法。
  7. 複数の機械可読命令を備えたストレージデバイスであって、
    前記複数の機械可読命令は、少なくとも1つのプロセッサによって実行されると、
    前記少なくとも1つのプロセッサに、
    ブートシーケンスに含まれる少なくとも1つのファイルを特定し、
    前記少なくとも1つのファイルの少なくとも一部の実行に先だって、前記特定された少なくとも1つのファイルを、通信可能に接続された回転式ストレージデバイスからキャッシュメモリへと移動させるべく、
    前記通信可能に接続された回転式ストレージデバイスを検出したことに応じて、第1のブートファイルプリフェッチを選択的に実行する手順と、
    通信可能に接続されたソリッドステートストレージデバイスを検出したことに応じて、第2のブートファイルプリフェッチを選択的に実行する手順と、
    を実行させるためのものであり、
    前記第2のブートファイルプリフェッチは、前記第1のブートファイルプリフェッチとは異なる、
    ストレージデバイス。
  8. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    前記ブートシーケンスに含まれる前記少なくとも1つのファイルを特定するブートログファイルを作成する手順、
    をさらに実行させるためのものである、
    請求項に記載のストレージデバイス。
  9. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに実行させるためのものである、
    請求項又は請求項に記載のストレージデバイス。
  10. 前記少なくとも1つのプロセッサに、前記少なくとも1つのファイルの少なくとも一部の実行に先だって、前記特定された少なくとも1つのファイルを、前記通信可能に接続された回転式ストレージデバイスからキャッシュメモリへと移動させる手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    前記特定された複数のファイルのそれぞれを選択的に連続して移動させる手順であって、前記少なくとも1つのプロセッサが、前記通信可能に接続された回転式ストレージデバイスから前記キャッシュメモリに移動された先行ブートファイルを実行することと並行して、前記特定された複数のファイルのそれぞれが、前記通信可能に接続された回転式ストレージデバイスから前記キャッシュメモリへと移動される手順、
    をさらに実行させるためのものである、
    請求項に記載のストレージデバイス。
  11. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    (i)最初のシステム起動時のブートシーケンス、(ii)システムが更新された後のブートシーケンス、又は、(iii)特定のシステム更新の後のブートシーケンスの間に、当該ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに実行させるためのものである、
    請求項から請求項10までの何れか一項に記載のストレージデバイス。
  12. 前記少なくとも1つのプロセッサに、前記少なくとも1つのファイルの少なくとも一部の実行に先だって、前記特定された少なくとも1つのファイルを、前記通信可能に接続された回転式ストレージデバイスからキャッシュメモリへと移動させる手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記回転式ストレージデバイスから、DRAM中のオペレーティングシステムキャッシュへと移動させる手順、
    をさらに実行させるためのものである、
    請求項から請求項11までの何れか一項に記載のストレージデバイス。
  13. ブートファイルプリフェッチシステムであって、
    少なくとも1つのプロセッサと、
    複数の機械可読命令を備えた少なくとも1つのストレージデバイスと、
    を備え、
    前記複数の機械可読命令は、前記少なくとも1つのプロセッサによって実行されると、
    前記少なくとも1つのプロセッサに、
    通信可能に接続された回転式ストレージデバイス又は通信可能に接続されたソリッドステートストレージデバイスの少なくとも1つの存在を検出する手順と、
    通信可能に接続され、ブート可能な回転式ストレージデバイスを検出したことに応じて、一のブートファイルプリフェッチを選択的に実行する手順と、
    通信可能に接続され、ブート可能なソリッドステートストレージデバイスを検出したことに応じて、別のブートファイルプリフェッチを選択的に実行する手順と、
    を実行させるためのものであり、
    前記一のブートファイルプリフェッチは、
    前記少なくとも1つのプロセッサに、
    ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順と、
    前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、前記少なくとも1つのプロセッサに通信可能に接続された回転式ストレージデバイスから、前記少なくとも1つのプロセッサに通信可能に接続されたキャッシュメモリへと移動させる手順と、
    を実行させるためのものである、
    ブートファイルプリフェッチシステム。
  14. 前記少なくとも1つのプロセッサに通信可能に接続された少なくとも1つの回転式ストレージデバイスと、
    前記少なくとも1つのプロセッサに通信可能に接続された少なくとも1つのキャッシュメモリと、
    をさらに備える、
    請求項13に記載のブートファイルプリフェッチシステム。
  15. 前記少なくとも1つのプロセッサに通信可能に接続された、前記少なくとも1つのキャッシュメモリは、
    前記少なくとも1つのプロセッサと通信可能に接続された少なくとも1つのDRAM中のオペレーティングシステム(O/S)キャッシュを含む、
    請求項14に記載のブートファイルプリフェッチシステム。
  16. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    前記ブートシーケンスに含まれる前記少なくとも1つのファイルを特定するブートファイルログを作成する手順、
    をさらに実行させるためのものである、
    請求項13から請求項15までの何れか一項に記載のブートファイルプリフェッチシステム。
  17. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに実行させるためのものである、
    請求項13から請求項16までの何れか一項に記載のブートファイルプリフェッチシステム。
  18. 前記少なくとも1つのプロセッサに、前記少なくとも1つのファイルの実行に先だって、前記特定された少なくとも1つのファイルを、回転式ストレージデバイスからキャッシュメモリへと移動させる手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    前記特定された複数のファイルのそれぞれを選択的に連続して移動させる手順であって、前記少なくとも1つのプロセッサが、前記回転式ストレージデバイスから前記キャッシュメモリに移動された先行ファイルを実行することと並行して、前記特定された複数のファイルのそれぞれが、前記回転式ストレージデバイスから前記キャッシュメモリへと移動される手順、
    をさらに実行させるためのものである、
    請求項17に記載のブートファイルプリフェッチシステム。
  19. 前記少なくとも1つのプロセッサに、ブートシーケンスに含まれる少なくとも1つのファイルを特定する手順を実行させるための前記複数の機械可読命令は、
    前記少なくとも1つのプロセッサに、
    (i)最初のシステム起動時のブートシーケンス、(ii)システムが更新された後のブートシーケンス、又は、(iii)特定のシステム更新の後のブートシーケンスの間に、当該ブートシーケンスに含まれる複数のファイルのそれぞれを特定する手順、
    をさらに実行させるためのものである、
    請求項13から請求項18までの何れか一項に記載のブートファイルプリフェッチシステム。
  20. 前記少なくとも1つのプロセッサに、請求項から請求項までの何れか一項に記載の方法を実行させるためのプログラム。
  21. 請求項20に記載のプログラムを格納した、コンピュータ可読記録媒体。
JP2016008317A 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、方法、ストレージデバイス、ブートファイルプリフェッチシステム、プログラム、及び、コンピュータ可読記録媒体 Active JP6245532B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/426,582 US8230208B2 (en) 2009-04-20 2009-04-20 Booting an operating system of a system using a read ahead technique
US12/426,582 2009-04-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014246062A Division JP6033274B2 (ja) 2009-04-20 2014-12-04 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、プログラム及びコンピュータシステム

Publications (2)

Publication Number Publication Date
JP2016119108A JP2016119108A (ja) 2016-06-30
JP6245532B2 true JP6245532B2 (ja) 2017-12-13

Family

ID=42226648

Family Applications (6)

Application Number Title Priority Date Filing Date
JP2010090099A Active JP5101653B2 (ja) 2009-04-20 2010-04-09 先読み技術を利用して行われる、システムのオペレーティングシステムのブート
JP2012212875A Expired - Fee Related JP5662398B2 (ja) 2009-04-20 2012-09-26 先読み技術を利用して行われる、システムのオペレーティングシステムのブート
JP2014246062A Active JP6033274B2 (ja) 2009-04-20 2014-12-04 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、プログラム及びコンピュータシステム
JP2016008323A Active JP6274676B2 (ja) 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、ストレージデバイス、システム、方法、プログラム、及び、コンピュータ可読記録媒体
JP2016008317A Active JP6245532B2 (ja) 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、方法、ストレージデバイス、ブートファイルプリフェッチシステム、プログラム、及び、コンピュータ可読記録媒体
JP2016008314A Active JP6221086B2 (ja) 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、プリフェッチコントローラ、ストレージデバイス、方法、プログラム、及び、コンピュータ可読記録媒体

Family Applications Before (4)

Application Number Title Priority Date Filing Date
JP2010090099A Active JP5101653B2 (ja) 2009-04-20 2010-04-09 先読み技術を利用して行われる、システムのオペレーティングシステムのブート
JP2012212875A Expired - Fee Related JP5662398B2 (ja) 2009-04-20 2012-09-26 先読み技術を利用して行われる、システムのオペレーティングシステムのブート
JP2014246062A Active JP6033274B2 (ja) 2009-04-20 2014-12-04 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、プログラム及びコンピュータシステム
JP2016008323A Active JP6274676B2 (ja) 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、ストレージデバイス、システム、方法、プログラム、及び、コンピュータ可読記録媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016008314A Active JP6221086B2 (ja) 2009-04-20 2016-01-19 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、プリフェッチコントローラ、ストレージデバイス、方法、プログラム、及び、コンピュータ可読記録媒体

Country Status (4)

Country Link
US (5) US8230208B2 (ja)
EP (4) EP2251781B1 (ja)
JP (6) JP5101653B2 (ja)
CN (1) CN101866293B (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230208B2 (en) * 2009-04-20 2012-07-24 Intel Corporation Booting an operating system of a system using a read ahead technique
US8321630B1 (en) * 2010-01-28 2012-11-27 Microsoft Corporation Application-transparent hybridized caching for high-performance storage
US8549173B1 (en) * 2009-09-29 2013-10-01 Google Inc. User-space resource management
US20110119756A1 (en) * 2009-11-18 2011-05-19 Carefx Corporation Method Of Managing Usage Of A Workstation And Desktop Management System Therefor
FR2957700B1 (fr) * 2010-03-22 2012-04-13 Bull Sas Procede, programme d'ordinateur et dispositif d'optimisation de chargement et de demarrage d'un systeme d'exploitation dans un systeme informatique via un reseau de communication
KR101713051B1 (ko) * 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
US8959293B2 (en) * 2010-12-14 2015-02-17 Microsoft Corporation Data deduplication in a virtualization environment
US8671398B2 (en) * 2011-05-03 2014-03-11 Microsoft Corporation Working set profiler
US10803970B2 (en) * 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
CN102707966B (zh) * 2012-04-12 2014-09-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN102662714B (zh) * 2012-04-17 2015-10-07 中标软件有限公司 一种Linux操作系统及其启动方法
CN103425502B (zh) * 2012-05-15 2015-09-16 腾讯科技(深圳)有限公司 一种操作系统的预取启动方法和装置
US8843676B2 (en) 2012-06-27 2014-09-23 International Business Machines Corporation Optimizing an operating system I/O operation that pertains to a specific program and file
CN102902563B (zh) * 2012-09-24 2016-07-13 中标软件有限公司 Linux操作系统及其启动过程中挂载文件系统的方法
US10489295B2 (en) * 2012-10-08 2019-11-26 Sandisk Technologies Llc Systems and methods for managing cache pre-fetch
US9110677B2 (en) 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
CN104216721A (zh) * 2013-05-31 2014-12-17 上海博达数据通信有限公司 一种在操作系统启动之前下发配置的方法
JP6331976B2 (ja) * 2014-11-04 2018-05-30 富士通株式会社 起動制御プログラム、起動制御方法および起動制御装置
GB2542127B (en) * 2015-09-08 2020-06-03 Arm Ip Ltd Processing digital content
JP6767653B2 (ja) * 2016-07-13 2020-10-14 株式会社バッファロー 記憶装置、情報処理システム、記憶装置の起動方法及びプログラム
WO2018024327A1 (en) * 2016-08-03 2018-02-08 Huawei Technologies Co., Ltd. Device and method arranged to support execution of a booting process executed during an instant restore process
WO2018033220A1 (en) * 2016-08-19 2018-02-22 Huawei Technologies Co., Ltd. Device and method arranged to support execution of a booting process
US10289421B2 (en) * 2017-02-17 2019-05-14 Dell Products, L.P. Booting of IHS from SSD using PCIe
CN108733426B (zh) * 2017-04-21 2021-10-29 海马云(天津)信息技术有限公司 电子设备运行应用的方法、装置及电子设备
CN108228273B (zh) * 2017-09-29 2021-07-16 珠海市魅族科技有限公司 一种执行可执行文件的方法及设备
US11366757B2 (en) 2017-11-22 2022-06-21 Intel Corporation File pre-fetch scheduling for cache memory to reduce latency
JP6887964B2 (ja) * 2018-02-14 2021-06-16 株式会社日立製作所 情報処理装置、及び情報処理装置の制御方法
CN112559055B (zh) * 2019-09-25 2023-12-26 阿里巴巴集团控股有限公司 一种计算机系统的启动方法及装置、电子设备、存储介质
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
EP0622731A3 (en) * 1993-04-26 1995-02-15 Ibm Boot architecture for micro-core based systems.
WO1995001600A1 (en) * 1993-07-02 1995-01-12 Oakleigh Systems, Inc. Predictive disk cache system
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US20020091917A1 (en) * 2001-01-05 2002-07-11 Cheng-Chi Liao Method for control of multiple operating systems and electronic machines applicable thereto
US6920533B2 (en) 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
US7164105B2 (en) 2002-04-05 2007-01-16 Microwave Imaging Systems Technologies, Inc. Non-invasive microwave analysis systems
CN1277211C (zh) * 2003-05-06 2006-09-27 联想(北京)有限公司 一种计算机操作系统的修复方法
EP1709532A1 (en) * 2004-01-21 2006-10-11 Koninklijke Philips Electronics N.V. Method of increasing boot-up speed
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
JP2006126987A (ja) * 2004-10-27 2006-05-18 Ricoh Co Ltd 画像処理装置
JP2006155391A (ja) * 2004-11-30 2006-06-15 Ricoh Co Ltd 画像形成装置
US7451269B2 (en) * 2005-06-24 2008-11-11 Microsoft Corporation Ordering real-time accesses to a storage medium
US20070038850A1 (en) 2005-08-10 2007-02-15 Matthews Jeanna N System boot and resume time reduction method
US7409537B2 (en) * 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
JP2007179089A (ja) * 2005-12-26 2007-07-12 Toshiba Corp 情報処理装置、アクセス制御方法、及びプログラム
JP4935107B2 (ja) * 2006-02-20 2012-05-23 富士ゼロックス株式会社 情報処理装置
US7669044B2 (en) 2006-09-29 2010-02-23 Microsoft Corporation Accelerated system boot
US8082431B2 (en) * 2006-09-29 2011-12-20 Intel Corporation System and method for increasing platform boot efficiency
US7676630B2 (en) * 2006-10-05 2010-03-09 Sun Microsystems, Inc. Method and apparatus for using a determined file access pattern to perform caching in a file system
US7676671B2 (en) * 2006-10-31 2010-03-09 Hewlett-Packard Development Company, L.P. System for multi-profile boot selection of an embedded device
JP2009050793A (ja) 2007-08-27 2009-03-12 Nippon Paint Co Ltd 複層塗膜形成方法
JP4795378B2 (ja) * 2008-04-01 2011-10-19 レノボ・シンガポール・プライベート・リミテッド コンピュータおよびブート方法
US8230208B2 (en) * 2009-04-20 2012-07-24 Intel Corporation Booting an operating system of a system using a read ahead technique
US20110119756A1 (en) 2009-11-18 2011-05-19 Carefx Corporation Method Of Managing Usage Of A Workstation And Desktop Management System Therefor

Also Published As

Publication number Publication date
EP3037961A1 (en) 2016-06-29
CN101866293B (zh) 2015-03-11
EP2251781A1 (en) 2010-11-17
EP3037960A1 (en) 2016-06-29
US20100268927A1 (en) 2010-10-21
JP2010250822A (ja) 2010-11-04
JP2016106304A (ja) 2016-06-16
JP5101653B2 (ja) 2012-12-19
JP6274676B2 (ja) 2018-02-07
US20160110204A1 (en) 2016-04-21
JP2015064898A (ja) 2015-04-09
JP2016105299A (ja) 2016-06-09
JP6221086B2 (ja) 2017-11-01
JP6033274B2 (ja) 2016-11-30
US10073703B2 (en) 2018-09-11
EP3032411A1 (en) 2016-06-15
US8230208B2 (en) 2012-07-24
US20110225412A1 (en) 2011-09-15
CN101866293A (zh) 2010-10-20
EP2251781B1 (en) 2018-08-15
US20160070577A1 (en) 2016-03-10
JP2016119108A (ja) 2016-06-30
US9015461B2 (en) 2015-04-21
JP5662398B2 (ja) 2015-01-28
US20160110205A1 (en) 2016-04-21
JP2013033491A (ja) 2013-02-14

Similar Documents

Publication Publication Date Title
JP6245532B2 (ja) 先読み技術を利用して行われる、システムのオペレーティングシステムのブート、方法、ストレージデバイス、ブートファイルプリフェッチシステム、プログラム、及び、コンピュータ可読記録媒体
US10795871B2 (en) Key-value stores implemented using fragmented log-structured merge trees
KR101595043B1 (ko) 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
Joo et al. {FAST}: Quick application launch on {Solid-State} drives
US9298377B2 (en) Techniques for reducing read I/O latency in virtual machines
US8775716B1 (en) Methods and systems for defragmenting virtual machine prefetch data on physical storage
JP2012508932A (ja) キャッシュデータおよびメタデータを管理すること
US9053064B2 (en) Method for saving virtual machine state to a checkpoint file
EP2678775A2 (en) Multi-phase resume from hibernate
TW200917123A (en) USB flash disk for computer boot up and method of loading programs in the USB flash disk
US9983997B2 (en) Event based pre-fetch caching storage controller
WO2012010419A1 (en) A string cache file for optimizing memory usage in a java virtual machine
CN104685443B (zh) 锁定引导数据用以更快引导
US9886449B1 (en) Delayed allocation for data object creation
CN108475201B (zh) 一种虚拟机启动过程中的数据获取方法和云计算系统
KR101260934B1 (ko) 애플리케이션 동기화 방법 및 시스템
CN101169723A (zh) 一种嵌入式操作系统映像文件的引导方法及装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170418

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170915

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: 20171017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171102

R150 Certificate of patent or registration of utility model

Ref document number: 6245532

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250