web-dev-qa-db-ja.com

プリロードを使用することの欠点?デフォルトで含まれないのはなぜですか?

preloadを使用することの欠点は何ですか?マイナス面がない場合は、preloadがデフォルトで有効になるので、いくつかあると思います。

さて、もう少しRAMが必要ですが、ほとんどの人はRAMよりもはるかに多くのUbuntuが必要です-preloadを使用することの欠点は何ですか

107
Paradiesstaub

簡単に言えば、Preloadは万人向けではありません。アプリケーションやライブラリを頻繁に開くと便利です。アプリケーションやライブラリをときどきロードすると有害です。実際の使用法から2つの例を使用します(そして、プリロードを使用します)。

まず、Google Chrome。現在、ブラウザは起動ごとに1回だけ、おそらく2回開かれます(私にとっては、私はWeb開発者です)。 Chromeとその関連ライブラリは、常に使用しているため、メモリに残ります。すべてのchromeウィンドウを閉じても、それはまだバックグラウンドで実行されています。したがって、Chromeのプリロードコピーを保持するための専用RAMはすべて、まったく無駄です。アンロードされることはありません(またはめったにありません)。平均的なユーザーにとって、これは非常に多くのアプリケーションに当てはまります。 Officeユーザーはほとんどの場合、メールアプリを開いています。そのため、起動時間のわずかな節約は、1日1回しかメールアプリを開かず、開いたままにしておくため、完全に無駄になります。

2番目の例は熊手です。テストを信じているRuby開発者として、私はTORを実行します。 rakeが実行され、数秒から数分実行されてから終了します。プリロードは、事前にrakeとその必要なライブラリ(非常に広範囲に及ぶ可能性があります)をロードするため、毎日の作業を高速化するのに役立ちます。そのため、rakeの実行には多くの開始点と停止点があります。数時間にわたって400回または500回のレーキの起動を高速化するために使用される追加のラムは、それだけの価値があります。

そのため、デフォルトで有効になっていない理由は、実際にパフォーマンスを改善する機能が主にhowシステムの使用に基づいているためです。一部の人々にとっては否定的であり、他の人々にとっては肯定的です。

最後に、プリロードをオンにすると、使用していない場合でもRAMが消費されます。そのため、アプリケーションを頻繁に起動しない場合、そのRAMを他のタイプのキャッシュに使用できないようにすることで、実際にシステム全体をわずかに遅くすることができます。 32ギガバイトのRAMを使用している場合でも、Linuxは可能な限り多くのRAMを使用してデータをキャッシュし、操作を高速化しようとします。プリロードを使用することで、その空きメモリをいくらか減らします。たとえほんの少しでも、chromeを1回起動して保存した2秒は、実行し続ける月に60秒かかりました。

63
coteyr

バウンティエからの質問 Saeed Zarinfam 2012年9月5日:

こんにちは、私は知りたいです、それは神話ですか? [preload]は本当に私のパフォーマンスを改善しますか?それを使用することの欠点は何ですか?この仕様のラップトップ(Core i5 CPU、4GB RAM、128GB SSD Hard)があります。どうもありがとうございます。

  • SSDをお持ちの場合、preloadは実際に必要ありません。
    • これは、SSDがハードディスクよりmuchランダムアクセス時間が速いため、メモリのバイナリ/依存関係を「プリロード」するのは無駄であるためです。IMO
    • 基本的な欠点は、preloadが具体的なメリットを提供せずに追加メモリを「使用」することです。
21
ish

Preloadは、システムのバックグラウンドで実行される「適応型readaheadデーモン」であり、最も頻繁に使用するプログラムを監視し、アプリケーションのロード時間を短縮するためにそれらをキャッシュします。プリロードを使用すると、未使用のRAMを適切に機能させ、デスクトップシステムの全体的なパフォーマンスを向上させることができます。

すぐにパフォーマンスが劇的に変化することを期待しないでください。また、アプリケーションを繰り返し開いたり閉じたりするだけの場合、コンピューターはこれらのファイルをキャッシュに保存します(これは「ウォーム」ロードと呼ばれます)。そこで速度の違いは見られません。ただし、たとえば、プログラムを断続的に使用すると、速度が向上します。これらのプログラムは、プリロードなしよりも速く起動します。

プリロードは、アプリケーションの起動時間を大幅に改善できます。最近のほとんどのマシンには十分なメモリがあるため、PreloadはこのRAMを適切に使用します。1

言われたところで、それはプリロードが素晴らしいユーティリティであるようです、そしてそれはそうかもしれません。

OSがプリロードされていないのは、ユーザーがそこで何をしているのかを正確に知り、それを使用するのに十分な経験があり、システムに十分なRAMが必要だからだと思います。

より技術的な面では、プリロードはデータをハードディスクからRAMに移動することで機能します。これにより、ほとんどのハードディスクが使用されない場合はスリープモードになり、必要に応じてスピンアップする必要があります。したがって、ドライブを回転させると、ロード/アンロードサイクルカウントが発生し、パワーオンタイムカウントが増加し、ドライブの寿命が短くなります。

プリロード、アプリケーションレベルの予測で動作するマルコフベースの適応プリフェッチスキームを設計および実装しました。さらに、プリロードはユーザースペースに実装されており、アプリケーションのランタイム環境を変更することはありません。私たちが知る限り、これはこのレベルでファイルシステムのプリフェッチを試す最初の作業です。

私たちの実験結果は、コールドキャッシュと比較したアプリケーションの起動時間の有望な改善と、単純な予測アルゴリズムと比較したまともなヒット率を示しています。

ただし、ユーザー空間にいることは、プリロードを起動時の問題に対する競争力のあるソリューションにする上で大きな障害となります。特に、アプリケーションのI/Oリクエストに関する完全な情報がなく、ページキャッシュサブシステムとの強力な通信チャネルがないため、特にメモリ不足の状況では、プリロードの効果が大幅に低下します。

プリロード設計のもう1つの固有の問題は、アプリケーションの起動の比較的緩やかな相関関係によって引き起こされる、高い分散と低い予測の信頼性です。アプリケーションの相関関係を追跡するモデルを正常に構築しますが、アプリケーションの起動はコンピューターが動作するタイムスケールと比較して非常にまれなイベントであるという事実、アプリケーションレベルのプリフェッチスキームは、実質的に無限の期間にわたって巨大なプリフェッチメモリを消費すると非難されています。このメモリは、短期的なキャッシュ動作を改善するために使用できます。

最後に、カーネル内のキャッシュサブシステムと統合されたプリフェッチャーにフォールバックすることなく、ブート時間、ログイン時間、およびアプリケーションの起動時間を改善する方法に関するシステム開発者向けの一連の推奨事項を考え出します。もちろん、カーネル内のファイルベースのプリフェッチャーはその上で改善できます。2

1ソース: techthrob

2出典: プリロード-Behdad Esfahbodによる適応型プリフェッチデーモン-理学修士の要件に準拠して提出された論文-コンピュータサイエンス学科-トロント大学Copyright(c)2006 by Behdad Esfahbod。

12
Mitch

欠点?なし!

ユーザーがアプリケーションを開くときのパフォーマンスが向上しました。 「先読み」と同様にシステムで何年も使用しており、問題はありません。プリロードの バグページ も欠点を示唆していません。

プリロードは、usersが実行するアプリケーションを監視し、このデータを分析することにより、どのアプリケーションusers実行される可能性があり、これらのバイナリとその依存関係をメモリにフェッチして、起動時間を短縮します。

ブート時間はわずかに増加しますが、アプリケーションのフェッチ時間の短縮速度はこの小さな問題をはるかに上回ります。

記事 を参照

FirefoxまたはGimpなどの一般的なアプリを常に使用している場合読み込み時間が大幅に改善されていることがわかります。プリロードは、バックグラウンドで個別に実行されるデーモンであり、いずれにしてもデスクトップを中断することはありません。 Ubuntuユーザーは、次を使用してプリロードをインストールできます。

Sudo apt-get install preload

結果:

Graph showing difference between normal and preload start

参照

9
Ringtail