Linux에서 캐시를 지우는 방법

How Clear Cache Linux



Linux 파일 시스템 캐시(페이지 캐시)는 IO 작업을 더 빠르게 만드는 데 사용됩니다. 특정 상황에서 관리자나 개발자는 캐시를 수동으로 지우기를 원할 수 있습니다. 이 기사에서는 Linux 파일 시스템 캐시가 어떻게 작동하는지 설명합니다. 그런 다음 캐시 사용량을 모니터링하는 방법과 캐시를 지우는 방법을 보여줍니다. 캐시가 예상대로 작동하고 캐시 플러시 및 지우기 절차도 예상대로 작동하는지 확인하기 위해 몇 가지 간단한 성능 실험을 수행합니다.

Linux 파일 시스템 캐시 작동 방식

커널은 전반적인 성능을 더 빠르게 만들기 위해 파일 시스템 디스크 액세스를 캐싱하기 위해 일정량의 시스템 메모리를 예약합니다. 리눅스의 캐시는 페이지 캐시 . 페이지 캐시의 크기는 많은 양의 디스크 블록을 캐시할 수 있는 넉넉한 기본값으로 구성할 수 있습니다. 캐시의 최대 크기와 캐시에서 데이터를 제거하는 정책은 커널 매개변수로 조정할 수 있습니다. Linux 캐시 접근 방식을 후기입 캐시라고 합니다. 즉, 데이터가 디스크에 기록되면 메모리에 캐시에 기록되고 디스크에 동기화될 때까지 캐시에 더티로 표시됩니다. 커널은 캐시에 더 많은 공간이 필요할 때 캐시에서 제거할 데이터를 최적화하기 위해 내부 데이터 구조를 유지 관리합니다.







Linux 읽기 시스템 호출 중에 커널은 요청된 데이터가 캐시의 데이터 블록에 저장되어 있는지 확인합니다. 이는 성공적인 캐시 적중이 되고 디스크 시스템에 대한 IO를 수행하지 않고 데이터가 캐시에서 반환됩니다. 캐시 미스의 경우 동일한 데이터가 다시 요청될 가능성이 높으므로 IO 시스템에서 데이터를 가져오고 캐시 정책에 따라 캐시를 업데이트합니다.



메모리 사용량의 특정 임계값에 도달하면 백그라운드 작업이 디스크에 더티 데이터를 쓰기 시작하여 메모리 캐시를 지우고 있는지 확인합니다. 이는 메모리 및 CPU 집약적인 응용 프로그램의 성능에 영향을 줄 수 있으며 관리자 및/또는 개발자의 조정이 필요합니다.



Free 명령을 사용하여 캐시 사용량 보기

시스템 메모리와 캐싱에 할당된 메모리 양을 분석하기 위해 명령줄에서 free 명령을 사용할 수 있습니다. 아래 명령을 참조하십시오.





#무료 -미디엄

우리가 보는 것 무료 위의 명령은 이 시스템에 7.5GB의 RAM이 있다는 것입니다. 이 중 209MB만 사용되고 6.5MB는 무료입니다. 667MB는 버퍼 캐시에 사용됩니다. 이제 1기가바이트의 파일을 생성하는 명령을 실행하고 파일을 읽어서 그 수를 늘려 봅시다. 아래 명령은 약 100MB의 임의 데이터를 생성한 다음 파일 사본 10개를 하나의 파일에 추가합니다. 큰 파일 .



# dd if=/dev/random of=/root/data_file count=1400000
# for i in `seq 1 10`; 에코 $i; 고양이 데이터 파일 >> 큰 파일; 완료

이제 이 1Gig 파일을 읽은 다음 free 명령을 다시 확인합니다.

# 고양이 대형 파일 > /dev/null
# 무료 -m

버퍼 캐시 사용량이 667MB에서 1735MB로 증가하여 버퍼 캐시 사용량이 약 1GB 증가한 것을 볼 수 있습니다.

Proc Sys VM 캐시 삭제 명령

Linux 커널은 캐시를 삭제하는 인터페이스를 제공하므로 이러한 명령을 시도하고 무료 설정에 미치는 영향을 살펴보겠습니다.

# 에코 1 > /proc/sys/vm/drop_caches
# 무료 -m

위에서 대부분의 버퍼 캐시 할당이 이 명령으로 해제되었음을 알 수 있습니다.

캐시 삭제가 작동하는지 실험적 검증

캐시를 사용하여 파일을 읽는 성능 검증을 수행할 수 있습니까? 디스크에서 파일을 읽는 데 걸리는 시간을 테스트하기 위해 파일을 읽고 다시 /dev/null에 씁니다. 우리는 시간을 시각 명령. 위의 명령으로 캐시를 지운 직후 이 명령을 수행합니다.

파일을 읽는 데 8.4초가 걸렸습니다. 파일이 파일 시스템 캐시에 있어야 하므로 이제 다시 읽고 시간이 얼마나 걸리는지 살펴보겠습니다.

팔! 파일이 캐시되지 않았을 때 읽는 데 8.4초가 걸렸던 것에 비해 0.2초밖에 걸리지 않았습니다. 확인하려면 먼저 캐시를 지우고 파일을 2번 읽어서 이것을 다시 반복해 보겠습니다.

예상대로 완벽하게 작동했습니다. 캐시되지 않은 읽기의 경우 8.5초, 캐시된 읽기의 경우 0.2초입니다.

결론

페이지 캐시는 Linux 시스템에서 자동으로 활성화되며 최근에 사용한 데이터를 캐시에 저장하여 투명하게 IO를 더 빠르게 만듭니다. 캐시를 삭제하고 캐시에 사용된 메모리를 해제하도록 커널에 지시하는 echo 명령을 /proc 파일 시스템에 보내어 쉽게 수행할 수 있는 캐시를 수동으로 지우려면. 명령을 실행하기 위한 지침은 이 문서의 위에 표시되었으며 플러시 전후의 캐시 동작에 대한 실험적 검증도 표시되었습니다.