Skip to content

配置说明

no_one edited this page Apr 29, 2020 · 2 revisions

简介

CppNet的配置项都设置在CNConfig文件中,都有设置项都声明为静态常量。
为什么没有将配置项单独设置在一个配置文件里,而是编写进程序里呢?首先将配置项放置在配置文件中,肯定是最灵活的,但是这种灵活性真的是我们所需要的吗?抑或这些配置真的需要如此灵活的配置吗?CppNet的配置项里有很多改变行为的配置,我思量这些配置应该是编译时候就可以确定的,而不需要每次部署的时候都进行灵活的更改,故而在编译时就将配置项确定。但是也有些应该放到配置文件里的配置项,也混杂在了这里,之后会将其拆分出来(TODO)。

说明

公有配置:
__mem_block_size:大块内存(即BlockMemoryPool)池中每个内存块的大小,在CppNet中还表示环形缓存链表中一个节点的大小,最终会被8字节对齐。其值越大,缓存池中内存越大,但是环形缓存数据交互效率增高。这是空间与时间的博弈。
__mem_block_add_step: 上文所述大块内存池每次增加内存块时增加的数量。
__max_block_num:大块内存池中空闲内存块数量限制,当超过此数量时会释放一般的空闲内存块。
__addr_str_len:socket中缓存对端地址的缓存大小,ipv4与ipv6不同。

日志相关:
__log_level:日志等级。
__log_file_name: 日志文件名。
__open_log: 是否开启日志打印。

Linux平台生效配置:
__per_handle_thread:每个线程都独享一个epoll句柄。
__linux_read_buff_expand_len:读取数据时,如果环形缓存空间不足,则在此基础上增加缓存,读取的循环内每次翻倍增加申请内存的大小。
__linux_read_buff_expand_max:上述配置项增加缓存的增加上限,即当每次增加的缓存大小大过此值之后,不在增加。详情查看SocketImpl的Recv函数。
__linux_write_buff_get:配合writev接口,缓存内存写入时扩充的缓存大小。

Windows平台生效配置:

__iocp_buff_size: iocp投递读写事件缓存块大小,每次只能和IOCP交互这么多的数据量。大了浪费空间,小了浪费时间。

Clone this wiki locally