Skip to content
This repository has been archived by the owner on Mar 22, 2023. It is now read-only.

Commit

Permalink
New API: _new() then _set_XXX() then _add().
Browse files Browse the repository at this point in the history
Avoids breaking API every time we add a new knob that needs to be set
at cache creation.
  • Loading branch information
kilobyte committed Mar 29, 2019
1 parent 95bf5fc commit 838b4f3
Show file tree
Hide file tree
Showing 11 changed files with 297 additions and 160 deletions.
19 changes: 10 additions & 9 deletions benchmarks/bench_micro.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,14 @@ struct context {
*/
static VMEMcache *
bench_init(const char *path, size_t size, size_t extent_size,
enum vmemcache_repl_p replacement_policy,
enum vmemcache_repl_p repl_p,
unsigned n_threads, struct context *ctx)
{
VMEMcache *cache = vmemcache_new(path, size, extent_size,
replacement_policy);
if (cache == NULL)
UT_FATAL("vmemcache_new: %s (%s)", vmemcache_errormsg(), path);
VMEMcache *cache = vmemcache_new();
vmemcache_set_size(cache, size);
vmemcache_set_eviction_policy(cache, repl_p);
if (vmemcache_add(cache, path))
UT_FATAL("vmemcache_add: %s (%s)", vmemcache_errormsg(), path);

for (unsigned i = 0; i < n_threads; ++i) {
ctx[i].cache = cache;
Expand Down Expand Up @@ -197,12 +198,12 @@ print_bench_results(const char *op_name, unsigned n_threads,
*/
static void
run_bench_put(const char *path, size_t size, size_t extent_size,
enum vmemcache_repl_p replacement_policy,
enum vmemcache_repl_p repl_p,
unsigned n_threads, os_thread_t *threads,
unsigned ops_count, struct context *ctx)
{
VMEMcache *cache = bench_init(path, size, extent_size,
replacement_policy, n_threads, ctx);
repl_p, n_threads, ctx);

unsigned ops_per_thread = ops_count / n_threads;

Expand Down Expand Up @@ -238,12 +239,12 @@ on_evict_cb(VMEMcache *cache, const void *key, size_t key_size, void *arg)
*/
static void
run_bench_get(const char *path, size_t size, size_t extent_size,
enum vmemcache_repl_p replacement_policy,
enum vmemcache_repl_p repl_p,
unsigned n_threads, os_thread_t *threads,
unsigned ops_count, struct context *ctx)
{
VMEMcache *cache = bench_init(path, size, extent_size,
replacement_policy, n_threads, ctx);
repl_p, n_threads, ctx);

int cache_is_full = 0;
vmemcache_callback_on_evict(cache, on_evict_cb, &cache_is_full);
Expand Down
9 changes: 6 additions & 3 deletions benchmarks/bench_simul.c
Original file line number Diff line number Diff line change
Expand Up @@ -603,10 +603,13 @@ static void run_bench()
os_mutex_init(&ready.mutex);
ready.wanted = n_threads;

cache = vmemcache_new(dir, cache_size, cache_extent_size,
cache = vmemcache_new();
vmemcache_set_size(cache, cache_size);
vmemcache_set_extent_size(cache, cache_extent_size);
vmemcache_set_eviction_policy(cache,
(enum vmemcache_repl_p)repl_policy);
if (!cache)
UT_FATAL("vmemcache_new: %s (%s)", vmemcache_errormsg(), dir);
if (vmemcache_add(cache, dir))
UT_FATAL("vmemcache_add: %s (%s)", vmemcache_errormsg(), dir);

if (latency_samples) {
latencies = malloc((ops_count * n_threads + 1) *
Expand Down
19 changes: 11 additions & 8 deletions src/libvmemcache.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,16 +115,19 @@ typedef void vmemcache_on_evict(VMEMcache *cache,
typedef void vmemcache_on_miss(VMEMcache *cache,
const void *key, size_t key_size, void *arg);

VMEMcache *
vmemcache_new(void);

int vmemcache_set_eviction_policy(VMEMcache *cache,
enum vmemcache_repl_p repl_p);
int vmemcache_set_size(VMEMcache *cache, size_t size);
int vmemcache_set_extent_size(VMEMcache *cache, size_t extent_size);

#ifndef _WIN32
VMEMcache *vmemcache_new(const char *path, size_t max_size, size_t extent_size,
enum vmemcache_repl_p replacement_policy);
int vmemcache_add(VMEMcache *cache, const char *path);
#else
VMEMcache *vmemcache_newU(const char *path, size_t max_size,
size_t extent_size,
enum vmemcache_repl_p replacement_policy);
VMEMcache *vmemcache_newW(const wchar_t *path, size_t max_size,
size_t extent_size,
enum vmemcache_repl_p replacement_policy);
int vmemcache_addU(VMEMcache *cache, const char *path);
int vmemcache_addW(VMEMcache *cache, const wchar_t *path);
#endif

void vmemcache_delete(VMEMcache *cache);
Expand Down
4 changes: 4 additions & 0 deletions src/libvmemcache.map
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ LIBVMEMCACHE_1.0 {
global:
vmemcache_new;
vmemcache_delete;
vmemcache_set_eviction_policy;
vmemcache_set_size;
vmemcache_set_extent_size;
vmemcache_add;
vmemcache_put;
vmemcache_get;
vmemcache_evict;
Expand Down
Loading

0 comments on commit 838b4f3

Please sign in to comment.