From cce0fc068e6982253e6a37e10f56f34c04107cad Mon Sep 17 00:00:00 2001 From: Holger Brunst <holger.brunst@tu-dresden.de> Date: Thu, 1 Sep 2022 12:51:56 +0200 Subject: [PATCH] Added initial complete version of new performance engineering overview document. --- .../misc/performance_engineering_cycle.svg | 312 ++++++++++++++++++ .../performance_engineering_overview.md | 268 +++++++++++++++ .../software/software_development_overview.md | 6 +- doc.zih.tu-dresden.de/mkdocs.yml | 1 + doc.zih.tu-dresden.de/wordlist.aspell | 5 +- 5 files changed, 586 insertions(+), 6 deletions(-) create mode 100644 doc.zih.tu-dresden.de/docs/software/misc/performance_engineering_cycle.svg create mode 100644 doc.zih.tu-dresden.de/docs/software/performance_engineering_overview.md diff --git a/doc.zih.tu-dresden.de/docs/software/misc/performance_engineering_cycle.svg b/doc.zih.tu-dresden.de/docs/software/misc/performance_engineering_cycle.svg new file mode 100644 index 000000000..6cbe93112 --- /dev/null +++ b/doc.zih.tu-dresden.de/docs/software/misc/performance_engineering_cycle.svg @@ -0,0 +1,312 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 960 720" + height="720" + width="960" + xml:space="preserve" + id="svg2" + version="1.1"><metadata + id="metadata8"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs6"><clipPath + id="clipPath18" + clipPathUnits="userSpaceOnUse"><path + style="clip-rule:evenodd" + id="path16" + d="M 0,1.2207e-4 H 720 V 540.00012 H 0 Z" /></clipPath></defs><g + transform="matrix(1.3333333,0,0,-1.3333333,0,720)" + id="g10"><g + id="g12"><g + clip-path="url(#clipPath18)" + id="g14"><path + id="path20" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></g></g><path + id="path22" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 337.36,494.91 c 0,7.86 6.37,14.22 14.22,14.22 h 102.84 c 7.86,0 14.23,-6.36 14.23,-14.22 v -56.89 c 0,-7.86 -6.37,-14.22 -14.23,-14.22 H 351.58 c -7.85,0 -14.22,6.36 -14.22,14.22 z" /><path + id="path24" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 337.36,494.91 c 0,7.86 6.37,14.22 14.22,14.22 h 102.84 c 7.86,0 14.23,-6.36 14.23,-14.22 v -56.89 c 0,-7.86 -6.37,-14.22 -14.23,-14.22 H 351.58 c -7.85,0 -14.22,6.36 -14.22,14.22 z" /><text + id="text28" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,350.64,471.6)"><tspan + id="tspan26" + y="0" + x="0 4.7779198 14.73192 21.955681 28.30728 34.92432 44.878319 60.027359 69.469437 79.309677 85.433762 94.875839 104.82984">Instrumented </tspan></text> +<text + id="text32" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,360.48,450.72)"><tspan + id="tspan30" + y="0" + x="0 9.0818396 19.035839 28.98984 33.350639 37.711441 45.598801 54.604801 60.956402 65.3172 75.252243">application</tspan></text> +<path + id="path34" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 485.76,450.27 3.07,-1.4 3.07,-1.47 3.04,-1.52 3.01,-1.57 2.98,-1.62 2.96,-1.66 2.93,-1.72 2.89,-1.76 2.88,-1.81 2.83,-1.87 2.81,-1.9 2.77,-1.96 2.75,-2 2.7,-2.05 2.68,-2.1 0.33,-0.27 -1.89,-2.33 -0.29,0.24 -2.64,2.07 -2.66,2.01 -2.71,1.98 -2.72,1.92 -2.78,1.88 -2.79,1.84 -2.82,1.79 -2.86,1.73 -2.88,1.7 -2.91,1.64 -2.95,1.59 -2.97,1.55 -2.99,1.49 -3.02,1.45 -3.07,1.4 z m 40.46,-17.57 4.61,-12.15 -12.84,1.97 c -0.82,0.12 -1.38,0.89 -1.25,1.71 0.12,0.81 0.89,1.38 1.71,1.25 l 10.29,-1.57 -1.62,-2.02 -3.7,9.74 c -0.3,0.78 0.09,1.64 0.87,1.94 0.77,0.29 1.64,-0.1 1.93,-0.87 z" /><path + id="path36" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 511.34,394.46 c 0,7.86 6.37,14.22 14.23,14.22 h 102.84 c 7.85,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.86 -6.37,-14.22 -14.22,-14.22 H 525.57 c -7.86,0 -14.23,6.36 -14.23,14.22 z" /><path + id="path38" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 511.34,394.46 c 0,7.86 6.37,14.22 14.23,14.22 h 102.84 c 7.85,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.86 -6.37,-14.22 -14.22,-14.22 H 525.57 c -7.86,0 -14.23,6.36 -14.23,14.22 z" /><text + id="text42" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,522.62,371.14)"><tspan + id="tspan40" + y="0" + x="0 16.2108 25.65288 34.77264 42.186001 52.139999 58.529518 67.971603 83.120644 92.562721 102.44088 108.79248">Measurement </tspan></text> +<text + id="text46" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,559.94,350.26)"><tspan + id="tspan44" + y="0" + x="0 9.9540005 18.959999 25.08408">data</tspan></text> +<path + id="path48" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 602.26,301.13 0.73,-4.39 0.64,-4.43 0.54,-4.44 0.45,-4.45 0.34,-4.46 0.25,-4.45 0.14,-4.47 0.06,-4.46 -0.06,-4.47 -0.14,-4.46 -0.25,-4.46 -0.34,-4.45 -0.44,-4.45 -0.55,-4.44 -0.63,-4.43 -0.25,-1.49 -2.96,0.5 0.24,1.42 0.63,4.37 0.53,4.36 0.44,4.39 0.34,4.39 0.24,4.39 0.14,4.4 0.06,4.39 -0.05,4.4 -0.15,4.4 -0.24,4.4 -0.34,4.38 -0.43,4.38 -0.54,4.38 -0.62,4.36 -0.74,4.39 z m 6.83,-60.9 -8.31,-9.99 -4.6,12.15 c -0.3,0.78 0.09,1.64 0.87,1.94 0.77,0.29 1.64,-0.1 1.93,-0.88 l 3.69,-9.74 -2.55,0.43 6.66,8.01 c 0.53,0.63 1.48,0.72 2.11,0.19 0.64,-0.53 0.73,-1.47 0.2,-2.11 z" /><path + id="path50" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 511.34,193.56 c 0,7.86 6.37,14.22 14.23,14.22 h 102.84 c 7.85,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.85 -6.37,-14.22 -14.22,-14.22 H 525.57 c -7.86,0 -14.23,6.37 -14.23,14.22 z" /><path + id="path52" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 511.34,193.56 c 0,7.86 6.37,14.22 14.23,14.22 h 102.84 c 7.85,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.85 -6.37,-14.22 -14.22,-14.22 H 525.57 c -7.86,0 -14.23,6.37 -14.23,14.22 z" /><text + id="text56" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,527.42,170.18)"><tspan + id="tspan54" + y="0" + x="0 9.4799995 18.922079 25.53912 30.961679 40.953602 47.570641 62.643841 71.725677 81.67968 89.737679 99.179764">Performance </tspan></text> +<text + id="text60" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,531.62,149.3)"><tspan + id="tspan58" + y="0" + x="0 4.3607998 14.16312 19.566719 29.55864 36.175678 51.248878 60.254879 66.606483 70.967278 80.902321">information</tspan></text> +<path + id="path62" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 531.77,109.41 -2.62,-2.13 -2.68,-2.09 -2.7,-2.05 -2.75,-2.01 -2.77,-1.953 -2.81,-1.912 -2.83,-1.859 -2.87,-1.814 -2.9,-1.767 -2.93,-1.717 -2.95,-1.669 -2.99,-1.618 -3.01,-1.565 -3.04,-1.518 -3.07,-1.466 -0.39,-0.179 -1.25,2.725 0.35,0.161 3.02,1.443 2.99,1.497 2.97,1.54 2.94,1.592 2.91,1.646 2.89,1.688 2.85,1.743 2.83,1.786 2.79,1.831 2.77,1.885 2.74,1.93 2.7,1.97 2.66,2.01 2.64,2.08 2.62,2.12 z m -33.71,-28.459 -12.93,1.261 7.46,10.634 c 0.48,0.678 1.41,0.842 2.09,0.366 0.68,-0.475 0.84,-1.411 0.37,-2.089 l -5.99,-8.529 -1.08,2.354 10.37,-1.011 c 0.83,-0.08 1.43,-0.814 1.35,-1.638 -0.08,-0.825 -0.81,-1.428 -1.64,-1.348 z" /><path + id="path64" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 337.36,93.111 c 0,7.859 6.37,14.219 14.22,14.219 h 102.84 c 7.86,0 14.23,-6.36 14.23,-14.219 v -56.89 c 0,-7.856 -6.37,-14.224 -14.23,-14.224 H 351.58 c -7.85,0 -14.22,6.368 -14.22,14.224 z" /><path + id="path66" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 337.36,93.111 c 0,7.859 6.37,14.219 14.22,14.219 h 102.84 c 7.86,0 14.23,-6.36 14.23,-14.219 v -56.89 c 0,-7.856 -6.37,-14.224 -14.23,-14.224 H 351.58 c -7.85,0 -14.22,6.368 -14.22,14.224 z" /><text + id="text70" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,353.4,69.72)"><tspan + id="tspan68" + y="0" + x="0 9.4799995 18.922079 25.53912 30.961679 40.953602 47.570641 62.643841 71.725677 81.67968 89.737679 99.179764">Performance </tspan></text> +<text + id="text74" + style="font-variant:normal;font-weight:normal;font-size:18.98399925px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,378.72,48.816)"><tspan + id="tspan72" + y="0" + x="0 6.3596401 15.813672 25.780272 35.78484 42.410255">report</tspan></text> +<path + id="path76" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 320.25,80.852 -3.06,1.41 -3.07,1.465 -3.04,1.519 -3.01,1.563 -2.99,1.617 -2.95,1.671 -2.93,1.713 -2.9,1.77 -2.87,1.812 -2.84,1.858 -2.81,1.913 -2.77,1.957 -2.74,2 -2.71,2.05 -2.68,2.1 -0.33,0.27 1.89,2.33 0.29,-0.24 2.64,-2.07 2.67,-2.02 2.7,-1.97 2.74,-1.93 2.75,-1.88 2.8,-1.832 2.83,-1.788 2.85,-1.74 2.89,-1.692 2.91,-1.644 2.94,-1.592 2.97,-1.543 2.99,-1.495 3.03,-1.446 3.07,-1.41 z m -40.46,17.58 -4.61,12.148 12.84,-1.97 c 0.82,-0.12 1.38,-0.89 1.25,-1.71 -0.12,-0.82 -0.89,-1.38 -1.71,-1.25 l -10.29,1.57 1.62,2.02 3.7,-9.744 c 0.3,-0.774 -0.09,-1.64 -0.87,-1.934 -0.77,-0.294 -1.64,0.095 -1.93,0.87 z" /><path + id="path78" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 163.38,193.56 c 0,7.86 6.36,14.22 14.22,14.22 h 102.84 c 7.86,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.85 -6.36,-14.22 -14.22,-14.22 H 177.6 c -7.86,0 -14.22,6.37 -14.22,14.22 z" /><path + id="path80" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 163.38,193.56 c 0,7.86 6.36,14.22 14.22,14.22 h 102.84 c 7.86,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.85 -6.36,-14.22 -14.22,-14.22 H 177.6 c -7.86,0 -14.22,6.37 -14.22,14.22 z" /><text + id="text84" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,209.28,180.62)"><tspan + id="tspan82" + y="0" + x="0 10.10568 20.04072 29.99472 39.436798">Code </tspan></text> +<text + id="text88" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,177,159.74)"><tspan + id="tspan86" + y="0" + x="0 4.3607998 19.434 29.388 35.625839 45.46608 53.751598 63.19368 78.34272 87.784798 97.662956 104.01456">improvement </tspan></text> +<text + id="text92" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,194.28,138.86)"><tspan + id="tspan90" + y="0" + x="0 9.9540005 19.945921 26.03208 35.474159 45.352322 51.703918 56.06472 65.146561">potential</tspan></text> +<path + id="path94" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 203.76,230 -0.74,4.39 -0.63,4.43 -0.55,4.43 -0.44,4.45 -0.34,4.46 -0.25,4.46 -0.15,4.46 -0.05,4.46 0.05,4.47 0.15,4.46 0.24,4.46 0.34,4.45 0.45,4.45 0.54,4.45 0.64,4.42 0.25,1.5 2.96,-0.5 -0.24,-1.42 -0.63,-4.37 -0.54,-4.37 -0.43,-4.39 -0.34,-4.38 -0.25,-4.39 -0.14,-4.41 -0.05,-4.39 0.05,-4.4 0.14,-4.39 0.25,-4.4 0.33,-4.39 0.44,-4.38 0.54,-4.37 0.62,-4.36 0.74,-4.39 z m -6.83,60.9 8.31,9.98 4.6,-12.14 c 0.29,-0.78 -0.1,-1.64 -0.87,-1.94 -0.78,-0.29 -1.64,0.1 -1.94,0.87 v 0 l -3.69,9.75 2.56,-0.43 -6.67,-8.01 c -0.52,-0.64 -1.47,-0.72 -2.11,-0.19 -0.63,0.53 -0.72,1.47 -0.19,2.11 z" /><path + id="path96" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 163.38,394.46 c 0,7.86 6.36,14.22 14.22,14.22 h 102.84 c 7.86,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.86 -6.36,-14.22 -14.22,-14.22 H 177.6 c -7.86,0 -14.22,6.36 -14.22,14.22 z" /><path + id="path98" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 163.38,394.46 c 0,7.86 6.36,14.22 14.22,14.22 h 102.84 c 7.86,0 14.22,-6.36 14.22,-14.22 v -56.89 c 0,-7.86 -6.36,-14.22 -14.22,-14.22 H 177.6 c -7.86,0 -14.22,6.36 -14.22,14.22 z" /><text + id="text102" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,192.24,371.14)"><tspan + id="tspan100" + y="0" + x="0 4.7779198 19.92696 29.88096 36.118801 45.959042 54.24456 63.686642 73.64064">Improved </tspan></text> +<text + id="text106" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,186.48,350.26)"><tspan + id="tspan104" + y="0" + x="0 9.0818396 19.035839 28.98984 33.350639 37.711441 45.598801 54.604801 60.956402 65.3172 75.252243">application</tspan></text> +<path + id="path108" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 274.24,421.72 2.62,2.12 2.68,2.1 2.71,2.05 2.74,2 2.78,1.96 2.8,1.91 2.84,1.86 2.87,1.82 2.9,1.76 2.92,1.72 2.96,1.66 2.99,1.62 3.01,1.57 3.04,1.52 3.07,1.47 0.39,0.17 1.24,-2.72 -0.34,-0.16 -3.02,-1.44 -2.99,-1.5 -2.98,-1.55 -2.94,-1.59 -2.91,-1.64 -2.89,-1.7 -2.85,-1.73 -2.82,-1.79 -2.8,-1.84 -2.77,-1.87 -2.73,-1.93 -2.7,-1.97 -2.67,-2.02 -2.64,-2.07 -2.62,-2.12 z m 33.72,28.48 12.93,-1.29 -7.49,-10.62 c -0.47,-0.68 -1.41,-0.84 -2.09,-0.36 -0.67,0.47 -0.84,1.41 -0.36,2.09 l 6,8.51 1.08,-2.35 -10.37,1.03 c -0.82,0.08 -1.42,0.82 -1.34,1.64 0.08,0.83 0.82,1.43 1.64,1.35 z" /><path + id="path110" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 40.169,496.65 c 0,7.86 6.368,14.23 14.223,14.23 H 157.23 c 7.86,0 14.23,-6.37 14.23,-14.23 v -56.89 c 0,-7.85 -6.37,-14.22 -14.23,-14.22 H 54.392 c -7.855,0 -14.223,6.37 -14.223,14.22 z" /><path + id="path112" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 40.169,496.65 c 0,7.86 6.368,14.23 14.223,14.23 H 157.23 c 7.86,0 14.23,-6.37 14.23,-14.23 v -56.89 c 0,-7.85 -6.37,-14.22 -14.23,-14.22 H 54.392 c -7.855,0 -14.223,6.37 -14.223,14.22 z" /><text + id="text116" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,53.664,473.23)"><tspan + id="tspan114" + y="0" + x="0 12.12002">Un</tspan></text> +<text + id="text120" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,75.768,473.23)"><tspan + id="tspan118" + y="0" + x="0">-</tspan></text> +<text + id="text124" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,81.528,473.23)"><tspan + id="tspan122" + y="0" + x="0 9.9919205 19.794241 26.14584 30.506639 45.598801 49.959599 56.993759 66.435837 76.389839">optimized </tspan></text> +<text + id="text128" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,63.144,452.71)"><tspan + id="tspan126" + y="0" + x="0 9.0818396 19.035839 28.98984 33.350639 37.711441 45.598801 54.604801 60.956402 65.3172 75.252243">application</tspan></text> +<path + id="path130" + style="fill:#4f81bd;fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 40.169,92.584 c 0,7.856 6.368,14.226 14.223,14.226 H 157.23 c 7.86,0 14.23,-6.37 14.23,-14.226 v -56.89 c 0,-7.855 -6.37,-14.223 -14.23,-14.223 H 54.392 c -7.855,0 -14.223,6.368 -14.223,14.223 z" /><path + id="path132" + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + d="m 40.169,92.584 c 0,7.856 6.368,14.226 14.223,14.226 H 157.23 c 7.86,0 14.23,-6.37 14.23,-14.226 v -56.89 c 0,-7.855 -6.37,-14.223 -14.23,-14.223 H 54.392 c -7.855,0 -14.223,6.368 -14.223,14.223 z" /><text + id="text136" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,66.264,69.072)"><tspan + id="tspan134" + y="0" + x="0 12.55152 22.448641 28.80024 33.161041 48.253201 52.613998 59.534401 68.976479 78.930481">Optimized </tspan></text> +<text + id="text140" + style="font-variant:normal;font-weight:normal;font-size:18.95999908px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,63.144,48.552)"><tspan + id="tspan138" + y="0" + x="0 9.0818396 19.035839 28.98984 33.350639 37.711441 45.598801 54.604801 60.956402 65.3172 75.252243">application</tspan></text> +<path + id="path142" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="m 190.38,469.71 h 127.44 v -3 H 190.38 Z m 119.2,5.04 11.22,-6.54 -11.22,-6.55 c -0.72,-0.42 -1.64,-0.17 -2.06,0.54 -0.41,0.72 -0.17,1.64 0.54,2.05 l 9,5.25 v -2.59 l -9,5.25 c -0.71,0.42 -0.95,1.34 -0.54,2.05 0.42,0.72 1.34,0.96 2.06,0.54 z" /><path + id="path144" + style="fill:#4f81bd;fill-opacity:1;fill-rule:nonzero;stroke:none" + d="M 320.79,65.639 H 193.35 v -3 H 320.79 Z M 201.6,70.685 190.37,64.139 201.6,57.594 c 0.71,-0.418 1.63,-0.176 2.05,0.539 0.41,0.716 0.17,1.634 -0.54,2.052 l -9,5.25 v -2.591 l 9,5.25 c 0.71,0.417 0.95,1.335 0.54,2.051 -0.42,0.716 -1.34,0.957 -2.05,0.54 z" /><text + id="text148" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,509.04,445.9)"><tspan + id="tspan146" + y="0" + x="0">M</tspan></text> +<text + id="text152" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,524.76,445.9)"><tspan + id="tspan150" + y="0" + x="0 9.1079998 18 25.181999 34.883999 41.004002 50.112 64.746002 73.800003 83.232002">easurement</tspan></text> +<text + id="text156" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,612.02,260.88)"><tspan + id="tspan154" + y="0" + x="0">A</tspan></text> +<text + id="text160" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,622.94,260.88)"><tspan + id="tspan158" + y="0" + x="0 9.7019997 18.594 23.021999 31.427999 38.610001 43.037998">nalysis</tspan></text> +<text + id="text164" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,512.81,72.72)"><tspan + id="tspan162" + y="0" + x="0">P</tspan></text> +<text + id="text168" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,522.41,72.72)"><tspan + id="tspan166" + y="0" + x="0 6.1199999 15.228 22.41 31.535999 41.130001 47.124001 55.889999 62.136002 66.564003 76.176003">resentation</tspan></text> +<text + id="text172" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,208.49,76.392)"><tspan + id="tspan170" + y="0" + x="0">E</tspan></text> +<text + id="text176" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,216.77,76.392)"><tspan + id="tspan174" + y="0" + x="0 8.2799997 17.172001 21.6 31.302 40.068001 46.313999 50.742001 60.425999">valuation</tspan></text> +<text + id="text180" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,126.6,271.78)"><tspan + id="tspan178" + y="0" + x="0 9.5220003 19.205999 28.872 38.015999">Code </tspan></text> +<text + id="text184" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,100.2,250.18)"><tspan + id="tspan182" + y="0" + x="0 9.684 19.35 25.596001 30.024 44.658001 49.085999 56.034 64.800003 71.045998 75.365997 84.959999">optimization</tspan></text> +<text + id="text188" + style="font-variant:normal;font-weight:bold;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Bold';writing-mode:lr-tb;fill:#17375e;fill-opacity:1;fill-rule:nonzero;stroke:none" + transform="matrix(1,0,0,-1,178.68,447.91)"><tspan + id="tspan186" + y="0" + x="0 4.8060002 14.472 21.474001 27.719999 34.110001 43.776001 58.41 67.536003 77.022003 83.015999 91.781998 98.028 102.348 112.032">Instrumentation</tspan></text> +</g></svg> \ No newline at end of file diff --git a/doc.zih.tu-dresden.de/docs/software/performance_engineering_overview.md b/doc.zih.tu-dresden.de/docs/software/performance_engineering_overview.md new file mode 100644 index 000000000..972b31b1b --- /dev/null +++ b/doc.zih.tu-dresden.de/docs/software/performance_engineering_overview.md @@ -0,0 +1,268 @@ +# Performance Engineering Overview + +!!! cite "Walter J. Doherty, 1970 [^1]" + + Fundamentally, performance is the degree to which a computing system meets the expectations of + the person involved with it. + +Performance engineering encompasses the techniques applied during a systems development life cycle +to ensure the non-functional requirements for performance (such as throughput, latency, or memory +usage) will be met. +Often, it is also referred to as systems performance engineering within systems engineering, and +software performance engineering or application performance engineering within software engineering +[[Wikipedia]](https://en.wikipedia.org/wiki/Performance_engineering). + +[^1]: Scheduling TSS/360 for responsiveness. In: AFIPS '70 (Fall): Proceedings of the November + 17-19, 1970, fall joint computer conference, November 1970, Pages 97–111 + +## Objectives + +??? hint "Some good reasons to think about performance in HPC" + + - Increase research output by ensuring the system can process transactions within the requisite time + frame + - Eliminate system failure requiring scrapping and writing off the system development effort due to + performance objective failure + - Eliminate avoidable system tuning efforts + - Avoid additional and unnecessary hardware acquisition costs + - Reduce increased software maintenance costs due to performance problems in production + - Reduce additional operational overhead for handling system issues due to performance problems + - Identify future bottlenecks by simulation over prototype + +## Installed Tools in a Nutshell + +| | Task | Easiness | Details | Overhead | Re-compilation | +|----------------------|----------------------------------------------|-------------|----------|-----------|----------------- +| [lo2s](#lo2s) | Create performance [trace](#trace) | easy | medium | low | (no)[^2] | +| [MUST](#must) | Check MPI correctness | medium | medium | variable | no | +| [PAPI](#papi) | Read portable CPU counters | advanced | medium | variable | yes | +| [Perf](#perf-tools) | Produce and visualize [profile](#profile) | easy | medium | low | (no)[^2] | +| [PIKA](#pika) | Show performance [profile](#profile) and [trace](#trace) | very easy | low | very low | no | +| [Slurm](#slurm-profiler) | Produce and visualize simple [trace](#trace)| easy | low | low | no | +| [Score-P](#score-p) | Create performance [trace](#trace) | complex | high | variable | yes | +| [Vampir](#vampir) | Visualize performance [trace](#trace) | complex | high | n.a. | n.a. | + +[^2]: Re-compilation is not required. Yet, to obtain more details it is recommended to re-compile with the `-g` compiler option, which adds debugging information to the executable of an application. + +## Approach and Terminology + +Performance engineering typically is a cyclic process. +The following figure shows such a process and its potential stages. + + + +### Instrumentation + +!!! hint "Instrumentation is a common term for preparing the performance measurement" + +The engineering process typically begins with the original application in its unmodified state. +First, this application needs to be instrumented, i.e. it must be prepared to enable the +measurement of the performance properties. +There are different ways to do this, including manual instrumentation of the source code by the +user, automatic instrumentation by the compiler, linking against pre-instrumented libraries, or +interrupt-driven sampling during run time. + +### Measurement + +!!! note "During measurement, raw performance data is collected" + +When an instrumented application is executed, the additional instructions introduced during the +instrumentation phase collect and record the data required to evaluate the performance properties +of the code. +Unfortunately, the measurement itself has a certain influence on the performance of the instrumented +code. +Whether the perturbations introduced have a significant effect on the behavior depends on the +specific structure of the code to be investigated. +In many cases, the perturbations will be rather small, so that the overall results can be considered +to be a realistic approximation of the corresponding properties of the non-instrumented code. +Yet, it is always advisable to compare the runtime of instrumented applications with their original +non-instrumented counterpart. + +#### Profile + +!!! hint "Performance profiles hold aggregated data (e.g. total time spent in function `foo()`)" + +A performance profile provides aggregated metrics like _time_ or _number of calls_ for a list of +functions, loops or similar as depicted in the following table: + +| Function | Total Time | Calls | Percentage | +|----------|-----------:|------:|-----------:| +| `main()` | 2 s | 1 | 1% | +| `foo()` | 80 s | 100 | 40% | +| `bar()` | 118 s | 9000 | 59% | + +#### Trace + +<!-- markdownlint-disable-next-line line-length --> +!!! hint "Traces consist of a sorted list of timed application events/samples (e.g. enter function `foo()` at 0.11 s)." + +In contrast to performance [profiles](#profile), performance traces consist of individual +application samples or events that are recorded with a timestamp. +A trace that corresponds to the profile recording above could look as follows: + +| Timestamp | Data Type | Parameter | +|----------:|----------------|-----------------| +| 0.10 s | Enter Function | `main()` | +| 0.11 s | Enter Function | `foo()` | +| 0.12 s | Enter Function | `bar()` | +| 0.15 s | Exit Function | `bar()` | +| 0.16 s | Enter Function | `bar()` | +| 0.17 s | Exit Function | `bar()` | +| | _many more events..._ | | +| 200.00 s | Exit Function | `main()` | + +<!-- markdownlint-disable-next-line line-length --> +!!! hint "Traces enable more sophisticated analysis at the cost of potentially very large amounts of raw data." + +Apparently, the size of a performance trace depends on the recorded time whereas a profile does not. +Likewise, a trace can tell you when a specific action in your application happened whereas a profile +will tell you how much time in total a class of actions takes. + +### Analysis + +!!! note "Well defined performance metrics are derived from raw performance data during analysis" + +The collected raw data is typically processed by a analysis tool (profiler, consistency checker, you +name it) to derive meaningful, well-defined performance metrics like data rates, data dependencies, +performance events of interest, etc. +This step is typically hidden to the user and taken care of automatically once the raw data was +collected. +Some tools, however, provide an independent analysis front-end that allows specifying the type of +analysis to carry out on the raw data. + +### Presentation + +!!! note "Presenting performance metrics graphically fosters human intuition" + +After processing the raw performance data, the resulting metrics are usually presented in the form +of a report that makes use of tables or charts known from programs like Excel. +In this step, the reduction of the data complexity simplifies the evaluation of the data by software +developers. +Yet, data reductions have the potential to hide important facts or details. + +### Evaluation + +!!! note "The evaluation of performance metrics requires tools and lots of thinking" + +During the evaluation phase, the metrics and findings in a performance report are compared to the +behavior/performance as expected by software developers. +This step typically requires a fair amount of knowledge about the application under test or software +performance in general. +The application is considered to behave sufficiently well or weaknesses have been identified which +potentially can be improved. +An application or its configuration is changed in the later case. +After evaluating an application's performance, the cyclic engineering process is either completed or +restarted from beginning. + +## Installed Tools Summary + +At ZIH, the following performance engineering tools are installed and maintained: + +### lo2s + +!!! hint "Easy to use application and system performance trace recorder supporting Vampir" + +[lo2s](lo2s.md) records the status of an application at fixed intervals (statistical sampling). +It does not require any [instrumentation](#instrumentation). +The [measurement](#measurement) of a given application is done by pre-fixing the application's +executable with `lo2s`. +The data analysis of the fixed metrics is fully integrated and does not require any user actions. +Performance data is written to a [traces](#trace) repository at the current directory. +See [lo2s](lo2s.md) for further details. +Once the data have been recorded, the tool [Vampir](vampir.md) needs to be invoked to study the data +graphically. + +### MUST + +<!-- markdownlint-disable-next-line line-length --> +!!! hint "Advanced communication error detection for applications using the Message Passing Interface (MPI) standard." + +[MUST](mpi_usage_error_detection.md) checks your application for communication errors if the MPI +library is used. +It does not require any [instrumentation](#instrumentation). +The checks of a given MPI application are done by simply replacing `srun` with `mustrun` when the +application is started. +The data analysis of the fixed metrics is fully integrated and does not require any user actions. +The correctness results are written to an HTML-formatted output file, which can be inspected with a +web browser. + +### PAPI + +!!! hint "Portable reading of CPU performance metrics like FLOPS" + +The [PAPI](papi.md) library allows software developers to read CPU performance counters in a +platform-independent way. +Native usage of the library requires to manually [instrument](#instrumentation) an application by +adding library calls to the source code of the application under investigation. +Data [measurement](#measurement) happens whenever the PAPI library is called. +The data obtained is raw data. +Software developers have to process the data by themselves to obtain meaningful metrics. +Tools like [Score-P](#score-p) have built-in support for PAPI. +Therefore, native usage of the PAPI library is usually not needed. + +### Perf Tools + +!!! hint "Easy to use Linux-integrated performance data recording and analysis" + +[Linux perf](perf_tools.md) reads and analyses CPU performance counters for any given application. +It does not require any [instrumentation](#instrumentation). +The [measurement](#measurement) of a given application is done by simply prefixing the application +executable with `perf`. +Perf has two modes of operation (`perf stat`, `perf record`), which both record [profile](#profile) +raw data. +While the first mode is very basic, the second mode records more data. +Use `perf report` to analyze the raw output data of `perf record` and produce a performance report. +See [Linux perf](perf_tools.md) for further details. + +### PIKA + +!!! hint "Very easy to use performance visualization of entire batch jobs" + +[PIKA](pika.md) allows users to study their active and completed +[batch jobs](../jobs_and_resources/slurm.md). +It does not require any [instrumentation](#instrumentation). +The [measurement](#measurement) of batch jobs happens automatically in the background for all batch +jobs. +The data analysis of the given set of metrics is fully integrated and does not require any user +actions. +Performance metrics are accessible via the +[PIKA web service](https://selfservice.tu-dresden.de/services/1663599/). + +### Score-P + +!!! hint "Complex and powerful performance data recording and analysis of parallel applications" + +[Score-P](scorep.md) is an advanced tool that measures configurable performance event data. +It generates both [profiles](#profile) and detailed [traces](#trace) for subsequent analysis. +It supports automated [instrumentation](#instrumentation) of an application (involves +re-compilation) prior to the [measurement](#measurement) step. +The data analysis of the raw performance data can be carried out with the tools `scalasca` +(advanced MPI metrics), `cube` ([profile](#profile) viewer), `scorep-score` ([profile](#profile) +command line viewer), or [Vampir](#vampir) ([trace](#trace) viewer). +Many raw data sources are supported by Score-P. +It requires some time, training, and practice to fully benefit from the tool's features. +See [Score-P](scorep.md) for further details. + +### Slurm Profiler + +!!! hint "Easy to use performance visualization of entire batch jobs" + +The [Slurm Profiler](../jobs_and_resources/slurm_profiling.md) gathers performance data from every +task/node of a given [batch job](../jobs_and_resources/slurm.md). +It records a coarse-grained [trace](#trace) for subsequent analysis. +[Instrumentation](#instrumentation) of the applications under test is not needed. +The data analysis of the given set of system metrics needs to be initiated by the user with a +command line interface. +The resulting performance metrics are accessible in a simple graphical front-end that provides +time/performance graphs. + +### Vampir + +!!! hint "Complex and powerful performance data visualization of parallel applications" + +[Vampir](vampir.md) is a graphical analysis tool that provides a large set of different chart +representations for performance data [traces](#trace) generated by tools such as +[Score-P](scorep.md) or [lo2s](lo2s.md). +Complex statistics, timelines, and state diagrams can be used by software developers to obtain a +better understanding of the inner working of a parallel application. +The tool requires some time, training, and practice to fully benefit from its rich set of features. diff --git a/doc.zih.tu-dresden.de/docs/software/software_development_overview.md b/doc.zih.tu-dresden.de/docs/software/software_development_overview.md index ed38b2b5d..04471fb13 100644 --- a/doc.zih.tu-dresden.de/docs/software/software_development_overview.md +++ b/doc.zih.tu-dresden.de/docs/software/software_development_overview.md @@ -13,11 +13,7 @@ It will tell you: - How to deal with (or even prevent) bugs - [Find caveats and hidden errors in MPI application codes](mpi_usage_error_detection.md) - [Using debuggers](debuggers.md) -- How to investigate the performance and efficiency of your code - - [Pika: monitoring of batch jobs](pika.md) - - [Perf: sampling-based performance analysis](perf_tools.md) - - [Score-P: event tracing of HPC applications](scorep.md) - - [Vampir: trace visualization](vampir.md) +- [How to investigate the performance and efficiency of your code](performance_engineering_overview.md) Some hints that are helpful: diff --git a/doc.zih.tu-dresden.de/mkdocs.yml b/doc.zih.tu-dresden.de/mkdocs.yml index 4b5e8ce98..604067175 100644 --- a/doc.zih.tu-dresden.de/mkdocs.yml +++ b/doc.zih.tu-dresden.de/mkdocs.yml @@ -82,6 +82,7 @@ nav: - Mathematics Libraries: software/math_libraries.md - Debugging: software/debuggers.md - Software Engineering Tools: + - Overview: software/performance_engineering_overview.md - MPI Error Detection: software/mpi_usage_error_detection.md - Score-P: software/scorep.md - lo2s: software/lo2s.md diff --git a/doc.zih.tu-dresden.de/wordlist.aspell b/doc.zih.tu-dresden.de/wordlist.aspell index 868eaafc9..08d177bd1 100644 --- a/doc.zih.tu-dresden.de/wordlist.aspell +++ b/doc.zih.tu-dresden.de/wordlist.aspell @@ -1,9 +1,10 @@ -personal_ws-1.1 en 471 +personal_ws-1.1 en 475 Abaqus ACL ACLs Addon Addons +AFIPS ALLREDUCE Altix Amber @@ -75,6 +76,7 @@ Dockerfile Dockerfiles DockerHub dockerized +Doherty DOI don'ts dotfile @@ -432,6 +434,7 @@ tracefiles tracepoints transferability Trition +TSS TUD und undistinguishable -- GitLab