top 에서 ni, hi, si, wa 필드의 의미가?
글쓴이: ssehoony / 작성시간: 금, 2006/02/24 - 1:51오전
top 에서 보여주는 것 중에
cpu 정보에 보면
us, sy, ni, hi, si, wa 라는게 있던데
이중에 ni, hi, si, wa 가 궁금합니다.
구글링 중에 찾은 것은
ni = nice
hi = ? Probably hard interrupt
si = ? Probably soft interrupt
wa = IO wait
라는 이야기가 있던데
그럼 여기서 nice 는 뭘 의미하고,
hard interrupt 와 soft interrupt 의 차이는 뭔가요?
그리고 IO wait 은 그럼 IO 를 기다리는 동안 다른 프로세스로 스케줄링을 하지 않고 그냥 해당 프로세스의 IO 를 기다린다는 건가요?
만약 그렇다면 왜 그런 비효율적인 작동을 하는거죠?(DMA 나 SCSI 가 아닌 경우 때문인가요?)
Forums:
nice는 아시다시피 유닉스에서 프로세스의 우선순위를 의미합니다. top
nice는 아시다시피 유닉스에서 프로세스의 우선순위를 의미합니다. top 표시 내용 중 ni(nice)는 "기본값보다 낮은 우선순위로 사용자 공간에서 실행된 시간"을 의미합니다. 따라서 us(user)는 정확하게는 "기본값으로, 혹은 그보다 높은 우선순위로 사용자 공간에서 실행된 시간"을 의미합니다.
hi(hard interrupt)는 "순수한(?) 인터럽트 핸들러에서 사용한 시간"을 의미합니다. 하지만 인터럽트 핸들러는 수행중 다른 인터럽트를 꺼버리기 때문에 가능하면 빨리 실행을 마쳐야 합니다. 그래서 시간이 걸릴 만한 작업은 잠시 미뤄뒀다가 실행합니다. (나중에 인터럽트 처리 작업을 마저 처리하는 부분을 "bottom halves"라고 부르더군요. 인터럽트 핸들러는 "top halves"라고 부르고요.) "잠시 미뤄둔 인터럽트 처리 작업에 사용한 시간"이 바로 si(soft interrupt) 항목입니다.
wa(I/O wait)은 I/O를 기다리는 시간이 맞습니다. 어떤 프로세스가 I/O 때문에 wait 상태로 들어갈 때 즉시 실행 가능한 다른 프로세스가 있으면 그 프로세스를 실행하지만 그렇지 않은 경우는 어쩔 수 없이 I/O 대기 작업 중 하나가 완료될 때까지 대기해야 합니다. 그 때 사용한 시간이 wa입니다. 모든 프로세스가 I/O 완료가 아닌 다른 이벤트를 기다리면서 쉬고 있으면 이는 id(idle) 항목에 해당합니다.
항목들 간의 관계를 좀 정리하자면...
뱀발로... top 프로그램의 실행 결과는 결국 /proc/stat 파일의 내용을 파싱해서 뿌려주는 것입니다. 그런데 /proc/stat 출력 결과를 보면 프로세스별로 7개가 아니라 8개의 항목이 있습니다. 마지막 항목은 "steal" 항목으로 "프로세스가 비자발적으로 대기하는 데에 사용한 시간"라고 합니다... 만 현재 커널에서는(2.6.15 기준) 카운트를 하지 않고 있습니다.
[/]$PWD `date`
오~ 좋은 정보 감사합니다.덕분에 궁금증이 풀렸습니다.이런 정
오~ 좋은 정보 감사합니다.
덕분에 궁금증이 풀렸습니다.
이런 정보를 얻을 수 있는 인터넷 사이트가 있나요?
제가 개발자 종족인지라 세부적인 내용들은 소스 코드에서 얻은 정보입니다.
제가 개발자 종족인지라 세부적인 내용들은 소스 코드에서 얻은 정보입니다...;;;
본래 top의 man페이지에서 알 수 있어야 할 정보인데 거기선 찾지를 못했고, vmstat 페이지 및 proc 페이지의 "/proc/stat" 항목에서 대략적인 정보는 얻을 수 있었습니다. 인용하자면
proc 페이지의 내용은 2.4.x 커널 기준인 듯 합니다.
$PWD `date`
댓글 달기