...
표준 파일 입출력에는 파일 열기,읽기, 쓰기, 삭제, 조회, 설정, 닫기 등의 연산 동작이 있습니다. 각각의 연산이 수행될 때 마다 FSR 은 I/O 를 조사하고 각각의 연산에 맞는 동작을 취해야 하는데 만약 그 때 마다 I/O 의 O의 유형과 관련 정보를 로컬 I/O 문맥에서 계속 지속적으로 조회해야 한다면 상당한 수준의 부하와 병목이 발생할 병목의 요인이 될 수 있습니다. FSR 은 이를 위해 파일 스트림 당 문맥 정보를 할당하여 파일의 경로와 기타 관련 정보들을 캐쉬로 보관하고 필요할 때마다 이를 참조하여 동작합니다.
...
파일 I/O 데이터는 버퍼링을 위해 먼저 메모리 버퍼로 복사 됩니다. 메모리 버퍼는 사용자에 의해 크기가 지정될 수 있으며 보통 수백 MB에서 수 GB 수준으로 설정됩니다. 보통의 운영상황에서는 메모리 버퍼의 복제 데이터는 큐잉 되는 즉시 타깃으로 바로 전송되기 때문에 버퍼의 사용량이 늘어나지 않고 일정 수준으로 유지됩니다. 만약 전송 계층의 대역폭이 충분하지 않거나 병목으로 인해 전송지연이 발생한다면 복제 데이터가 메모리 버퍼에서 디큐잉 되는 속도가 떨어져서 버퍼의 사용량은 점차 증가하고 결국 버퍼가 넘치게 됩니다. FSR 엔진이 버퍼 혼잡을 인지하면 복제 상태를 더이상 더 이상 유지할 수 없으며 재동기화 상태로 전환합니다.
...
메모리 버퍼와 더불어 파일버퍼가 구성되어 있다면 메모리 버퍼 넘침 시 파일에 버퍼링을 수행하는 버퍼링 상태로 지속합니다파일로 이어서 버퍼링을 수행합니다. 즉 버퍼링을 메모리 버퍼와 파일 버퍼로 혼합하여 수행하게 됩니다. 파일버퍼는 디스크 공간이 허용하는 한도 내에서 용량을 확보할 수 있기 때문에 메모리 버퍼에 비해 상대적으로 더 큰 대용량 버퍼로 운영할 수 있어서 운영 측면의 이점이 있습니다. 그러나 파일버퍼는 메모리 버퍼 대비 지연(파일 I/O로 인한)이 크기 때문에 파일버퍼링을 수행하는 시점의 로컬 I/O의 성능이 저하되는 것은 감안하고 사용해야 합니다. 파일버퍼링을 할 경우 원본 I/O와 버퍼링용 I/O를 이중으로 수행하기 때문에 통상 기존 대비 2배의 성능저하가 발생할 수 있습니다.