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

Nikola Ciprich
2011-01-06T13:58:25Z

> 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
0xfffff80001575d5b: jmp 0xfffff80001575d4f
0xfffff80001575d5d: mov %cr8,%rax
0xfffff80001575d61: mov %rcx,%cr8
0xfffff80001575d65: mov %al,%bl
0xfffff80001575d67: mov %gs:0x20,%rdi
0xfffff80001575d70: xor %r9d,%r9d
0xfffff80001575d73: btl $0x10,0xe38c9(%rip) # 0xfffff80001659644
0xfffff80001575d7b: jae 0xfffff80001575d95
0xfffff80001575d7d: mov $0x1,%sil
0xfffff80001575d80: rdtsc
0xfffff80001575d82: mov 0x4700(%rdi),%r12d
0xfffff80001575d89: shl $0x20,%rdx
0xfffff80001575d8d: or %rdx,%rax
0xfffff80001575d90: mov %rax,%rbp
0xfffff80001575d93: jmp 0xfffff80001575da2
0xfffff80001575d95: mov 0x50(%rsp),%rbp
0xfffff80001575d9a: mov 0x50(%rsp),%r12d
0xfffff80001575d9f: xor %sil,%sil
0xfffff80001575da2: incl 0x4b00(%rdi)
0xfffff80001575da8: lock btsq $0x0,0x159876(%rip) # 0xfffff800016cf628
0xfffff80001575db2: jae 0xfffff80001575dd1
0xfffff80001575db4: lea 0x15986d(%rip),%rcx # 0xfffff800016cf628
0xfffff80001575dbb: callq 0xfffff8000148c1c0
0xfffff80001575dc0: incl 0x4b04(%rdi)
0xfffff80001575dc6: add %eax,0x4b08(%rdi)
0xfffff80001575dcc: mov %eax,%r9d
0xfffff80001575dcf: jmp 0xfffff80001575dd4
0xfffff80001575dd1: lfence
0xfffff80001575dd4: test %sil,%sil
0xfffff80001575dd7: je 0xfffff80001575e01
0xfffff80001575dd9: rdtsc
0xfffff80001575ddb: shl $0x20,%rdx
0xfffff80001575ddf: lea 0x159842(%rip),%rcx # 0xfffff800016cf628
0xfffff80001575de6: movb $0x0,0x28(%rsp)
0xfffff80001575deb: or %rdx,%rax
0xfffff80001575dee: mov %r12d,0x20(%rsp)
0xfffff80001575df3: mov %eax,%r8d
0xfffff80001575df6: mov %rax,%rdx
0xfffff80001575df9: sub %ebp,%r8d
0xfffff80001575dfc: callq 0xfffff80001560f10
0xfffff80001575e01: mov 0x60(%rsp),%rbp
0xfffff80001575e06: mov %bl,0x159818(%rip) # 0xfffff800016cf624
0xfffff80001575e0c: mov 0x58(%rsp),%rbx
0xfffff80001575e11: add $0x30,%rsp
0xfffff80001575e15: pop %r12
0xfffff80001575e17: pop %rdi
0xfffff80001575e18: pop %rsi
0xfffff80001575e19: retq
0xfffff80001575e1a: nop
0xfffff80001575e1b: nop
0xfffff80001575e1c: nop
0xfffff80001575e1d: nop
0xfffff80001575e1e: nop
0xfffff80001575e1f: nop
0xfffff80001575e20: sub $0x58,%rsp
0xfffff80001575e24: mov %r8b,0x40(%rsp)
0xfffff80001575e29: xor %eax,%eax
0xfffff80001575e2b: movb $0x1,0x38(%rsp)
0xfffff80001575e30: cmp %al,0x10(%rdx)
0xfffff80001575e33: mov %rax,0x30(%rsp)
0xfffff80001575e38: mov 0x14(%rdx),%eax
0xfffff80001575e3b: mov %eax,0x28(%rsp)
0xfffff80001575e3f: mov 0x20(%rdx),%rax
0xfffff80001575e43: lea 0x8(%rdx),%r9
0xfffff80001575e47: mov %rdx,%r8
0xfffff80001575e4a: mov 0x18(%rdx),%rdx
0xfffff80001575e4e: mov %rax,0x20(%rsp)
0xfffff80001575e53: je 0xfffff80001575e5c
0xfffff80001575e55: callq 0xfffff8000147b73c
0xfffff80001575e5a: jmp 0xfffff80001575e61
0xfffff80001575e5c: callq 0xfffff8000147b144
0xfffff80001575e61: add $0x58,%rsp
0xfffff80001575e65: retq
0xfffff80001575e66: nop
0xfffff80001575e67: nop
0xfffff80001575e68: nop
0xfffff80001575e69: nop
0xfffff80001575e6a: nop
0xfffff80001575e6b: nop
0xfffff80001575e6c: nop
0xfffff80001575e6d: nop
0xfffff80001575e6e: nop
0xfffff80001575e6f: nop
0xfffff80001575e70: mov %rbx,0x10(%rsp)
0xfffff80001575e75: mov %rbp,0x18(%rsp)
0xfffff80001575e7a: mov %rsi,0x20(%rsp)
0xfffff80001575e7f: push %rdi
0xfffff80001575e80: push %r12

> It's actually decelerated by synchronized_srcu_expedited(). It's one
> area which got a large slowdown as the price for the great scalability
> we achieved with srcu.
>
> But wait, this doesn't make sense. If we see mmio to vga, then bank
> switching is not involved, yet I see huge latencies on writes to vga io
> ports.
>
> Please install the qemu debuginfo package (if you built it yourself, I
> hope it was with debug symbols enabled) and run 'perf top'.
sure, here it is. it showed a lot of KSM activity:
2276.00 12.1% memcmp_pages [kernel.kallsyms]
1613.00 8.6% ksm_scan_thread [kernel.kallsyms]
hence I disabled KSM.
here's perf top then, checkdisk is still slow:
412.00 8.6% do_raw_spin_lock [kernel.kallsyms]
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]
141.00 3.0% add_preempt_count [kernel.kallsyms]
137.00 2.9% gen_rotc_rm_T1 /usr/bin/qemu-kvm
127.00 2.7% vmx_vcpu_run /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm-intel.ko
120.00 2.5% kvm_mmu_prepare_zap_page /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm.ko
103.00 2.2% sub_preempt_count [kernel.kallsyms]
102.00 2.1% debug_smp_processor_id [kernel.kallsyms]
87.00 1.8% delay_tsc [kernel.kallsyms]
62.00 1.3% cpupri_set [kernel.kallsyms]
60.00 1.3% vmcs_readl /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm-intel.ko
59.00 1.2% cpu_stopper_thread [kernel.kallsyms]
57.00 1.2% select_nohz_load_balancer [kernel.kallsyms]
56.00 1.2% memset /lib64/libc-2.5.so
52.00 1.1% alloc_vmap_area [kernel.kallsyms]
50.00 1.0% copy_user_generic_string [kernel.kallsyms]
46.00 1.0% gfn_to_memslot /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm.ko
38.00 0.8% is_shadow_present_pte /lib/modules/2.6.36lb.03/kernel/arch/x86/kvm/kvm.ko
38.00 0.8% read_tsc [kernel.kallsyms]
35.00 0.7% sched_clock_local [kernel.kallsyms]
35.00 0.7% sched_clock [kernel.kallsyms]
35.00 0.7% cirrus_fill_src_or_dst_32 /usr/bin/qemu-kvm
33.00 0.7% cpu_stop_signal_done [kernel.kallsyms]
33.00 0.7% gen_rot_rm_T1 /usr/bin/qemu-kvm
31.00 0.7% do_raw_spin_unlock [kernel.kallsyms]
30.00 0.6% __enqueue_rt_entity [kernel.kallsyms]
30.00 0.6% gen_shift_rm_T1 /usr/bin/qemu-kvm
29.00 0.6% load_balance [kernel.kallsyms]
29.00 0.6% sched_clock_cpu [kernel.kallsyms]
29.00 0.6% _raw_spin_unlock_irqrestore [kernel.kallsyms]
28.00 0.6% __might_sleep [kernel.kallsyms]
28.00 0.6% finish_task_switch [kernel.kallsyms]
28.00 0.6% pick_next_task_rt [kernel.kallsyms]
28.00 0.6% tick_nohz_restart_sched_tick [kernel.kallsyms]
.
.
.

>
> I'm no longer sure this is the problem.
>
> --
> error compiling committee.c: too many arguments to function
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html