Table of Contents

Software Persistent Memory

This project's initial motivation came from the need to adequately store and manage data structures that need to be persistent in the ABLE project.

Authors

Project Meetings

Hecura Proposal Meetings

Project Goals

Design

Architecture

There are two mayor subsystems: the data manager and the layout manager. The data manager exports an API that allows applications handling of containers, it also manages all the metadata of the containers and sends reads and write requests to the layout manager assuming a logical linear block address. The layout manager provides a virtual address space to the data manager, it uses chunks as its basic allocation and operation unit, these can be later remapped to a different location in an effort to improve performance.

Persistent Copy Update Policy

API

Detailed Operations

Current Challenges and Open Questions

A: During type analysis phase of the compilation this information is known.

Installation Instructions

These instructions will guide through the installation of SoftPM on a Ubuntu system. These instruction may not work on other distributions.

SoftPM depends on the following 3er party software and hardware
Installing the dependencies
      $ uname --all
      Linux maxwell 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:21:58 UTC 2010 x86_64 GNU/Linux 
      $ sudo aptitude install libglib2.0-0-dev

command:

      $ sudo aptitude install subversion
      $ sudo aptitude install ocaml-nox
      $ svn co https://doomsday.cs.fiu.edu/svn/pds/cil/

This will create a new folder called cil within the current folder. Now we need to compile CIL. To do so, run the following commands:

      $ ./configure  #this will setup the makefiles
      $ make         #to compile cil and all its modules

At this point, you should have cil compiled. It is convenient to add the following folders to $PATH variable.

PATH_TO_FOLDER/cil/bin

PATH_TO_FOLDER/cil/obj/x86_LINUX

This can be done by adding the following line at the end of ~/.bashrc

      export PATH=$PATH:/PATH_TO_FOLDER/cil/bin:/PATH_TO_FOLDER/cil/obj/x86_LINUX/

where PATH_TO_FOLDER is the path to the folder containing cil. Now we update $PATH by running the following command:

      $ source ~/.bashrc

To check that CIL have been successfully installed, run the following command and make sure you get a similar output:

      $ cilly | grep softpm
      /home/lmarmol/Projects/cil/cil-1.3.7/obj/x86_LINUX/cilly.asm.exe -help
        --dosoftpm                   Enable source transformations for softpm
        --dosoftpmcounter            Enable softpmcounter: prints a message for avery SoftPM rule found
        --dosoftpmcpp                Enable softpmcpp: pre-processor for LLVM generated c-code
      $ sudo aptitude install llvm llvm-gcc

To see an example of how to convert C++ code in C code using LLVM, follow this link http://llvm.org/docs/FAQ.html#translatecxx

Installing and compiling the source code

Now that we have installed all the dependecies, we can check-out the SoftPM source code from the svn server. To do so, run the following command:

      svn co https://doomsday.cs.fiu.edu/svn/pds/code/src/

This will create a new folder named src within the current folder. Change directories into that folder and run the following commands to compilie SoftPM:

      $ source config.sh
      $ make

If everything worked out as planed, you should now have a working version of SoftPM. To make sure that everything is working, change directory to tests and run the following command:

      $ ./run-cmp.sh btree_simple/
      ...
      tree_node: 2142757034
      tree_node: 2145174067
      tree_node: 2145854098
      tree_node: 2147469841
      tree_node_cmp: 1

Notice that the last line is tree_node_cmp: 1, which is the expected output.

References