Font Size: a A A

The Design And Implement Of A Memory Allocator Based On Non-Volatile Memory(NVM)

Posted on:2019-02-17Degree:MasterType:Thesis
Country:ChinaCandidate:J S ZhouFull Text:PDF
GTID:2348330545485233Subject:Master of Engineering
Abstract/Summary:PDF Full Text Request
The age of Internet is producing a large amount of data,which has nurtured a variety of data-intensive applications.Data-intensive applications need huge memory space,and usually have the requirement of data persistence.The traditional computer storage architecture is the combination of volatile memory and hard disk,that is,DRAM + DISK.Data-intensive applications usually calculate and cache hot data in DRAM,while store results in DISK.Swapping data between DRAM and DISK make software complex and slow,due to the big difference between the two devices.NVM(Non-volatile memory)is a type of memory device that can retrieve stored information even after having been power cycled.Generally speaking,NVM has multiple capacity,lower price compared to DRAM,and the access latency is much shorter compared to DISK.NVM has the advantages of both DRAM and DISK,thus it is hopeful to be the preferred solution of data-intensive applications,instead of the traditional DRAM+DISK store architecture.Transplanting data-intensive applications to NVM will be a big demand.As an intern of Intel,my job is to transplant Redis to 3D XPointer,a new high-performance NVM.However,the big difference between NVM and DRAM make the popular memory allocators which are designed for DRAM hard to work on NVM.A NVM allocator should support malloc_at(addr,size)operation,where both the address and the size are given,so that user can access the persisted data on NVM by address.And the area won't be allocated again so that it won't be destroyed.The major work of this thesis is to design a memory allocator based on NVM,which is named libnvmalloc.Libnvmalloc uses a buddy allocator based on AVL tree as the coarse-grained allocator,and a 4096-bit bitmap which supports binary search as the fine-grained allocator.The design makes malloc(),malloc_at()and free()have good performance.In the end of this thesis,Redis is token as an example to demonstrate and test libnvmalloc.The result shows that,when running on NVM,Redis has obviously shorter response latency and larger throughput,and the occupied size of DRAM drops largely.Libnvmalloc provided by this thesis is a general-purpose library,which makes it more convenient to transplant more applications to NVM in the future.
Keywords/Search Tags:Data-intensive Applications, Redis, Memory Allocator, Non-Volatile memory, 3D XPoint
PDF Full Text Request
Related items