OOM - メモリ消費量が最も高いユーザープロセスを終了しますか?

OOM - メモリ消費量が最も高いユーザープロセスを終了しますか?

アクティブユーザーが利用可能なメモリを公平に共有する必要があるマルチユーザーシステムがあります。

合計メモリ消費量が最も高いユーザープロセスを終了するようにLinuxを設定できますか?

これは、システムメモリが不足した場合に発生します。私の考えでは、このユーザーの最大のプロセスを終了する必要があると思います。

ユーザー数が多様で、ほとんどのユーザーが作業しないとメモリが無駄になるため、ユーザーにメモリ制限を設定したくありません。最大のプロセスを終了することは可能ですが、ユーザーごとに実行する必要があります。そうしないと、あるユーザーが複数の小さなプロセスを作成して、他のユーザーの中規模プロセスが終了する可能性があります。

ベストアンサー1

以下のコマンドは、ボックス内で最も多くのメモリを使用するプロセスを終了します。これはあなたが探しているものですか、それとも最も多くのメモリを使用するユーザープロセスであるべきですか(これはメモリ不足の最大の原因と原因ではないかもしれません)。

#!/bin/bash

free=`awk '/^Mem/ {print $3}' <(free -m)`

psout=`ps axo pid,args,pmem,rss,vsz --sort -pmem,-rss,-vsz | head -2`
pid=`echo $psout | cut -d " " -f 6`

if (( $free < 1 )); then

kill -9 $pid

fi;

編集:今、あなたの推論を確認し、上記のコードを修正してみましょう。

編集2:今日このプロジェクトを完了する必要はありませんので、正しい道を案内します。次のURLからsmem(pythonスクリプト)をダウンロードできます。 https://www.selenic.com/smem/download/

-uオプションを使用してrootとして実行すると、各ユーザーが使用したメモリの合計量がわかります。使用されたメモリごとにソートされた配列に配置し、上記のpsコマンドに-uを追加すると、そのユーザーの最悪の犯罪者を殺すことができます。

おすすめ記事