시딩 토렌트가 하드디스크 RAM 캐싱에 영향을 미치나요?

시딩 토렌트가 하드디스크 RAM 캐싱에 영향을 미치나요?

저는 많은 토렌트 파일을 다운로드했고 파일을 시드하는 동안 브라우저를 시작할 때 속도가 느리고 하드 디스크 활동 표시기가 켜져 있는 것을 자주 발견했습니다. 일반적으로 프로그램을 시작하면 RAM에 캐시되고 다시 시작하는 것은 매우 빠르며 3GB의 RAM이 있으므로 일반적으로 거의 영원히 캐시된 상태로 유지됩니다. 하지만 내 토렌트 클라이언트가 시드되면 내가 실행한 프로그램이 한 시간 후에 더 이상 RAM에 캐시되지 않는 것 같습니다.

아마도 토렌트 클라이언트가 수행하는 디스크 읽기가 캐시되어 결국 RAM을 채우기 때문일 것이라고 생각했습니다. 하지만 한 번만 읽고 곧 다시 읽을 가능성이 낮기 때문에 그럴 필요는 없다고 생각합니다.

그래서 제 질문은 - 이것이 제가 생각하는 방식인가요? 그렇다면 원칙적으로 디스크 읽기가 캐시되는 것을 방지하는 것이 가능합니까? 프로그램의 소스코드를 편집해 볼 수 있습니다.

답변1

정확히 어떤 토렌트 프로그램을 사용하고 있는지에 따라 다릅니다. 그들 중 일부는 다른 방식으로 행동할 수도 있습니다.

하지만 그렇습니다. 이는 일반적인 문제이므로 시스템 캐시를 우회하는 것이 가능합니다.

소스를 편집하는 것이 편하다면(아마도 다른 StackExchange에 있어야 할 것입니다..) 토렌트 프로그램이 디스크에서 파일을 여는 위치를 찾으십시오. open() 호출일 가능성이 높습니다. fdopen()인 경우 stdlib를 사용하고 있으며 stdlib가 직접 I/O를 지원하는지 잘 모르겠습니다.

이 시스템 호출은 최대 3개의 인수를 사용합니다. 첫 번째 인수는 파일 이름, 두 번째 인수는 플래그, 세 번째 인수는 선택적 파일 생성 마스크입니다. 플래그는 아마도 O_RDWR현재와 같을 것입니다. "시스템 캐시를 사용하지 않음"에 대한 플래그는 이며 O_DIRECT, 플래그를 로 구분하여 결합합니다 |.

따라서 이 경우 flags 인수의 결과는 입니다 O_RDWR | O_DIRECT. 새 플래그를 추가하기만 하면 됩니다.

자세한 내용은 다음을 참조하세요.

man 2 open

답변2

브라우저를 닫지 마세요 :)

I/O 캐시(파일 쓰기가 아닌 읽기에만 사용됨)가 아무리 많아도 프로그램이 사용하는 페이지가 교체되지는 않습니다.

관련 정보