1. An apparatus for pooling memory resources across multiple nodes, comprising: a shared memory controller, wherein each node of the multiple nodes is connected to the shared memory controller; and a pool of memory connected to the shared memory controller, wherein a portion of the pool of memory is allocated to each node of the multiple nodes.