[질문]Direct IO에 대한 질문입니다.
글쓴이: spcmanhaha / 작성시간: 월, 2011/08/01 - 5:09오후
Direct IO 즉 O_DIRECT 옵션을 주고 write를 수행할 때
커널의 Page Cache를 거치지 않고 Device로 직접 Data를 write하는 것으로 알고 있습니다.
Device(Disk나 Flash 메모리)내부에도 Cache와 같은 영역이 있는 것으로 알고 있는데.. Direct IO옵션이 정한 write는 Device 내부의 Cache까지 write하는 것인지..
아님 Device에 완전히 Write되는 것 까지인지가 궁급합니다.
또한 Ext4 파일 시스템에서 Direct IO 옵션으로 write할 경우 JBD2 계층과 관련된 부분은 get_block를 호출할 때만 그런것인지도 궁급합니다.
현재 3.0 커널을 보며 공부하고 있느데 커널 소스 상으로는 ext4_get_block_write부분에서만 적용되는 듯 해서 문의드립니다.
고수님들의 답변 부탁드리겠습니다.
Forums:
추가의견
Direct IO의 경우 submit_bio함수로 I/O Scheduler로 전달 하는 역할만 하기 때문에
실제 I/O Scheduler가 request를 메모리의 device driver가 어디까지 write를 수행하느냐가 관건일 듯한데
제가 궁금한건.. device driver가 disk의 cache까지만 write를 하던, disk에 다써질 때까지 기다리던..
그건 device driver 구현하기 나름인건지.. 아님 꼭 disk까지 써줘야 하는 건지..
spec상 어느것이 정확한 건지가 궁금합니다.
disk 내부의 cache 운영정책은 그냥 disk 내부의 FTL이라든가 내부 driver에 맡기고, 오면 되는건지..
Direct IO의 정의가 궁금해서..ㅎㅎ
좀 애매한 질문인듯 하네요..
고수님들의 답변 부탁드릴께요..^^
댓글 달기