编译环境
TDengine产品支持ARM平台,目前的开发调试的环境如下:
aarch64:华为泰山ARM云服务器上,OS是银河麒麟。
aarch32:树莓派4B,OS是raspberrypi 4.19。
以下描述都是基于该环境的的操作结果。其他环境没有验证过,如果在其他环境(比如不同的ARM CPU或其他OS),可能会出现一些环境相关的问题,请在TDengine的github上提交issue。
由于时间关系,还没有完成交叉编译的验证,后续会基于主流的开源交叉编译工具进行ARM版本的编译。也欢迎感兴趣的开发者参与,成为TDengine的贡献者。
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版本的缺省配置。