Why top and ps not showing the same cpu result

왜 ps 와 top 은 서로 다른 cpu 사용률을 보여주는 것일까? 결론부터 이야기하면, top 과 ps 는 서로 다른 명령어이다.

top 은 우리가 흔히 생각하는 cpu 사용률을 보여주는 것이 맞지만, ps 는 약간 다른 부분을 보여준다. 다음은 ps 명령어의 man page 의 일부분이다.

CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process.  This is not ideal, and it does not conform to the standards that ps otherwise conforms to.  CPU usage is unlikely to add up to exactly 100%.

즉, ps 명령어는 프로세스가 동작한 전체 시간에서의 cpu 점유율을 나타낸다는 것이다. 따라서 지정된 시간 동안에서의 cpu 점유율을 보여주는 top 과는 서로 다른 결과를 보여줄 수 밖에 없는 것이다.

top 은 모니터링, ps 는 스냅샷으로 생각을 하면 이해가 쉬워진다.

참조: http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result

SIP/RTP initiation bug

늘 있는 일이었지만, 특별히 더 이상한 일이었다. 분명히 발생하는 장애였다. 하지만 늘 그랬듯이 불규칙적이었고, 재현이 불가능하였다.

사건의 발생은, 고객사 중 하나에서 “정상적으로 음성메시지를 남겨도, 실제로 음성 메시지를 플레이 할 때는, 아무 소리가 안난다”는 것이었다. 가볍게 생각했다. record 함수의 잘못된 사용이나, 녹음할 데이터가 없었거나….

 

일단, 로그 파일부터 확인했다.

/var/log/freeswitch/freeswitch.log

먼저 문제가 발생한 케이스를 추려내고, 그 다음, 정상적인 케이스의 로그를 비교해보았다. 모든 부분에서 같은 내용이었지만, 단 한곳 다른 부분이 있었다.

[DEBUG] switch_rtp.c:5617 Correct ip/port confirmed.

문제가 발생한 로그에서는 위의 라인이 빠져 있었던 것. 바로 freeswitch 소스 파일을 확인해보았다. 해당 로그 라인이 어떨때 나타나는 로그인지 확인했다. 해당 로그는 freeswitch 에서 RTP 패킷을 read 를 시작할 때, 나타내는 로그 중 하나였다. 즉, 문제가 되는 로그에서는 RTP read 시작 로그를 확인할 수 없었다.

이상했다. 왜냐하면 나머지 SIP 관련 로그들은 정상적으로 송/수신 했기 때문이다. 로그내용으로 확인할 수 있었다.

그리고 분석된 장애 내용은 실제로 사용자는 음성사서함 메시지를 남기려고 시도 했었지만 무슨일이에선지, 생성된 wav 파일 사이즈가 모두 44 바이트(wav header size)가 생성되는 현상이었다.

그리고.. 계속된 재현 실패.. 수십 차례에 걸친 다양한 테스트 케이스에도 재현에 성공할 수 없었다. 사실 44 byte가 녹음되는 현상은 몇개 찾을 수 있었다. 하지만 더 세밀한 분석 결과, 이번 장애와는 상관없는 다른 이유에서 발생한 것으로 결론이 난 것들이었다.

그러다가 겨우겨우 오늘 재현에 성공했다.

앞서 말했듯이, 장애는 불규칙적으로 발생하고 있었다. 하지만 그 중에서도 장애가 ‘자주’ 발생하는 고객사가 있었는데, 그 고객사의 전화번호를 이용해서 재현할 수 있었던 것이다.

우리회사는 덴마크에 있었고, 해당 고객사는 독일에 있었다. 덴마크에서 독일 고객사로 전화를 걸어 음성 메시지를 남기면 정상적으로 남길 수 있었다. 하지만 독일 전화번호를 이용하여 독일 고객사로 전화를 걸면 44 바이트의 음성 파일이 생성되는 것이었다.

좋다. 이제야 겨우 재현에 성공했다. 여기까지 도달하기까지 굉장히 많은 시간이 걸렸다(약, 2주일?)

아무튼 테스트를 진행했는데, 모든 서버에서 tcpdump 명령어를 이용하여 패킷을 캡쳐하고 해당 캡쳐 내용들을 비교했다. 분석된 내용은 독일 네트워크 어딘가에서 RTP 패킷을 차단하고 있었던 것. 왜 차단을 했을까? 열띤 토론끝에, 이런 현상은 비단 독일뿐 아니라, 다른 어느곳에서도 가능한 현상이라는 추측이 나왔다. 그래야만 그동안 발생했던 불규칙 장애에 대한 설명이 된다는 것이다.

결론적으로… 아직까지 장애는 진행중이다. 이제야 겨우 재현에 성공하고 문제의 실마리를 잡았기 때문이다. 그리고, 오늘로써 개발자(나)의 잘못이 아닌것으로 밝혀졌지만(ㅎㅎㅎㅎㅎ) 그것과는 별개로 굉장히 인상적인 장애였고, 장애 분석이었다.

왜냐하면, 오늘 네트워크 관리자, 개발자(나), 개발 선임, 컨설턴트 이렇게 4명이 모여 이런저런 토론을 하고, 구체적인 방법을 구상하고, 테스트를 했는데 굉장히 인상적이었기 때문이다.

 

결론은…혼자 끙끙 앓고 있던 2주일간의 고민이 한방에 해결되었다.  🙂

Denmark kindergarten

덴마크에 관한 좋은 글이 있어 퍼왔다. 🙂

 

오늘은 오랜만에 로키가 다니는 덴마크의 Vuggestue(어린이집) 이야기를 해볼까 한다.

덴마크에서는 만 6개월부터 3살 미만 정도의 아이들은 vuggestue; 부게스투에 라는 어린이집에 갈수 있다. 한국의 많은 사람들이 덴마크는 모든 복지가 공짜라고 생각하겠지만, 완전 틀림 말씀이다. 우리 가족은 나와 리너스 둘이 버는 소득이 있기 때문에, 로키 한명 어린이집 보내는 데에 3500DKK, 한화로 65-70만원 정도를 매달 내지 않으면 안 된다. 소득에 따라서 원비가 달라지기 때문에, 더 잘 벌면 더 내야하고, 소득이 0인 집은 무료로 다닐 수 있다. 하지만 평범한 덴마크인 가족에게 소득이 정말 0인 경우는 사실 많지 않기 때문에, 주로 난민들이나 이 혜택을 많이 받는 것 같다. 솔직히 말해서, 개인적으로 이 부분은 마음에 들지 않는다.

어찌됐든, 모든 덴마크의 어린이집은 그것이 사립이던 공립이던, 그네들이 속한 코뮨(구청)의 관리 하에 운영된다. 그래서, 지원할 때는 구청의 홈페이지를 통해서 줄을 서야(대기) 하는데, 보통 빠르면 2개월, 늦으면 반년 넘게까지 기다려야 하기 때문에, 실제 아이가 유치원에 갈 때가 아니라 태어나자마자 지원해 놓아야 하는 실정이다.

로키네 부게스투에는 총 4반으로 나뉘어져 있고, 각 반에는 담임선생님 1명, 부담임 1명, 도우미 2명 정도 그리고 봉사활동자 3명 정도가 배치된다. 이 모든 선생님들이 하루종일 동시에 아이들을 돌보는 것은 아니고 시간대에 따라서 근무하는 인원이 다르다. 보통 아침 10시부터 오후 1-2시까지 노래를 부른다거나 산책을 나간다거나 하는 것 같고, 3시부터는 모든 도우미와 선생님들이 퇴근하기 때문에 보통 1-2명의 선생님들이 시설이 문 닫는 시간인 5시까지 남은 수의 아이들을 전부 관리한다.

한국의 유치원같이, 근무시간이 야간이라던가 특수한 경우라 늦게 퇴근하는 부모들을 위한 종일반 시스템은 없다. 따라서 유아원이 문 닫는 시간인 5시까지 아이를 픽업하지 않으면…. 글쎄, 아이가 혼자 유아원 문 앞에 서있는다던지…?^^; 선생님이 짜증을 내며 다음부터는 이렇게 늦게 오지 마세요 라는 소리를 듣게 될 것이다. 이러니저러니 해도, 종일반 시스템이 없는 가장 큰 이유는 덴마크가 퇴근시간이 보통 오후 3-5시 이기 때문이기는 하지만서도.

아이가 원에 다니기 시작한 때부터 3개월 주기로, 담당 담임선생님과 보조선생님과 함께 부모 면담/상담시간이 주어진다. 우리도 지난 금요일에 상담을 했는데, 생각한 것보다 훨씬 로키를 자세하고 면밀하게 관찰해 온 듯해서 놀랐다. 로키의 집중력이라던지, 눈을 맞추는 행동부터 시작해서, 언어활동, 식습관과 정서 등등 광장히 폭넓고 깊게 그들의 로키에 대한 의견을 우리에게 들려줬다. 이부분이 걱정되면, 그에따른 연락처/부서를 알려주고, 어떻게 해면 좋다 등등 많은 충고도 아끼지 않는 모습에 안심이 되었다.

한국의 유치원들은 외관부터가 굉장히 깔끔하고 잘 조성되어있고, 원내환경도 되게 세련된 경우가 많아서, 처음에 로키의 유아원을 처음 봤을땐 정말 매우 실망했었다..ㅎㅎ 로키 유아원은 마치… 구 소련의 무너져가는 마을회관 같이 생겼달까…ㅎㅎ 우리 엄마가 덴마크에 잠시 와있었을 때도, 로키 유치원 보고선 울뻔하셨다고ㅠㅠ… 하셨으니. 하지만, 다행히도… 겉모습에 비해 실속있고 유아워니 근본인 아이들을 잘 돌봐주고 케어해주는 것을 보고 지금으로서는 매우 만족하고 있다.

요새, 한국에서는 유아원에서 아이 학대라던지 폭력이라던지.. 하는 뉴스다 심심치 않게 들려오는 것 같다. 이럴 때마다, 혹시 여기도 그렇지 않을까, 하는 생각도 들었고, 아무리 덴마크라고 해도 아이들 학대라거나 가학적 체벌이라거나 하는 행위가 아예 없을수 있을까 했었다. 그래서 이곳 사람들과 여기 오래 사신 분들에게 물어보았는데, 그 답이 과연 부모로서는 최고의 답이었다! 덴마크 사람들은 어린이집에서의 학대나 폭력, 체벌, 사고사 같은 것을 아예 상상조차 할수 없는 사람들이라고. 그런 경우를 들어보지도 못했으며, 모든 어린이집 선생님들은 국가가 지정한 유아교육과 안전에 대한 교육을 수료한 사람들이라고 한다. 비록 유치원 외관을 한국만큼 이쁘고 시련되게 꾸미거나, 내부를 깔끔하게 해놓지는 못해도, 아이들의 안전에 있어서는 무엇보다도 고지식한 덴마크다.