[ppc64el] Hugepages w/ split-core freezes cpu
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
kvm (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
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-
-- ppc64_cpu --smt=off
- for i in 0 1 16 17; do echo 1300 > /sys/devices/
- for s in libvirt-bin nova-compute nova-api; do service $s restart; done
- created a vm with the following config:
...
<vcpu placement=
<cputune>
<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=
</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=
</numa>
</cpu>
...
- apt-get install <pkg1> <pkg2> <pkg3>...
- cpu hangs, 100% busy
apt-get
=======
sudo DEBIAN_
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>
--- 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("/
stat("/
open("/
fcntl(16, F_SETFD, FD_CLOEXEC) = 0
read(16, "Package: python-
fstat(16, {st_mode=
fstat(16, {st_mode=
libvirt xml
===========
<domain type='kvm' id='13'>
<name>
<uuid>
<metadata>
<nova:instance xmlns:nova="http://
<nova:package version="13.1.2"/>
<
<
<nova:flavor name="numa-
<
<nova:owner>
<nova:user uuid="d17cb3d43
</nova:owner>
<nova:root type="image" uuid="6b6f077d-
</nova:
</metadata>
<memory unit='KiB'
<currentMemory unit='KiB'
<memoryBacking>
<hugepages>
<page size='16384' unit='KiB' nodeset='0'/>
</hugepages>
</memoryBacking>
<vcpu placement=
<cputune>
<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=
</cputune>
<numatune>
<memory mode='strict' nodeset='16'/>
<memnode cellid='0' mode='strict' nodeset='16'/>
</numatune>
<resource>
<partition>
</resource>
<os>
<type arch='ppc64le' machine=
<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=
</numa>
</cpu>
<clock offset='utc'>
<timer name='pit' tickpolicy=
<timer name='rtc' tickpolicy=
</clock>
<on_poweroff>
<on_reboot>
<on_crash>
<devices>
<emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='writeback'/>
<source file='/
<backingStore type='file' index='1'>
<format type='raw'/>
<source file='/
<
<target dev='vda' bus='virtio'/>
<alias name='virtio-
<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='/
<backingStore type='file' index='1'>
<format type='raw'/>
<source file='/
<
<target dev='vdb' bus='virtio'/>
<alias name='virtio-
<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='/
<
<target dev='sdz' bus='scsi'/>
<readonly/>
<alias name='scsi3-
<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=
<source bridge=
<target dev='tapaf9bc01
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</interface>
<serial type='file'>
<source path='/
<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='/
<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_
Processing triggers for libc-bin (2.23-0ubuntu7) ...
Processing triggers for systemd (229-4ubuntu17) ...
^C
$ sudo DEBIAN_
Reading package lists... 0%
^C
rfolco@
Reading package lists... 0%
c^C
rfolco@
rfolco@
rfolco@
Reading package lists... 0%