2017-03-03 1 views
3

디스크에 데이터를 캐시해야하는 소프트웨어를 작성하는 경우 libc 또는 특정 파일 시스템 (예 : ext4)과 관련된 방식으로 파일을 만들고 자동으로 삭제되도록 적절하게 플래그를 지정합니다 파티션이 거의 가득 차게되면 (커널에 의해)?파티션이 거의 가득 차있을 때 libc (모든 파일 시스템) 또는 ext4에서 자동으로 삭제되는 캐시 파일을 만드시겠습니까?

메모리 페이지에는 다음과 같은 것이 있습니다. madvise(…, MADV_FREE).

일부 시스템에서는 파티션이 가득차는 것을 모니터하고 특정 채우기 레벨을 초과 한 특정 사전 결정된 경로를 수동으로 삭제하는 데몬을 작성하여이 작업을 수행합니다. 가능하면이 문제를 피하고 싶습니다. 확장 성이 좋지 않기 때문에 각 응용 프로그램은 데몬에 새로운 캐시 경로가 생성 될 때이를 알려야합니다. 캐시 경로는 자주 발생할 수 있습니다. 이것이 커널 내부에 있다면, 캐시 파일인지 여부를 나타내는 하나의 플래그가 각 inode에 유지 될 수 있습니다.

이렇게 표준화 된 데몬을 사용하는 것도 허용됩니다. 현재로서는 다른 주요 시스템 통합자가 모두 자신을 발명 한 것처럼 보입니다.

+1

나는 이것이 존재한다고 생각하지 않습니다. 그러나 커널 내 솔루션이 사용자 공간 데몬보다 확장 성이 좋다고 생각하는 이유는 무엇입니까? 물론, 아마 약간 빨라 졌을 지 모르겠지만, 왜 다른 방식으로 스케일링하는지 알 수는 없습니다. 파일 시스템이 가득 차있을 때 너무 늦었을 경우에는 [fanotify] (http://man7.org/linux/man-pages/man7/fanotify.7.html)를 확인하십시오. – Phillip

+0

@ Philips : 대부분의 시스템에서 'fanotify'는 1 초마다 폴링하는 것보다 훨씬 많은 CPU 부하를 발생시킬 것이라고 생각합니다. 대부분 유휴 상태 인 별도의 파일 시스템이 많은 경우가 아니라면 말이다. 실제로 모든 이벤트 버퍼를 걷지 않고'fanotify '를 사용할 수있을 것 같습니다. 활동이없는 동안 잠을 자고있는 것처럼. 그러나 활동 중에는 커널을 fanotify 버퍼에 쓰도록 강요하면 데이터를 보지 않아도 0이 아닌 오버 헤드를 가지게됩니다. –

+0

저는 질문에서 '확장 성'이 의미하는 바를 확장했습니다. –

답변

-1

crontab 작업을 사용하여 특정 파일 확장자를 찾아 삭제할 수 있습니다. 또한 시간을 기준으로 필터링하고 마지막 n 분 동안 만든 파일을 그대로 둘 수 있습니다. 괜찮 으면 알려주세요. 여기에 자세한 내용을 추가하겠습니다.

+0

파일 시스템이 꽉 차 있는지 정기적으로 폴링하는 것은 상당히 어려운 해결책입니다. 이것은 커널 레벨에서 파일 시스템이 가득 차게 됨으로써 촉발 되어야만하는 기능입니다. –

관련 문제