运行 YCSB 使用 Workload E 进行加密和不进行加密之间存在巨大的运行时差异
Huge runtime difference between running YCSB with and without encryption with Workload E
我已经在 mongodb 企业中对 运行ning ycsb 进行了一些测试,有和没有静态加密。我使用的是默认工作负载,当 运行 连接工作负载 E.
时,我发现了一些奇怪的结果
在没有加密的情况下,运行时间大约是 13 分钟,但是当我将其切换到加密数据库时,运行时间跳到了可疑的 17 小时!!!
一定有问题,但我想不出是什么问题。所有测试都是在 100K 操作计数和 10M itens 计数下进行的,并且我在每次 运行 后重新启动系统。希望能帮我解决这个问题
YCSB 本身不进行加密 ,但依赖于 MongoDB 的 java 驱动程序。您是否尝试过 MongoDB 的文档?
您使用哪种加密方式?
我觉得你的结果并不令人惊讶。根据您的问题,您的工作负载文件如下所示:
recordcount=10000000
operationcount=100000
readproportion=0
updateproportion=0
scanproportion=0.95
insertproportion=0.05
requestdistribution=zipfian
maxscanlength=100
scanlengthdistribution=uniform
这是一个非常密集的扫描工作量。首先,扫描是列存储中最慢的操作。其次,假设加密需要 250 毫秒,解密需要 400 毫秒,客户端和 REST 服务器都必须为每个操作执行此操作,因此需要:(0.25 + 0.4)*100000
秒,即大约 18 小时。
编辑
根据您的评论,您正在使用 AES256 并比较工作负载 A 和 E。
工作负载 A 大约有 50% 的读取和 50% 的写入。如果您使用 YCSB 的标准行大小,则每行代表 1 kB(10 个字段,每个字段 100 B)。
因此,对于 10 万次操作,您正在处理以下数据量:
- 工作负载 A:
100000*0.5*1kB + 100000*0.5*1kB = 100 MB
- 工作负载 E:
100000*0.95*100*1kB + 100000*0.05*1kB = 9505 MB
因为您的扫描代表 100 行!
由于 AES 是分布式的,即 AES(A + B) = AES(A) + AES(B)
,您使用工作负载 E 加密了 95 倍以上的数据,这解释了时间差异。
我已经在 mongodb 企业中对 运行ning ycsb 进行了一些测试,有和没有静态加密。我使用的是默认工作负载,当 运行 连接工作负载 E.
时,我发现了一些奇怪的结果在没有加密的情况下,运行时间大约是 13 分钟,但是当我将其切换到加密数据库时,运行时间跳到了可疑的 17 小时!!!
一定有问题,但我想不出是什么问题。所有测试都是在 100K 操作计数和 10M itens 计数下进行的,并且我在每次 运行 后重新启动系统。希望能帮我解决这个问题
YCSB 本身不进行加密 ,但依赖于 MongoDB 的 java 驱动程序。您是否尝试过 MongoDB 的文档?
您使用哪种加密方式?
我觉得你的结果并不令人惊讶。根据您的问题,您的工作负载文件如下所示:
recordcount=10000000
operationcount=100000
readproportion=0
updateproportion=0
scanproportion=0.95
insertproportion=0.05
requestdistribution=zipfian
maxscanlength=100
scanlengthdistribution=uniform
这是一个非常密集的扫描工作量。首先,扫描是列存储中最慢的操作。其次,假设加密需要 250 毫秒,解密需要 400 毫秒,客户端和 REST 服务器都必须为每个操作执行此操作,因此需要:(0.25 + 0.4)*100000
秒,即大约 18 小时。
编辑
根据您的评论,您正在使用 AES256 并比较工作负载 A 和 E。 工作负载 A 大约有 50% 的读取和 50% 的写入。如果您使用 YCSB 的标准行大小,则每行代表 1 kB(10 个字段,每个字段 100 B)。
因此,对于 10 万次操作,您正在处理以下数据量:
- 工作负载 A:
100000*0.5*1kB + 100000*0.5*1kB = 100 MB
- 工作负载 E:
100000*0.95*100*1kB + 100000*0.05*1kB = 9505 MB
因为您的扫描代表 100 行!
由于 AES 是分布式的,即 AES(A + B) = AES(A) + AES(B)
,您使用工作负载 E 加密了 95 倍以上的数据,这解释了时间差异。