Skip to content

Conversation

@ldorau
Copy link
Member

@ldorau ldorau commented Sep 8, 2022

In this example we want to introduce to you a basic way of accessing Persistent Memory when it is installed in a remote system. Remote Persistent Memory (or RPMem for short) is a way of doing this via a network by making use of the Remote Direct Memory Access (RDMA) technology.

This example is an introduction to RPMem. We will guide you briefly through setting up all required hardware and software components and verifying whether the connection works properly. Having that, we will show you how to access Persistent Memory on a remote system using the librpma library.

After completing this example you will know:

  • what is RPMem and what it is good for,
  • how RPMem is different comparing to PMem,
  • what hardware and software components are required to start using RPMem,
  • how to verify whether the RDMA network works properly,
  • how to use librpma API to:
  • establish a connection,
  • prepare memory for remote manipulation,
  • manipulate memory on the remote system,
  • assure persistency of stores to the remote system.

Step-by-step you will:

  • test the connection on the basic level using ping,
  • test the connection RDMA capabilities using rping,
  • review an application focusing on establishing a connection,
  • review an application reading remote system's memory and writing it back in the persistent manner.

Co-authored-by: Oksana Salyk [email protected]
Co-authored-by: Jan M Michalski [email protected]

Signed-off-by: Lukasz Dorau [email protected]

Ref: pmemhackathon/hackathon.web#3


This change is Reviewable

Copy link
Contributor

@lukaszstolarczuk lukaszstolarczuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 3 of 18 files at r1.
Reviewable status: 3 of 18 files reviewed, 2 unresolved discussions (waiting on @ldorau and @lukaszstolarczuk)


examples/R/CMakeLists.txt line 35 at r1 (raw file):

endmacro()

add_flag(-Wall)

do we really need to check if they are supported? if they are not we don't throw any CMake errors, so it won't matter;

This Cmake will be a bit simpler without this macro, I believe


examples/R/common.h line 8 at r1 (raw file):

 */

#ifndef COMMON_H

I believe you can add some prefix, like PMEMHACKATHON_ to this header guard

In this example we want to introduce to you a basic way of accessing
Persistent Memory when it is installed in a remote system.
Remote Persistent Memory (or RPMem for short) is a way of doing this
via a network by making use of the Remote Direct Memory Access (RDMA)
technology.

This example is an introduction to RPMem. We will guide you briefly through
setting up all required hardware and software components and verifying whether
the connection works properly. Having that, we will show you how to access
Persistent Memory on a remote system using the librpma library.

After completing this example you will know:
- what is RPMem and what it is good for,
- how RPMem is different comparing to PMem,
- what hardware and software components are required to start using RPMem,
- how to verify whether the RDMA network works properly,
- how to use librpma API to:
- establish a connection,
- prepare memory for remote manipulation,
- manipulate memory on the remote system,
- assure persistency of stores to the remote system.

Step-by-step you will:
- test the connection on the basic level using ping,
- test the connection RDMA capabilities using rping,
- review an application focusing on establishing a connection,
- review an application reading remote system's memory and writing it back
  in the persistent manner.

Co-authored-by: Oksana Salyk <[email protected]>
Co-authored-by: Jan M Michalski <[email protected]>

Signed-off-by: Lukasz Dorau <[email protected]>
@ldorau ldorau force-pushed the example-R-add-the-librpma-example branch from 10fc2f0 to 8adce02 Compare September 9, 2022 13:10
Copy link
Member Author

@ldorau ldorau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 3 of 18 files reviewed, 2 unresolved discussions (waiting on @lukaszstolarczuk)


examples/R/CMakeLists.txt line 35 at r1 (raw file):

Previously, lukaszstolarczuk (Łukasz Stolarczuk) wrote…

do we really need to check if they are supported? if they are not we don't throw any CMake errors, so it won't matter;

This Cmake will be a bit simpler without this macro, I believe

Done.


examples/R/common.h line 8 at r1 (raw file):

Previously, lukaszstolarczuk (Łukasz Stolarczuk) wrote…

I believe you can add some prefix, like PMEMHACKATHON_ to this header guard

Done.

Copy link
Contributor

@lukaszstolarczuk lukaszstolarczuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thx!

👍

Reviewable status: 3 of 18 files reviewed, all discussions resolved (waiting on @lukaszstolarczuk)

Copy link
Member Author

@ldorau ldorau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @lukaszstolarczuk :-)

Reviewable status: 3 of 18 files reviewed, all discussions resolved (waiting on @lukaszstolarczuk)

Copy link
Contributor

@igchor igchor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewable status: 3 of 18 files reviewed, all discussions resolved (waiting on @lukaszstolarczuk)

@igchor igchor merged commit 165103a into pmemhackathon:main Sep 9, 2022
@ldorau ldorau deleted the example-R-add-the-librpma-example branch September 9, 2022 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants