2011-12-25 6 views
1

Stackless Python으로 작성된 제 서버에서 가끔 5-10 초의 지속 시간 동안 CPU 사용량이 급증합니다. 이것은 산발적으로 발생하므로 문제를 추적하는 데 어려움이 있습니다.Stackless Python - 프로필 단일 태스크 렛 실행 시간

나는 이러한 스파이크가 어디에서 오는지 시도하고 결정하는 cprofile 명령을 사용했지만 cprofile 명령 시간은 기능에 따라 소요되는 위치의 전체 그림을 제공합니다. 내가 정말로 알고 싶은 것은 CPU 스파이크가 하나의 태스크 릿 (그리고 다른 태스크 릿을 멈추는 것)에서 발생하는 어떤 프로세싱 때문인지 아니면 많은 수의 태스크 릿이 많은 프로세싱을하고 있는지 (즉 각각이 활성화 될 때마다 각각 많은 일).

Stackless Python의 스케줄러에 연결하여 타이밍 코드를 추가 할 수있는 편리한 방법이 있습니까? 즉, 태스크 릿릿이 활성화 될 때 호출되는 함수가 있습니까? 그리고 비활성 상태가되어 연결될 수 있습니까?

답변

0

I 블록/재개가 발생할 때 Channel.receive()가 일반적이기 때문에 릿 블록/재개되지만, I가 일어날 때마다 발생으로 꺾어 경우에 후크 명시 함수를 찾지 못했다.