vmware-archive / go-pmem-transaction

Golang library for using persistent memory
Other
29 stars 5 forks source link

Use a bitmap to manage transaction handles #17

Closed jerrinsg closed 5 years ago

jerrinsg commented 5 years ago

Using a channel to manage transaction handles was seen to be a source of bottleneck while running memtier-benchmark. This commit introduces a bitmap array that is atomically set and unset to manage transaction handles.

jerrinsg commented 5 years ago

Throughput (MB/s) comparison - bitmap vs channel

Key pattern - R:R

Write ratio Bitmap Channel
20 408.381 138.42
40 381.405 245.848
60 368.596 344.819
80 365.735 414.608
100 361.924 419.496

Key pattern - S:S

Write ratio Bitmap Channel
20 416.044 156.254
40 369.088 277.735
60 558.006 573.923
80 413.001 428.629
100 302.650 301.448

Configuration Clients per thread = 50 Threads = 4 Requests/client = 100000 Data-size=1000 Pipeline=100

jerrinsg commented 5 years ago

Merged in #20