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
あなたの問題を解決します。