- nebula 版本:nebula-storaged version 2022.02.15-nightly, Git: 02b2091, Build Time: Feb 16 2022 00:29:49
- 部署方式:单机
- 安装方式:Docker
- 是否上生产环境:N
- 硬件信息
- 云盘SSD
- 8核cpu,16GB内存
- 问题的具体描述
- 我在docker中部署了单机的nebula,配置如上所述,还在开发测试阶段,它确实配置不是非常高。
- 我在测试过程中,创建了10k个vertex和10k edge,也就是2w条数据,运行之后很长(数个小时)一段时间cpu几乎被nebula-storaged占满,期间没有复杂和大量的插入或者查询操作。
我查看磁盘IO,使用率很低,几十kb/s,可以忽略
机器TOP如下:
top - 14:41:02 up 23:55, 2 users, load average: 32.09, 31.91, 34.67
Tasks: 376 total, 1 running, 375 sleeping, 0 stopped, 0 zombie
%Cpu(s): 84.9 us, 3.5 sy, 0.0 ni, 11.1 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st
MiB Mem : 16008.3 total, 1472.1 free, 11637.1 used, 2899.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 4027.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8915 root 20 0 1509324 327296 8644 S 198.0 2.0 692:29.46 nebula-storaged
9103 root 20 0 1416608 307024 8400 S 188.4 1.9 666:13.64 nebula-storaged
9185 root 20 0 1376160 273224 8388 S 185.0 1.7 634:29.23 nebula-storaged
9790 root 20 0 2128660 281836 10996 S 99.3 1.7 375:38.01 nebula-graphd
3107 root 20 0 1461220 516936 53756 S 9.0 3.2 110:52.02 k3s-server
8101 root 20 0 1144072 134780 8868 S 4.3 0.8 60:42.03 nebula-metad
我使用perf生成了火焰图:
我的问题:为什么当插入数据操作结束之后,依然很长时间占用那么多cpu,虽然我的机器配置不高,但我测试的数据也仅仅几万条。
我在火焰图中看到了类似IndexVertex的字样,我对nebula-cpp代码并不熟悉,它是在更新索引吗?
我应该如何避免这种大量占用cpu的问题?