리눅스 커널에서 IDLE time 계산,출력하기
글쓴이: 착한소 / 작성시간: 목, 2006/03/30 - 3:04오후
처음 가입하고 글을 남기네요.
제가 운영체제를 전공 하려고 합니다.
음.. 일단 리눅스 커널을 지지고 볶고 하면서 기초를 쌓고 있는데..
커널 프로그래밍 책에서 처음 나온 과제를 해결할 수가 없네요.
리눅스 커널에서는 tick 단위로 인터럽트가 발생하는 것으로 알고 있습니다.
그리고 그 인터럽트는 0.01초 마다 발생하지요.
그래서 커널이 idle모드로 진입할 때 jiffies 변수의 값과 idle모드를 벗어 날 때
jiffies값을 check해서 1초마다의 비율을 구했습니다.
그런데...처음 부팅 한 후 부터는 계속 idle모드로 나오네요..
의견 있으신분이나 해보신 분은 글 남겨 주세요~
댓글
(KLCP에서의 블로그
(KLCP에서의 블로그 운영 관련 공지에서의 내용처럼 질문은 포럼에 올려 주시는 것이 좋습니다. 그렇게 하시는 것이 글을 더 잘 노출시킬 수 있기도 합니다.)
idle time 비율을 구하기 위해 작업하신 내용에 별 문제가 없다고 하면, 실제로 (거의) 계속 idle 상태여서 그렇게 표시될 수도 있습니다. 개인용 웹서버로 쓰는 제 리눅스 박스도 부팅 후 99.5%가 idle time입니다.
이런 저런 작업이 동작중인데도 항상 idle이고, 거기다가 idle time이 100%라면 뭔가 다른 데에 문제가 있겠지요. 그런데 그 문제가 어딘지를 알려면 idle time의 비율을 구하기 위해 어디에 어떤 코드를 넣어서 시도하고 있으신 건지 알려주셔야 합니다. 개발자 중에는 시력이 나쁜 사람들이 많아서 천리 밖을 볼 수 없거든요;) (참, 코드를 올리실 때는 꼭 code 태그입니다~)
참고로 커널 소스에서 kernel/timer.c 파일의 update_process_time() 함수가 작업에 쓰인 tick 개수를 갱신하는 루틴입니다. 여기서 호출하는 sched.c의 account_system_time() 함수에서 idle tick 개수를 더해줍니다.
----
$PWD `date`
$PWD `date`
댓글 달기