Commit 6f5c9f2f authored by Bradley C. Kuszmaul's avatar Bradley C. Kuszmaul Committed by Yoni Fogel

Use {{{size_factor}}} to size rowsets. Fixes #2628. close[t:2628]

git-svn-id: file:///svn/toku/tokudb@20375 c7de825b-a66e-492c-adef-691d508d4ae1
parent 3da94d64
...@@ -332,18 +332,22 @@ static void *extractor_thread (void*); ...@@ -332,18 +332,22 @@ static void *extractor_thread (void*);
static uint64_t memory_per_rowset (BRTLOADER bl) static uint64_t memory_per_rowset (BRTLOADER bl)
// Return how much memory can be allocated for each rowset. // Return how much memory can be allocated for each rowset.
{ {
// There is a primary rowset being maintained by the foreground thread. if (size_factor==1) {
// There could be two more in the queue. return 16*1024;
// There is one rowset for each index (bl->N) being filled in. } else {
// Later we may have sort_and_write operations spawning in parallel, and will need to account for that. // There is a primary rowset being maintained by the foreground thread.
int n_copies = (1 // primary rowset // There could be two more in the queue.
+2 // the two primaries in the queue // There is one rowset for each index (bl->N) being filled in.
+bl->N // the N rowsets being constructed by the extrator thread. // Later we may have sort_and_write operations spawning in parallel, and will need to account for that.
+1 // Give the extractor thread one more so that it can have temporary space for sorting. This is overkill. int n_copies = (1 // primary rowset
); +2 // the two primaries in the queue
int64_t extra_reserved_memory = bl->N * FILE_BUFFER_SIZE; // for each index we are writing to a file at any given time. +bl->N // the N rowsets being constructed by the extrator thread.
int64_t tentative_rowset_size = ((int64_t)(bl->reserved_memory - extra_reserved_memory))/(n_copies); +1 // Give the extractor thread one more so that it can have temporary space for sorting. This is overkill.
return MAX(tentative_rowset_size, (int64_t)MIN_ROWSET_MEMORY); );
int64_t extra_reserved_memory = bl->N * FILE_BUFFER_SIZE; // for each index we are writing to a file at any given time.
int64_t tentative_rowset_size = ((int64_t)(bl->reserved_memory - extra_reserved_memory))/(n_copies);
return MAX(tentative_rowset_size, (int64_t)MIN_ROWSET_MEMORY);
}
} }
static int merge_fanin (BRTLOADER bl) static int merge_fanin (BRTLOADER bl)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment