最重要的是,我注意到我的c程序(使用CUDA 3.2)从一开始就每次运行都具有28g或更大的虚拟大小(从VIRT看)。这对我没有任何意义。常驻内存很有意义,在我最大的数据集上只有2g左右。我知道过去的某个时候虚拟大小不是很大,但是我不确定何时发生更改。
为什么我的进程将使用28g的虚拟内存(或者为什么top的VIRT会这么大)?我了解VIRT包含可执行二进制文件(仅437K),共享库和“数据区域”。什么是“数据区”?如何找出共享库需要多少内存?我的流程总内存中的其他元素呢?
/ proc / <pid> / smaps的内容(1022行)在这里:http ://pastebin.com/fTJJneXr
来自smap的条目之一显示其中一个占了它的大部分,但没有标签...我如何找出这个具有28gb的“空白”条目是什么?
200000000-900000000 ---p 00000000 00:00 0
Size: 29360128 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
-
ubuntu 11.04 64位
16 GB RAM
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句