Share RAM over network

I've only considered a standalone application that runs on a "standard" machine with no ability to simply install it elsewhere or use specialist hardware or software. Other answers (correctly) address software migration or dedicated hardware for the task.

Any way to "share RAM" via a network will be subject to limitations of that network medium. As even gigabit Ethernet is limited to approximately 100MB/s (megabytes) this means that your "RAM" speed will be limited too.

100MB/s is a tiny fraction of the speed of the RAM that is actually in your system. Your program will be painfully slow and feel like it is running on a computer from the early 90's

Modern hard drives are, for sequential read and write, slightly faster than this. SSDs are several times faster.

This is ignoring latency problems which will make your program an order of magnitude slower again.

Due to the slowness and other technical issues involved this is a not an issue anyone has ever likely considered to be worth attempting to solve for "home" or "office" systems. It's cheaper and more effective to buy more RAM if it is needed.

Just buy more RAM, or even an SSD for a page file. There is no other way to do this that does not require an insane amount of work or hardware for little benefit.

Just for completeness: InfiniBand allows direct access to the memory of other machines.

However, it requires:

  • An InfiniBand switch
  • A InfiniBand add on card in each machine
  • The application has to be programmed specifically to use this

It does NOT work over an existing network, it requires a completely independent infrastructure for all connected nodes. It also does NOT work over the Internet

Is there any alternative solution?

This depends highly on the nature of the data.

You could run 2 different mysql servers on 2 different machines.

Then divide the data in 1/2 and write the program to automatically know which server to go to.

Of course this can be scaled to any number of servers if you have them available.