top command on multi core processor

  • I am using freescale IMX6 quad processor. I want to know if the top command lists the CPU usage of all 4 cores or of a single core. I am seeing an application's CPU usage being the same with 4 cores and with a single core. I was guessing the CPU usage by the application will increase on a single core and decrease on 4 cores but it has not changed.

    try pressing 1 while top is running

    Could you please elaborate. As in what happens if I press 1. Because I am getting this inconsistent result since 2 days.

    Which application is that? Why do you think your application should use multiple cores if available? There are many applications out there that work on a single CPU/core and for which nobody bothered to take the time to parallize them.

    @Anthon well that's the question, if top gives you a percentage of 4core or a percentage of a core, because if the percentage comes from 4 cores, then the value (even with a non threaded app should be 4 time fewer

    no. if multiple cores, they accumulate to over 100%. 4 cores can get as high as 800% with hyperthreading on each core

    I like to use `htop` for this.

    pressing 1 does not help is I grep a specific process. i.e top | grep followed by 1 does not show cpu core info

  • I'm not entirely sure what you're asking here. Yes, top shows CPU usage as a percentage of a single CPU by default. That's why you can have percentages that are >100. On a system with 4 cores, you can see up to 400% CPU usage.

    You can change this behavior by pressing I (that's Shift + i and toggles "Irix mode") while top is running. That will cause it to show the pecentage of available CPU power being used. As explained in man top:

        1. %CPU  --  CPU Usage
           The task's share of the elapsed CPU time since the last screen
           update, expressed as a percentage of total  CPU  time.   In  a
           true  SMP environment, if 'Irix mode' is Off, top will operate
           in 'Solaris mode' where a task's cpu usage will be divided  by
           the  total  number  of  CPUs.  You toggle 'Irix/Solaris' modes
           with the 'I' interactive command.
    

    Alternatively, you can press 1 which will show you a breakdown of CPU usage per CPU:

    top - 13:12:58 up 21:11, 17 users,  load average: 0.69, 0.50, 0.43
    Tasks: 248 total,   3 running, 244 sleeping,   0 stopped,   1 zombie
    %Cpu0  : 33.3 us, 33.3 sy,  0.0 ni, 33.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu1  : 16.7 us,  0.0 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu2  : 60.0 us,  0.0 sy,  0.0 ni, 40.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem:   8186416 total,  6267232 used,  1919184 free,   298832 buffers
    KiB Swap:  8191996 total,        0 used,  8191996 free,  2833308 cached
    

    with hyperthread I believe you can see up to 800% as /proc/cpuinfo will show each thread as a cpu

    @Dani_l yes, whether the "core" is physical or virtual is irrelevant, it is treated as a "CPU" by `top`. The output I show is from my laptop which has a single physical CPU with two cores, each of which has a 2nd logical core. The result is that `top` sees 4 cores.

    Sorry for the nitpicking, in my dayjob we have to distinguish between sockets, cores and threads when reserving resources. I guess the habit stuck.

  • If you're wanting to open top immediately displaying separate CPUs without needing to press 1, you can use the -1 option.

    e.g.:

    top -1

    ...
    %Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu2  : 44.7 us, 55.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu3  : 46.7 us, 53.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    ...     
    

License under CC-BY-SA with attribution


Content dated before 6/26/2020 9:53 AM