Drastically reduce memory consumption of PPMD8 in adaptive mode (Use lower max model order).
This commit is contained in:
parent
5521955a94
commit
271414535e
2 changed files with 12 additions and 0 deletions
|
@ -164,6 +164,7 @@ adapt2_init(void **data, int *level, int nthreads, uint64_t chunksize,
|
||||||
adat->ppmd_data = NULL;
|
adat->ppmd_data = NULL;
|
||||||
adat->bsc_data = NULL;
|
adat->bsc_data = NULL;
|
||||||
lv = *level;
|
lv = *level;
|
||||||
|
if (lv > 10) lv = 10;
|
||||||
rv = ppmd_init(&(adat->ppmd_data), &lv, nthreads, chunksize, file_version, op);
|
rv = ppmd_init(&(adat->ppmd_data), &lv, nthreads, chunksize, file_version, op);
|
||||||
lv = *level;
|
lv = *level;
|
||||||
if (rv == 0)
|
if (rv == 0)
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <pcompress.h>
|
#include <pcompress.h>
|
||||||
#include <allocator.h>
|
#include <allocator.h>
|
||||||
#include <Ppmd8.h>
|
#include <Ppmd8.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PPMd model order to working set memory size mappings.
|
* PPMd model order to working set memory size mappings.
|
||||||
|
@ -52,6 +53,9 @@ static unsigned int ppmd8_mem_sz[] = {
|
||||||
(1200 << 20)
|
(1200 << 20)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static pthread_mutex_t mem_init_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
static int mem_inited = 0;
|
||||||
|
|
||||||
static ISzAlloc g_Alloc = {
|
static ISzAlloc g_Alloc = {
|
||||||
slab_alloc,
|
slab_alloc,
|
||||||
slab_free,
|
slab_free,
|
||||||
|
@ -75,6 +79,13 @@ ppmd_init(void **data, int *level, int nthreads, uint64_t chunksize,
|
||||||
{
|
{
|
||||||
CPpmd8 *_ppmd;
|
CPpmd8 *_ppmd;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&mem_init_lock);
|
||||||
|
if (!mem_inited) {
|
||||||
|
slab_cache_add(sizeof (CPpmd8));
|
||||||
|
slab_cache_add(ppmd8_mem_sz[*level]);
|
||||||
|
mem_inited = 1;
|
||||||
|
}
|
||||||
|
pthread_mutex_unlock(&mem_init_lock);
|
||||||
_ppmd = (CPpmd8 *)slab_alloc(NULL, sizeof (CPpmd8));
|
_ppmd = (CPpmd8 *)slab_alloc(NULL, sizeof (CPpmd8));
|
||||||
if (!_ppmd)
|
if (!_ppmd)
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
Loading…
Reference in a new issue