[ CnUnix ] in KIDS 글 쓴 이(By): 구르미 (구르미) 날 짜 (Date): 2005년 3월 11일 금요일 오전 01시 19분 14초 제 목(Title): [질] CPU 성능 (MHz)알아내기? 그동안 리눅스 시스템에서 마이크로 벤치마킹 하는 코드를 집어넣을 때 솔라리스에서 쓰였던 gethrtime() 비슷한 거를 다음과 같이 만들어 써왔습니다. #define gethrtime(x) {asm volatile (".byte 0x0f, 0x31" : "=A" (x));} 각 CPU마다 들어있는 Clock Tick수를 카운트하는 레지스터를 읽어들였죠. 이 정보를 이용해 다음과 같은 interval을 구한 후에 gethrtime(x1); // codes for measurement gethrtime(x2); #define TCV(t) ((hrtime_t)((double)(t)/cpuMHz)) printf("interval:%lld ns\n" TCV(x2-x1)); 실제 ns또는 us로 변환해서 출력하는데요. 문제는 cpuMHz를 구하는 것입니다. 그동안 /proc/cpuinfo 의 7번째 줄 12번째 문자부터 string으로 읽어들여서 atof변환을 해서 써왔는데 다른 방법은 없을까요? 제 프로그램에 쓰는 거는 상관없는데 다른 사람들이 쓸 수 있게 해 줘야 하거든요. double getCPUMHz() { FILE *cpuinfo; int i=0; char line[120]; cpuinfo = fopen("/proc/cpuinfo", "r"); for(i=0;i<7;i++) fgets(line, 120, cpuinfo); fclose(cpuinfo); return atof(line+11); } /usr/include/sys/config.h 나 /usr/include/asm/processor.h 에도 이런 정보는 없는것 같은데. 감사함다. |