ࡱ> nf&)b aG_JPNG  IHDR:NsRGB pHYs.#.#x?v[PLTE   6 ( 8 0)0%000 ;&'0,"C^@1 P> @5H(*V+-@<2PAPH5@@@PPPlypV`J`N{Pp],`XEoiUppp```}rsoooplb$6:& co{f!r#v1z>j/tWqI|rYg"('.%+K((^Q_QwlwSy-574*241:BJ2Z-G/@3T[GNU[T[`)m,s'߬"Ϡ ߿f߾e϶qիsߪפS2]1y.p/f0`>bgbhot||{+,+-떚鉍鉎艍%()*&a}'5BP]][kxކ߆ՐܡBqIDATxcJߥHK4iIm ,w^%26l^mi3@؋I& 38 Y;<}? IU%zys]?u#}|2|\R/%N:k-ӷ/GDI,i-_ ۏW#w'%tq{_ _ jxGD[o\~+xuzz"lڅL~ԕmO*R?^폈0 6%|JT#U54Oˇ4,ORܚ~-x^+z Ț~釈h.˹L'- ]ɇ?4D+i)ϒs*cnA!ZJKfLd0{0?QiL?4 ZdGOoc?DҞt)r aD釀軒(LS~Է>J=E37}1\d-}qFm=iy˓WYFW*<#3Uvm^US+j80&]cɪWf1qvhDm>Utﬕv,z1"wmiI$z!}dD OYЕ- kǒ߯>%qF}h63vhh@ πYpE0zApF9o䀺u}2w!]5DߝQk|@kkS% <Տ96Ï?5+oO9x.kUI4 cjCjZJ!ZJ_k{BgX3C ˺—Vڶls\K\-oBBhx,{J͎:1. ZXGĈ&p v*A21ǸB_ЄcL kr<`Y aEKPer2! ZCM=q<߿Ф>\/AyTa<|eB@[/_o0%[q" ?l _ t+ooCKoYqx Oe5Y_ o>2bL϶Mf)5i18O E;r_]:LW/=Ojk}" QsH( @or4 ?R$*y%Gu̒rҌ~ QA2jIaC&>ª-(yS:~==j }J͍D ɶ0D0Wǰ `SZ%7ˌ軳&-k@ >=Qͷ[\$ u{Bc|<RzR%FJ /'Hh1DD>1QHd\O/|{L1Xz*&Ξ%dϑ]K7iSR%4ˆ&.eqD\"PՁP;{^w^mn XٚR Z>CdX&SM|p`I9ͩNzXtM˅o }p9;9VTOʉWC1pQZ5KʫTJR?-g&ె M>:.NjZ"OwU)gj, ݧTu/ eHTtmS7cJQĔe=eqCYnל\ ɓRu-JFW <=KO9{A;t&]QSDKӳt6Bsu*72p{^ -Ɛ. k[vN?*"#C4eq?.[gRN 7&rn#O%3Iv\~͉7xq?dQi8e@qyRZ%:!|V'߹t칏EΉ;x]˲e"=I]]g6Np3RmTc} ^|\I(ˉ+y⧢ppL̮ ?g= wq+€;Ts~lʾ8j\;kpd|J+ &و*[2s Ga<;_/U3yLhjv%xz?#26%x\P"TksU\kD5ԘP@FBthf&GT%5wj7;܄bG땢"MnR/,h&4s3:/OH g!@J;^ >H~2o623 ƃZ IEMTYV ^^lǒΉh`jo|Hʊ7)vg?4@`3H*ۣ3& O)اs2jOh`[y-@u:r ֽb+,O=Gᜱ޵KBSɨ1?ְyOIZuz JinL%67_Iȸm)a+aJ>!O&+ Hk9;DߑgnY#QWE=|bSjER[\{cfBq*5Eq: U^qS`fF$ԓbRw0@Q@R&h@4vf}4lfFe$2Qjʄ(M6IO KS>gVFM# .j¨Z7h) ~(Ry]Yѷ5&&HIi\,*hѓCM}BZ} F߮<ʄ M ?K(:r +nWp-C$虩HhrnUjf՝VqXif.cP\Q"hÁftr ߘTP̜CX}JT),.4jӝvƑ^ u^z?4d,dBwRJ'0Qi9xXXv bA'`QcBjSJbll ˖q.eq{A@uTiqF{,:8[UDO *9 s\s,AI)epW)Ak>V?tiinN}0z> >&J!5&ǾcX^1_1f \+d帇)19 "S*ٕGcm!ox&YIiURS,Lcbjmu>#4j5~FrdbkuE5i:fv@T^yX# LGyu㧉ÜB3TO^Z4Io%|.4𔶥yh)D+Gs81ƗFMR52 }馓`Jخi, NǗFF&ʕ"sۑXUO-y5cI J0F42gC${`G]ܷ4ҮЭ hQ[mQeH9>*}̈rA0ŀ<܇fm ܂ZF֊tck{g͝ >?Zt_=q뿩j5lθM/iiHgR<87QCckⴎW`cWlcclvw:^\*yeJe 1XTlKMGDIrSfB|y5CqD[{ϟoo <{ū)%Rk7Yݔ6O!gXiʼ#ˎ@u r-@˭'J\dOמmxY?6 ˚ă>MŞfAS2BΨ=)'Omoey9lckvoOPL(L^R i ԣ_Sl/-(B:1e Q*A"~7juoӿpou3JKZ\,:}5t \~ wc!J6NrJ=.?$ZfBBo~?sd4Ool oOk'[FQ:e›_߀}i%5g"#! -w!6 t-wn7bn ~Ok;hnncw ϯv.u8)y 1T'D>cUFBT@~밲0uZ_j>1k, ]|o1!|?_#4>%?<1M9BiDL}2Ue'4@D;Y 8*֛~-zHVu'q;55?m7?앞R#sXLH(>1Uo6=WXJfǠ%(Io۩gFSO#=oxpuW`1i,efxH @483Ur3B(Dg .Pʄ>7-EEo~ QO]'QbX ||lN"$Iг:_F{k("p_:Mk7GP_2( DjXи{wmO"*:k/rMظ^#z@<ѯLi9tKypt8$ upT TNo]r_: _}V;lL:?kQH;g~v{2Sr߃16ȫ4QJTN1ߔXʤ6^bMcmE!AGf)-]e 'VͲ:}xDy &&M:"Ec>%n4U?#_?iz"z5zl. >0&KbHI8:|kPDɜ`jÿ1,Qj/ ~O+6MlMAhםʐ&ITnrPwQךɡ뀀@2xZ]_Q"|vܠ;.xt2d}Yuuq^_ѷ^R-4 7NJЂ֎8V־ϟq=ՃZoz)_|:j/Tvm"DU=p2%@ul7 52&uD$O:&HƘ$V(/I #tǘ QX%H!@,d*$W Fw 9]ʑO8%7$KcEՋH b4U_  +gL\)V$7) Ϻ$ -u@T,:?\}ێ=a*[JUϘs%nnټ؛q9yYpG'j(Yֻ:ѹzdF?92u@dU(*gL\I49unPD.n1mPl*(Dۙҋ>7 rOk^Yz5":65k{0Q)yD\Y!ӎfg4T`ԃkNG5&5D)ft*~D}6?A/X ׬zm /';uF 'XAG)8Q܃j2omTr 0's>ABVf#8jҠѲ>Q/CP+Oѷ/Ω,)1.INք<#]ۧ:PuMу૘B{Pv(1 OEnF~4RZ3 ,^慢(7$S$ +e'2O P>Q"8ك$L+iX 6, hbJC1~CH(! <Q7oSI;2')q+%W!1@ =Q< 'cGI6PGt^t,l֎?fHöv8AV3Un峱=<\E(+ckP.R=B n9hQfZbkLJFVV -Q3* NfPDqSڇP*hm# 2^VUyvz:Rw\g5naE˅J[>w'Z)KB`3jkDJb$[-זhƖccDO=Bs쫏]fҌb1騈#I&^7ČOhiD>mJ<Qa3eZ_;?b*`LR.6FjfP1X:Q0U>(d:EZ%ZI.@>GվgVBV\0E"cemoѦn+QCňKHU9ݒjgTB S%݃FP?AN{U%-D9:'%N1a}j^Mw60#JOmP*Fx&$ޜ,F Fp }& +GszWmssllzNGCdD% k|rKLB߾/uN2+;_ɳxyyY]A * 9W7 ȼWum܁zc<#Jl@e֩Sq# r=]-./^`]r>h(Q$K=U0UJd0iV$n iΫ<<$!G}k@C\1rw1F}LΌ{hqN@T,>Kk1*3jt~qyEWpI79*:(?v((_2|hͶ >oj#z4>W5TXl$ܧ9L#kt:Q$ۏ01 hrӟQܪbD!bM#rݐgሙ %4(uGXh =ҞL%NV2 DK,|ya1!5Q$EBI(茤&Y=sSg*ڈɛϷӋ,/݀2ź>v 3=DdU5ec(3J͞5<6V(:+~×s;zhOoPw9O}(VԲ$w~!N6꺼 {#"*سw9 Q8(*7DqIU*dZ;saH UX1|͉(gli~r(sDֻ'%fhQۨ!k+NJځ8_9nK1;]$Zǯ2cFȃk7#kW/ (+Q;ɐ8Yg V:K(nyI %ێ@_"zs?碅p_Qb D„u2]Z#}zba(QbGf< D7zQE#4FToj OB[zQr6UGx/:(&C,yB#˱d/? \V#7Lw]bn@$̎s(4( 6=sG}P a2$ɒQ~ KWbSYcVEamVs L3?a*85i\23*M y 9/O>(ɺMJtH=Wj[\fRJ_nSirA;4:% ;EDqeI,9j9>,:s%4֕Z <!:}1?c%>U7A$L@+j2ݧ&.hߪ)6J{lEn%$8ݛ#Ja..@=Lw*>]sh_ʺCrR;S= {5dy&E$.zAw ށg3[:nrQ B['e=$QƫL&ݫ0zG] IF4yědD~' yJc&M`躮 +_,nG~yx0-͘J3<ǁiFKc&`j^K!ECf+.{!YEu^$q[ 8=N2pJƏSH}1kL9x QV\&&iBAG־7RHmJ\I {_ HA7<3sY x;f0 qQC f{aX6RG`DнmGKU8׸oF#;^d*SC<;~H5آhLe.߮ >I('y. {:{=Cft!BZn!wKvvT"w͑FE)0HSS`DQT=ob7ψ5wsYūZ- mU{ʩ0dFyP/+lauSƓg!4(C "#Z@Yunr.2iwBfD͈޲f?-P9uU}qJqsO)oJ3(S oәMBHy9\Ms{hL 2{rK9[ j/Ф oFh$[ϰ=/~ ;XB>\{Q^ klH͈>5 ńMácݛhbwCMFIphyE!m*6Ghc HT*MaȈa8V[tGQ%[fIjEPQ`:G +n] =Yʕva]Qò% PQ"q3E@E3Zx%Ds.b mΝ7PQnAHހ<L ךA†ۈ~#%Ȉ=^EVŌjO{zkCj bDEŹҞPQn|H$Ax C@3Z|OopyHTm=| M@FTмt2 [ m%!ҝ.7V4!yn(>;z}&̕;p#*8n :4ca [*!*Xh+az?gد?oиn:$і$'*;qeGEjTߌȌfx.oT3 fLũR~#l(,a5 kf4~Ո޼cD!ckF]7oQ4 ?u:c{T2}uȨIψ8Ϸ]1.!R8T%7>͌V eͽ]v=DѾ:wOT}nӗb^l%7n?Q6{3 )> ӆBk \ĞSd>hfʈn*ݽQ!GMKg(V]-i[qF\X/dgcRD+LW;=Dwn ) 臢3h^'YBlDez --Qʓ19W۝*L㶍[Dx3}VEd}(I0[?]D۞n hkCT?Qe,5OoYrOWѶ1]4}[nT"Z3i'K?U(EcG 6&H"TaA* F[i0{.[M-ﳱ$'s,?J W3yI(VEE;Hr@h./?mOߒFG0bz92FO>Eh ڧ, ^$U6Ѷz0ݽ|pp04F*:C(ZmNG}5LqچJzvon^ J I pT(}21*$`-6yV~"OeXk#t9RB-{J饮P2tj:22}9v'E'Y; Yl) oUuOI8ew DqI瓶B, ɒP7Մ{aDv"Q@s.Nqm=s/<??,#̵B ev+`<}gl[+y"θU+ME ZedE> Qtb7m?#V"^1Cf _~rG5'}Dq5@?S"BVgɲ!z_d>g(駖&J7:Ù'@lg2Z(v QĈ2;O^FG܎Wti'}/~]'5 S!B|e:C>YADMPCW>z.CC뇢a\ʦ\@Tiw!;}8zV}'Dcԯv.px mFL6QgKɌ֣##ok=ЯזQҷPWst&w8ج%q?uQIym-?!T4iCH2O2//FxBoN'_2ZsH&ϖPmMr5mQy(@{M)NdjKoB^d}1@R۰q-LzV7X<_A"kKCrtg@Oh)FLSd'O-U-~0?;a 54dY FAI}Ph Kb:ּP$'@H}XQ~5 FЩe mDgC&a~~ In+"s&G@ vG <>笍hN2u.V_l}ASM(W: a1`RK]nπOَ<:VSf F}ԺF%SO`_zP90[RgAx_ )EHJo,vCτ~Xz&XUEtWYQg~`]5L+UB,IO];c"ctD\DRzc΄쫢?N遉pT%|.f<㈛al3ْTKU`Tžؘ*=(3u _ #$݌-e u}SSm(nzD%x^/هTrnFZv(ɢ|FItxnߪSx.R zď3KdPS0ßMZOH_@• '_!5yb w3 Pi*=;eQxzDYK>upH(:En=[ۜ>PtnMh9UjDh8q} Af3,|:T"]]Suڭ FeLuK^7YtlȦGVnFI7nu+5YrzwJ=mxQWt'*V"nt_ĩ5X'?ڒ}xkM "+|_.O3,H6ؖITqK(9;[ sZp,K5s%U`ޮf)׋[90޾oeQG?%ңiUl"mQ! b^+6p3 hzgf_Ĉ,,x%cl|ԊG?6iXG(D}?T~t*}J4SE(ok~WU+aǐu kWu:~/g"\ Ek%Z+h]RP]tK-!@ @ۈ&s!VYy|kSe0^z]ϗ/ISYs> BBd!Z #!:qy)∲H_#*|{NqS-7CI Q!Tt>ՈV@ߏ奦hhpp8}0ob4A Yt=1 xEʫ{oҍř Q@/^I(4\' "(.j1ͩSTd]QD摺P5QCA&i\D Q lD=yd n QiK㵫hsCb pd\J<0oE>4:ٱP_*BֈQd践(D x<ζ"=Rr}ɳiQnh>0O (sɖ!*Ӯx&KPg\KΛ}3<~GFa1Q0 Y]Z Drispt rhܿ,I4hfA4aX"85>ˢ#BtŔ+@oJوmZ=%DGE @#rDYH e"zʨDԲa luOm!zE4B*ˆqhklc"nm*WS!lSE蜚B1V#EvuPy\D ʢxS hDpFCPo^hi2>M@~ ՕE$r>AD-nndR+5EtDs RL!j NAG џ,;{ڽ.nD+ iE4@a5Dn2%'6!++QuB(̓; k u#@3 e#ZMi*?wͻ+h?kch5 Dm D#|Gjr6ť]vu EBYuisR*a /iq٧(o"ڏ4"0D>,l~ ,>FA^l:xY 0/>"E_^5>lD맬|l|uD& i9M!WF~W6DW?+]mVnGDuHuDn͈({ #PC i]TXFEiןA:+J #z!F/?m]h$x|_A@G(%bC͈v(GdLDYi*#;\]rvm kwuMjf}RMhR3A OJUF+ XoQ⣗=Y4(C `#%bCA45$cvQHB=QYKŧ̈FԄƋ:4m==]#Y>+k7*JFW_iDHj6IwիjYDQF=w0v ϾL-xhWzZqDA7z< O%ICI722Qxk)-_/>g0%+hZ^ O+ G6Kh.h4жjj@aC~ˍhK}E~kԋ#H ʐR&YW=E^Q'UE4a3Rg9ZFz~W #J3`$a&ٰ]B޵U/a")@A(g_Ӊ/ڈ6u!8 ]LFXwZMD4f:zFNل6c@thA#Z,e!zC9t80x F4"N(Zw;AnC}Xa:MT5iO_Iڔf6)kzUn ?Wo1:D}$ի֗ L 8C,rv@4U"^1{ַƺ no_C(y~OC;uD-N Q^mlcWQuѳ >Q9*vvCmk2XqWwO~~8~G1$4{Y:DAT2.#`{c=h%4MAg>اmo &dt׾}lrB'=`DK鷑2kjI(?3b{i7zrn'aU~o7J2<$ (UیuU&0W. VMt#CWZw#O~ɿg`N+ۓleI8:hOˮWgPEfq1f*.zF3xW~?^>@pYFD?)o}wiWnF 39:FQh qw ̜rCX{;eT"}_i9"ۭeۡe@`ˀY([*%"1^\D9qOrkHݷ&׿[`+[ѹO/]<9qJ9exGaY-oԨGtȑYIr(/7@[k{LW[}.fU wRJ7 5~Cf*98;>@GBFX5wFjpl뻬OZkwgY%ŎL^toR3DK4KW|Dl}(xC `cBԉ'Ez8rެ>J(gDl{V0v&%QЁ@~_Q}DUQ>r"ZU>tIff-"4ft_D6#nt=Kg.zz"zwUctDD%"Y4DcxFGܺh7kԸx 㔂Se|R\nu37ݪYtUs1K"ztDo%,. lb"D+83{?:]O?QF5td&n-m!z,OG׎'CtIrQ!1R[nQ<%6ԎE;#A؈o+T!k5ZIz.z?Q( L`jDIyiZ>3HFy]}XH=ɢtr\rE_|4O} ǺGdQӛ%{hț*Et9Q1.Ds}S'AcDXހ*¹VQ##.Ԝ˟ÜU;ЉQR׉b?&DHsJr'w =.F(Bta=}XʩRAtO ,ڻ&*B>m?&9z|Q-QEזȱ|jk V>btC3_V8{p1:2ۢ?iIAiQjœ& ʗ^~h]]#g8[B QOQdj՗Q;Y^sKNېbDoy\RJS:lc~>A - DgʗPb.oq!ڜVm qH͉wwEiDI}i{+zZ/VQ8pDSsFA'So­FumF՗Bw=FϘxDž(Ir+9%-?JK|P1u?y@j4zRa@=;/!lރf@GԜXIy<4x⽂- .ѝ[%Fוd7}D+fM Ԡ BlDx?u!|i^qtDoO}4\~>'śC?Fe?}Av}AmhtDoona>?C.7t%L >t G[ʥ;8p(P~(hڄ轿/y*dX]!=jWiEAw@Et`5tG޼$[rcr?u:`tre=9d|iƄ{k3 Z4`4[g4yq9}R /IQ=7ъdKug]}UhӋ_HN |%&[ F"sCڮvM. 󗦗4j F_|=yn" /J>6'jG4(JhU\e@&Q>~ks"z{>1|Ht tۊIf\(mDq~QD/2al1+#%Q2[Et ET窈TH,dM[q=SX}Zh Q5F ݅-'deD=g[< IQyx8T΍Z ~,r%]Q2P|hpNНD$`tvDo7n+"JkkCl ݺ%9j{7mKLD-*&viF`t~D!gR"yU+铓ϐB}Dq t Iч@̨*d멪?QbC$9}DgPdqU%Fʨ*ifcD4C cGrb P&wڅ5a:Z}W燣Pª mDq>;]W(d0 >'zF_=R\]\7`gDcw>Æ:IHN}DTPfF6s=1: VJ:ÈV 8 8fI=W(vAÙp/;?FU 9+"kgѬ!>i1L!*gTQF,K3ŷ&È w (L9Гnݵq_n|fq[Zb!:c_s( ;ˎQYb,\)|mD9X9~(0:f楊sX:7*vT3& DdyzU3Zg1zΨb FsQBr @2ͨbvg|Ψbqi6jReD[w!ӈb(=}mF[o~ZӱƖNJR~\:sQl-zz]3z6uo=![bjRY,mkDmϳ upE7sW{jj?ź=ϳŞ~:=~Ja Oynźl[uFGɖz6-8dDn>FvTXCtc>#=}-H~ui6OŽlI_?2J˃%ʌ*!*# վc%VyսU@:IPWR͒x[eF[fThlw-Xpy><Q~"(z9Ȍp1_%GͨRD8DňnܼI'8UBAGF3I=nƄ7(Ѻb9%әDW1aCy/ ӫeGrJ pMnt< LS-"Ac!-~'gdEڃC/2܃m+<ɕĂSIcPNI٢Q"?b7523zI*mJ2u&J|q=~CKqF$DQJ:sh^f(eE07r(ZIMZ6aU2p̳;iC)SeDߢd'L۸+W Gٺ#UEA[p#ۻrePEEN07?^8>Nq֝^kH3.rԹ ȋE6{>-M 'K ="aVSy׌heF_5?[D+T~7{nswԕK=$KN0wdfem/f6h;sX]7INɵw],[<.,  ӈb3G{"ѝ،..1;*}&znWn)ok  @6yq0[M#P7:hV'Nm(ZGs c%TNIpCqnUV HZQw ɔKK_o BmehFD3[lDe$'N[O:*BWw_q]iFc@'_Lev^ B?m| !X7gjX ##m6p,%\L(OVRFG6;~ m(7M[go! (Bf&H臣$gXnfFs1>ǝ0?r;~ڻ$eMpbA (1=SEݪ`#auQJf4m^u@~zɘ(~=BO ]OX$aB7>БQ@'{!܈BѬce5T[}\*P(1/Qeo@m9}VBՏ8iڡ:PRc  *JpuhDb3nx"-L#)>_"X9/,J 5G{yw @-Kdi혝=ܕUln#;bDqԈB(3Hnd\QѴ 7lN"4Y̩7dv6U# FQ.&ăhU\8TGtV,NrbP?_De%oЭhH *w,P# G 3醋(1ړ(FE)|WYʈnuдG`"(irLxFnjfN,lX 8=e9eC {ҟt491"7쀍h`HÏwi 2`.뛫sqU@uJ(UCW,%eϐs5rY'fp %g Jf9N;D5BaFzq&^ϷJFʴ$w%کCO1" ZfxB^Zp!XFTQۜ*fV̼<_BQi3y4[xkJ j7{fO@.}Jk"u%,!+x64Ҙ˗3z ߅Xڞ}^#MW@(jd&uVX )׌OMqG-&_Zᇆ()UxjbBzwamN]%FtM(6L <mש"<}'}DߜOĈlsF泜$uzop:8qy"ۿXh6%F9PL0s 0|wNː__-̔~)}BhOGEjqw?Ϡf.H:SPEsf:D~KyVt U_XEFߏ [C& g{2>6[&kg#ZܛC'"J S4ꞎˈH;-_\Fxhj*HX[ pC#Q QUDdAʙ̈@J.c-ݳ177%Qg#BiCh7' #vFخ) NmLIyeNN3h.a*#vp,tPYPG @X$or-ҏ:: M=:1!шۓC5IQ"<3b?qy]nzQSaԂ3z7avЌ0^A^/ -vOμPnyET Jः(igLĈ6ή鴼$Wk$6Sz\ 줞Na(ȹr>@Z`WDnnDՈ#ZgL zBzNj;zTj+Ca(:4㱚G0׿/a]2r%./^(ɘ$5&B\A-qhYh Q`,\Jhm'Ym'wܼ= ֛npZeŠhnsKf(ɘR,l bvfX/|Fѕ.LjB|N d#nnm,}$׍^Pg(DUϕ}δvOː,?acS5kKJbhISeO/a'}Bٹ /^pU$7 ]zh1GŽFqy01#$*L4|\BGroK+'%k;NI ϺZ#[\LJnO4oΐTvn<C61 EbjFTZ}8??ߏ#9mU [Mkc$ܺ%RzјQ[N!uf.DqDr|rو3GD(|SĄVV?8v2|j iǖ}ȕt%]y95++=֦tUR!xU(]N^WeB+k#;QQ%Af:6DMD CU-|6eC@Ψ?}[BQg݆/M}i͙NrbOMH@Z:{`EԌ`ݾ[.槈j'_&*쨥anI#9;-s*Z]HeL[,B<2o?ƪG8(qh->|dK K}D*80Xl+L? "` Y;[v(qUu6e@ 1zd6%x][ҢKcψ+ȴEBm幌t'vJd^[!4|֨:זQB?6>h>|6C\AW ZaEu+/\M$ƽe;2~D}ʾP. ٛB :"T )4O+]Dw mfVtŷ9JU׭,=YoL7_,մ>ct_άi?&op543 ^>;W/J<5sMʼnEm`B[d+Wq goQRdJ[7}' 8Y`Hy U(вKM;z0JS%vu6ԍ)VBn8ZƟv๔GCۆy@-J݅2M%w<* }]ort!e%Bwo ~W/5>{뭿;͘ͷ7ePj@4}21}sfxqP/~ؕ2L!7"CO,w#?*ke,C,=goѷxxʏ j\Vt//g+!91kvaYyUU7?'岒o62cc!ZhP(R\/TE;X:#=gc1W"x>,g@On(hpɼs'IPuGA.yb_)}9Ь0F[(i8x(w}is8kcq]MP]?:jK,b#.g#:":*E8ƻ^8R{R\XOG^崛%DHUCibr ݷ?N :"u>Le>4b"&%[0(A +ٴ_,"h}N2;GNN ,0%AhYѳ-'cKo9i[d,BClL3 "o Z!v70CSэFjyVOMB 4Kv T(:i=I2!̒L9э^LWĖ$dctP3sƗ⭐"zPJx;L1dLB+O Z"[18.=B@O7;%nx!AU}2!ُhA[hș7H_{m[7.1}!o4a[=G.d SD @sǀ.jZOtFKFH;4]=1xi ߼){FdP_, K>khg$=lٶ&iB!Qs'c:.v;nZZfDMZu"kD<*SE/|1MJ1iM;H:1 Uja[&t"ZL~^EMmV6O;fuvml?na)-T,I#ױ5%Ғ7ˌ[9~od2B'Dp(1{2)R]UY&K[v*chmݚ&ىWV/a{i 4)LFsP ^EB? L2..4ڂf⟽r|& lz<B')*͂3.QP`֐稱s}"ii  Pp,贋I1\NC$YUDkFSShufeF m~UV>]-'.zxB+Yu4ZI QL`ل]yD }܊,vmp#kJ(Ũ`,%ȔGB㪪\BBqK'W=u цQO׹o {jKK ڷΉh(B6H t&sVs}۷,w 鰊$tVD"q']պJ.fFƇx68RVߴ)w<4 s]MUWBOơPSȲCJidZ3<33#Z0єwTjX +&0GNmT_ёxèO,u;n@Q lj^N/gx+^*LCnCR|2u-DG b q#gs:;%::)ձ?_;Cֱ,7kQ4j噅XΏhh@ħٮdKN|t!\de(|>s妒; KQ.v}{xUUR ]Nv;uс*j}h(1;,iNffo9O I|RB֞`Ms3B]OU?X3q{--M`{}UY(yB#hz?0hYi*Wʉ6HAnYgL.Q!1L)1 ߌׇ&Jˁ7g>8{0:(h^0}[Jڏ-J,`gq:4am-'O!a%ApD9{ 1ofC8i9j7\"0ҏryiGC;%A`83{PX<%zE.ÇXSzWZJBQ4^B7oj@י J(fԆS14wE,UF<d>s6d~LV:*`?4CSl.B80˃(싻8x595޵WCSzOQ<Q,_&D߼k}jmfjˌ=)/ymnG36 Q9l;#nj]v`JtOj ifM"Z0Z{t\49C#y>J1՛eq2T\1}C*hf OٍFS-Szmu'$llX.D}:ؐ '6(jd;0AB@o@ >xM~-kPC*ۥ;SY1 9&=|M~- ikRSo:zEx3 Lc@Gf)S9fBҐ?Lp^9}<(nJQݿ>,O}D>9QTv/ ]NDi>kixs(ݔa)}*}i:Mz+sD%5-9Dq Ƚn+Lӌ\iIdg"UoT'%5-;-CZ6,z=ߕڃvdVojS1$υ!#.*]rĈ4j%hD>dZs LhAi68E +./^!mCאYq̨&ٰ"D}_SiR&hahle%nɌj oxJ 1ΰOHJfyX(>#K >~}LZ@D!))*~2K >~=}͡DftP)(yihG ~Wǯog"ȶNm4}(3 s">~mEi=6<8JGk*c]1Dːziぃ<)T 2Lԭ~:+hRy@H}*Ȭpl 9CuV']QDKoRFA'խPD%)}_j Zק̒NW%FЂ4ҕ=TeyA,{kICW.~攔 p@UԓV; L+'[y'8 =yI<ɣ"}jLoʠ, J:_1 B J=+LL%}"ߞ_yv>zR.q7J|TQe@QdJ(GERǏ**JE\8EE"75Է 7V,t +jh(vSf/^=>c20:G? DTe'vw4BR2Y䚽P:G?DTI=+iv|">o!)NˍixD|~A';%Mzߋ*@}e}L],`X=Dn%pe!7UfX~ha`V=xGG=#*]~?hpȞ3N#rge͘:5}48EdF2fBf/TcW?3nJ!eG`z)ô`a<6IŦ]>7/ GD{TЗuj/[YU$0eJ[ϏV>)̩8OG[,q}\*^Tnq*7VJJ|hGD!O` }^A,M[n"Jlo >(gEj&ئJSt~DN }yΏt~DT)&/Sp~DtzWzfS)=a?"::E4LyY~5d̈́:Ch~L?":zK`%{!}ѡD=mp я둯;"܉IENDB`0(4 D/ 0|DTimes New RomanTT~ܖ 0ܖDComic Sans MSnTT~ܖ 0ܖB Dtic Sans MSnTT~ܖ 0ܖ"0DWingdings MSnTT~ܖ 0ܖ@DArialngs MSnTT~ܖ 0ܖ@ .  @n?" dd@  @@`` : 2 0 (}g  L|Xt =([2B (| (  0 12345789:?$$b$&)b aG_Jn 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||S" <}0u^.syls`u@`8 g4xdxdt~ 0ppp@ F ʚ;aZ9ʚ;<4!d!d  x 0 <4dddd  x 0 g4KdKd~ 0pk p"___PPT10Dtes New RomanTTx 0x"DTimes New RomanTTx 0x B___PPT9$z{? ,O ;h1What we need to be able to count to tune programs22"$7Mustafa M. Tikir Bryan R. Buck Jeffrey K. Hollingsworth88 Cache ScopeMeasurement library Uses Dyninst to instrument program Insert calls to Initialize, start measurement, replace allocation calls Uses hardware monitors in Itanium II Event Address Registers for L1D cache misses & FP loads Interrupt on overflow Perfmon randomization feature to access registers Objects grouped into  stat buckets Each variable assigned own stat bucket User can name explicitly for heap allocations Results sorted by latency (rather than misses) View by stat bucket or function Filter by function or stat bucket6Z4Z8Z%Z8ZZ2Z$ZUZ/Z Z"Z(8%  82$U/ "  Dynamic Page Migration#User-level dynamic page migration Profiling and page migration during the same run Application Profiling Gathers data from Sun Fire Link hardware monitors Samples the interconnect transactions Transaction Type + Physical Address + Processor ID Identifies preferred locations of memory pages Memory local to the processor that accesses most Page Placement Kernel moves pages to their preferred locations At fixed time intervals Using the madvise system calls Pages are frozen for a while if recently migrated Eliminates ping-ponging of memory pagesL"Z1ZZ2Z&Z3Z/Z1ZZ0Z7Z2Z(Z"12&  3/10  "      2$$(((NUMA-Aware Java Heaps*NUMA-Aware generation Divided into segments for locality groups on the system Each segment is local to its locality group NUMA-Aware young and old generations For initial object allocation Dynamic object migrations Data from hardware monitors Relate profiles to heap objects Identify preferred locations of objects Evaluation using a hybrid execution simulator Underlying memory management libraries Representative parallel workloads From actual runs of server applications Using data from hardware monitors Sampling memory accesses via hardware monitorsZ8Z,Z%Z8ZZHZ.ZIZJZ/Z8,%  8H.I  J$$/((What Else Could Monitors Do?Previous use Information about the hardware components in processor Hardware designers Hand-tuning of the systems Our use of hardware monitors Data centric measurement of program behavior Automatic tuning for memory access locality To be more beneficial in automatic tuning Information on the cause of the events Cache eviction information More specialized information Address Translation Counters for dynamic page migration 7Y*'8 7Y  *  '8Cache Eviction InformationInsight into interactions among data Particularly useful for data layout optimizations Physical address is available to hardware Can calculate from tag of evicted cache line Information in OS can map physical to virtualL%2*[%2*[ "Address Translation Counters (ATC)Access frequencies to pages by a processor A counter for each TLB entry, E CE 0 TLB entry is loaded due to TLB miss TLB entry invalidation Context switch Cache coherency control operation CE CE + 1 Virtual to physical address translationKZZ<Z1Z Z(ZK<1 ( Gathering Information from ATCVSampling TLB content Via system calls At fixed time intervals List of valid TLB entries Virtual Address + ATC value Low overhead traps by the OS At TLB entry eviction or invalidation Processor ID + Virtual Address + ATC value Additional fields in page table entries Page table update at context switch Counter for each processor for each pageC&+(MC &+(M  Conclusions}Current hardware monitors are good at Counting events (result of problem) Would like to Count cause of events (why the problem happened) Gather more specialized information Future hardware monitors For automatic tuning of programs Must be sufficiently simple to get implemented Collaboration for future monitors Application developers System software designers Processor architects&$UP"F&$UP"  F  ReferencesData Centric Cache Measurement on the Intel Itanium 2 Processor Buck and Hollingsworth, SC'04. Using Hardware Counters to Automatically Improve Memory Performance Tikir and Hollingsworth, SC'04. NUMA-Aware Java Heaps for Server Applications Tikir and Hollingsworth, IPDPS 05. Data Centric Cache Measurement Using Hardware And Software Instrumentation Bryan R. Buck, PhD Thesis Using Hardware Monitors to Generate Parallel Workloads Tikir and Hollingsworth, Under review for EuroPar 05.@PPDP P.P#PKPP7P6P@D .#K    76/P   0` ̙33` 3` 3333f` 999MMM` f` f3` 3` fi̙̙>?" ddB ? lKd@  d " @ ` n?" dd@   @@``PR    @ ` ` p>>   (  r  < ?"21ON  T~gֳgֳ ?"  ~ TClick to edit Master text styles Second Level Third Level Fourth Level Fifth Level !   U   Z~gֳgֳ ?"p ~ X Click to edit Master title style!!   H~.s?#" `m dUniversity of Marylandg      N~.s #" `vD ~ R * / 10G h  B.sd޽h? ?"` 3i̙̙ templateG  0 '(    Z}~gֳgֳ ?">  T Click to edit Master title style! !h  c 2Aformal"@ p  Tgֳgֳ ?"`    W#Click to edit Master subtitle style$ $r  < ?"21O  H|.s?#" `m dUniversity of Marylandg   h  B3.sd޽h? ?"` fi̙̙80___PPT10."_  0 nf` ( K   BR9k9k t$   x* J%%JJooX   C  PG  (   BX\9k9k  K   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S   B\b9k9k  4$  z* J%%JJoo   Hl9k9k t   x* J%%JJoo    Ht9k9k  4  z* J%%JJooN  6j? ? ̙3380___PPT10. ¼ ld8( p$" 8 8 Bt9k9k t$  t Y Your name  J%%JJoo 8 Brt9k9k  4$ t `* J%%JJoo 8 H DPhysical Address(2   Ba?"S   CVirtual Address(2B   HDjJ?"[ #B   HDjJ?"c +B   HDjJ?"/ [ / #  Ba?"KP   OATC Counter, CE$(2   Ba?"}[  N TLB Entry, E& (2 H  0޽h ? 3i̙̙80___PPT10.m4  0 4(  r  S ap  a   S t  a  H  0޽h ? 3i̙̙80___PPT10.%Ŝ$  0 $(  r  S p   r  S h   H  0޽h ? 3i̙̙80___PPT10.9$  0 $(  r  S p   r  S h%  H  0޽h ? 3i̙̙80___PPT10.И+ 0 @4(  4X 4 C  PG    4 S   K     H 4 0j ? ̙33r\ ?KFty 0:P6NbPRTV@hruHwH{0(4 Oh+'08U px , P \ h t(Dynamic Code Coverage using dyninstAPITikirPC:\Documents and Settings\Tikir\My Documents\Research\wisconsin\template.pottikir883Microsoft PowerPoint 7.0@b@e@`m@0?ĊtGSg  )'    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___www\WIN4'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάֻݼܬάάάάάάάάάάάάάάάάάέάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάγݼάάάάάάάάάάάάάάάάάռyJܬάάάάάάάάάάάάάάάάγo2""QάάάάάάάάάάάάάάάάoY*KQάܬάέάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάFFFG1Q8")έάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάά@GF""Y1RyέܬάέάάέάάέάάέάάέάάέάάέάάέάλoFF@E"*Q1*άέάάέάάέάάέάάέάάέάάέάάέάEMLMLD#D$Y"Rάܭάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάs**)1YFF@Foέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέά#R"YRFFGoέܬέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέJ1##)"@F άέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέsQRR"iiάܬάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάά#*1Q#oάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάέέέέέέέέέέέέέέέέέ")0RoέέέέέέέέέέέέέέέέέέܬέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέγK#*CoέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέέέέέέέέέέռtnέέέέέέέέέάܬάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάγάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάέέέέέέέέέέέέέέέέέδέέέέέέέέέέέέέέέέέέܬέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέέܭάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέάέέέέέέέέέέέέέέέέέέέέݼέέέέέέέέέέέέέέέέέέݭܬάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάάέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέݭܬέάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάΠάάάέάάάέάάάέάάάέάάάέάάάέάάάέάάάέέέέέέέέέέέέέέέέέέέέέέέέέΠέέέέέέΠΠΠΠΠέέέέέέέέέέέέέέέέέέέέέέέέέݭܬάάάάάάάάάάάάάάάάάάǠΠάΠΠάάΠΠǠΠάΠΠάάάάάάάάάάάάάάάάάέέέέέέέέέέέέέέέέέέέέέέέέΠέΠέΠέέέΠέέΠΠΠέέΠΠέΠΠέέέέέέέέέέέέέέέέέέέέέέέέݭܬάάάάάάάάάάάάάάάάάάάάάάάάάάΠάάάάάάΠάΠάάάάάάάάάάάάΠάάάάάάάάάάάάάάάάάάάάάάάάέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέݭܬǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάέέݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭έέέέέέέέέέέέέέέέέέέέέέέέέέέέέέΠΠΠέΠΠΠΠέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέݭܬǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭΠǭǠǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭έάέέέάέέέάέέέάέέέάέέέάέέέάέέέάΠΠάέάΠΠέΠΠέέάέέέάέέέάέέέάέέέάέέέάέέέάέέέάݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǠǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭έέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭έέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέέݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭέέέέέέέέέέέέέέέέέέέέέέέέΠΠέΠΠέέέέέέέέέέέέέέέέέέέέέέݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǠǠǭǠǭǭǭǭǠǠǠǠǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭έέέέέέέέέΠέΠΠέέέέέέέݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǠǠǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭέέέέέέέέέέέέέέέέέέέݬǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭݭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǦǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭܦǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭzǭǭǭzzzǭǭǭǭǭǭǭǭǭǭǭǭǭǭ֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭzǭǭǭzǭǭǭǭǭǭǭǭǭǭǭǭǭǦܦzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭzzǭzzǭzzǭzzǭǭzzǭzǭzzǭzzǭzzzzǭzzzǭzzzǭzzǭzzǭzzzzzǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǦܦzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭzzzzzzǭzzzzzzzzǭzzzǭzzzzzzzǭzzzzzzzzǭzzzzzzzzzzǭzzzzzzzzzǭzzzzzzzǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǦܦzzz֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǦܦ֭ܭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭǭݦܦǦǦǦǦǦǦǦǦǦǦǦǦǦǦǦǦǦǦǦ֭ܭݦܦzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz֧ܭzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzݦܦǦǦǦǦǦǦzzzzzzzzǦzǦzzzzzǦzzzzzzzzǦzǦzǦzzzzzzǦzzzzzzzǦzzzǦǦǦǦǦǦ֧ܭzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzݦܦǦǦǦzzzzǦzǦǦǦzzǦzǦǦzǦzǦzǦǦǦǦǭܭzzzzzzzzݦܦ֧ܭݦܦ֦ܭݦܦ֦ܭݦܦ֦ܭݦܦ֦ܭݦܦ֦ܧݦܦ֦ܭݦܦ֦ܧݦܦ֦܆ݦܦ֦܆ݦܦ֦ܧݦܦ֦ܦݦܦ֦ܦݦܦ֦ܦݦܦ֦ܦݦ֦ic Sans MSnTTܖ 0ܖ"0DWingdings MSnTTܖ 0ܖ@DArialngs MSnTTܖ 0ܖ@ .  @n?" dd@  @@`` : 2 0 (}g  L|Xt =([2B (| (  0 12345789:?$$b$&)b aG_Jn 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||S" <}0u^.syls`u@`8 g4|d|d 0ppp@ F ʚ;aZ9ʚ;<4!d!d  x 0 <4dddd  x 0 g4KdKd< 0pk p"___PPT10Dtes New RomanTTx 0x"DTimes New RomanTTx 0x B___PPT9$z{? ,O ;h1What we need to be able to count to tune programs22"$7Mustafa M. Tikir Bryan R. Buck Jeffrey K. Hollingsworth88 Cache ScopeMeasurement library Uses Dyninst to instrument program Insert calls to Initialize, start measurement, replace allocation calls Uses hardware monitors in Itanium II Event Address Registers for L1D cache misses & FP loads Interrupt on overflow Perfmon randomization feature to access registers Objects grouped into  stat buckets Each variable assigned own stat bucket User can name explicitly for heap allocations Results sorted by latency (rather than misses) View by stat bucket or function Filter by function or stat bucket6Z4Z8Z%Z8ZZ2Z$ZUZ/Z Z"Z(8%  82$U/ "  Dynamic Page Migration#User-level dynamic page migration Profiling and page migration during the same run Application Profiling Gathers data from Sun Fire Link hardware monitors Samples the interconnect transactions Transaction Type + Physical Address + Processor ID Identifies preferred locations of memory pages Memory local to the processor that accesses most Page Placement Kernel moves pages to their preferred locations At fixed time intervals Using the madvise system calls Pages are frozen for a while if recently migrated Eliminates ping-ponging of memory pagesL"Z1ZZ2Z&Z3Z/Z1ZZ0Z7Z2Z(Z"12&  3/10  "      2$$(((NUMA-Aware Java Heaps*NUMA-Aware generation Divided into segments for locality groups on the system Each segment is local to its locality group NUMA-Aware young and old generations For initial object allocation Dynamic object migrations Data from hardware monitors Relate profiles to heap objects Identify preferred locations of objects Evaluation using a hybrid execution simulator Underlying memory management libraries Representative parallel workloads From actual runs of server applications Using data from hardware monitors Sampling memory accesses via hardware monitorsZ8Z,Z%Z8ZZHZ.ZIZJZ/Z8,%  8H.I  J$$/((What Else Could Monitors Do?Previous use Information about the hardware components in processor Hardware designers Hand-tuning of the systems Our use of hardware monitors Data centric measurement of program behavior Automatic tuning for memory access locality To be more beneficial in automatic tuning Information on the cause of the events Cache eviction information More specialized information Address Translation Counters for dynamic page migr  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)