static void BenchmarkWithConfig(int repeat, YcsbConfig config) { List <BenchResult> results = new List <BenchResult>(repeat); for (int i = 0; i < repeat; ++i) { if (repeat > 1) { Console.WriteLine($"ROUND {i + 1}:"); } BenchResult result = BenchmarkWithConfigOnce(config); results.Add(result); result.Print(); } PrintAverageResult(results); Console.WriteLine("---"); }
public IEnumerable <YcsbConfig> GetConfigs() { YcsbConfig config = new YcsbConfig(); config.Dist = this.Dist; config.RecordCount = this.RecordCount; config.WorkerWorkload = this.WorkerWorkload; config.QueriesPerTx = this.QueryPerTx; foreach (double skew in this.ZipfSkews) { config.ZipfSkew = skew; foreach (double rr in this.ReadRatios) { config.ReadRatio = rr; foreach (int c in this.Concurrencies) { config.Concurrency = c; yield return(config); } } } }
static BenchResult BenchmarkWithConfigOnce(YcsbConfig config) { // config.Print(); // Console.WriteLine(); var versionDb = YcsbHelper.MakeVersionDb(config.Concurrency); // Console.Write("loading data... "); LoadYcsbData(versionDb, config.RecordCount); // Console.WriteLine("done"); var generator = new YCSBDataGenerator( config.RecordCount, config.ReadRatio, config.Dist, config.ZipfSkew); Func <TransactionExecution, YcsbWorker> workerFactory = txExec => YcsbWorker.Generate( config.WorkerWorkload, config.QueriesPerTx, generator, txExec); // Console.Write("generate workload... "); var benchmark = new YcsbBenchmarkEnv(versionDb, workerFactory); // Console.WriteLine("done"); var result = benchmark.Go(); SingletonVersionDb.DestroyInstance(); return(result); }