2013-10-17 3 views
1

제 목표는 제온 파이 코 프로세서에 1ms 지연을 삽입하는 것이었지만 결과가 9 밀리미터 차이가났습니다. 그래서, 제온 호스트 컴퓨터와 파이 코 프로세서를 사용하여 타이머 해상도를 찾으려고 시도했습니다. 호스트에서 다음 프로그램을 실행제온 파이 타이머 해상도

#include <stdio.h> 
    #include <time.h> 
    #include <sys/time.h> 
    int main() 
    { 
     struct timespec tim, tim2; 
     tim.tv_sec = 0; 
     tim.tv_nsec = 100000; 
     struct timeval tv; 
     double temp_2=0; 
     int i =0; 
     for (i=0;i<1000;i++) 
     { 
     gettimeofday(&tv, NULL); 
     double t1=tv.tv_sec+(tv.tv_usec/1000000.0); 

     nanosleep(&tim , NULL); 

     gettimeofday(&tv, NULL); 
     double t2=tv.tv_sec+(tv.tv_usec/1000000.0); 

     temp_2+=(t2-t1); 
     } 
     printf("Nano sleep successfull %lf\n",temp_2/1000); 

    return 0; 
    } 

: 나는 다음과 같은 코드를 실행

나노 잠 성공적인 0.000155

은 제온 파이 코 프로세서에서 실행 ./a.out :

. /nsleep_mic 나노 수면 성공 0.009 998

soo 제온 파이에서 거의 90 % 오류 대기가 발생합니다.

  1. 왜 이러한 오류 대기가 발생합니까?
  2. 1ms의 수면 시간을 원한다면 어떻게 해결할 수 있습니까?

답변

2

질문에 완전히 답변하기에 충분한 정보가 없습니다. MPSS 버전과 현재 클록 소스 설정을 추가하십시오. 그러나 ...

TSC를 사용하고 있는지 확인하고 문제가 없는지 확인하려면 dmesg 및 현재 시계 소스를 살펴보십시오.

http://software.intel.com/en-us/blogs/2013/06/20/eliminate-the-dreaded-clocksource-is-unstable-message-switch-to-tsc-for-a-stable

내가 현재 clocksource로 설정되어 있음을 제안 것 : 또한, 당신은 당신이 제온 피 clocksource에 발생할 수 있습니다 몇 가지 문제를 이해하는 데 도움이 라비 Murty에서이 우수한 기사를 읽고 micetc는 코드 (또는 커널을 대신하여)가 시간을 읽길 원할 때마다 장치의 mmio 공간을 읽을 때 추가 오버 헤드가 발생합니다. 이를 피하려면 TSC로 전환하십시오. 최신 버전의 MPSS는 TSC를 기본 클럭 소스로 설정해야하지만 Ravi의 기사를 읽고 장치가 올바르게 설정되어 있는지 확인하십시오.