readahead 종료 시점을 알고 싶어요..

netropy의 이미지

저는 커널 2.4.x 버전에서

하드 디스크 컨트롤을 하고 있는 데요..

하드가 언제 돌아 가고 언제 쉬는 지를 보려고 합니다.

근데 read 명령이 들어 오면요,

read 를 하려는 page 도 읽지만

readahead 로 좀 더 읽더라고요,

read 를 하려는 page 가 모두 준비 되어 user_end 로 복사되고

나면, readahead ( sync readahead, async readahead ) 는

계속 로딩을 하고 있는지 아니면 page 를 read 하는 사이 사이

해결하고 더는 IO 작업을 하지 않는지 조차 모르겠더라구요.

제가 하고 싶은 건 read 하면 원하는 page 가 읽어 지고

readahead 까지 모두 끝난 시점을 찾아서 특정한 일을 하는거예요

정확히 말해서 IO 가 일어 나는 사이 사이 무조건 하드를 standby 시키는 거죠. ( 이름 하여 어그래시브 스탠바이 -_- )

그래서 readahead 랑 read 가 모두 끝난 시점이 궁금합니다.

아시는 분, 도움 부탁합니다.

hados의 이미지

커널 2.6.X 에서 readahead를 분석했었는데요...

read() system call이 발생하면, VFS에서는

원하는 page를 read하고, 경우에 따라서

readahead를 좀 하기도 하는데요....

read 해야 하는 page와 readahead 할 page 들 모두

IO request를 만들어서 I/O scheduler 로 보내는 것으로

알고 있습니다.

그러므로 I/O가 일어나는 사이사이 standby를 하실려면

I/O scheduler 쪽을 보시는게 낫지 않을까 합니다만...

저는 readahead 로직이 중요해서, readahead 하는 데이터도

I/O scheduler로 보내는구나.....정도만 이해하고 끝내서

더 이상은 잘.....ㅡ.ㅡ;;;;;;

netropy wrote:
저는 커널 2.4.x 버전에서

하드 디스크 컨트롤을 하고 있는 데요..

하드가 언제 돌아 가고 언제 쉬는 지를 보려고 합니다.

근데 read 명령이 들어 오면요,

read 를 하려는 page 도 읽지만

readahead 로 좀 더 읽더라고요,

read 를 하려는 page 가 모두 준비 되어 user_end 로 복사되고

나면, readahead ( sync readahead, async readahead ) 는

계속 로딩을 하고 있는지 아니면 page 를 read 하는 사이 사이

해결하고 더는 IO 작업을 하지 않는지 조차 모르겠더라구요.

제가 하고 싶은 건 read 하면 원하는 page 가 읽어 지고

readahead 까지 모두 끝난 시점을 찾아서 특정한 일을 하는거예요

정확히 말해서 IO 가 일어 나는 사이 사이 무조건 하드를 standby 시키는 거죠. ( 이름 하여 어그래시브 스탠바이 -_- )

그래서 readahead 랑 read 가 모두 끝난 시점이 궁금합니다.

아시는 분, 도움 부탁합니다.