Process의 Context Switching Time 측정에 관한 문제
#include
#include
int main()
{ int pid;
double gaptime;
struct timeval start,finish;
gettimeofday(&start,NULL);
pid=fork();
if(pid==100) {exit(0);}
gettimeofday(&finish,NULL);
gaptime=(double)(finish.tv_usec-start.tv_usec);
if(pid==0)
{
printf("문맥전환시간+프로세스생성시간 : %f\n",gaptime);
}
else
{
printf("순수한 프로세스 생성시간 : %f\n",gaptime);
}
}
프로세스 컨텍스트 스위칭을 시간을 구하기 위해서
(부모프로세스가 fork()호출)-----커널전환시간---->커널(프로세스생성완료)-----전환시간---->자식프로세스실행시작
물론 이경우는 자식프로세스가 먼저 실행된 경우를 말하는겁니다 부모가 먼저 받을 수 있겠지만 그건 fork()호출 후 리턴값을 받기까지의 시간일 겁니다
부모프로세스에서 fork()호출전의 시간측정(start)하고 자식프로세스가 실행되는 순간의 자식프로세스의 fork()문다음에finish시간측정
하여 finish-start를 gettimeofday()로 측정하였습니다
순수한 Context Switching Time을 위해서는 커널이 fork를 수행하는 시간(프로세스를 만드는시간)을 빼주어야만 하는데요
어떻게 하면 커널부분에서 fork의 수행시간을 빼주고 순수하게 전환시간만구할수가 있을까요??
또 프로세스와 프로세스와 컨텍스트스위칭 시간을 젤수 있는 더쉬운 방법이 있을까요??
아무리 찾아봐도 방법은 이것밖에 없네요 커널에는 접근할 수가 없거든요 학교서버라서요
댓글 달기