DMM虚拟机的动态内存映射模型
2012-07-13################2012-07-13#######2#012-07-13########
DMM: HH ??*???*?, J%Mc, , , , •? c4
? , 100871 4
? Departmen of Computer Science, Michigan Technological University, Houghton MI 49931, USA t
* W11.. E-mail: wxl@pku.edu.cn, lyw@pku.edu.cn
L&HM: 2009–02–01; HM: 2010–01–15
(‘: 2007CB310900) (‘: 90718028, 60873052) : 4 :
(‘: 2008AA01Z112) - (‘: MOE-INTEL-08-09, MOE-INTEL-10-06) : *W 1 *4 :
*
- .
7 VMM T -1 :: (VM) , E:*,:1 VMM T , E: . 5 )1 DMM, VMM Ballooning Xen copy-on-write t,, 1 . E: , -1 , hL , . 7
, )1, 7 #i775 J1 . , (KVM) t, : , -
7 :. , :Jh ,
, .
1 * iH
, .
, (virtual W
machinemonitor, VMM) T ci.
FJFJ, VMM J
. VMM , ,
. FJ, J J e b
FJ, , 1- i
, 1 . T1 VMM
, VMM , 1] 1
[1] , i . ‘f , 9 VMM T J : T : , 9EJ*, E**, . DMM: i . 1 4 : 1 4 , 2010, 40: 1543–1558
2012-07-13################2012-07-13#######2#012-07-13########
(1) . , VMM , 1
J J J . .
(2) . VMM , J J
. Guest OS , thVMM ― ‖. J { 1 N
(3) . VMM FJ , 1
. copy-on-write . VMM
[2?4] . Xen Ballooning , T T P
VMM , ; VMWare L Jj1 1 WJ
[5] VMWare Workstation , T P
(host OS) ; VMWare ESX Server 1JL1 1 T
[1] .
, , VMM { b 1 J
: T
, 9. M , VMM FJ ,
IAT FJ , H 1 , e T . ‘f
[6] , Ballooning , Xen Gran Table , T IATt {
, . 1 A J
,, N . VMM j . 1P1
, . b , J
tFFJ11, J . ‘ f VMWare ESX Server 1,
[1] FJ . , VMM 1 11]EE , .
,, . VMM 1 J J
, i . 1 1]
, . , L1 1i . {g fM
. VMM T T 1
, . , W
(dynamic memory mapping, DMM) . DMM VMM *T TT i
, VMM , i
, 1 VMM
, T .
1 DMM . T i
, . DMM { T T
: , ; , . , DMM W
T.
, 2 ’, T t,1 ,5 *
, DMM , J t TT i T
, . 3 TT ,T T
DMM KVM , T tP ‘f A ; W 1
15442012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
I 1 DMM
I 2 HIi1IILIInIIt HII
. 4 . T J L J L ,
2 n
VMM . , VMM W 9
, ( -map ), ― ‖ f1 J
0 . ’, E E 3 EJ *,1] 5i J *
-map , , t 1f Ti J t1] i
i 1 , T .
2.1 wr-’’L
W , VMM T ,
VMM f -map , e FJ .
, Guest OS , 3 : (1){ b *. 1 E (machine address), , ; (2) E E EP E T E1
(guest physical address), VMM ; (3) (guest E F EE
Evirtual address), Guest OS . E 1 EJ
, VMM W f -map T ― E‖ ― E‖ , 1] EY f ; FJ
, Guest OS ― E‖ ― E‖ , 1] EY g,
E E E 2 .
T,T, E 1 E. T ―
E‖ ― E‖ , 9 : b VMM f g
?g , (memory managemen unit, MMU). f 1 t
: (1)VMM f ; (2)VMM Guest OS , 9
1545 2012-07-13################2012-07-13####2#0#1#2#-07-13########
MMU ’ Guest OS , g; (3) ? g J 1 f
. , VMM FJ . * { T
2.1.1 MMU J H (MMU para-virtualization)
E VMM F FJ,
[7] VMM *. , FJ . MMU , VMM
f ? g A Guest OS 1, g. T t Guest OS 1
, Guest OS . Xen , 11 kJ
[2?4] VMM .
2.1.2 (shadow page f table)
FJ, Guest OS ― ‖, t
f ? g A ― ‖ 1, 1 Guest OS . t, VMM MMU
E . b Guest OS J VMM 1 , 1 Guest OS
th{ , L1 ( Microsoft Windows) . VMWare
[1,5,8] Workstation VMWare ESX Server KVM 1 T .
2.1.3 14f H (EPT NPT)
[9] , Intel AMD (extended page tables, EPT) (nested TT 1A
[10] page tables, NPT) , VMM g MMU, ] f b b i
, VMM . E 1 T {b 1
L1, 1 . T E L, W t
f ?g (translation look-asidebuffer, TLB) 1.
MMU 3 . i b *,1 i
, 3 .
2.2 HH
-map . f E E
, : 1]J T
P : ;
Z : ;
M : VMM . M Z .
f : P M , P EJ p ? P , m ? M , - f
M .
4 . , f VMM
f -map . : , 1] (W
) f , E , 1 E FJ
. ’J f -map , Guest OS (guest frame number, GFN) 1 TT
, (machine frame number, MFN), . , L
M .
15462012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
3 IJ H L f 14f H
I 4 HH
{ , 1 ,
. : , J M f 1 ; ,, J
, ; , J Pf J , f
. J
[8] e , b , 1 J VMM , ‘f KVM .
2.3 L
1]1 EY P , M t, t, . . . , t, 0 1 h
t , VMM M, f P M , P i i i i
EJ p ? P , f(p) = ? f (p) = {m}, m ? M, - T : i i i
(1) ? 0, 1, . . . ,h ? 1, /= , M/= M;i {}1 ff. +1 +1 i iii
(2) f(p) = ?, p A VMM; i
(3), FJ p, p? P , (p) (p), p f - EJ f= f. 1 2 1 2 1 iii
p VMM; A 2
1] J F = f, f, . . . , f P i . 0 1 h
i J 1, (1) T1 f -map f M J i i
, VMM , 1] i N 1 .i N
; (2) J , 1- VMM
(), ; (3) TA J i* J
FJ , VMM , . 5 1- TA J T
i 11 . J J 1, P
. , M1 L1
1547 2012-07-13################2012-07-13####2#0#1#2#-07-13########
I 5 HH
6 I HH
Guest OS J JW J , 1] VMM F ,
. T,
, . i J 1 { M 1] M
. 6 , VMM t i , t L 0 h F i1 , 3 J M T . 1 CPU VMM Guest OS() . LE, i*
VMM 1 .
! , CPU VMM 1 , [t, t), VMM f -map , { i
b Guest OS 1, M f -map Guest OS ; W , CPU
! Guest OS 1 , (t, t], b f -map Guest OS , M i?1
f -map J . , f -map CPU
Guest OS , (, ) . , P J 1 tt 1] ?1 ii
t, t, . . . , t f M . 0 1 h
2.4
*, 2.3 J, T i J , i
. 1-, 1] T i J
.
2.4.1
(demand paging) , VMM , E
1548 2012-07-13################2012-07-13####2#0#1#2#-07-13########
i . i T, T
:
(1)VMM E M= ?, - EJ p ? P , f(p) = ?, i ; 0 0
(2) t, T p, - f(p) = ?, (2), 1), i i
A VMM;
m, ? m, p m, ‘[(3)VMM M=M{} f()={} t +1 +1 iii
;
(4) (2) (3), J .
2.4.2 H
1 (virtual memory) L1 1IL, P 1
[11] J J . VMM J : Ballooning, T
1] .
2.4.2.1
[11] (swapping) L1 11M1 , L1 i J ― J ‖ (W ). L1
[12] J IL , . i
T, T :
(1)VMM E M= ?, - EJ p ? P , f(p) = ?, i ; 0 0
(2) , p, (p) ?, (2), , t T -f= 1) ii
A VMM;
(3)VMM ) , , VMM m, M=i+1
M? {m}, f(p) = {m}, t (5); i i+1
(4) , VMM . VMM ( LRU) M J T 1 i
S, s ? S, M= M? {s}, FJ , x ? P (x) = s, J EJ - f i+1 i i
(x) = ?, s . (3);1] f A J t i+1
(5)VMM ’ p J 1, , J 1 p A m;
(6) ‘[ , (2), J .
2.4.2.2 Ballooning
[1] Ballooning(n ) 1 . * 9 :
L Jj1 , 1 . T L , VMM
Guest OS *1 H L , J1 ―balloon driver‖. Ballooning W i*
: VMM ― (balloon inflating)‖ , ― W n LJ 1W n L
(balloon deflating)‖ ’. , Ballooning L i T
T , T , 1] .
1. (balloon inflating)
! ! ! (1)VMM VM VM E M M , f f , i . 1 0 0 0 0 ! ] M M J, - p ? P , f(p) = ?;0 0 0
1549 2012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
(2) t, VM p, (p) = ?, (2), ,T - f 1)i i
A VMM;
(3)VMM M m, m ? M? (P ). , VMM )1 j f Pf iiii
(p) m, MM, (6);f= {} = t +1 +1 iii
! (4) , VMM W VM balloon driver T ―n ‖ , balloon driver
! ! ! !!! ! M 1 J S, EJ s? S, M = M ? {s}, FJ +1 iii! ! !!!! !, x? P (x) s, (x) ?; - f= 1] f= +1 ii
!(5)VMM VM M= M? S. t (3);i i
(6) ‘[ , (2), .J
2. (balloon deflating) Li
! !! !(1) ―‖ (4), t t, p? P , (p) = ?; b n t -fi j j
! !! !(2) ( ), VM p, (p) ?, (2), tj>i T -f= j j
1), A VMM;
! ! !! ! ! !(3)VMM ) M 1 j f m, P m? M ? f (P ). , VMM j j j j ! !!!! f(p ) = {m }, M= M, (6); t +1 +1 jjj! (4) , VMM VM balloon driver T ―n L ‖ , b balloon driver 1
!! ! ―n ‖ 1 J S, EJ s? S, VMM VM J
! !m, s m 1, M= M? {m} ? {s}, FJ , x ? P - f(x) = +1 jjj!s, 1] f(x) = m; j+1
! ! ! ! (5)VMM VM M M ? S. (3);= t j j
(6) ‘[, (2), . (4) , VMM J 1
VM J m, VMM W n , .
2.4.3 -Ft copy-on-write
E VMM FJ .
. ‘f , FJ J FJ I Guest
OS ‘,f . FJ , . AT FJ . T,
[13] FJ .
, VMM FJ FJ . , T W
, , T L11]
, . copy-on-write(COW). COW J*
Unix , , , FJ L1 J 1] 1
[14] I T, . copy-on-wirte 11 7 .
copy-on-write i . b
* , T , 1] i J T:EY VMM V , 1 v ? V P. v
J P = {(v, p)|v ? V ? p ? P}, . t , VMM v i
M. P M, 2.3 f - J, T iii
3 .
1550 2012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
7 copy-on-write 8 I iH nIJ L
J T, copy-on-write T T:
(1)VMM E M= {s}, EJ (v, p) ? P , f((v, p)) = {s}, t 0 0
i ;
!!!!(2) t, v A (v, p). (v, p) ? P, (v, p) /= (v, p), { f((v, p)) = i i !!f((v, p)), (3), 1), A VMM;i
(3)VMM m, ((v, p)) m . , VMM f 1 t i
MM? m, ((v, p)) m, ‘[ ; = {} f= {} +1 +1 iii
(4) (2) (3), J .
1, E FJ , J ]
copy-on-write ) . , { , VMM W
.
1] , i
, 9 . J FJ, { 9
: -map ‘f , VMM ‘f , . fA b TA .
‘f, (2) ‘f, i A1
COW (3) ‘f A . 8 T J * .
3 H
[8] *, L VMM——KVM(kernel-based virtual machine)
. , FJ J 1] J i T
.1 J
, i T :
(1) M , M -1 ?
(2) P M f , -1 f ?
(3) f -map ‘f , VMM ?
T (1), 1] TT ― tP‖ , M ;
(2), , tPtF T 1] T J T T FJ11 ; T (3), 1]i T KVM 1 , f (reversemapping) T L , f -map ‘f , Guest OS b
VMM.
1 A 15512012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
9 I c -
3.1 c -!
tP (page pool) VMM , , b 1 J
1i . , tP M , 2.4 J,
, M T L1:
(1)M= M? {m}; i+1 i
(2)M= M? {m}. i+1 i
tP . i
3.1.1 c -
tP b : J tP (free pool) itP (active pool). 9 TT
tP N .
tP, tP J i T { j 1 1 i i T
. , itP1 f (P ), 1J tP1
M ? (P ). : f1]]J
(1) L7 tP -map;i1 f
(2)VMM tP J , L7 J tP1 , . J tP1 T
.
, tP i TL1:
• (alloc): J tP A itP, - f -map. • (return): tPtP, -i J T f
map.
• (expand): J A tP J tP1, T 1
( M ) J.
• L (shrink): J tP J tP1 , JJT 1
( M ) J.
tP , 1 VMM f (P ) M ? f (P ),
- O(1) ) Guest OS f -map . FJ , b L1
1552 2012-07-13################2012-07-13####2#0#1#2#-07-13########
M= M? {m} M= M? {m} tP, -map L1 J 1 1 E fLi+1 i i+1 i
1, 1 T . 1] 3.2 J,1, f -map .
3.1.2 c
tP. : free list active list, 1]1 1] J
3.1.1 J,1 J tP itP; IL , 1] : free count
active count, (P ) M ? (P ) . f f J 1 ― T
‖, tP. : (1) -map , T 1 i*fI
, ; (2) , P J J T {
tP; (3) , KVM , host Linux page i E 1]) 1 E * ; (4) .
, 32 20 , 64 T ,
40 ,. J 4 KB, T L 0.005(32 )?0.010(64 ). b T
, . ‘f, 2 GB J L
32 , 10 MB.L
3.1.3 c
1] J |P | phys mem[ ](P ) f ,
phys mem[ ] : J T
p ? P ,
(1) f(p) = ?, phys mem[p]= NULL; i
(2) f(p) = {m}, phys mem[p] = page desc(m), 1, page desc(m) m i
T E .
, f(p) /= ?, VMM phys mem[p]?page page , L i
. 1 phys mem[p] NULL , VMM Guest OS p T f -map
‘.f b 1] phys mem[] 1 T E , KVM 1
Host Linux E , J L FJ .
3.2 ‘1JJA1H
2.3 , : Guest OS -map ‘f J, i 11 f A
VMM, VMM t, f -map. *, A,
KVM 1 A .
3.2.1 L iH n
3.1.3 , VMM ’ phys mem[ ] Guest OS J,11] W J ) T
f -map ‘.f { , 1 Guest OS ’J phys mem[ ] (? ),
Guest OS ‘f VMM JJ 1 A ??
. 1,
, , f -map 1, MMU
, ‘f A VMM.
15532012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
2.1 , ? g. , , VMM bJ, T f
T :
(1) (p) = ?, v, g(v) = p ?g (v) = ?; f EJ E f
(2) FJ p, p? P , (p) = (p), v, g(v) = p EJ ff EJ E 1 2 1 2 1
g(v) = p, f ?g (v) . 2
2.3 . x86 , (1) J, J T
W * P(present) , 1 (2) W * W(writable)
.
3.2.2 1
2.4 J,1 {, Ballooning copy-on-write 1, 1] J
m, f T m X , X 1 x f -map .
?1 X m f X = f (m). f (reverse mapping)
. b , ‘ fA 1, VMM T
?1 m , V = ( ?g )(m), reversemapping . *P f1 W
[8] KVM reversemapping , Guest1 T T
OS A, TA Guest OS A VMM . { , T
i , 1] reverse mapping, 1 ,
KVM . , KVM , f J L
. 1] 3.3 J, L .
Ti
3.2.3 in
VMM -map ‘.f A f *11 b
(page fault handler) . VMM -map 1 f
f , tP copy-on-write . ,
11 VMM , VMM
JMA , FJ FJ . *J,1, 1] tP
VMM .f 1
KVM 1, A : Guest OS 1 T
. , VMM : (1) v; (2) J e] A 1 i*E
(‘f‘).f , VMM , e { T
i . J1 i*:
(1) . W ’J CPU 1 .
(2) E v E p e. W MMU
’J Guest OS .
(3) E v E . W ’J KVM 1 Guest OS
Hash .
(4) E p T page desc(m). 3.1.3 J, , W ’J
phys mem[ ] .
1554 2012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
10 I in
Ti t, J 11 10 . 1 i
, T 1] .
5’, KVM E v, Guest OS . FJ ,
KVM ’f , ,
. , b 1 , ,
. T
t , KVM Guest OS . *
Guest OS , . e , Guest OS . KVM W VT
1) A , Guest OS .
, { VMM . J i*:
(1) -map , . f1 { * E
(2) (p) ?, : p f= i* j
T balloon driver 1 .
(3) Guest OS A , 1 1T .
T ref count ).
(4) Guest OS , . A 1 1-
1 , W ’J Hash .
(1), VMM (p) g(v) . f*P
(2), VMM ’ , t
. , ’ m. m tP, * T 1] J 1 T{
1555 2012-07-13################2012-07-13####2#0#1#2#-07-13########
J tP1 , ―n L ‖ , J tP.
1, 1] J L I (ref count), f , J tP E
. m, (p), m , * T 1] f I t
f (p) g(v) *.
(3), VMM copy-on-write , J*, t
, - . 1 , 1]
1, 1, . I J 1 1 1
1, , . f 1
(4), VMM L1, t , t
1 . . T t,
VMM ‘[ Guest OS . Guest OS , T A
, N Guest OS th{ .
, * Accessed Dirty i T
Guest OS , 4 MB E (PAE) ,
* FJ f , . J11 , { *T J ,
.
3.3
, , DMM , KVM .*,11] W 1 AT t J L
*T DMM , W . DMM
, J, FJ KVM
*.. 1] L1 J i . W
IA t , 1] {i VMM 1
. 9
, FJ , Cen OS Linux, 1 11] T HTt
*Y* 2.6.9. 1] t KVM , 2.6.20 Y*
Linux *. ,. 11(a) .
T, t 138 s, T T 2.9%. T J L , 1]
T tP f 3 J . , f
T 1 86%, T J 1 ( 11(b)). 1 L i*:
JE ) page JE tP .
f g : KVM 1, f ,
Guest OS 1 , *1 e, 1TA Guest OS
. 3.2 , , L1{ J, IATi t1] i*
, , . f *1 Tf
.
T tf , 1] t f T1 . 11(c)
, 1 f , 13
T * 1f i 100 1 . T, t KVM 1 T, T 1600
15562012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
I 11
f , ’ T 1/4, , L.
, , . { f i L 1
, 2.9% . , i T 1]
, . 1 { i
4 ,L
DMM, FJ , DMM :*T TTi T • . DMM F T , e ,
.e J
• W . DMM, VMM Ballooning
copy-on-write . W DMM J .• . {, DMM VMM J L 5%
, 1 1 f L f .
• . DMM , b FJ
, , , 1- tFFJ11. VMM
.
1557 2012-07-13################2012-07-13####2#0#1#2#-07-13########
• . DMM , VMM , b V N 1
N 1 . FJ , b W FJ ,
VMM 1 e ’.
, VMM , ( Guest OS) , N 1 i*
(Ballooning) copy-on-write ; 1
FJ, i* (Xen) (VMware, KVM) i (NPT, EPT) .
VMM 1, FJ , J , 1 VMM
, , e . 1 DMM T
, , { T
. DMM T : , ; W ,
. , DMM J,
. T
1 Waldspurger C A. Memory resource management in VMware ESX server. In: Proceedings of 5th Symposium on Operating Systems Design and Implementation (OSDI). New York: ACM, 2002. 181–194
2 GoldBerg R P. Survey of virtual machine research. IEEE Comput Mag, 1974, 7: 34–45
Pratt I, Fraser K, Hand S, et al. Xen 3.0 and the art of virtualization. In: Proceedings of the Linux Symposium 2005. 3
Linux Symposium, 2005. 65–77
4 Barham P, Dragovic B, Fraser K, et al. Xen and the art of virtualization. In: Proceedingsof the 19th ACM Symposium on Operating Systems Principles. New York: ACM, 2003. 164–177
Sugerman J, Venkitachalam G, Lim B H. Virtualizing I/O device on VMware workstation’s hosted virtual machine 5
monitor. In: Proceddings of the 2001 USENIX Annual Technical Conference. Berkeley: USENIX Association, 2001. 1–14
6 Fraser K, Hand S, Neugebauer R, et al. Safe hardware accesswith the Xen virtual machine monitor. In: Proceedings of the 1st Workshop on Operating System and Architectural Support for the on Demand IT InfraStructure (OASIS). 2004. 1–10
7 Whitaker A, Shaw M, Gribble S D. Denali: Lightweight Virtual Machines for Distributed and Networked Applications. Technical Report 02-02-01. 2002
Kivity A, Kamay Y, Laor D, et al. KVM: the Linux virtual machine monitor. In: Proceedings of the Linux Symposium 8
2007. Linux Symposium, 2007. 255–230
9 Neiger G, Santoni A, Leung F, et al. Intel virtualization technology: hardware support for efficient processor virtual- ization. Intel Technol J, 2006, 10: 167–178
10 Bhargava R, Serebrin B, Spadini F, et al. Accelerating wo-dimensional page walks for virtualized systems. In: t
Proceedings of the 13th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS XIII. New York: ACM, 2008. 26–35
11 Tanenbaum A S. Modern Operating Systems (in Chinese). Beijing: Prentice Hall and China Machine Press, 1999. 52–100
Govil K, Teodosiu D, Huang Y, et al. Cellular disco: resource management using virtual clusters on shared-memory 12
multiprocessors. ACM Trans Comput Syst, 2000, 18: 229–262
Bugnion E, Devine S, Govil K, et al. Disco: running commodity operationg systems on scalable multiprocessors. ACM 13
Trans Comput Syst, 1997, 15: 412–447
14 Ford B, Hibler M, Lepreau J, et al. Microkernels meet recursive virtual machines. In: Proceedings of the 2nd USENIX Symposium on Operating Systems Design and Implementation (OSDI’96). New York: ACM, 1996. 137–151 1558 2012-07-13################2012-07-13#2#0#1#2#-#0#7#-13########
Your requestcould not be processed becauseof a configurationerror: "Could not connect to LDAPserver."
For assistance,contact your network support team.