Hello All, I created a very simple program which has higher priority than normal tasks and runs a tight loop. Under same test environment I ran this program on both non-rt and rt 2.6.33.5 kernel. To my suprise I see that performance of non-RT kernel is better than RT. non-RT kernel took 3 sec and 366156 usec while RT kernel took about 3 sec and 418011 usec.Can someone please explain why the performance of non-rt kernel is better than rt kernel? From the face of the test result, I feel RT has more overhead,Is there any configuration that I could do to bring down the overhead?
Processor: ---------------- processor : 0 cpu : 7448 clock : 996.000000MHz revision : 2.2 (pvr 8004 0202) bogomips : 83.10 processor : 1 cpu : 7448 clock : 996.000000MHz revision : 2.2 (pvr 8004 0202) bogomips : 83.10 CFS optimization: -------------------------- # cat /proc/sys/kernel/sched_rt_runtime_us 1000000 # cat /proc/sys/kernel/sched_rt_period_us 1000000 # cat /proc/sys/kernel/sched_compat_yield 1 Test Program: --------------------- main() { int sched_rr_min,sched_rr_max; struct sched_param scheduling_parameters; struct timeval tv,late_tv; suseconds_t usec_diff,avg_usec = 0; time_t sec_diff, avg_sec = 0; int i; long count = 1; sched_rr_min = sched_get_priority_min(SCHED_RR); sched_rr_max = sched_get_priority_max(SCHED_RR); scheduling_parameters.sched_priority = sched_rr_min+4; sched_setscheduler(0, SCHED_RR, &scheduling_parameters);// Run the process with the given priority for(i = 0 ; i < 150 ; i++) { gettimeofday(&tv, NULL); while(count > 0){ //printf("."); count++; } gettimeofday(&late_tv, NULL); count = 1; sec_diff = (late_tv.tv_sec - tv.tv_sec); avg_sec += sec_diff; usec_diff = ( (late_tv.tv_usec > tv.tv_usec) ? (late_tv.tv_usec - tv.tv_usec) : ( tv.tv_usec - late_tv.tv_usec)); avg_usec += usec_diff; printf("Iteration #%d sec %x usec %x\n",i,(sec_diff),(usec_diff)); } printf("Average of #%d sec %x usec %x\n",i,(avg_sec/i),(avg_usec)/i); } Partial Result of non-rt kernel: ------------------------------------------- Iteration #140 sec 3 usec 3aef8 Iteration #141 sec 3 usec 3aefe Iteration #142 sec 3 usec 3aee4 *Iteration #143 sec 4 usec b935b [Why there is this periodic bump ??] [Scheduler at work??]* Iteration #144 sec 3 usec 3aef2 Iteration #145 sec 3 usec 3aef0 Iteration #146 sec 3 usec 3aef4 *Iteration #147 sec 4 usec b934b* Iteration #148 sec 3 usec 3aeed Iteration #149 sec 3 usec 3aef9 Partial Result of rt kernel: ------------------------------------------- Iteration #135 sec 3 usec 47328 *Iteration #136 sec 4 usec ac4fd *Iteration #137 sec 3 usec 48b0b Iteration #138 sec 3 usec 4738c Iteration #139 sec 4 usec ac4d5 Iteration #140 sec 3 usec 483cb Iteration #141 sec 3 usec 48500 *Iteration #142 sec 4 usec acc49 *Iteration #143 sec 3 usec 47c1f Iteration #144 sec 3 usec 478c2 Iteration #145 sec 3 usec 47e48 Iteration #146 sec 4 usec ac9b5 Iteration #147 sec 3 usec 48de4 Iteration #148 sec 3 usec 46fbe Iteration #149 sec 4 usec ac52e Average of #150 sec 3 usec 660db Thanks, Mani -- Thanks, Manik Think twice about a tree before you take a printout
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev