Public bug reported:

Hugepages + split-core + NUMA + pinned CPUs make a simple apt-get
install for multiple packages to hang the CPU. Killing the process and
re-running the command would work (the packages are installed).
Installing single packages also works fine, so it only happens for
multiple packages.

Reproduce
=========
- reboot host
- ppc64_cpu --smt=on
- ppc64_cpu --sub-cores-per-core=4
-- ppc64_cpu --smt=off
- for i in 0 1 16 17; do echo 1300 > 
/sys/devices/system/node/node$i/hugepages/hugepages-16384kB/nr_hugepages; done
- for s in libvirt-bin nova-compute nova-api; do service $s restart; done
- created a vm with the following config:
...
  <vcpu placement='static'>8</vcpu>
  <cputune>
    <shares>8192</shares>
    <vcpupin vcpu='0' cpuset='56'/>
    <vcpupin vcpu='1' cpuset='58'/>
    <vcpupin vcpu='2' cpuset='60'/>
    <vcpupin vcpu='3' cpuset='62'/>
    <vcpupin vcpu='4' cpuset='72'/>
    <vcpupin vcpu='5' cpuset='74'/>
    <vcpupin vcpu='6' cpuset='76'/>
    <vcpupin vcpu='7' cpuset='78'/>
    <emulatorpin cpuset='56,58,60,62,72,74,76,78'/>
  </cputune>
  <numatune>
    <memory mode='strict' nodeset='16'/>
    <memnode cellid='0' mode='strict' nodeset='16'/>
  </numatune>
...
  <cpu mode='host-model'>
    <model fallback='allow'/>
    <topology sockets='1' cores='4' threads='2'/>
    <numa>
      <cell id='0' cpus='0-7' memory='10485760' unit='KiB' memAccess='shared'/>
    </numa>
  </cpu>
...
- apt-get install <pkg1> <pkg2> <pkg3>...
- cpu hangs, 100% busy

apt-get
=======

sudo DEBIAN_FRONTEND=noninteractive http_proxy= https_proxy= no_proxy=
apt-get --option Dpkg::Options::=--force-confold --assume-yes install
apache2 apache2-dev bc bridge-utils bsdmainutils curl g++ gcc gettext
git graphviz iputils-ping libapache2-mod-proxy-uwsgi libffi-dev libjpeg-
dev libmysqlclient-dev libpq-dev libssl-dev libsystemd-dev libxml2-dev
libxslt1-dev libyaml-dev lsof openssh-server openssl pkg-config psmisc
python2.7 python-dev python-gdbm screen tar tcpdump unzip uuid-runtime
wget wget zlib1g-dev lvm2 open-iscsi qemu-utils thin-provisioning-tools
lvm2 open-iscsi qemu-utils thin-provisioning-tools dstat libkrb5-dev
libldap2-dev libsasl2-dev memcached python-mysqldb sqlite3 conntrack
curl dnsmasq-base dnsmasq-utils ebtables gawk genisoimage iptables
iputils-arping kpartx libjs-jquery-tablesorter libmysqlclient-dev parted
pm-utils python-mysqldb socat sqlite3 sudo vlan cryptsetup genisoimage
gir1.2-libosinfo-1.0 netcat-openbsd open-iscsi qemu-utils sg3-utils
sysfsutils ipset acl dnsmasq-base ebtables haproxy iptables iputils-
arping iputils-ping libmysqlclient-dev postgresql-server-dev-all python-
mysqldb sqlite3 sudo vlan conntrack conntrackd keepalived curl
liberasurecode-dev make memcached sqlite3 xfsprogs


top
===

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
13231 root      20   0   40192  33792   6848 R 100.0  0.3   1:02.68 apt-get


strace
======
... <truncated>
                    = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7883, si_uid=0, 
si_status=0, si_utime=0, si_stime=0} ---
close(16)                               = 0
waitpid(7883, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 7883
stat("/var/lib/dpkg/status", {st_mode=S_IFREG|0644, st_size=818492, ...}) = 0
stat("/var/lib/dpkg/status", {st_mode=S_IFREG|0644, st_size=818492, ...}) = 0
open("/var/lib/dpkg/status", O_RDONLY)  = 16
fcntl(16, F_SETFD, FD_CLOEXEC)          = 0
read(16, "Package: python-apt-common\nStatus: install ok installed\nPriority: 
optional\nSection: python\nInstalled-Size: 244\nMaintainer: Ubuntu Developers 
<ubuntu-devel-disc...@lists.ubuntu.com>\nArchitecture: all\nSource: 
python-apt\nVersion: 1.1.0~beta1build1\nReplaces: python-apt (<< 
0.7.98+nmu1)\nDepends: python | python3\nBreaks: python-apt (<< 
0.7.98+nmu1)\nEnhances: python-apt, python3-apt\nDescription: Python interface 
to libapt-pkg (locales)\n The apt_pkg Python interface will provide full access 
to the internal\n libapt-pkg structures allowing Python programs to easily 
perform a\n variety of functions.\n .\n This package contains 
locales.\nOriginal-Maintainer: APT Development Team 
<de...@lists.debian.org>\n\nPackage: node-lockfile\nStatus: install ok 
installed\nPriority: extra\nSection: web\nInstalled-Size: 43\nMaintainer: 
Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>\nArchitecture: 
all\nVersion: 0.4.1-1\nDepends: nodejs\nDescription: Asynchronous file lock mod
 ule for Node.js\n This module provides asynchronous and synchronous concurrent 
file\n locking. It supports timeouts, expirations, and retrying upon failure.\n 
.\n Node.js is an event-based server-side javascript 
engine.\nOriginal-Maintainer: Debian Javascript Maintainers 
<pkg-javascript-de...@lists.alioth.debian.org>\nHomepage: 
https://github.com/isaacs/lockfile\n\nPackage: libgtk2.0-bin\nStatus: install 
ok installed\nPriority: optional\nSection: misc\nInstalled-Size: 
80\nMaintainer: Ubuntu Desktop Team 
<ubuntu-desk...@lists.ubuntu.com>\nArchitecture: ppc64el\nMulti-Arch: 
foreign\nSource: gtk+2.0\nVersion: 2.24.30-1ubuntu1\nDepends: libgtk2.0-0 (= 
2.24.30-1ubuntu1), libgtk2.0-common\nDescription: programs for the GTK+ 
graphical user interface library\n GTK+ is a multi-platform toolkit for 
creating graphical user\n interfaces. Offering a complete set of widgets, GTK+ 
is suitable\n for projects ranging from small one-off tools to complete 
application\n suites.\n .\n This package conta
 ins the utilities which are used by the libraries\n and other 
packages.\nHomepage: http://www.gtk.org/\nOriginal-Maintain";..., 32771) = 32771
fstat(16, {st_mode=S_IFREG|0644, st_size=818492, ...}) = 0
fstat(16, {st_mode=S_IFREG|0644, st_size=818492, ...}) = 0


libvirt xml
===========

<domain type='kvm' id='13'>
  <name>instance-0002fd88</name>
  <uuid>36c7dc00-b230-4cb2-a28d-43f81ba5fa80</uuid>
  <metadata>
    <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
      <nova:package version="13.1.2"/>
      <nova:name>devstack-xenial-smt-ppc64-smt-151554</nova:name>
      <nova:creationTime>2017-06-14 16:41:33</nova:creationTime>
      <nova:flavor name="numa-hugepages">
        <nova:memory>10240</nova:memory>
        <nova:disk>80</nova:disk>
        <nova:swap>10240</nova:swap>
        <nova:ephemeral>0</nova:ephemeral>
        <nova:vcpus>8</nova:vcpus>
      </nova:flavor>
      <nova:owner>
        <nova:user uuid="d17cb3d4398f4c8c84f96d78e3ff50e8">pkvmci</nova:user>
        <nova:project 
uuid="7b62ae2fea4545a2b6b68c9024aafbf1">pkvmci</nova:project>
      </nova:owner>
      <nova:root type="image" uuid="6b6f077d-1860-4864-838d-84ea1085afee"/>
    </nova:instance>
  </metadata>
  <memory unit='KiB'>10485760</memory>
  <currentMemory unit='KiB'>10485760</currentMemory>
  <memoryBacking>
    <hugepages>
      <page size='16384' unit='KiB' nodeset='0'/>
    </hugepages>
  </memoryBacking>
  <vcpu placement='static'>8</vcpu>
  <cputune>
    <shares>8192</shares>
    <vcpupin vcpu='0' cpuset='56'/>
    <vcpupin vcpu='1' cpuset='58'/>
    <vcpupin vcpu='2' cpuset='60'/>
    <vcpupin vcpu='3' cpuset='62'/>
    <vcpupin vcpu='4' cpuset='72'/>
    <vcpupin vcpu='5' cpuset='74'/>
    <vcpupin vcpu='6' cpuset='76'/>
    <vcpupin vcpu='7' cpuset='78'/>
    <emulatorpin cpuset='56,58,60,62,72,74,76,78'/>
  </cputune>
  <numatune>
    <memory mode='strict' nodeset='16'/>
    <memnode cellid='0' mode='strict' nodeset='16'/>
  </numatune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='ppc64le' machine='pseries-2.6'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-model'>
    <model fallback='allow'/>
    <topology sockets='1' cores='4' threads='2'/>
    <numa>
      <cell id='0' cpus='0-7' memory='10485760' unit='KiB' memAccess='shared'/>
    </numa>
  </cpu>
  <clock offset='utc'>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='rtc' tickpolicy='catchup'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='writeback'/>
      <source 
file='/raid-data/instances/36c7dc00-b230-4cb2-a28d-43f81ba5fa80/disk'/>
      <backingStore type='file' index='1'>
        <format type='raw'/>
        <source 
file='/raid-data/instances/_base/8b0287808ddb3011d589c92ff4e9474a4efa4700'/>
        <backingStore/>
      </backingStore>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='writeback'/>
      <source 
file='/raid-data/instances/36c7dc00-b230-4cb2-a28d-43f81ba5fa80/disk.swap'/>
      <backingStore type='file' index='1'>
        <format type='raw'/>
        <source file='/raid-data/instances/_base/swap_10240'/>
        <backingStore/>
      </backingStore>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' 
function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source 
file='/raid-data/instances/36c7dc00-b230-4cb2-a28d-43f81ba5fa80/disk.config'/>
      <backingStore/>
      <target dev='sdz' bus='scsi'/>
      <readonly/>
      <alias name='scsi3-0-0-4'/>
      <address type='drive' controller='3' bus='0' target='0' unit='4'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 
function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='scsi' index='0'>
      <alias name='scsi0'/>
      <address type='spapr-vio' reg='0x2000'/>
    </controller>
    <controller type='scsi' index='1'>
      <alias name='scsi1'/>
      <address type='spapr-vio' reg='0x3000'/>
    </controller>
    <controller type='scsi' index='2'>
      <alias name='scsi2'/>
      <address type='spapr-vio' reg='0x4000'/>
    </controller>
    <controller type='scsi' index='3'>
      <alias name='scsi3'/>
      <address type='spapr-vio' reg='0x5000'/>
    </controller>
    <interface type='bridge'>
      <mac address='fa:16:3e:10:d5:b4'/>
      <source bridge='brq47fb4423-56'/>
      <target dev='tapaf9bc01f-18'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 
function='0x0'/>
    </interface>
    <serial type='file'>
      <source 
path='/raid-data/instances/36c7dc00-b230-4cb2-a28d-43f81ba5fa80/console.log'/>
      <target port='0'/>
      <alias name='serial0'/>
      <address type='spapr-vio' reg='0x30000000'/>
    </serial>
    <serial type='pty'>
      <source path='/dev/pts/6'/>
      <target port='1'/>
      <alias name='serial1'/>
      <address type='spapr-vio' reg='0x30001000'/>
    </serial>
    <console type='file'>
      <source 
path='/raid-data/instances/36c7dc00-b230-4cb2-a28d-43f81ba5fa80/console.log'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
      <address type='spapr-vio' reg='0x30000000'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='keyboard' bus='usb'>
      <alias name='input1'/>
    </input>
    <input type='mouse' bus='usb'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5905' autoport='yes' listen='0.0.0.0' 
keymap='en-us'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vga' vram='16384' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' 
function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <stats period='10'/>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
function='0x0'/>
    </memballoon>
    <panic model='pseries'/>
  </devices>
</domain>


More apt-get install examples
=============================

sudo DEBIAN_FRONTEND=noninteractive http_proxy= https_proxy= no_proxy=
apt-get --option Dpkg::Options::=--force-confold --assume-yes install
libvirt-bin libvirt-dev

Processing triggers for libc-bin (2.23-0ubuntu7) ...
Processing triggers for systemd (229-4ubuntu17) ...

^C


$ sudo DEBIAN_FRONTEND=noninteractive http_proxy= https_proxy= no_proxy= 
apt-get --option Dpkg::Options::=--force-confold --assume-yes install fakeroot 
make openvswitch-switch
Reading package lists... 0%

^C
rfolco@devstack-xenial-smt-ppc64-smt-151554:~$ sudo 
DEBIAN_FRONTEND=noninteractive http_proxy= https_proxy= no_proxy= apt-get 
--option Dpkg::Options::=--force-confold --assume-yes install fakeroot make 
openvswitch-switch
Reading package lists... 0%


c^C
rfolco@devstack-xenial-smt-ppc64-smt-151554:~$ ^C
rfolco@devstack-xenial-smt-ppc64-smt-151554:~$ ^C
rfolco@devstack-xenial-smt-ppc64-smt-151554:~$ sudo 
DEBIAN_FRONTEND=noninteractive http_proxy= https_proxy= no_proxy= apt-get 
--option Dpkg::Options::=--force-confold --assume-yes install fakeroot make 
openvswitch-switch
Reading package lists... 0%

** Affects: kvm (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1698846

Title:
  [ppc64el] Hugepages w/ split-core freezes cpu

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/1698846/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to