2010-08-09 4 views
1

리눅스의 사용자 공간에서 글을 쓸 때 어떤 일이 일어나는지 혼란 스럽다. 저장 장치까지의 전체 흐름은 무엇입니까? CFQ와 여전히 pdflush를 사용하는 커널을 사용한다고 가정하십시오.Linux에서 사용자 공간에서 디바이스로 요청 흐름을 작성 하시겠습니까?

CFQ는 요청을 동기화 및 동기화 대기열에 배치한다고합니다. 쓰기는 예를 들어 a-sync이므로 io 우선 순위에 따라 a-sync 대기열에 들어갑니다. 대기열은 CFQ 시간 슬라이스, 만료 설정 등에 따라 CPU를 가져옵니다.

동시에 더티 페이지를 씁니다. 더티 페이지 작성은 VM 설정에 의해 트리거되고 writeback_nodes()를 호출하는 background_writeout() 사본을 실행하는 pdflush 스레드의 컨텍스트에서 수행됩니다. 이 경우 pdflush 쓰기가 반드시 동기화됩니다.

동일한 또는 유사한 쓰기 요청 (잠재적으로 CFQ 대기열 메커니즘에 의해 제어되고 다른 하나는 VM 하위 시스템에 의해 트리거 됨)에 대해 두 개의 경쟁 쓰기가 잠재적으로 진행된다는 의미입니까?

pdflush가 요청하는 프로세스와 동일한 io 우선 순위를 지키지 않기 때문에 dirty_background_ratio를 누르 자마자 VM 하위 시스템이 효과적으로 CFQ 규칙을 위반합니까?

그리고 우리가 dirty_ratio를 클릭하자마자 CFQ 설정은 모든 쓰기가 동기화되기 때문에 다소 쓸모 없게됩니다.

두 하위 시스템에 대한 자세한 정보를 읽었지만 전체 쓰기 요청 흐름을 아직 이해하지 못했습니다. 대화 형 Linux 커널 맵에는 IO 스케줄러가 포함되어 있지 않습니다.

전체 그림에 대한 모든 의견을 환영합니다.

덕분에, 알렉스

+0

내가 필요한 것을 찾은 것 같아요. –

답변

0

나는 그 이후를 발견했습니다. 기본적으로 예, pdflash 및 쓰기 캐시는 일반적으로 쓰기에 대한 IO 우선 순위를 깨뜨립니다. 동기화 및 동기화 요청이 우선이기 때문에 읽기가 CFQ의 이점을 계속 누릴 수 있지만 IO 우선 순위에 따라 쓰기를 수행하려면 직접해야합니다.

관련 문제