TDengine ARM版本编译和配置

编译环境

TDengine Database支持ARM平台,目前的开发调试的环境如下:

aarch64:华为泰山ARM云服务器上,OS是银河麒麟。

aarch32:树莓派4B,OS是raspberrypi 4.19。

以下描述都是基于该环境的的操作结果。其他环境没有验证过,如果在其他环境(比如不同的ARM CPU或其他OS),可能会出现一些环境相关的问题,请在TDengine Database的GitHub上提交issue。

由于时间关系,还没有完成交叉编译的验证,后续会基于主流的开源交叉编译工具进行ARM版本的编译。也欢迎感兴趣的开发者参与,成为TDengine Database的贡献者。

aarch64系统

华为泰山服务器

kylin@kylinos:~/git$ lscpu
Architecture:          aarch64
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
每个核的线程数:1
每个座的核数:  2
Socket(s):             1
NUMA 节点:         1
L1d 缓存:          64K
L1i 缓存:          64K
L2 缓存:           512K
L3 缓存:           32768K
NUMA node0 CPU(s):     0,1

银河麒麟OS

kylin@kylinos:~/git$ uname -a
Linux kylinos 4.15.0-58-generic #64kord1k1 SMP Thu Aug 15 15:51:07 CST 2019 aarch64 aarch64 aarch64 GNU/Linux

aarch32系统

树莓派4B

pi@raspberrypi:~/git$ lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:   1
Core(s) per socket:   4
Socket(s):             1
Vendor ID:             ARM
Model:                 3
Model name:            Cortex-A72
Stepping:              r0p3
CPU max MHz:           1500.0000
CPU min MHz:           600.0000
BogoMIPS:              108.00
Flags:                 half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva vfpd32 lpae evtstrm crc32

树莓派官方OS

pi@raspberrypi:~/git$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

TDengine的编译方式

一、make方式

1、从github 获取 TDengine工程:

~/git$ git clone https://github.com/taosdata/TDengine.git

2、进入工程目录完成编译

~/git$ cd TDengine
~/git/TDengine$ mkdir debug
~/git/TDengine$ cd debug

如果是aarch64:

~/git/TDengine/debug$ sudo cmake .. -DCPUTYPE=aarch64

如果是aarch32:

~/git/TDengine/debug$ sudo cmake .. -DCPUTYPE=aarch32

然后进行make,

~/git/TDengine/debug$ sudo make

编译成功后,在build目录下会生成bin、lib两个目录,其中bin/taos、bin/taosd就是客户端和服务端的执行程序;lib目录里面库文件。

可以直接在bin目录下执行 ./taosd 启动服务端进程(使用缺省配置文件:/etc/taos/taos.cfg),执行./taos 启动客户端shell。

二、打包方式

1、从github获取TDengine工程:

~/git$ git clone https://github.com/taosdata/TDengine.git

2、进入工程目录,执编译、打包脚本:

~/git$ cd TDengine

如果是aarch64:

~/git/TDengine$ sudo ./packaging/release.sh -c aarch64

如果是aarch32:

~/git/TDengine$ sudo ./packaging/release.sh -c aarch32

命令成功完成后, TDengine服务端和客户端的tar压缩安装包生成在当前目录下的release目录中。

aarch64安装包:

~/git/TDengine$ ll release/
总用量 6884
drwxr-xr-x  2 root  root     4096 12月  4 16:58 ./
drwxrwxr-x 13 kylin kylin    4096 12月  4 16:58 ../
-rw-r--r--  1 root  root  4426874 12月  4 16:58 TDengine-client-1.6.6.0-Linux-aarch64.tar.gz
-rw-r--r--  1 root  root  2611591 12月  4 16:58 TDengine-client-1.6.6.0-Linux-aarch64.tar.gz

aarch32安装包:

~/git/TDengine$ ll release/
-rw-r--r--  1 root  root  1026874 2月  9 16:58 TDengine-client-1.6.6.0-Linux-aarch32.tar.gz
-rw-r--r--  1 root  root  1911591 2月  9 16:58 TDengine-server-1.6.6.0-Linux-aarch32.tar.gz

配置

ARM的配置方式与X64是完全一致的,请参见: 服务端配置 。但是在一般的嵌入式ARM系统中,内存都比较小,因此,TDengine支持用户可以根据不同的应用场景,通过配置参数来设置占用合适的内存大小。相关的参数如下:

  • tables:每个vnode允许创建表的最大数目
  • cache: 内存块的大小(字节数)
  • ablocks: 每张表平均的内存块数

内存占用大小计算:tables * cache * ablocks。举例,有下述SQL:

 create database demo tables 100 cache 16384 ablocks 4

该SQL创建了一个库demo, 每个vnode 允许创建100张表,内存块为16384字节,每个表平均占用4个内存块。主要的内存占用大小:100 * 4 * 16384 = 6.25MiB。这也是aarch32版本的缺省配置。