From 8f86c29c068f32ffa64318fdc100396cba2568cc Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 4 May 2021 10:54:34 -0700 Subject: [PATCH] allow jobSize to be as low as 512 KB previous lower limit was 1 MB. Note : by default, the lowest job size is 2 MB, achieved at level 1. Even lower job sizes can be achieved by manipulating this value directly, or manually modifying window sizes to lower amounts. Updated unit test to ensure that this new limit works fine (test would fail with previous 1 MB limit). --- lib/compress/zstdmt_compress.h | 6 +++--- tests/fuzzer.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/compress/zstdmt_compress.h b/lib/compress/zstdmt_compress.h index 3b4c14f0e..3d9614a7e 100644 --- a/lib/compress/zstdmt_compress.h +++ b/lib/compress/zstdmt_compress.h @@ -32,11 +32,11 @@ /* === Constants === */ -#ifndef ZSTDMT_NBWORKERS_MAX +#ifndef ZSTDMT_NBWORKERS_MAX /* can be modified at compile time */ # define ZSTDMT_NBWORKERS_MAX 200 #endif -#ifndef ZSTDMT_JOBSIZE_MIN -# define ZSTDMT_JOBSIZE_MIN (1 MB) +#ifndef ZSTDMT_JOBSIZE_MIN /* can be modified at compile time */ +# define ZSTDMT_JOBSIZE_MIN (512 KB) #endif #define ZSTDMT_JOBLOG_MAX (MEM_32bits() ? 29 : 30) #define ZSTDMT_JOBSIZE_MAX (MEM_32bits() ? (512 MB) : (1024 MB)) diff --git a/tests/fuzzer.c b/tests/fuzzer.c index 1b1042393..2c6c60d38 100644 --- a/tests/fuzzer.c +++ b/tests/fuzzer.c @@ -1589,6 +1589,7 @@ static int basicUnitTests(U32 const seed, double compressibility) DISPLAYLEVEL(3, "test%3i : setting multithreaded parameters : ", testNb++) { ZSTD_CCtx_params* params = ZSTD_createCCtxParams(); + int const jobSize = 512 KB; int value; /* Check that the overlap log and job size are unset. */ CHECK( ZSTD_CCtxParams_getParameter(params, ZSTD_c_overlapLog, &value) ); @@ -1597,19 +1598,18 @@ static int basicUnitTests(U32 const seed, double compressibility) CHECK_EQ(value, 0); /* Set and check the overlap log and job size. */ CHECK( ZSTD_CCtxParams_setParameter(params, ZSTD_c_overlapLog, 5) ); - CHECK( ZSTD_CCtxParams_setParameter(params, ZSTD_c_jobSize, 2 MB) ); + CHECK( ZSTD_CCtxParams_setParameter(params, ZSTD_c_jobSize, jobSize) ); CHECK( ZSTD_CCtxParams_getParameter(params, ZSTD_c_overlapLog, &value) ); CHECK_EQ(value, 5); CHECK( ZSTD_CCtxParams_getParameter(params, ZSTD_c_jobSize, &value) ); - CHECK_EQ(value, 2 MB); + CHECK_EQ(value, jobSize); /* Set the number of workers and check the overlap log and job size. */ CHECK( ZSTD_CCtxParams_setParameter(params, ZSTD_c_nbWorkers, 2) ); CHECK( ZSTD_CCtxParams_getParameter(params, ZSTD_c_overlapLog, &value) ); CHECK_EQ(value, 5); CHECK( ZSTD_CCtxParams_getParameter(params, ZSTD_c_jobSize, &value) ); - CHECK_EQ(value, 2 MB); + CHECK_EQ(value, jobSize); ZSTD_freeCCtxParams(params); - } DISPLAYLEVEL(3, "OK \n");