파이썬 프로그래밍의 장점 중의 하나라면 다양한 라이브러리가 공개되어 있어 필요에 따라 적절하게 설치해서 손쉽게 활용할 수 있는 것이다. 그렇지만, 내가 직접 개발한 것이 아닌 블랙박스와 같은 것이므로 라이브러리에서 문제가 생기면 황당할 수밖에 없다. 필자가 경험한 사례는 다른 옵션을 사용할 때는 문제가 없던 프로그램이 gevent 라이브러리를 사용하는 웹서버를 가동하면 위의 그림처럼 CPU 사용도가 급격하게 올라가는 것이었다. 클라이언트 요청이 많아서 웹서버가 할 일이 많았다면 그럴 수도 있겠다 싶지만, 현재 상황은 아무런 요청도 없는 상태로 CPU 로드가 올라갈 이유가 없다. CPU 로드를 엄청 먹고 있는 프로세스의 PID를 메모한다. (volttron) ubuntu@ubuntu:~/volttron$ ..
요즘은 지상파 TV에서도 범죄 심리를 다루는 프로파일링을 자주 접할 수 있어서 일반인들은 프로파일링이란 용어를 접하면 범죄 심리를 다루는 전문가를 연상하지만, 프로그래밍 영역에서도 프로파일링은 상당히 중요한 부분이다. 입력, 처리, 출력으로 이어지는 단순한 흐름의 개발로 손을 털 수 있는 프로그램이라면 프로파일링을 접할 기회는 거의 없겠지만 데이터베이스 관리 시스템이나 다양한 저작 도구와 같은 "도구"성의 덩치가 있는 프로그램들은 처리하는 데이터 용량이나 기타 환경에 따라 성능을 개선해야 하는 상황에 직면할 수밖에 없다. 성능 개선의 방법으로 설계를 바꾸는 즉, 프로그램의 구조를 대대적으로 변경하는 재구조화도 있지만, 일정한 영역이 자주 호출되거나, 특정 부분에서 시간을 오래 소모하는 경우를 찾아서 각개..