lkml.org 
[lkml]   [2007]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: getting processor numbers
    On Tue, 3 Apr 2007, Ulrich Drepper wrote:

    > More and more code depends on knowing the number of processors in the
    > system to efficiently scale the code. E.g., in OpenMP it is used by
    > default to determine how many threads to create. Creating more threads
    > than there are processors/cores doesn't make sense.
    >
    > glibc for a long time provides functionality to retrieve the number
    > through sysconf() and this is what fortunately most programs use. The
    > problem is that we are currently using /proc/cpuinfo since this is all
    > there was available at that time. Creating /proc/cpuinfo takes the
    > kernel quite a long time, unfortunately (I think Jakub said it is mainly
    > the interrupt information).
    >
    > The alternative today is to use /sys/devices/system/cpu and count the
    > number of cpu* directories in it. This is somewhat faster. But there
    > would be another possibility: simply stat /sys/devices/system/cpu and
    > use st_nlink - 2.
    >
    > This last step unfortunately it made impossible by recent changes:
    >
    > http://article.gmane.org/gmane.linux.kernel/413178
    >
    > I would like to propose changing that patch, move the sched_*
    > pseudo-files in some other directly and permanently ban putting any new
    > file into /sys/devices/system/cpu.
    >
    > To get some numbers, you can try
    >
    > http://people.redhat.com/drepper/nproc-timing.c
    >
    > The numbers I see on x86-64:
    >
    > cpuinfo 10145810 cycles for 100 accesses
    > readdir /sys 3113870 cycles for 100 accesses
    > stat /sys 741070 cycles for 100 accesses

    It sucks when seen from a micro-bench POV, but does it really matter
    overall? The vast majority of software usually calls
    sysconf(_SC_NPROCESSORS_*) with very little frequency (mostly once at
    initialization time) anyway. That's what 50us / call?



    - Davide


    -
    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: 2007-04-03 21:19    [W:0.023 / U:0.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site