All Projects → jerrinsg → Go Pmem

jerrinsg / Go Pmem

Licence: other
Native persistent memory support for Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Go Pmem

MemoryAllocator.KanameShiki
Fast multi-threaded memory allocator
Stars: ✭ 73 (+28.07%)
Mutual labels:  memory-management
Jemalloc.net
A native memory manager for .NET
Stars: ✭ 308 (+440.35%)
Mutual labels:  memory-management
Redis Memory Analyzer
Redis memory profiler to find the RAM bottlenecks throw scaning key space in real time and aggregate RAM usage statistic by patterns.
Stars: ✭ 591 (+936.84%)
Mutual labels:  memory-management
rs-process-memory
A rust library that allows you to read/write into the memory of other processes
Stars: ✭ 63 (+10.53%)
Mutual labels:  memory-management
Heap Layers
Heap Layers: An Extensible Memory Allocation Infrastructure
Stars: ✭ 260 (+356.14%)
Mutual labels:  memory-management
Mps
The Memory Pool System
Stars: ✭ 351 (+515.79%)
Mutual labels:  memory-management
scaraOS
A 32bit multiboot OS kernel for IA32 (PC/AT) systems.
Stars: ✭ 31 (-45.61%)
Mutual labels:  memory-management
Gc
Simple, zero-dependency garbage collection for C
Stars: ✭ 851 (+1392.98%)
Mutual labels:  memory-management
Structlayout
Visual Studio Extension for C++ struct memory layout visualization
Stars: ✭ 270 (+373.68%)
Mutual labels:  memory-management
The holy book of x86
A simple guide to x86 architecture, assembly, memory management, paging, segmentation, SMM, BIOS....
Stars: ✭ 577 (+912.28%)
Mutual labels:  memory-management
o1heap
Constant-complexity deterministic memory allocator (heap) for hard real-time high-integrity embedded systems
Stars: ✭ 119 (+108.77%)
Mutual labels:  memory-management
Stringsareevil
Reducing memory allocations from 7.5GB to 32KB
Stars: ✭ 260 (+356.14%)
Mutual labels:  memory-management
Scalene
Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python
Stars: ✭ 4,819 (+8354.39%)
Mutual labels:  memory-management
redis-key-dashboard
This tool allows you to do a small analysis of the amount of keys and memory you use in Redis. It allows you to see overlooked keys and notice overuse.
Stars: ✭ 42 (-26.32%)
Mutual labels:  memory-management
Articles Translator
📚Translate the distinct technical blogs. Please star or watch. Welcome to join me.
Stars: ✭ 606 (+963.16%)
Mutual labels:  memory-management
python-memory-management-course
Demo code exploring Python's memory models and collection algorithms from the Talk Python Training course.
Stars: ✭ 31 (-45.61%)
Mutual labels:  memory-management
Sinsofmemoryleaks
Some common patterns of memory leaks in Android development and how to fix/avoid them
Stars: ✭ 343 (+501.75%)
Mutual labels:  memory-management
Errand Boy
A memory-conscious alternative to os.fork() and subprocess.Popen().
Stars: ✭ 34 (-40.35%)
Mutual labels:  memory-management
Sralloc
Memory allocators
Stars: ✭ 25 (-56.14%)
Mutual labels:  memory-management
Micro Mitten
You might not need your garbage collector
Stars: ✭ 470 (+724.56%)
Mutual labels:  memory-management

Actions Status

Introduction

go-pmem is a project that adds native persistent memory support to Go. This is achieved through a combination of language extensions, compiler instrumentation, and runtime changes. Detailed design and implementation details of go-pmem can be found in the ATC 2020 paper on go-pmem. We have also created a website which contains additional documentation and performance reports. go-pmem is based on the 1.15 release version of Go.

How to Build

The persistent memory changes introduced in go-pmem is currently supported only on Linux amd64. To compile the codebase:

$ cd src
$ ./make.bash

The compiled Go binary will be placed in the bin/ directory. An example application (example.go) written to use persistent memory features provided by go-pmem can be found in the design/ folder. To run this application, compile it using the go-pmem binary as shown below:

$ cd design
$ GO111MODULE=off ../bin/go build -txn example.go
$ ./example

The official Go documentation on building the Go compiler can be found here.

Related Projects

go-pmem-transaction

go-pmem-transaction project provides two packages that go-pmem depends on. The pmem package provides APIs to initialize persistent memory and access persistent memory data through named objects. The transaction package provides the transactional functionalities that go-pmem uses for enabling crash-consistent persistent memory data updates. Project home page - https://github.com/vmware/go-pmem-transaction

Go Redis

Go Redis is a Go implementation of Redis designed to run on persistent memory. It is multi-threaded and implements a subset of the Redis commands. The advantages of Go Redis are: much faster database load time on a server restart due to its data being readily available in persistent memory and much higher data throughput thanks to the multithreaded Go implementation. Project home page - https://github.com/vmware-samples/go-redis-pmem

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].