Linuxゲストを使用してESXiに大量のメモリを割り当てると、NULLポインタの逆参照がクラッシュする

Linuxゲストを使用してESXiに大量のメモリを割り当てると、NULLポインタの逆参照がクラッシュする

私の考えには、ある種のメモリ破損があるはずです。問題は、主に大量のメモリを割り当てるプロセス(特にブラウザとcc1plus)で発生します。メモリ使用量の多いJVMは起動時にほとんど死亡し、Eclipseは最初のウィンドウも作成できませんでした。問題は、ほとんど常にヌルポインタの逆参照によって発生するセグフォルトです。

私の経験:

  • WindowsとOSXはESXiで同じプロセスを実行し、これらの現象は発生しません。
  • ただし、別のカーネル(3.6と4.1の間)を使用するLinuxが表示されます。さまざまなLinuxディストリビューション(私はdebian、ubuntu、opensuseを使ってみました)も表示されます。
  • Linuxでも32ビットクライアントに問題はありません。
  • PCIパススルーが有効になっていても問題が発生します(BIOSでIOMMUがオフになっていても同様)。
  • esxi 5.5を6にアップグレードしても役に立ちません。

その他の情報:

  • 一晩ホストコンピュータでmemtestを実行しましたが、問題は見つかりませんでした。
  • ホストに64ビットオペレーティングシステムがある場合(つまり、仮想化なし)、問題は発生しません。
  • 競合は、主にプロセスが大量のメモリを割り当てた後に発生します。
  • 問題はほとんど常にユーザー空間で発生します(ただし、カーネル空間が大量のメモリをほとんど割り当てないため)。
  • アクセラレーションをオフにしたり、ゲストOSを「その他のLinux」または「その他の64ビットOS」に切り替えても役に立ちません。
  • ゲストマシンでSMPをオフにすること(つまり、1つのCPUコアのみを提供すること)は役に立ちません。他のCPU設定(さまざまなマルチソケット/マルチコア設定、ゲストをさまざまなCPUコアに制限)を使用しても効果はありません。
  • ゲストOSメモリを制限することも役に立ちません。ただし、ゲストはスムーズに動作し、少ないメモリ消費量のプロセスしか実行しません。
  • この問題は電源を入れるとすぐには発生しません。これは、大規模なメモリ割り当てなしのサイクルが発生した後にのみ表示されます(たとえば、Firefoxでクリックして数分後)。
  • 仮想SCSIコントローラの種類をLSIからvmware準仮想化に変更したり、交換をオフにしても役に立ちませんでした。

私の考えでは、何かが多くの呼び出しのためにゲストOSメモリを破損(0に設定)しているようですbrk()

この問題が発生した人はいますか?狩猟効率を高めるために取られる他の措置は何ですか?

ベストアンサー1

問題が解決しました。

これはmemtestが検出できない破損したメモリモジュールです。 :-)

この問題は Windows と OSX でも発生しますが、それ以降のバージョンでは発生します。

絶対に忘れないでください:memtestが見つかりませんいつもすべてのラムに問題があります!その理由は、memtestがメモリを繰り返して複雑な操作を実行するためです。ただし、長い間使用されていないメモリ領域を残すことはできません。

DIMMメモリは、本質的に大規模なコンデンサアレイです。このコンデンサはゆっくりと電荷を失います。したがって、DIMMは定期的にメモリを更新する必要があります。つまり、メモリ内容を定期的に読み書きしてください。

そうしないと、記憶内容が失われます。このメモリリフレッシュは、ハードウェア、主にマザーボード/ CPUのメモリコントローラで発生します。

また、メモリ内容を読み取る別の機能もあります。明らかコンデンサ(メモリチップにできるだけ多くのコンデンサを統合する唯一の方法であるため、非常に小さい)。したがって、メモリを読み込むたびにその内容を書き換える必要があります。

memtestはこの更新メカニズムに関する問題を検出できません。

メモリテストが特定の方法に適しているかどうかを検出することは可能ですが、メモリの半分をチェックし、残りの半分を静かにし、長い遅延後にのみ切り替えます。しかし、これまでmemtestでは実装されていません。

おすすめ記事