lkml.org 
[lkml]   [2011]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectHT (Hyper Threading) aware process scheduling doesn't work as it should
    Hello,

    It's known that if you want to reach maximum performance on HT enabled Intel CPUs you
    should distribute the load evenly between physical cores, and when you have loaded all
    of them you should then load the remaining virtual cores.

    For example, if you have 4 physical cores and 8 virtual CPUs then if you have just four
    tasks consuming 100% of CPU time you should load four CPU pairs:

    VCPUs: {1,2} - one task running
    VCPUs: {3,4} - one task running
    VCPUs: {5,6} - one task running
    VCPUs: {7,8} - one task running
    It's absolutely detrimental to performance to bind two tasks to e.g. two physical cores
    {1,2} {3,4} and then the remaining two tasks to e.g. the third core 5,6:
    VCPUs: {1,2} - one task running
    VCPUs: {3,4} - one task running
    VCPUs: {5,6} - *two* task runnings
    VCPUs: {7,8} - no tasks running
    I've found out that even on Linux 3.0.8 the process scheduler doesn't correctly distributes
    the load amongst virtual CPUs. E.g. on a 4-core system (8 total virtual CPUs) the process
    scheduler often run some instances of four different tasks on the same physical CPU.

    Maybe I shouldn't trust top/htop output on this matter but the same test carried out on
    Microsoft XP OS shows that it indeed distributes the load correctly, running tasks on different
    physical cores whenever possible.

    Any thoughts? comments? I think this is quite a serious problem.

    Best wishes,

    Artem


    \
     
     \ /
      Last update: 2011-10-30 21:05    [from the cache]
    ©2003-2011 Jasper Spaans