[dpdk-dev] [DPDK-memory] how qemu waste such long time under dpdk huge page envriment?

Sam batmanustc at gmail.com
Fri Jun 16 10:11:14 CEST 2017


Hi all,

I'm running `QEMU_CMD ...` to create a vm under dpdk huge page envriment
(which set huge page 1G). And I enable all events in qemu.

For qemu and ovs-dpdk(ovs-2.4.9 with dpdk-2.2.0) environment, detail log is:

> 30012 at 1497443246.678304:object_dynamic_cast_assert
qemu:memory-region->qemu:memory-region (/home/hu
> anghuai/cloud/contrib/qemu-2.6.0/memory.c:1076:memory_region_initfn)
> 30012 at 1497443256.274866:object_dynamic_cast_assert
qio-channel-socket->qio-channel-socket (io/chann
> el-socket.c:389:qio_channel_socket_init)


I don't know why qemu doing 'memory_region_initfn' function in this 10
second, does anyone know this?

static void memory_region_initfn(Object *obj)
> {
>     MemoryRegion *mr = MEMORY_REGION(obj);
>     ObjectProperty *op;
>     mr->ops = &unassigned_mem_ops;
>     mr->enabled = true;
>     mr->romd_mode = true;
>     mr->global_locking = true;
>     mr->destructor = memory_region_destructor_none;
>     QTAILQ_INIT(&mr->subregions);
>     QTAILQ_INIT(&mr->coalesced);
>     op = object_property_add(OBJECT(mr), "container",
>                              "link<" TYPE_MEMORY_REGION ">",
>                              memory_region_get_container,
>                              NULL, /* memory_region_set_container */
>                              NULL, NULL, &error_abort);
>     op->resolve = memory_region_resolve_container;
>     object_property_add(OBJECT(mr), "addr", "uint64",
>                         memory_region_get_addr,
>                         NULL, /* memory_region_set_addr */
>                         NULL, NULL, &error_abort);
>     object_property_add(OBJECT(mr), "priority", "uint32",
>                         memory_region_get_priority,
>                         NULL, /* memory_region_set_priority */
>                         NULL, NULL, &error_abort);
>     object_property_add_bool(OBJECT(mr), "may-overlap",
>                              memory_region_get_may_overlap,
>                              NULL, /* memory_region_set_may_overlap */
>                              &error_abort);
>     object_property_add(OBJECT(mr), "size", "uint64",
>                         memory_region_get_size,
>                         NULL, /* memory_region_set_size, */
>                         NULL, NULL, &error_abort);
> }


Thank you~


More information about the dev mailing list