Re: qemu-kvm-0.13.0 - winsows 2008 - chkdisk too slow

Avi Kivity
2011-01-06T14:37:27Z

On 01/06/2011 03:55 PM, Nikola Ciprich wrote:
> > Same host kernel?
> yes, I also disabled KSM now, se below.
> >
> > (qemu) cpu 1
> > (qemu) info registers
>
> RAX=0000000000000000 RBX=0000000000000000 RCX=0000000000000002 RDX=000055a900000000
> RSI=fffffa8003660450 RDI=0000000000000001 RBP=0000000000000080 RSP=fffff880009f7cc0
> R8 =0000000000000000 R9 =0000000000000f44 R10=fffff8000145a000 R11=0000000000000000
> R12=0000000000000000 R13=fffff800015cada0 R14=0000000000000000 R15=fffff880009bcec0
> RIP=fffff80001575d5b RFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
> ES =002b 0000000000000000 ffffffff 00c0f300 DPL=3 DS [-WA]
> CS =0010 0000000000000000 00000000 00209b00 DPL=0 CS64 [-RA]
> SS =0018 0000000000000000 ffffffff 00c09300 DPL=0 DS [-WA]
> DS =002b 0000000000000000 ffffffff 00c0f300 DPL=3 DS [-WA]
> FS =0053 00000000fffe0000 00007c00 0040f300 DPL=3 DS [-WA]
> GS =002b fffff880009b8000 ffffffff 00c0f300 DPL=3 DS [-WA]
> LDT=0000 0000000000000000 ffffffff 00000000
> TR =0040 fffff880009bcec0 00000067 00008b00 DPL=0 TSS64-busy
> GDT= fffff880009c34c0 0000007f
> IDT= fffff880009c3540 00000fff
> CR0=80050031 CR2=fffff8800121ca30 CR3=0000000000187000 CR4=000006f8
> DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
> DR6=00000000ffff0ff0 DR7=0000000000000400
> EFER=0000000000000d01
> FCW=027f FSW=3800 [ST=7] FTW=80 MXCSR=00001f80
> FPR0=9fc0000000000000 4008 FPR1=0000000000000000 0000
> FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
> FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
> FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
> XMM00=99b6438668a3a8ed8cfd2d2540e9389a XMM01=00000000000000000000000000000000
> XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
> XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
> XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
> XMM08=00000000000000000000000000000000 XMM09=00000000000000000000000000000000
> XMM10=00000000000000000000000000000000 XMM11=00000000000000000000000000000000
> XMM12=00000000000000000000000000000000 XMM13=00000000000000000000000000000000
> XMM14=00000000000000000000000000000000 XMM15=00000000000000000000000000000000
>
>
>
> > (qemu) x/100i 0xfffff80001575d59 - 35
> virsh # qemu-monitor-command 2 "x/100i 0xfffff80001575d59 - 35"
> 0xfffff80001575d36: mov %ebp,0x18(%rsp)
> 0xfffff80001575d3a: push %rsi
> 0xfffff80001575d3b: push %rdi
> 0xfffff80001575d3c: push %r12
> 0xfffff80001575d3e: sub $0x30,%rsp
> 0xfffff80001575d42: mov %cr8,%rbx
> 0xfffff80001575d46: mov $0x2,%ecx
> 0xfffff80001575d4b: cmp %cl,%bl
> 0xfffff80001575d4d: ja 0xfffff80001575d67
> 0xfffff80001575d4f: cmpq $0x0,0x1598d1(%rip) # 0xfffff800016cf628
> 0xfffff80001575d57: je 0xfffff80001575d5d
> 0xfffff80001575d59: pause

rip points here, reasonable for a spin loop, but what it's spinning on,
I can't imagine.

Maybe some bug in kvm caused Windows to spin here endlessly and that's
what's causing the problem, this is consistent with you not reproducing
it on the test machine.

> hence I disabled KSM.
> here's perf top then, checkdisk is still slow:
> 412.00 8.6% do_raw_spin_lock [kernel.kallsyms]

$ perf record -a -f -g
$ perf report -g

will show who calls do_raw_spin_lock.

> 235.00 4.9% send_mono_rect /usr/bin/qemu-kvm
> 215.00 4.5% rb_next [kernel.kallsyms]
> 166.00 3.5% schedule [kernel.kallsyms]

What's the context switch rate? 'vmstat 1'

> 141.00 3.0% add_preempt_count [kernel.kallsyms]
> 137.00 2.9% gen_rotc_rm_T1 /usr/bin/qemu-kvm

Do you have a guest running with kvm disabled?!

> 127.00 2.7% vmx_vcpu_run /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm-intel.ko

That's guest time. Puny.

> 120.00 2.5% kvm_mmu_prepare_zap_page /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm.ko

Could be a couple of things.

--
error compiling committee.c: too many arguments to function