[완료] 입출력 대기상태인 프로세스를 찾는법
글쓴이: visualplus / 작성시간: 화, 2008/11/11 - 10:34오전
안녕하세요. 지금 제 서버가 완전 맛이 갔습니다..
cpu사용율이 90~100%에서 내려오질 않네요.
그래서 top으로 봤더니 wa란게 60~70%가량 차지하길래 뭔지 찾아봤더니
입출력대기 상태라더군요..
입출력 대기상태인데 왜 cpu를 많이 먹는진 모르겠습니다만..
일단 이걸 해결해야할것 같아요
제 top화면입니다
top - 10:32:56 up 6:12, 1 user, load average: 2.74, 3.07, 2.60 Tasks: 78 total, 1 running, 74 sleeping, 0 stopped, 3 zombie Cpu(s): 3.5% us, 5.2% sy, 0.0% ni, 9.2% id, 82.0% wa, 0.2% hi, 0.0% si Mem: 447832k total, 443320k used, 4512k free, 204812k buffers Swap: 1004052k total, 0k used, 1004052k free, 128048k cached
이런식으로 wa가 엄청 많이 먹습니다.
그래서 어떤 프로세스가 wa상태인지 보려고 했는데..
ps aux에서도 안나오고.. top에서도 사용율만 나오고 vmstat에서도 사용율만 나오고.. 등..
아무리 검색하고 찾아봐도 wa상태인 프로세스를 찾는법을 찾지 못하겠네요..
어떻게 하면 이 프로세스를 찾을 수 있을까요?
Forums:
tick 핸들러에서
tick 핸들러에서 runqueue.nr_iowait 를 보고 cpustat.iowait 를 증가시킵니다.
즉,
I/O 요청이 치명적일 정도로 많거나
I/O 자체가 겁나게 느리거나
저 둘이 시너지 효과를 일으키고 있다거나,
등의 이유로 스케쥴러가 개고생하고 있는 것 같습니다.
ps 로 봐도 sleep 으로 잡힐 테니 언 놈이 삽질하고 있는 지 알기어렵겠고...
이런게 있긴 한데 어떻게 써먹어야 하는진 문서를 봐야 알겠고...
OTL
감사합니다
일단 무한구글검색과 감으로 때려맞춰서 고치긴 했지만..
님이 알려주신 방법도 공부를 해봐야겠네요
감사합니다
IO wait때문에 wa가
IO wait때문에 wa가 높은건 CPU가 고생하고 있다는 것이 아니고 IO가 고생하고 있다는 뜻입니다. =_=
다른 CPU먹는 프로세스가 뜨면 자연스럽게 wa가 줄고 us나 sy가 올라갑니다.
그리고 보통 컴퓨터가 버벅일땐 CPU보다는 IO쪽이 문제일 때가 많죠...
ps aux로 봤을 때 STAT이 D인게 보통 IO때문에 sleep하고 있는 거라고 man ps가 하는군요..
D 는 uninterruptible sleep
D 는 uninterruptible sleep 상태입니다.
사용자 입장에선 ctrl+C 로 취소시키거나 kill 로 죽일 수 없다는 것 정도만 다르고,
그 외에는 sleep 과 동일합니다.
ps 로 봤을 때 D 로 표시된 게 보일 정도면 막장입니다.
개인적으론, 튜닝이 아니라 디버깅이 필요한 상황이라 생각합니다.
OTL
댓글 달기