A method, comprising: receiving a request to instantiate a virtual machine, wherein the virtual machine is a new virtual machine or a previously saved virtual machine; selecting a virtual NUMA node topology for the virtual machine, the virtual NUMA node topology including a plurality of virtual NUMA nodes, each virtual NUMA node of the plurality includes a virtual processor and guest physical addresses and each virtual NUMA node in the plurality has a different topology than other virtual NUMA nodes in the plurality, wherein the topology of the virtual machine is generated independently from the physical topology of the computer system; instantiating the virtual machine on a computer system, the virtual machine including the plurality of virtual NUMA nodes; adjusting, based on memory pressure in a specific virtual NUMA node of the plurality, an amount of guest memory assigned to the specific virtual NUMA node; wherein adjusting the amount of guest memory further comprises: removing at least one memory block of guest memory from the specific virtual NUMA node; adding the removed at least one memory block of guest memory to a second virtual NUMA node; the method being further characterized in: if the memory pressure in the specific virtual NUMA node is not relieved by adjusting the amount of guest memory, sending a signal to a hypervisor which is configured to remap the specific virtual NUMA node to a specific NUMA node of the computer system and adjust the memory inside each of the plurality of virtual NUMA nodes of the virtual machine. receiving a request to instantiate a virtual machine, wherein the virtual machine is a new virtual machine or a previously saved virtual machine; selecting a virtual NUMA node topology for the virtual machine, the virtual NUMA node topology including a plurality of virtual NUMA nodes, each virtual NUMA node of the plurality includes a virtual processor and guest physical addresses and each virtual NUMA node in the plurality has a different topology than other virtual NUMA nodes in the plurality, wherein the topology of the virtual machine is generated independently from the physical topology of the computer system; instantiating the virtual machine on a computer system, the virtual machine including the plurality of virtual NUMA nodes; adjusting, based on memory pressure in a specific virtual NUMA node of the plurality, an amount of guest memory assigned to the specific virtual NUMA node; wherein adjusting the amount of guest memory further comprises: removing at least one memory block of guest memory from the specific virtual NUMA node; adding the removed at least one memory block of guest memory to a second virtual NUMA node; the method being further characterized in: if the memory pressure in the specific virtual NUMA node is not relieved by adjusting the amount of guest memory, sending a signal to a hypervisor which is configured to remap the specific virtual NUMA node to a specific NUMA node of the computer system and adjust the memory inside each of the plurality of virtual NUMA nodes of the virtual machine. removing at least one memory block of guest memory from the specific virtual NUMA node; adding the removed at least one memory block of guest memory to a second virtual NUMA node; the method being further characterized in: if the memory pressure in the specific virtual NUMA node is not relieved by adjusting the amount of guest memory, sending a signal to a hypervisor which is configured to remap the specific virtual NUMA node to a specific NUMA node of the computer system and adjust the memory inside each of the plurality of virtual NUMA nodes of the virtual machine.