Skip to content

Commit 5074ac6

Browse files
Missed file from previous merge commit.
1 parent 27de8e3 commit 5074ac6

File tree

1 file changed

+71
-58
lines changed

1 file changed

+71
-58
lines changed

fdbserver/VersionedBTree.actor.cpp

Lines changed: 71 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -7126,7 +7126,7 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71267126
bytes += deltaTest(a, b);
71277127
}
71287128
double elapsed = timer() - start;
7129-
printf("DeltaTest() on random large records %g M/s %g MB/s\n", count / elapsed / 1e6, bytes / elapsed / 1e6);
7129+
printf("DeltaTest() on random large records %f M/s %f MB/s\n", count / elapsed / 1e6, bytes / elapsed / 1e6);
71307130

71317131
keyBuffer.resize(30);
71327132
valueBuffer.resize(100);
@@ -7138,7 +7138,7 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71387138
RedwoodRecordRef b = randomRedwoodRecordRef(keyBuffer, valueBuffer);
71397139
bytes += deltaTest(a, b);
71407140
}
7141-
printf("DeltaTest() on random small records %g M/s %g MB/s\n", count / elapsed / 1e6, bytes / elapsed / 1e6);
7141+
printf("DeltaTest() on random small records %f M/s %f MB/s\n", count / elapsed / 1e6, bytes / elapsed / 1e6);
71427142

71437143
RedwoodRecordRef rec1;
71447144
RedwoodRecordRef rec2;
@@ -7155,15 +7155,15 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71557155
for (i = 0; i < count; ++i) {
71567156
total += rec1.getCommonPrefixLen(rec2, 50);
71577157
}
7158-
printf("%" PRId64 " getCommonPrefixLen(skip=50) %g M/s\n", total, count / (timer() - start) / 1e6);
7158+
printf("%" PRId64 " getCommonPrefixLen(skip=50) %f M/s\n", total, count / (timer() - start) / 1e6);
71597159

71607160
start = timer();
71617161
total = 0;
71627162
count = 100e6;
71637163
for (i = 0; i < count; ++i) {
71647164
total += rec1.getCommonPrefixLen(rec2, 0);
71657165
}
7166-
printf("%" PRId64 " getCommonPrefixLen(skip=0) %g M/s\n", total, count / (timer() - start) / 1e6);
7166+
printf("%" PRId64 " getCommonPrefixLen(skip=0) %f M/s\n", total, count / (timer() - start) / 1e6);
71677167

71687168
char buf[1000];
71697169
RedwoodRecordRef::Delta& d = *(RedwoodRecordRef::Delta*)buf;
@@ -7176,15 +7176,15 @@ TEST_CASE("/redwood/correctness/unit/RedwoodRecordRef") {
71767176
for (i = 0; i < count; ++i) {
71777177
total += rec1.writeDelta(d, rec2, commonPrefix);
71787178
}
7179-
printf("%" PRId64 " writeDelta(commonPrefix=%d) %g M/s\n", total, commonPrefix, count / (timer() - start) / 1e6);
7179+
printf("%" PRId64 " writeDelta(commonPrefix=%d) %f M/s\n", total, commonPrefix, count / (timer() - start) / 1e6);
71807180

71817181
start = timer();
71827182
total = 0;
71837183
count = 10e6;
71847184
for (i = 0; i < count; ++i) {
71857185
total += rec1.writeDelta(d, rec2);
71867186
}
7187-
printf("%" PRId64 " writeDelta() %g M/s\n", total, count / (timer() - start) / 1e6);
7187+
printf("%" PRId64 " writeDelta() %f M/s\n", total, count / (timer() - start) / 1e6);
71887188

71897189
return Void();
71907190
}
@@ -7744,30 +7744,43 @@ TEST_CASE("/redwood/correctness/btree") {
77447744
g_redwoodMetricsActor = Void(); // Prevent trace event metrics from starting
77457745
g_redwoodMetrics.clear();
77467746

7747-
state std::string pagerFile = "unittest_pageFile.redwood";
7747+
state std::string fileName = params.get("fileName").orDefault("unittest_pageFile.redwood");
77487748
IPager2* pager;
77497749

7750-
state bool serialTest = deterministicRandom()->coinflip();
7751-
state bool shortTest = deterministicRandom()->coinflip();
7750+
state bool serialTest = params.getInt("serialTest").orDefault(deterministicRandom()->coinflip());
7751+
state bool shortTest = params.getInt("shortTest").orDefault(deterministicRandom()->coinflip());
77527752

77537753
state int pageSize =
77547754
shortTest ? 200 : (deterministicRandom()->coinflip() ? 4096 : deterministicRandom()->randomInt(200, 400));
77557755

7756-
state int64_t targetPageOps = shortTest ? 50000 : 1000000;
7757-
state bool pagerMemoryOnly = shortTest && (deterministicRandom()->random01() < .001);
7758-
state int maxKeySize = deterministicRandom()->randomInt(1, pageSize * 2);
7759-
state int maxValueSize = randomSize(pageSize * 25);
7760-
state int maxCommitSize = shortTest ? 1000 : randomSize(std::min<int>((maxKeySize + maxValueSize) * 20000, 10e6));
7761-
state double clearProbability = deterministicRandom()->random01() * .1;
7762-
state double clearSingleKeyProbability = deterministicRandom()->random01();
7763-
state double clearPostSetProbability = deterministicRandom()->random01() * .1;
7764-
state double coldStartProbability = pagerMemoryOnly ? 0 : (deterministicRandom()->random01() * 0.3);
7765-
state double advanceOldVersionProbability = deterministicRandom()->random01();
7756+
state int64_t targetPageOps = params.getInt("targetPageOps").orDefault(shortTest ? 50000 : 1000000);
7757+
state bool pagerMemoryOnly =
7758+
params.getInt("pagerMemoryOnly").orDefault(shortTest && (deterministicRandom()->random01() < .001));
7759+
state int maxKeySize = params.getInt("maxKeySize").orDefault(deterministicRandom()->randomInt(1, pageSize * 2));
7760+
state int maxValueSize = params.getInt("maxValueSize").orDefault(randomSize(pageSize * 25));
7761+
state int maxCommitSize =
7762+
params.getInt("maxCommitSize")
7763+
.orDefault(shortTest ? 1000 : randomSize(std::min<int>((maxKeySize + maxValueSize) * 20000, 10e6)));
7764+
state double clearProbability =
7765+
params.getDouble("clearProbability").orDefault(deterministicRandom()->random01() * .1);
7766+
state double clearSingleKeyProbability =
7767+
params.getDouble("clearSingleKeyProbability").orDefault(deterministicRandom()->random01());
7768+
state double clearPostSetProbability =
7769+
params.getDouble("clearPostSetProbability").orDefault(deterministicRandom()->random01() * .1);
7770+
state double coldStartProbability = params.getDouble("coldStartProbability")
7771+
.orDefault(pagerMemoryOnly ? 0 : (deterministicRandom()->random01() * 0.3));
7772+
state double advanceOldVersionProbability =
7773+
params.getDouble("advanceOldVersionProbability").orDefault(deterministicRandom()->random01());
77667774
state int64_t cacheSizeBytes =
7767-
pagerMemoryOnly ? 2e9 : (pageSize * deterministicRandom()->randomInt(1, (BUGGIFY ? 2 : 10000) + 1));
7768-
state Version versionIncrement = deterministicRandom()->randomInt64(1, 1e8);
7769-
state Version remapCleanupWindow = BUGGIFY ? 0 : deterministicRandom()->randomInt64(1, versionIncrement * 50);
7770-
state int maxVerificationMapEntries = 300e3;
7775+
params.getInt("cacheSizeBytes")
7776+
.orDefault(pagerMemoryOnly ? 2e9
7777+
: (pageSize * deterministicRandom()->randomInt(1, (BUGGIFY ? 2 : 10000) + 1)));
7778+
state Version versionIncrement =
7779+
params.getInt("versionIncrement").orDefault(deterministicRandom()->randomInt64(1, 1e8));
7780+
state Version remapCleanupWindow =
7781+
params.getInt("remapCleanupWindow")
7782+
.orDefault(BUGGIFY ? 0 : deterministicRandom()->randomInt64(1, versionIncrement * 50));
7783+
state int maxVerificationMapEntries = params.getInt("maxVerificationMapEntries").orDefault(300e3);
77717784

77727785
printf("\n");
77737786
printf("targetPageOps: %" PRId64 "\n", targetPageOps);
@@ -7790,11 +7803,11 @@ TEST_CASE("/redwood/correctness/btree") {
77907803
printf("\n");
77917804

77927805
printf("Deleting existing test data...\n");
7793-
deleteFile(pagerFile);
7806+
deleteFile(fileName);
77947807

77957808
printf("Initializing...\n");
7796-
pager = new DWALPager(pageSize, pagerFile, cacheSizeBytes, remapCleanupWindow, pagerMemoryOnly);
7797-
state VersionedBTree* btree = new VersionedBTree(pager, pagerFile);
7809+
pager = new DWALPager(pageSize, fileName, cacheSizeBytes, remapCleanupWindow, pagerMemoryOnly);
7810+
state VersionedBTree* btree = new VersionedBTree(pager, fileName);
77987811
wait(btree->init());
77997812

78007813
state std::map<std::pair<std::string, Version>, Optional<std::string>> written;
@@ -7997,8 +8010,8 @@ TEST_CASE("/redwood/correctness/btree") {
79978010
wait(closedFuture);
79988011

79998012
printf("Reopening btree from disk.\n");
8000-
IPager2* pager = new DWALPager(pageSize, pagerFile, cacheSizeBytes, remapCleanupWindow);
8001-
btree = new VersionedBTree(pager, pagerFile);
8013+
IPager2* pager = new DWALPager(pageSize, fileName, cacheSizeBytes, remapCleanupWindow);
8014+
btree = new VersionedBTree(pager, fileName);
80028015
wait(btree->init());
80038016

80048017
Version v = btree->getLatestVersion();
@@ -8034,7 +8047,7 @@ TEST_CASE("/redwood/correctness/btree") {
80348047
state Future<Void> closedFuture = btree->onClosed();
80358048
btree->close();
80368049
wait(closedFuture);
8037-
btree = new VersionedBTree(new DWALPager(pageSize, pagerFile, cacheSizeBytes, 0), pagerFile);
8050+
btree = new VersionedBTree(new DWALPager(pageSize, fileName, cacheSizeBytes, 0), fileName);
80388051
wait(btree->init());
80398052

80408053
wait(btree->clearAllAndCheckSanity());
@@ -8133,29 +8146,29 @@ TEST_CASE(":/redwood/performance/set") {
81338146
g_redwoodMetricsActor = Void(); // Prevent trace event metrics from starting
81348147
g_redwoodMetrics.clear();
81358148

8136-
state std::string fileName = params.getParam("fileName").orDefault("unittest.redwood");
8137-
state int pageSize = params.getIntParam("pageSize").orDefault(SERVER_KNOBS->REDWOOD_DEFAULT_PAGE_SIZE);
8138-
state int64_t pageCacheBytes = params.getIntParam("pageCacheBytes").orDefault(FLOW_KNOBS->PAGE_CACHE_4K);
8139-
state int nodeCount = params.getIntParam("nodeCount").orDefault(1e9);
8140-
state int maxRecordsPerCommit = params.getIntParam("maxRecordsPerCommit").orDefault(20000);
8141-
state int maxKVBytesPerCommit = params.getIntParam("maxKVBytesPerCommit").orDefault(20e6);
8142-
state int64_t kvBytesTarget = params.getIntParam("kvBytesTarget").orDefault(4e9);
8143-
state int minKeyPrefixBytes = params.getIntParam("minKeyPrefixBytes").orDefault(25);
8144-
state int maxKeyPrefixBytes = params.getIntParam("maxKeyPrefixBytes").orDefault(25);
8145-
state int minValueSize = params.getIntParam("minValueSize").orDefault(100);
8146-
state int maxValueSize = params.getIntParam("maxValueSize").orDefault(500);
8147-
state int minConsecutiveRun = params.getIntParam("minConsecutiveRun").orDefault(1);
8148-
state int maxConsecutiveRun = params.getIntParam("maxConsecutiveRun").orDefault(100);
8149-
state char firstKeyChar = params.getParam("firstKeyChar").orDefault("a")[0];
8150-
state char lastKeyChar = params.getParam("lastKeyChar").orDefault("m")[0];
8149+
state std::string fileName = params.get("fileName").orDefault("unittest.redwood");
8150+
state int pageSize = params.getInt("pageSize").orDefault(SERVER_KNOBS->REDWOOD_DEFAULT_PAGE_SIZE);
8151+
state int64_t pageCacheBytes = params.getInt("pageCacheBytes").orDefault(FLOW_KNOBS->PAGE_CACHE_4K);
8152+
state int nodeCount = params.getInt("nodeCount").orDefault(1e9);
8153+
state int maxRecordsPerCommit = params.getInt("maxRecordsPerCommit").orDefault(20000);
8154+
state int maxKVBytesPerCommit = params.getInt("maxKVBytesPerCommit").orDefault(20e6);
8155+
state int64_t kvBytesTarget = params.getInt("kvBytesTarget").orDefault(4e9);
8156+
state int minKeyPrefixBytes = params.getInt("minKeyPrefixBytes").orDefault(25);
8157+
state int maxKeyPrefixBytes = params.getInt("maxKeyPrefixBytes").orDefault(25);
8158+
state int minValueSize = params.getInt("minValueSize").orDefault(100);
8159+
state int maxValueSize = params.getInt("maxValueSize").orDefault(500);
8160+
state int minConsecutiveRun = params.getInt("minConsecutiveRun").orDefault(1);
8161+
state int maxConsecutiveRun = params.getInt("maxConsecutiveRun").orDefault(100);
8162+
state char firstKeyChar = params.get("firstKeyChar").orDefault("a")[0];
8163+
state char lastKeyChar = params.get("lastKeyChar").orDefault("m")[0];
81518164
state Version remapCleanupWindow =
8152-
params.getIntParam("remapCleanupWindow").orDefault(SERVER_KNOBS->REDWOOD_REMAP_CLEANUP_WINDOW);
8153-
state bool openExisting = params.getIntParam("openExisting").orDefault(0);
8154-
state bool insertRecords = !openExisting || params.getIntParam("insertRecords").orDefault(0);
8155-
state int concurrentSeeks = params.getIntParam("concurrentSeeks").orDefault(64);
8156-
state int concurrentScans = params.getIntParam("concurrentScans").orDefault(64);
8157-
state int seeks = params.getIntParam("seeks").orDefault(1000000);
8158-
state int scans = params.getIntParam("scans").orDefault(20000);
8165+
params.getInt("remapCleanupWindow").orDefault(SERVER_KNOBS->REDWOOD_REMAP_CLEANUP_WINDOW);
8166+
state bool openExisting = params.getInt("openExisting").orDefault(0);
8167+
state bool insertRecords = !openExisting || params.getInt("insertRecords").orDefault(0);
8168+
state int concurrentSeeks = params.getInt("concurrentSeeks").orDefault(64);
8169+
state int concurrentScans = params.getInt("concurrentScans").orDefault(64);
8170+
state int seeks = params.getInt("seeks").orDefault(1000000);
8171+
state int scans = params.getInt("scans").orDefault(20000);
81598172

81608173
printf("pageSize: %d\n", pageSize);
81618174
printf("pageCacheBytes: %" PRId64 "\n", pageCacheBytes);
@@ -8648,10 +8661,10 @@ ACTOR Future<Void> doPrefixInsertComparison(int suffixSize,
86488661
}
86498662

86508663
TEST_CASE(":/redwood/performance/prefixSizeComparison") {
8651-
state int suffixSize = 12;
8652-
state int valueSize = 100;
8653-
state int recordCountTarget = 100e6;
8654-
state int usePrefixesInOrder = false;
8664+
state int suffixSize = params.getInt("suffixSize").orDefault(12);
8665+
state int valueSize = params.getInt("valueSize").orDefault(100);
8666+
state int recordCountTarget = params.getInt("recordCountTarget").orDefault(100e6);
8667+
state bool usePrefixesInOrder = params.getInt("usePrefixesInOrder").orDefault(0);
86558668

86568669
wait(doPrefixInsertComparison(
86578670
suffixSize, valueSize, recordCountTarget, usePrefixesInOrder, KVSource({ { 10, 100000 } })));
@@ -8669,9 +8682,9 @@ TEST_CASE(":/redwood/performance/prefixSizeComparison") {
86698682
}
86708683

86718684
TEST_CASE(":/redwood/performance/sequentialInsert") {
8672-
state int prefixLen = 30;
8673-
state int valueSize = 100;
8674-
state int recordCountTarget = 100e6;
8685+
state int prefixLen = params.getInt("prefixLen").orDefault(30);
8686+
state int valueSize = params.getInt("valueSize").orDefault(100);
8687+
state int recordCountTarget = params.getInt("recordCountTarget").orDefault(100e6);
86758688

86768689
deleteFile("test.redwood");
86778690
wait(delay(5));

0 commit comments

Comments
 (0)