2012-02-08 3 views
3

실행 중일 때 일정량의 CPU를 사용해야하는 C 코드 (Linux)를 작성 중입니다. 나는 특정 CPU 임계 값에 도달했을 때 특정 동작을 트리거하는 실험을 수행하고 있습니다. 따라서 사용률이 특정 임계 값에 도달하면 실험을 완료 할 때까지 30 초 동안 그 상태로 유지해야합니다. top 명령을 사용하여 CPU 사용률을 모니터링하고 있습니다.CPU 사용률 증가 및 C 코드를 사용하여 특정 수준으로 유지

내 질문은 - 입니다. 1. CPU 사용률을 가능한 한 결정적인 방식으로 증가 시키려면 어떻게합니까? 2. 임계 값에 도달하면 미리 정의 된 시간 동안 해당 수준에서 유지하는 방법이 있습니까? 상부 명령

샘플 출력 (9 열은 "상부"프로세스가 사용하는 CPU이다) - 19,304 0 5,448 1,212 808 16 ABCDE R 0.2 0.0 0 위 00.06 가기

마찬가지로, I는 모양 내 바이너리의 활용도를 보여주는 상단의 줄에.

도움을 주시면 감사하겠습니다. 또한 세부 정보가 필요한 경우 알려 주시기 바랍니다.

감사합니다.

편집 : 다음 코드 줄을 사용하면 CPU 사용률을 매우 잘 제어 할 수 있습니다. 다음과 같은 경우에는 50 % 이상으로 유지하고 50 % 미만으로 유지하는 두 가지 옵션이 있습니다. 시행 착오 후에 주어진 휴면 값으로 내려 앉았다.

endwait = clock() + (seconds * CLOCKS_PER_SEC); 
while(clock() < endwait) {} 
if (cpu_utilization > 50) 
    usleep(250000); 
else 
    usleep(700000); 

희망이 있습니다.

+3

슬립 루프와 슬립 루프, 슬립 루프, 슬립 루프, 통화 중 루프 등을 조합하여 원하는 CPU 사용률을 달성하십시오. –

+0

busy 루프는 분명히보고 된 CPU 사용량을 최소한으로 유지하지만, CPU를 사용중인 상태로 유지하기 위해 일부 정렬되지 않은 메모리 액세스를 throw 할 수 있습니다. –

답변

2

cpuburn은 CPU 사용률을 매우 높게 만드는 것으로 알려져있어 최대 온도까지 온도를 높입니다. 더 이상 공식 웹 사이트가 없지만 여전히 Debian package 또는 googlecode으로 소스 코드에 액세스 할 수 있습니다. 당신이 내 의견으로는, 일정한 CPU 사용률을 가져야한다 C.에 함께 이런 종류의

2

뭔가 상호 작용하기 위해 어떤 접착제을해야합니다, 그래서 그것은, ASM에서 구현 것 : md5sum이 <는/dev/urandom을

+0

안녕하세요. 질문 옆에 답변을 제공해 주셔서 감사합니다. urandom은 reseed를 요청하기 때문에 특정 지점에서 차단되지 않을 것이라고 확신합니까? 단순히 알려진 데이터에 대한 해시를 수행하는 것이 효율적이며 차단 가능성이 적습니다. –

+0

'/ dev/urandom'은 차단되지 않으며'/ dev/random'은 차단됩니다. 그러나 둘 중 하나에서 데이터를 소비하면 엔트로피 풀이 줄어들고 이후에 일부 작업이 느려질 수 있습니다 (예 : ssh/ssl의 암호화). '/ dev/zero' 해싱은 추가 위험없이 동일한 CPU 사용량을 제공해야합니다. –