반응형
Notice
Recent Posts
Recent Comments
Link
Brise
프로세스에 의해 사용된 시간 구하기 본문
반응형
--
--
clock_t clock() 함수 : 프로세스가 사용한 시간 구하는 함수
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/clock
http://forum.falinux.com/zbxe/?document_srl=408364&mid=C_LIB
clock_gettime : 전체 시스템의 실제 흐른시간 구하는 함수
http://sunyzero.tistory.com/161
clock_t times : 프로세스가 사용한 시간 구하는 함수( 유저 시스템, 나누어서)
http://linux.die.net/man/2/times
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include<stdio.h> #include<time.h> #include<sys/times.h> unsigned char get_utilization_flag =1; clock_t start_clock, end_clock; struct timespec start_time, end_time, temp_time; struct tms start_times, end_times, temp_times; double cpu_time, real_time; double utilization; void print_clock(struct tms clocker) { printf("PROCESS:\n%d\n%d\n%d\n%d\n",clocker.tms_utime,clocker.tms_stime,clocker.tms_cutime,clocker.tms_cstime); } void get_utilization(void) { // PREVENT NULL DATA if(get_utilization_flag) { get_utilization_flag=0; start_clock = clock(); end_clock = clock(); times(&start_times); times(&end_times); print_clock(end_times); clock_gettime(CLOCK_REALTIME,&start_time); clock_gettime(CLOCK_REALTIME,&end_time); utilization=0; } // STAMP TIME end_clock = clock(); // PROCESS USED TIME times(&end_times); // PROCESS USED TIME ( USER TIME, SYSTEM TIME, CHILD_USER, CHILD_SYSTEM) clock_gettime(CLOCK_REALTIME,&end_time); // REAL-TIME ELAPSED //PRINT TIME print_clock(end_times); printf("end_clock : %d, start_clock : %d\n",end_clock, start_clock); cpu_time = ((double) (end_clock - start_clock))/(double)CLOCKS_PER_SEC; // CLOCK_T TO SECOND temp_time.tv_sec = end_time.tv_sec - start_time.tv_sec; temp_time.tv_nsec = end_time.tv_nsec - start_time.tv_nsec; // DIFF REAL_TIME real_time = (double)temp_time.tv_sec + ((double)temp_time.tv_nsec)/((double)NSEC_TO_SEC); // TIMESPEC TO SECOND utilization = cpu_time/real_time; // GET UTILIZATION printf("CPU_TIME :\n%6lf\nREAL_TIME :\n%6lf\nUTIL :\n%6lf\n",cpu_time,real_time,utilization); // PRINT // ITERATE start_clock = end_clock; start_time = end_time; } #if TEST_MAIN_PERFORMANCE int main (void) { unsigned long i = 1000000000; get_utilization(); for(;i>=0;i--); get_utilization(); return 0; } #endif | cs |
--
--
반응형
'Linux' 카테고리의 다른 글
우분투 캡스락 - 컨트롤 뒤바꾸기 (0) | 2015.05.21 |
---|---|
X250 ubuntu mouse button enable(씽크패드 마우스 버튼 활성화) (0) | 2015.05.21 |
우분투 오른쪽 알트(Alt)키 한영키 전환 (0) | 2015.05.21 |
grub 부팅 순서 변경 (0) | 2015.04.22 |
프로젝트의 라인수 검사. (0) | 2015.04.22 |
SSH 설정 변경하기 (0) | 2015.03.22 |
rtorrent + rutorrent 설치 (0) | 2015.03.20 |
Comments