mirror of https://github.com/yandex/odyssey.git
machinarium: allow to configure pool_size, cache and stack_size
This commit is contained in:
parent
a7f3c6ebe6
commit
22c55fd89b
|
@ -35,6 +35,17 @@ typedef struct machine_channel_private machine_channel_t;
|
||||||
typedef struct machine_tls_private machine_tls_t;
|
typedef struct machine_tls_private machine_tls_t;
|
||||||
typedef struct machine_io_private machine_io_t;
|
typedef struct machine_io_private machine_io_t;
|
||||||
|
|
||||||
|
/* configuration */
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_stack_size(int size);
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_pool_size(int size);
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_coroutine_cache_size(int size);
|
||||||
|
|
||||||
/* main */
|
/* main */
|
||||||
|
|
||||||
MACHINE_API int
|
MACHINE_API int
|
||||||
|
|
37
sources/mm.c
37
sources/mm.c
|
@ -8,6 +8,9 @@
|
||||||
#include <machinarium.h>
|
#include <machinarium.h>
|
||||||
#include <machinarium_private.h>
|
#include <machinarium_private.h>
|
||||||
|
|
||||||
|
static int machinarium_stack_size = 0;
|
||||||
|
static int machinarium_pool_size = 0;
|
||||||
|
static int machinarium_coroutine_cache_size = 0;
|
||||||
static int machinarium_initialized = 0;
|
static int machinarium_initialized = 0;
|
||||||
mm_t machinarium;
|
mm_t machinarium;
|
||||||
|
|
||||||
|
@ -17,6 +20,24 @@ machinarium_page_size(void)
|
||||||
return sysconf(_SC_PAGESIZE);
|
return sysconf(_SC_PAGESIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_stack_size(int size)
|
||||||
|
{
|
||||||
|
machinarium_stack_size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_pool_size(int size)
|
||||||
|
{
|
||||||
|
machinarium_pool_size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_API void
|
||||||
|
machinarium_set_coroutine_cache_size(int size)
|
||||||
|
{
|
||||||
|
machinarium_coroutine_cache_size = size;
|
||||||
|
}
|
||||||
|
|
||||||
MACHINE_API int
|
MACHINE_API int
|
||||||
machinarium_init(void)
|
machinarium_init(void)
|
||||||
{
|
{
|
||||||
|
@ -24,12 +45,22 @@ machinarium_init(void)
|
||||||
mm_msgcache_init(&machinarium.msg_cache);
|
mm_msgcache_init(&machinarium.msg_cache);
|
||||||
size_t page_size;
|
size_t page_size;
|
||||||
page_size = machinarium_page_size();
|
page_size = machinarium_page_size();
|
||||||
|
/* set default configuration, if not preset */
|
||||||
|
if (machinarium_stack_size == 0)
|
||||||
|
machinarium_stack_size = page_size * 3;
|
||||||
|
if (machinarium_stack_size < (int)page_size)
|
||||||
|
return -1;
|
||||||
|
if (machinarium_coroutine_cache_size == 0)
|
||||||
|
machinarium_coroutine_cache_size = 32;
|
||||||
|
if (machinarium_pool_size == 0)
|
||||||
|
machinarium_pool_size = 3;
|
||||||
mm_coroutine_cache_init(&machinarium.coroutine_cache,
|
mm_coroutine_cache_init(&machinarium.coroutine_cache,
|
||||||
page_size * 3,
|
machinarium_stack_size,
|
||||||
page_size, 100);
|
page_size,
|
||||||
|
machinarium_coroutine_cache_size);
|
||||||
mm_tls_init();
|
mm_tls_init();
|
||||||
mm_taskmgr_init(&machinarium.task_mgr);
|
mm_taskmgr_init(&machinarium.task_mgr);
|
||||||
mm_taskmgr_start(&machinarium.task_mgr, 3);
|
mm_taskmgr_start(&machinarium.task_mgr, machinarium_pool_size);
|
||||||
machinarium_initialized = 1;
|
machinarium_initialized = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue