提交 96b3c5e7 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

Re-enable lazy TLB shootdowns; they are somewhat useful after all.

Some results from mapbench on josmp (with DEBUG 0 and VM_RADIX): When TLB shootdowns are disabled (comment out tlbflush in vmap::remove), mapbench is perfectly scalable (perhaps a little slow, but it's hard to tell, because I didn't used to run with readaccess=1): $ time mapbench 1 12403435727 cycles $ time mapbench 2 12439895511 cycles $ time mapbench 16 12200449501 cycles With TLB shootdowns, things are slightly less scalable, and significantly slower: $ time mapbench 1 40044138778 cycles $ time mapbench 2 44034668320 cycles $ time mapbench 16 57569203944 cycles Lazy TLB shootdowns improve performance on 1 core, and have some but not nearly perfect scalability: $ time mapbench 1 12658404885 cycles $ time mapbench 2 29790759720 cycles $ time mapbench 16 39160961925 cycles Next step is to understand why TLB shootdowns are so expensive and how to make them cheaper/scalable.
上级 7a4abfef
......@@ -12,7 +12,7 @@ enum { npg = 1 };
static pthread_barrier_t bar;
static pthread_barrier_t bar2;
#define NITER 10 // 1000000
#define NITER 1000000
void*
thr(void *arg)
......
......@@ -18,7 +18,7 @@
#include "kmtrace.hh"
enum { vm_debug = 0 };
enum { tlb_lazy = 0 };
enum { tlb_lazy = 1 };
/*
* vmnode
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论