리눅스 시간 측정 그리고 프로세스 우선순위...
제가 gettimeofday함수를 써서 지금 시스템의 시간측정 정확도가 얼마나 되는 지를 알아보려고 아래와 같이 해봤습니다.
#include
#include
int main()
{
int i;
struct timeval t1,t2,tres;
t1.tv_sec=0;
t1.tv_usec=0;
for(i=0;i<10000;i++) {
gettimeofday(&t2,0);
tres.tv_sec = t2.tv_sec - t1.tv_sec;
tres.tv_usec = t2.tv_usec - t1.tv_usec;
if(tres.tv_usec < 0)
{
tres.tv_sec --;
tres.tv_usec += 1000000;
}
printf("time: %ld\n", tres.tv_usec);
t1.tv_sec = t2.tv_sec;
t1.tv_usec = t2.tv_usec;
}
}
이렇게 했더니 값이 3 ~ 4정도 나옵니다. 이 값을 이 시스템의 시간 정밀도로 봐도 될까요?
또 한 가지는...
프로세스에 우선순위를 함 줘보겠다고 아래와 같은 짓을 했습니다.
#include
#include
#include
int main()
{
int i;
struct timeval t1,t2,tres;
struct sched_param p;
p.sched_priority = 10;//0~100
sched_setscheduler(getpid(), SCHED_FIFO, &p);
for(i=0;i<10000;i++) {
gettimeofday(&t1,0);
gettimeofday(&t2,0);
tres.tv_sec = t2.tv_sec - t1.tv_sec;
tres.tv_usec = t2.tv_usec - t1.tv_usec;
if(tres.tv_usec < 0)
{
tres.tv_sec --;
tres.tv_usec += 1000000;
}
printf("time: %ld\n", tres.tv_usec);
t1.tv_sec = t2.tv_sec;
t1.tv_usec = t2.tv_usec;
}
}
우선순위 설정 안한값이나 비슷하게 나오는것을 보니 분명 잘못된 것이겠죠? 어떻하면 이 놈을 soft real-time 프로세스로 동작시킬 수 있을까요??
댓글 달기