added definitions for conversion constants, moved forced compression check to top of adaptCompressionLevel, used ZSTD_BLOCKSIZE_MAX
This commit is contained in:
parent
6c1c1242fc
commit
715f36ca81
@ -28,6 +28,8 @@
|
|||||||
#define MAX_COMPRESSION_LEVEL_CHANGE 2
|
#define MAX_COMPRESSION_LEVEL_CHANGE 2
|
||||||
#define CONVERGENCE_LOWER_BOUND 5
|
#define CONVERGENCE_LOWER_BOUND 5
|
||||||
#define CLEVEL_DECREASE_COOLDOWN 5
|
#define CLEVEL_DECREASE_COOLDOWN 5
|
||||||
|
#define CHANGE_BY_TWO_THRESHOLD 0.1
|
||||||
|
#define CHANGE_BY_ONE_THRESHOLD 0.65
|
||||||
|
|
||||||
#ifndef DEBUG_MODE
|
#ifndef DEBUG_MODE
|
||||||
static int g_displayLevel = DEFAULT_DISPLAY_LEVEL;
|
static int g_displayLevel = DEFAULT_DISPLAY_LEVEL;
|
||||||
@ -322,10 +324,10 @@ static void waitUntilAllJobsCompleted(adaptCCtx* ctx)
|
|||||||
/* map completion percentages to values for changing compression level */
|
/* map completion percentages to values for changing compression level */
|
||||||
static unsigned convertCompletionToChange(double completion)
|
static unsigned convertCompletionToChange(double completion)
|
||||||
{
|
{
|
||||||
if (completion < 0.1) {
|
if (completion < CHANGE_BY_TWO_THRESHOLD) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
else if (completion < 0.65) {
|
else if (completion < CHANGE_BY_ONE_THRESHOLD) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -350,6 +352,13 @@ static void adaptCompressionLevel(adaptCCtx* ctx)
|
|||||||
double const threshold = 0.00001;
|
double const threshold = 0.00001;
|
||||||
unsigned const prevCompressionLevel = ctx->compressionLevel;
|
unsigned const prevCompressionLevel = ctx->compressionLevel;
|
||||||
|
|
||||||
|
|
||||||
|
if (g_forceCompressionLevel) {
|
||||||
|
ctx->compressionLevel = g_compressionLevel;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DEBUG(2, "adapting compression level %u\n", ctx->compressionLevel);
|
DEBUG(2, "adapting compression level %u\n", ctx->compressionLevel);
|
||||||
|
|
||||||
/* read and reset completion measurements */
|
/* read and reset completion measurements */
|
||||||
@ -420,10 +429,6 @@ static void adaptCompressionLevel(adaptCCtx* ctx)
|
|||||||
if (ctx->compressionLevel == prevCompressionLevel) {
|
if (ctx->compressionLevel == prevCompressionLevel) {
|
||||||
ctx->convergenceCounter++;
|
ctx->convergenceCounter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_forceCompressionLevel) {
|
|
||||||
ctx->compressionLevel = g_compressionLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t getUseableDictSize(unsigned compressionLevel)
|
static size_t getUseableDictSize(unsigned compressionLevel)
|
||||||
@ -500,7 +505,7 @@ static void* compressionThread(void* arg)
|
|||||||
DEBUG(2, "job %u compressed with level %u\n", currJob, ctx->compressionLevel);
|
DEBUG(2, "job %u compressed with level %u\n", currJob, ctx->compressionLevel);
|
||||||
/* compress the data */
|
/* compress the data */
|
||||||
{
|
{
|
||||||
size_t const compressionBlockSize = 1 << 17; /* 128 KB */
|
size_t const compressionBlockSize = ZSTD_BLOCKSIZE_MAX; /* 128 KB */
|
||||||
unsigned const cLevel = ctx->compressionLevel;
|
unsigned const cLevel = ctx->compressionLevel;
|
||||||
unsigned blockNum = 0;
|
unsigned blockNum = 0;
|
||||||
size_t remaining = job->src.size;
|
size_t remaining = job->src.size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user