如何在特定NUMA内存节点上实例化C++对象?
问题描述:
简单的C代码可以使用libnuma
库在NUMA系统中的特定内存节点中分配内存。例如,它可以使用以下功能完成:如何在特定NUMA内存节点上实例化C++对象?
void *numa_alloc_onnode(size_t size, int node)
如何在一些内存节点中实例化一个类?一种方法,我能想到的是:
numa_set_membind(<nodemask>);
o = new Object();
numa_set_localalloc();
这项工作?
答
Placement new是你在找什么。例如:
void *blob = numa_alloc_onnode(sizeof(Object), ...);
Object *object = new(blob) Object;
虽然要小心对齐要求。 –
你如何取消分配? –
此外,显然必须使用'numa_free()'来释放,所以要完成: 'object->〜Object(); numa_free(blob);' – shoban