1

이 함수는 메모리 매핑 된 파일 성능에 영향을 줍니까?SetFileBandwidthReservation이 메모리 매핑 파일 성능에 영향을 줍니까?

I 디스크 액세스를 위해 경쟁하는 두 응용 프로그램이 있습니다 : "독자"와 "업데이터를"

는 여기에 내가 해결해야 할 문제입니다. 전체 시스템은 Windows Server 2008 R2 x64에서 실행됩니다.

"업데이터"는 지속적으로 디스크에 선형 방식으로 액세스하여 데이터를 업데이트합니다. 이 시스템은 업데이트 프로그램이 항상 업데이트 할 수있는 무한 데이터를 갖도록 설정됩니다. 전체 2TB 디스크 드라이브를 사용하는 거대한 방정식 세트의 솔루션을 지속적으로 근사하고 있다고 생각하십시오. Updater는 ReadFile 및 WriteFile을 사용하여 선형 방식으로 데이터를 처리합니다.

사용자가 일부 데이터를 가져 오기 위해 "리더"가 호출되는 경우가 있습니다. 보통 사용자는 드라이브에서 몇 가지 4kb 블록을 읽고 중지합니다. 때때로 사용자는 순차적으로 최대 100MB를 읽을 필요가 있습니다. 예외적 인 경우 최대 수 기가 바이트. 리더는 파일을 메모리에 매핑하여 필요한 데이터를 가져옵니다.

"독자"가 필요한 데이터를 최대한 빨리 얻을 수 있도록 필요한 경우 "업데이터"가 완전히 중단되도록 "독자"가 절대적인 우선 순위를 갖고 있어야합니다.

SetPriorityClass 및 SetFileBandwidthReservation 호출을 사용하여이 문제를 해결할 수 있습니까?

나는 "리더"와 "업데이터"에 동기화 로그인을 넣는 것이 아니라 OS가 우선 순위를 갖도록하는 것이 싫다.

답변

0

언급 한 기능은 IMO와는 아무런 관련이 없습니다.

OS가 실제로 여러 프로세스에서 동시에 파일 액세스를 요구하는 것처럼 보입니다. OS는 사용자가 요청한대로 처리합니다. 따라서 정확성을 보장하기 위해 동기화 논리를 추가하는 것이 좋습니다.

귀하의 설명에 따르면 - 리더와 업데이터 모두에서 독점적 액세스를 위해 파일을 열면 업데이터가 방해받지 않고 독자를 만드는 작업을 해결합니다. 두 번째 목표는 독자의 요청에 따라 업데이터가 중단되도록하는 것입니다.

대처 방법은 업데이트 도중 작업을 중단 할 수 있는지 여부에 달려 있습니다. 간단한 경우 판독기는 최대한 빨리 작업을 중단하고 기다려야한다는 것을 업데이터에 알릴 수 있습니다.

관련 문제