2012-07-25 3 views
0

모든 BSD는 리눅스가 /proc/stats의 첫번째 줄에있는 것처럼 CPU 통계 (커널, 유휴, 사용자 등에서 소비하는 시간)를 얻는 공통된 방법이 있습니까?BSD/Darwin cpu stats

부하가 걸린 시스템을 감지하고 활성화되었을 때 계산을 수행하지 않으려 고합니다 (특정 임계 값 이상). Windows/Linux에서 어떻게하는지 알아 냈습니다.

필자는 어떻게 든 sysctl을 사용해야한다고 생각합니다.

http://osdir.com/ml/darwin-kernel/2009-06/msg00036.html

이 크로스 플랫폼 :이 발견했습니다?

  • 맥 OS 10.6 이상
  • FreeBSD의 8 +
  • 오픈 BSD 나는 BSD의 만 소폭 알고 있어요 5 +

(I : 나는 특히 이러한 BSD의를 대상으로하기 위해 노력하고있어 십대 때 FreeBSD로 조금 놀았습니다.), 어떤 도움을 주시면 감사하겠습니다.

답변

1

아니요 - 이러한 것들은 그다지 휴대 할 수 없습니다. 비록

 sysctl vm.loadavg 
     vm.loadavg: { 0.98 1.39 1.50 } 

은 위의 세트에서 작동하며 다소 유사합니다.

아직 광범위한 간단한 무언가를해야 할 경우 - 나는 (뒤에서 플랫폼 간의 미묘하게 다른 sysctls에 의존) 명령 가동 시간의 구문 분석을 고려할 것 - 부하 번호 추출 :

 uptime 
     11:38AM up 18 days, 15:50, 2 users, load averages: 0.04, 0.01, 0.00 

그것은 꽤 크로스 플랫폼이며 매우 유사한 의미를 가지고 있습니다.

충분하지 않은 경우 - 시스템에서 호스트 리소스 MIB를 노출시키는 SNMP 에이전트를 실행하는지 확인하십시오. 그러면 플랫폼에 영향을받지 않고 쉽게로드를 얻을 수 있습니다. 정말로 당신의 코드에서 이것을하고 싶다면 - net-snmp에서이 코드를 취하는 것을 고려하십시오 - 이것은 많은 플랫폼에서/proc와 sysctl의 다양한 맛을 가지고 있기 때문에 가능합니다.

+0

나는 loadavg를 고수 할 것입니다. 나는 Windows에서도 잘 작동해야하는 무언가를 쓰고 있는데, 적어도 loadavg 개념은 없다. 나는 이것을 정확하게 수행하고 더 정확한 이유가있을 때까지 CPU 사용량에 기반한 윈도우를 해킹 할 것이라고 생각한다. – tjameson

관련 문제