forked from thulab/iot-benchmark
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.properties
More file actions
313 lines (284 loc) · 13.4 KB
/
config.properties
File metadata and controls
313 lines (284 loc) · 13.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
########################################################
#################### 测试基本配置 ########################
########################################################
################### 被测数据库配置 #######################
# 被测试的数据库,目前的格式为{name}{-version}{-insert mode}(注意-号)其全部参考值参见README文件
DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
# 主机列表,如果有多个主机则使用英文逗号进行分割
HOST=127.0.0.1
# 端口列表,需要和HOST数量一致,保持一一对应。如果有多个端口则使用英文逗号进行分割。
PORT=6667
# 所有被测数据库的用户名,如果为多个数据库,则要求保持一致
USERNAME=root
# 所有被测数据库的密码,如果为多个数据库,则要求保持一致
PASSWORD=root
# 即将被测试写入的数据库的名称
DB_NAME=test
# 数据库连接认证Token,InfluxDB 2.0使用
TOKEN=token
############### 数据库初始化:清理数据 ####################
# 测试启动前是否清理数据
IS_DELETE_DATA=true
# IS_DELETE_DATA = true 时生效,单位为ms,如果清理数据,则需要等待INIT_WAIT_TIME时间待数据库数据清理完成,当数据库为KairosDB, InfluxDb, OpenTSDB, TimescaleDB时必须
INIT_WAIT_TIME=1000
################### 数据源:Kafka #######################
KAFKA_LOCATION=127.0.0.1:9092
ZOOKEEPER_LOCATION=127.0.0.1:2181
TOPIC_NAME=test-topic
################## Benchmark配置 #######################
# 总操作次数:具体每种类型操作会按OPERATION_PROPORTION定义的比例划分,例如OPERATION_PROPORTION=1:1:1:1:1:1:1:1:1:1:1
LOOP=1000
# 目前Benchmark支持多种运行模式,支持模式如下
# testWithDefaultPath 常规测试模式,支持多种读和写操作的混合负载
# generateDataMode 生成数据模式,生成Benchmark本身识别的数据
# verificationWriteMode 单数据库正确性写入模式,需要配置 FILE_PATH 以及 DATA_SET
# verificationQueryMode 单数据库正确性查询模式,需要配置 FILE_PATH 以及 DATA_SET
# serverMODE 服务器资源使用监控模式(该模式下运行通过ser-benchmark.sh脚本启动,无需手动配置该参数)
BENCHMARK_WORK_MODE=testWithDefaultPath
# 是否启动Benchmark统计模块
USE_MEASUREMENT=true
# Benchmark的统计信息结果的精度,单位为%
RESULT_PRECISION=0.1
################ Benchmark:集群模式 ####################
# 是否在Benchmark集群模式下运行
BENCHMARK_CLUSTER=false
# 如果 BENCHMARK_CLUSTER=true, 则为当前Benchmark的编号
BENCHMARK_INDEX=0
# 在集群模式下:是否所有数据库都可见,如果可见则可以向其他数据库节点发送数据
IS_ALL_NODES_VISIBLE=false
################ Benchmark:双写模式 ####################
# 双写模式仅支持不同数据库之间进行比较,不支持同一个数据库不同版本进行双写
IS_DOUBLE_WRITE=false
# 另一个写入的数据库,目前的格式为{name}{-version}{-insert mode}(注意-号)其全部参考值参见README文件
ANOTHER_DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
# 另一个写入的数据库的主机
ANOTHER_HOST=127.0.0.1
# 另一个写入的数据库的端口
ANOTHER_PORT=6667
# 另一个写入的数据库的用户名
ANOTHER_USERNAME=root
# 另一个写入的数据库的密码,如果为多个数据库,则要求保持一致
ANOTHER_PASSWORD=root
# 另一个写入的数据库的名称
ANOTHER_DB_NAME=test
# 另一个数据库认证使用的Token,目前仅限于InfluxDB 2.0使用
ANOTHER_TOKEN=token
# 是否将两个数据库中的查询结果集进行比较
IS_COMPARISON=false
# 是否进行两个数据库间点对点数据对比,为真时OPERATION_PROPORTION不生效
IS_POINT_COMPARISON=false
# 点对点验证的批量验证大小,单位为一个batch的时间跨度
VERIFICATION_STEP_SIZE=10000
########################################################
################## 数据模式基本配置 #######################
########################################################
############## 数据:设备、传感器、客户端 ##################
# 设备总数
DEVICE_NUMBER=5
# 实际写入设备比例,(0, 1]
REAL_INSERT_RATE=1.0
# 每个设备的传感器总数
SENSOR_NUMBER=10
# 各个传感器时间戳是否对齐
IS_SENSOR_TS_ALIGNMENT=true
# 当传感器不对齐时,每个设备的传感器的保留比例,(0, 1]
TS_ALIGNMENT_RATIO=1.0
# 是否将设备绑定给客户端,如果绑定,则客户端数小于等于设备数,否则可以大于
IS_CLIENT_BIND=true
# 客户端总数
CLIENT_NUMBER=5
############## 被测系统为IoTDB时扩展参数 ##################
# 是否使用thrift压缩,需要在iotdb的配置文件iotdb-engine.properties中设置rpc_thrift_compression_enable=true
ENABLE_THRIFT_COMPRESSION=false
# Device分配进入存储组的策略,目前支持
# hash 表示Device通过hash的方式分配到存储组中
# mod 表示Device通过对存储组数取模的方式平均分配到存储组中(相邻编号Device分散在不同存储组中)
# div 表示Device通过对存储组数取商的方式分配到存储组中(相邻编号Device集中在相同存储组中)
SG_STRATEGY=mod
# 存储组的数量
GROUP_NUMBER=20
# IoTDB核心线程池数量
IOTDB_SESSION_POOL_SIZE=50
# 是否使用template
TEMPLATE=false
# 是否使用vector
VECTOR=false
############## 被测系统为MS SQL SERVER时扩展参数 ##################
# 表压缩方式,NONE, ROW, PAGE
COMPRESSION=NONE
################### 操作时间配置 #########################
# 时间戳间隔,即生成的数据两个时间戳之间的固定长度(如果定长生成),非正常速率
POINT_STEP=5000
# 操作执行间隔:若当前操作耗时大于该间隔则马上执行下一个操作,否则等待 (OP_INTERVAL-实际执行时间) ms
# 如果值为-1,则于POINT_STEP一致
OP_INTERVAL=0
# 时间戳精度,均支持ms,只有IoTDB和InfluxDB支持us
TIMESTAMP_PRECISION=ms
#################### 数据相关参数 ########################
# 字符串规定长度
STRING_LENGTH=2
# 浮点数小数位数
DOUBLE_LENGTH=2
# 插入数据的数据类型的比例,BOOLEAN:INT32:INT64:FLOAT:DOUBLE:TEXT
INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
################ IoTDB相关元数据参数 #####################
# 压缩方式 UNCOMPRESSED | SNAPPY (仅对IoTDB有效)
COMPRESSOR=SNAPPY
# BOOLEAN: PLAIN/RLE
ENCODING_BOOLEAN=PLAIN
# INT32: PLAIN/RLE/TS_2DIFF/REGULAR
ENCODING_INT32=PLAIN
# INT64: PLAIN/RLE/TS_2DIFF/REGULAR
ENCODING_INT64=PLAIN
# FLOAT: PLAIN/RLE/TS_2DIFF/GORILLA
ENCODING_FLOAT=PLAIN
# DOUBLE: PLAIN/RLE/TS_2DIFF/GORILLA
ENCODING_DOUBLE=PLAIN
# TEXT: PLAIN
ENCODING_TEXT=PLAIN
################ 真实数据集:测试数据 #####################
# 如下两个参数,当且仅当BENCHMARK_MODE = verificationWriteMode 和 verificationQueryMode 时生效
# 数据文件地址
FILE_PATH=data/test
# 每个数据文件包含的Batch个数
BIG_BATCH_SIZE=100
############### 生成数据集:生成数据规律 ###################
# 线性
LINE_RATIO=1
# 傅里叶函数
SIN_RATIO=1
# 方波
SQUARE_RATIO=1
# 随机数
RANDOM_RATIO=1
# 常数
CONSTANT_RATIO=1
# 数据生成随机数种子
DATA_SEED=666
########################################################
#################### 操作基本配置 ########################
########################################################
################### 操作信息整体配置 #####################
# 各操作的比例,按照顺序为 写入:Q1:Q2:Q3:Q4:Q5:Q6:Q7:Q8:Q9:Q10, 请注意使用英文冒号。比例中的每一项是整数。
# Qi表示的查询如下:
# Q1 精确点查询 select v1... from data where time = ? and device in ?
# Q2 范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ?
# Q3 带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ?
# Q4 带时间过滤的聚合查询 select func(v1)... from data where device in ? and time > ? and time < ?
# Q5 带值过滤的聚合查询 select func(v1)... from data where device in ? and value > ?
# Q6 带值过滤和时间过滤的聚合查询 select func(v1)... from data where device in ? and value > ? and time > ? and time < ?
# Q7 分组聚合查询(GROUP BY)(暂时只能生成有一个时间区间的语句)
# Q8 最近点查询 select time, v1... where device = ? and time = max(time)
# Q9 倒序范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ? order by time desc
# Q10 倒序带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ? order by time desc
OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0
# 最长等待写时间,单位毫秒,即如果整个写操作在指定时间内没有返回,则终止此操作
WRITE_OPERATION_TIMEOUT_MS=120000
# 最长等待读时间,单位毫秒,即如果整个读操作在指定时间内没有返回,则终止此操作
READ_OPERATION_TIMEOUT_MS=300000
################## 操作信息:写入参数 ###################
# 批写入数据行数,每行是某个设备所有传感器在某一时间戳的数据,每个Batch写入数据点数=SENSOR_NUMBER * BATCH_SIZE_PER_WRITE
BATCH_SIZE_PER_WRITE=10
# 是否在写入数据前,创建SCHEMA
CREATE_SCHEMA=true
# 开始写入数据的时间戳
START_TIME=2018-9-20T00:00:00+08:00
######### 复制的生成模式,是否添加异常,异常率和异常倍率 ############
# verificationWriteMode模式下使用复制文件模式,此时必须将
# a.CLIENT_NUM设置为1; b.LOOP为复制的循环次数,即写入多少个BATCH;
# c.BATCH_SIZE_PER_WRITE 取csv中多少数据,默认100;最终每个BATCH的大小是BATCH_SIZE=min(BATCH_SIZE_PER_WRITE, len(csv))
# d.BIG_BATCH_SIZE设置为1,因为一个csv视为一个BATCH
# 同时需要在FILE_PATH目录下创建文件夹(d_0)并加入想要复制的csv文件,并在FILE_PATH中加入schema.txt,文件结构为
#+ FILE_PATH
# + d_0
# + *.csv 将第一列修改为如"Sensor,s_0,s_1,..."
# + schema.txt 每一行解释每个Sensor的Type,如"d_0 s_0 3\n d_0 s_1 4"
IS_COPY_MODE=true
IS_ADD_ANOMALY=true
ANOMALY_RATE=0.2
ANOMALY_TIMES=2
################## 操作信息:乱序写入 ###################
# 是否乱序写入
IS_OUT_OF_ORDER=false
# 乱序写入模式,目前如下2种
# POISSON 按泊松分布的乱序模式
# BATCH 批插入乱序模式
OUT_OF_ORDER_MODE=POISSON
# 乱序写入的数据的比例
OUT_OF_ORDER_RATIO=0.5
# 是否为等长时间戳
IS_REGULAR_FREQUENCY=true
# 泊松分布的期望和方差
LAMBDA=2200.0
# 泊松分布模型的随机数的最大值
MAX_K=170000
################ 操作信息:查询操作参数 ###################
# 在读写混合的场景下,是否优先查询最近写入的数据
IS_RECENT_QUERY=false
# 时间过滤条件的时间起点变化步长,若设为0则每个查询的时间过滤条件是一样的
STEP_SIZE=1
# 每条查询语句中查询涉及到的传感器数量
QUERY_SENSOR_NUM=1
# 每条查询语句中查询涉及到的设备数量
QUERY_DEVICE_NUM=1
# 在聚集查询中使用的聚集函数,比如count
QUERY_AGGREGATE_FUN=count
# 含起止时间的查询中开始时间与结束时间之间的时间间隔,和Group By中的时间间隔(单位按照精度决定)
QUERY_INTERVAL=250000
# 条件查询子句时的参数,where xxx > QUERY_LOWER_VALUE
QUERY_LOWER_VALUE=-5
# Group by语句中的组的大小
GROUP_BY_TIME_UNIT=20000
# 查询语句的随机数种子
QUERY_SEED=151658
################ Workload:相关参数 ######################
# workload的缓冲区的大小
WORKLOAD_BUFFER_SIZE=100
########################################################
#################### 输出结果配置 ########################
########################################################
# 结果持久化选择,支持None,IoTDB,MySQL和CSV
TEST_DATA_PERSISTENCE=None
############## 输出结果:输出数据库参数 ####################
# 数据库的IP地址
TEST_DATA_STORE_IP=127.0.0.1
# 数据库的端口号
TEST_DATA_STORE_PORT=6667
# 数据库的名称
TEST_DATA_STORE_DB=result
# 数据库用户名
TEST_DATA_STORE_USER=root
# 数据库用户密码
TEST_DATA_STORE_PW=root
# 数据库写超时,单位毫秒
TEST_DATA_WRITE_TIME_OUT=300000
# 数据库写入并发池最多限制
TEST_DATA_MAX_CONNECTION=1
# 对本次实验的备注,作为表名的一部分存入数据库(如MySQL)中,注意不要有.等特殊字符
REMARK=
############ 输出结果:MySQL数据库补充参数 #################
# 真实写入到MySQL数据库的比例
MYSQL_REAL_INSERT_RATE=1.0
################ 输出结果:CSV参数 #######################
# 是否将最终的结果写入到CSV
CSV_OUTPUT=true
# csv文件行数的上限
CSV_MAX_LINE=10000000
# 是否将结果划分后输出到多个csv文件
CSV_FILE_SPLIT=true
################# 输出结果:日志参数 ######################
# 是否使用静默模式,静默模式会关闭部分日志输出
IS_QUIET_MODE=true
# 测试过程日志的输出间隔,单位为秒
LOG_PRINT_INTERVAL=5
################## 监控模式相关参数 ######################
# 监控系统性能的网卡信息,比如 eth0
NET_DEVICE=e
# 被测数据库IoTDB的data文件夹位置,可以是多目录,多目录间用逗号分割
IOTDB_DATA_DIR=/home/iotdb/data/data
# 被测数据库IoTDB的写前日志文件夹位置
IOTDB_WAL_DIR=/home/iotdb/data/wal
# 被测数据库IoTDB的system文件夹位置
IOTDB_SYSTEM_DIR=/home/iotdb/data/system
# 系统性能输出间隔,间隔长度为MONITOR_INTERVAL + 2秒
MONITOR_INTERVAL=0