PooledByeBufAllocator中arena的大小默认值是cpu的两倍和在创建worker线程的大小有关系吗?
来源:7-6 PooledByteBufAllocator概述

慕粉3520842
2018-06-27
在创建worker线程的时候,如果不给线程数,创建的默认也是cpu核心数两倍的NioEventLoop,老师这里说的是不是和arena的大小和NioEventLoop是对应的吗?如果是对应的,这两个有什么关系,为什么要做对应了,还有就是假如我设置了worker的NioEventLoop和arena大小不一致,比如我NioEventLoop是10, 而arena是4会导致什么情况呢,谢谢老师解答一下!!
写回答
1回答
-
默认情况下,如果内存较大的化,两者是一一对应的,一个NioEventLoop对应一个arena,关于全局area个数的计算参考PooledByteBufAllocator类中的DEFAULT_NUM_DIRECT_ARENA,与系统总内存大小也有关系,大多数情况下是2*cpu,与NioEventLoop个数保持一致
如果NioEventLoop个数大于area个数,那么势必会有多个NioEventLoop共享一个area,这样的话就会有多线程竞争同一个area来分配内存,造成性能下降012018-06-28
相似问题