メモリの不具合、どう取り組む? 122
ストーリー by hylom
ECC付きメモリが安くなれば…… 部門より
ECC付きメモリが安くなれば…… 部門より
あるAnonymous Coward 曰く、
本家「Reliablity of Computer Memory?」より。
512MBのメモリを載せていた頃は宇宙線がエラーを引き起こすとか、RAMの容量が大きくなるほどエラーも増えるなどと言われていた。いまや家庭用のPCでさえ6GBや8GBのメモリを積んでいるが、ECCメモリを載せている人などいない。
4GBのメモリを積んだ自分のPCでは64ビット版のWindows Vistaを動かしていたが、最近同じパターンでブルースクリーンが起きるという状況が発生した。memtest86を走らせたところ毎回エラーが検出された。しかしこのPCで64ビットのUbuntuを走らせたところ、ロード100%でメモリも全て使われているという状態だったが何日も問題なく稼動していた。自分が疑問に思っていることは2点。
- memtest86でメモリモジュールやマザーボードやCPUの不具合と出た場合、この結果は信用に値するだろうか?
- 来年メモリ16GBを搭載したPCをメールチェックに使おうと思うのだが、ECCメモリを積むべきだろうか?
本家ではWindowsとUbuntuではメモリの使い方が異なるため、memtest86の結果の通りRAMに不具合があってもそこ使われなかったとすれば稼動し続けることも可能との意見もあるが、メモリテストで問題を突き止めることの難しさも語られている。memtest86以外ではprime95を薦める声なども寄せられている模様。
/.J諸兄方はどのようにメモリの不具合にどのように取り組んでいらっしゃるだろうか?
ECC付を買うべし (スコア:4, おもしろおかしい)
ECC無しのメモリを使うというのは、コンドームなしのセックスと同じです。
無防備すぎます。
Re:ECC付を買うべし (スコア:5, おもしろおかしい)
だからキャパシタが妊娠したのか!
Re:ECC付を買うべし (スコア:5, おもしろおかしい)
Re:ECC付を買うべし (スコア:3, おもしろおかしい)
うちはカトリックなので、コンドームを使ったセックスは禁止です。
だからECCも禁止です。
Re:ECC付を買うべし (スコア:2)
Every Sperm is Sacred [youtube.com]
[udon]
メモリテストの難しさ (スコア:4, 興味深い)
ざっとコードを見ましたが、memtest86 は割と緩いテストなのでそれにも関わらず異常が検出されるならアウトでしょう。
仮想記憶をサポートする OS のユーザプロセスでは難しいかもしれませんが、本来なら目的のアドレス線が機能しているか/隣り合ったアドレス線に影響していないか位は見ないと駄目じゃないかな(0x0020xxxx に書いたときに、0x0000xxxx、0x0010xxxx、0x0030xxxx、0x0040xxxx、0x0060xxxx 辺りに影響出ていないことの確認とか)。
# 新しいハードウェアの開発とかやってるとママあるんだよね…
Re:メモリテストの難しさ (スコア:2)
ユーザプロセスでは難しいかもしれませんが、(CDなどから起動して行うテストなんだから)目的のアドレス線が機能しているか/隣り合ったアドレス線に影響していないか位は見ないと駄目じゃないかな
てことでは?
Re:メモリテストの難しさ (スコア:1)
>一体何のコードを見たのですか?
ソースコードも配られていると思いますが.
Re:メモリテストの難しさ (スコア:3, 参考になる)
はい、なので隣り合ったアドレス線と書きました。インタリーブのことも考えて割と上位のアドレスを例として出したつもりです。
たとえば、ビット線の誤りは書いたデータと読み出したデータとの不整合で見つけられるのでは?(そして、memtest86 が主に実施しているのはこちらでは?)
# もちろんアドレス線が入れ替わっていたりすると見つけることは不可能ですが、これはこれで故障ではないとするスタンスもあるでしょう。
Re:メモリテストの難しさ (スコア:2)
メモリコントローラへの I/O とメモリそれ自体への I/O をごっちゃにしていませんか?(回路図見たことありますか?)
Re:メモリテストの難しさ (スコア:2)
で、それがまともに動作しない環境下でテストプログラムに何を求めるのですか?
Re:メモリテストの難しさ (スコア:2)
*sigh*
どじでおっちょこちょいな計算機 (スコア:4, 興味深い)
時々計算を間違える どじでおっちょこちょいな計算機に
いろいろ大事なデータを任せられるならあれですが、
複数のテストで一つでもエラーが見つかったら交換でも
なんでもして原因追求するべきでしょう。
メモリは、エラーを起こす場所が何に使われるかわかりません。
OS が落ちる症状になることはむしろ歓迎しなければなりません。
昔ストレージデバイスの開発をやっていたころに、ファイルコピーを
してはコンペアとやっていたら、時々コンペアエラーが見られる
ようになって、デバイスのバグか!と いろいろ追求した結果、
その PC のメモリのビット化けだった、ということがあります。
(当然ただの 1bit /128MB)
(ファイルは disk -> memory -> disk とコピーされるため)
(化け場所はいわゆるヒープ領域(?)だったため OS は全然平気)
その PC はそんなに不安定という感じではありませんでしたが、
丹念に調べたところ、その PC で作成したファイルにビット化けの
影響が含まれているものが少なからず見つかりました。
(別のマスターファイルと比較したり、zip ファイルの CRC チェックしたり)
請求書やラブレターが文字化けしないうちに即 対処すべきです。
# かく言う私はコンペアおやじで、似たようなことを
# これまで三度ほど経験しているのは また別の話。
少なくとも (スコア:3, すばらしい洞察)
>出た場合、この結果は信用に値するだろうか?
は
>しかしこのPCで64ビットのUbuntuを走らせたところ、ロード100%で
>メモリも全て使われているという状態だったが何日も問題なく稼動していた。
=「だから安全」
と考えるよりは信用に値すると思われます。
#環境が違えばR/Wの粒度、頻度、いくらでも違いがあるし。
16Gのメモリつんでメールチェックか... (スコア:3, すばらしい洞察)
>1. memtest86でメモリモジュールやマザーボードやCPUの不具合と出た場合、この結果は信用に値するだろうか?
もし「事」が起こっても、「しょうがねーな」で済むんだったら、いいんじゃないでしょうか、日常使ってて気になる不具合ないんだったら。
「事」が起こったときに取り返しがつかない、というのであれば、そんなメモリ(or その他機器)を使おうなんて思えませんね。少しでも気にかかることがあれば即取り替えます。
>2. 来年メモリ16GBを搭載したPCをメールチェックに使おうと思うのだが、ECCメモリを積むべきだろうか?
プライベート用途の PC にそんな膨大なメモリ空間が必要だろうか。。。まぁ、「メールチェックにも」かな? 2GB のマシンで Maya も Photoshop もウェブもメールもやってる身からすればうらやましい限り。。。
ん? 俺、今何か言った?
Re:16Gのメモリつんでメールチェックか... (スコア:3, おもしろおかしい)
> プライベート用途の PC にそんな膨大なメモリ空間が必要だろうか。。。
そうそう、640KBあれば十分ですよ。 by ゲイツ
Re:16Gのメモリつんでメールチェックか... (スコア:3, 参考になる)
ソースはOh!MZかその後のOh!X...そんな、大昔の話ですが(苦笑)
MSがVistaではECC推奨 (スコア:2)
http://www.itmedia.co.jp/news/articles/0602/13/news037.html [itmedia.co.jp]
non-ECCメモリを許せますか (スコア:2, 興味深い)
電圧やノイズマージンの不足、物理的な故障などのハードウェアに起因するエラーはmemtestで発見できる可能性がありますが、それらが全てmemtestで発見できるわけではありません。ですのでmemtestを通ったから安心はできませんが、memtestに通らないのは論外なので、即座に交換すべきです。
一方、宇宙線や部材からの放射線に起因するソフトエラーは、瑕疵のないハードウェアであっても一定の確率で確実に起こりうるもので、防ぎようがなく、memtestで発見できるわけでもなく、また発生したからといってメモリモジュールを交換しても無意味です。これに対処するには、最低でもECCメモリ、より強力な2ビット以上のエラーを訂正可能なメモリ、あるいはメモリのミラーリングなどの仕組みが必要となります。
ではソフトエラーがどの程度の確率で発生するのかといわれると、最近のメモリでの厳密なデータは見たことがありませんが、経験では8GB搭載した1000台のサーバーで年に1~4回程度です。
こうしたエラーの結果、OSが落ちてしまうなら問題は少ないのですが、ユーザーデータが化け、それがそのまま不揮発メディアに保存されてしまうと、エラーが半永久的に解消されずに残ることになります。近年のメモリ使用量の肥大化は、プログラムコードよりもユーザーデータのほうに比重がありますから、ますますこうしたケースは増えていくでしょう。
Re:non-ECCメモリを許せますか (スコア:2)
>ランダムアクセスが増加すると謎のフリーズを起こす
それはまさか特定SSDに発生するいわゆるプチフリーズという奴では?
ECC付きだろうが壊れる時は壊れる (スコア:2, すばらしい洞察)
ベストプラクティス (スコア:2, 参考になる)
うろおぼえなのですが、VMware ESX のマニュアルにおいて、
「構築期間に2日程度の余裕がある場合、メモリテストをするのがベストプラクティス」
という記述があったのを思い出しました。
洋の東西を問わず、メモリは潜在的な障害要素と考えられているようで。
memtest86 もバージョンにより拾えたり拾えなかったり (スコア:2)
昔 Linux の VMWare サーバで NetBSD の pkgsrc をコンパイルして
いたところ、仮想マシンの /etc/passwd と思われるユーザ名に混じり
コンパイル エラーが発生し、コンパイルに失敗するという現象が発生
しました。
原因を調査したところ、結局メモリエラーであることが判明し、当該の
メモリ モジュールを取り外して無事動作するようになったわけですが、
以下のような興味深い挙動がみられました。
1. memtest86 では検出できるが memtest86+ では検出できない
2. 別のマシンにつけたらエラーは発生しない
そこで判ったことは以下の通り。
a) ソフトで拾えないメモリエラーもある。
b) ソフトによって拾えないメモリ エラーもある。
c) メモリの相性の問題はビット単位で発生する。
単に認識しただけでは正常に動作しているとはいえない。
参考になりましたでしょうか。
Re:memtest86 もバージョンにより拾えたり拾えなかったり (スコア:2)
memtest86/memtest86+ は VMWare と Linux を停止させて
リブートをかけた上で実行しています。従って VMWare に起因
するトラブルではありませんので念のため。
直前にはホスト OS の X サーバが落ちるなどのトラブルも発生
していました。
うーん? (スコア:1)
安くなったんだから
「メモリがおかしい」と思った時に交換すれば良いのではないでしょうか…
Ubuntu稼動させてるけどサーバユースだから怖くてそんなメモリ使えないよ…
Re:うーん? (スコア:3, おもしろおかしい)
え?そうしたらM/Bとメモリに旗立ててデジオシに繋いで
受信端と送信端の波形チェックをして仕様書どおりか
確認して、違ったらレジスタとキャパシタを交換して波形が
きちんと出るように調整するものじゃないの?
......そんなヤツいるワケないわな.....。
Re:うーん? (スコア:2, 参考になる)
今のベースクロック1333MHzなんて狂った仕様のDouble-Data-Rateメモリのアクセス波形だと
10GHz 10GS/sぐらいのオシロが必要ですよね。
5GHz位の広帯域差動プローブも。
安くなったとはいえセットで600万円くらいですかねえ…
まったく高データレート転送の評価は地獄だぜフハハハハー
Re:うーん? (スコア:2)
自作派ですがこの考え方ですね。最近とっても安いし。
自分なら、
1.新しいメモリをワンセット買ってきてmemtest86でチェック
2.問題無ければ使用してみて前と同じような使い方で落ちないか確認
となると思います。
現象が解決しなかった場合は他のパーツもあれこれ替えてみるうちに無限ループに入る
恐れはありますが・・・
Re:うーん? (スコア:2)
ですよねー
妖精哲学の三信
「だらしねぇ」という戒めの心、「歪みねぇ」という賛美の心、「仕方ない」という許容の心
一枚ずつテスト (スコア:1)
# NetVistaの古い機械(Cerelon1GHz)で、memtest86でエラーになるん
だけど、2枚のdimmを入れ替えても、一枚ずつ挿しても同じアドレス
でエラーになるので、そういうメモリの使い方と(勝手に)判断しました。
windiagを使おう (スコア:5, 参考になる)
そりゃ無保証のフリーツールでチェックするからですよ。
Microsoftの「Windowsメモリ診断」でチェックしましょう。
http://oca.microsoft.com/ja/windiag.asp [microsoft.com]
memtestでは正しく認識できないプラットフォームでも、windiagなら認識できたって経験多いです。
身も蓋もないけど、ハードウェアの知識はオープンソースの連中よりMSのほうがよっぽど豊富なんだなぁ、と。
ちなみに、ベンダーもwindiagなら
「きみんとこのサーバはWindowsで動作確認してたよね?
でもMicrosoft純正ツールが『犯人はメモリだ!』と言っているんだけどさ」
と言えば、一発でメモリ交換してくれます。
Re:windiagを使おう (スコア:2, おもしろおかしい)
オープンソース向けには資料を全然公開してくれないメーカーとかあるから
オープンソースでは使えなかったり性能を十分に引き出せないハードはありますね。
で、オープンソースなら比較的枯れたハードウェアを使うのが安全という話になる。
あと、MSとオープンソース陣営を比較すると、仮にMSとオープンソース系の
プロジェクトなり会社とがそれぞれ同じ割合での対応度だったとしても、
オープンソース側全体をひとつでくくるとMSのが沢山対応しているように見える。
例えばA、B、C、D、Eという製品があって、MSはEだけ対応していない、
オープンソース側のX社がAに対応していない、Y社がBに対応していない、Z社が
Cに対応していないとなると、MSは80%の対応度、オープンソース側はトータルで
40%の対応度と見かけ上はなってしまう。
Re:一枚ずつテスト (スコア:3, 興味深い)
私もそういうマザーボードを利用しています。 メモリスロットが4本で、1GB の同メーカー・同一ロット(たぶん)の モジュールを4枚利用していますが、
という状態です。メモリモジュールではなくマザーボード側に何らかの問題があるようです。 実際、マザーボードのマニュアルには2枚だと大丈夫だが4枚だとNGなメモリのリストが載っていました。 2ch やまとめ wiki 等でもそのような報告が出ています。
で、結局今は4枚付けて問題なく動作しているんです。 何をやったかというと、 BIOS 設定でメモリ電圧を AUTO ではなく 1.8V に設定しただけです。 メモリモジュールをたくさん使うと、 設定の微妙な違いが現れてくるということなのではないかと推測しています。
昔と違って、そういったところでもいろいろな条件がシビアになっているんでしょうね。 メモリ電圧設定なんて、昔は全然見かけなかったし…。
Re:一枚ずつテスト (スコア:1)
マザーボードによっては推奨メモリでないと4枚挿しが出来ないものがあります。
以前、同様の現象に遭遇したときに「推奨メモリ以外は電圧が下がってしまうのでとエラーが出る」という説明を受けたことがあります。
Re:一枚ずつテスト (スコア:2)
むしろよくあるのは、並列に何本も刺していることからくる電力不足の方ではないかと。
はい、おそらくそうなんだろうなと。AUTO でダメで 1.8V だと OK なのは、 そのあたりの制御がうまくいっていないんだなと思っています。 昔にくらべてメモリも高速なクロックで動作し、 タイミングもシビアになっていると思うので、 そのあたりも影響しているのかなぁ、と思いました。
昔のSun3とか、1MBモジュールだか512KBモジュールだかを4枚ずつ16枚とか刺していましたね。 あのころに比べると、ずいぶんヤワになった(求められる精度が上がった)ものだなぁ、 と思います。昔の方がもっと製品間のばらつきや電圧のブレはあったはずですから。
大本の問題もある(Re:一枚ずつテスト (スコア:2, 参考になる)
元の電源装置が安定していない安物だということはないですか?
同じメーカで似た価格帯でもシリーズが違うと基本設計の違いからかあったりする問題なのでややこしいのですが、マザーボード全体の負荷変動に強い電源と脆弱な電源と両方ありますよ。
特に四ピン(もしくは6ピン)の3.3V系のように電流変動が激しい所の負荷容量がギリギリだとよくあるのですが、突然マザーがハングしたり、AC電源の瞬断で全体がリブートしたりとか。
結局電源を余裕のあるのに変えたらまったくそういう症状は出なくなったりする。
# 高価な電源でも一律にいいとは言いにくい所はあるので悩ましい。
# 個人的にはAntecのこのモデル [antec.com]の同系列の前の世代が変動に強いです。
## ある意味、他社の電源が怖くて使えなくなるような(^_^;程度には安定してる上に瞬断にも強いので。
Re:一枚ずつテスト (スコア:2)
お店によるとは思いますが・・・
有楽町の某量販店のパーツコーナーで交換して貰ったことがあります。
現物とmemtestのFDを持っていって売り場のテスト用マザボに付けて、
30分ほどでエラーがボロボロ出たので別メーカーの同等品に替えて貰いました。
パーツ専門店では「相性交換」なんてのをやっている所もありますから
不安な人はそういう店で買えばよいかと。たしか、購入時に何百円か
上乗せして払うと何度でも(高い場合は)差額だけで同等品に替えて
もらえる様なサービスだったと思います。
Re:一枚ずつテスト (スコア:1)
私の場合 大手PCショップのサーバを購入しmemtest86を走らせたところエラーが出ました。
しょうがないのでmemtestでエラーが出た事を伝え、サーバを返送したところ
「こちらではエラーが出ないのでメモリ交換はできない」と言われました。
だからショップメイドのPCは二度と使いません。
(そもそも私がチョイスしたわけではないんですけどね)
Re:一枚ずつテスト (スコア:2)
逆にそこまで相手が突っぱねるほうがかえって怪しいですね。
ショップがロット不良つかんで大量の不良クレームでも受けてたんじゃないでしょうか?
工学の基本原則 (スコア:1, すばらしい洞察)
しかし
正常動作しているからといって、不備(バグ、不良)がないことにはならない。
ソフトでもハードでも、いや恐らくほとんどすべての人間の生産物に関して成り立つでしょう。
Re:工学の基本原則 (スコア:2)
一般的に工業製品(計算機)の目的は正常動作することであって不備をなくすことではありません。
[udon]
チェックするぐらいなら交換 (スコア:1)
交換もしくは買いなおした方が安上がりですね
チェックする事自体をホビーと思えるなら別ですが
Re:チェックするぐらいなら交換 (スコア:1)
メールチェックにしか使っていなければいいんですけどね, 1千時間かけた数値計算の最後数秒でこけたりしたら目も当てられないわけで.
Re:Vistaとゼロページ (スコア:2, 参考になる)
ITmediaアンカーデスク:Windows Vistaの信頼性はUNIX並に? [itmedia.co.jp]
MS がハードメーカに ECC 付き採用を求めたなんて話もありましたね。
そのハードは K8/K10 はメモリコントローラが ECC サポートで後はマザーボード (BIOS) 次第なのですがあんまり普及していない感じ。
Intel ではメモリコントローラを内蔵した Nehalem では確か対応していて、それ以前の(メモリコントローラがノースブリッジにある) Core 2 とかではデスクトップ向けでは非サポートだったかと。
x64 のドライバ署名強制といい、 Vista で目指した高みは何となく滑っている物が多い気がする。
Re:Vistaとゼロページ (スコア:2, すばらしい洞察)
異常があったら停止するのは重要です。
中身が化けたデータやファイルが知らぬ間に増殖してても良いなら話は別でしょうけど。
BadRAM (スコア:2, 参考になる)
本家はここかな。 [vanrein.org] ここ [masaru.org]経由で見つけたhow-to [linux.or.jp]。
不良メモリをカーネルでとっちゃって使われないようにするらしいです。
AVG anti-virus data base out of date
Re:妄想 (スコア:1)
想像するだけで恐ろしい…
まあそのためのECCでしょうね
Re:妄想 (スコア:1)
まあ、実際の処理はintとかでやっているのでは無いでしょうが。
Re:え? (スコア:1, すばらしい洞察)
PowerEdge SC420ってサーバー機ですよね。さすがに激安でもサーバーって事じゃないでしょうか。あとワークステーションと名のつくものもよほどへんちくりんなものを買わない限り、きちんとECC付きメモリがついてると思います。
んだけど、今時よほどの用途じゃない限り、ワークステーションなんか高くて買ってくれませんて。よくて8万くらいのデスクトップ、失敗するとOSがWindows XPって理由だけで現役扱いされたPentium3なマシンが回ってきます。
従って、ひがみと思われてもいい。言わせていただきます。
「仕事で使うPCはECC」とか普通ありえん。そしてまず第1に安かろうとなんだろうと事務屋がコンパクトだからという下らん理由で適当に選んだクソみたいなPCではなく、普通にSC420が出てくる環境などそうかんたんにあるわけねーだろ!
以上よろしくお願いいたします。
#うちだけだといやなのでACで
Re:私の疑問 (スコア:2)
ECCメモリの値段の下がりっぷりをみたら16GB乗せても良いんじゃないかと思いました
金が無くて2本埋めただけの我が家のサーバのM/Bも満タンにできそうな気がします