[lkml]   [2006]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subjectmake -j with j <= 4 seems to only load a single CPU core
    This is quite odd and I've no idea where to start looking for the
    cause, but let me describe what I'm seeing and maybe someone can point
    me in the right direction.

    I'm running SMP 2.6.x kernels on a Athlon 64 X2 4400+

    When I build new kernels I use 'make -j' to get both CPU cores busy
    and minimize build time.

    I've observed that when I use 'make -j 2', 'make -j 3' or 'make -j 4'
    only ~half of my CPU resources get used during the build and when I
    look at the output it looks exactely like output from plain 'make' for
    something like 95% of the build - that is, files get build
    sequentially, not in parallel.
    However, if I run 'make -j 5' or higher, then both cores get lots of
    work to do and utilization of both cores stay close to 100% for almost
    the entire build, and the output during the build shows lots of files
    from different directories intermixed, so it's clearly building stuf
    in parallel.

    I find this quite strange since anything from 'make -j 2' and up
    should be able to keep both cores resonably busy, but there seems to
    be a huge difference between j <= 4 and j > 4.

    Another datapoint: This is most pronounced when I am also running the
    make process nice'd. Which I usually do in order to be able to use the
    machine for other tasks while the build is in progress.
    If I don't run the build nice'd then it starts to be resonably
    parallel at j >= 3, but still doesn't *really* load both cores before
    j >= 5.

    Just to be completely clear - a few examples:

    This is what I usually run to load both cores well :

    nice make -j 5 2>&1 | tee build.log

    this however gives me a more or less serial build with only half the
    system resources used :

    nice make -j 4 2>&1 | tee build.log

    Without nice this loads the box somewhat OK (but not completely):

    make -j 3 2>&1 | tee build.log

    and this pretty much gives me a serial build:

    make -j 2 2>&1 | tee build.log

    Any good explanations for this behaviour ?

    Jesper Juhl <>
    Don't top-post
    Plain text mails only, please
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-02-21 22:05    [W:0.031 / U:5.820 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site