마운트된 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당신의 문제를 해결할 것입니다.

관련 정보