From 3c0f500a1da448e10a5780af4184735c7dfc5fac Mon Sep 17 00:00:00 2001 From: Carlos Date: Wed, 18 Oct 2023 13:54:37 -0400 Subject: [PATCH] Fix Kata baseline (#26) --- apps/helloworld-knative/service.yaml | 4 +- eval/plots/startup/breakdown.pdf | Bin 14931 -> 14931 bytes eval/plots/startup/startup.pdf | Bin 38068 -> 38459 bytes eval/plots/startup/startup.png | Bin 49223 -> 58237 bytes eval/results/startup/docker_cold.csv | 114 +++++++++++++-------------- eval/results/startup/docker_warm.csv | 114 +++++++++++++-------------- eval/results/startup/kata_cold.csv | 58 ++++++++++++++ eval/results/startup/kata_warm.csv | 58 ++++++++++++++ setup.cfg | 2 + tasks/eval/startup.py | 8 +- tasks/eval/util/env.py | 21 +++-- tasks/kata.py | 22 +++--- tasks/knative.py | 3 + tasks/util/containerd.py | 66 +++++++++------- tasks/util/toml.py | 32 ++++++++ 15 files changed, 330 insertions(+), 172 deletions(-) create mode 100644 eval/results/startup/kata_cold.csv create mode 100644 eval/results/startup/kata_warm.csv diff --git a/apps/helloworld-knative/service.yaml b/apps/helloworld-knative/service.yaml index 679c070..990c77a 100644 --- a/apps/helloworld-knative/service.yaml +++ b/apps/helloworld-knative/service.yaml @@ -11,12 +11,12 @@ spec: apps.coco-serverless/name: helloworld-py io.katacontainers.config.pre_attestation.enabled: "false" spec: - runtimeClassName: kata-qemu-sev + runtimeClassName: kata-qemu # coco-knative: need to run user container as root securityContext: runAsUser: 1000 containers: - - image: csegarragonz/coco-helloworld-py:latest + - image: ghcr.io/csegarragonz/coco-helloworld-py:unencrypted ports: - containerPort: 8080 env: diff --git a/eval/plots/startup/breakdown.pdf b/eval/plots/startup/breakdown.pdf index c5780761058eafe1dd69e7ff7ee019a13a51be7c..f70613ed3aa0555102739713074fcbbf59c23a98 100644 GIT binary patch delta 20 bcmcaya=BzfwJE!Wp_zf9iOJ?B(~B$sS*r(~ delta 20 bcmcaya=BzfwJE!~p@pHDfzjqB(~B$sS-c0H diff --git a/eval/plots/startup/startup.pdf b/eval/plots/startup/startup.pdf index ecde6835a81c9594c34e9fe86abc560fd3edd6eb..a0aeff21f160316d551bcf93a0606e6db6d8667f 100644 GIT binary patch delta 4113 zcmZWrc{o&k8~zg6vs3hjGP0X9=gdZf7Sf=oyrxo!grbnGx10#2H}8}g5?Urpkw`O% zgshWo426l_yqSAof6anH&)?BS2`J z@P{YT43-7J%^_N4tK+}Vt5z^8bmC?YUx~l&n3?YS*~L{IWO^Fx^FD7{pRB*5-%8S{ zn4h(bm1%#>E$>)#?z6>P?b>E~<_oOF?vcI)-fYCYHau$9k=1u*!w>W6vhk=z3G0DV z?N#iyFgD-s1B>gZb!2kz^4hyPY2Cd6%bEn|tHS#3z~jTF>7{J*iV2I_YtGXsZ3^1R zO1d?Ko!vO7yXmkAuWQZ6kKG`l@_Bc3KlIqF?udoHkNN$>V(`G&Y}GgXeEt3?lSHuA z_Casd{mIGkCmMZ^DFHCQd#tv0VSGhjhsT`l*YD*Sgh{_MfBDi{CuftYt-t))qTEEroqAjN4c_X`}C_>yC)Qk zKZ^IsPC9eDRxEd~DoT&JV!5raiSraru}H;2?6 zMUV5IkPR%jSg~_o<20CM!*SWm{!#ukn&_s^Z{3ak>zYV*7r!>NsM*fUsJu+Vu;jOvMyw+A=sE`JH@Vq6t2J^} z72d)9=;m`*Ky9Vd3qL+ht?DV!?cJZ7(!Q?6Wa~_*vXoS309*c)!!;Bmf0sSYAt5!Y zOQmCRP4+mQF?Opi2Y1O*F6VN&A@5T{-soY!(F-S5Z`4=(^t1_^!gsBG=>)P`>7~Q5 zo4oH@;{R;umfy|fa6?q9$t&KoF7S*(-5T8Bq+Q?JxKpmfr_9 z`H9~I?+)8I8N9^~3EVvJtz6u0PVrWyeW?xU(=yWer&gz1qz5y;MlNqlCk_d^J@8Fj zoHHjSVpCp+ql$;_CRe>JyElU4Nsl|OZcd*TN-zen0%@VG6$-g5Zr#nimpS6Oz6^L< zOp7TLg<|i}9B)FsjBE2a)3-K0J~=QXh+excTNo*n>cuu)2F=x%qUl99MnQaGv&Y-K z7(N-9M|)fC=;}*+rVLD=y@wmlF^5avaNb;7YUn~Sc&$HTM;_ba&qyo^wfCiZ1#B2B zWyE`mjlG)lyEzy+1!rF}r#5R3**davS%%72#ySu^u9kOco9<57J2*q z`QY;EwD~#KkHdJno%_k+41WK`6jZGS8 z={HkVDmm?Nnt43*+Q+Zye2B*P{B+4{4vE9ASuZOvEE1g%6w#1mW)*SyrA+!Z+K3<(|AXLLJtE;Z< z=B>gs#{KL}?+>rOv}8`IDeqY#CD18IhsAVxBRie1HgZ#Ua^%PVbjeIt`8nREgp%M8 zv*3tJ#`L|GD%QNl^g*l|$s*gi{cY-M_QeA&0~J}3@&5@suWCl-G!m0nXF0$cPN(Cg z!V*<60=FobqgjEum%4JDcGw*ZRU=qi0L@_|fxMnt|~9 z0;!v%SFFY6sP_^I2Q^ItkEn*i{eH(|f!qQ4zVhbr;kMwT{T|Vp)~Rq*=X`Hf<&(a7 zo_uU^q|(8OiT%Kjs%398mCx16QaS93{*^J} zV#^!YQg6-&USot6I88PmmP+?m+dR06T*ypY4{cth-McHHZ*06|S0qmn7M3wSJtr=S z%Tj)!<;FKwAye{FYO*%S4mfIf3KHFujvvnM^1@Y{Ye;w3kg4HGFB!X6QpIz{CSn(= z)(4JTd$=9Kt}Ky`E~b##ZJERG&xI#_Xn4%zACF0_BN=!3!pyAp%5ayGjL5tCW!{=3 z|D2D@r^N1hHyTfre4mADM>5X5cIiC+#gi~{>7(wvK+%--P_9x23Rk*SoNo{BTW@+DI zjm5b8>b}+7w$>Zo7{-XQFOpw zsBhP~zSZX*(_zz~ifvu_nq+CdxTBd`F=4GL`|FVh_Uo{ECGN4q`ZvCKg0T!HrDizN zIZYhuntffbGnu%K<*B}Ncd5F&i5j4#q^PUeQ>QP{rRMed%s+q0k&G)Sm96FjHeb^e zvKp)uW*0_gJ^bH1gcplPUeuT@_8)Sx>zt4Yx9+SAB0!Zv7mmQ+HPjnJw`<9o3V^oY z;wX19j~DlJA8=M$EZhKFp3$gB13F;LM3r_>Ax?qUGI)*tDz(mfrJ#1WX#n&S#K&r98!L`<<847#{!kO3xm zImOId)}K8zMTS+#*s&)ndf&9AGLv&PbkFSi*x45hvL@fXiam4MWB#*^#)e152jdN; zc1iR9Jb~J%C*|P8eK|&~r}QIW5o7s@XvJn`J6tX5Zx36>s@} zbNSW4NBiv?^V%QHO|L%awpn>+qPUZMbi~u$f}N%r38sC@a8Lv5O~$>d0p+%ZjNHPf zM}csgYU|3P%GxU-Udahnah$?avDy2FYrZWdKF&;sNAuyeCEXvA1{BV3EWZ^~ZL7xq8J{B6N$qU@CZ!U z2#5WN(OReqYRC*Uhz3B~Boze{MVVj-Ac&|2U~m{@4FDs&(<9?R0s$E(>?Kl9h~Uvb zbKzfPL4#NfvN2ky0f1q#lHWew9?%U-&>oh=^>0#b8B}u~__) zroWQL;xQs*utacax?kgP7%XzLjW814CkICIOWUSpZnckj`6`e5j=MI+#h+^w9X-?B(qfYO z8Im0!cziuFwOAXq^;eJ5nTT}LKuND;`k~DiLR})B_Uo{(=Qcrt?RO^Eia%S7v~}e6 zjjN*ElrEn(Vi!5ET1p}A_Fwc&PdD8=^aYXCr*njjyqfL`(~RU#%A|YT5|CT9OZQ2j zj!;K~gLaw}Cot{{Th80APQvr<4Z2a6kcymA=H(q|ZocS>gl8h78+7Vj1l>KbXuFn>P4xO;LXT zj7xwqz>Ybpv*I1uPhnA?PQLD06e3XTsx+dlXc{s$Sk^PiUhTPnek}1Ys4Bj47nkpf zx~aPy?v3--OS?CBppD^IkUIL>m~mtJ_eLWHi}u8_vEJ0oBlG&S8Tuu$7>3S=wA4T$ zKj!tJ*YW4+WxC5BbhKJ8Y<5onl0lhW87JWbNgj3V3>$q|MxaoA(PTl}fxgU5#AXvtE*hjde{;C-HO+qWMI=EZ;fnFmL2vWU$2Q3{ z%ROsSBp?}@{IK{-NiipZoD>?PfSnG7D(` zzVH`rvhkFS7gdV(KHDu}JZbr`yO8Lq_;*EI4xQ5KD1Ak^iQ zKo*6WI%J%{W*{~>B6V)!d-a=h!$e#=LUW42TVbrhOSD_#Z9TIgBYLMQ6{o^$x%B8O z635qFyE+fT9Ft+Q1olx61!&Nc-fg^*Q6+qdb8XDJj&myB?_C|`Ot8ww}9+8^`Z5kY{}XY{bPg36%mtJ zy~Z|b$+dt3F9U2JNhtmrc+RInroL$5>J#mtcIKA54^suSgH+!)Jt~B+^@NqaIaT=U zg#?BdZ_yU+J<*P7uip|mnNg!4C;2M*pxM}$Qy=e}7uep8Dc`BFw&^*_R3ej4H{}^x zvTT)C1?UPZREXrIYxTDZ^fixj>{-h~9d2<0(eHmx9q11?FY9JW_Pt>`on%yZ*R<%* ziq(9n=g#IvbM!8oryfIK+q_k2$AU4VL(q_fBipRAMZdrJiO85PGVzN}40 zVxy_F7s>kY)@bIT0=3tugK=Toal`BK=iHwz+JqG5acdY2&As9|M+ENRww}T#J)85^ z2)<(y!1(iKhDysX;!Z?5`%w0>+Dqm~&d6cbee+Mbn%zNwdytq5McBV!P);T4IhbBq|j3%-M;zg+-dy;J95(%LsE9=H8ZtJJjg8L{|COHH(!TCrkAf za0bb>h2)3@ILFt)2+rQ z%DO)UzLZ# z@A7j~x9CcDNce<`9Yl6s)z=JkI{bnIYG!@mK2NB-&#X&6p|G2td?8}c&@hnHFE=i9 zs)jC}vnDFUf)-=j(Hc7wDvagJT6 zJRLU1w0>%d`dPoy^5T*#@*5Rdt#{{pm+Q}7GYO!*nd9PuZEj_bO1(o28yMYxjHnS4 zwG8#GaS2M%A)cede%#|JM~c#GC!VWzOcZh+3`NGT|H96XPuZ_}FH|LOwqMYQe4k=H zj6bK@HJHNQs%YMaE|ohDMEDy65QGExng9@ym-RD101sf~1n?k?smFWw{wN)55QpPe0R-{T|5QMK`1x^| zT>$Yg0aK8`n;suykU+pF2ogv*3_uvd|Lk)G02}~eq~_f(0Dlu4g2QYzgyUT#d|)6L XPb6l1%(N7PVH_g5X_Mt1E789J&q0`! diff --git a/eval/plots/startup/startup.png b/eval/plots/startup/startup.png index f4c44ff75e968facd8d7fe9e29271d2e7437790e..74f0db22f7c02bc204202e2b153fcdc333ad08f5 100644 GIT binary patch literal 58237 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 z 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%0AB|kn2p{WWPmH?Iujy=?tuwuP{EG&RbLlwjR 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 bt;=*P<*(fARpzv%@E=26Q=PlJ?1KLrcKhJU literal 49223 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 mY7_r!8UCN9O!t diff --git a/eval/results/startup/docker_cold.csv b/eval/results/startup/docker_cold.csv index 51db007..c98ff71 100644 --- a/eval/results/startup/docker_cold.csv +++ b/eval/results/startup/docker_cold.csv @@ -1,58 +1,58 @@ Run,Event,TimeStampMs -0,Start,1697565418.8096719 -0,Initialized,1697565419.0 -0,PodScheduled,1697565419.0 -0,StartRunPodSandbox,1697565419.883651 -0,EndRunPodSandbox,1697565420.027871 -0,StartImagePull_Service,1697565420.030229 -0,EndImagePull_Service,1697565422.474695 -0,StartCreateContainer_Service,1697565422.477425 -0,EndCreateContainer_Service,1697565422.502194 -0,StartImagePull_Sidecar,1697565422.573553 -0,EndImagePull_Sidecar,1697565424.946484 -0,StartCreateContainer_Sidecar,1697565424.949939 -0,EndCreateContainer_Sidecar,1697565424.957349 -0,StartStartContainer_Service,1697565424.958052 -0,StartStartContainer_Sidecar,1697565424.958052 -0,Ready,1697565425.0 -0,ContainersReady,1697565425.0 -0,EndStartContainer_Service,1697565425.02993 -0,EndStartContainer_Sidecar,1697565425.02993 -1,Start,1697565460.987475 -1,Initialized,1697565461.0 -1,PodScheduled,1697565461.0 -1,StartRunPodSandbox,1697565462.035959 -1,EndRunPodSandbox,1697565462.195915 -1,StartImagePull_Service,1697565462.197971 -1,EndImagePull_Service,1697565464.812385 -1,StartCreateContainer_Service,1697565464.814765 -1,EndCreateContainer_Service,1697565464.830627 -1,StartImagePull_Sidecar,1697565464.891024 -1,Ready,1697565467.0 -1,ContainersReady,1697565467.0 -1,EndImagePull_Sidecar,1697565467.545699 -1,StartCreateContainer_Sidecar,1697565467.549831 -1,EndCreateContainer_Sidecar,1697565467.556076 -1,StartStartContainer_Service,1697565467.556732 -1,StartStartContainer_Sidecar,1697565467.556732 -1,EndStartContainer_Service,1697565467.627619 -1,EndStartContainer_Sidecar,1697565467.627619 -2,Initialized,1697565503.0 -2,PodScheduled,1697565503.0 -2,Start,1697565503.1519074 -2,StartRunPodSandbox,1697565504.199924 -2,EndRunPodSandbox,1697565504.358272 -2,StartImagePull_Service,1697565504.36132 -2,EndImagePull_Service,1697565506.918156 -2,StartCreateContainer_Service,1697565506.9206 -2,EndCreateContainer_Service,1697565506.928476 -2,StartImagePull_Sidecar,1697565506.993785 -2,Ready,1697565509.0 -2,ContainersReady,1697565509.0 -2,EndImagePull_Sidecar,1697565509.41992 -2,StartCreateContainer_Sidecar,1697565509.423365 -2,EndCreateContainer_Sidecar,1697565509.430167 -2,StartStartContainer_Service,1697565509.431209 -2,StartStartContainer_Sidecar,1697565509.431209 -2,EndStartContainer_Service,1697565509.51329 -2,EndStartContainer_Sidecar,1697565509.51329 +0,Initialized,1697651345.0 +0,PodScheduled,1697651345.0 +0,Start,1697651345.052553 +0,StartRunPodSandbox,1697651346.008561 +0,EndRunPodSandbox,1697651346.181397 +0,StartImagePull_Service,1697651346.184028 +0,EndImagePull_Service,1697651348.78394 +0,StartCreateContainer_Service,1697651348.786753 +0,EndCreateContainer_Service,1697651348.801478 +0,StartImagePull_Sidecar,1697651348.860708 +0,Ready,1697651351.0 +0,ContainersReady,1697651351.0 +0,EndImagePull_Sidecar,1697651351.528729 +0,StartCreateContainer_Sidecar,1697651351.532241 +0,EndCreateContainer_Sidecar,1697651351.539909 +0,StartStartContainer_Service,1697651351.540357 +0,StartStartContainer_Sidecar,1697651351.540357 +0,EndStartContainer_Service,1697651351.611144 +0,EndStartContainer_Sidecar,1697651351.611144 +1,Initialized,1697651387.0 +1,PodScheduled,1697651387.0 +1,Start,1697651387.1835673 +1,StartRunPodSandbox,1697651388.132089 +1,EndRunPodSandbox,1697651388.287967 +1,StartImagePull_Service,1697651388.290056 +1,EndImagePull_Service,1697651390.781933 +1,StartCreateContainer_Service,1697651390.784773 +1,EndCreateContainer_Service,1697651390.798972 +1,StartImagePull_Sidecar,1697651390.875708 +1,Ready,1697651393.0 +1,ContainersReady,1697651393.0 +1,EndImagePull_Sidecar,1697651393.223222 +1,StartCreateContainer_Sidecar,1697651393.227201 +1,EndCreateContainer_Sidecar,1697651393.234814 +1,StartStartContainer_Service,1697651393.235485 +1,StartStartContainer_Sidecar,1697651393.235485 +1,EndStartContainer_Service,1697651393.311364 +1,EndStartContainer_Sidecar,1697651393.311364 +2,Initialized,1697651429.0 +2,PodScheduled,1697651429.0 +2,Start,1697651429.34211 +2,StartRunPodSandbox,1697651430.296781 +2,EndRunPodSandbox,1697651430.448964 +2,StartImagePull_Service,1697651430.450505 +2,EndImagePull_Service,1697651433.011846 +2,StartCreateContainer_Service,1697651433.014822 +2,EndCreateContainer_Service,1697651433.031119 +2,StartImagePull_Sidecar,1697651433.122787 +2,EndImagePull_Sidecar,1697651435.628239 +2,StartCreateContainer_Sidecar,1697651435.630954 +2,EndCreateContainer_Sidecar,1697651435.63706 +2,StartStartContainer_Service,1697651435.637606 +2,StartStartContainer_Sidecar,1697651435.637606 +2,EndStartContainer_Service,1697651435.720615 +2,EndStartContainer_Sidecar,1697651435.720615 +2,Ready,1697651436.0 +2,ContainersReady,1697651436.0 diff --git a/eval/results/startup/docker_warm.csv b/eval/results/startup/docker_warm.csv index 3f291e8..117462a 100644 --- a/eval/results/startup/docker_warm.csv +++ b/eval/results/startup/docker_warm.csv @@ -1,58 +1,58 @@ Run,Event,TimeStampMs -0,Initialized,1697565307.0 -0,PodScheduled,1697565307.0 -0,Start,1697565307.217185 -0,StartRunPodSandbox,1697565308.272695 -0,EndRunPodSandbox,1697565308.410176 -0,StartImagePull_Service,1697565308.410176 -0,EndImagePull_Service,1697565308.410176 -0,StartImagePull_Sidecar,1697565308.410176 -0,EndImagePull_Sidecar,1697565308.410176 -0,StartCreateContainer_Service,1697565308.414838 -0,EndCreateContainer_Service,1697565308.423383 -0,StartCreateContainer_Sidecar,1697565308.460902 -0,EndCreateContainer_Sidecar,1697565308.466886 -0,StartStartContainer_Service,1697565308.467395 -0,StartStartContainer_Sidecar,1697565308.467395 -0,EndStartContainer_Service,1697565308.50481 -0,EndStartContainer_Sidecar,1697565308.50481 -0,Ready,1697565309.0 -0,ContainersReady,1697565309.0 -1,Start,1697565344.3489451 -1,Initialized,1697565345.0 -1,PodScheduled,1697565345.0 -1,StartRunPodSandbox,1697565345.483397 -1,EndRunPodSandbox,1697565345.661458 -1,StartImagePull_Service,1697565345.661458 -1,EndImagePull_Service,1697565345.661458 -1,StartImagePull_Sidecar,1697565345.661458 -1,EndImagePull_Sidecar,1697565345.661458 -1,StartCreateContainer_Service,1697565345.665474 -1,EndCreateContainer_Service,1697565345.677681 -1,StartCreateContainer_Sidecar,1697565345.724101 -1,EndCreateContainer_Sidecar,1697565345.728681 -1,StartStartContainer_Service,1697565345.729058 -1,StartStartContainer_Sidecar,1697565345.729058 -1,EndStartContainer_Service,1697565345.764412 -1,EndStartContainer_Sidecar,1697565345.764412 -1,Ready,1697565346.0 -1,ContainersReady,1697565346.0 -2,Start,1697565381.4785688 -2,Initialized,1697565382.0 -2,PodScheduled,1697565382.0 -2,StartRunPodSandbox,1697565382.527941 -2,EndRunPodSandbox,1697565382.700886 -2,StartImagePull_Service,1697565382.700886 -2,EndImagePull_Service,1697565382.700886 -2,StartImagePull_Sidecar,1697565382.700886 -2,EndImagePull_Sidecar,1697565382.700886 -2,StartCreateContainer_Service,1697565382.705174 -2,EndCreateContainer_Service,1697565382.711766 -2,StartCreateContainer_Sidecar,1697565382.753361 -2,EndCreateContainer_Sidecar,1697565382.758577 -2,StartStartContainer_Service,1697565382.759054 -2,StartStartContainer_Sidecar,1697565382.759054 -2,EndStartContainer_Service,1697565382.797824 -2,EndStartContainer_Sidecar,1697565382.797824 -2,Ready,1697565383.0 -2,ContainersReady,1697565383.0 +0,Start,1697651233.4299753 +0,Initialized,1697651234.0 +0,PodScheduled,1697651234.0 +0,StartRunPodSandbox,1697651234.348279 +0,EndRunPodSandbox,1697651234.513383 +0,StartImagePull_Service,1697651234.513383 +0,EndImagePull_Service,1697651234.513383 +0,StartImagePull_Sidecar,1697651234.513383 +0,EndImagePull_Sidecar,1697651234.513383 +0,StartCreateContainer_Service,1697651234.516061 +0,EndCreateContainer_Service,1697651234.523143 +0,StartCreateContainer_Sidecar,1697651234.56023 +0,EndCreateContainer_Sidecar,1697651234.567317 +0,StartStartContainer_Service,1697651234.567778 +0,StartStartContainer_Sidecar,1697651234.567778 +0,EndStartContainer_Service,1697651234.605508 +0,EndStartContainer_Sidecar,1697651234.605508 +0,Ready,1697651235.0 +0,ContainersReady,1697651235.0 +1,Start,1697651270.5520155 +1,Initialized,1697651271.0 +1,PodScheduled,1697651271.0 +1,StartRunPodSandbox,1697651271.48375 +1,EndRunPodSandbox,1697651271.636434 +1,StartImagePull_Service,1697651271.636434 +1,EndImagePull_Service,1697651271.636434 +1,StartImagePull_Sidecar,1697651271.636434 +1,EndImagePull_Sidecar,1697651271.636434 +1,StartCreateContainer_Service,1697651271.639752 +1,EndCreateContainer_Service,1697651271.649893 +1,StartCreateContainer_Sidecar,1697651271.688735 +1,EndCreateContainer_Sidecar,1697651271.695225 +1,StartStartContainer_Service,1697651271.695487 +1,StartStartContainer_Sidecar,1697651271.695487 +1,EndStartContainer_Service,1697651271.726042 +1,EndStartContainer_Sidecar,1697651271.726042 +1,Ready,1697651272.0 +1,ContainersReady,1697651272.0 +2,Start,1697651307.6992502 +2,Initialized,1697651308.0 +2,PodScheduled,1697651308.0 +2,StartRunPodSandbox,1697651308.63565 +2,EndRunPodSandbox,1697651308.798958 +2,StartImagePull_Service,1697651308.798958 +2,EndImagePull_Service,1697651308.798958 +2,StartImagePull_Sidecar,1697651308.798958 +2,EndImagePull_Sidecar,1697651308.798958 +2,StartCreateContainer_Service,1697651308.802762 +2,EndCreateContainer_Service,1697651308.809039 +2,StartCreateContainer_Sidecar,1697651308.848687 +2,EndCreateContainer_Sidecar,1697651308.85518 +2,StartStartContainer_Service,1697651308.855583 +2,StartStartContainer_Sidecar,1697651308.855583 +2,EndStartContainer_Service,1697651308.888498 +2,EndStartContainer_Sidecar,1697651308.888498 +2,Ready,1697651309.0 +2,ContainersReady,1697651309.0 diff --git a/eval/results/startup/kata_cold.csv b/eval/results/startup/kata_cold.csv new file mode 100644 index 0000000..b1eeed3 --- /dev/null +++ b/eval/results/startup/kata_cold.csv @@ -0,0 +1,58 @@ +Run,Event,TimeStampMs +0,Start,1697650963.48791 +0,Initialized,1697650964.0 +0,PodScheduled,1697650964.0 +0,StartRunPodSandbox,1697650964.407945 +0,EndRunPodSandbox,1697650965.875491 +0,StartImagePull_Service,1697650965.878297 +0,EndImagePull_Service,1697650971.535117 +0,StartCreateContainer_Service,1697650971.538068 +0,EndCreateContainer_Service,1697650971.54496 +0,StartImagePull_Sidecar,1697650971.607058 +0,EndImagePull_Sidecar,1697650973.849603 +0,StartCreateContainer_Sidecar,1697650973.85327 +0,EndCreateContainer_Sidecar,1697650973.856947 +0,StartStartContainer_Service,1697650973.857511 +0,StartStartContainer_Sidecar,1697650973.857511 +0,EndStartContainer_Service,1697650973.918397 +0,EndStartContainer_Sidecar,1697650973.918397 +0,Ready,1697650975.0 +0,ContainersReady,1697650975.0 +1,Start,1697650982.5529299 +1,Initialized,1697650983.0 +1,PodScheduled,1697650983.0 +1,StartRunPodSandbox,1697650983.50432 +1,EndRunPodSandbox,1697650984.876993 +1,StartImagePull_Service,1697650984.879697 +1,EndImagePull_Service,1697650990.899228 +1,StartCreateContainer_Service,1697650990.901916 +1,EndCreateContainer_Service,1697650990.905659 +1,StartImagePull_Sidecar,1697650990.967367 +1,Ready,1697650993.0 +1,ContainersReady,1697650993.0 +1,EndImagePull_Sidecar,1697650993.242698 +1,StartCreateContainer_Sidecar,1697650993.246385 +1,EndCreateContainer_Sidecar,1697650993.249963 +1,StartStartContainer_Service,1697650993.251412 +1,StartStartContainer_Sidecar,1697650993.251412 +1,EndStartContainer_Service,1697650993.308953 +1,EndStartContainer_Sidecar,1697650993.308953 +2,Start,1697651000.626488 +2,Initialized,1697651001.0 +2,PodScheduled,1697651001.0 +2,StartRunPodSandbox,1697651001.711692 +2,EndRunPodSandbox,1697651003.059412 +2,StartImagePull_Service,1697651003.061742 +2,EndImagePull_Service,1697651008.729659 +2,StartCreateContainer_Service,1697651008.732298 +2,EndCreateContainer_Service,1697651008.736184 +2,StartImagePull_Sidecar,1697651008.797195 +2,EndImagePull_Sidecar,1697651010.912698 +2,StartCreateContainer_Sidecar,1697651010.915892 +2,EndCreateContainer_Sidecar,1697651010.919255 +2,StartStartContainer_Service,1697651010.920275 +2,StartStartContainer_Sidecar,1697651010.920275 +2,EndStartContainer_Service,1697651010.976685 +2,EndStartContainer_Sidecar,1697651010.976685 +2,Ready,1697651011.0 +2,ContainersReady,1697651011.0 diff --git a/eval/results/startup/kata_warm.csv b/eval/results/startup/kata_warm.csv new file mode 100644 index 0000000..27312fc --- /dev/null +++ b/eval/results/startup/kata_warm.csv @@ -0,0 +1,58 @@ +Run,Event,TimeStampMs +0,Initialized,1697650895.0 +0,PodScheduled,1697650895.0 +0,Start,1697650895.2169847 +0,StartRunPodSandbox,1697650896.187588 +0,EndRunPodSandbox,1697650897.55473 +0,StartImagePull_Service,1697650897.557092 +0,EndImagePull_Service,1697650903.001556 +0,StartCreateContainer_Service,1697650903.004573 +0,EndCreateContainer_Service,1697650903.008505 +0,StartImagePull_Sidecar,1697650903.065245 +0,EndImagePull_Sidecar,1697650905.603725 +0,StartCreateContainer_Sidecar,1697650905.607207 +0,EndCreateContainer_Sidecar,1697650905.611087 +0,StartStartContainer_Service,1697650905.61185 +0,StartStartContainer_Sidecar,1697650905.61185 +0,EndStartContainer_Service,1697650905.662457 +0,EndStartContainer_Sidecar,1697650905.662457 +0,Ready,1697650906.0 +0,ContainersReady,1697650906.0 +1,Initialized,1697650913.0 +1,PodScheduled,1697650913.0 +1,Start,1697650913.2899218 +1,StartRunPodSandbox,1697650914.168255 +1,EndRunPodSandbox,1697650915.522901 +1,StartImagePull_Service,1697650915.525045 +1,EndImagePull_Service,1697650921.298181 +1,StartCreateContainer_Service,1697650921.300978 +1,EndCreateContainer_Service,1697650921.304536 +1,StartImagePull_Sidecar,1697650921.359596 +1,EndImagePull_Sidecar,1697650923.689171 +1,StartCreateContainer_Sidecar,1697650923.692792 +1,EndCreateContainer_Sidecar,1697650923.696781 +1,StartStartContainer_Service,1697650923.697453 +1,StartStartContainer_Sidecar,1697650923.697453 +1,EndStartContainer_Service,1697650923.761691 +1,EndStartContainer_Sidecar,1697650923.761691 +1,Ready,1697650924.0 +1,ContainersReady,1697650924.0 +2,Start,1697650931.3649948 +2,Initialized,1697650932.0 +2,PodScheduled,1697650932.0 +2,StartRunPodSandbox,1697650932.499513 +2,EndRunPodSandbox,1697650933.874433 +2,StartImagePull_Service,1697650933.876964 +2,EndImagePull_Service,1697650939.542831 +2,StartCreateContainer_Service,1697650939.545308 +2,EndCreateContainer_Service,1697650939.548812 +2,StartImagePull_Sidecar,1697650954.48037 +2,EndImagePull_Sidecar,1697650956.656542 +2,StartCreateContainer_Sidecar,1697650956.66024 +2,EndCreateContainer_Sidecar,1697650956.667226 +2,StartStartContainer_Service,1697650956.667863 +2,StartStartContainer_Sidecar,1697650956.667863 +2,EndStartContainer_Service,1697650956.719424 +2,EndStartContainer_Sidecar,1697650956.719424 +2,Ready,1697650957.0 +2,ContainersReady,1697650957.0 diff --git a/setup.cfg b/setup.cfg index ee07cfa..e209871 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,3 +4,5 @@ [flake8] max-line-length = 88 extend-ignore = E203 +[pycodestyle] +max-line-length = 88 diff --git a/tasks/eval/startup.py b/tasks/eval/startup.py index 7427659..35019aa 100644 --- a/tasks/eval/startup.py +++ b/tasks/eval/startup.py @@ -92,7 +92,8 @@ def cleanup_after_run(baseline, used_ctr_images): """ This method is called after each experiment run """ - if baseline in ["docker", "kata"]: + # The Kata baseline we use also pulls iamges directly on the host + if baseline in ["docker"]: clean_container_images(used_ctr_images) @@ -299,9 +300,6 @@ def plot(ctx): for csv in glob(glob_str): baseline = basename(csv).split(".")[0].split("_")[0] flavour = basename(csv).split(".")[0].split("_")[1] - if baseline == "kata": - # TODO: kata baseline does not work - continue if baseline not in results_dict: results_dict[baseline] = {} @@ -430,7 +428,7 @@ def plot(ctx): acc_ys[i] += ys[i] # Misc - ax.set_xticks(xs, xlabels) + ax.set_xticks(xs, xlabels, rotation=45) ax.set_xlabel("Baseline") ax.set_ylabel("Time [s]") ax.set_title("End-to-end latency to start a pod\n(cold start='/' - warm start='.')") diff --git a/tasks/eval/util/env.py b/tasks/eval/util/env.py index f46739b..e984c5c 100644 --- a/tasks/eval/util/env.py +++ b/tasks/eval/util/env.py @@ -17,18 +17,15 @@ "signature_verification": "", "signature_policy": "", }, - # This baseline uses plain Knative on Kata containers (i.e. VMs) - # Unfortunately, we can't run baseline kata as we need to use the CCv0 - # fork with CoCo, and we had to patch the agent in that version to run wiht - # image revisions - # TODO: consider fixing - # "kata": { - # "runtime_class": "kata", - # "image_tag": "unencrypted", - # "guest_attestation": "", - # "signature_verification": "", - # "signature_policy": "", - # }, + # This baseline uses plain Knative on CoCo, but without SEV-enabled VMs + # (so all CoCo machinery, but no runtime memory encryption) + "kata": { + "runtime_class": "kata-qemu", + "image_tag": "unencrypted", + "guest_attestation": "", + "signature_verification": "", + "signature_policy": "", + }, # This baseline uses Knative on confidential VMs with Kata, but does not # have any kind of attestation feature. This is an _insecure_ baseline, # and only included for demonstration purposes diff --git a/tasks/kata.py b/tasks/kata.py index e5b3a25..273972c 100644 --- a/tasks/kata.py +++ b/tasks/kata.py @@ -3,7 +3,7 @@ from os.path import dirname, join from subprocess import run from tasks.util.env import KATA_CONFIG_DIR, KATA_IMG_DIR, PROJ_ROOT -from tasks.util.toml import update_toml +from tasks.util.toml import remove_entry_from_toml, update_toml KATA_RUNTIMES = ["qemu", "qemu-sev"] KATA_SOURCE_DIR = join(PROJ_ROOT, "..", "kata-containers") @@ -58,7 +58,6 @@ def replace_agent(ctx, agent_source_dir=KATA_AGENT_SOURCE_DIR): 4. Re-build the initrd 5. Update the kata config to point to the new initrd """ - conf_file_path = join(KATA_CONFIG_DIR, "configuration-qemu-sev.toml") # Use a hardcoded path, as we want to always start from a _clean_ initrd initrd_path = join(KATA_IMG_DIR, "kata-containers-initrd-sev.img") @@ -105,10 +104,15 @@ def replace_agent(ctx, agent_source_dir=KATA_AGENT_SOURCE_DIR): run(initrd_pack_cmd, shell=True, check=True, env=work_env) # Lastly, update the Kata config to point to the new initrd - updated_toml_str = """ - [hypervisor.qemu] - initrd = "{new_initrd_path}" - """.format( - new_initrd_path=new_initrd_path - ) - update_toml(conf_file_path, updated_toml_str) + for runtime in KATA_RUNTIMES: + conf_file_path = join(KATA_CONFIG_DIR, "configuration-{}.toml".format(runtime)) + updated_toml_str = """ + [hypervisor.qemu] + initrd = "{new_initrd_path}" + """.format( + new_initrd_path=new_initrd_path + ) + update_toml(conf_file_path, updated_toml_str) + + if runtime == "qemu": + remove_entry_from_toml(conf_file_path, "hypervisor.qemu.image") diff --git a/tasks/knative.py b/tasks/knative.py index 50caa8f..17366c8 100644 --- a/tasks/knative.py +++ b/tasks/knative.py @@ -146,6 +146,9 @@ def install(ctx): run_kubectl_command(kube_cmd) wait_for_pods_in_ns(KNATIVE_NAMESPACE, label="app=default-domain") + # Replace the sidecar to use an image we control + replace_sidecar(ctx) + print("Succesfully deployed Knative! The external IP is: {}".format(actual_ip)) diff --git a/tasks/util/containerd.py b/tasks/util/containerd.py index d6849e7..5e6ecff 100644 --- a/tasks/util/containerd.py +++ b/tasks/util/containerd.py @@ -4,7 +4,7 @@ def get_journalctl_containerd_logs(): - journalctl_cmd = 'sudo journalctl -xeu containerd --since "10 min ago" -o json' + journalctl_cmd = 'sudo journalctl -xeu containerd --since "1 min ago" -o json' out = ( run(journalctl_cmd, shell=True, capture_output=True) .stdout.decode("utf-8") @@ -14,27 +14,6 @@ def get_journalctl_containerd_logs(): return out -def get_time_pulling_image(image_name): - """ - Retrieve the start and end timestamp (in epoch floating seconds) for the - PullImage event from containerd - """ - out = get_journalctl_containerd_logs() - - pull_image_json = [] - for o in out: - o_json = json_loads(o) - if "PullImage" in o_json["MESSAGE"] and image_name in o_json["MESSAGE"]: - pull_image_json.append(o_json) - - assert len(pull_image_json) >= 2 - - start_ts = int(pull_image_json[-2]["__REALTIME_TIMESTAMP"]) / 1e6 - end_ts = int(pull_image_json[-1]["__REALTIME_TIMESTAMP"]) / 1e6 - - return start_ts, end_ts - - def get_start_end_ts_for_containerd_event(event_name, event_id, lower_bound=None): """ Get the start and end timestamps (in epoch floating seconds) for a given @@ -52,24 +31,51 @@ def get_start_end_ts_for_containerd_event(event_name, event_id, lower_bound=None event_json = [] for o in out: o_json = json_loads(o) - if event_name in o_json["MESSAGE"] and event_id in o_json["MESSAGE"]: - event_json.append(o_json) - - assert len(event_json) >= 2 + if ( + o_json is None + or "MESSAGE" not in o_json + or o_json["MESSAGE"] is None + ): + # Sometimes, after resetting containerd, some of the + # journal messages won't have a "MESSAGE" in it, so we skip + # them + continue + try: + if ( + event_name in o_json["MESSAGE"] + and event_id in o_json["MESSAGE"] + ): + event_json.append(o_json) + except TypeError as e: + print(o_json) + print(e) + raise e + + assert len(event_json) >= 2, "Not enough events in log: {} !>= 2".format( + len(event_json) + ) start_ts = int(event_json[-2]["__REALTIME_TIMESTAMP"]) / 1e6 end_ts = int(event_json[-1]["__REALTIME_TIMESTAMP"]) / 1e6 - assert end_ts > start_ts + assert ( + end_ts > start_ts + ), "End and start timestamp not in order: {} !> {}".format(end_ts, start_ts) if lower_bound is not None: - assert start_ts > lower_bound + assert ( + start_ts > lower_bound + ), "Provided timestamp smaller than lower bound: {} !> {}".format( + start_ts, lower_bound + ) return start_ts, end_ts - except AssertionError: + except AssertionError as e: + print(e) print( - "WARNING: Failed getting event {} (attempt {}/{})".format( + "WARNING: Failed getting event {} (id: {}) (attempt {}/{})".format( event_name, + event_id, i + 1, num_repeats, ) diff --git a/tasks/util/toml.py b/tasks/util/toml.py index afebde1..f539f04 100644 --- a/tasks/util/toml.py +++ b/tasks/util/toml.py @@ -82,3 +82,35 @@ def read_value_from_toml(toml_file_path, toml_path): raise RuntimeError("Haven't reached TOML leaf!") return toml_file + + +def do_remove_entry_from_toml(toml_dict, toml_path): + toml_levels = toml_path.split(".") + dict_key = toml_levels[0] + + if dict_key not in toml_dict: + return toml_dict + + if not isinstance(toml_dict[dict_key], dict): + del toml_dict[dict_key] + return toml_dict + + toml_dict[dict_key] = do_remove_entry_from_toml( + toml_dict[dict_key], + ".".join(toml_levels[1:]), + ) + + return toml_dict + + +def remove_entry_from_toml(toml_file_path, toml_path): + """ + Remove an entry (and all its descendants) from a TOML specified by a path. + This method returns silently if the specified path does not exist. + """ + toml_file = toml_load(toml_file_path) + + toml_file = do_remove_entry_from_toml(toml_file, toml_path) + + with open(toml_file_path, "w") as fh: + toml_dump(toml_file, fh)