共有メモリの強制解除

共有メモリの強制解除

10GB程度の共有メモリを消費しているようですが、終了したプロセスと判断されますctrl-C

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           31Gi       706Mi       1.9Gi        10Gi        28Gi        19Gi
Swap:         4.0Gi       4.0Gi          0B

htop以下は、メモリ使用率に基づいてソートされた出力です。

ここに画像の説明を入力してください。

これを説明するプロセスはないようです。一度はメモリ集約的なプログラムを実行したことがありますが、前述のようにプログラムを終了しました。もう一度実行したいのですが、メモリの問題のため、今は実行されません。また、確認してみると

$ ipcs -a --human

------ Message Queues --------
key        msqid      owner      perms      size         messages

------ Shared Memory Segments --------
key        shmid      owner      perms      size       nattch     status
0x00000000 13         kevin      600            4M     2          dest
0x00000000 48         kevin      600            4M     2          dest
0x00000000 49         kevin      600           64M     2          dest

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

$

確かにシステムを再起動できますが、稼働中のサーバーであり、バックアップを起動するために常に物理的にアクセスできるわけではありません。このメモリを強制的に解放する方法はありますか?

答え1

あなたは試すことができます:

sync
echo 3 > /proc/sys/vm/drop_caches

これにより、システムバッファとキャッシュが消去されます。サーバーの負荷が高くない場合に実行することをお勧めします。

答え2

理由がわかりますか?以下は、将来の他の読者に役立ちます。

今、メモリ使用量の調査を終えました。df -hシステムで使用されているメモリを見て、tmpfs実行ps -eo pid,rss,trs,drs,commコード以外のメモリを使用して出力をLibre Calcにコピーしました。 RSSよりはるかに大きく、マニュアルにはpsバイト単位なのかキロバイト単位なのか他の単位なのかは示されていないので、役に立たないと思います)。

最後に、〜100Mbの誤差マージンを調整しました。

available memory = total - sum (rss) - sum (used tmpfs).

ipcsPS共有メモリの場合、pidを含むバイトが出力されず、1つだけ出力されるという事実に驚いたので、その部分をスキップしました(少なくとも今は)。

関連情報