서버 및 개인 PC에서 disk에 대한 접근 및 요청을 기록해야 되는데.. 어떤 방법들이 있을까요?

leopon의 이미지

저는 석사 과정에 있는 컴공인입니다.

이번에 학교 학생 서버에서 한학기 동안 disk 에 write 또는 read 를 얼마나 하는지에 대해서 알아보는 임무가 주어졌습니다.

학교 서버는 linux서버이기 때문에 strace를 공부해서 접목시켜 볼까 생각중인데요. 이 생각이 맞는지 조언을 듣고 싶습니다.

그리고 가장큰 문제가 각 가정의 window환경에서의 disk사용을 측정하고 기록해야 되는데... 윈도우 프로그래밍을 해야 되는건지.. 다른 방법이 있는지 알고 싶습니다.

linux windows 둘다 순차적인 접근인지 랜덤한 접근인지 까지 알면 좋겠지만 일단은 방향을 잡고 싶어서요.

많은 조언 부탁드립니다.^^

지리즈의 이미지

커널 소스에 print_k 명령으로 중간중간 호출내역을 출력하는 문을 삽입하면 됩니다. -_-
나머지는 dmesg 소스를 분석하는 소프트웨어를 만들면 됩니다.
print_k가 뭔시가하 그러면 /proc이나 /dev를 통해서 감시(?)할 수 있습니다.

netlink를 통하는 고차원(?)적인 방법도 있을 수 있겠군요.

그런데, 윈도는 가능하나요?

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

bushi의 이미지

/sys/block/{dev}/stat 에 대한 얘기가 Documentation/block/stat.txt 에 있습니다.
발췌하면

The stat file consists of a single line of text containing 11 decimal
values separated by whitespace.  The fields are summarized in the
following table, and described in more detail below.
 
Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests

직접 측정하실거라면 BLKTRACE{SETUP|START|STOP} 등의 ioctl 을 사용해서,
debugfs 를 통해 각 장치별로 모두 실시간 trace 가능합니다.
다양한 trace point 가 있지만 rq_queue, rq_complete, bio_queue, bio_complete 정도만해도 될 것 같고,
linear 인지 random 인지도 구분이 되겠죠. sector address 물론이고 request size 까지 알 수 있으니까요.

OTL

leopon의 이미지

실제 커널의 코드를 수정하거나 권한을 가져 오는 것에 제약이 많아요.
그래서 api형식을 찾고 있었는데..
일단 조언해주신것들 바탕으로 고민해 봐야겠네요^^
좋은 조언 감사 드리구요. 윈도우가 참 답이 안나오네요 ㅠㅠ

bushi의 이미지

좀 hardcore 하고, 세련과는 거리가 멀지만... 안티바이러스 계통의 프로그램 소스를 참고해보세요.
제가 직접 보고 댓글다는 것은 아니지만, 뭔가 실마리는 잡을 수 있으실 것이라 생각합니다.
http://www.clamav.net/download/

OTL

junilove의 이미지

diskmon 이라는 프로그램을 참고하세요.
http://technet.microsoft.com/en-us/sysinternals/bb896646.aspx
소스공겨여부는 모르겠네요.

leopon의 이미지

친절히 답변해 주셔서 감사드립니다.
좋은 결과나 정보 찾게되면 다시 올리도록할게요^^

송효진의 이미지

윈도는 DiskMon 으로 하면 됩니다.
http://kldp.org/node/101594

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

leopon의 이미지

저만안되나요--;
다른분도 안되는거 같긴 하던데 ㅠ
음... 지금 코드를 열어서 한글 윈도우 상에서 다시 만들어 볼까 생각중이에요 ㅎ;