アカウント名:
パスワード:
じゃあかんの?マルチユーザーやシングルユーザーでも特定プロセスの暴走でメモリー不足からのシステム不良が起こるなら事前に最大ヒープサイズを制限するとかじゃあかんの?他にも有ったけど問題のないプロセスを無作為に殺す仕様が理解できない
現実の運用は、デスクトップならallocateが失敗しない様に(OOMに至らない様に)、ユーザが利用可能メモリを監視し、不要なプロセスを終了する。というものです。
「問題のないプロセス〜」ではなく「加護のないプロセスを無作為に殺す仕様」だったかと思います。
毎日毎日rebootするたびに子供にecho -17 /proc/***/oom_adjして回りました。
OOM Killerに亭主を殺されて一年が経ちました。 [tumblr.com]
ところで、「アロケートに失敗したら適切にエラー処理をする」と言いますが、実際にしたことありますか?「適切に処理する」「適切にエラー処理をする」とだけ書いてある仕様書渡されて、コード書けますか?「適切にエラー処理をする」→「要求メモリをとりあえず半分に減らす」とか「sleepしてから再度メモリを要求する」みたいなコードになるだけでしょ。そして、皆自分以外の誰かが終了するのを待ち続けた。(昨今のお薬不足もこんな感じなんだろうなと思っています。)こんな感じで、適切なエラー処理がそもそも期待できないから、OOMしていると思いますよ。(メモリ枯渇はそもそも致命的(回復不能)エラーですよ。プロセス達は、自分以外の誰かが死ねば解決って腹の中で思っているのですよ。)
ところで、あなたは、節電要請に応じましたか? いよいよ電力が枯渇し、全員がエアコン・冷蔵庫のない生活をするか、一部の人がエアコン・冷蔵庫のない生活をするか、どちらかしか選べないならどうしますか?(10年前に火力発電所造っておけばこうはならなかっただろう。しかし、現実には太陽光発電所を造った。時既に遅し。私達は、私達の生活を、OOM Killer@電力に生殺与奪権を与えたのだった。)
デスクトップユーザとしては、OOMは、迷惑半分、有難半分ですね。自動強制終了は必要です。延々とSWAPされるぐらいなら、自動終了してほしい。(サーバサイドは、迷惑でしかないでしょうし、OOMよりも、割り当てリソース超過で強制終了させるでしょうからそもそもOOMいらないだろう。)
自分はデスクトップアプリケーションの開発だからメニュー等から機能を選択→処理過程で失敗→原状復帰して「メモリー不足で実行できません」と表示の流れで処理してましたが?そもそも私がここで詳細仕様を提示する必要がありませんGC前提の富豪プロレスしかしたことない人には想像できないのでしょうがオフトピです電気のアロケーション処理?は専門外だから知りません節電も何も普段から無駄に電気を使ってないですが待機電源を減らすためにプラグを抜くような事はしてませんよ例え話のつもりかも知れませんが例えになってないただのオフトピです
> 自分はデスクトップアプリケーションの開発だから
main() がコールされる前にメモリ不足になった場合の処理はどうやって実装してますか?「メモリー不足で実行できません」を表示する処理でメモリ不足が起きた場合のエラー処理はどう実装してますか?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
アロケートに失敗したら適切にエラー処理をする (スコア:0)
じゃあかんの?
マルチユーザーやシングルユーザーでも特定プロセスの暴走でメモリー不足からのシステム不良が起こるなら事前に最大ヒープサイズを制限するとかじゃあかんの?
他にも有ったけど問題のないプロセスを無作為に殺す仕様が理解できない
Re:アロケートに失敗したら適切にエラー処理をする (スコア:0)
現実の運用は、デスクトップならallocateが失敗しない様に(OOMに至らない様に)、ユーザが利用可能メモリを監視し、不要なプロセスを終了する。というものです。
「問題のないプロセス〜」ではなく「加護のないプロセスを無作為に殺す仕様」だったかと思います。
毎日毎日rebootするたびに子供にecho -17 /proc/***/oom_adjして回りました。
OOM Killerに亭主を殺されて一年が経ちました。 [tumblr.com]
ところで、「アロケートに失敗したら適切にエラー処理をする」と言いますが、実際にしたことありますか?
「適切に処理する」「適切にエラー処理をする」とだけ書いてある仕様書渡されて、コード書けますか?
「適切にエラー処理をする」→「要求メモリをとりあえず半分に減らす」とか「sleepしてから再度メモリを要求する」みたいなコードになるだけでしょ。そして、皆自分以外の誰かが終了するのを待ち続けた。(昨今のお薬不足もこんな感じなんだろうなと思っています。)
こんな感じで、適切なエラー処理がそもそも期待できないから、OOMしていると思いますよ。(メモリ枯渇はそもそも致命的(回復不能)エラーですよ。プロセス達は、自分以外の誰かが死ねば解決って腹の中で思っているのですよ。)
ところで、あなたは、節電要請に応じましたか? いよいよ電力が枯渇し、全員がエアコン・冷蔵庫のない生活をするか、一部の人がエアコン・冷蔵庫のない生活をするか、どちらかしか選べないならどうしますか?
(10年前に火力発電所造っておけばこうはならなかっただろう。しかし、現実には太陽光発電所を造った。時既に遅し。私達は、私達の生活を、OOM Killer@電力に生殺与奪権を与えたのだった。)
デスクトップユーザとしては、OOMは、迷惑半分、有難半分ですね。自動強制終了は必要です。延々とSWAPされるぐらいなら、自動終了してほしい。(サーバサイドは、迷惑でしかないでしょうし、OOMよりも、割り当てリソース超過で強制終了させるでしょうからそもそもOOMいらないだろう。)
Re: (スコア:0)
自分はデスクトップアプリケーションの開発だから
メニュー等から機能を選択→処理過程で失敗→原状復帰して「メモリー不足で実行できません」と表示
の流れで処理してましたが?
そもそも私がここで詳細仕様を提示する必要がありません
GC前提の富豪プロレスしかしたことない人には想像できないのでしょうがオフトピです
電気のアロケーション処理?は専門外だから知りません
節電も何も普段から無駄に電気を使ってないですが
待機電源を減らすためにプラグを抜くような事はしてませんよ
例え話のつもりかも知れませんが例えになってないただのオフトピです
Re: (スコア:0)
> 自分はデスクトップアプリケーションの開発だから
main() がコールされる前にメモリ不足になった場合の処理はどうやって実装してますか?
「メモリー不足で実行できません」を表示する処理でメモリ不足が起きた場合のエラー処理はどう実装してますか?
Re: (スコア:0)
main() がコールされる前の話とか、この予備領域の確保にすら失敗する状態のことまでは流石に対策してないけどね