FUSE를 사용하여 tmpfs + swap으로 전달할 때 대기 시간이 길어짐

FUSE를 사용하여 tmpfs + swap으로 전달할 때 대기 시간이 길어짐

파일 시스템 명령을 가로채고 추가 처리를 수행할 수 있도록 메모리 내 파일 시스템(tmpfs) 위에 심 레이어를 생성하고 있습니다. 최종 목표는 내결함성을 위해 네트워크를 통해 쓰기를 복제하는 것입니다. 파일 시스템 명령을 가로채기 위해 FUSE를 사용하고 있습니다. 인메모리 파일 시스템의 경우 tmpfs를 사용하고 있습니다. 작은 메모리 크기를 극복하기 위해 SSD를 통해 tmpfs가 사용할 수 있는 충분한 스왑 공간을 만들었습니다.

dir요약하자면, tmpfs로 마운트된 디렉토리가 있습니다 . shim모든 애플리케이션이 기록되는 또 다른 디렉토리를 만들었습니다 . FUSE는 에 마운트되어 shim모든 작업을 로 리디렉션합니다 dir.

Filebench를 사용하여 에 직접 쓰는 일부 마이크로 벤치마킹을 통해 dirtmpfs + swap의 대기 시간이 특히 디스크의 ext4와 비교할 때 매우 낮다는 것을 발견했습니다. tmpfs가 RAM에 쓰기에서 스왑 공간에 쓰기로 전환할 때 감지할 수 있는 속도 저하가 없는 것으로 추측됩니다.

FUSE로 오버레이하면passthrough_hp.c그러나 멀티스레딩이 켜져 있어도 파일 생성 속도가 매우 느려지며 tmpfs + swap보다 대기 시간이 60배 더 길어집니다. 를 사용하면 htop메모리 대신 스왑에 쓸 때만 속도가 느려지는 것을 확인했습니다(메모리가 매우 빠르게 채워지고 스왑이 천천히 증가합니다). 그렇지 않으면 FUSE 자체에는 오버헤드가 거의 없습니다.

스왑을 사용할 때 FUSE가 지연 시간에 도달하고 tmpfs를 자체적으로 사용하지 못하는 이유와 이 추가 오버헤드를 어떻게 최적화할 수 있는지 아는 사람이 있습니까?

관련 정보