编译环境

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

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

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

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

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

aarch64系统

华为泰山服务器

    1. kylin@kylinos:~/git$ lscpu
    2. Architecture: aarch64
    3. Byte Order: Little Endian
    4. CPU(s): 2
    5. On-line CPU(s) list: 0,1
    6. 每个核的线程数:1
    7. 每个座的核数: 2
    8. Socket(s): 1
    9. NUMA 节点: 1
    10. L1d 缓存: 64K
    11. L1i 缓存: 64K
    12. L2 缓存: 512K
    13. L3 缓存: 32768K
    14. NUMA node0 CPU(s): 0,1

银河麒麟OS

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

aarch32系统

树莓派4B

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

树莓派官方OS

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

TDengine的编译方式

一、make方式

1、从github 获取 TDengine工程:

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

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

    1. ~/git$ cd TDengine
    2. ~/git/TDengine$ mkdir debug
    3. ~/git/TDengine$ cd debug

如果是aarch64:

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

如果是aarch32:

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

然后进行make,

    1. ~/git/TDengine/debug$ sudo make

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

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

二、打包方式

1、从github获取TDengine工程:

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

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

    1. ~/git$ cd TDengine

如果是aarch64:

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

如果是aarch32:

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

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

aarch64安装包:

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

aarch32安装包:

    1. ~/git/TDengine$ ll release/
    2. -rw-r--r-- 1 root root 1026874 2 9 16:58 TDengine-client-1.6.6.0-Linux-aarch32.tar.gz
    3. -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:

    1. create database demo tables 100 cache 16384 ablocks 4

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