sync 명령이 메모리의 더티 캐시를 삭제합니까?

sync 명령이 메모리의 더티 캐시를 삭제합니까?

나는 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

관련 정보