マウントされたtmpfsディレクトリで使用されている共有メモリを削除する方法は?

マウントされたtmpfsディレクトリで使用されている共有メモリを削除する方法は?

RAMディスクを作成するために、次のコマンドを実行しました。

mount -t tmpfs -o size=60G tmpfs /tmp/ramdisk

その後、次のように複数のファイルをこの仮想ファイルシステムにコピーしました。

cp /mnt/user/hugefile.bin /tmp/ramdisk/hugefile.bin
cp /mnt/user/hugefile2.bin /tmp/ramdisk/hugefile2.bin
cp /mnt/user/hugefile3.bin /tmp/ramdisk/hugefile3.bin

その後、最後のcp命令が停止し、CPU負荷が最大値に達します。使用可能なメモリよりもRAMディスクのサイズが大きいためです。 Ctrl+C で中断しました。

しばらくして、インストールされたRAMディスクを次のように削除しました。

umount /tmp/ramdisk

しかし、今私の問題は、共有メモリを解放しないことです。

free -g
              total        used        free      shared  buff/cache   available
Mem:             62           0           0          53          61           7
Swap:             0           0           0

ご覧のとおり、仮想メモリ使用量はそれほど高くありません。

df -BG | grep tmpfs
tmpfs                 1G     1G        1G   1% /run
devtmpfs             32G     0G       32G   0% /dev
tmpfs                32G     0G       32G   0% /dev/shm
tmpfs                 1G     1G        1G   1% /var/log
tmpfs                 4G     0G        4G   0% /tmp/plextranscode

私が見つけたこのヒント使用量を分析するために使用されますが、ipcs結果は空です。

ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

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

私が見つけたこのソリューションそれも本当ですが、他のプロセスのデータが死ぬか心配です。もう少し選択的な解決策はありませんか?

答え1

このソリューションも見つかりましたが、他のプロセスのデータが削除されるのではないかと心配です。もう少し選択的な解決策はありませんか?

echo 3 > /proc/sys/vm/drop_cachesプロセスを終了したり、システムに損傷を与えたり、終了したりすることはできません。キャッシュからすべてのアイテムを削除するだけです。いいえ共有メモリ。ipcsあなたの質問にも関係ありません。

tmpfs共有メモリを占有してもtmpfsマウントポイントをアンマウントした場合は、共有メモリを自動的に解放する必要があります。なぜこれがあなたに起こらなかったのかわかりません。

まだインストールされていると思います/tmp/ramdiskが、何らかの理由でdf表示されません。

rebootあなたの問題を解決します。

関連情報