lkml.org 
[lkml]   [2005]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Distinguish real vs. virtual CPUs?

    On 03.22, Dan Maas wrote:
    > Is there a canonical way for user-space software to determine how many
    > real CPUs are present in a system (as opposed to HyperThreaded or
    > otherwise virtual CPUs)?
    >

    This is 2xXeonHT, is, 4 cpus on 2 packages:

    cat /proc/cpuinfo:

    processor : 0
    ...
    physical id : 0
    siblings : 2
    core id : 0
    cpu cores : 1

    processor : 1
    ...
    physical id : 0
    siblings : 2
    core id : 0
    cpu cores : 1

    processor : 2
    ...
    physical id : 3
    siblings : 2
    core id : 3
    cpu cores : 1

    processor : 3
    ...
    physical id : 3
    siblings : 2
    core id : 3
    cpu cores : 1

    So something like:

    cat /proc/cpuinfo | grep 'core id' | uniq | wc -l

    would give you the number of packages or 'real cpus'. Then you have to
    choose which ones are unrelated. Usually evens are siblings of odds, but
    I won't trust on it...

    > We have an application that for performance reasons wants to run one
    > process per CPU. However, on a HyperThreaded system /proc/cpuinfo
    > lists two CPUs, and running two processes in this case is the wrong
    > thing to do. (Hyperthreading ends up degrading our performance,
    > perhaps due to cache or bus contention).
    >

    I always hear people about HT 'degrading' performance. Obviously you don't
    get a 200%, but it is always better than 100%. With my simulation code,
    in which I did not anything special for HT (it uses my 4 cpus as 'real' ones),
    I usually get a 125-130% gain. So the theoretical performance loos true.
    Your application behaviour has to be really nasty to run slower with 2 threads
    on an HT-P4 that with one thread.

    Hope this helps.

    --
    J.A. Magallon <jamagallon()able!es> \ Software is like sex:
    werewolf!able!es \ It's better when it's free
    Mandrakelinux release 10.2 (Cooker) for i586
    Linux 2.6.11-jam6 (gcc 3.4.3 (Mandrakelinux 10.2 3.4.3-6mdk)) #1


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:11    [W:0.029 / U:30.264 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site