编译RocksDB
- MacOS本机编译
- CentOS编译
MacOS编译
编译不通过的问题
编译环境
- MacOS
- M1 Pro
- gcc
报错信息
/opt/homebrew/Cellar/gcc/10.2.0_4/lib/gcc/10/gcc/aarch64-apple-darwin20/10.2.1/include/arm_acle.h: In function 'int __rndr(uint64_t*)':
/opt/homebrew/Cellar/gcc/10.2.0_4/lib/gcc/10/gcc/aarch64-apple-darwin20/10.2.1/include/arm_acle.h:201:34: error: invalid conversion from 'uint64_t*' {aka 'long long unsigned int*'} to 'long unsigned int*' [-fpermissive]
201 | return __builtin_aarch64_rndr (__res);
| ^~~~~
| |
| uint64_t* {aka long long unsigned int*}
<built-in>: note: initializing argument 1 of 'int __builtin_aarch64_rndr(long unsigned int*)'
/opt/homebrew/Cellar/gcc/10.2.0_4/lib/gcc/10/gcc/aarch64-apple-darwin20/10.2.1/include/arm_acle.h: In function 'int __rndrrs(uint64_t*)':
/opt/homebrew/Cellar/gcc/10.2.0_4/lib/gcc/10/gcc/aarch64-apple-darwin20/10.2.1/include/arm_acle.h:207:36: error: invalid conversion from 'uint64_t*' {aka 'long long unsigned int*'} to 'long unsigned int*' [-fpermissive]
207 | return __builtin_aarch64_rndrrs (__res);
| ^~~~~
| |
| uint64_t* {aka long long unsigned int*}
<built-in>: note: initializing argument 1 of 'int __builtin_aarch64_rndrrs(long unsigned int*)'
解决问题
百思不得其解 最后终于在google搜到了和我一样的问题
https://githubmemory.com/repo...
可能真的是gcc导致的问题
换成clang后,问题解决。
运行db_bench被终止的问题
编译成功后 运行db_bench时出现以下问题
警告关闭自动compact
而如果更改代码中该变量为true
出现新报错
怀疑MacOS可能文件系统不支持
转而使用CentOS编译
CentOS编译
配置信息
- CentOS 7.4
- 1核2g丐版阿里云
编译经过
经历了必不可少的升级cmake,安装gflags、snappy等一部分依赖准备步骤后开始编译
可能是由于配置的问题,编译的速度实在不尽如人意,保守估计编译了大概两个小时,还没有编译完...... 和在自己的Mac上的编译速度没法比。
续
在CentOS上编译通过后 运行时出现了一模一样的问题
应该不是系统的问题,怀疑是db_bench运行参数的问题。
可能是默认的参数太大了,配置跟不上。
不知道是不是和这个大哥遇到的问题相似
https://discuss.nebula-graph....
更改参数后进行benchmark,可成功运行
简单的benchmark尝试
- 创建数据库并填入一些数据(fillseq)
./db_bench --benchmarks="fillseq"
获得更多的指标./db_bench --benchmarks="fillseq,stats" --statistics
- 读数据
./db_bench --benchmarks="readrandom" --use_existing_db
合并写和读操作./db_bench --benchmarks="fillseq,readrandom,readseq"