パスワードを忘れた? アカウント作成
15721226 story
Linux

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 に搭載しないことを決めたとのことだ。

  • by Anonymous Coward on 2022年07月05日 13時43分 (#4283164)

    Out Of Memory が発生したけど頑張って続行します、ってどうなの?
    #今どきの富豪的環境でもメモリは不足するのか。まあ、あればあるだけ使い切るもんなんだろうけど。

    ここに返信
    • by Anonymous Coward

      BSDやSolarisみたく、forkやsbrk呼んだときに、スワップを確保しとけばいいのに。
      システムコールのコストは高くなるけど。

    • by Anonymous Coward

      そのあたりの議論はoom killer の頃にされてたかと

      # FA:きょうせいじっそうするったらするんだー

    • by Anonymous Coward

      systemdがやらなきゃカーネルがやるんじゃね?全然知らんけど

      • by Anonymous Coward

        たぶんそう
        https://packages.debian.org/ja/sid/armel/systemd-oomd [debian.org]

        systemd-oomd is a system service that uses cgroups-v2 and pressure stall information (PSI) to monitor and take action on processes before an OOM occurs in kernel space.

        systemdをinitに採用していないシステムでもOOM-killerは走るんだから当然と言えば当然だった

        • by Anonymous Coward

          ちがう、そうじゃない

          だったらsystemd-oomdが介入する余地がない

          • by Anonymous Coward

            翻訳(一部意訳)すると、
            oom-killer が発動する前に cgroup でリソース監視して、
            oom-killer とは別のルールで先にユーザーランドで kill するのが systemd-oomd だよ。

    • by Anonymous Coward

      これはあるプロセスで Out of Memory が発生したらそれを kill するって話ではなく、
      システム全体でメモリが不足気味になったら、メモリをたくさん使っているプロセスを
      適当に kill するって話じゃないの? ちゃんと読んでないからしらんけど。

  • by Anonymous Coward on 2022年07月05日 14時06分 (#4283196)

    最近は知らないけど昔3.0くらいのカーネルでメモリ食いまくる重い計算してたら、計算プロセス残したままNFS殺してて笑っちゃった。
    FreeBSDだと素直にメモリー食ってるやつが殺されてたけど、どう言う基準だったんだろう。

    ここに返信
  • by Anonymous Coward on 2022年07月05日 14時19分 (#4283216)

    じゃあかんの?
    マルチユーザーやシングルユーザーでも特定プロセスの暴走でメモリー不足からのシステム不良が起こるなら事前に最大ヒープサイズを制限するとかじゃあかんの?
    他にも有ったけど問題のないプロセスを無作為に殺す仕様が理解できない

    ここに返信
    • by Anonymous Coward on 2022年07月05日 14時40分 (#4283235)

      (昔のこと)
      Linuxカーネルの場合、メモリ不足でプロセスが死ぬのは、メモリを確保した時点ではなくて、ホントにそのメモリに書き込んだときだったのね。
      かなり端折って言えば、mallocは常に成功(overcommit)、確保したメモリに初めて書こうとした時点でカーネルが実際にメモリを確保、その時点 でメモリ不足になっていたら例外発生ってな感じ。
      これじゃあまともなアプリは作れないってんで、overcommit=0にする設定もあったんだけど、デフォルト0じゃなかったのね。
      この仕掛けだと、メモリ不足になったのは大食いのアプリがあったからなんだろうけど、killされるプロセスはメモリ不足に陥ったときにたまたま(メモリ確保を伴う)メモリ書き込みをしたプロセスなのね。それじゃあ理不尽でしょ。

      (今のこと)
      しらん。

      • by Anonymous Coward

        飛行機のオーバーブッキングみたいね
        チケット持ってるのに、後から来たという理由で乗れない

        • by Anonymous Coward

          だって乗客がめちゃくちゃに空予約するから、オーバーブックしないと座席ガラガラなんですよ。

      • by Anonymous Coward

        今はovercommit=0がデフォルトだけど、0でもovercommitするぞ。
        馬鹿げたサイズのアロケーションは弾くって程度のチェックであって、事実上1と大差ない。
        厳密にチェックするのは2。

        とはいえ、VSSとRSSが大きく乖離するなんて当たり前だし、こいつらを近づけるのはかーなーり面倒くさい。
        スレッド立てるだけでもスタックサイズ気にしないとだし、mallocすら気軽に叩けない。

    • by Anonymous Coward on 2022年07月05日 15時06分 (#4283260)

      overcommit=0 にして安全に利用できる範囲に絞り込むと、サービスやバッチの実行の組み合わせ等がシビアになる一方で、メモリの実使用率がすっかすかになるんですよね……。

      # OOM killerの仕組みは端的に言ってクソだと思うけど、
      # 既にovercommit + OOM killerの組み合わせが前提になってる気がする。

      • by Anonymous Coward

        > # OOM killerの仕組みは端的に言ってクソだと思うけど、
         
        この仕組みを初めて知った時、目が点になりましたよ。

      • by Anonymous Coward

        スワップいっぱい取ればいいだけちゃうのか。今時ディスクなんか安いんだし。
        # OOM Killerの話を聞いた時には唖然とした。

        • by Anonymous Coward

          複数のデータベースのプロセスが数TBのスパースファイルをまるっとmmapしたら「ディスクなんて安いんだし」なんて太平楽はこいてられなくなる、って話じゃないかな。知らんけど。

          • by Anonymous Coward

            ファイルをmmapするとファイルバックエンドなメモリになる(逆はanonymousで、スワップに書き出される対象)ので、スワップの空きによらずmmapいけるんじゃないかと思う。

    • by Anonymous Coward

      CRTだかOSだかしらんけど、最近の環境ではアロケートは成功するのに
      アクセスすると SEGV になったりするので、「アロケートに失敗したら
      適切に終了する」ができなかったりするんですよ。

    • by Anonymous Coward

      現実の運用は、デスクトップならallocateが失敗しない様に(OOMに至らない様に)、ユーザが利用可能メモリを監視し、不要なプロセスを終了する。というものです。

      「問題のないプロセス〜」ではなく「加護のないプロセスを無作為に殺す仕様」だったかと思います。

      毎日毎日rebootするたびに子供にecho -17 /proc/***/oom_adjして回りました。

      OOM Killerに亭主を殺されて一年が経ちました。 [tumblr.com]

      ところで、「アロケートに失敗したら適切にエラー処理をする」と言いますが、実際にしたことありますか?
      「適切に処理する」「適切にエラー処理をする」とだけ書いてある仕様書渡されて、コード書けますか?
      「適切にエラー処理をす

      • by Anonymous Coward

        自分はデスクトップアプリケーションの開発だから
        メニュー等から機能を選択→処理過程で失敗→原状復帰して「メモリー不足で実行できません」と表示
        の流れで処理してましたが?
        そもそも私がここで詳細仕様を提示する必要がありません
        GC前提の富豪プロレスしかしたことない人には想像できないのでしょうがオフトピです
        電気のアロケーション処理?は専門外だから知りません
        節電も何も普段から無駄に電気を使ってないですが
        待機電源を減らすためにプラグを抜くような事はしてませんよ
        例え話のつもりかも知れませんが例えになってないただのオフトピです

        • by Anonymous Coward

          > 自分はデスクトップアプリケーションの開発だから

            main() がコールされる前にメモリ不足になった場合の処理はどうやって実装してますか?
          「メモリー不足で実行できません」を表示する処理でメモリ不足が起きた場合のエラー処理はどう実装してますか?

          • by Anonymous Coward
            「メモリー不足で実行できません」を表示する処理はmain()の頭で静的にアロケートしといたメモリを使うからメモリ不足が起きることはないよ
            main() がコールされる前の話とか、この予備領域の確保にすら失敗する状態のことまでは流石に対策してないけどね
  • by Anonymous Coward on 2022年07月05日 14時54分 (#4283247)

    OOM Killerが載っているとしたら単にLinux Mintチームの開発力ないし人数不足だろう。そのうちsystemdを使うために今回弾いた機能を除去するコストがメリットを上回りそう。

    ここに返信
    • by Anonymous Coward

      OOM Killerが載っているとしたら単にLinux Mintチームの開発力ないし人数不足だろう。

      systemd-linux-mintにしちゃえば解決(マテ

  • by Anonymous Coward on 2022年07月05日 15時55分 (#4283301)

    やっと動きがあったのか。
    ( ̄人 ̄)合掌…

    OOM Killer に亭主を殺された憐れな未亡人に対して /.er がすべきこととは
    https://linux.srad.jp/story/13/02/08/0239206/ [linux.srad.jp]

    ここに返信
  • free が如何に重要か伝える
    systemd-rms を我々は実装しなければならない。

    # まずは free の定義からはじめよう。

    ここに返信
  • by Anonymous Coward on 2022年07月05日 17時57分 (#4283413)

    https://fedoraproject.org/wiki/Changes/EnableSystemdOomd [fedoraproject.org]
    34から有効になっているみたい。
    少し関連ありそうな、Swap on Zramは一足先に33から有効になっている。
    一方、Ubuntuは旧来のSwapファイル運用のままOOMDを導入した格好になっている。

    ここに返信
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...