|
원인은 정확히 모르지만, 제 경험으로는 두가지 경우가 있었었습니다.
1. 시간의 문제
GetTickCount 등의 함수등의 루프됨을 계산하지 않고 작업했다가 마이너스가 되는 바람에
계속 실행이 되어 CPU율 증가. 이러한 문제는 시간뿐이 아니라, 다른 변수 같은것의 OverFlow도
확인해 보셔야 할 듯 합니다. 이러한 문제는 스택을 기록에 남기거나 의심되는 루틴에 간단한
print등의 디버깅을 해주셔서 실행되는 빈도로 예상할 수 있습니다.
2. select 의 문제
통신 버퍼가 제대로 지워지지 않을때 (하드웨어 적으로도 절대 안심하지는 못한다고 개인적인 생각)
select 문에서 계속 걸려서 빠져 나오기 때문에 CPU 율이 증가했었습니다. 일정큐동안 계속 select에서
걸리며 데이터가 정확하지 않다면, 소켓 연결을 해제시켜 주는 등의 작업이 필요할것 같습니다.
cuperido
레쓰비 님이 쓰신 글 :
: TCP/IP통신을 이용하여 1초에 한번씩 서버로 부터 데이터를 가져오는 프로그램을 작성했습니다...
: 처음 프로그램을 실행 시키면 CPU 사용률이 "0% ~ 2%" 정도 나오는데요 하루 정도 지나면 "0%~40" 왔다 갔다 합니다... 컴퓨터 사양이 안좋을수록 CPU사용률을 더 잡아먹구요...ㅜㅜ;;
: 왜 그럴까요...?
:
: 처음 에는 사용률이 적다가 몇시간(하루정도) 지나면 왜 CPU사용률이 올라가는지 혹시 이런 경험 있으셨던 분 조언 부탁드립니다...^^;;
|