キャッシュの理解と構成

キャッシュの理解と構成

いくつかの質問があります。キャッシュメモリ

私のシステムでは、「free -h」コマンドは次の出力を提供しました。

      total        used        free      shared  buff/cache   available
Mem:   7.6G        2.1G        1.5G         46M        4.0G        4.8G
Swap:  1.6G         28M        1.6G
  1. メインメモリに「キャッシュ」が必要なのはなぜですか?

    私が知る限り、「キャッシュ」はメインメモリ(RAM)と同じではありません。これは非常に高価で、はるかに高速です。間違っていたら訂正してください。

  2. 1時間前のキャッシュメモリは3GBでした。今1GBが追加されたのはなぜですか?

    新しいプロセスを開始/実行しないことに注意してください。

  3. 新しいプロセス/アプリケーションを開始できる最大制限はいくらですか?

    free -hコマンド出力によると、

    free memory = 1.5 GB, Cache memory = 4 GB and Swap memory = 1.6 GB
    

    新しい申請書を開始できますか(1.5 + 1.6) GB or (1.5 + 1.6 + 4) GB

  4. このキャッシュ値を設定/設定できますか?

    それではどうですか?

ベストアンサー1

  1. 訂正します!最も高価なのはCPUキャッシュ
  2. これだからなディスクキャッシュ、すべてのファイルアクセスに使用されます。
  3. 悪いニュース:複雑で迷惑です。
  4. 良いニュース:今あまり心配する必要はありません。一般的なデスクトップシステムには8GBのRAMで十分です。

1.あなたを訂正したい!最も高価なのはCPUキャッシュ

CPUには高速内部RAMの小さな部分があります。 CPUは、頻繁にアクセスされるデータをメインメモリからこのキャッシュに自動的にコピーします。

free他の場所で説明したようにディスクキャッシュ。 CPUキャッシュは表示されません。ディスクキャッシュは、ディスクブロックを除いて同じ操作を実行します。メインメモリに保存され、オペレーティングシステムによって管理されます。

したがって、私たちは3つの異なるレベルのメモリを持っています!これは「メモリ階層」として記述される。これをディスクと比較すると、ディスクキャッシュに使用するメインメモリは実際にはバイトあたりの高速で高価です。

2. これからディスクキャッシュ、すべてのファイルアクセスに使用されます。

したがって、新しいプログラムをロードする必要はありません。ただ使うだけですぐに使えます。たとえば、Webサイトにアクセスすると、そのWebサイトがディスクにコピーされます(別のキャッシュ戦略!)

「よくアクセスする」データがキャッシュされていると嘘をつきました。すべてをキャッシュするのが最も簡単で効率的です。

ディスクキャッシュは、使用可能なメモリがなくなるまで増加し続けます。

より多くのメモリが必要な場合は、スペースを解放するために一部のブロックがディスクキャッシュから削除されます。これらの退去は、効率を最大化するように設計された政策によって管理されています。例: "LRU": 退去最近使用された詰まった。

3.悪いニュース:複雑で迷惑です。

Windowsはこれらの問題を念頭に置いて開発されました。あまりにも多くのアプリを開こうとすると、ユーザーをブロックして文句を言う必要があり、同時に開くことができるアプリの数に関するアイデアを得ることができます。

Linuxで予想される動作は、スワップスペースを埋め始め、システムが突然遅すぎて回復できなくなることです。あるいは、スワップがないと、プログラムコードキャッシュやその他の重要なファイルが削除されるような同様の状況が発生する可能性があります。しかし、十分に進んでディスクサポートがないページのメモリが不足している場合、十分な保存殺人者は記憶を取り戻したくないプロセスを殺害し始めます。

どれだけ多くのおおよそのアイデアを得ることができます。最終的に回復するには、ハード再起動する必要があります :).

「過度のコミット」を防ぎ、スワップを無効にするか、非常に小さく保つように設定できます。これはWindowsに最も近いものです。しかし、多くのLinuxコードは「過剰」を想定して設計されています。メモリが十分な場合はそうではありません。またこれは大きな問題です。そして、ディスクキャッシュは依然として危険性の低い乱用として機能します。〜しなければならない結局、多くのメモリが必要になり、それから何の利点も得られません。

実際には…何人かの人々はスワップをまったくしない、またはほとんどしないで実行することを好みますが、これは問題ありません。ただし、過度の使用を無効にすることはまれです。したがって、これは提案ではありません。活性化すると他の世界に入ります。たとえば、質問をしたり、それが実際に乱用を無効にすることに関連している場合、それを認識する経験を持つ人はあまりありません。

4. 良いニュース: 今あまり心配する必要はありません。一般的なデスクトップシステムには8GBのRAMで十分です。

4GBも現在利用可能で、それほど高価ではありません。実行したい場合は、これは制限事項です。もっとシステム、つまり仮想マシンより。今は4GBで実行する傾向があります。最後に、メモリ不足の問題が発生したのはいつなのか覚えていません。私の経験は、メモリがはるかに少ない古いシステムから来ました。

他の答えで言及されているsysctlsは、次のことを行います。いいえディスクキャッシュを制限します。保持できる「ダーティ」ディスクキャッシュの量を制限します。これは、プログラムがデータを書き込んだがまだディスクに再同期していないキャッシュブロックを表します。この種のキャッシュは「後書きキャッシュ」と呼ばれます。


つまり、活用率を大まかに把握するには

  1. 包括的なビューを取得するには、計算で「使用済み」と「バフ/キャッシュ」の合計を検討してください。
  2. 古いキャッシュファイルを除外するために新しい起動時に測定が実行されます。または、実行してもう一度ログインしてくださいsync; echo 3 | sudo tee /proc/sys/vm/drop_caches。私は後者の結果が少し低いと予想しています。これらのどれがより現実的であるかは議論の余地があります。明らかにキャッシュを削除することはより人為的なテストですが、実際に削除されたファイルが必要な場合は、とにかくそのファイルを再読み込みします。
  3. これは、ディスクキャッシュに多くのデータファイルが残っておらず、ファイルが合わなくても大丈夫で、ディスクのパフォーマンスに満足していると仮定します。ビデオファイルを再生した後に測定すると、これが発生する可能性があります。この場合、より難しいでしょう。ビデオファイル全体がメモリに収まる場合は、バッファ/キャッシュからそのサイズを減算するだけです。

たとえば、オプションを使用してカーネルを起動すると、Xメモリの量がワークロードに十分であることを確認できますmem=Xmem=256MもともとRaspberry PiモデルAと同じ量のRAMで32ビットソフトウェアをテストしたいのと同じです。

おすすめ記事