나는 sync 명령이 더티 캐시를 디스크로 플러시한다는 것을 알고 있습니다. free
명령을 실행한 다음 명령을 실행 하고 sync
다시 실행합니다 free
. 후자 명령의 결과는 free
이전 명령보다 사용 가능한 메모리가 더 많다는 것을 보여줍니다.
이것은 실행될 때 더티 캐시가 메모리에서 제거된다는 것을 의미합니까 sync
? 누가 나에게 더 결정적인 증거를 줄 수 있나요?
답변1
아니요, 없습니다. 여러 번 직접 확인했지만 걱정하지 마세요. Linux 커널은 소중한 메모리를 관리하는 데 매우 똑똑할 것입니다. 읽다디스크에 쓸 때 RAM에 캐시된 콘텐츠 - Linux 그리고http://linuxatemyram.com
답변2
이로 인해 커널은 메모리에서 깨끗한 캐시, 디렉토리 항목 및 inode를 제거하여 해당 메모리를 비울 수 있습니다.
페이지 캐시를 비웁니다.
echo 1 > /proc/sys/vm/drop_caches
dentry 및 inode를 해제합니다.
echo 2 > /proc/sys/vm/drop_caches
페이지 캐시, 디렉터리 항목 및 inode를 해제합니다.
echo 3 > /proc/sys/vm/drop_caches
이는 비파괴적인 작업이고 더티 개체는 해제할 수 없으므로 사용자는 먼저 "동기화"를 실행하여 캐시된 모든 개체가 해제되었는지 확인해야 합니다.
답변3
그렇지 않습니다:-). 다음은 흡연 총입니다.
$ dd if=/dev/zero of=test bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.409106 s, 256 MB/s
$ sync
$ time cat test > /dev/null
real 0m0.027s
user 0m0.000s
sys 0m0.026s
데이터는 이후에도 계속 캐시됩니다 sync
. 파일을 읽는 데 걸리는 시간을 보면 파일이 캐시되었음을 알 수 있습니다. (최대 읽기 속도가 약 100MB/s인 회전하는 하드 드라이브가 있습니다.) 이것을 및 의 조합과 sync
비교하십시오 drop_caches
.
$ sync
$ echo 1 | sudo tee /proc/sys/vm/drop_caches
1
$ time cat test > /dev/null
real 0m1.030s
user 0m0.001s
sys 0m0.073s