2024-tcg: Updates
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 16 Apr 2024 14:49:21 +0000 (15:49 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Tue, 16 Apr 2024 15:08:08 +0000 (16:08 +0100)
2024-tcg/01-tcg-translation.png [new file with mode: 0644]
2024-tcg/01-tcg-translation.svg
2024-tcg/02-tcg-helpers.png [new file with mode: 0644]
2024-tcg/02-tcg-helpers.svg [new file with mode: 0644]
2024-tcg/03-not-obvious.png [new file with mode: 0644]
2024-tcg/03-not-obvious.svg [new file with mode: 0644]
2024-tcg/04-experiments.png [new file with mode: 0644]
2024-tcg/04-experiments.svg [new file with mode: 0644]
2024-tcg/05-lessons.png [new file with mode: 0644]
2024-tcg/05-lessons.svg [new file with mode: 0644]

diff --git a/2024-tcg/01-tcg-translation.png b/2024-tcg/01-tcg-translation.png
new file mode 100644 (file)
index 0000000..3f9c817
Binary files /dev/null and b/2024-tcg/01-tcg-translation.png differ
index ec4876b..1fb6c7e 100644 (file)
@@ -2,13 +2,16 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 
 <svg
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 297 210"
    version="1.1"
    id="svg1"
    inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
    sodipodi:docname="01-tcg-translation.svg"
+   inkscape:export-filename="01-tcg-translation.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns="http://www.w3.org/2000/svg"
      inkscape:deskcolor="#d1d1d1"
      inkscape:document-units="mm"
      inkscape:zoom="1.0393815"
-     inkscape:cx="396.87064"
-     inkscape:cy="422.84763"
+     inkscape:cx="397.35169"
+     inkscape:cy="417.07496"
      inkscape:window-width="1920"
      inkscape:window-height="1029"
      inkscape:window-x="0"
      inkscape:window-y="27"
      inkscape:window-maximized="1"
-     inkscape:current-layer="layer1" />
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:export-bgcolor="#ffffffff" />
   <defs
      id="defs1">
     <marker
          d="M 5.77,0 -2.88,5 V -5 Z"
          id="path10" />
     </marker>
-    <marker
-       style="overflow:visible"
-       id="Triangle"
-       refX="0"
-       refY="0"
-       orient="auto-start-reverse"
-       inkscape:stockid="Triangle arrow"
-       markerWidth="1"
-       markerHeight="1"
-       viewBox="0 0 1 1"
-       inkscape:isstock="true"
-       inkscape:collect="always"
-       preserveAspectRatio="xMidYMid">
-      <path
-         transform="scale(0.5)"
-         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path135" />
-    </marker>
     <rect
-       x="162.24125"
-       y="170.28457"
+       x="162.24126"
+       y="170.28458"
        width="154.29239"
        height="363.85593"
        id="rect5" />
     <rect
-       x="162.24125"
-       y="170.28457"
+       x="162.24126"
+       y="170.28458"
        width="154.29239"
        height="363.85593"
        id="rect6" />
          xml:space="preserve"
          transform="matrix(0.26458333,0,0,0.26458333,-4.2320215,-5.4130078)"
          id="text4"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';white-space:pre;shape-inside:url(#rect5);fill:none;stroke:#000000"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';white-space:pre;shape-inside:url(#rect5);display:inline;fill:none;stroke:#000000"><tspan
            x="162.24219"
            y="180.96249"
-           id="tspan2"><tspan
+           id="tspan6"><tspan
              style="fill:#000000"
-             id="tspan1">auipc   a5,0x13
+             id="tspan5">auipc   a5,0x13
 </tspan></tspan><tspan
            x="162.24219"
            y="195.96249"
-           id="tspan4"><tspan
+           id="tspan41"><tspan
              style="fill:#000000"
-             id="tspan3">addi    a5,a5,1756
+             id="tspan40">addi    a5,a5,1756
 </tspan></tspan><tspan
            x="162.24219"
            y="210.96249"
-           id="tspan8"><tspan
+           id="tspan43"><tspan
              style="fill:#000000"
-             id="tspan7">sd      a5,8(s9)
+             id="tspan42">sd      a5,8(s9)
 </tspan></tspan><tspan
            x="162.24219"
            y="225.96249"
-           id="tspan10"><tspan
+           id="tspan45"><tspan
              style="fill:#000000"
-             id="tspan9">sd      a5,0(s9)
+             id="tspan44">sd      a5,0(s9)
 </tspan></tspan><tspan
            x="162.24219"
            y="240.96249"
-           id="tspan29"><tspan
+           id="tspan47"><tspan
              style="fill:#000000"
-             id="tspan28">j       591c
+             id="tspan46">j       591c
 </tspan></tspan></text>
     </g>
     <g
          xml:space="preserve"
          transform="matrix(0.26458333,0,0,0.26458333,-4.8443119,27.385114)"
          id="text6"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';white-space:pre;shape-inside:url(#rect6);fill:none;stroke:#000000"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';white-space:pre;shape-inside:url(#rect6);display:inline;fill:none;stroke:#000000"><tspan
            x="162.24219"
            y="180.96249"
-           id="tspan31"><tspan
+           id="tspan49"><tspan
              style="fill:#000000"
-             id="tspan30">
+             id="tspan48">
 </tspan></tspan><tspan
            x="162.24219"
            y="195.96249"
-           id="tspan33"><tspan
+           id="tspan51"><tspan
              style="fill:#000000"
-             id="tspan32">mv      a0,a3
+             id="tspan50">mv      a0,a3
 </tspan></tspan><tspan
            x="162.24219"
            y="210.96249"
-           id="tspan35"><tspan
+           id="tspan53"><tspan
              style="fill:#000000"
-             id="tspan34">sd      a3,-296(s0)
+             id="tspan52">sd      a3,-296(s0)
 </tspan></tspan><tspan
            x="162.24219"
            y="225.96249"
-           id="tspan37"><tspan
+           id="tspan55"><tspan
              style="fill:#000000"
-             id="tspan36">jal     40a0
+             id="tspan54">jal     40a0
 </tspan></tspan><tspan
            x="162.24219"
            y="240.96249"
-           id="tspan39"><tspan
+           id="tspan57"><tspan
              style="fill:#000000"
-             id="tspan38">beqz    a0,584e
+             id="tspan56">beqz    a0,584e
 </tspan></tspan></text>
       <rect
          style="fill:none;stroke:#000000;stroke-width:0.264583"
          id="tspan26"
          style="stroke-width:0.264583"
          x="111.41705"
-         y="28.275999">in qemu (host) memory.</tspan></text>
+         y="28.275999">in qemu (host) memory</tspan></text>
     <text
        xml:space="preserve"
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
diff --git a/2024-tcg/02-tcg-helpers.png b/2024-tcg/02-tcg-helpers.png
new file mode 100644 (file)
index 0000000..635c494
Binary files /dev/null and b/2024-tcg/02-tcg-helpers.png differ
diff --git a/2024-tcg/02-tcg-helpers.svg b/2024-tcg/02-tcg-helpers.svg
new file mode 100644 (file)
index 0000000..df3ba40
--- /dev/null
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 297 210"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+   sodipodi:docname="02-tcg-helpers.svg"
+   inkscape:export-filename="02-tcg-helpers.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.0393815"
+     inkscape:cx="396.87064"
+     inkscape:cy="422.84763"
+     inkscape:window-width="1920"
+     inkscape:window-height="1029"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1"
+     inkscape:export-bgcolor="#ffffffff" />
+  <defs
+     id="defs1">
+    <marker
+       style="overflow:visible"
+       id="marker10"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path10" />
+    </marker>
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect5" />
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect6" />
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.264583"
+       id="rect1"
+       width="74.798347"
+       height="119.69866"
+       x="20.345798"
+       y="29.729326" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.264583"
+       id="rect2"
+       width="77.662941"
+       height="155.75682"
+       x="110.99847"
+       y="30.05344" />
+    <g
+       id="g14">
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:0.264583"
+         id="rect4"
+         width="37.450123"
+         height="24.308727"
+         x="37.793518"
+         y="38.232224" />
+      <text
+         xml:space="preserve"
+         transform="matrix(0.26458333,0,0,0.26458333,-4.2320215,-5.4130078)"
+         id="text4"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';white-space:pre;shape-inside:url(#rect5);display:inline;fill:none;stroke:#000000"><tspan
+           x="162.24219"
+           y="180.96249"
+           id="tspan6"><tspan
+             style="fill:#000000"
+             id="tspan5">auipc   a5,0x13
+</tspan></tspan><tspan
+           x="162.24219"
+           y="195.96249"
+           id="tspan12"><tspan
+             style="fill:#000000"
+             id="tspan11">addi    a5,a5,1756
+</tspan></tspan><tspan
+           x="162.24219"
+           y="210.96249"
+           id="tspan14"><tspan
+             style="fill:#000000"
+             id="tspan13">sd      a5,8(s9)
+</tspan></tspan><tspan
+           x="162.24219"
+           y="225.96249"
+           id="tspan16"><tspan
+             style="fill:#000000"
+             id="tspan15">sd      a5,0(s9)
+</tspan></tspan><tspan
+           x="162.24219"
+           y="240.96249"
+           id="tspan18"><tspan
+             style="fill:#000000"
+             id="tspan17">sret</tspan></tspan></text>
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583;marker-end:url(#marker10)"
+       d="m 10.108932,33.475348 26.955989,7.618676"
+       id="path9"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:none;stroke:#000000;stroke-width:0.264583"
+       x="116.86655"
+       y="54.056561"
+       id="text11"><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="54.056561"
+         id="tspan21">TranslationBlock</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="60.230186"
+         id="tspan33">________________</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="66.403809"
+         id="tspan34">x86 code</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="72.577438"
+         id="tspan35"> ...</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="78.75106"
+         id="tspan36"> ...</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="116.86655"
+         y="84.924683"
+         id="tspan38">call helper_sret</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
+       x="111.41705"
+       y="28.275999"
+       id="text26"><tspan
+         sodipodi:role="line"
+         id="tspan26"
+         style="stroke-width:0.264583"
+         x="111.41705"
+         y="28.275999">in qemu (host) memory</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
+       x="21.956394"
+       y="27.18642"
+       id="text27"><tspan
+         sodipodi:role="line"
+         id="tspan27"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="27.18642">guest physical page</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:none;stroke:#000000;stroke-width:0.264583"
+       x="133.73842"
+       y="105.73045"
+       id="text45"><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="105.73045"
+         id="tspan45">qemu function</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="111.90408"
+         id="tspan54">________________</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="118.07771"
+         id="tspan53">helper_sret(env)</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="124.25133"
+         id="tspan49">{</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="130.42496"
+         id="tspan50"> ...</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="136.59857"
+         id="tspan51"> ...</tspan><tspan
+         sodipodi:role="line"
+         style="fill:#000000;stroke-width:0.264583"
+         x="133.73842"
+         y="142.7722"
+         id="tspan52">}</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583;marker-end:url(#marker10)"
+       d="m 137.68437,87.212838 11.51232,22.203542"
+       id="path54"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/2024-tcg/03-not-obvious.png b/2024-tcg/03-not-obvious.png
new file mode 100644 (file)
index 0000000..0129232
Binary files /dev/null and b/2024-tcg/03-not-obvious.png differ
diff --git a/2024-tcg/03-not-obvious.svg b/2024-tcg/03-not-obvious.svg
new file mode 100644 (file)
index 0000000..feceb27
--- /dev/null
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 297 210"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+   sodipodi:docname="03-not-obvious.svg"
+   inkscape:export-filename="03-not-obvious.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.0393815"
+     inkscape:cx="396.38958"
+     inkscape:cy="422.84763"
+     inkscape:window-width="1920"
+     inkscape:window-height="1029"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1"
+     inkscape:export-bgcolor="#ffffffff" />
+  <defs
+     id="defs1">
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect5" />
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect6" />
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
+       x="21.956394"
+       y="27.18642"
+       id="text27"><tspan
+         sodipodi:role="line"
+         id="tspan27"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="27.18642">Some things which are important but not obvious:</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="33.360046"
+         id="tspan1" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="39.533669"
+         id="tspan2"> * TB invalidation is page based</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="45.707294"
+         id="tspan3" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="51.88092"
+         id="tspan6"> * Some jumps can be optimized</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="58.054546"
+         id="tspan7" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="64.228172"
+         id="tspan8"> * Guest's page cache is important</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="70.401794"
+         id="tspan11"></tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="76.575424"
+         id="tspan12"> * Slow performance is bad, but <tspan
+   style="font-style:italic"
+   id="tspan10">uneven</tspan> performance</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="82.749046"
+         id="tspan9">   might be worse</tspan></text>
+  </g>
+</svg>
diff --git a/2024-tcg/04-experiments.png b/2024-tcg/04-experiments.png
new file mode 100644 (file)
index 0000000..a323734
Binary files /dev/null and b/2024-tcg/04-experiments.png differ
diff --git a/2024-tcg/04-experiments.svg b/2024-tcg/04-experiments.svg
new file mode 100644 (file)
index 0000000..2afaa97
--- /dev/null
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 297 210"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+   sodipodi:docname="04-experiments.svg"
+   inkscape:export-filename="04-experiments.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.0393815"
+     inkscape:cx="396.38958"
+     inkscape:cy="422.84763"
+     inkscape:window-width="1920"
+     inkscape:window-height="1029"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1"
+     inkscape:export-bgcolor="#ffffffff" />
+  <defs
+     id="defs1">
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect5" />
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect6" />
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
+       x="21.956394"
+       y="27.18642"
+       id="text27"><tspan
+         sodipodi:role="line"
+         id="tspan27"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="27.18642">Experiments:</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="33.360046"
+         id="tspan1" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="39.533669"
+         id="tspan9"> * &quot;Super-pages&quot;</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="45.707294"
+         id="tspan17" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="51.88092"
+         id="tspan18"> * Software TLB changes</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="58.054546"
+         id="tspan19" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="64.228172"
+         id="tspan20"> * CPU state optimization</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="70.401794"
+         id="tspan21" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="76.575424"
+         id="tspan22"> * QOM casts</tspan></text>
+  </g>
+</svg>
diff --git a/2024-tcg/05-lessons.png b/2024-tcg/05-lessons.png
new file mode 100644 (file)
index 0000000..cb96155
Binary files /dev/null and b/2024-tcg/05-lessons.png differ
diff --git a/2024-tcg/05-lessons.svg b/2024-tcg/05-lessons.svg
new file mode 100644 (file)
index 0000000..31c2d3b
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 297 210"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+   sodipodi:docname="05-lessons.svg"
+   inkscape:export-filename="05-lessons.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.0393815"
+     inkscape:cx="396.38958"
+     inkscape:cy="422.84763"
+     inkscape:window-width="1920"
+     inkscape:window-height="1029"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1"
+     inkscape:export-bgcolor="#ffffffff" />
+  <defs
+     id="defs1">
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect5" />
+    <rect
+       x="162.24126"
+       y="170.28458"
+       width="154.29239"
+       height="363.85593"
+       id="rect6" />
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';fill:#000000;stroke:#000000;stroke-width:0.264583"
+       x="21.956394"
+       y="27.18642"
+       id="text27"><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="27.18642"
+         id="tspan9">Lessons:</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="33.360046"
+         id="tspan19" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="39.533669"
+         id="tspan20"> * There are no easy fixes</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="45.707294"
+         id="tspan21" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="51.88092"
+         id="tspan22"> * Lots of guest <tspan
+   style="font-style:italic"
+   id="tspan23">and</tspan> host RAM helps performance</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="58.054546"
+         id="tspan28" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="64.228172"
+         id="tspan29"> * Translation time doesn't matter much</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="70.401794"
+         id="tspan24" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="76.575424"
+         id="tspan25"> * CPU pinning</tspan><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="82.749046"
+         id="tspan26" /><tspan
+         sodipodi:role="line"
+         style="stroke-width:0.264583"
+         x="21.956394"
+         y="88.922668"
+         id="tspan27"> * Flame graphs &amp; profiles</tspan></text>
+  </g>
+</svg>