파일을 읽을 때 tar가 파일 시스템 캐시를 사용하지 않도록 할 수 있나요?

파일을 읽을 때 tar가 파일 시스템 캐시를 사용하지 않도록 할 수 있나요?

파일 시스템 전체에서 파일을 tarring해야 하는 프로덕션 웹 서버에 크론 작업이 있습니다. 약 105분 동안 실행되며, 그 동안 Apache는 몇 기가의 파일 읽기로 인해 파일 시스템 캐시의 메모리 양이 확장되었기 때문에 스왑을 시작합니다.

tar가 읽는 데이터는 파일 시스템 캐시에 있을 필요가 없습니다. tarfile에 들어가고 그게 다입니다. 다음과 같이 말할 수 있는 것이 있나요 tar cvf whatever/ --no-system-file-buffer-reads? 내가 읽은 내용으로는 man tar도움이 될 것 같은 내용이 나오지 않습니다.

"박사님, 내가 그렇게 가면 아파요! 그러니 그렇게 가지 마세요" 상황으로 보일 수 있다는 점을 지적할 필요는 없습니다. 어떻게든 파일을 tar 파일로 덤프해야 하므로 그렇게 하지 않는 것은 선택 사항이 아닙니다.

답변1

이 답변이 된 것 같아요여기:

거기에는노캐시ionice 및 nice와 같은 명령 앞에 추가할 수 있는 유틸리티입니다. 열려 있는 호출에 플래그를 posix_fadvise추가 하는 라이브러리를 미리 로드하여 작동합니다 .POSIX_FADV_DONTNEED

간단히 말해서 특정 파일에는 캐싱이 필요하지 않다고 커널에 조언합니다. 그러면 커널은 일반적으로 파일을 캐시하지 않습니다. 보다여기기술적인 세부사항을 위해.

예를 들어, 실행 중인 시스템에 가능한 한 최소한의 영향을 미치면서 백그라운드에서 멀티 테라바이트 디스크를 백업하려는 경우 다음과 같이 뭔가를 할 수 있습니다 nice -n19 ionice -c3 nocache cp -a /vol /vol2.

관련 정보