Linux에서 RAM 메모리 캐시, 버퍼 및 스왑 공간을 지우는 방법
다른 운영 체제와 마찬가지로 GNU/Linux는 메모리 관리를 효율적으로 그 이상으로 구현했습니다. 그러나 프로세스가 메모리를 빼앗아 가고이를 지우고 싶다면 Linux는 램 캐시를 비우거나 지우는 방법을 제공합니다.
모든 Linux 시스템에는 프로세스 나 서비스를 중단하지 않고 캐시를 지우는 세 가지 옵션이 있습니다.
1. PageCache 만 지우십시오.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. 치열과 inode를 지 웁니다.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. PageCache, dentries 및 inode를 지 웁니다.
# sync; echo 3 > /proc/sys/vm/drop_caches
위 명령에 대한 설명입니다.
sync는 파일 시스템 버퍼를 플러시합니다. “;”
로 구분 된 명령은 순차적으로 실행됩니다. 쉘은 시퀀스의 다음 명령을 실행하기 전에 각 명령이 종료 될 때까지 기다립니다. 커널 문서에서 언급했듯이 drop_cache에 쓰면 애플리케이션/서비스를 죽이지 않고 캐시를 정리할 수 있습니다. 명령 echo는 파일에 쓰는 작업을 수행합니다.
디스크 캐시를 삭제해야하는 경우 첫 번째 명령은 “... echo 1>….”
이 PageCache 만 삭제하므로 기업 및 프로덕션 환경에서 가장 안전합니다. PageCache, dentries 및 inode를 지우므로 현재 수행중인 작업을 알 때까지 프로덕션에서 “... echo 3>”
위의 세 번째 옵션을 사용하지 않는 것이 좋습니다.
다양한 설정을 적용하고 확인하고 싶을 때 실제로 I/O가 많은 벤치 마크에서 특별히 구현되었는지 확인하려면 버퍼 캐시를 지워야 할 수 있습니다. 시스템을 재부팅하지 않고 위에서 설명한대로 캐시를 삭제할 수 있습니다.
Linux는 디스크를보기 전에 디스크 캐시를 살펴 보는 방식으로 설계되었습니다. "캐시에서 리소스를 찾으면 요청이 디스크에 도달하지 않습니다. 캐시를 정리하면 OS가 디스크에서 리소스를 찾을 것이므로 디스크 캐시의 유용성이 떨어집니다.
또한 캐시가 정리되고 OS에 필요한 모든 리소스가 디스크 캐시에 다시로드되는 동안 몇 초 동안 시스템 속도가 느려집니다.
이제 우리는 cron 스케줄러 작업을 통해 매일 오전 2시에 RAM 캐시를 자동으로 지우는 쉘 스크립트를 만들 것입니다. 셸 스크립트 clearcache.sh를 만들고 다음 줄을 추가합니다.
#!/bin/bash # Note, we are using "echo 3", but it is not recommended in production instead use "echo 1" echo "echo 3 > /proc/sys/vm/drop_caches"
clearcache.sh 파일에 대한 실행 권한을 설정합니다.
# chmod 755 clearcache.sh
이제 램 캐시를 지워야 할 때마다 스크립트를 호출 할 수 있습니다.
이제 매일 오전 2시에 RAM 캐시를 지우도록 크론을 설정하십시오. 편집을 위해 crontab을 엽니 다.
# crontab -e
아래 줄을 추가하고 저장하고 종료하여 매일 오전 2시에 실행하십시오.
0 2 * * * /path/to/clearcache.sh
작업을 크론하는 방법에 대한 자세한 내용은 11 Cron 스케줄링 작업에 대한 기사를 참조하십시오.
아니! 그렇지 않습니다. "매일 오전 2시에 램 캐시를 지우도록 스크립트를 예약 한 상황을 생각해보십시오. 매일 오전 2시에 스크립트가 실행되고 RAM 캐시를 플러시합니다. 어떤 이유로 든 언젠가는 예상보다 많은 사용자가 귀하의 웹 사이트에서 온라인 상태이며 귀하의 서버에서 리소스를 찾고있을 수 있습니다.
동시에 예약 된 스크립트가 실행되고 캐시의 모든 항목이 지워집니다. "이제 모든 사용자가 디스크에서 데이터를 가져옵니다. "서버 충돌이 발생하고 데이터베이스가 손상됩니다. 따라서 필요한 경우에만 램 캐시를 지우고 발걸음을 알면 Cargo Cult 시스템 관리자입니다.
스왑 공간을 지우려면 아래 명령을 실행하는 것이 좋습니다.
# swapoff -a && swapon -a
또한 관련된 모든 위험을 이해 한 후 위의 cron 스크립트에 위의 명령을 추가 할 수 있습니다.
이제 위의 두 명령을 하나의 명령으로 결합하여 RAM 캐시와 스왑 공간을 지우는 적절한 스크립트를 만들 것입니다.
# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared' OR $ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root
위의 명령을 모두 테스트 한 후 스크립트 실행 전후에 \"free -h\"명령을 실행하고 캐시를 확인합니다.
지금은 그게 다입니다. 기사가 마음에 들면 의견에 귀중한 피드백을 제공하여 알려주십시오. 프로덕션 및 엔터프라이즈에서 램 캐시 및 버퍼를 지우는 것이 좋은 생각이라고 생각하십니까?