Comments (9)
It looks segmentation fault occurs while starting GC by memory manager used in CLHT. Could you comment out the line where memory manager releases memory allocated for prior hash table and then run your experiments again?
$ vi P-CLHT/src/clht_lb_res.c
Find the code line number 806
and comment out that line.
from recipe.
This works. Would it lead to memory leakage?
from recipe.
There would be memory leakage issue as we disabled epoch memory manager. I think that the problem happens while linking the memory manager library of CLHT (ssmem) with libvmmalloc. Let me try to solve this issue later.
from recipe.
Hi Yige,
I have updated some implementations in benchmark source codes for P-CLHT (last commit). After this updates, P-CLHT looks working correctly with libvmmalloc without segmentation faults at least on my machine.
The segmentation faults happen because gc procedures caused by rehashing started earlier than every thread finishes the initialization of gc threads.
I solved this problem by adding some barriers making threads wait until every thread finishes the initialization of garbage collector.
Could you do git pull once and then test it on your machine again? If you still confirm segmentation faults, please let me know.
Thanks,
Sekwon
from recipe.
Hi Sekwon,
The patch resolves the segfault, so I'm closing the issue.
It seems the clht_gc_release (garbage collector?) is consuming much running time. The throughput drops from ~94.24 ops/us to ~76.79 ops/us on my machine, from before the patch (with clht_gc_release commented out) to after the patch.
Thanks,
Yige
from recipe.
Hi Yige,
As you confirmed, gc procedures can influence the performance of CLHT. But, we also need to consider that CCEH has no epoch memory manager for reclaiming old hash table and it results in memory leaks while CLHT handles it.
Thanks,
Sekwon
from recipe.
Hi Sekwon,
I tried running YCSB workloada with recordcount=operationcount=10000000 and getting another segfault on gc. It's tested on DRAM, with not LD_PRELOAD for emulated pmem.
RECIPE$ ./build/ycsb clht a randint uniform 1
clht, workloada, randint, uniform, threads 1
Loaded 10000001 keys
Throughput: load, 17.891783 ,ops/us
Segmentation fault (core dumped)
RECIPE$ gdb build/ycsb core
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000055a387bba486 in ssmem_release ()
[Current thread is 1 (Thread 0x7f31e2fff700 (LWP 1702))]
(gdb) bt
#0 0x000055a387bba486 in ssmem_release ()
#1 0x000055a387bb994e in clht_gc_release ()
#2 0x000055a387bb8e00 in ht_resize_pes ()
#3 0x000055a387bb873c in ht_status ()
#4 0x000055a387bb8b3e in clht_put ()
#5 0x000055a387b5380d in std::thread::_State_impl<std::thread::_Invoker<std::tuple<ycsb_load_run_randint(int, int, int, int, int, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&)::{lambda()#10}> > >::_M_run() ()
#6 0x00007f32412d966f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007f32415ac6db in start_thread (arg=0x7f31e2fff700) at pthread_create.c:463
#8 0x00007f324099688f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
from recipe.
Yige,
Sorry for confusion.
I missed to add gc initialization at run phase.
I have updated it through recent commit.
Could you do git pull once and then check it again?
from recipe.
Hi SeKwon,
This has been fixed by the latest commit so I'm closing the issue.
F.Y.I. I also noticed an increase in the throughput variance.
Thanks,
Yige
from recipe.
Related Issues (14)
- Is there any plan on supporting the iterator for masstree? HOT 2
- Read committed
- Search non-existing keys in P-Masstree HOT 2
- FAST_FAIR Range Bug HOT 4
- Crash consistency bug in clht_gc_free HOT 2
- Crash consistency issue after acquiring bucket locks HOT 3
- P-Masstree not Working Correctly with String Keys HOT 10
- Scalability Issues in Optane HOT 8
- Crash-consistency bug in P-CLHT `clht_gc_collect_cond` HOT 2
- some questions about the usage of Optane DC HOT 1
- Segmentation fault in ycsb HOT 3
- Port RECIPE data structures to libpmem HOT 2
- some questions about CLFLUSH_OPT/CLWB HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from recipe.