Trying to understand why high number of Context Switches with the RHEL4.0 kernel versus the RHEL3.0.

Sunitha Kambhampati ksunithaghm at gmail.com
Sun Aug 14 02:13:00 UTC 2005


Hello All,

I have a non iteractive, java application  that uses 10 threads and does 
some work which consists mostly of reads.  I am using the 1.3.1 JVM. 
I ran this test on both RHEL3.0 (AS) and RHEL4.0 (AS) with similar 
machine configuration and I noticed that on RHEL4.0 it seems to be doing 
a lot more context switching. 

Since I wasnt sure if it was related to the JVM+kernel, I tried to 
change the kernel version to the 2.4.19 by using LD_ASSUME_KERNEL env 
variable, but even then on RHEL4, it didnt make any noticeable difference.

I have the following questions. (I am not familar with linux internals,  
so sorry if these sound naive).

1)When checking vmstat, I also noticed the following difference in the 
memory buff and memory cache counters.
    vmstat      mem buff      mem cache
RHEL4.0     35508         155852
RHEL3.0    75032          513936
Why is it so different ?

2) why are there so many Context switching (CS) happening, is it becasue 
2.6 kernel is preemptive, or does the Red hat distribution has some 
other advanced scheduling algorithms that is causing it. If so, is there 
someway to increase the timeslice on the fly ?  

3) changing kernel to 2.4 by using LD_ASSUME_KERNEL  - why does that not 
help if it is case of just the 2.6 kernel behavior

Both machines have similar configurations and has hyperthreading enabled 
with 4 logical CPUs.
RHEL3.0 kernel - is 2.4.21-15.ELsmp #1 SMP,   threading is NPTL 0.6
RHEL4.0 kernel is   2.6.9-5.ELsmp #1 SMP,   getconf 
GNU_LIBPTHREAD_VERSION is  NPTL 2.3.4

I searched the archives for this list but didnt find any relevant 
info.   I'd appreciate any suggestions/pointers/help.

Many Thanks,
Sunitha.




More information about the redhat-list mailing list