Re: Strange CPU usage pattern in SMP guest

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 21, 2010 at 12:09:00PM +0200, Avi Kivity wrote:
> On 03/21/2010 02:13 AM, Sebastian Hetze wrote:
>> Hi *,
>>
>> in an 6 CPU SMP guest running on an host with 2 quad core
>> Intel Xeon E5520 with hyperthrading enabled
>> we see one or more guest CPUs working in a very strange
>> pattern. It looks like all or nothing. We can easily identify
>> the effected CPU with xosview. Here is the mpstat output
>> compared to one regular working CPU:
>>
>>
>> mpstat -P 4 1
>> Linux 2.6.31-16-generic-pae (guest) 	21.03.2010 	_i686_	(6 CPU)
>> 00:45:19     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
>> 00:45:20       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>> 00:45:21       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>> 00:45:22       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>> 00:45:23       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>> 00:45:24       4    0,00   66,67    0,00    0,00    0,00   33,33    0,00    0,00    0,00
>> 00:45:25       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>> 00:45:26       4    0,00  100,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00
>>    
>
> Looks like the guest is only receiving 3-4 timer interrupts per second,  
> so time becomes quantized.
>
> Please run the attached irqtop in the affected guest and report the results.
>
> Is the host overly busy?  What host kernel, kvm, and qemu are you  
> running?  Is the guest running an I/O workload? if so, how are the disks  

The host is not busy at all. In fact, currently it is running only one
guest. The host is running an ubuntu 2.6.31-14-server kernel. qemu-kvm
is 0.12.2-0ubuntu6. The kvm module has srcversion: 82D6B673524596F9CF3E84C
as stated by modinfo.

The guest occasionally is running IO workload. However, the effect is
visible all the time. And it is only one out of 6 CPUs the very same guest
is running. This is the output on the guest for all CPUs:

mpstat -P ALL 1
12:45:59     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:00     all    0,40    9,74    2,39    5,37    0,80    3,98    0,00    0,00   77,34
12:46:00       0    1,00    5,00    6,00    3,00    1,00    9,00    0,00    0,00   75,00
12:46:00       1    0,00   23,00    2,00   10,00    0,00    0,00    0,00    0,00   65,00
12:46:00       2    0,00    5,94    0,99    6,93    0,00    1,98    0,00    0,00   84,16
12:46:00       3    0,00    8,00    2,00    5,00    2,00    9,00    0,00    0,00   74,00
12:46:00       4    0,00   33,33    0,00    0,00    0,00    0,00    0,00    0,00   66,67
12:46:00       5    0,00    5,94    0,00    3,96    0,00    0,99    0,00    0,00   89,11

12:46:00     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:01     all    0,60    5,81    3,21   24,45    0,40    3,61    0,00    0,00   61,92
12:46:01       0    1,01    4,04    7,07   31,31    1,01    6,06    0,00    0,00   49,49
12:46:01       1    0,00    5,00    2,00   19,00    0,00    2,00    0,00    0,00   72,00
12:46:01       2    0,99    7,92    1,98   35,64    0,00    2,97    0,00    0,00   50,50
12:46:01       3    1,98    4,95    2,97   13,86    0,00    6,93    0,00    0,00   69,31
12:46:01       4    0,00   33,33    0,00    0,00    0,00    0,00    0,00    0,00   66,67
12:46:01       5    0,00    8,08    3,03   22,22    0,00    1,01    0,00    0,00   65,66

12:46:01     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:02     all    2,38   12,70   17,06   14,68    0,60    1,98    0,00    0,00   50,60
12:46:02       0    3,96   15,84    9,90   13,86    0,00    2,97    0,00    0,00   53,47
12:46:02       1    2,97    6,93    5,94   19,80    2,97    2,97    0,00    0,00   58,42
12:46:02       2    2,02   17,17    8,08   18,18    2,02    1,01    0,00    0,00   51,52
12:46:02       3    2,02   10,10    8,08   14,14    0,00    2,02    0,00    0,00   63,64
12:46:02       4    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02       5    0,00   13,00   55,00    6,00    0,00    1,00    0,00    0,00   25,00

12:46:02     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:03     all    0,20   11,35   10,96    8,96    0,40    2,99    0,00    0,00   65,14
12:46:03       0    1,00   11,00    7,00   15,00    0,00    1,00    0,00    0,00   65,00
12:46:03       1    0,00    7,14    2,04    6,12    1,02   11,22    0,00    0,00   72,45
12:46:03       2    0,00   15,00    1,00   12,00    0,00    1,00    0,00    0,00   71,00
12:46:03       3    0,00   11,00   23,00    8,00    0,00    0,00    0,00    0,00   58,00
12:46:03       4    0,00    0,00   50,00    0,00    0,00    0,00    0,00    0,00   50,00
12:46:03       5    0,00   13,00   20,00    4,00    0,00    1,00    0,00    0,00   62,00

So it is only CPU4 that is showing this strange behaviour.
The same time on the host:

mpstat -P ALL 1
12:46:00     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:01     all    0,16    0,00    1,92    1,37    0,00    0,05    0,00    5,97   90,53
12:46:01       0    1,00    0,00    9,00   25,00    0,00    1,00    0,00   17,00   47,00
12:46:01       1    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01       2    0,00    0,00   13,08    0,00    0,00    0,00    0,00   17,69   69,23
12:46:01       3    0,00    0,00    2,06    0,00    0,00    0,00    0,00    8,25   89,69
12:46:01       4    0,95    0,00    0,95    0,00    0,00    0,00    0,00   22,86   75,24
12:46:01       5    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01       6    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01       7    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01       8    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01       9    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:01      10    0,87    0,00    5,22    0,00    0,00    0,00    0,00   23,48   70,43
12:46:01      11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:01      12    0,00    0,00    0,00    0,00    0,00    0,00    0,00   10,20   89,80
12:46:01      13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:01      14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:01      15    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00

12:46:01     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:02     all    0,20    0,00    0,53    4,92    0,00    0,13    0,00    6,25   87,97
12:46:02       0    0,00    0,00    2,00   74,00    0,00    2,00    0,00    1,00   21,00
12:46:02       1    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02       2    0,00    0,00    3,06    0,00    0,00    0,00    0,00   28,57   68,37
12:46:02       3    1,11    0,00    1,11    0,00    0,00    0,00    0,00   22,22   75,56
12:46:02       4    0,00    0,00    0,00    0,00    0,00    0,00    0,00    7,87   92,13
12:46:02       5    0,00    0,00    0,95    0,00    0,00    0,00    0,00    0,00   99,05
12:46:02       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:02       7    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02       8    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02       9    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02      10    0,92    0,00    0,92    0,00    0,00    0,00    0,00   22,02   76,15
12:46:02      11    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:02      12    1,08    0,00    0,00    0,00    0,00    0,00    0,00   15,05   83,87
12:46:02      13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:02      14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:02      15    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00

12:46:02     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:46:03     all    0,26    0,00    1,12    1,97    0,00    0,07    0,00   13,93   82,65
12:46:03       0    1,00    0,00    6,00   30,00    0,00    1,00    0,00    0,00   62,00
12:46:03       1    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:03       2    0,00    0,00    0,00    0,00    0,00    0,00    0,00   82,18   17,82
12:46:03       3    0,00    0,00    4,76    0,00    0,00    0,00    0,00   38,10   57,14
12:46:03       4    0,00    0,00    0,00    0,00    0,00    0,00    0,00   16,49   83,51
12:46:03       5    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:03       6    0,34    0,00    1,01    0,00    0,00    0,00    0,00   11,11   87,54
12:46:03       7    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:03       8    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:03       9    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00
12:46:03      10    2,25    0,00    0,00    0,00    0,00    0,00    0,00   26,97   70,79
12:46:03      11    0,00    0,00    1,67    0,00    0,00    0,00    0,00    0,00   98,33
12:46:03      12    0,00    0,00    1,98    0,00    0,00    0,00    0,00   15,84   82,18
12:46:03      13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:03      14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:46:03      15    0,00    0,00    0,00    0,00    0,00    0,00    0,00    0,00  100,00


your irqtop on the guest shows something like:

 Local timer interrupts              1257
 Rescheduling interrupts              849
 eth0                                 715
 ata_piix                              24
 virtio0-input                          1


Disk configuration of the guest is a single LVM volume running as raw image.

Here is the qemu-kvm command line:
/usr/bin/qemu-system-x86_64 -S -M pc-0.12 -cpu qemu32 -m 8192 -smp 6 -name guest -uuid dac8c0df-5848-48e5-904e-5548fcb5e614 -monitor unix:/var/lib/libvirt/qemu/guest.monitor,server,nowait -boot c -drive file=/dev/drbd/by-res/guest,if=ide,index=0,boot=on,format=host_device,cache=none -net nic,macaddr=24:09:61:01:32:00,vlan=0,model=virtio,name=virtio.0 -net tap,fd=20,vlan=0,name=tap.0 -serial pty -parallel none -usb -vnc 127.0.0.1:0 -k de -vga cirrus -soundhw es1370 -pcidevice host=01:00.0 -pcidevice host=06:00.1

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux