开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

配置文件

配置文件路径:/opt/hlc/conf/hlc_config.json。

表1 配置文件配置项说明

所属模块

配置项内容

配置项名称

默认值

取值范围

类型

是否影响性能

infra

节点在集群中的位置

node_location

1

0-7(不同client需配置不同位置)

uint

否

集群中节点数量

node_num

2

1-8

uint

否

每条任务统计的时延最大数

latency_stat_num

1024

1-1,048,576

uint

不影响主要任务性能

日志等级

hlc_log_level

0

[0|1|2|3] (debug| info | warn | error)

uint

否

统计信息打印开关

stat_printf_switch

0

[0 | 1](关/开)

uint

不影响主要任务性能

统计信息打印周期

stat_printf_cycle

5

1-300s

uint

不影响主要任务性能

Timer模块绑核核心

timer_cpu_core

[1,2,3]

不和主进程绑相同核心

list

否

共享内存亲和numa

bind_numa

-1

-1 - 3

int

影响send,recv性能

mpa

hlc加速协议

hlc_protocol

3

0-3(0:none 1:tcp 2:udp 3:tcp&udp)

uint

否

HLC支持的最小端口

hlc_min_port

50000

1025 - 65535

(需保证此项配置在每端都一致)

uint

否

HLC支持的最大端口

hlc_max_port

51023

hlc_min_port-65535

(需保证此项配置在每端都一致)

uint

否

tcp支持的最小端口

hlc_tcp_min_port

50000

1025 - 65535

(需保证此项配置在每端都一致)

uint

否

tcp支持的最大端口

hlc_tcp_max_port

51023

hlc_tcp_min_port - 65535

(需保证此项配置在每端都一致)

uint

否

udp复用端口

reuse_ports

[]

hlc_min_port - hlc_max_port

list

否

端口最大复用次数

max_reuse_times

1

0-2

uint

是

HLC最小随机端口

min_random_port

50000

hlc_min_port-hlc_max_port

uint

否

HLC最大随机端口

max_random_port

51023

hlc_min_port-hlc_max_port

uint

否

ip白名单

white_list

[]

合法IP地址

list

否

白名单开关

white_list_switch

0

[0 | 1](关/开)

uint

否

ip黑名单

black_list

[]

合法IP地址

list

否

黑名单开关

black_list_switch

0

[0 | 1](关/开)

uint

否

端口黑名单

black_list_ports

[]

hlc_min_port-hlc_max_port

list

否

本端网口IP(虚拟IP)

ip

127.0.0.1

合法IP地址,建议配置为本机网口ip

string

否

HLC支持的远端最小ip

min_remote_ip

127.0.0.1

需包含本端ip地址

(需保证此项配置在每端都一致,且max,min尽量在同一网段,即配置的范围不超过255)

string

影响udp sendto性能

HLC支持的远端最大ip

max_remote_ip

127.0.0.100

需包含本端ip地址

(需保证此项配置在每端都一致,且max,min尽量在同一网段,即配置的范围不超过255)

string

影响udp sendto性能

udp组播支持的远端最小ip

min_remote_multicast_ip

225.0.0.1

合法IP地址

(需保证此项配置在每端都一致,且max,min在同一子网)

string

影响udp sendto性能

udp组播支持的远端最大ip

max_remote_multicast_ip

225.0.0.100

合法IP地址

(需保证此项配置在每端都一致,且max,min在同一子网)

string

影响udp sendto性能

I/O多路复用在阻塞模式下的自旋轮询时间

muxer_spin_usec

32

1-2147483647

uint

否

io多路复用在阻塞模式下的最大sleep阻塞时间

muxer_max_usleep

0

0-2147483647

uint

否

非阻塞链接线程使用的CPU核

nonblock_connect_cpu_cores

[1,2,3]

不和主进程绑相同核心

list

否

ubr模块

dataQ大小

data_queue_size

4

4-128 (MB)

uint

影响send,recv性能

dataQ长度与触发更新tail时读取的数据量之间比例

tail_update_after_read

8

1-1024

uint

影响send,recv性能(性能调优)

ST/LD指令的flying_io时间

flying_io_timeout

1

1-30(s)

uint

不影响断链性能

断链时查询eventQ状态定时器时间

event_queue_timer_interval

10

1-1000(ms)(取值范围需小于disconnect_timeout)

uint

影响断链性能

建链超时时间

connect_timeout

10

10-30(s)

uint

不影响正常建链性能

断链超时时间

disconnect_timeout

1

1-30(s)

uint

不影响正常断链性能

UBR_Mgr管理的UB_TRX最大数量

ubr_max_managed_num

1024

1-1024

uint

否

UBR_Mgr管理的UBR_Listener最大数量

ubr_max_listener_num

16

1-1024

uint

否

链路心跳检测后台任务的执行时间间隔

heartbeat_timer_interval_sec

1

1-100

uint

否

链路心跳故障重试次数

heartbeat_timer_retry

3

3-10

uint

否

通过“数控分离”模式发送的最小数据包大小

multiblock_send_package_size

2048

0-2147483647

uint

影响send,recv性能(性能调优)

shm(临时配置)

shm类型

shm_type

2

[0|1|2] (0:UB 1:IPC 2:UBS)

uint

否

shm接力flag开关

shm_wr_delay_comp_switch

0

[0|1] (0:接力模式;1:非接力模式)

uint

否

一、latency_stat_num对打印的影响说明

统计时延开关打开时,当latency_stat_num>10000,仅打印全量时延数据。当latency_stat_num<=10000,会打印avg、p50等统计时延数据以及全量时延数据。

二、timer_cpu_core对性能的影响说明

在低IOPS场景建议进程业务核和timer核配置到同一CPU cluster内。

默认配置中,业务核和后台timer核位于不同的NUMA Node、cluster。后台timer核每隔固定一段时间唤醒,访问部分和业务线程共享的数据,导致业务核的cache失效。由于后台timer是固定时间唤醒,在低IOPS下对RTT时延更明显。通过将业务核和后台timer核绑定到同一cluster上,可避免cache失效的问题。

三、data_queue_size大小对时延影响

data_queue_size表示申请链路共享内存的大小,ubse配置文件/etc/ubse/ubse.conf中obmm.memory.block.size配置代表能够申请的最小共享内存粒度。

  1. obmm.memory.block.size > data_queue_size,申请的共享内存大小为ubse.conf配置的obmm.memory.block.size大小(例如obmm.memory.block.size=128,data_queue_size=4,申请最小共享内存大小为128MB)。
  2. obmm.memory.block.size <= data_queue_size,申请的共享内存大小为hlc_config.json配置的data_queue_size。
  3. 综合来看,HLC的data_queue_size大小对业务场景的时延及吞吐有较大影响。在包大小为256Byte场景下,随着data_queue_size增加,时延会增大10%-20%(当前增大范围仅供参考,具体数据需要根据使用场景的包大小、包率等综合评估调整)。默认最小值4MB适用于证券小包场景(如报文在几百字节内),其他场景需要针对性评估影响。

    HLC将UB-Mem以RingBuffer方式循环使用,并支持使用data_queue_size配置项修改其大小。单段RingBuffer内存大小会影响其使用过程中的cache hit rate和dTLB hit rate。以dTLB hit rate为例,当内存较大时,需要的TLB表项会更多,TLB空间有限,会导致严重的dTLB cache miss,使时延增加;反之,减少TLB miss有助于降低时延,提高稳定性。对于RingBuffer随着大小增加,其容量也会增加,HLC受RingBuffer空间不足导致的停顿时间与次数会相应改善(还受更新tail指针的阈值影响),这在一定程度上能提高单生产单消费业务模型的吞吐。

表2 HLC不同data_queue_size时延基线(iops=10000),说明了不同data_queue_size大小对时延的影响
  

avg(ns)

p50(ns)

p99(ns)

4M

541

535

695

8M

547

540

685

16M

546

535

690

32M

629

625

760

64M

626

625

745

128M

631

635

750