Title
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
Austin T. Clements
- M. Frans Kaashoek
RadixVM: Scalable address spaces for multithreaded applications - - PowerPoint PPT Presentation
Title RadixVM: Scalable address spaces for multithreaded applications Austin T. Clements M. Frans Kaashoek Nickolai Zeldovich MIT CSAIL RadixVM: Scalable address spaces for multithreaded applications Parallel applications use VM intensively
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
00101110110100011110111001001100110000111001101110110000111010101110100101111011 10100101000100001110010010010000001000100011110010111001101001011111111011110001 00011111000010011111110100011101100011101100110010111001100000101100011001000011 11100100110100011111000110000101110010100011100001111011110101001111100001001110
Application
RadixVM: Scalable address spaces for multithreaded applications
Kernel
00101110110100011110111001001100110000111001101110110000111010101110100101111011 10100101000100001110010010010000001000100011110010111001101001011111111011110001 00011111000010011111110100011101100011101100110010111001100000101100011001000011 11100100110100011111000110000101110010100011100001111011110101001111100001001110
Application
RadixVM: Scalable address spaces for multithreaded applications
Runtime
Kernel
00101110110100011110111001001100110000111001101110110000111010101110100101111011 10100101000100001110010010010000001000100011110010111001101001011111111011110001 00011111000010011111110100011101100011101100110010111001100000101100011001000011 11100100110100011111000110000101110010100011100001111011110101001111100001001110
Application
RadixVM: Scalable address spaces for multithreaded applications
200 400 600 800 1000 1200 1 10 20 30 40 50 60 70 80 T
# cores Linux 3.5.7 Multithreaded MapReduce [Mao '10]
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon) /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc /lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon)
/lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon)
/lib/libc
RadixVM: Scalable address spaces for multithreaded applications
(anon) (anon) (anon) (anon)
/lib/libc
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
RadixVM: Scalable address spaces for multithreaded applications
11001 10100 10010 10000 01010 01100 11001 10100
(anon) (anon) (anon) (anon)
11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100 11001 10100 10010 10000 01010 01100 11001 10100
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
200 400 600 800 1000 1200 1 10 20 30 40 50 60 70 80 Total throughput (jobs/hour) # cores RadixVM Linux 3.5.7
RadixVM: Scalable address spaces for multithreaded applications
200 400 600 800 1000 1200 1 10 20 30 40 50 60 70 80 Total throughput (jobs/hour) # cores RadixVM Linux 3.5.7
RadixVM: Scalable address spaces for multithreaded applications
200 400 600 800 1000 1200 1 10 20 30 40 50 60 70 80 Total throughput (jobs/hour) # cores RadixVM Linux 3.5.7
RadixVM: Scalable address spaces for multithreaded applications
50M 100M 150M 200M 250M 300M 350M 1 10 20 30 40 50 60 70 80 Total throughput (lookups/sec) # cores (n/2 readers, n/2 writers) Radix tree Lock-free skiplist
RadixVM: Scalable address spaces for multithreaded applications
10M 20M 30M 40M 50M 60M 70M 80M 1 10 20 30 40 50 60 70 80 Total map-unmap pairs/sec # cores Refcache Shared counter
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications 2M 4M 6M 8M 10M 12M 1 10 20 30 40 50 60 70 80 Total pages/sec # cores Per-core Shared
RadixVM: Scalable address spaces for multithreaded applications 2M 4M 6M 8M 10M 12M 1 10 20 30 40 50 60 70 80 Total pages/sec # cores Per-core Shared
100k 200k 300k 400k 500k 600k 1 10 20 30 40 50 60 70 80 Total pages/sec # cores Per-core Shared
RadixVM: Scalable address spaces for multithreaded applications
RadixVM: Scalable address spaces for multithreaded applications
(anon (anon (anon (anon /lib/l
RadixVM: Scalable address spaces for multithreaded applications
(anon (anon (anon (anon /lib/l
RadixVM: Scalable address spaces for multithreaded applications
(anon (anon (anon (anon /lib/l