Linux Mint 21 は systemd-oomd 非搭載に 34
ストーリー by nagazou
非搭載 部門より
非搭載 部門より
headless 曰く、
まもなくベータ版提供が始まる Linux Mint 21 では、systemd-oomd を標準搭載しないそうだ (The Linux Mint Blog の記事、 Phoronix の記事、 Neowin の記事)。
systemd-oomd (out-of-memory daemon) はメモリー不足時にプロセスを終了して空きメモリーを確保するシステムサービスだ。Linux Mint の上流である Ubuntu 22.04 LTS は標準で systemd-oomd を使用するが、メモリー使用量の多いアプリが予期せず終了してしまうといった問題が報告されている。そのため、Ubuntu が oomd の動作を調整したのに対し、Linux Mint プロジェクトでは問題を調査した結果、Linux Mint 21 に搭載しないことを決めたとのことだ。
終了しなけりゃええのか? (スコア:0)
Out Of Memory が発生したけど頑張って続行します、ってどうなの?
#今どきの富豪的環境でもメモリは不足するのか。まあ、あればあるだけ使い切るもんなんだろうけど。
Re: (スコア:0)
BSDやSolarisみたく、forkやsbrk呼んだときに、スワップを確保しとけばいいのに。
システムコールのコストは高くなるけど。
Re: (スコア:0)
そのあたりの議論はoom killer の頃にされてたかと
# FA:きょうせいじっそうするったらするんだー
Re: (スコア:0)
systemdがやらなきゃカーネルがやるんじゃね?全然知らんけど
Re: (スコア:0)
たぶんそう
https://packages.debian.org/ja/sid/armel/systemd-oomd [debian.org]
systemdをinitに採用していないシステムでもOOM-killerは走るんだから当然と言えば当然だった
Re: (スコア:0)
ちがう、そうじゃない
だったらsystemd-oomdが介入する余地がない
Re: (スコア:0)
翻訳(一部意訳)すると、
oom-killer が発動する前に cgroup でリソース監視して、
oom-killer とは別のルールで先にユーザーランドで kill するのが systemd-oomd だよ。
Re: (スコア:0)
これはあるプロセスで Out of Memory が発生したらそれを kill するって話ではなく、
システム全体でメモリが不足気味になったら、メモリをたくさん使っているプロセスを
適当に kill するって話じゃないの? ちゃんと読んでないからしらんけど。
謎基準 (スコア:0)
最近は知らないけど昔3.0くらいのカーネルでメモリ食いまくる重い計算してたら、計算プロセス残したままNFS殺してて笑っちゃった。
FreeBSDだと素直にメモリー食ってるやつが殺されてたけど、どう言う基準だったんだろう。
アロケートに失敗したら適切にエラー処理をする (スコア:0)
じゃあかんの?
マルチユーザーやシングルユーザーでも特定プロセスの暴走でメモリー不足からのシステム不良が起こるなら事前に最大ヒープサイズを制限するとかじゃあかんの?
他にも有ったけど問題のないプロセスを無作為に殺す仕様が理解できない
Re:アロケートに失敗したら適切にエラー処理をする (スコア:1)
(昔のこと)
Linuxカーネルの場合、メモリ不足でプロセスが死ぬのは、メモリを確保した時点ではなくて、ホントにそのメモリに書き込んだときだったのね。
かなり端折って言えば、mallocは常に成功(overcommit)、確保したメモリに初めて書こうとした時点でカーネルが実際にメモリを確保、その時点 でメモリ不足になっていたら例外発生ってな感じ。
これじゃあまともなアプリは作れないってんで、overcommit=0にする設定もあったんだけど、デフォルト0じゃなかったのね。
この仕掛けだと、メモリ不足になったのは大食いのアプリがあったからなんだろうけど、killされるプロセスはメモリ不足に陥ったときにたまたま(メモリ確保を伴う)メモリ書き込みをしたプロセスなのね。それじゃあ理不尽でしょ。
(今のこと)
しらん。
Re: (スコア:0)
飛行機のオーバーブッキングみたいね
チケット持ってるのに、後から来たという理由で乗れない
Re: (スコア:0)
だって乗客がめちゃくちゃに空予約するから、オーバーブックしないと座席ガラガラなんですよ。
Re: (スコア:0)
今はovercommit=0がデフォルトだけど、0でもovercommitするぞ。
馬鹿げたサイズのアロケーションは弾くって程度のチェックであって、事実上1と大差ない。
厳密にチェックするのは2。
とはいえ、VSSとRSSが大きく乖離するなんて当たり前だし、こいつらを近づけるのはかーなーり面倒くさい。
スレッド立てるだけでもスタックサイズ気にしないとだし、mallocすら気軽に叩けない。
Re:アロケートに失敗したら適切にエラー処理をする (スコア:1)
overcommit=0 にして安全に利用できる範囲に絞り込むと、サービスやバッチの実行の組み合わせ等がシビアになる一方で、メモリの実使用率がすっかすかになるんですよね……。
# OOM killerの仕組みは端的に言ってクソだと思うけど、
# 既にovercommit + OOM killerの組み合わせが前提になってる気がする。
Re: (スコア:0)
> # OOM killerの仕組みは端的に言ってクソだと思うけど、
この仕組みを初めて知った時、目が点になりましたよ。
Re: (スコア:0)
スワップいっぱい取ればいいだけちゃうのか。今時ディスクなんか安いんだし。
# OOM Killerの話を聞いた時には唖然とした。
Re: (スコア:0)
複数のデータベースのプロセスが数TBのスパースファイルをまるっとmmapしたら「ディスクなんて安いんだし」なんて太平楽はこいてられなくなる、って話じゃないかな。知らんけど。
Re: (スコア:0)
ファイルをmmapするとファイルバックエンドなメモリになる(逆はanonymousで、スワップに書き出される対象)ので、スワップの空きによらずmmapいけるんじゃないかと思う。
Re: (スコア:0)
CRTだかOSだかしらんけど、最近の環境ではアロケートは成功するのに
アクセスすると SEGV になったりするので、「アロケートに失敗したら
適切に終了する」ができなかったりするんですよ。
Re: (スコア:0)
現実の運用は、デスクトップならallocateが失敗しない様に(OOMに至らない様に)、ユーザが利用可能メモリを監視し、不要なプロセスを終了する。というものです。
「問題のないプロセス〜」ではなく「加護のないプロセスを無作為に殺す仕様」だったかと思います。
毎日毎日rebootするたびに子供にecho -17 /proc/***/oom_adjして回りました。
OOM Killerに亭主を殺されて一年が経ちました。 [tumblr.com]
ところで、「アロケートに失敗したら適切にエラー処理をする」と言いますが、実際にしたことありますか?
「適切に処理する」「適切にエラー処理をする」とだけ書いてある仕様書渡されて、コード書けますか?
「適切にエラー処理をす
Re: (スコア:0)
自分はデスクトップアプリケーションの開発だから
メニュー等から機能を選択→処理過程で失敗→原状復帰して「メモリー不足で実行できません」と表示
の流れで処理してましたが?
そもそも私がここで詳細仕様を提示する必要がありません
GC前提の富豪プロレスしかしたことない人には想像できないのでしょうがオフトピです
電気のアロケーション処理?は専門外だから知りません
節電も何も普段から無駄に電気を使ってないですが
待機電源を減らすためにプラグを抜くような事はしてませんよ
例え話のつもりかも知れませんが例えになってないただのオフトピです
Re: (スコア:0)
> 自分はデスクトップアプリケーションの開発だから
main() がコールされる前にメモリ不足になった場合の処理はどうやって実装してますか?
「メモリー不足で実行できません」を表示する処理でメモリ不足が起きた場合のエラー処理はどう実装してますか?
Re: (スコア:0)
main() がコールされる前の話とか、この予備領域の確保にすら失敗する状態のことまでは流石に対策してないけどね
OOM Killerは載ってるのだろうか (スコア:0)
OOM Killerが載っているとしたら単にLinux Mintチームの開発力ないし人数不足だろう。そのうちsystemdを使うために今回弾いた機能を除去するコストがメリットを上回りそう。
Re: (スコア:0)
OOM Killerが載っているとしたら単にLinux Mintチームの開発力ないし人数不足だろう。
systemd-linux-mintにしちゃえば解決(マテ
あの痛ましい事件からもう10年 (スコア:0)
やっと動きがあったのか。
( ̄人 ̄)合掌…
OOM Killer に亭主を殺された憐れな未亡人に対して /.er がすべきこととは
https://linux.srad.jp/story/13/02/08/0239206/ [linux.srad.jp]
Re: (スコア:0)
こっちももう5年前か
ユナイテッド航空、リアルOOM killerを発動
https://linux.srad.jp/story/17/04/13/0433254/ [linux.srad.jp]
実質、ユナイテッド航空の体制、体質は変わってなさげ
メモリが足りないのは free をないがしろにしているからだ (スコア:0)
free が如何に重要か伝える
systemd-rms を我々は実装しなければならない。
# まずは free の定義からはじめよう。
Re: (スコア:0)
あれやろ、経費精算とかで使とるわ
Re: (スコア:0)
腐女子向けのアニメちゃうか?
Re: (スコア:0)
乞食乙
Fedoraの場合は? (スコア:0)
https://fedoraproject.org/wiki/Changes/EnableSystemdOomd [fedoraproject.org]
34から有効になっているみたい。
少し関連ありそうな、Swap on Zramは一足先に33から有効になっている。
一方、Ubuntuは旧来のSwapファイル運用のままOOMDを導入した格好になっている。