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