浏览 1339 次
锁定老帖子 主题:R13B02的线程stack size设置
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-24
最后修改:2009-09-24
[root@localhost ~]# ulimit -s 10240 有10M这么大。 几十个线程就占用了大几百M的线性空间。对于3G地址,使用率非常低。 在最新发布的R13B02就专门解决这个问题: erl +A N +a StackSize 异步线程 默认是 ERTS_ASYNC_THREAD_MIN_STACK_SIZE #define ERTS_ASYNC_THREAD_MIN_STACK_SIZE 16 /* Kilo words */ #define ERTS_ASYNC_THREAD_MAX_STACK_SIZE 8192 /* Kilo words */ erl +S N:N +sss StackSize 调度器线程 默认是 -1, 由系统决定。 #define ERTS_SCHED_THREAD_MIN_STACK_SIZE 4 /* Kilo words */ #define ERTS_SCHED_THREAD_MAX_STACK_SIZE 8192 /* Kilo words */ 注意上面的单位是 WORD, 而不是BYTE. 通过微调pthread的stacksize,而不是使用系统默认的。 stack size (kbytes, -s) 8192 还有的4个辅助线程,erts已经把stack_size修改成最小了,各位无需担心。 R13B02为了支持最小的调度器线程堆栈,特地修改了部分BIF, 尽量不采用递归的方式, 减少了堆栈的使用。 当然最好的方法是使用64位操作系统,彻底回避这个问题。 结论:32位系统会比较快,但是有线性地址的限制,节约点是好事。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |