You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-5044 This patch replaces PriorityThreadPool with FairThreadPool that uses a simple
operations + morsel size weight model to equally allocate CPU b/w parallel query morsels. This patch delivers better parallel query timings distribution(timings graph resembles normal distribution with a bigger left side thus more queries runs faster comparing with PrioThreadPool-based single-node installation). See changes in batchprimitiveprocessor-jl.h and comments in fair_threadpool.h for important implementation details
This commit is contained in:
committed by
Roman Nozdrin
parent
0f0b3a2bed
commit
fd8ba33f21
@ -111,12 +111,11 @@ TEST_F(FairThreadPoolTest, FairThreadPoolAdd)
|
||||
|
||||
while (threadPool->queueSize())
|
||||
{
|
||||
usleep(2500000);
|
||||
usleep(250000);
|
||||
}
|
||||
usleep(2500000);
|
||||
|
||||
EXPECT_EQ(threadPool->queueSize(), 0);
|
||||
EXPECT_EQ(results.size(), 3);
|
||||
EXPECT_EQ(threadPool->queueSize(), 0ULL);
|
||||
EXPECT_EQ(results.size(), 3ULL);
|
||||
EXPECT_EQ(results[0], 1);
|
||||
EXPECT_EQ(results[1], 3);
|
||||
EXPECT_EQ(results[2], 2);
|
||||
@ -139,11 +138,11 @@ TEST_F(FairThreadPoolTest, FairThreadPoolRemove)
|
||||
|
||||
while (threadPool->queueSize())
|
||||
{
|
||||
usleep(1500000);
|
||||
usleep(250000);
|
||||
}
|
||||
|
||||
EXPECT_EQ(threadPool->queueSize(), 0);
|
||||
EXPECT_EQ(results.size(), 2);
|
||||
EXPECT_EQ(threadPool->queueSize(), 0ULL);
|
||||
EXPECT_EQ(results.size(), 2ULL);
|
||||
EXPECT_EQ(results[0], 1);
|
||||
EXPECT_EQ(results[1], 3);
|
||||
}
|
||||
@ -164,11 +163,11 @@ TEST_F(FairThreadPoolTest, FairThreadPoolReschedule)
|
||||
|
||||
while (threadPool->queueSize())
|
||||
{
|
||||
usleep(1500000);
|
||||
usleep(250000);
|
||||
}
|
||||
|
||||
EXPECT_EQ(threadPool->queueSize(), 0);
|
||||
EXPECT_EQ(results.size(), 3);
|
||||
EXPECT_EQ(threadPool->queueSize(), 0ULL);
|
||||
EXPECT_EQ(results.size(), 3ULL);
|
||||
EXPECT_EQ(results[0], 1);
|
||||
EXPECT_TRUE(isThisOrThat(results, 1, 2, 2, 3));
|
||||
}
|
Reference in New Issue
Block a user