과부하 프로그램 제작 (테스트용)
글쓴이: idrukawa / 작성시간: 월, 2010/05/31 - 7:43오후
cpu 과부하 제어를 하기위해 cpu 과부하를 발생시키는 프로그램을 작성했습니다.
대단할건 없고 그냥 무한루프돌리는 건데요
for( ; ; ){
}
이런식으로요...
그런데 뻣(but) 개인pc에서는 90%이상의 cpu사용률을 자랑(?)하는데
서버에서는 6%밖에 사용하지 못하네요 ㅠ
이 현상을 어떻게 해석하시는지요?
제가 보았을때 무한루프를 돌리면 점유할 수 있을 만큼의 cpu자원을 사용할것으로 예상했는데 말입니다...
------------------------------
ps : 서버 맛가게 하지 않을정도의 과부하 프로그램(80%정도의 사용률) 힌트좀 주세요~
Forums:
그냥 단순
그냥 단순 반복문이면... 요즘쓰는 대부분의 서버라면 멀티코어/CPU인 경우가 많으니 그중 코어 1개밖에 사용 못합니다.
아니면 그냥 컴파일러단에서 최적화 시켜버렸을지도요..
쓰레드 쓰시거나
쓰레드 쓰시거나 포크 하시면 됩니다.
그리고 거기에서 무한 루프 도시면 됩니다.
아! 그렇군요^^
thread 생성해서 무한루프 돌려보겠습니다.
--------------------------------------------------
thread 하나당 6% 조금넘는 사용률을 보입니다.
thread를 10개 생성해서 cpu사용률을 60%이상으로 잡게했습니다.
priority값을 최대로 주어 우선순위를 낮추었습니다.
그래도 60%의 사용률을 보입니다.
왜그럴까요? ㅠ
gcc로 컴파일
gcc로 컴파일 하셨다면 어셈 파일로 뽑으셔서 보여주세요 -S 옵션이던가 -s옵션입니다.
volatile int i;
while (1) {
i++;
}
이걸로 바꿔보시기도 해보세요
g++ t.cpp -S (대문자
g++ t.cpp -S (대문자 S)
결과입니다.
------------------------------
t.s는 확장자때문에 첨부가 안된다고 합니다;;
과부하 프로세스는
과부하 프로세스는 제대로 작성된것 같습니다.
단지 main은 thread를 여러개 생성하고
각 thread에서 for( ; ; )로 무한루프만 돌 뿐이니까요...
제가 생각하기로
과부하 프로세스와 cpu점유를 놓고 경쟁하는 프로세스가 없어서
priority를 낮춰도 과부하 프로세스가 계속 cpu를 사용하는 것 같습니다.
------------------------------------------------------------
이녀석을 제어할 수 있는 방법이 없을까요?
현재 thread를 10개 만들어서 60%의 cpu사용률을 보이는데요
10%~30% 범위로 낮추고 싶습니다만...
댓글 달기