[procps] [doublehp@xxxxxxxxxxxx: Bug#674922: procps: top does not behave properly with some SMP machines]

  • From: Craig Small <csmall-procps@xxxxxxxxxx>
  • To: Procps-ng Mail list <procps@xxxxxxxxxxxxx>
  • Date: Tue, 29 May 2012 08:49:57 +1000

Hello Jim,
  Was this fixed in procps-ng 3.3.3?  The changelog says that hotplug
memory and CPU support was added but I wasn't sure if this sort of case
is covered.

What a curious device!

 - Craig
  
----- Forwarded message from Doublehp <doublehp@xxxxxxxxxxxx> -----
The hardware is a mobile phone: HTC Sensation.
Base software is Android 2.3.5
Above Android, I have installed Debian Stable, using LinuxInstaller by Galoula;
it's doing debootstrap in a chroot.

The CPU has a strange feature: it's dual core, but works a different way than 
my laptop;
does not just do freq scaling, but completely shuts the core off on idle time.

On idle time:

root@DHP-ARMEL:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 2 (v7l)
processor       : 0
BogoMIPS        : 13.53

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0x02d
CPU revision    : 2

Hardware        : pyramid
Revision        : 0080
EngineerID      : 0007
Serial          : 0000000000000000
root@DHP-ARMEL:~#

on busy time:

root@DHP-ARMEL:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 2 (v7l)
processor       : 0
BogoMIPS        : 13.53

processor       : 1
BogoMIPS        : 13.53

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0x02d
CPU revision    : 2

Hardware        : pyramid
Revision        : 0080
EngineerID      : 0007
Serial          : 0000000000000000
root@DHP-ARMEL:~#

If top is started in iddle time, the pressing '1' on busy time will show only 
one core:

top - 18:34:25 up 1 day, 19:11, 10 users,  load average: 11.39, 8.95, 8.09
Tasks: 314 total,   5 running, 307 sleeping,   0 stopped,   2 zombie
Cpu0  :  5.0%us, 94.6%sy,  0.0%ni,  0.0%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    627676k total,   609084k used,    18592k free,     3448k buffers
Swap:        0k total,        0k used,        0k free,    91492k cached

If top is started on busy time, it will show correctly both cores:

top - 18:35:54 up 1 day, 19:13, 10 users,  load average: 11.79, 9.72, 8.44
Tasks: 312 total,   3 running, 307 sleeping,   0 stopped,   2 zombie
Cpu0  : 11.9%us, 88.1%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  4.5%us, 95.5%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    627676k total,   606536k used,    21140k free,     5812k buffers
Swap:        0k total,        0k used,        0k free,   102020k cached

Whether it's showing both cores or not, if it's started on busy time,
when Android will shut down the second core, top will crash:

  111 root      20   0     0    0    0 D    1  0.0   3:40.08 emmc-qd
    7 root      20   0     0    0    0 S    0  0.0  10:25.33 events/0
        top: failed /proc/stat read
root@DHP-ARMEL:~#

Conclusion: top does read the number of cores only at start, and then, assumes 
this
number will stay fixed. This is bad. Does not support the number of cores to 
change.

I am very surprised, because CPU hotplug is a very old feature, and Linux
does support it since ages; either nobody ever used top on a CPU hotplug
capable machine, or, this CPU is working a different way than traditionnal
CPU hotplug machines.

To test this bug, any mobile device with multi-core should do; not just ARM
but bug should also happen on Intel machines.

-- System Information:
Debian Release: 6.0.2
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: armel (armv7l)

Kernel: Linux 2.6.35.13-gc35910f (SMP w/1 CPU core; PREEMPT)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C)
Shell: /bin/sh linked to /bin/dash

Versions of packages procps depends on:
ii  initscripts             2.88dsf-13.1     scripts for initializing and shutt
ii  libc6                   2.11.2-10        Embedded GNU C Library: Shared lib
ii  libgcc1                 1:4.4.5-8        GCC support library
ii  libncurses5             5.7+20100313-5   shared libraries for terminal hand
ii  libncursesw5            5.7+20100313-5   shared libraries for terminal hand
ii  lsb-base                3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip

Versions of packages procps recommends:
ii  psmisc                        22.11-1    utilities that use the proc file s

procps suggests no packages.

-- no debconf information



----- End forwarded message -----

-- 
Craig Small VK2XLZ   http://enc.com.au/          csmall at : enc.com.au
Debian GNU/Linux     http://www.debian.org/      csmall at : debian.org
GPG fingerprint:     5D2F B320 B825 D939 04D2  0519 3938 F96B DF50 FEA5

Other related posts: