Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What is the difference between "network RAM" and "distributed shared memory" (DSM)? Basically, I know that both of them provide a shared storage on RAM among all the systems in a cluster. So, what is the difference?

share|improve this question
Ha. Thought this might be easily Google-able, but when I Googled it, the first result was this very post, and no other results seemed to quickly answer it. – BenjiWiebe Jun 15 '14 at 2:33
Yeah, I wonder it could be found by a single search, but It seems that I should read long and detailed papers! I just seek a simple answer! – Ali Jun 15 '14 at 2:35
Do you have reason to believe there is a difference? In Google search, there are very few relevant results for "network RAM", which makes me think that maybe it is a rare term meaning "distributed shared memory". – BenjiWiebe Jun 15 '14 at 2:36
I am sure there is! This is what our lecturer has asked us in the "Cluster Computing" course! "Why don't we use a network RAM instead of DSM (like openSHMEM)?", he asked! I want to know the difference before I can answer this design choice. – Ali Jun 15 '14 at 2:39
This page defines network RAM as remote DRAM swap space. I.e., if one node is underutilizing memory capacity, using it's DRAM as swap space for a node overutilizing its memory capacity can provide lower latency. (Semi-)local flash would have a different set of tradeoffs. As swap space network RAM is not directly addressable and page-sized blocks might be friendlier to non-RDMA-capable Ethernet. (I might come back and expand this into an answer but don't count on it.) – Paul A. Clayton Jun 15 '14 at 19:58
up vote 0 down vote accepted

Network RAM is effectively a remote RAM disk for swapping out pages. As such, the home node for the address of the page of memory is different from the node providing the RAM storage (when the page has been swapped out). The primarily intent of network RAM is to balance utilization of memory capacity, especially when some nodes are idle. The node providing the RAM would not be able to address that memory at the application level (at least not as memory associated with that storage-providing node).

By using the swap interface, implementing Network RAM would be substantially simpler than implementing a more general migration mechanism. Network RAM also uses a single moderate message size, so transfers would be more friendly to non-RDMA-capable networks than, e.g., cache line sized transfers.

In distributed shared memory, the memory for the address space associated with a node is entirely contained at that node, but any node that is part of the same partitioned global address space can address that memory. Distributed shared memory provides a basis for distributed computation by allowing other nodes to address remote memory.

To confuse matters, a DSM system can perform optimizations to reduce network traffic and latency such as replication and migration of memory.

Network RAM is effectively migration of memory based on low temporal locality to a node with excess capacity and can be implemented for a DSM system, a message-passing system, or even a cluster of nodes running fully independent workloads. Network RAM by itself does not provide any means for other nodes to address remote active memory, so it cannot be used as a basis for distributing computation.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.