- 论坛徽章:
- 0
|
1)在程序中使用pthread_attr_setstacksize将线程stack设置为4096K.
运行时查看进程vm(虚拟内存),rss(驻留物理内存)如下
3$ ps -eo "pid,rss,vsz" | grep -E '\b3153\b'
3153 160076 3133412
通过ulimit查看系统默认stack size为10240Kb
$ulimit -a
stack size (kbytes, -s) 10240
2)同样的程序,同样的线程数目,但是使用ulimit -s 4096,程序运行时的vm却减少了将近一半
3$ ps -eo "pid,rss,vsz" | grep -E '\b25570\b'
25570 151992 1529144
$ulimit -a
stack size (kbytes, -s) 4096
问题是:
程序已经通过pthread_attr_setstacksize将stack size设置成为4096K,为什么ulimit设置的系统默认stack size会对运行时的整个virtual memory有如此大的影响?
根据我的理解,1)和2)无论是vm还是rss大小都应该一致,而不是1)的vm几乎是2)的一倍?
[ 本帖最后由 muare 于 2009-7-31 16:56 编辑 ] |
|