diff --git a/model/numa/__init__.py b/model/numa/__init__.py
index d32abb5b847cf62dfd4bdeb5ebb6f2a7e6ba526a..e06ed909c5d03855f81789402dc1382f02e3bdd7 100644
--- a/model/numa/__init__.py
+++ b/model/numa/__init__.py
@@ -151,9 +151,36 @@ class cmd_numa(gdb.Command):
         if args:
             gdb.execute("numa {}".format(args))
 
+def size_fmt(num, suffix='B'):
+    for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
+        if abs(num) < 1024.0:
+            return "%3.0f%s%s" % (num, unit, suffix)
+        num /= 1024.0
+    return "%.0f%s%s" % (num, 'Yi', suffix)
+            
+class cmd_numa_spread_pages(gdb.Command):
+    def __init__ (self):
+        gdb.Command.__init__ (self, "numa spread_pages", gdb.COMMAND_NONE)
+        
+    def invoke (self, args, from_tty):
+        if gdb.selected_inferior().pid == 0:
+            log_user.error("No PID for this inferior. Is it running?")
+            return
+        
+        with open("/proc/{}/maps".format(gdb.selected_inferior().pid)) as fmap:
+            # search for "00601000-00622000 rw-p 00000000 00:00 0  [heap]"
+            for line in fmap.readlines():
+                if "heap" in line: break
+        start, stop = line.split(" ")[0].split("-")
+        start, stop = int(start, 16), int(stop, 16)
+        size = size_fmt(stop - start)
+        log_user.info("Process heap goes from {} to {} (={})".format(hex(start), hex(stop), size))
+        
 def on_activated():
     cmd_numa_current_node()
     cmd_numa_pagemap()
     cmd_numa_current_node_by_call()
+    cmd_numa_spread_pages()
+    
 def initialize():
     cmd_numa()