std :: vector保留并调整NUMA位置的大小

问题描述

我目前正在研究优化应用程序的NUMA位置。

到目前为止,我想我知道内存将驻留在分配后首次接触它的那个NUMA节点上。

关于std :: vector(使用默认分配器)的问题是:

  • std :: vector :: reserve分配新的内存-但是它也会触及吗?如果没有,我如何在预约电话后强制触摸它?
  • std :: vector :: resize是否触及内存?
  • 采用size_t的构造函数如何?

关于NUMA:

  • 如果已被触摸的内存被调出到磁盘上,然后再次被访问并产生硬故障,则算作新的第一次触摸还是页面被加载到驻留在numa节点上的内存中原来是最早接触它的?

  • 我正在使用c ++ 11线程。只要我在线程内并分配/触摸新内存,就可以确定所有这些内存都将驻留在同一个numa节点上,或者操作系统执行时操作系统是否可以在线程下切换正在执行的CPU然后我的一些分配将在一个NUMA域中,而其他分配将在另一个域中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)