From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YTpEA-000278-Mt for qemu-devel@nongnu.org; Fri, 06 Mar 2015 05:11:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YTpE6-0001My-3R for qemu-devel@nongnu.org; Fri, 06 Mar 2015 05:11:30 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:19826) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YTpE5-0001MT-Ak for qemu-devel@nongnu.org; Fri, 06 Mar 2015 05:11:26 -0500 Message-ID: <54F97CB5.2030204@huawei.com> Date: Fri, 6 Mar 2015 18:08:53 +0800 From: zhanghailiang MIME-Version: 1.0 References: <1425466773-8532-1-git-send-email-zhang.zhanghailiang@huawei.com> <874mq0u252.fsf@blackfin.pond.sub.org> In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] vl: Adjust the place of processing '-mon' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell , Markus Armbruster Cc: hangaohuai@huawei.com, peter.huangpeng@huawei.com, Xiangyou Xie , QEMU Developers , "Gonglei (Arei)" , Paolo Bonzini On 2015/3/6 17:51, Peter Maydell wrote: > On 5 March 2015 at 02:02, Markus Armbruster wrote: >> zhanghailiang writes: >> >>> From: Xiangyou Xie >>> >>> If VM is configured with large size of hugepage, when startup, >>> it will consume lots of time to zero the hugepage memory in the function >>> 'os_mem_prealloc'. >>> Libvirtd will wait 30 seconds for qemu to establish the monitor, >>> If the timeout triggers, libvirtd will send TERM signal to kill qemu. >>> >>> To solve the problem, adjust the processing of '-mon' to the ahead of '-object'. >>> >>> Signed-off-by: Xiangyou Xie >>> Signed-off-by: zhanghailiang >>> --- >>> vl.c | 8 ++++---- >>> 1 file changed, 4 insertions(+), 4 deletions(-) >>> >>> diff --git a/vl.c b/vl.c >>> index 86bdce0..d0c03fe 100644 >>> --- a/vl.c >>> +++ b/vl.c >>> @@ -4000,6 +4000,10 @@ int main(int argc, char **argv, char **envp) >>> exit(0); >>> } >>> >>> + if (qemu_opts_foreach(qemu_find_opts("mon"), mon_init_func, NULL, 1) != 0) { >>> + exit(1); >>> + } >>> + >>> if (qemu_opts_foreach(qemu_find_opts("object"), >>> object_create, NULL, 0) != 0) { >>> exit(1); >>> @@ -4154,10 +4158,6 @@ int main(int argc, char **argv, char **envp) >>> >>> parse_numa_opts(); >>> >>> - if (qemu_opts_foreach(qemu_find_opts("mon"), mon_init_func, NULL, 1) != 0) { >>> - exit(1); >>> - } >>> - >>> if (foreach_device_config(DEV_SERIAL, serial_parse) < 0) >>> exit(1); >>> if (foreach_device_config(DEV_PARALLEL, parallel_parse) < 0) >> >> >> Errors after monitor initialization look n a monitor is on >> stdio: >> >> $ qemu -nodefaults -monitor stdio -vga xxx >> QEMU 2.2.50 monitor - type 'help' for more information >> (qemu) Unknown vga type: xxx >> $ >> >> This patch initializes monitors earlier, thus makes more errors look >> ugly. Do we care? > > Yeah, this doesn't seem great. Surely the actual problem here > is that we're doing something that takes 30 seconds to initialise > as part of our command line option parsing phase ? > Yes, it is the problem of memset() in os_mem_prealloc, if we configure VM with large size memory (prealloc is also configured), it will consume lots of time. we can certainly do this consuming time work later, after command line option parsing phase, but this scenario is more easy. > -- PMM > > . >