[dpdk-users] [dpdk-dev] [DPDK-memory] how qemu waste such long time under dpdk huge page envriment?
Bruce Richardson
bruce.richardson at intel.com
Fri Jun 16 10:59:35 CEST 2017
On Fri, Jun 16, 2017 at 04:26:40PM +0800, Sam wrote:
> BTW, while running ovs-dpdk, this log is also take long time, does that
> mean dpdk request large memory take long time?
>
> EAL: Setting up physically contiguous memory...
>
When running with 1G pages, I found that the mmap system call takes a
considerable amount of time to execute. I think this is due to the
kernel zero-ing out the 1G pages. IIRC on one system I measured it as taking
about 0.4 seconds per 1G page.
/Bruce
>
> 2017-06-16 16:11 GMT+08:00 Sam <batmanustc at gmail.com>:
>
> > 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 users
mailing list