软件扩展能力是软件架构设计中的一个关键要素,具有良好扩展能力的软件能够充分利用新增的硬件资源。当软件性能与硬件增加保持同步比例增长时,我们称这种现象为软件具有线性扩展能力。要实现这种线性扩展并不简单,它要求软件架构精心设计,能够最大化硬件性能的利用,同时减少内部资源消耗。这需要对现有架构进行深入的优化和调整。
为了验证 TDengine 是否具备线性扩展能力,我们可以采取以下测试方法:首先识别出可能成为性能瓶颈的硬件资源,然后逐步增加这类资源,观察软件性能的变化。典型的测试焦点包括 CPU 和磁盘,因为这两者是计算机资源中最常见的扩展点。下面我们将从这两方面来进行测试验证。
01
TDengine CPU 线性扩展能力
测试目的
测试方法
测试参数
测试结果
数据解读
-
在 4 核时 CPU 使用率降至 88%,若再增加 CPU 可能 CPU 不会再成为瓶颈,所以升级配置至 12 个 VGROUPS、12 写入线程,让 CPU 始终保持在瓶颈状态下
-
每增加一个 CPU,写入性能线性提升约 50W 左右,符合线程增长预期
-
磁盘 IO 基本与写入速度增长保持一致
TDengine IO 线性扩展能力
测试目的
测试方法
测试系统:Linux Ubuntu 20.4 操作系统
硬件配置:CPU 24 核, 64 GB 内存,挂三块普通 5400 转低速机械盘(选择性能普通的硬盘,有利于很快打满 IO,达到 IO 成为瓶颈的条件 )
TDengine:版本 V3.3.0.0
测试工具:taosBenchmark
表结构:
(每行长度 32618 字节,使用大宽行,更能把 IO 打满)
增加磁盘方法:使用同级挂载多块磁盘技术
测试参数
数据库:1 个 VGROUP 16
超级表:1 个
子表数:100 个
每子表行数:1W
总数据量:100W
taosBenchmark :
写入线程数 = 16 个
写入方式 = stmt vgroup 绑定线程快速写入方法
测试结果
-
CPU: 24 核 CPU ,大部分都为空闲,CPU 非常富余 -
带宽:客户端服务器同一台机器,带宽可认为无限制 -
Commit 线程数是数据落盘的线程数,直接操作 IO -
磁盘挂载到 3 块后,需求加大 Commit 线程数,才能打满 IO
数据解读
从数据上可看出,每增加一块磁盘,写入性能也会成比例增长,新增磁盘 IO 被充分使用。
写在最后