Cache Fuzzer
缓存模糊测试器旨在测试内存异步数据缓存和持久本地 SSD 缓存的正确性和可靠性,以及它们之间的交互,例如从异步数据缓存暂存到 SSD 缓存,以及将缓存未命中的数据从 SSD 缓存加载到异步数据缓存。
在每次迭代中,模糊测试器会逐步执行以下操作:
- 在本地文件系统上创建一组大小各异的数据文件作为源数据文件。
- 使用特定配置设置带 SSD 和不带 SSD 的异步数据缓存。
- 从步骤 1 中创建的源数据文件执行并行随机读取。
How to run
使用 pollux_cache_fuzzer 二进制文件运行缓存模糊测试器:
pollux/exec/fuzzer/pollux_cache_fuzzer
默认情况下,模糊测试器会进行 10 次迭代。使用 --steps 或 --duration-sec 参数可以延长模糊测试器的运行时间。使用 --seed 可以重现模糊测试器的失败。
以下是受支持的命令行参数的完整列表。
-
–-steps:要运行的迭代次数。每次迭代都会生成并评估一个故事写入计划。默认值为 10。 -
–-duration_sec:运行时间(秒)。如果同时指定了-–steps和-–duration_sec,则优先使用 –duration_sec。 -
–-seed:用于生成随机表达式和输入向量的种子。 -
–-num_threads:读取线程数。 -
–-read_iteration_sec:每个读取线程应运行的时间(以秒为单位)。 -
–-num_source_files:要创建的数据文件数量。 -
–-source_file_bytes:源文件大小(以字节为单位)。设置为 -1 时,将使用 32MB 到 48MB 之间的随机值(含)。 -
–-memory_cache_bytes:内存缓存大小(以字节为单位)。设置为 -1 时,将使用 48 到 64MB 之间的随机值(含)。 -
–-ssd_cache_bytes:SSD 缓存大小(以字节为单位)。设置为 -1 时,每 10 次中有 1 次会禁用 SSD 缓存,而其他时间则会使用 128MB 到 256MB 之间的随机值(含)。 -
–-num_ssd_cache_shards:SSD 缓存分片的数量。设置为 -1 时,将使用 1 到 4 之间的随机值(含)。 -
–-ssd_checkpoint_interval_bytes:每次写入每个文件后执行一次检查点。--ssd_checkpoint_interval_bytes/--num_ssd_cache_shards。0 表示不执行检查点。设置为 -1 时,每 4 次检查点中有 1 次将被禁用, 而其他时间将使用 32MB 到 64MB 之间的随机值(含)。每次写入每个文件后执行一次检查点。0 表示不执行检查点。 -
–-num_restarts:单次迭代中缓存重启的次数。 -
–-enable_file_faulty_injection:启用对缓存相关文件的读写操作的故障注入。启用后,文件读写操作每 100 次将失败 5 次。
如果从 CLion IDE 运行,请添加 --logtostderr=1 以查看完整输出。