From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Thibault Subject: Re: nested KVM slower than QEMU with gnumach guest kernel Date: Sun, 16 Nov 2014 23:18:28 +0100 Message-ID: <20141116221828.GA13123@type> References: <20141111185515.GA16376@type.youpi.perso.aquilenet.fr> <54629EFC.1050307@web.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="3V7upXqbjpZ4EhLz" Content-Transfer-Encoding: 8bit Cc: kvm@vger.kernel.org, gleb@kernel.org, pbonzini@redhat.com To: Jan Kiszka Return-path: Received: from domu-toccata.ens-lyon.fr ([140.77.166.138]:37954 "EHLO sonata.ens-lyon.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752800AbaKPWlv (ORCPT ); Sun, 16 Nov 2014 17:41:51 -0500 Content-Disposition: inline In-Reply-To: <54629EFC.1050307@web.de> Sender: kvm-owner@vger.kernel.org List-ID: --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hello, Jan Kiszka, le Wed 12 Nov 2014 00:42:52 +0100, a écrit : > On 2014-11-11 19:55, Samuel Thibault wrote: > > jenkins.debian.net is running inside a KVM VM, and it runs nested > > KVM guests for its installation attempts. This goes fine with Linux > > kernels, but it is extremely slow with gnumach kernels. > You can try to catch a trace (ftrace) on the physical host. > > I suspect the setup forces a lot of instruction emulation, either on L0 > or L1. And that is slower than QEMU is KVM does not optimize like QEMU does. Here is a sample of trace-cmd output dump: the same kind of pattern repeats over and over, with EXTERNAL_INTERRUPT happening mostly every other microsecond: qemu-system-x86-9752 [003] 4106.187755: kvm_exit: reason EXTERNAL_INTERRUPT rip 0xffffffffa02848b1 info 0 800000f6 qemu-system-x86-9752 [003] 4106.187756: kvm_entry: vcpu 0 qemu-system-x86-9752 [003] 4106.187757: kvm_exit: reason EXTERNAL_INTERRUPT rip 0xffffffffa02848b1 info 0 800000f6 qemu-system-x86-9752 [003] 4106.187758: kvm_entry: vcpu 0 qemu-system-x86-9752 [003] 4106.187759: kvm_exit: reason EXTERNAL_INTERRUPT rip 0xffffffffa02848b1 info 0 800000f6 qemu-system-x86-9752 [003] 4106.187760: kvm_entry: vcpu 0 The various functions being interrupted are vmx_vcpu_run (0xffffffffa02848b1 and 0xffffffffa0284972), handle_io (0xffffffffa027ee62), vmx_get_cpl (0xffffffffa027a7de), load_vmc12_host_state (0xffffffffa027ea31), native_read_tscp (0xffffffff81050a84), native_write_msr_safe (0xffffffff81050aa6), vmx_decache_cr0_guest_bits (0xffffffffa027a384), vmx_handle_external_intr (0xffffffffa027a54d). AIUI, the external interrupt is 0xf6, i.e. Linux' IRQ_WORK_VECTOR. I however don't see any of them, neither in L0's /proc/interrupts, nor in L1's /proc/interrupts... Samuel --3V7upXqbjpZ4EhLz Content-Type: application/octet-stream Content-Disposition: attachment; filename="trace.bz2" Content-Transfer-Encoding: base64 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 8wN608jG+TRUEMMU73e853veZwF+A+x7u/pWNqxtttjYtVjasbeeezu/PszMoMzLq/e/Nez4 rd3qkUREKPN8mDBiEITE0AIYJmeK3gKuuz3uq53su+6mVKiIiIhKM5+TBA0xMabGxZzOZzMx NomCVKq2RbEIl7ba/Iezme4AJsQgbEwbBstnp7Ou+Dq97am1pXereNzkawAEwbEDBiBMbYgT auv1jNdM8IKBU0pR+Pve97d4vZnvZnuCG2IYwaY2xNmszumd+37dqareK709nZN1EN0NsTG2 P73vCBibGCBg3ni/s+qqm5np955kzn2WcvtoAADtqBkAwQAANgACEC9OmdP2Zmfb19PZPG57 NmrU2cIGxsQDbGxMABg23h6r7Kqt6Zm77fZPdN3i7ybbafNsTECabbGxB6nu1V5szZx7bruv e3TN280ptJJJNuyyI0QMBVWJIxKO1gebZLttSQFtatkkdb3fJAEtUgHzhpRdFgELRJlNIDDZ uvW4iSSUm0o21UkorVTAH+ObvviPjamj7x8H7KOD4KgIbp1MkvdbElG+vJTciSNS5LJABXqW tjS7Gwwt2Mybsk4xZOPG7LmVZVsyvdPql+9Knd8tma9kzN+cJREfqoFCSD1BUQe6+qih4FVU HwKqoPoXWttudOAAAAdOnb17Ozt7ne7O93evd779MzrcmXdevqt+rzTTbababbegxlhUQAm7 siWuikny2Tm38Oc5znJ3ve53vedzvYivSxttNNNNNNNttl7Od9uZn17y6/Xt5ddvqnXKbbTb TbTbbbbdZ66uzM9W57t2s9Xc8zldcPG2m2m2m2m2m37PeqoAIKCEylx1TY+XU8zudzM7nMn4 v10TmJF/dXj87MrPzarUS5z1fjvsjE0mmmmmmsL67ud96uwJys3czjBzy1OG222221nMx+8Z HUkooSBuSc20Rw2+czMzudzGm222xdZ1VM0XOd3t96atyqttNttttNpptpgTW913d919mVW2 TddfCq8302STUkd2xCu1QiGRQw+rAddjRJYpwv8w0mfffZiSVbb+97L5tsm1Ik2GoSCat2CI 4vFpKqsmJK1Ey75IVpyNq8xqs7utFIukG+iSSspNNbttMT3Zsi3dlkApEV8221HfR1+m7JJL B627ob1srdfrQq+JgXlF5VD1TSDyI8HaaZczs5PZmGP9fRGL5KP2JRER0ptpttNNNNNNP0+9 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 --3V7upXqbjpZ4EhLz--