キャッシュ使用時のディスクI / Oが高いですか?


9

数日前、ディスクI / Oの待機とディスクアクティビティの低下に気付きました(これは素晴らしいことでした)。次に、キャッシュがいっぱい(*)で断片化していることにも気付きました。次に、キャッシュをフラッシュしました。その後、ディスク遅延とディスクアクティビティは以前のレベルに跳ね上がりました(これは悪かった)。

IOtopは、[jbd2 / sda2-8]と[flush-8:00]が常にディスク使用率の上にあることを示しています。これは、Dell R210、ハードウェアRAID 1(H200)、大量の空きメモリ(合計16 GB、そのうち約8 GBがバッファ/キャッシュ)です。

(*)キャッシュはPHP用のAPC opcodeキャッシュであり、PHPスクリプト実行のためのディスクアクセスを削減します。開発インスタンスのファイルが含まれているため、キャッシュがいっぱいで断片化していました。それに気づいたとき、私はそれらを除外しました。

問題は、理論的にはディスクI / Oが減少するはずなのに、なぜ増加するのかということです。以下は、muninのグラフです。2月6日から8日までキャッシュがいっぱいでした。

ここに画像の説明を入力してください ここに画像の説明を入力してください APCキャッシュは現在問題ありません。

@ cyberx86の指示に従ってapc.mmap_file_maskをコメントアウトした後の変更

ここに画像の説明を入力してください ここに画像の説明を入力してください

そして数日後https://serverfault.com/a/362152/88934


2
このグラフは、IOの増加を示していません。
psusi

1
ファイルを使用したメモリマッピング(などapc.mmap_file_mask=/tmp/apc.XXXXXX)を使用すると、I / Oが上昇する可能性があります。apc.mmap_file_mask共有メモリを使用するように設定してみてください(例:)/apc.shm.XXXXXXまたは/dev/zero(匿名のmmappedメモリ)。
cyberx86

1
@psusiは2月6日の午後12時から2月8日の午後12時まで低く、その後増加しました。
jcisio

@ cyberx86私はちょうどそれを変更しました(匿名のmmappedメモリを使用するためにその行をコメントアウトしました)、それはその助けのように見えます。あと数分見てみます。ありがとう。
jcisio 2012

2
@psusi再開できるのは複数の問題がありましたが、説明はありませんでした:1 / APCキャッシュミス(ただし、これらのPHPファイルのOSキャッシュヒットなので、ディスクI / Oは非常に少なく、待機時間は短くなりますが、平均I / O時間は長くなります、主にMySQL InnoDBトランザクションコミット)2 / APCキャッシュヒットがAPCがファイルを使用していた(OSキャッシュミス、理由がわからない)3 /簡単に、私の質問は、「キャッシュがうまく機能しなかった場合、(ほとんど)ディスクがないI / O」-あなたの言っていることはそれと完全に反対です。
jcisio

回答:


10

ファイルを使用したメモリマッピング(などapc.mmap_file_mask=/tmp/apc.XXXXXX)を使用すると、I / Oが上昇する可能性があります。

apc.mmap_file_mask共有メモリを使用するように設定してみてください(例:)/apc.shm.XXXXXXまたは/dev/zero(匿名のmmappedメモリ)。設定を未定義のままにすると、デフォルトで匿名のmmappedメモリが使用されます。

通常、mmapファイルはすばらしいことです。

  • メモリに何かを完全に格納する場合と比較して、mmapファイルは通常、必要なメモリが少なくなります。
  • ファイルに何かを保存する場合と比較して、mmappedファイルはディスクI / Oが少なくて済みます(書き込みを一緒に集約できるため)。

ただし、純粋にメモリに何かを格納する場合と比較すると、I / Oが追加されるため、ファイルが継続的に変化している場合にかなりの負担がかかります。mmappedファイルを使用しないことの欠点は、永続性の欠如です。キャッシュはメモリにのみ保存されるため、再起動後もキャッシュは存続しません。

したがって、キャッシュがいっぱいになって安定している間、キャッシュは最も頻繁に変更されており、常にディスクに書き込む必要があったことを示唆しています。キャッシュがいっぱいになると、各オブジェクトのttlにより、キャッシュ内のデータが反転する速度が遅くなり、変更が減少し、ディスクの書き込みが減少しました。


4

数日後、今度はいくつかのグラフを表示したいと思います。変更により、その状況は大幅に改善されます。IOサービス時間を除いて、すべてを削減します(安価な小さなPHPファイルの読み取りがなくなったためだと思います)。

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

サーバーの負荷(既にかなり低いので、変更を発見していませんでした)。

ここに画像の説明を入力してください


加えた変更を教えてください。
Mircea Vutcovici

質問のコメントと承認された回答を読んでください。コメントアウトapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

ねえ、ご迷惑をおかけして申し訳ありません。mmap_file_mask行をコメント化すると、副作用が発生しましたか?同じ問題が発生しています...これにより、I / O使用の問題が明確に解決されます。しかし、私は疑問に思っていました...他に何も壊れないか!ありがとう!
ホルヘレアンドロペレス

その行をコメント化しても問題はありませんでした。
jcisio 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.