From e17328a227a47089e6f3c8fd82cc988f03807549 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Mon, 16 Feb 2015 03:33:47 -0500 Subject: mem: mmap the backing store with MAP_NORESERVE This patch ensures we can run simulations with very large simulated memories (at least 64 TB based on some quick runs on a Linux workstation). In essence this allows us to efficiently deal with sparse address maps without having to implement a redirection layer in the backing store. This opens up for run-time errors if we eventually exhausts the hosts memory and swap space, but this should hopefully never happen. --- src/sim/System.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/sim/System.py') diff --git a/src/sim/System.py b/src/sim/System.py index 630cd2a84..e24a1e6b2 100644 --- a/src/sim/System.py +++ b/src/sim/System.py @@ -59,6 +59,13 @@ class System(MemObject): "All memories in the system") mem_mode = Param.MemoryMode('atomic', "The mode the memory system is in") + # When reserving memory on the host, we have the option of + # reserving swap space or not (by passing MAP_NORESERVE to + # mmap). By enabling this flag, we accomodate cases where a large + # (but sparse) memory is simulated. + mmap_using_noreserve = Param.Bool(False, "mmap the backing store " \ + "without reserving swap") + # The memory ranges are to be populated when creating the system # such that these can be passed from the I/O subsystem through an # I/O bridge or cache -- cgit v1.2.3