アカウント名:
パスワード:
どういったケースで有用なのか想像ができないんですが
例えばこのゲーム [seul.org]のように、ものすごい勢いでmalloc()しまくって(もしくはclassをnewしまくって)、用済みになっても手放さない、ゆかいなソフトが、稀にあるんですよ。勿論れっきとしたバグなんですが、OOM Killerが発動しないと、メモリが足りなくなって詰んでシステムが死んでしまうので、発動させてなんとかシステムは生き残らせようとする訳です。後、最近のメモリ容量が豊富なシステムではあんまし考えられないのですが、サーバで猛烈な量のスクリプトやプロセスが走ってしまってる場合とか、すごい数のユーザがログインしてコンパイラやEmacsを走らせてるとか…ある意味、90年代半ばまでの遺物なんですけど、実際役に立つこともあるので、廃止されてないんですよ。
これは妖怪メモリ不足ですね!メモリ増設もいいですが、サーバをリプレースしましょう!そうしましょう!
というセールストークにしか役にたった試しがないデース……
無限アロケーター系はちょっと考えたんですが本命に当たるより前にシステムに必須な何かを消される危険のほうが大きいんじゃないかと思ったんですがもうどうしようもない状況だから博打でもかまわない感じなんですかね※昔はシステムに必須なデーモン類が少なくて分の悪い賭けでもなかったのかな
なんか一応行儀が悪そうなやつを選んでる、んじゃなかったでしたっけ(うろ覚え
本当ですね。ググったら、dstat --top-oomで悪そうなヤツ(プロセス)を確認できるということが分かりました。
もうそろそろ落ちるって時になるべく後まで観察ができます。いきなりpanicするよりましってだけです。衝突が回避できない時にエアバッグを展開するようなものです。展開したらすごく運転しづらいけど頭ぶつけて死ぬよりはまし。
>メモリが足りなくなって詰んでシステムが死んでしまうので、
そもそもここがわからない。遅くなるだけじゃないの?あまりにも遅すぎて操作不能状態を「死んでしまう」と言ってるのならわかるが。
多分、頑張ったら、HDDの最後の1バイトを使い切るまで遅くなるだけで踏ん張るようなOSの実装も出来るんだろうし、テーマとしては面白そうだけど、そんな事をしようとすると、そのために必要になる余分な処理やらデータ構造のせいで、普段から無駄に遅いOSになったりする。「上限を決めとく」というのは、かなり多くのソフトウェアで凄く効く高速化手法。
大抵のOSは、普通に使っていて問題にならないようなところに多数の上限が設けられてる。
その中でも普通に使っていて気付きやすい所では、パス名+ファイル名の長さの上限とか。結構短いので、実用的な範囲内でも、割としょっちゅう引っかかる。Windowsだと今時、250文字だとか、ちょっと信じがたい制限が残ってる。やっとのことで解消に向かっている [developers.srad.jp]けど。
"COM Killer"
癇癪起こしてパソコン叩き壊して窓から投げ捨てる映像を連想した
まずCOM Killerが何の略かについてご説明を。
よく見たらOOM killerでしたねメモリが不足した時にプロセスを殺す仕組みがあると聞きかじるだけで元の言葉は知らずコピペ(にすらなっていない)間違いをしましたごめんなさい
…で、どういう場合に有効なんでしょうか?適当に選んでプロセスを殺すとかシステムをクラッシュさせるだけではないかと思い疑問だったのですがちょうどよい話題だったので聞いてみたのです
OOM Killer(Out of Memory Killer)は、できるだけ影響の少ないプロセスを選んで強制終了させますが、「影響の少ない」はあくまで一般論的な話ですから、個別な話では当然システムダウンの危険性があります。
で、止められて困るプロセスをOOM Killerの対象から外す機能はありまして、必要ならば、この辺のお守りはしなくちゃいけない訳です。
具体的な所は検索して調べて下さい。
MS-DOSとかは、自分の処理に必要なメモリ(バッファとか管理領域とか)をあらかじめすべて確保していた。いまの汎用OSでは、すべて準備しておくことはできないので動的確保となる。
運転中にシステムが必要とするメモリを確保できなかった場合、にっちもさっちもいかなくなってコンソールにメッセージすら出せないかもしれない。無理なのが前提で、フリーズか再起動しかできない。ブルースクリーンは優しさ。
どれかのプロセスが突然死によって OOM Killerの発生をログに残せれば、何が起こっていたのかわかる。
駅に置いてある無料の傘を中国人が返さずにお土産で持って帰って日本人が雨に濡れて帰ってる状態
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
COM Killerの必要性 (スコア:0)
どういったケースで有用なのか想像ができないんですが
Re:COM Killerの必要性 (スコア:1)
例えばこのゲーム [seul.org]のように、ものすごい勢いでmalloc()しまくって(もしくはclassをnewしまくって)、用済みになっても手放さない、ゆかいなソフトが、稀にあるんですよ。
勿論れっきとしたバグなんですが、OOM Killerが発動しないと、メモリが足りなくなって詰んでシステムが死んでしまうので、発動させてなんとかシステムは生き残らせようとする訳です。
後、最近のメモリ容量が豊富なシステムではあんまし考えられないのですが、サーバで猛烈な量のスクリプトやプロセスが走ってしまってる場合とか、すごい数のユーザがログインしてコンパイラやEmacsを走らせてるとか…ある意味、90年代半ばまでの遺物なんですけど、実際役に立つこともあるので、廃止されてないんですよ。
Re:COM Killerの必要性 (スコア:1)
これは妖怪メモリ不足ですね!メモリ増設もいいですが、サーバをリプレースしましょう!
そうしましょう!
というセールストークにしか役にたった試しがないデース……
Re: (スコア:0)
無限アロケーター系はちょっと考えたんですが
本命に当たるより前にシステムに必須な何かを消される危険のほうが大きいんじゃないかと思ったんですが
もうどうしようもない状況だから博打でもかまわない感じなんですかね
※昔はシステムに必須なデーモン類が少なくて分の悪い賭けでもなかったのかな
Re:COM Killerの必要性 (スコア:1)
なんか一応行儀が悪そうなやつを選んでる、んじゃなかったでしたっけ(うろ覚え
Re: (スコア:0)
本当ですね。ググったら、dstat --top-oomで悪そうなヤツ(プロセス)を確認できるということが分かりました。
Re: (スコア:0)
もうそろそろ落ちるって時になるべく後まで観察ができます。いきなりpanicするよりましってだけです。
衝突が回避できない時にエアバッグを展開するようなものです。展開したらすごく運転しづらいけど頭ぶつけて死ぬよりはまし。
Re: (スコア:0)
>メモリが足りなくなって詰んでシステムが死んでしまうので、
そもそもここがわからない。遅くなるだけじゃないの?
あまりにも遅すぎて操作不能状態を「死んでしまう」と言ってるのならわかるが。
Re:COM Killerの必要性 (スコア:1)
Re: (スコア:0)
多分、頑張ったら、HDDの最後の1バイトを使い切るまで遅くなるだけで踏ん張るようなOSの実装も出来るんだろうし、テーマとしては面白そうだけど、そんな事をしようとすると、そのために必要になる余分な処理やらデータ構造のせいで、普段から無駄に遅いOSになったりする。「上限を決めとく」というのは、かなり多くのソフトウェアで凄く効く高速化手法。
大抵のOSは、普通に使っていて問題にならないようなところに多数の上限が設けられてる。
その中でも普通に使っていて気付きやすい所では、パス名+ファイル名の長さの上限とか。結構短いので、実用的な範囲内でも、割としょっちゅう引っかかる。Windowsだと今時、250文字だとか、ちょっと信じがたい制限が残ってる。やっとのことで解消に向かっている [developers.srad.jp]けど。
Re:COM Killerの必要性 (スコア:1)
"COM Killer"
癇癪起こしてパソコン叩き壊して窓から投げ捨てる映像を連想した
Re: (スコア:0)
まずCOM Killerが何の略かについてご説明を。
Re: (スコア:0)
よく見たらOOM killerでしたね
メモリが不足した時にプロセスを殺す仕組みがあると聞きかじるだけで元の言葉は知らずコピペ(にすらなっていない)間違いをしました
ごめんなさい
…で、どういう場合に有効なんでしょうか?
適当に選んでプロセスを殺すとかシステムをクラッシュさせるだけではないかと思い疑問だったのですが
ちょうどよい話題だったので聞いてみたのです
Re:COM Killerの必要性 (スコア:1)
OOM Killer(Out of Memory Killer)は、できるだけ影響の少ないプロセスを選んで
強制終了させますが、「影響の少ない」はあくまで一般論的な話ですから、
個別な話では当然システムダウンの危険性があります。
で、止められて困るプロセスをOOM Killerの対象から外す機能はありまして、
必要ならば、この辺のお守りはしなくちゃいけない訳です。
具体的な所は検索して調べて下さい。
Re: (スコア:0)
MS-DOSとかは、自分の処理に必要なメモリ(バッファとか管理領域とか)をあらかじめすべて確保していた。
いまの汎用OSでは、すべて準備しておくことはできないので動的確保となる。
運転中にシステムが必要とするメモリを確保できなかった場合、にっちもさっちもいかなくなって
コンソールにメッセージすら出せないかもしれない。
無理なのが前提で、フリーズか再起動しかできない。ブルースクリーンは優しさ。
どれかのプロセスが突然死によって OOM Killerの発生をログに残せれば、何が起こっていたのかわかる。
Re: (スコア:0)
駅に置いてある無料の傘を中国人が返さずにお土産で持って帰って日本人が雨に濡れて帰ってる状態