編譯環(huán)境
TDengine Database支持ARM平臺(tái),目前的開發(fā)調(diào)試的環(huán)境如下:
aarch64:華為泰山ARM云服務(wù)器上,OS是銀河麒麟。
aarch32:樹莓派4B,OS是raspberrypi 4.19。
以下描述都是基于該環(huán)境的的操作結(jié)果。其他環(huán)境沒有驗(yàn)證過(guò),如果在其他環(huán)境(比如不同的ARM CPU或其他OS),可能會(huì)出現(xiàn)一些環(huán)境相關(guān)的問題,請(qǐng)?jiān)赥Dengine Database的GitHub上提交issue。
由于時(shí)間關(guān)系,還沒有完成交叉編譯的驗(yàn)證,后續(xù)會(huì)基于主流的開源交叉編譯工具進(jìn)行ARM版本的編譯。也歡迎感興趣的開發(fā)者參與,成為TDengine Database的貢獻(xiàn)者。
aarch64系統(tǒng)
華為泰山服務(wù)器
kylin@kylinos:~/git$ lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
每個(gè)核的線程數(shù):1
每個(gè)座的核數(shù): 2
Socket(s): 1
NUMA 節(jié)點(diǎn): 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系統(tǒng)
樹莓派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、進(jìn)入工程目錄完成編譯
~/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
然后進(jìn)行make,
~/git/TDengine/debug$ sudo make
編譯成功后,在build目錄下會(huì)生成bin、lib兩個(gè)目錄,其中bin/taos、bin/taosd就是客戶端和服務(wù)端的執(zhí)行程序;lib目錄里面庫(kù)文件。
可以直接在bin目錄下執(zhí)行 ./taosd 啟動(dòng)服務(wù)端進(jìn)程(使用缺省配置文件:/etc/taos/taos.cfg),執(zhí)行./taos 啟動(dòng)客戶端shell。
二、打包方式
1、從github獲取TDengine工程:
~/git$ git clone https://github.com/taosdata/TDengine.git
2、進(jìn)入工程目錄,執(zhí)編譯、打包腳本:
~/git$ cd TDengine
如果是aarch64:
~/git/TDengine$ sudo ./packaging/release.sh -c aarch64
如果是aarch32:
~/git/TDengine$ sudo ./packaging/release.sh -c aarch32
命令成功完成后, TDengine服務(wù)端和客戶端的tar壓縮安裝包生成在當(dāng)前目錄下的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是完全一致的,請(qǐng)參見: 服務(wù)端配置 。但是在一般的嵌入式ARM系統(tǒng)中,內(nèi)存都比較小,因此,TDengine支持用戶可以根據(jù)不同的應(yīng)用場(chǎng)景,通過(guò)配置參數(shù)來(lái)設(shè)置占用合適的內(nèi)存大小。相關(guān)的參數(shù)如下:
- tables:每個(gè)vnode允許創(chuàng)建表的最大數(shù)目
- cache: 內(nèi)存塊的大?。ㄗ止?jié)數(shù))
- ablocks: 每張表平均的內(nèi)存塊數(shù)
內(nèi)存占用大小計(jì)算:tables * cache * ablocks。舉例,有下述SQL:
create database demo tables 100 cache 16384 ablocks 4
該SQL創(chuàng)建了一個(gè)庫(kù)demo, 每個(gè)vnode 允許創(chuàng)建100張表,內(nèi)存塊為16384字節(jié),每個(gè)表平均占用4個(gè)內(nèi)存塊。主要的內(nèi)存占用大?。?00 * 4 * 16384 = 6.25MiB。這也是aarch32版本的缺省配置。



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



