From: Yann Collet Date: Tue, 4 May 2021 17:54:34 +0000 (-0700) Subject: allow jobSize to be as low as 512 KB X-Git-Tag: v1.5.0^2~39^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f86c29c068f32ffa64318fdc100396cba2568cc;p=thirdparty%2Fzstd.git 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). --- 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");