From a98448283235395e07e113cc0865e653c4cdfc82 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Mon, 4 Nov 2024 11:01:28 +0000 Subject: [PATCH 01/12] add analysis scripts --- .../analysis/perf_analysis_template.ipynb | 433 ++ .../benchmark_velox/analysis/requirements.txt | 174 + .../workload/benchmark_velox/analysis/run.py | 11 + .../analysis/run_perf_analysis.sh | 120 + .../benchmark_velox/analysis/sparklog.ipynb | 5176 +++++++++++++++++ .../workload/benchmark_velox/initialize.ipynb | 99 +- 6 files changed, 6006 insertions(+), 7 deletions(-) create mode 100644 tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb create mode 100644 tools/workload/benchmark_velox/analysis/requirements.txt create mode 100644 tools/workload/benchmark_velox/analysis/run.py create mode 100755 tools/workload/benchmark_velox/analysis/run_perf_analysis.sh create mode 100644 tools/workload/benchmark_velox/analysis/sparklog.ipynb diff --git a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb new file mode 100644 index 000000000000..ca9c1de27500 --- /dev/null +++ b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb @@ -0,0 +1,433 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "appid=''\n", + "disk=''\n", + "nic=''\n", + "tz=''\n", + "basedir=''\n", + "name=''\n", + "\n", + "compare_appid=''\n", + "compare_basedir=''\n", + "compare_name=''" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# start analysis cluster and run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import findspark\n", + "findspark.init()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "def get_py4jzip():\n", + " spark_home=os.environ['SPARK_HOME']\n", + " py4jzip = !ls {spark_home}/python/lib/py4j*.zip\n", + " return py4jzip[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "print(sys.path)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "from pyspark import SparkConf, SparkContext\n", + "from pyspark.sql import SQLContext\n", + "import time\n", + "import sys\n", + "conf = (SparkConf()\n", + " .set('spark.app.name', f'perf_analysis_{appid}')\n", + " .set('spark.serializer','org.apache.spark.serializer.KryoSerializer')\n", + " .set('spark.executor.instances', '4')\n", + " .set('spark.executor.cores','4')\n", + " .set('spark.executor.memory', '8g')\n", + " .set('spark.driver.memory','20g')\n", + " .set('spark.memory.offHeap.enabled','True')\n", + " .set('spark.memory.offHeap.size','20g')\n", + " .set('spark.executor.memoryOverhead','1g')\n", + " .set('spark.executor.extraJavaOptions',\n", + " '-XX:+UseParallelGC -XX:+UseParallelOldGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps')\n", + " .set('spark.executorEnv.PYTHONPATH',f\"{os.environ['SPARK_HOME']}/python:{get_py4jzip()}:{':'.join(sys.path)}\")\n", + " .set('spark.sql.inMemoryColumnarStorage.compressed','False')\n", + " .set('spark.sql.inMemoryColumnarStorage.batchSize','100000')\n", + " .set('spark.sql.execution.arrow.pyspark.fallback.enabled','True')\n", + " .set('spark.sql.execution.arrow.pyspark.enabled','True')\n", + " .set('spark.sql.execution.arrow.maxRecordsPerBatch','100000')\n", + " .set(\"spark.sql.repl.eagerEval.enabled\", True)\n", + " .set(\"spark.sql.legacy.timeParserPolicy\",\"LEGACY\") \n", + " .set(\"spark.sql.session.timeZone\", tz)\n", + " )\n", + "\n", + "sc = SparkContext(conf=conf,master='yarn')\n", + "sc.setLogLevel(\"ERROR\")\n", + "spark = SQLContext(sc)\n", + "time.sleep(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sparklog" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "%run ~/PAUS/sparklog.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"https_proxy\"] = \"http://10.239.44.250:8080\"\n", + "os.environ[\"http_proxy\"] = \"http://10.239.44.250:8080\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "disk_prefix=[f\"'{dev}'\" for dev in disk.split(',')]\n", + "nic_prefix=[f\"'{dev}'\" for dev in nic.split(',')]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Content" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(HTML(' 5 App info'))\n", + "display(HTML(' 6 Compare to previous run'))\n", + "display(HTML(' 7 Config compare'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# App info" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "app=Application_Run(appid, basedir=basedir)\n", + "appals=app.analysis['app']['als']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "appals.get_basic_state()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "summary=app.get_summary(disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + "display(summary.style)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "app.generate_trace_view(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "appals.get_app_name()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "shuffle_df, dfx=appals.get_shuffle_stat()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "appals.get_app_info(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "appals.show_critical_path_time_breakdown().T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compare to previous run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if compare_appid:\n", + " compare_app=Application_Run(comapre_appid,basedir=compare_basedir)\n", + " output=app.compare_app(rapp=compare_app,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + " display(HTML(output))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Config compare" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if compare_appid:\n", + " display(comp_spark_conf(app_als, compare_app_als))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# convert to HTML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%javascript\n", + "IPython.notebook.kernel.execute('nb_name = \"' + IPython.notebook.notebook_name + '\"')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# htmlname=nb_name.replace(\"ipynb\",\"html\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# !jupyter nbconvert --to html ./{nb_name} --no-input --output html/{htmlname} --template classic" + ] + } + ], + "metadata": { + "celltoolbar": "Tags", + "hide_input": false, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "nbTranslate": { + "displayLangs": [ + "*" + ], + "hotkey": "alt-t", + "langInMainMenu": true, + "sourceLang": "en", + "targetLang": "fr", + "useGoogleTranslate": true + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "197px", + "left": "2188px", + "top": "111px", + "width": "269px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tools/workload/benchmark_velox/analysis/requirements.txt b/tools/workload/benchmark_velox/analysis/requirements.txt new file mode 100644 index 000000000000..f230f8aa99de --- /dev/null +++ b/tools/workload/benchmark_velox/analysis/requirements.txt @@ -0,0 +1,174 @@ +ansicolors==1.1.8 +anyio==4.4.0 +argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==2.4.1 +attrs==23.2.0 +Automat==20.2.0 +Babel==2.8.0 +bcrypt==3.2.0 +beautifulsoup4==4.12.3 +black==24.4.2 +bleach==6.1.0 +blinker==1.4 +certifi==2020.6.20 +cffi==1.16.0 +chardet==4.0.0 +charset-normalizer==3.4.0 +click==8.0.3 +colorama==0.4.4 +comm==0.2.2 +configobj==5.0.6 +constantly==15.1.0 +contourpy==1.2.1 +cryptography==3.4.8 +cycler==0.12.1 +debugpy==1.8.1 +decorator==5.1.1 +defusedxml==0.7.1 +distro==1.7.0 +entrypoints==0.4 +exceptiongroup==1.2.1 +executing==2.0.1 +fastjsonschema==2.19.1 +findspark==2.0.1 +fire==0.7.0 +fonttools==4.52.4 +fqdn==1.5.1 +gitdb==4.0.11 +GitPython==3.1.43 +greenlet==3.0.3 +httplib2==0.20.2 +hyperlink==21.0.0 +idna==3.10 +importlib-metadata==4.6.4 +incremental==21.3.0 +ipykernel==6.29.4 +ipython==8.24.0 +ipython-genutils==0.2.0 +ipywidgets==8.1.3 +isoduration==20.11.0 +jedi==0.19.1 +jeepney==0.7.1 +Jinja2==3.0.3 +jsonpatch==1.32 +jsonpointer==2.0 +jsonschema==4.22.0 +jsonschema-specifications==2023.12.1 +jupyter_client==7.4.9 +jupyter_contrib_core==0.4.2 +jupyter_contrib_nbextensions==0.7.0 +jupyter_core==5.7.2 +jupyter-events==0.10.0 +jupyter-highlight-selected-word==0.2.0 +jupyter-nbextensions-configurator==0.6.3 +jupyter_server==2.14.0 +jupyter-server-mathjax==0.2.6 +jupyter_server_terminals==0.5.3 +jupyterlab_pygments==0.3.0 +jupyterlab_widgets==3.0.11 +keyring==23.5.0 +kiwisolver==1.4.5 +launchpadlib==1.10.16 +lazr.restfulclient==0.14.4 +lazr.uri==1.0.6 +lxml==5.2.2 +MarkupSafe==2.0.1 +matplotlib==3.5.2 +matplotlib-inline==0.1.7 +metakernel==0.30.2 +mistune==3.0.2 +more-itertools==8.10.0 +mypy-extensions==1.0.0 +nbclassic==1.1.0 +nbclient==0.10.0 +nbconvert==7.16.4 +nbdime==4.0.1 +nbformat==5.10.4 +nest-asyncio==1.6.0 +netifaces==0.11.0 +notebook==6.5.6 +notebook_shim==0.2.4 +NotebookScripter==6.0.0 +numpy==1.26.4 +oauthlib==3.2.0 +overrides==7.7.0 +packaging==24.0 +pandas==1.5.3 +pandasql==0.7.3 +pandocfilters==1.5.1 +papermill==2.6.0 +parso==0.8.4 +pathspec==0.12.1 +pexpect==4.8.0 +pillow==10.3.0 +pip==24.2 +platformdirs==4.2.2 +prometheus_client==0.20.0 +prompt_toolkit==3.0.45 +psutil==5.9.8 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pyarrow==16.1.0 +pyasn1==0.4.8 +pyasn1-modules==0.2.1 +pycparser==2.22 +Pygments==2.11.2 +PyHamcrest==2.0.2 +PyHDFS==0.3.1 +PyJWT==2.3.0 +pyOpenSSL==21.0.0 +pyparsing==2.4.7 +pyrsistent==0.18.1 +pyserial==3.5 +pyspark==3.3.1 +python-dateutil==2.9.0.post0 +python-json-logger==2.0.7 +pytz==2022.1 +PyYAML==6.0.2 +pyzmq==24.0.1 +referencing==0.35.1 +requests==2.32.3 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rfc3987==1.3.8 +rpds-py==0.18.1 +seaborn==0.13.2 +SecretStorage==3.3.1 +Send2Trash==1.8.3 +service-identity==18.1.0 +setuptools==75.1.0 +simplejson==3.19.2 +six==1.16.0 +smmap==5.0.1 +sniffio==1.3.1 +soupsieve==2.5 +spylon==0.3.0 +spylon-kernel==0.4.1 +SQLAlchemy==1.4.46 +ssh-import-id==5.11 +stack-data==0.6.3 +tenacity==8.3.0 +termcolor==2.5.0 +terminado==0.18.1 +tinycss2==1.3.0 +tomli==2.0.1 +tornado==6.4 +tqdm==4.66.4 +traitlets==5.14.3 +Twisted==22.1.0 +types-python-dateutil==2.9.0.20240316 +typing_extensions==4.12.0 +tzdata==2024.1 +uri-template==1.3.0 +urllib3==1.26.5 +wadllib==1.3.6 +wcwidth==0.2.13 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.8.0 +wheel==0.44.0 +widgetsnbextension==4.0.11 +zipp==1.0.0 +zope.interface==5.4.0 diff --git a/tools/workload/benchmark_velox/analysis/run.py b/tools/workload/benchmark_velox/analysis/run.py new file mode 100644 index 000000000000..06fe712a5e09 --- /dev/null +++ b/tools/workload/benchmark_velox/analysis/run.py @@ -0,0 +1,11 @@ +import fire +import papermill as pm + +def exec(inputnb, outputnb, appid, disk, nic, tz, basedir, name, compare_appid='', compare_basedir='', compare_name=''): + return pm.execute_notebook( + inputnb, + outputnb, + parameters=dict(appid=appid,disk=disk,nic=nic,tz=tz,basedir=basedir,name=name,compare_appid=compare_appid,compare_basedir=compare_basedir,compare_name=compare_name)) + +if __name__ == '__main__': + fire.Fire(exec) diff --git a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh new file mode 100755 index 000000000000..7dcc4ce90c89 --- /dev/null +++ b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh @@ -0,0 +1,120 @@ +#! /bin/bash + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +SCRIPT_LOCATION=$(dirname $0) +PAUS=$HOME/PAUS + +while [[ $# -gt 0 ]]; do + case $1 in + --ts) + TS="$2" + shift # past argument + shift # past value + ;; + --base-dir) + BASEDIR="$2" + shift # past argument + shift # past value + ;; + --name) + NAME="$2" + shift # past argument + shift # past value + ;; + --appid) + APPID="$2" + shift # past argument + shift # past value + ;; + --disk) + DISK="$2" + shift # past argument + shift # past value + ;; + --nic) + NIC="$2" + shift # past argument + shift # past value + ;; + --tz) + SPARK_TZ="$2" + shift # past argument + shift # past value + ;; + --comp-appid) + COMP_APPID="$2" + shift # past argument + shift # past value + ;; + --comp-base-dir) + COMP_BASEDIR="$2" + shift # past argument + shift # past value + ;; + --comp-name) + COMP_NAME="$2" + shift # past argument + shift # past value + ;; + *) + echo "Error: Unknown argument: $1" + exit 1 + ;; + esac +done + +# Validation: Check if any of the required variables are empty +if [[ -z "${TS+x}" || -z "${BASEDIR+x}" || -z "${NAME+x}" || -z "${APPID+x}" || -z "${DISK+x}" || -z "${NIC+x}" || -z "${SPARK_TZ+x}" ]]; then + echo "Error: One or more required arguments are missing or empty." + exit 1 +fi + +mkdir -p $PAUS +if [ ! -f "$PAUS/perf_analysis_template.ipynb" ]; then + cp $SCRIPT_LOCATION/perf_analysis_template.ipynb $PAUS/ +fi +if [ ! -f "$PAUS/sparklog.ipynb" ]; then + cp $SCRIPT_LOCATION/sparklog.ipynb $PAUS/ +fi + +mkdir -p $PAUS/$BASEDIR +cd $PAUS/$BASEDIR +mkdir -p html + +nb_name0=${TS}_${NAME}_${APPID} +nb_name=${nb_name0}.ipynb + +cp -f $PAUS/perf_analysis_template.ipynb $nb_name +hadoop fs -mkdir -p /history +hadoop fs -cp -f /$BASEDIR/$APPID/app.log /history/$APPID + +EXTRA_ARGS="" +if [ -v COMP_APPID ] +then + if [[ -z "${COMP_BASEDIR+x}" || -z "${COMP_NAME+x}" ]]; then + echo "Missing --comp-base-dir or --comp-name" + exit 1 + fi + hadoop fs -cp -f /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID + EXTRA_ARGS="--compare_appid $COMP_APPID --compare_basedir $COMP_BASEDIR --compare_name $COMP_NAME" +fi + +source ~/paus-env/bin/activate + +python3 $SCRIPT_LOCATION/run.py --inputnb $nb_name --outputnb ${nb_name0}.nbconvert.ipynb --appid $APPID --disk $DISK --nic $NIC --tz $SPARK_TZ --basedir $BASEDIR --name $NAME $EXTRA_ARGS + +jupyter nbconvert --to html --no-input ./${nb_name0}.nbconvert.ipynb --output html/${nb_name0}.html --template classic > /dev/null 2>&1 diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb new file mode 100644 index 000000000000..8ceaeb44fe55 --- /dev/null +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -0,0 +1,5176 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# initialize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import nested_scopes\n", + "from IPython.core.display import display, HTML\n", + "display(HTML(\"\"))\n", + "display(HTML(''))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pyspark.sql.functions as F\n", + "import json\n", + "import builtins\n", + "from itertools import chain\n", + "import seaborn as sns\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "lang": "en" + }, + "outputs": [], + "source": [ + "import logging\n", + "logger = logging.getLogger()\n", + "logger.setLevel(logging.ERROR)\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "import os\n", + "import pandas\n", + "pandas.set_option('display.max_rows', None)\n", + "\n", + "import matplotlib\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.ticker as mtick\n", + "from matplotlib import colors\n", + "from matplotlib import rcParams\n", + "rcParams['font.sans-serif'] = 'Courier New'\n", + "rcParams['font.family'] = 'Courier New'\n", + "rcParams['font.size'] = '12'\n", + "%matplotlib inline\n", + "\n", + "from IPython.display import display,HTML\n", + "import threading\n", + "import collections\n", + "\n", + "from IPython.display import display\n", + "from ipywidgets import IntProgress,Layout\n", + "import time\n", + "import threading\n", + "import gzip\n", + "import pyspark\n", + "import pyspark.sql\n", + "from pyspark.sql import SparkSession\n", + "from pyspark.sql.types import (StructType, StructField, DateType,\n", + " TimestampType, StringType, LongType, IntegerType, DoubleType,FloatType)\n", + "from pyspark.sql.functions import to_date, floor\n", + "from pyspark.ml.feature import StringIndexer, VectorAssembler\n", + "from pyspark.ml import Pipeline\n", + "from pyspark.sql.functions import lit\n", + "import datetime\n", + "import time\n", + "from pyspark.storagelevel import StorageLevel\n", + "from pyspark.sql.window import Window\n", + "from pyspark.sql.functions import rank, col\n", + "from pyspark.ml import Pipeline\n", + "import numpy\n", + "\n", + "import re\n", + "import math\n", + "from functools import reduce\n", + "import json\n", + "\n", + "from pyspark.sql.types import *\n", + "from pyspark.sql import functions as F\n", + "from datetime import date" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pyspark.sql.types import (StructType, StructField, DateType,\n", + " TimestampType, StringType, LongType, IntegerType, DoubleType,FloatType)\n", + "\n", + "from pyspark.sql.functions import pandas_udf, PandasUDFType\n", + "\n", + "from pyspark.ml.clustering import KMeans\n", + "from pyspark.ml.feature import StringIndexer, VectorAssembler\n", + "\n", + "from pyspark.sql.window import Window\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "from functools import reduce\n", + "import re\n", + "import collections\n", + "from pyspark.ml import Pipeline\n", + "import numpy\n", + "import time\n", + "from pandasql import sqldf\n", + "import html\n", + "\n", + "pandas.options.display.max_rows=50\n", + "pandas.options.display.max_columns=200\n", + "pandas.options.display.float_format = '{:,}'.format" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ipywidgets import IntProgress,Layout\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pyhdfs\n", + "\n", + "import socket\n", + "localhost=socket.gethostname()\n", + "local_ip=socket.gethostbyname(localhost)\n", + "\n", + "fs = pyhdfs.HdfsClient(hosts=f'{local_ip}:9870', user_name='sparkuser')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# fs functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def getexecutor_stat(pdir):\n", + " appfolder=fs.list_status(pdir)\n", + " total_rchar=0\n", + " total_wchar=0\n", + " total_read_bytes=0\n", + " total_write_bytes=0\n", + " total_cancelled_write_bytes=0\n", + "\n", + " for t in appfolder:\n", + " if t['type']=='DIRECTORY' and t['pathSuffix']!=\"summary.parquet\":\n", + " cdir=pdir+t['pathSuffix']\n", + " for cntfile in fs.listdir(cdir):\n", + " if cntfile.endswith(\".stat\"):\n", + " with fs.open(cdir+\"/\"+cntfile) as f:\n", + " cnt=f.readlines()\n", + " rchar=0\n", + " wchar=0\n", + " read_bytes=0\n", + " write_bytes=0\n", + " cancelled_write_bytes=0\n", + " for c in cnt:\n", + " c=c.decode('ascii')\n", + " if c.startswith(\"rchar\"):\n", + " v=int(c.split(\" \")[-1])\n", + " rchar=v-rchar\n", + " elif c.startswith(\"wchar\"):\n", + " v=int(c.split(\" \")[-1])\n", + " wchar=v-wchar\n", + " elif c.startswith(\"read_bytes\"):\n", + " v=int(c.split(\" \")[-1])\n", + " read_bytes=v-read_bytes\n", + " elif c.startswith(\"write_bytes\"):\n", + " v=int(c.split(\" \")[-1])\n", + " write_bytes=v-write_bytes\n", + " elif c.startswith(\"cancelled_write_bytes\"):\n", + " v=int(c.split(\" \")[-1])\n", + " cancelled_write_bytes=v-cancelled_write_bytes\n", + " total_rchar+=rchar/1024/1024\n", + " total_wchar+=wchar/1024/1024\n", + " total_read_bytes+=read_bytes/1024/1024\n", + " total_write_bytes+=write_bytes/1024/1024\n", + " total_cancelled_write_bytes+=cancelled_write_bytes/1024/1024\n", + " return (total_rchar,total_wchar,total_read_bytes,total_write_bytes,total_cancelled_write_bytes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def background_gradient(s, m, M, cmap='PuBu', low=0, high=0):\n", + " from matplotlib import colors\n", + " rng = M - m\n", + " norm = colors.Normalize(m - (rng * low),\n", + " M + (rng * high))\n", + " normed = norm(s.values)\n", + " c = [colors.rgb2hex(x) for x in plt.cm.get_cmap(cmap)(normed)]\n", + " return ['background-color: {:s}'.format(color) for color in c]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": "true" + }, + "source": [ + "# base class" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "class SparkLog_Analysis:\n", + " def __init__(self, appid,jobids,clients):\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "class Analysis:\n", + " def __init__(self,file):\n", + " self.file=file\n", + " self.starttime=0\n", + " self.df=None\n", + " \n", + " def load_data(self):\n", + " pass\n", + " \n", + " def generate_trace_view_list(self,id=0, **kwargs):\n", + " if self.df==None:\n", + " self.load_data()\n", + " trace_events=[]\n", + " node=kwargs.get('node',\"node\")\n", + " trace_events.append(json.dumps({\"name\": \"process_name\",\"ph\": \"M\",\"pid\":id,\"tid\":0,\"args\":{\"name\":\" \"+node}}))\n", + " return trace_events\n", + " \n", + " def generate_trace_view(self, trace_output, **kwargs):\n", + " traces=[]\n", + " traces.extend(self.generate_trace_view_list(0,**kwargs))\n", + " \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ],\n", + " \"displayTimeUnit\": \"ns\"\n", + " }'''\n", + "\n", + " if(\"home\" in trace_output):\n", + " outputfolder=trace_output\n", + " appidx=trace_output.split(\"/\")[-1]\n", + " else:\n", + " outputfolder='/home/sparkuser/trace_result/'+trace_output+'.json'\n", + " appidx=trace_output\n", + " with open(outputfolder, 'w') as outfile: \n", + " outfile.write(output)\n", + " \n", + " display(HTML(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appidx}.json\"))\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# app log analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_his_perf(namelike,currentdir):\n", + " dird=fs.listdir(\"/gluten\")\n", + " apps=[]\n", + " for l in dird:\n", + " if l.startswith(\"2\") and l>(date.today() - timedelta(days=60)).strftime(\"%Y_%m_%d\"):\n", + " for r in fs.listdir(\"/gluten/\"+l):\n", + " if fs.exists(\"/gluten/\"+l+\"/\"+r+\"/app.log\"):\n", + " apps.append(\"/gluten/\"+l+\"/\"+r+\"/app.log\")\n", + " if currentdir not in apps:\n", + " apps.append(currentdir)\n", + " appdf=spark.read.json(apps)\n", + " appdf=appdf.withColumn(\"filename\", F.input_file_name())\n", + " starttime=appdf.where(\"Properties.`spark.app.name` like '\"+namelike+\"%' and Event='SparkListenerJobStart'\").select(\"filename\",F.col('Properties.`spark.app.name`').alias(\"appname\"),F.col('Submission Time').alias(\"starttime\"))\n", + " finishtime=appdf.where(\"Event='SparkListenerJobEnd'\").select(\"filename\",F.col('Completion Time').alias(\"finishtime\"))\n", + " starttime=starttime.groupBy(\"filename\").agg(F.max(\"appname\").alias(\"appname\"),F.min(\"starttime\").alias(\"starttime\"))\n", + " finishtime=finishtime.groupBy(\"filename\").agg(F.max(\"finishtime\").alias(\"finishtime\"))\n", + " elapsedtime=starttime.join(finishtime,\"filename\").orderBy(\"starttime\").select(F.date_format(F.from_unixtime(F.col('starttime')/1000),\"yyyy_MM_dd\").alias(\"test_date\"),(F.col(\"finishtime\")/1000-F.col(\"starttime\")/1000).alias(\"elapsedtime\"))\n", + " epsdf=elapsedtime.toPandas()\n", + " epsdf.plot(x='test_date',y=['elapsedtime'],style=\"-*\",figsize=(30,8))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "from pyspark.sql.functions import udf\n", + "@udf(\"long\")\n", + "def isfinish_udf(s):\n", + " import json\n", + " s=json.loads(s)\n", + " def isfinish(root):\n", + " if \"isFinalPlan=false\" in root['simpleString'] or root['children'] is None:\n", + " return 0\n", + " for c in root[\"children\"]:\n", + " if isfinish(c)==0:\n", + " return 0\n", + " return 1\n", + " if len(s)>0:\n", + " return isfinish(s[0])\n", + " else:\n", + " return 0\n", + " \n", + "@pandas_udf(\"taskid long, start long, dur long, name string\", PandasUDFType.GROUPED_MAP)\n", + "def time_breakdown(pdf):\n", + " ltime=pdf['Launch Time'][0]+2\n", + " pdf['start']=0\n", + " pdf['dur']=0\n", + " outpdf=[]\n", + " ratio=(pdf[\"Finish Time\"][0]-pdf[\"Launch Time\"][0])/pdf[\"Update\"].sum()\n", + " ratio=1 if ratio>1 else ratio\n", + " for idx,l in pdf.iterrows():\n", + " if(l[\"Update\"]*ratio>1):\n", + " outpdf.append([l[\"Task ID\"],ltime,int(l[\"Update\"]*ratio),l[\"mname\"]])\n", + " ltime=ltime+int(l[\"Update\"]*ratio)\n", + " if len(outpdf)>0:\n", + " return pandas.DataFrame(outpdf)\n", + " else:\n", + " return pandas.DataFrame({'taskid': pandas.Series([], dtype='long'),\n", + " 'start': pandas.Series([], dtype='long'),\n", + " 'dur': pandas.Series([], dtype='long'),\n", + " 'name': pandas.Series([], dtype='str'),\n", + " })\n", + " \n", + "class App_Log_Analysis(Analysis):\n", + " def __init__(self, file, jobids):\n", + " Analysis.__init__(self,file)\n", + " self.jobids=[] if jobids is None else [str(l) for l in jobids]\n", + " self.df=None\n", + " self.pids=[]\n", + " \n", + " def load_data(self):\n", + " print(\"load data \", self.file)\n", + " jobids=self.jobids\n", + " df=spark.read.json(self.file)\n", + " \n", + " if 'App ID' in df.columns:\n", + " self.appid=df.where(\"`App ID` is not null\").collect()[0][\"App ID\"]\n", + " else:\n", + " self.appid=\"Application-00000000\"\n", + " \n", + " if df.where(\"Event='org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates'\").count()>0:\n", + " self.dfacc=df.where(\"Event='org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates'\").select(F.col(\"executionId\").alias(\"queryid\"),F.explode(\"accumUpdates\"))\n", + " else:\n", + " self.dfacc = None\n", + " \n", + " if \"sparkPlanInfo\" in df.columns:\n", + " self.queryplans=df.where(\"(Event='org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart' or Event='org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate') \\\n", + " and (sparkPlanInfo.nodeName!='AdaptiveSparkPlan' or sparkPlanInfo.simpleString='AdaptiveSparkPlan isFinalPlan=true') \").select(F.col(\"executionId\").alias(\"queryid\"),'physicalPlanDescription',\"sparkPlanInfo.*\")\n", + " else:\n", + " self.queryplans=None\n", + " \n", + " seen = set()\n", + " \n", + " if self.queryplans is not None:\n", + " self.queryplans=self.queryplans.where(isfinish_udf(F.to_json(\"children\"))==1)\n", + " \n", + " self.allmetrics=[]\n", + " if self.queryplans.count() > 0:\n", + " metrics=self.queryplans.collect()\n", + " def get_metric(root):\n", + " for l in root[\"metrics\"]:\n", + " if l['accumulatorId'] not in seen:\n", + " seen.add(l['accumulatorId'])\n", + " self.allmetrics.append([l['accumulatorId'],l[\"metricType\"],l['name'],root[\"nodeName\"]])\n", + " if root['children'] is not None:\n", + " for c in root[\"children\"]:\n", + " get_metric(c)\n", + " for c in metrics:\n", + " get_metric(c)\n", + " \n", + " amsdf=spark.createDataFrame(self.allmetrics)\n", + " amsdf=amsdf.withColumnRenamed(\"_1\",\"ID\").withColumnRenamed(\"_2\",\"type\").withColumnRenamed(\"_3\",\"Name\").withColumnRenamed(\"_4\",\"nodeName\")\n", + " \n", + " \n", + " if self.dfacc is not None:\n", + " self.dfacc=self.dfacc.select(\"queryid\",(F.col(\"col\")[0]).alias(\"ID\"),(F.col(\"col\")[1]).alias(\"Update\")).join(amsdf,on=[\"ID\"])\n", + " \n", + " if self.queryplans is not None:\n", + " self.metricscollect=[l for l in self.allmetrics if l[1] in ['nsTiming','timing'] and (l[2].startswith(\"time to\") or l[2].startswith(\"time of\") or l[2].startswith(\"scan time\") or l[2].startswith(\"shuffle write time\") or l[2].startswith(\"time to spill\") or l[2].startswith(\"task commit time\")) \n", + " and l[2] not in(\"time to collect batch\", \"time of scan\") ]\n", + " \n", + " #config=df.where(\"event='SparkListenerJobStart' and Properties.`spark.executor.cores` is not null\").select(\"Properties.*\").limit(1).collect()\n", + " config=df.select(\"`Spark Properties`.*\").where(\"`spark.app.id` is not null\").limit(1).collect()\n", + " \n", + " configdic=config[0].asDict()\n", + " self.parallelism=int(configdic['spark.sql.shuffle.partitions']) if 'spark.sql.shuffle.partitions' in configdic else 1\n", + " self.executor_cores=int(configdic['spark.executor.cores']) if 'spark.executor.cores' in configdic else 1\n", + " self.executor_instances=int(configdic['spark.executor.instances']) if 'spark.executor.instances' in configdic else 1\n", + " self.taskcpus= int(configdic['spark.task.cpus'])if 'spark.task.cpus' in configdic else 1\n", + " self.batchsize= int(configdic['spark.gluten.sql.columnar.maxBatchSize'])if 'spark.gluten.sql.columnar.maxBatchSize' in configdic else 4096\n", + " \n", + " self.realexecutors = df.where(~F.isnull(F.col(\"Executor ID\"))).select(\"Executor ID\").distinct().count()\n", + " \n", + " execstart = df.where(\"Event='org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart'\").select(\"executionId\",\"time\")\n", + " execend = df.where(\"Event='org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd'\").select(\"executionId\",\"time\")\n", + " execstart=execstart.withColumnRenamed(\"time\",\"query_starttime\").withColumnRenamed(\"executionId\",\"queryid\")\n", + " execend=execend.withColumnRenamed(\"time\",\"query_endtime\").withColumnRenamed(\"executionId\",\"queryid\")\n", + " exectime = execstart.join(execend,on=[\"queryid\"])\n", + "\n", + " if \"spark.sql.execution.id\" in df.where(\"Event='SparkListenerJobStart'\").select(\"Properties.*\").columns:\n", + " df_jobstart=df.where(\"Event='SparkListenerJobStart'\").select(\"Job ID\",\"Submission Time\",F.col(\"Properties.`spark.sql.execution.id`\").alias(\"queryid\"),\"Stage IDs\")\n", + " else:\n", + " df_jobstart=df.where(\"Event='SparkListenerJobStart'\").select(\"Job ID\",\"Submission Time\",F.lit(0).alias(\"queryid\"),\"Stage IDs\")\n", + " \n", + " df_jobend=df.where(\"Event='SparkListenerJobEnd'\").select(\"`Job ID`\",\"Completion Time\")\n", + " df_job=df_jobstart.join(df_jobend,\"Job ID\")\n", + " df_job=df_job.withColumnRenamed(\"Submission Time\",\"job_start_time\")\n", + " df_job=df_job.withColumnRenamed(\"Completion Time\",\"job_stop_time\")\n", + " self.df_job=df_job\n", + " \n", + " jobstage=df_job.select(\"*\",F.explode(\"Stage IDs\").alias(\"Stage ID\"))\n", + " task=df.where(\"(Event='SparkListenerTaskEnd' or Event='SparkListenerTaskStart') \").select(\"Event\",\"Stage ID\",\"task info.*\",\"task metrics.*\")\n", + " \n", + " self.failed_stages = [str(l['Stage ID']) for l in task.where(\"Failed='true'\").select(\"Stage ID\").distinct().collect()]\n", + " \n", + " self.speculativetask = task.where(\"speculative = 'true'\").count()\n", + " self.speculativekilledtask = task.where(\"speculative = true and killed='true'\").count()\n", + " self.speculativestage = task.where(\"speculative = true and killed='true'\").select(\"`Stage ID`\").distinct().count()\n", + " \n", + " validtsk = task.where(\"Event = 'SparkListenerTaskEnd' and (Failed<>'true' or killed<>'true')\").select(\"`Task ID`\")\n", + " task=task.join(validtsk,on='Task ID',how='inner')\n", + " \n", + " taskjob=task.\\\n", + " select(\"Host\",\"`Event`\",\"`Launch Time`\",\"`Executor ID`\",\"`Task ID`\",\"`Finish Time`\",\n", + " \"`Stage ID`\",\"`Input Metrics`.`Bytes Read`\",\"`Disk Bytes Spilled`\",\"`Memory Bytes Spilled`\",\"`Shuffle Read Metrics`.`Local Bytes Read`\",\"`Shuffle Read Metrics`.`Remote Bytes Read`\",\n", + " \"`Shuffle Write Metrics`.`Shuffle Bytes Written`\",\"`Executor Deserialize Time`\",\"`Shuffle Read Metrics`.`Fetch Wait Time`\",\"`Executor Run Time`\",\"`Shuffle Write Metrics`.`Shuffle Write Time`\",\n", + " \"`Result Serialization Time`\",\"`Getting Result Time`\",\"`JVM GC Time`\",\"`Executor CPU Time`\",\"Accumulables\",\"Peak Execution Memory\",\n", + " F.when(task['Finish Time']==0,task['Launch Time']).otherwise(task['Finish Time']).alias('eventtime')\n", + " ).join(jobstage,\"Stage ID\").where(\"`Finish Time` is null or `Finish Time` <=job_stop_time+5\")\n", + " \n", + " taskjob = taskjob.join(exectime,on=['queryid'],how='left')\n", + " \n", + " self.df=taskjob\n", + " \n", + " if len(jobids)>0:\n", + " self.df=self.df.where('`Job ID` in ({:s})'.format(','.join(jobids)))\n", + " \n", + " queryids=self.df.select(F.col(\"queryid\").astype(IntegerType())).distinct().where(\"queryid is not null\").orderBy(\"queryid\").toPandas()\n", + " \n", + " self.query_num=len(queryids)\n", + " if self.query_num>0:\n", + " queryidx=queryids.reset_index()\n", + " queryidx['index']=queryidx['index']+1\n", + " #tpcds query\n", + " if self.query_num==103:\n", + " queryidx['index']=queryidx['index'].map(tpcds_query_map)\n", + " qidx=spark.createDataFrame(queryidx)\n", + " qidx=qidx.withColumnRenamed(\"index\",\"real_queryid\")\n", + " self.df=self.df.join(qidx,on=\"queryid\",how=\"left\")\n", + " if self.dfacc is not None:\n", + " self.dfacc=self.dfacc.join(qidx,on=\"queryid\",how='left')\n", + "\n", + " if self.queryplans:\n", + " self.queryplans=self.queryplans.join(qidx,\"queryid\",how=\"right\")\n", + " \n", + " self.df=self.df.fillna(0)\n", + " self.df=self.df.withColumn('Executor ID',F.when(F.col(\"Executor ID\")==\"driver\",1).otherwise(F.col(\"Executor ID\")))\n", + " self.df.cache()\n", + " \n", + " \n", + " \n", + " ##############################\n", + " \n", + " dfx=self.df.where(\"Event='SparkListenerTaskEnd'\").select(\"Stage ID\",\"Launch Time\",\"Finish Time\",\"Task ID\")\n", + " dfxpds=dfx.toPandas()\n", + " dfxpds.columns=[l.replace(\" \",\"_\") for l in dfxpds.columns]\n", + " dfxpds_ods=sqldf('''select * from dfxpds order by finish_time desc''')\n", + " criticaltasks=[]\n", + " idx=0\n", + " prefinish=0\n", + " launchtime=dfxpds_ods[\"Launch_Time\"][0]\n", + " criticaltasks.append([dfxpds_ods[\"Task_ID\"][0],launchtime,dfxpds_ods[\"Finish_Time\"][0]])\n", + " total_row=len(dfxpds_ods)\n", + "\n", + " while True:\n", + " while idx=launchtime else cur_finish\n", + " launchtime=dfxpds_ods[\"Launch_Time\"][idx]\n", + " criticaltasks.append([dfxpds_ods[\"Task_ID\"][idx],launchtime,cur_finish])\n", + " self.criticaltasks=criticaltasks\n", + "\n", + " def get_physical_plan(appals,**kwargs):\n", + " if appals.df is None:\n", + " appals.load_data()\n", + " queryid=kwargs.get('queryid',None)\n", + " shownops=kwargs.get(\"shownops\",['ArrowRowToColumnarExec','ColumnarToRow','RowToArrowColumnar',\n", + " 'VeloxNativeColumnarToRowExec','ArrowColumnarToRow','Filter','HashAggregate','Project','SortAggregate','SortMergeJoin','window'])\n", + " \n", + " desensitization=kwargs.get('desensitization',True)\n", + " \n", + " def get_fields(colss):\n", + " lvls=0\n", + " colns=[]\n", + " ks=\"\"\n", + " for c in colss:\n", + " if c==\",\" and lvls==0:\n", + " colns.append(ks)\n", + " ks=\"\"\n", + " continue\n", + " if c==\" \" and ks==\"\":\n", + " continue\n", + " if c==\"(\":\n", + " lvls+=1\n", + " if c==\")\":\n", + " lvls-=1\n", + " ks+=c\n", + " if ks!=\"\":\n", + " colns.append(ks)\n", + " return colns\n", + " \n", + " def get_column_names(s, opname, resultname, prefix, columns, funcs):\n", + " p=re.search(r\" \"+opname+\" \",s[0])\n", + " if p:\n", + " for v in s[1].split(\"\\n\"):\n", + " if v.startswith(resultname):\n", + " cols=re.search(\"\\[([^0-9].+)\\]\",v)\n", + " if cols:\n", + " colss=cols.group(1)\n", + " colns=get_fields(colss)\n", + " if opname+str(len(columns)) not in funcs:\n", + " funcs[opname+str(len(columns))]=[]\n", + " funcs[opname+str(len(columns))].extend(colns)\n", + " for c in colns:\n", + " if \" AS \" in c:\n", + " c=re.sub(\"#\\d+L*\",\"\",c)\n", + " colname=re.search(r\" AS (.+)\",c).group(1)\n", + " if colname not in columns:\n", + " columns[colname]=prefix\n", + " \n", + " plans=appals.queryplans.select('real_queryid','physicalPlanDescription').collect() if queryid is None else appals.queryplans.where(f\"real_queryid='{queryid}'\").select(\"physicalPlanDescription\").collect()\n", + " \n", + " for pr in range(0,len(plans)):\n", + " plan=plans[pr]['physicalPlanDescription']\n", + " nodes={}\n", + " lines=plan.split(\"\\n\")\n", + " for idx in range(0,len(lines)):\n", + " l=lines[idx]\n", + " if l=='+- == Final Plan ==':\n", + " while l!='+- == Initial Plan ==':\n", + " idx+=1\n", + " l=lines[idx]\n", + " if not l.endswith(\")\"):\n", + " break\n", + " idv=re.search(\"\\(\\d+\\)$\",l).group(0)\n", + " nodes[idv]=[l]\n", + " if l==\"== Physical Plan ==\":\n", + " while not lines[idx+1].startswith(\"(\"):\n", + " idx+=1\n", + " l=lines[idx]\n", + " if not l.endswith(\")\"):\n", + " break\n", + " idv=re.search(\"\\(\\d+\\)$\",l).group(0)\n", + " nodes[idv]=[l]\n", + " \n", + " if l.startswith(\"(\"):\n", + " idv=re.search(\"^\\(\\d+\\)\",l).group(0)\n", + " if idv in nodes:\n", + " desc=\"\"\n", + " while l.strip()!=\"\":\n", + " desc+=l+\"\\n\"\n", + " idx+=1\n", + " l=lines[idx]\n", + " desc=re.sub(r\"#\\d+L*\",r\"\",desc)\n", + " desc=re.sub(r\"= [^)]+\",r\"=\",desc)\n", + " desc=re.sub(r\"IN \\([^)]\\)\",r\"IN ()\",desc)\n", + " desc=re.sub(r\"In\\([^)]\\)\",r\"In()\",desc)\n", + " desc=re.sub(r\"EqualTo\\(([^,]+),[^)]+\\)\",r\"EqualTo(\\1,)\",desc)\n", + " desc=re.sub(r\"搜索广告\",r\"xxx\",desc)\n", + " ## add all keyword replace here\n", + " nodes[idv].append(desc)\n", + " tables={}\n", + " columns={}\n", + " functions={}\n", + " for s in nodes.values():\n", + " p=re.search(r\"Scan arrow [^.]*\\.([^ ]+)\",s[0])\n", + " if p:\n", + " tn=p.group(1)\n", + " if not tn in tables:\n", + " tables[tn]=\"table\"\n", + " if desensitization:\n", + " s[0]=s[0].replace(tn,tables[tn])\n", + " s[1]=s[1].replace(tn,tables[tn])\n", + " colsv=[]\n", + " schema=[]\n", + " for v in s[1].split(\"\\n\"):\n", + " if v.startswith(\"ReadSchema\"):\n", + " cols=re.search(\"<(.*)>\",v)\n", + " if cols:\n", + " colss=cols.group(1).split(\",\")\n", + " for c in colss:\n", + " cts=c.split(\":\")\n", + " ct=cts[0]\n", + " if not ct in columns:\n", + " if len(cts)==2:\n", + " cts[1]=cts[1]\n", + " columns[ct]=cts[1]+\"_\"\n", + " else:\n", + " columns[ct]=\"c_\"\n", + " if v.startswith(\"Location\") and desensitization:\n", + " s[1]=s[1].replace(v+\"\\n\",\"\")\n", + " \n", + " get_column_names(s, \"Project\", \"Output\", \"proj_\", columns, functions)\n", + " get_column_names(s, \"HashAggregate\", \"Results\", \"shagg_\", columns, functions)\n", + " get_column_names(s, \"SortAggregate\", \"Results\", \"stagg_\", columns, functions)\n", + " get_column_names(s, \"ColumnarConditionProject\", \"Arguments\", \"cproj_\", columns, functions)\n", + " get_column_names(s, \"ColumnarHashAggregate\", \"Results\", \"cshagg_\", columns, functions)\n", + " get_column_names(s, \"Window\", \"Arguments\", \"window_\", columns, functions)\n", + "\n", + " keys=[]\n", + " ckeys=list(columns.keys())\n", + " for l in range(0,len(ckeys)):\n", + " k1=ckeys[l]\n", + " for k in range(0,len(keys)):\n", + " if keys[k] in k1:\n", + " keys.insert(k,k1)\n", + " break\n", + " else:\n", + " keys.append(k1)\n", + " \n", + " for s in nodes.values():\n", + " s[1]=html.escape(s[1])\n", + " if desensitization:\n", + " for c in keys:\n", + " v=columns[c]\n", + " if v.startswith(\"array\") or v.startswith(\"map\") or v.startswith(\"struct\"):\n", + " s[1]=re.sub(c, ''+html.escape(v)+\"\",s[1])\n", + " else:\n", + " s[1]=re.sub(c, \"\"+html.escape(v)+\"\",s[1])\n", + "\n", + "\n", + " htmls=['''''']\n", + " qid=pr+1 if queryid is None else queryid\n", + " htmls.append(f\"\")\n", + " for l in nodes.values():\n", + " if shownops is not None:\n", + " for k in shownops:\n", + " if \" \"+k+\" \" in l[0]:\n", + " break\n", + " else:\n", + " continue\n", + " htmls.append(\"\")\n", + " htmls.append('\")\n", + " htmls.append('\")\n", + " htmls.append(\"\")\n", + " htmls.append(\"
{qid}
')\n", + " htmls.append(l[0].replace(\" \",\"_\")\n", + " .replace(\"ColumnarToRow\",\"ColumnarToRow\")\n", + " .replace(\"RowToArrowColumnar\",\"RowToArrowColumnar\")\n", + " .replace(\"ArrowColumnarToRow\",\"ArrowColumnarToRow\")\n", + " .replace(\"ArrowRowToColumnar\",\"ArrowRowToColumnar\")\n", + " .replace(\"VeloxNativeColumnarToRowExec\",\"VeloxNativeColumnarToRowExec\")\n", + " )\n", + " htmls.append(\"
')\n", + " ls=l[1].split(\"\\n\")\n", + " lsx=[]\n", + " for t in ls:\n", + " cols=re.search(\"\\[([^0-9].+)\\]\",t)\n", + " if cols:\n", + " colss=cols.group(1)\n", + " colns=get_fields(colss)\n", + " t=re.sub(\"\\[([^0-9].+)\\]\",\"\",t)\n", + " t+=\"[\"+';'.join(colns)+\"]\" \n", + " if \":\" in t:\n", + " lsx.append(re.sub(r'^([^:]+:)',r'\\1',t))\n", + " else:\n", + " lsx.append(t)\n", + " htmls.append(\"
\".join(lsx))\n", + " htmls.append(\"
\")\n", + " display(HTML(\"\\n\".join(htmls)))\n", + " \n", + " for k, v in functions.items():\n", + " functions[k]=[l for l in v if \"(\" in l]\n", + " for f in functions.values():\n", + " for idx in range(0,len(f)):\n", + " for c in keys:\n", + " v=columns[c]\n", + " if v.startswith(\"array\") or v.startswith(\"map\") or v.startswith(\"struct\"):\n", + " f[idx]=re.sub(c, ''+html.escape(v)+\"\",f[idx])\n", + " else:\n", + " f[idx]=re.sub(c, \"\"+html.escape(v)+\"\",f[idx])\n", + " funchtml=\"\"\n", + " for k,v in functions.items():\n", + " if shownops is not None:\n", + " for ks in shownops:\n", + " if \" \"+ks+\" \" in k:\n", + " break\n", + " else:\n", + " continue\n", + " funchtml+=\"\"\n", + " funchtml+=\"
\"+k+''\n", + " for f in v:\n", + " funchtml+='\"\n", + " funchtml+=\"
'+f+\"
\" \n", + " display(HTML(funchtml))\n", + " \n", + " return plans\n", + " \n", + " def get_physical_allnodes(appals,**kwargs):\n", + " if appals.df is None:\n", + " appals.load_data()\n", + " queryid=None\n", + " \n", + " plans=appals.queryplans.select('real_queryid','physicalPlanDescription').collect() if queryid is None else appals.queryplans.where(f\"real_queryid='{queryid}'\").select(\"physicalPlanDescription\").collect()\n", + " \n", + " allnodes={}\n", + " for pr in range(0,len(plans)):\n", + " plan=plans[pr]['physicalPlanDescription']\n", + " allnodes[pr]={}\n", + " nodes=allnodes[pr]\n", + " if plan is None:\n", + " continue\n", + " lines=plan.split(\"\\n\")\n", + " for idx in range(0,len(lines)):\n", + " l=lines[idx]\n", + " if l=='+- == Final Plan ==':\n", + " while l!='+- == Initial Plan ==':\n", + " idx+=1\n", + " l=lines[idx]\n", + " if not l.endswith(\")\"):\n", + " break\n", + " idv=re.search(\"\\(\\d+\\)$\",l).group(0)\n", + " nodes[idv]=[l]\n", + " if l.startswith(\"(\"):\n", + " idv=re.search(\"^\\(\\d+\\)\",l).group(0)\n", + " if idv in nodes:\n", + " desc=\"\"\n", + " while l!=\"\":\n", + " desc+=l+\"\\n\"\n", + " idx+=1\n", + " l=lines[idx]\n", + " nodes[idv].append(desc)\n", + " return allnodes\n", + " \n", + " \n", + " def get_basic_state(appals):\n", + " if appals.df is None:\n", + " appals.load_data()\n", + " display(HTML(f\"http://{localhost}:18080/history/{appals.appid}\"))\n", + " \n", + " errorcolor=\"#000000\" if appals.executor_instances == appals.realexecutors else \"#c0392b\"\n", + " \n", + " qtime=appals.get_query_time(plot=False)\n", + " sums=qtime.sum()\n", + " \n", + " total_rchar,total_wchar,total_read_bytes,total_write_bytes,total_cancelled_write_bytes = getexecutor_stat(appals.file[:-len(\"app.log\")])\n", + " \n", + " if len(appals.failed_stages)>0:\n", + " failure=\"
\".join([\"query: \" + str(l[\"real_queryid\"])+\"|stage: \" + str(l[\"Stage ID\"]) for l in appals.df.where(\"`Stage ID` in (\"+\",\".join(appals.failed_stages)+\")\").select(\"real_queryid\",\"Stage ID\").distinct().collect()])\n", + " else:\n", + " failure=\"\"\n", + " \n", + " stats={\"appid\":appals.appid,\n", + " \"executor.instances\":appals.executor_instances,\n", + " \"executor.cores\":appals.executor_cores,\n", + " \"shuffle.partitions\":appals.parallelism,\n", + " \"batch size\":appals.batchsize,\n", + " \"real executors\":appals.realexecutors,\n", + " \"Failed Tasks\":failure,\n", + " \"Speculative Tasks\":appals.speculativetask,\n", + " \"Speculative Killed Tasks\":appals.speculativekilledtask,\n", + " \"Speculative Stage\":appals.speculativestage,\n", + " \"runtime\":round(sums['runtime'],2),\n", + " \"disk spilled\":round(sums['disk spilled'],2),\n", + " \"memspilled\":round(sums['memspilled'],2),\n", + " \"local_read\":round(sums['local_read'],2),\n", + " \"remote_read\":round(sums['remote_read'],2),\n", + " \"shuffle_write\":round(sums['shuffle_write'],2),\n", + " \"task run time\":round(sums['run_time'],2),\n", + " \"ser_time\":round(sums['ser_time'],2),\n", + " \"f_wait_time\":round(sums['f_wait_time'],2),\n", + " \"gc_time\":round(sums['gc_time'],2),\n", + " \"input read\":round(sums['input read'],2),\n", + " \"acc_task_time\":round(sums['acc_task_time'],2),\n", + " \"file read size\":round(total_rchar,2),\n", + " \"file write size\":round(total_wchar,2),\n", + " \"disk read size\":round(total_read_bytes,2),\n", + " \"disk write size\":round(total_write_bytes,2),\n", + " \"disk cancel size\":round(total_cancelled_write_bytes,2)\n", + " }\n", + " \n", + " display(HTML(f'''\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
appid{appals.appid}
executor.instances{appals.executor_instances}
executor.cores{appals.executor_cores}
shuffle.partitions{(appals.parallelism)}
batch size{(appals.batchsize):,}
real executors{(appals.realexecutors)}
Failed Tasks{(failure)}
Speculative Tasks{(appals.speculativetask)}
Speculative Killed Tasks{(appals.speculativekilledtask)}
Speculative Stage{(appals.speculativestage)}
runtime{round(sums['runtime'],2):,}
disk spilled{round(sums['disk spilled'],2):,}
memspilled{round(sums['memspilled'],2):,}
local_read{round(sums['local_read'],2):,}
remote_read{round(sums['remote_read'],2):,}
shuffle_write{round(sums['shuffle_write'],2):,}
task run time{round(sums['run_time'],2):,}
ser_time{round(sums['ser_time'],2):,}
f_wait_time{round(sums['f_wait_time'],2):,}
gc_time{round(sums['gc_time'],2):,}
input read{round(sums['input read'],2):,}
acc_task_time{round(sums['acc_task_time'],2):,}
file read size{round(total_rchar,2):,}
file write size{round(total_wchar,2):,}
disk read size{round(total_read_bytes,2):,}
disk write size{round(total_write_bytes,2):,}
disk cancel size{round(total_cancelled_write_bytes,2):,}
\n", + "\n", + " '''))\n", + " return stats\n", + " \n", + " \n", + " def generate_trace_view_list_exec(self,id=0,**kwargs):\n", + " Analysis.generate_trace_view_list(self,**kwargs)\n", + " showcpu=kwargs.get('showcpu',False)\n", + " shownodes=kwargs.get(\"shownodes\",None)\n", + " \n", + " showdf=self.df.where(F.col(\"Host\").isin(shownodes)) if shownodes else self.df\n", + " \n", + " events=showdf.toPandas()\n", + " coretrack={}\n", + " trace_events=[]\n", + " starttime=self.starttime\n", + " taskend=[]\n", + " trace={\"traceEvents\":[]}\n", + " exec_hosts={}\n", + " hostsdf=showdf.select(\"Host\").distinct().orderBy(\"Host\")\n", + " hostid=100000\n", + " ended_event=[]\n", + " \n", + " for i,l in hostsdf.toPandas().iterrows():\n", + " exec_hosts[l['Host']]=hostid\n", + " hostid=hostid+100000\n", + "\n", + " for idx,l in events.iterrows():\n", + " if l['Event']=='SparkListenerTaskStart':\n", + " hostid=exec_hosts[l['Host']]\n", + "\n", + " tsk=l['Task ID']\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " self.pids.append(pid)\n", + " stime=l['Launch Time']\n", + " #the task's starttime and finishtime is the same, ignore it.\n", + " if tsk in ended_event:\n", + " continue\n", + " if not pid in coretrack:\n", + " tids={}\n", + " trace_events.append({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"{:s}.{:s}\".format(l['Host'],l['Executor ID'])}\n", + " })\n", + "\n", + " else:\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==-1:\n", + " tids[t]=[tsk,stime]\n", + " break\n", + " else:\n", + " t=len(tids)\n", + " tids[t]=[tsk,stime]\n", + " #print(\"task {:d} tid is {:s}.{:d}\".format(tsk,pid,t))\n", + " coretrack[pid]=tids\n", + "\n", + " if l['Event']=='SparkListenerTaskEnd':\n", + " sevt={}\n", + " eevt={}\n", + " hostid=exec_hosts[l['Host']]\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " tsk=l['Task ID']\n", + " fintime=l['Finish Time']\n", + "\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==tsk:\n", + " tids[t]=[-1,-1]\n", + " break\n", + " else:\n", + " ended_event.append(tsk)\n", + " continue\n", + " for ps in reversed([key for key in tids.keys()]) :\n", + " if tids[ps][1]-fintime<0 and tids[ps][1]-fintime>=-2:\n", + " fintime=tids[ps][1]\n", + " tids[t]=tids[ps]\n", + " tids[ps]=[-1,-1]\n", + " break\n", + " if starttime==0:\n", + " starttime=l['Launch Time']\n", + " print(f'applog start time: {starttime}')\n", + "\n", + " sstime=l['Launch Time']-starttime\n", + "\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':sstime,\n", + " 'dur':fintime-l['Launch Time'],\n", + " 'pid':pid,\n", + " \"ph\":'X',\n", + " 'name':\"stg{:d}\".format(l['Stage ID']),\n", + " 'args':{\"job id\": l['job id'],\n", + " \"stage id\": l['Stage ID'],\n", + " \"tskid\":tsk,\n", + " \"input\":builtins.round(l[\"Bytes Read\"]/1024/1024,2),\n", + " \"spill\":builtins.round(l[\"Memory Bytes Spilled\"]/1024/1024,2),\n", + " \"Shuffle Read Metrics\": \"\",\n", + " \"|---Local Read\": builtins.round(l[\"Local Bytes Read\"]/1024/1024,2),\n", + " \"|---Remote Read\":builtins.round(l[\"Remote Bytes Read\"]/1024/1024,2),\n", + " \"Shuffle Write Metrics\": \"\",\n", + " \"|---Write\":builtins.round(l['Shuffle Bytes Written']/1024/1024,2)\n", + " }\n", + " })\n", + "\n", + " des_time=l['Executor Deserialize Time']\n", + " read_time=l['Fetch Wait Time']\n", + " exec_time=l['Executor Run Time']\n", + " write_time=math.floor(l['Shuffle Write Time']/1000000)\n", + " ser_time=l['Result Serialization Time']\n", + " getrst_time=l['Getting Result Time']\n", + " durtime=fintime-sstime-starttime;\n", + "\n", + " times=[0,des_time,read_time,exec_time,write_time,ser_time,getrst_time]\n", + " time_names=['sched delay','deserialize time','read time','executor time','write time','serialize time','result time']\n", + " evttime=reduce((lambda x, y: x + y),times)\n", + " if evttime>durtime:\n", + " times=[math.floor(l*1.0*durtime/evttime) for l in times]\n", + " else:\n", + " times[0]=durtime-evttime\n", + "\n", + " esstime=sstime\n", + " for idx in range(0,len(times)):\n", + " if times[idx]>0:\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':esstime,\n", + " 'dur':times[idx], \n", + " 'pid':pid,\n", + " 'ph':'X',\n", + " 'name':time_names[idx]})\n", + " if idx==3:\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':esstime,\n", + " 'dur':l['JVM GC Time'],\n", + " 'pid':pid,\n", + " 'ph':'X',\n", + " 'name':'GC Time'})\n", + " if showcpu:\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':esstime,\n", + " 'pid':pid,\n", + " 'ph':'C',\n", + " 'name':'cpu% {:d}'.format(pid+int(t)),\n", + " 'args':{'value':l['Executor CPU Time']/1000000.0/times[idx]}})\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':esstime+times[idx],\n", + " 'pid':pid,\n", + " 'ph':'C',\n", + " 'name':'cpu% {:d}'.format(pid+int(t)),\n", + " 'args':{'value':0}})\n", + " esstime=esstime+times[idx]\n", + " self.starttime=starttime\n", + " return [json.dumps(l) for l in trace_events]\n", + "\n", + " def generate_trace_view_list(self,id=0,**kwargs):\n", + " Analysis.generate_trace_view_list(self,**kwargs)\n", + " showcpu=kwargs.get('showcpu',False)\n", + " shownodes=kwargs.get(\"shownodes\",None)\n", + " \n", + " showdf=self.df.where(F.col(\"Host\").isin(shownodes)) if shownodes else self.df\n", + " \n", + " showdf=showdf.orderBy([\"eventtime\", \"Finish Time\"], ascending=[1, 0])\n", + " \n", + " events=showdf.drop(\"Accumulables\").toPandas()\n", + " coretrack={}\n", + " trace_events=[]\n", + " starttime=self.starttime\n", + " taskend=[]\n", + " trace={\"traceEvents\":[]}\n", + " exec_hosts={}\n", + " hostsdf=showdf.select(\"Host\").distinct().orderBy(\"Host\")\n", + " hostid=100000\n", + " ended_event=[]\n", + " \n", + " for i,l in hostsdf.toPandas().iterrows():\n", + " exec_hosts[l['Host']]=hostid\n", + " hostid=hostid+100000\n", + "\n", + " tskmap={}\n", + " for idx,l in events.iterrows():\n", + " if l['Event']=='SparkListenerTaskStart':\n", + " hostid=exec_hosts[l['Host']]\n", + "\n", + " tsk=l['Task ID']\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " self.pids.append(pid)\n", + " stime=l['Launch Time']\n", + " #the task's starttime and finishtime is the same, ignore it.\n", + " if tsk in ended_event:\n", + " continue\n", + " if not pid in coretrack:\n", + " tids={}\n", + " trace_events.append({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"{:s}.{:s}\".format(l['Host'],l['Executor ID'])}\n", + " })\n", + "\n", + " else:\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==-1:\n", + " tids[t]=[tsk,stime]\n", + " break\n", + " else:\n", + " t=len(tids)\n", + " tids[t]=[tsk,stime]\n", + " #print(f\"task {tsk} tid is {pid}.{t}\")\n", + " coretrack[pid]=tids\n", + "\n", + " if l['Event']=='SparkListenerTaskEnd':\n", + " sevt={}\n", + " eevt={}\n", + " hostid=exec_hosts[l['Host']]\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " tsk=l['Task ID']\n", + " fintime=l['Finish Time']\n", + " \n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==tsk:\n", + " tids[t]=[-1,-1]\n", + " break\n", + " else:\n", + " ended_event.append(tsk)\n", + " continue\n", + " for ps in reversed([key for key in tids.keys()]) :\n", + " if tids[ps][1]-fintime<0 and tids[ps][1]-fintime>=-2:\n", + " fintime=tids[ps][1]\n", + " tids[t]=tids[ps]\n", + " tids[ps]=[-1,-1]\n", + " break\n", + " if starttime==0:\n", + " starttime=l['Launch Time']\n", + " print(f'applog start time: {starttime}')\n", + "\n", + " sstime=l['Launch Time']-starttime\n", + "\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':sstime,\n", + " 'dur':fintime-l['Launch Time'],\n", + " 'pid':pid,\n", + " \"ph\":'X',\n", + " 'name':\"stg{:d}\".format(l['Stage ID']),\n", + " 'args':{\"job id\": l['Job ID'],\n", + " \"stage id\": l['Stage ID'],\n", + " \"tskid\":tsk,\n", + " \"input\":builtins.round(l[\"Bytes Read\"]/1024/1024,2),\n", + " \"spill\":builtins.round(l[\"Memory Bytes Spilled\"]/1024/1024,2),\n", + " \"Shuffle Read Metrics\": \"\",\n", + " \"|---Local Read\": builtins.round(l[\"Local Bytes Read\"]/1024/1024,2),\n", + " \"|---Remote Read\":builtins.round(l[\"Remote Bytes Read\"]/1024/1024,2),\n", + " \"Shuffle Write Metrics\": \"\",\n", + " \"|---Write\":builtins.round(l['Shuffle Bytes Written']/1024/1024,2)\n", + " }\n", + " })\n", + " tskmap[tsk]={'pid':pid,'tid':pid+int(t)}\n", + "\n", + " self.starttime=starttime\n", + " self.tskmap=tskmap\n", + " output=[json.dumps(l) for l in trace_events]\n", + " \n", + " df=self.df\n", + " \n", + " if showcpu and len(self.metricscollect)>0:\n", + " metricscollect=self.metricscollect\n", + " metrics_explode=df.where(\"Event='SparkListenerTaskEnd'\").withColumn(\"metrics\",F.explode(\"Accumulables\"))\n", + " m1092=metrics_explode.select(F.col(\"Executor ID\"),F.col(\"`Stage ID`\"),\"`Task ID`\",F.col(\"`Finish Time`\"),F.col(\"`Launch Time`\"),(F.col(\"`Finish Time`\")-F.col(\"`Launch Time`\")).alias(\"elapsedtime\"),\"metrics.*\").where(F.col(\"ID\").isin([l[0] for l in metricscollect]))\n", + " metric_name_df = spark.createDataFrame(metricscollect)\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_1\",\"ID\")\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_2\",\"unit\")\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_3\",\"mname\")\n", + "\n", + " met_df=m1092.join(metric_name_df,on=\"ID\")\n", + " met_df=met_df.withColumn(\"Update\",F.when(F.col(\"unit\")=='nsTiming',F.col(\"Update\")/1000000).otherwise(F.col(\"Update\")+0))\n", + " met_df=met_df.where(\"Update>1\")\n", + "\n", + " metdfx=met_df.groupBy(\"Task ID\",\"elapsedtime\").agg(F.sum(\"Update\").alias(\"totalCnt\"))\n", + " taskratio=metdfx.withColumn(\"ratio\",F.when(F.col(\"totalCnt\") 'time to collect batch' and mname <> 'time of scan'\")\n", + "\n", + " met_df=m1092.join(metric_name_df,on=\"ID\")\n", + " met_df=met_df.withColumn(\"Update\",F.when(F.col(\"unit\")=='nsTiming',F.col(\"Update\")/1000000).otherwise(F.col(\"Update\")+0))\n", + " \n", + " #pandas UDF doesn't work. hang\n", + " #tmbk=met_df.groupBy('Task ID').apply(time_breakdown)\n", + " \n", + " w=Window.partitionBy('Task ID')\n", + " met_df1=met_df.withColumn(\"sum_update\",F.sum(\"Update\").over(w))\n", + " met_df2=met_df1.withColumn(\"ratio\",(F.col(\"Finish Time\")-F.col(\"Launch Time\")-2)/F.col(\"sum_update\"))\n", + " met_df3=met_df2.withColumn(\"ratio\",F.when(F.col(\"ratio\")>1,1).otherwise(F.col(\"ratio\")))\n", + " met_df4=met_df3.withColumn(\"update_ratio\",F.floor(F.col(\"ratio\")*F.col(\"Update\")))\n", + " met_df5=met_df4.where(F.col(\"update_ratio\")>2)\n", + " w = (Window.partitionBy('Task ID').orderBy(F.desc(\"update_ratio\")).rowsBetween(Window.unboundedPreceding, Window.currentRow))\n", + " met_df6=met_df5.withColumn('ltime_dur', F.sum('update_ratio').over(w))\n", + " met_df8=met_df6.withColumn(\"ltime\",F.col(\"ltime_dur\")+F.col(\"Launch Time\")-F.col(\"update_ratio\"))\n", + "\n", + " tmbk=met_df8.withColumn(\"taskid\",F.col(\"Task ID\")).withColumn(\"start\",F.col(\"ltime\")+F.lit(1)).withColumn(\"dur\",F.col(\"update_ratio\")-F.lit(1)).withColumn(\"name\",F.col(\"mname\"))\n", + " \n", + " \n", + " traces.extend(tmbk.select(\n", + " F.lit(38).alias(\"tid\"),\n", + " (F.col(\"start\")-F.lit(self.starttime)).alias(\"ts\"),\n", + " (F.col(\"dur\")).alias(\"dur\"),\n", + " F.lit(pid).alias(\"pid\"),\n", + " F.lit(\"X\").alias(\"ph\"),\n", + " F.col(\"name\").alias(\"name\")).toJSON().collect())\n", + " traces.append(json.dumps({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"critical path\"}\n", + " }))\n", + " return traces \n", + " \n", + " def show_Stage_histogram(apps,stageid,bincount):\n", + " if apps.df is None:\n", + " apps.load_data()\n", + " \n", + " inputsize = apps.df.where(\"`Stage ID`={:d}\".format(stageid)).select(\"Stage ID\",\"Executor ID\", \"Task ID\", F.explode(\"Accumulables\")) \\\n", + " .select(\"Stage ID\",\"Executor ID\", \"Task ID\",\"col.*\") \\\n", + " .where(\"Name='input size in bytes' or Name='size of files read'\") \\\n", + " .groupBy(\"Task ID\") \\\n", + " .agg((F.sum(\"Update\")).alias(\"input read\"))\n", + "\n", + "\n", + " stage37=apps.df.where(\"`Stage ID`={:d} and event='SparkListenerTaskEnd'\".format(stageid) )\\\n", + " .join(inputsize,on=[\"Task ID\"],how=\"left\")\\\n", + " .fillna(0) \\\n", + " .select(F.col('Host'), \n", + " F.round((F.col('Finish Time')/1000-F.col('Launch Time')/1000),2).alias('elapsedtime'),\n", + " F.round((F.col('`input read`')+F.col('`Bytes Read`')+F.col('`Local Bytes Read`')+F.col('`Remote Bytes Read`'))/1024/1024,2).alias('input'))\n", + " stage37=stage37.cache()\n", + " hist_elapsedtime=stage37.select('elapsedtime').rdd.flatMap(lambda x: x).histogram(15)\n", + " hist_input=stage37.select('input').rdd.flatMap(lambda x: x).histogram(15)\n", + " fig, axs = plt.subplots(figsize=(30, 5),nrows=1, ncols=2)\n", + " ax=axs[0]\n", + " binSides, binCounts = hist_elapsedtime\n", + " binSides=[builtins.round(l,2) for l in binSides]\n", + "\n", + " N = len(binCounts)\n", + " ind = numpy.arange(N)\n", + " width = 0.5\n", + "\n", + " rects1 = ax.bar(ind+0.5, binCounts, width, color='b')\n", + "\n", + " ax.set_ylabel('Frequencies')\n", + " ax.set_title('stage{:d} elapsed time breakdown'.format(stageid))\n", + " ax.set_xticks(numpy.arange(N+1))\n", + " ax.set_xticklabels(binSides)\n", + "\n", + " ax=axs[1]\n", + " binSides, binCounts = hist_input\n", + " binSides=[builtins.round(l,2) for l in binSides]\n", + "\n", + " N = len(binCounts)\n", + " ind = numpy.arange(N)\n", + " width = 0.5\n", + " rects1 = ax.bar(ind+0.5, binCounts, width, color='b')\n", + "\n", + " ax.set_ylabel('Frequencies')\n", + " ax.set_title('stage{:d} input data breakdown'.format(stageid))\n", + " ax.set_xticks(numpy.arange(N+1))\n", + " ax.set_xticklabels(binSides)\n", + "\n", + " out=stage37\n", + " outpds=out.toPandas()\n", + "\n", + " fig, axs = plt.subplots(nrows=1, ncols=3, sharey=False,figsize=(30,8),gridspec_kw = {'width_ratios':[1, 1, 1]})\n", + " plt.subplots_adjust(wspace=0.01)\n", + "\n", + " groups= outpds.groupby('Host')\n", + " for name, group in groups:\n", + " axs[0].plot(group.input, group.elapsedtime, marker='o', linestyle='', ms=5, label=name)\n", + " axs[0].set_xlabel('input size (MB)')\n", + " axs[0].set_ylabel('elapsed time (s)')\n", + "\n", + " axs[0].legend()\n", + "\n", + " axs[0].get_shared_y_axes().join(axs[0], axs[1])\n", + "\n", + " sns.violinplot(y='elapsedtime', x='Host', data=outpds,palette=['g'],ax=axs[1])\n", + "\n", + " sns.violinplot(y='input', x='Host', data=outpds,palette=['g'],ax=axs[2])\n", + "\n", + " #ax.xaxis.set_major_formatter(mtick.FormatStrFormatter(''))\n", + " #ax.yaxis.set_major_formatter(mtick.FormatStrFormatter(''))\n", + "\n", + " if False:\n", + " out=stage37\n", + " vecAssembler = VectorAssembler(inputCols=[\"input\",'elapsedtime'], outputCol=\"features\").setHandleInvalid(\"skip\")\n", + " new_df = vecAssembler.transform(out)\n", + " kmeans = KMeans(k=2, seed=1) # 2 clusters here\n", + " model = kmeans.fit(new_df.select('features'))\n", + " transformed = model.transform(new_df)\n", + "\n", + "\n", + " outpds=transformed.select('Host','elapsedtime','input','prediction').toPandas()\n", + "\n", + " fig, axs = plt.subplots(nrows=1, ncols=2, sharey=False,figsize=(30,8),gridspec_kw = {'width_ratios':[1, 1]})\n", + " plt.subplots_adjust(wspace=0.01)\n", + "\n", + " groups= outpds.groupby('prediction')\n", + " for name, group in groups:\n", + " axs[0].plot(group.input, group.elapsedtime, marker='o', linestyle='', ms=5, label=name)\n", + " axs[0].legend()\n", + "\n", + " bars=transformed.where('prediction=1').groupBy(\"Host\").count().toPandas()\n", + "\n", + " axs[1].bar(bars['Host'], bars['count'], 0.4, color='coral')\n", + " axs[1].set_title('cluster=1')\n", + "\n", + " plt.show()\n", + " \n", + " def show_Stages_hist(apps,**kwargs):\n", + " if apps.df is None:\n", + " apps.load_data()\n", + " \n", + " bincount=kwargs.get(\"bincount\",15)\n", + " threshold=kwargs.get(\"threshold\",0.9)\n", + " \n", + " query=kwargs.get(\"queryid\",None)\n", + " if query and type(query)==int:\n", + " query = [query,]\n", + " df=apps.df.where(F.col(\"real_queryid\").isin(query)) if query else apps.df\n", + " \n", + " totaltime=df.where(\"event='SparkListenerTaskEnd'\" ).agg(F.sum(F.col('Finish Time')-F.col('Launch Time')).alias('total_time')).collect()[0]['total_time']\n", + " stage_time=df.where(\"event='SparkListenerTaskEnd'\" ).groupBy('`Stage ID`').agg(F.sum(F.col('Finish Time')-F.col('Launch Time')).alias('total_time')).orderBy('total_time', ascending=False).toPandas()\n", + " stage_time['acc_total'] = stage_time['total_time'].cumsum()/totaltime\n", + " stage_time=stage_time.reset_index()\n", + " fig, ax = plt.subplots(figsize=(30, 5))\n", + "\n", + " rects1 = ax.plot(stage_time['index'],stage_time['acc_total'],'b.-')\n", + " ax.set_xticks(stage_time['index'])\n", + " ax.set_xticklabels(stage_time['Stage ID'])\n", + " ax.set_xlabel('stage')\n", + " ax.grid(which='major', axis='x')\n", + " plt.show()\n", + " shownstage=[]\n", + " for x in stage_time.index:\n", + " if stage_time['acc_total'][x]<=threshold:\n", + " shownstage.append(stage_time['Stage ID'][x])\n", + " else:\n", + " shownstage.append(stage_time['Stage ID'][x])\n", + " break\n", + " for row in shownstage:\n", + " apps.show_Stage_histogram(row,bincount) \n", + " \n", + " def get_hottest_stages(apps,**kwargs):\n", + " if apps.df is None:\n", + " apps.load_data()\n", + " \n", + " bincount=kwargs.get(\"bincount\",15)\n", + " threshold=kwargs.get(\"threshold\",0.9)\n", + " plot=kwargs.get(\"plot\",True)\n", + " \n", + " query=kwargs.get(\"queryid\",None)\n", + " if query and type(query)==int:\n", + " query = [query,]\n", + " df=apps.df.where(F.col(\"real_queryid\").isin(query)) if query else apps.df.where(\"queryid is not NULL\")\n", + "\n", + " stage_time=df.where(\"event='SparkListenerTaskEnd'\" ).groupBy('`Stage ID`','Job ID','real_queryid').agg(\n", + " F.sum(F.col('Finish Time')-F.col('Launch Time')).alias('total_time'),\n", + " F.stddev(F.col('Finish Time')/1000-F.col('Launch Time')/1000).alias('stdev_time'),\n", + " F.count(\"*\").alias(\"cnt\"),\n", + " F.first('queryid').astype(IntegerType()).alias('queryid')\n", + " )\\\n", + " .select('`Stage ID`','Job ID','real_queryid','queryid',\n", + " (F.col(\"total_time\")/1000/(F.when(F.col(\"cnt\")>F.lit(apps.executor_instances*apps.executor_cores/apps.taskcpus),F.lit(apps.executor_instances*apps.executor_cores/apps.taskcpus)).otherwise(F.col(\"cnt\")))).alias(\"total_time\"),\n", + " F.col(\"stdev_time\")\n", + " ).orderBy('total_time', ascending=False).toPandas()\n", + "\n", + " totaltime=stage_time['total_time'].sum()\n", + " stage_time['acc_total'] = stage_time['total_time'].cumsum()/totaltime\n", + " stage_time['total'] = stage_time['total_time']/totaltime\n", + " stage_time=stage_time.reset_index()\n", + "\n", + " shownstage=stage_time.loc[stage_time['acc_total'] <=threshold]\n", + " shownstage['stg']=shownstage['real_queryid'].astype(str)+'_'+shownstage['Job ID'].astype(str)+'_'+shownstage['Stage ID'].astype(str)\n", + " if plot:\n", + " shownstage.plot.bar(x=\"stg\",y=\"total\",figsize=(30,8))\n", + "\n", + "\n", + "\n", + " norm = matplotlib.colors.Normalize(vmin=0, vmax=max(stage_time.queryid))\n", + " cmap = matplotlib.cm.get_cmap('brg')\n", + " def setbkcolor(x):\n", + " rgba=cmap(norm(x['queryid']))\n", + " return ['background-color:rgba({:d},{:d},{:d},1); color:white'.format(int(rgba[0]*255),int(rgba[1]*255),int(rgba[2]*255))]*9\n", + "\n", + " if plot:\n", + " display(stage_time.style.apply(setbkcolor,axis=1).format({\"total_time\":lambda x: '{:,.2f}'.format(x),\"acc_total\":lambda x: '{:,.2%}'.format(x),\"total\":lambda x: '{:,.2%}'.format(x)}))\n", + " \n", + " return stage_time\n", + "\n", + " def scatter_elapsetime_input(apps,stageid):\n", + " if apps.df is None:\n", + " apps.load_data()\n", + " stage37=apps.df.where(\"`Stage ID`={:d} and event='SparkListenerTaskEnd'\".format(stageid) ).select(F.round((F.col('Finish Time')/1000-F.col('Launch Time')/1000),2).alias('elapsedtime'),F.round((F.col('`Bytes Read`')+F.col('`Local Bytes Read`')+F.col('`Remote Bytes Read`'))/1024/1024,2).alias('input')).toPandas()\n", + " stage37.plot.scatter('input','elapsedtime',figsize=(30, 5))\n", + "\n", + " def get_critical_path_stages(self): \n", + " df=self.df.where(\"Event='SparkListenerTaskEnd'\")\n", + " criticaltasks=self.criticaltasks\n", + " cripds=pandas.DataFrame(criticaltasks)\n", + " cripds.columns=['task_id',\"launch\",\"finish\"]\n", + " cridf=spark.createDataFrame(cripds)\n", + " df_ctsk=df.join(cridf,on=[F.col(\"task_id\")==F.col(\"Task ID\")],how=\"inner\")\n", + " df_ctsk=df_ctsk.withColumn(\"elapsed\",(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000)\n", + " return df_ctsk.where(\"elapsed>10\").orderBy(F.desc(\"elapsed\")).select(\"real_queryid\",F.round(\"elapsed\",2).alias(\"elapsed\"),\"Host\",\"executor ID\",\"Stage ID\",\"Task ID\",F.round(F.col(\"Bytes Read\")/1000000,0).alias(\"file read\"),F.round((F.col(\"Local Bytes Read\")+F.col(\"Remote Bytes Read\"))/1000000,0).alias(\"shuffle read\")).toPandas()\n", + " \n", + " def show_time_metric(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + " shownodes=kwargs.get(\"shownodes\",None)\n", + " query=kwargs.get(\"queryid\",None)\n", + " plot=kwargs.get(\"plot\",True)\n", + " taskids=kwargs.get(\"taskids\",None)\n", + " \n", + " if query and type(query)==int:\n", + " query = [query,]\n", + " \n", + " showexecutor=kwargs.get(\"showexecutor\",True) if not taskids else False\n", + " queryid = query[0] if query else 0\n", + " \n", + " df=self.df.where(F.col(\"Host\").isin(shownodes)) if shownodes else self.df\n", + " df=df.where(F.col(\"real_queryid\").isin(query)) if query else df.where(\"queryid is not NULL\")\n", + "\n", + " df=df.where(F.col(\"Task ID\").isin(taskids)) if taskids else df\n", + "\n", + " exec_cores=1 if taskids else self.executor_cores\n", + " execs=1 if taskids else self.executor_instances\n", + "\n", + " metricscollect=self.metricscollect\n", + "\n", + " metrics_explode=df.where(\"Event='SparkListenerTaskEnd'\").withColumn(\"metrics\",F.explode(\"Accumulables\"))\n", + " m1092=metrics_explode.select(F.col(\"Executor ID\"),F.col(\"`Stage ID`\"),\"`Task ID`\",F.col(\"`Finish Time`\"),F.col(\"`Launch Time`\"),(F.col(\"`Finish Time`\")-F.col(\"`Launch Time`\")).alias(\"elapsedtime\"),\"metrics.*\").where(F.col(\"ID\").isin([l[0] for l in metricscollect]))\n", + " metric_name_df = spark.createDataFrame(metricscollect)\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_1\",\"ID\")\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_2\",\"unit\")\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_3\",\"mname\")\n", + " metric_name_df=metric_name_df.withColumnRenamed(\"_4\",\"node\")\n", + "\n", + " runtime=metrics_explode.agg(F.round(F.max(\"Finish Time\")/1000-F.min(\"Launch Time\")/1000,2).alias(\"runtime\")).collect()[0][\"runtime\"]\n", + "\n", + " met_df=m1092.join(metric_name_df,on=\"ID\")\n", + " met_df=met_df.withColumn(\"Update\",F.when(F.col(\"unit\")=='nsTiming',F.col(\"Update\")/1000000).otherwise(F.col(\"Update\")+0))\n", + " outpdf=met_df.groupBy(\"`Executor ID`\",\"mname\").sum(\"Update\").orderBy(\"Executor ID\").toPandas()\n", + "\n", + " met_time_cnt=df.where(\"Event='SparkListenerTaskEnd'\")\n", + " exectime=met_time_cnt.groupBy(\"Executor ID\").agg((F.max(\"Finish Time\")-F.min(\"Launch Time\")).alias(\"totaltime\"),F.sum(F.col(\"`Finish Time`\")-F.col(\"`Launch Time`\")).alias(\"tasktime\"))\n", + "\n", + " totaltime_query=met_time_cnt.groupBy(\"real_queryid\").agg((F.max(\"Finish Time\")-F.min(\"Launch Time\")).alias(\"totaltime\")).agg(F.sum(\"totaltime\").alias(\"totaltime\")).collect()\n", + " totaltime_query=totaltime_query[0][\"totaltime\"]\n", + " \n", + " pdf=exectime.toPandas()\n", + " exeids=set(outpdf['Executor ID'])\n", + " outpdfs=[outpdf[outpdf[\"Executor ID\"]==l] for l in exeids]\n", + " tasktime=pdf.set_index(\"Executor ID\").to_dict()['tasktime']\n", + "\n", + " def comb(l,r):\n", + " execid=list(r['Executor ID'])[0]\n", + " lp=r[['mname','sum(Update)']]\n", + " lp.columns=[\"mname\",\"val_\"+execid]\n", + " idle=totaltime_query*exec_cores-tasktime[execid]\n", + " nocount=tasktime[execid]-sum(lp[\"val_\"+execid])\n", + " if idle<0:\n", + " idle=0\n", + " if nocount<0:\n", + " nocount=0\n", + " lp=lp.append([{\"mname\":\"idle\",\"val_\"+execid:idle}])\n", + " lp=lp.append([{\"mname\":\"not_counted\",\"val_\"+execid:nocount}])\n", + " if l is not None:\n", + " return pandas.merge(lp, l,on=[\"mname\"],how='outer')\n", + " else:\n", + " return lp\n", + "\n", + " rstpdf=None\n", + " for l in outpdfs[0:]:\n", + " rstpdf=comb(rstpdf,l)\n", + " \n", + " for l in [l for l in rstpdf.columns if l!=\"mname\"]:\n", + " rstpdf[l]=rstpdf[l]/1000/exec_cores\n", + " \n", + " rstpdf=rstpdf.sort_values(by=\"val_\"+list(exeids)[0],axis=0,ascending=False)\n", + " if showexecutor and plot:\n", + " rstpdf.set_index(\"mname\").T.plot.bar(stacked=True,figsize=(30,8))\n", + " pdf_sum=pandas.DataFrame(rstpdf.set_index(\"mname\").T.sum())\n", + " totaltime=totaltime_query/1000\n", + " pdf_sum[0]=pdf_sum[0]/(execs)\n", + " pdf_sum[0][\"idle\"]=(totaltime_query-sum(tasktime.values())/execs/exec_cores)/1000\n", + " pdf_sum=pdf_sum.sort_values(by=0,axis=0,ascending=False)\n", + " pdf_sum=pdf_sum.T\n", + " pdf_sum.columns=[\"{:>2.0f}%_{:s}\".format(pdf_sum[l][0]/totaltime*100,l) for l in pdf_sum.columns]\n", + " matplotlib.rcParams['font.sans-serif'] = \"monospace\"\n", + " matplotlib.rcParams['font.family'] = \"monospace\"\n", + " import matplotlib.font_manager as font_manager\n", + " if plot:\n", + " ax=pdf_sum.plot.bar(stacked=True,figsize=(30,8))\n", + " font = font_manager.FontProperties(family='monospace',\n", + " style='normal', size=14)\n", + " ax.legend(prop=font,loc=4)\n", + " plt.title(\"{:s} q{:d} executors={:d} cores_per_executor={:d} parallelism={:d} sumtime={:.0f} runtime={:.0f}\".format(self.file.split(\"/\")[2],queryid,self.executor_instances,self.executor_cores,self.parallelism,totaltime,runtime),fontdict={'fontsize':24})\n", + " return pdf_sum\n", + "\n", + " def show_critical_path_time_breakdown(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + " return self.show_time_metric(taskids=[l[0].item() for l in self.criticaltasks])\n", + " \n", + " def get_spark_config(self):\n", + " df=spark.read.json(self.file)\n", + " self.appid=df.where(\"`App ID` is not null\").collect()[0][\"App ID\"]\n", + " pandas.set_option('display.max_rows', None)\n", + " pandas.set_option('display.max_columns', None)\n", + " pandas.set_option('display.max_colwidth', 100000)\n", + " return df.select(\"Properties.*\").where(\"`spark.app.id` is not null\").limit(1).toPandas().T\n", + " \n", + " def get_app_name(self):\n", + " cfg=self.get_spark_config()\n", + " display(HTML(\"\" + cfg.loc[cfg.index=='spark.app.name'][0][0]+\"\"))\n", + " \n", + " \n", + " def get_query_time(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + " queryid=kwargs.get(\"queryid\",None)\n", + " showtable=kwargs.get(\"showtable\",True)\n", + " plot=kwargs.get(\"plot\",True)\n", + " \n", + " if queryid and type(queryid)==int:\n", + " queryid = [queryid,]\n", + " \n", + " df=self.df.where(F.col(\"real_queryid\").isin(queryid)) if queryid else self.df.where(\"queryid is not NULL\")\n", + " \n", + " \n", + " stages=df.select(\"real_queryid\",\"Stage ID\").distinct().orderBy(\"Stage ID\").groupBy(\"real_queryid\").agg(F.collect_list(\"Stage ID\").alias(\"stages\")).orderBy(\"real_queryid\")\n", + " runtimeacc=df.where(\"Event='SparkListenerTaskEnd'\") \\\n", + " .groupBy(\"real_queryid\") \\\n", + " .agg(F.round(F.sum(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000/self.executor_instances/self.executor_cores*self.taskcpus,2).alias(\"acc_task_time\"))\n", + " inputsize = df.select(\"real_queryid\",\"Stage ID\",\"Executor ID\", \"Task ID\", F.explode(\"Accumulables\")) \\\n", + " .select(\"real_queryid\",\"Stage ID\",\"Executor ID\", \"Task ID\",\"col.*\") \\\n", + " .where(\"Name='input size in bytes' or Name='size of files read'\") \\\n", + " .groupBy(\"real_queryid\") \\\n", + " .agg(F.round(F.sum(\"Update\")/1024/1024/1024,2).alias(\"input read\")).orderBy(\"real_queryid\")\n", + " if self.dfacc is not None:\n", + " inputsizev1 = self.dfacc.where(\"Name='size of files read'\").groupBy(\"real_queryid\").agg(F.round(F.sum(\"Update\")/1024/1024/1024,2).alias(\"input read v1\")).orderBy(\"real_queryid\")\n", + " inputsize=inputsize.join(inputsizev1,on=\"real_queryid\",how=\"outer\")\n", + " inputsize=inputsize.withColumn(\"input read\",F.coalesce(F.col(\"input read\"),F.col(\"input read v1\"))).drop(\"input read v1\")\n", + " \n", + " outputrows = df.select(\"real_queryid\",\"Stage ID\",\"Stage ID\",F.explode(\"Accumulables\"))\\\n", + " .select(\"real_queryid\",\"Stage ID\",\"Stage ID\",\"col.*\")\\\n", + " .where(\"Name='number of output rows'\")\\\n", + " .groupBy(\"real_queryid\")\\\n", + " .agg(F.round(F.sum(\"Update\")/1000000000,2).alias(\"output rows\"))\n", + " \n", + " stages=runtimeacc.join(stages,on=\"real_queryid\",how=\"left\")\n", + " stages=inputsize.join(stages,on=\"real_queryid\",how=\"left\")\n", + " stages=stages.join(outputrows,on='real_queryid',how=\"left\")\n", + " \n", + " out=df.groupBy(\"real_queryid\").agg(\n", + " F.round(F.max(\"query_endtime\")/1000-F.min(\"query_starttime\")/1000,2).alias(\"runtime\"),\n", + " F.round(F.sum(\"Disk Bytes Spilled\")/1024/1024/1024,2).alias(\"disk spilled\"),\n", + " F.round(F.sum(\"Memory Bytes Spilled\")/1024/1024/1024,2).alias(\"memspilled\"),\n", + " F.round(F.sum(\"Local Bytes Read\")/1024/1024/1024,2).alias(\"local_read\"),\n", + " F.round(F.sum(\"Remote Bytes Read\")/1024/1024/1024,2).alias(\"remote_read\"),\n", + " F.round(F.sum(\"Shuffle Bytes Written\")/1024/1024/1024,2).alias(\"shuffle_write\"),\n", + " F.round(F.sum(\"Executor Deserialize Time\")/1000/self.parallelism,2).alias(\"deser_time\"),\n", + " F.round(F.sum(\"Executor Run Time\")/1000/self.parallelism,2).alias(\"run_time\"),\n", + " F.round(F.sum(\"Result Serialization Time\")/1000/self.parallelism,2).alias(\"ser_time\"),\n", + " F.round(F.sum(\"Fetch Wait Time\")/1000/self.parallelism,2).alias(\"f_wait_time\"),\n", + " F.round(F.sum(\"JVM GC Time\")/1000/self.parallelism,2).alias(\"gc_time\"),\n", + " F.round(F.max(\"Peak Execution Memory\")/1000000000*self.executor_instances*self.executor_cores,2).alias(\"peak_mem\"),\n", + " F.max(\"queryid\").alias(\"queryid\")\n", + " ).join(stages,\"real_queryid\",how=\"left\").orderBy(\"real_queryid\").toPandas().set_index(\"real_queryid\")\n", + " out[\"executors\"]=self.executor_instances\n", + " out[\"core/exec\"]=self.executor_cores\n", + " out[\"task.cpus\"]=self.taskcpus\n", + " out['parallelism']=self.parallelism\n", + " \n", + " if not showtable:\n", + " return out\n", + "\n", + " def highlight_greater(x):\n", + " m1 = x['acc_task_time'] / x['runtime'] * 100\n", + " m2 = x['run_time'] / x['runtime'] * 100\n", + " m3 = x['f_wait_time'] / x['runtime'] * 100\n", + " \n", + "\n", + " df1 = pandas.DataFrame('', index=x.index, columns=x.columns)\n", + "\n", + " df1['acc_task_time'] = m1.apply(lambda x: 'background-image: linear-gradient(to right,#5fba7d {:f}%,white {:f}%)'.format(x,x))\n", + " df1['run_time'] = m2.apply(lambda x: 'background-image: linear-gradient(to right,#5fba7d {:f}%,white {:f}%)'.format(x,x))\n", + " df1['f_wait_time'] = m3.apply(lambda x: 'background-image: linear-gradient(to right,#d65f5f {:f}%,white {:f}%)'.format(x,x))\n", + " return df1\n", + "\n", + "\n", + " cm = sns.light_palette(\"green\", as_cmap=True)\n", + " if plot:\n", + " display(out.style.apply(highlight_greater, axis=None).background_gradient(cmap=cm,subset=['input read', 'shuffle_write']))\n", + " \n", + " return out\n", + " \n", + " def get_query_time_metric(self):\n", + " if self.df is None:\n", + " self.load_data()\n", + " querids=self.df.select(\"queryid\").distinct().collect()\n", + " for idx,q in enumerate([l[\"queryid\"] for l in querids]):\n", + " self.show_time_metric(query=[q,],showexecutor=False)\n", + " \n", + " def getOperatorCount(self):\n", + " if self.df is None:\n", + " self.load_data()\n", + " df=spark.read.json(self.file)\n", + " queryids=self.df.select(F.col(\"queryid\").astype(LongType()),F.col(\"real_queryid\")).distinct().orderBy(\"real_queryid\")\n", + " queryplans=self.queryplans.collect()\n", + " list_queryid=[l.real_queryid for l in queryids.collect()]\n", + "\n", + " def get_child(execid,node):\n", + " #wholestagetransformer not counted\n", + " if node['nodeName'] is not None and not node['nodeName'].startswith(\"WholeStageCodegenTransformer\"):\n", + " if node[\"nodeName\"] not in qps:\n", + " qps[node[\"nodeName\"]]={l:0 for l in list_queryid}\n", + " qps[node[\"nodeName\"]][execid]=qps[node[\"nodeName\"]][execid]+1\n", + " if node[\"children\"] is not None:\n", + " for c in node[\"children\"]:\n", + " get_child(execid,c)\n", + "\n", + " qps={}\n", + " for c in queryplans:\n", + " get_child(c['real_queryid'],c)\n", + "\n", + " return pandas.DataFrame(qps).T.sort_index(axis=0) \n", + " \n", + " def get_query_plan(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " queryid=kwargs.get(\"queryid\",None)\n", + " stageid=kwargs.get(\"stageid\",None)\n", + " \n", + " outputstage=kwargs.get(\"outputstage\",None)\n", + " \n", + " show_plan_only=kwargs.get(\"show_plan_only\",False)\n", + " show_simple_string=kwargs.get(\"show_simple_string\",False)\n", + "\n", + " plot=kwargs.get(\"plot\",True)\n", + " \n", + " colors=[\"#{:02x}{:02x}{:02x}\".format(int(l[0]*255),int(l[1]*255),int(l[2]*255)) for l in matplotlib.cm.get_cmap('tab20').colors]\n", + " \n", + " if queryid is not None:\n", + " if type(queryid)==int or type(queryid)==str:\n", + " queryid = [queryid,]\n", + " shown_stageid = [l[\"Stage ID\"] for l in self.df.where(F.col(\"real_queryid\").isin(queryid)).select(\"Stage ID\").distinct().collect()]\n", + " if stageid is not None:\n", + " if type(stageid)==int:\n", + " shown_stageid = [stageid,]\n", + " elif type(stageid)==list:\n", + " shown_stageid = stageid\n", + " queryid = [l[\"real_queryid\"] for l in self.df.where(F.col(\"`Stage ID`\").isin(shown_stageid)).select(\"real_queryid\").limit(1).collect()]\n", + "\n", + "\n", + " queryplans=[]\n", + " queryplans = self.queryplans.where(F.col(\"real_queryid\").isin(queryid)).orderBy(\"real_queryid\").collect() if queryid else self.queryplans.orderBy(\"real_queryid\").collect()\n", + " dfmetric=self.df.where(\"Event='SparkListenerTaskEnd'\").select(\"queryid\",\"real_queryid\",\"Stage ID\",\"Job ID\",F.explode(\"Accumulables\").alias(\"metric\")).select(\"*\",\"metric.*\").select(\"Stage ID\",\"ID\",\"Update\").groupBy(\"ID\",\"Stage ID\").agg(F.round(F.sum(\"Update\"),1).alias(\"value\"),F.round(F.stddev(\"Update\"),1).alias(\"stdev\")).collect()\n", + " accid2stageid={l.ID:(l[\"Stage ID\"],l[\"value\"],l[\"stdev\"]) for l in dfmetric}\n", + "\n", + " stagetime=self.df.where((F.col(\"real_queryid\").isin(queryid))).where(F.col(\"Event\")=='SparkListenerTaskEnd').groupBy(\"Stage ID\").agg(\n", + " F.round(F.sum(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000/self.executor_instances/self.executor_cores*self.taskcpus,1).alias(\"elapsed time\"),\n", + " F.round(F.stddev(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000,1).alias(\"time stdev\"),\n", + " F.count(F.col(\"Task ID\")).alias(\"partitions\")\n", + " ).orderBy(F.desc(\"elapsed time\")).collect()\n", + "\n", + " apptotaltime=reduce(lambda x,y: x+y['elapsed time'], stagetime,0)\n", + " if apptotaltime==0:\n", + " display(HTML(\"Error, totaltime is 0 \"))\n", + " apptotaltime=1\n", + " return \"\"\n", + "\n", + " stagemap={l[\"Stage ID\"]:l[\"elapsed time\"] for l in stagetime}\n", + " stage_time_stdev_map={l[\"Stage ID\"]:l[\"time stdev\"] for l in stagetime}\n", + " stagepartmap={l[\"Stage ID\"]:l[\"partitions\"] for l in stagetime}\n", + "\n", + " keystage=[]\n", + " keystagetime=[]\n", + " subtotal=0\n", + " for s in stagetime:\n", + " subtotal=subtotal+s['elapsed time']\n", + " keystage.append(s['Stage ID'])\n", + " keystagetime.append(s['elapsed time'])\n", + " if subtotal/apptotaltime>0.9:\n", + " break\n", + " keystagetime=[\"{:02x}{:02x}\".format(int(255*l/keystagetime[0]),255-int(255*l/keystagetime[0])) for l in keystagetime if keystagetime[0]>0]\n", + " keystagemap=dict(zip(keystage,keystagetime))\n", + " outstr=[]\n", + " def print_plan(real_queryid,level,node,parent_stageid):\n", + " stageid = accid2stageid[int(node[\"metrics\"][0][\"accumulatorId\"])][0] if node[\"metrics\"] is not None and len(node[\"metrics\"])>0 and node[\"metrics\"][0][\"accumulatorId\"] in accid2stageid else parent_stageid\n", + "\n", + " if stageid in shown_stageid:\n", + " fontcolor=f\"color:#{keystagemap[stageid]}00;font-weight:bold\" if stageid in keystagemap else \"color:#000000\"\n", + " stagetime=0 if stageid not in stagemap else stagemap[stageid]\n", + " stageParts=0 if stageid not in stagepartmap else stagepartmap[stageid]\n", + "\n", + " input_rowcntstr=\"\"\n", + " output_rowcntstr=\"\"\n", + " timename={}\n", + " input_columnarbatch=\"\"\n", + " output_columnarbatch=\"\"\n", + " output_row_batch=\"\"\n", + " other_metric_name={}\n", + "\n", + " outputrows=0\n", + " outputbatches=0\n", + " if node[\"metrics\"] is not None:\n", + " for m in node[\"metrics\"]:\n", + "\n", + " if m[\"accumulatorId\"] not in accid2stageid:\n", + " continue\n", + " \n", + " if m[\"name\"].endswith(\"block wall nanos\") or m['name'].endswith(\"cpu nanos\"):\n", + " continue\n", + " \n", + " \n", + " value=accid2stageid[m[\"accumulatorId\"]][1]\n", + " stdev_value=accid2stageid[m[\"accumulatorId\"]][2]\n", + " stdev_value=0 if stdev_value is None else stdev_value\n", + " if m[\"metricType\"] in ['nsTiming','timing']:\n", + " totaltime=value/1000 if m[\"metricType\"] == 'timing' else value/1000000000\n", + " stdev_value=stdev_value/1000 if m[\"metricType\"] == 'timing' else stdev_value/1000000000\n", + " \n", + " timeratio= 0 if stagetime==0 else totaltime/self.executor_instances/self.executor_cores*self.taskcpus/stagetime*100\n", + " timeratio_query = totaltime/self.executor_instances/self.executor_cores*self.taskcpus/apptotaltime*100\n", + " if timeratio > 10 or timeratio_query>10:\n", + " timename[m[\"name\"]]=\"{:.2f}s ({:.1f}%, {:.1f}%, {:.2f})\".format(totaltime,timeratio, totaltime/self.executor_instances/self.executor_cores*self.taskcpus/apptotaltime*100,stdev_value)\n", + " else:\n", + " timename[m[\"name\"]]=\"{:.2f}s ({:.1f}%, {:.1f}%, {:.2f})\".format(totaltime,timeratio, totaltime/self.executor_instances/self.executor_cores*self.taskcpus/apptotaltime*100,stdev_value)\n", + " elif m[\"name\"] in [\"number of output rows\",\"number of final output rows\"]:\n", + " output_rowcntstr=\"{:,.1f}\".format(value/1000/1000)+\" M\"\n", + " outputrows=value\n", + " elif m[\"name\"] in [\"number of output columnar batches\",\"number of output batches\",\"output_batches\", \"number of output vectors\",\"number of final output vectors\", \"records read\"]: \n", + " # records reads is the output of shuffle\n", + " output_columnarbatch=\"{:,d}\".format(int(value))\n", + " outputbatches=value\n", + " elif m[\"name\"]==\"number of input rows\":\n", + " input_rowcntstr=\"{:,.1f}\".format(value/1000/1000)+\" M\"\n", + " elif m[\"name\"] in [\"number of input batches\",\"input_batches\",\"number of input vectors\"]:\n", + " input_columnarbatch=\"{:,d}\".format(int(value))\n", + " else:\n", + " if value>1000000000:\n", + " other_metric_name[m[\"name\"]]=\"{:,.1f} G ({:,.1f})\".format(value/1000000000,stdev_value/1000000000)\n", + " elif value>1000000:\n", + " other_metric_name[m[\"name\"]]=\"{:,.1f} M ({:,.1f})\".format(value/1000000,stdev_value/1000000)\n", + " elif value>1000:\n", + " other_metric_name[m[\"name\"]]=\"{:,.1f} K ({:,.1f})\".format(value/1000,stdev_value/1000)\n", + " else:\n", + " other_metric_name[m[\"name\"]]=\"{:,d} ({:,.1f})\".format(int(value),stdev_value)\n", + "\n", + "\n", + " if outputrows>0 and outputbatches>0:\n", + " output_row_batch=\"{:,d}\".format(int(outputrows/outputbatches))\n", + "\n", + "\n", + " fontcolor=f\"color:#{keystagemap[stageid]}00;font-weight:bold\" if stageid in keystage else \"color:#000000\"\n", + " stagetime=0 if stageid not in stagemap else stagemap[stageid]\n", + " stage_time_stdev=0 if stageid not in stage_time_stdev_map else stage_time_stdev_map[stageid]\n", + " \n", + " nodenamestr=node[\"nodeName\"]\n", + " if nodenamestr is None:\n", + " nodenamestr=\"\"\n", + " if nodenamestr in ['ColumnarToRow','RowToArrowColumnar','ArrowColumnarToRow','ArrowRowToColumnarExec','GlutenColumnarToRowExec','GlutenRowToArrowColumnar']:\n", + " nodename=''+nodenamestr+''\n", + " else:\n", + " nodename=nodenamestr\n", + " if outputstage is not None:\n", + " outputstage.append({\"queryid\":real_queryid,\"stageid\":stageid,\"stagetime\":stagetime,\"stageParts\":stageParts,\"nodename\":nodenamestr,\"output_rowcnt\":outputrows,\"nodename_level\":\" \".join([\"|_\" for l in range(0,level)]) + \" \" + nodenamestr})\n", + " if not show_plan_only:\n", + " nodestr= \" \".join([\"|_\" for l in range(0,level)]) + \" \" + nodename\n", + " if show_simple_string :\n", + " simstr=node['simpleString']\n", + " nodestr = nodestr + \"
\\n\" + simstr \n", + " \n", + " timenametable='\\n'\n", + " \n", + " timenameSort=list(timename)\n", + " \n", + " for nameidx in sorted(timename):\n", + " timenametable+=f\"\"\n", + " timenametable+=\"
{nameidx}{timename[nameidx]}
\\n\"\n", + " \n", + " \n", + " othertable='\\n'\n", + " for nameidx in sorted(other_metric_name):\n", + " othertable+=f\"\"\n", + " othertable+=\"
{nameidx}{other_metric_name[nameidx]}
\\n\"\n", + " \n", + " outstr.append(f\"{stageid}\"+\n", + " f\" {stagetime}({stage_time_stdev}) \"+\n", + " f\" {stageParts} \"+\n", + " f\"\" + nodestr + f\"\"+\n", + " f\" {input_rowcntstr} \"+\n", + " f\" {input_columnarbatch} \"+\n", + " f\" {output_rowcntstr} \"+\n", + " f\" {output_columnarbatch} \"+\n", + " f\" {output_row_batch} \"+\n", + " f\" {timenametable} \"+\n", + " f\" {othertable} \"+\n", + " \"\")\n", + " else:\n", + " outstr.append(f\"{stageid}\"+\n", + " f\" {stagetime} \"+\n", + " f\" {stageParts} \"+\n", + " f\"\" + \" \".join([\"|_\" for l in range(0,level)]) + \" \" + nodename + f\"\"+\n", + " f\" {output_rowcntstr} \")\n", + " \n", + " if node[\"children\"] is not None:\n", + " for c in node[\"children\"]:\n", + " print_plan(real_queryid, level+1,c,stageid)\n", + "\n", + " for c in queryplans:\n", + " outstr.append(\"\"+str(c['real_queryid'])+\"\")\n", + " if not show_plan_only:\n", + " outstr.append('''\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " ''')\n", + " else:\n", + " outstr.append('''\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " ''')\n", + "\n", + " print_plan(c['real_queryid'],0,c,0)\n", + " outstr.append(\"
stage idstage timepartionsoperatorinput rowsinput batchesoutput rowsoutput batchesoutput rows/batchtime metric nametime(%stage,%total,stdev)other metric namevalue(stdev)
stage idstage timepartionsoperatoroutput rows
\")\n", + " if plot:\n", + " display(HTML(\" \".join(outstr)))\n", + " return \" \".join(outstr)\n", + " \n", + " def get_metric_output_rowcnt(self, **kwargs):\n", + " return self.get_metric_rowcnt(\"number of output rows\",**kwargs)\n", + " \n", + " def get_metric_input_rowcnt(self, **kwargs):\n", + " return self.get_metric_rowcnt(\"number of input rows\",**kwargs)\n", + " \n", + " def get_metric_rowcnt(self,rowname, **kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " queryid=kwargs.get(\"queryid\",None)\n", + " stageid=kwargs.get(\"stageid\",None)\n", + " show_task=kwargs.get(\"show_task\",False)\n", + " \n", + " if queryid and type(queryid)==int:\n", + " queryid = [queryid,]\n", + " \n", + " if stageid and type(stageid)==int:\n", + " stageid = [stageid,]\n", + " \n", + " queryplans = self.queryplans.where(F.col(\"real_queryid\").isin(queryid)).orderBy(\"real_queryid\").collect() if queryid else self.queryplans.orderBy(\"real_queryid\").collect()\n", + " qps=[]\n", + "\n", + " rownames=rowname if type(rowname)==list else [rowname,]\n", + " def get_child(execid,node):\n", + " if node['metrics'] is not None:\n", + " outputrows=[x for x in node[\"metrics\"] if \"name\" in x and x[\"name\"] in rownames]\n", + " if len(outputrows)>0:\n", + " qps.append([node[\"nodeName\"],execid,outputrows[0]['accumulatorId']])\n", + " if node[\"children\"] is not None:\n", + " for c in node[\"children\"]:\n", + " get_child(execid,c)\n", + " for c in queryplans:\n", + " get_child(c['real_queryid'],c)\n", + "\n", + " if len(qps)==0:\n", + " print(\"Metric \",rowname,\" is not found. \")\n", + " return None\n", + " stagetime=self.df.where(\"Event='SparkListenerTaskEnd'\").groupBy(\"Stage ID\").agg(F.round(F.sum(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000/self.executor_instances/self.executor_cores*self.taskcpus,2).alias(\"stage time\"))\n", + " dfmetric=self.df.where(\"Event='SparkListenerTaskEnd'\").select(\"queryid\",\"real_queryid\",\"Stage ID\",\"Job ID\",F.explode(\"Accumulables\").alias(\"metric\")).select(\"*\",\"metric.*\").drop(\"metric\")\n", + " numrowmetric=spark.createDataFrame(qps)\n", + " numrowmetric=numrowmetric.withColumnRenamed(\"_1\",\"metric\").withColumnRenamed(\"_2\",\"real_queryid\").withColumnRenamed(\"_3\",\"metricid\")\n", + " dfmetric_rowcnt=dfmetric.join(numrowmetric.drop(\"real_queryid\"),on=[F.col(\"metricid\")==F.col(\"ID\")],how=\"right\")\n", + " if show_task:\n", + " stagemetric=dfmetric_rowcnt.join(stagetime,\"Stage ID\")\n", + " else:\n", + " stagemetric=dfmetric_rowcnt.groupBy(\"queryid\",\"real_queryid\",\"Job ID\",\"Stage ID\",\"metricid\").agg(F.round(F.sum(\"Update\")/1000000,2).alias(\"total_row\"),F.max(\"metric\").alias(\"nodename\")).join(stagetime,\"Stage ID\")\n", + "\n", + " if queryid:\n", + " if stageid:\n", + " return stagemetric.where(F.col(\"real_queryid\").isin(queryid) & F.col(\"Stage ID\").isin(stageid)).orderBy(\"Stage ID\")\n", + " else:\n", + " return stagemetric.where(F.col(\"real_queryid\").isin(queryid)).orderBy(\"Stage ID\")\n", + " else:\n", + " noderow=stagemetric.groupBy(\"real_queryid\",\"nodename\").agg(F.round(F.sum(\"total_row\"),2).alias(\"total_row\")).orderBy(\"nodename\").collect()\n", + " out={}\n", + " qids=set([r.real_queryid for r in noderow])\n", + " for r in noderow:\n", + " if r.nodename not in out:\n", + " out[r.nodename]={c:0 for c in qids}\n", + " out[r.nodename][r.real_queryid]=r.total_row\n", + " return pandas.DataFrame(out).T.sort_index(axis=0)\n", + " \n", + " def get_query_info(self,queryid):\n", + " display(HTML(\" time stat info \",))\n", + " tmp=self.get_query_time(queryid=queryid)\n", + " display(HTML(\" stage stat info \",))\n", + " display(self.get_stage_stat(queryid=queryid))\n", + " display(HTML(\" query plan \",))\n", + " self.get_query_plan(queryid=queryid)\n", + " display(HTML(\" stage hist info \",))\n", + " self.show_Stages_hist(queryid=queryid)\n", + " display(HTML(\" time info \",))\n", + " display(self.show_time_metric(queryid=queryid))\n", + " display(HTML(\" operator and rowcount \",))\n", + " display(self.get_metric_input_rowcnt(queryid=queryid))\n", + " display(self.get_metric_output_rowcnt(queryid=queryid))\n", + " \n", + " def get_app_info(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " display(HTML(f\" {self.appid} \",))\n", + " display(HTML(f\"http://{localhost}:18080/history/{self.appid}\"))\n", + " display(HTML(\" query time \",))\n", + " tmp=self.get_query_time(**kwargs)\n", + " display(HTML(\" operator count \",))\n", + " pdf=self.getOperatorCount()\n", + " display(pdf.style.apply(background_gradient,\n", + " cmap='OrRd',\n", + " m=pdf.min().min(),\n", + " M=pdf.max().max(),\n", + " low=0,\n", + " high=1))\n", + " \n", + " display(HTML(\" operator input row count \",))\n", + " pdf=self.get_metric_input_rowcnt(**kwargs)\n", + " if pdf is not None:\n", + " display(pdf.style.apply(background_gradient,\n", + " cmap='OrRd',\n", + " m=pdf.min().min(),\n", + " M=pdf.max().max(),\n", + " low=0,\n", + " high=1))\n", + " display(HTML(\" operator output row count \",))\n", + " pdf=self.get_metric_output_rowcnt(**kwargs)\n", + " if pdf is not None:\n", + " display(pdf.style.apply(background_gradient,\n", + " cmap='OrRd',\n", + " m=pdf.min().min(),\n", + " M=pdf.max().max(),\n", + " low=0,\n", + " high=1))\n", + " self.show_time_metric(**kwargs)\n", + " \n", + " def get_stage_stat(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " queryid=kwargs.get(\"queryid\",None)\n", + "\n", + " if queryid and type(queryid)==int:\n", + " queryid = [queryid,]\n", + " \n", + " df=self.df.where(F.col(\"real_queryid\").isin(queryid)).where(F.col(\"Event\")=='SparkListenerTaskEnd')\n", + " \n", + " inputsize = df.select(\"real_queryid\",\"Stage ID\",\"Executor ID\", \"Task ID\", F.explode(\"Accumulables\")) \\\n", + " .select(\"real_queryid\",\"Stage ID\",\"Executor ID\", \"Task ID\",\"col.*\") \\\n", + " .where(\"Name='input size in bytes' or Name='size of files read'\") \\\n", + " .groupBy(\"Stage ID\") \\\n", + " .agg(F.round(F.sum(\"Update\")/1024/1024/1024,2).alias(\"input read\"))\n", + " \n", + " return df.groupBy(\"Job ID\",\"Stage ID\").agg(\n", + " F.round(F.sum(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000/self.executor_instances/self.executor_cores*self.taskcpus,1).alias(\"elapsed time\"),\n", + " F.round(F.sum(F.col(\"Disk Bytes Spilled\"))/1024/1024/1024,1).alias(\"disk spilled\"),\n", + " F.round(F.sum(F.col(\"Memory Bytes Spilled\"))/1024/1024/1024,1).alias(\"mem spilled\"),\n", + " F.round(F.sum(F.col(\"Local Bytes Read\"))/1024/1024/1024,1).alias(\"local read\"),\n", + " F.round(F.sum(F.col(\"Remote Bytes Read\"))/1024/1024/1024,1).alias(\"remote read\"),\n", + " F.round(F.sum(F.col(\"Shuffle Bytes Written\"))/1024/1024/1024,1).alias(\"shuffle write\"),\n", + " F.round(F.sum(F.col(\"Executor Deserialize Time\"))/1000,1).alias(\"deseri time\"),\n", + " F.round(F.sum(F.col(\"Fetch Wait Time\"))/1000,1).alias(\"fetch wait time\"),\n", + " F.round(F.sum(F.col(\"Shuffle Write Time\"))/1000000000,1).alias(\"shuffle write time\"),\n", + " F.round(F.sum(F.col(\"Result Serialization Time\"))/1000,1).alias(\"seri time\"),\n", + " F.round(F.sum(F.col(\"Getting Result Time\"))/1000,1).alias(\"get result time\"),\n", + " F.round(F.sum(F.col(\"JVM GC Time\"))/1000,1).alias(\"gc time\"),\n", + " F.round(F.sum(F.col(\"Executor CPU Time\"))/1000000000,1).alias(\"exe cpu time\") \n", + " ).join(inputsize,on=[\"Stage ID\"],how=\"left\").orderBy(\"Stage ID\").toPandas()\n", + " \n", + " def get_metrics_by_node(self,node_name):\n", + " if self.df is None:\n", + " self.load_data()\n", + " \n", + " if type(node_name)==str:\n", + " node_name=[node_name]\n", + " metrics=self.queryplans.collect()\n", + " coalesce=[]\n", + " metricsid=[0]\n", + " def get_metric(root):\n", + " if root['nodeName'] in node_name:\n", + " metricsid[0]=metricsid[0]+1\n", + " for l in root[\"metrics\"]:\n", + " coalesce.append([l['accumulatorId'],l[\"metricType\"],l['name'],root[\"nodeName\"],metricsid[0]])\n", + " if root[\"children\"] is not None:\n", + " for c in root[\"children\"]:\n", + " get_metric(c)\n", + " for c in metrics:\n", + " get_metric(c)\n", + "\n", + " df=self.df.select(\"queryid\",\"real_queryid\",'Stage ID','Task ID','Job ID',F.explode(\"Accumulables\"))\n", + " df=df.select(\"*\",\"col.*\")\n", + " metricdf=spark.createDataFrame(coalesce)\n", + " metricdf=metricdf.withColumnRenamed(\"_1\",\"ID\").withColumnRenamed(\"_2\",\"Unit\").withColumnRenamed(\"_3\",\"metricName\").withColumnRenamed(\"_4\",\"nodeName\").withColumnRenamed(\"_5\",\"nodeID\")\n", + " df=df.join(metricdf,on=[\"ID\"],how=\"right\")\n", + " shufflemetric=set(l[2] for l in coalesce)\n", + " metricdfs=[df.where(F.col(\"Name\")==l).groupBy(\"real_queryid\",\"nodeID\",\"Stage ID\").agg(F.stddev(\"Update\").alias(l+\"_stddev\"),F.mean(\"Update\").alias(l+\"_mean\"),F.mean(\"Update\").alias(l) if l.startswith(\"avg\") else F.sum(\"Update\").alias(l)) for l in shufflemetric]\n", + " \n", + " stagetimedf=self.df.where(\"Event='SparkListenerTaskEnd'\").groupBy(\"Stage ID\").agg(F.count(\"*\").alias(\"partnum\"),F.round(F.sum(F.col(\"Finish Time\")-F.col(\"Launch Time\"))/1000,2).alias(\"ElapsedTime\"))\n", + " \n", + " nodemetric=reduce(lambda x,y: x.join(y, on=['nodeID',\"Stage ID\",\"real_queryid\"],how=\"full\"),metricdfs)\n", + " return nodemetric.join(stagetimedf,on=\"Stage ID\")\n", + " \n", + " \n", + " def get_coalesce_batch_row_cnt(self,**kwargs):\n", + " stagesum=self.get_metrics_by_node(\"CoalesceBatches\")\n", + " \n", + " pandas.options.display.float_format = '{:,}'.format\n", + " \n", + " stagesum=stagesum.withColumnRenamed(\"number of output rows\",\"rows\")\n", + " \n", + " coalescedf = stagesum.orderBy(\"real_queryid\",'Stage ID').where(\"rows>4000\").toPandas()\n", + " \n", + " coalescedf[\"row/input_batch\"] = coalescedf[\"rows\"]/coalescedf[\"input_batches\"]\n", + " coalescedf[\"row/out_batch\"] = coalescedf[\"rows\"]/coalescedf[\"output_batches\"]\n", + " coalescedf['stage']=coalescedf[\"real_queryid\"].astype(str)+\"_\"+coalescedf['Stage ID'].astype(str)\n", + " \n", + " ax=coalescedf.plot(y=[\"row/input_batch\",\"row/out_batch\"],figsize=(30,8),style=\"-*\")\n", + " coalescedf.plot(ax=ax,y=['rows'],secondary_y=['rows'],style=\"k_\")\n", + " self.print_real_queryid(ax,coalescedf)\n", + " \n", + " return coalescedf\n", + " \n", + " def print_real_queryid(self,ax,dataset):\n", + " ax.axes.get_xaxis().set_ticks([])\n", + "\n", + " ymin, ymax = ax.get_ybound()\n", + "\n", + " real_queryid=list(dataset['real_queryid'])\n", + " s=real_queryid[0]\n", + " lastx=0\n", + " for idx,v in enumerate(real_queryid):\n", + " if v!=s:\n", + " xmin = xmax = idx-1+0.5\n", + " l = mlines.Line2D([xmin,xmax], [ymin,ymax],color=\"green\")\n", + " ax.add_line(l)\n", + " ax.text(lastx+(xmin-lastx)/2-0.25,ymin-(ymax-ymin)/20,f\"{s}\",size=20)\n", + " s=v\n", + " lastx=xmin\n", + "\n", + " def get_shuffle_stat(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + " \n", + " shufflesize=kwargs.get(\"shuffle_size\",1000000)\n", + " queryid=kwargs.get(\"queryid\",None)\n", + " if queryid is not None:\n", + " if type(queryid) is str or type(queryid) is int:\n", + " queryid=[queryid,]\n", + "\n", + " exchangedf=self.get_metrics_by_node([\"ColumnarExchange\",\"ColumnarExchangeAdaptor\"])\n", + " exchangedf.cache()\n", + " exchangedf.count()\n", + " mapdf=exchangedf.where(\"`time to split` is not null\").select(\"nodeID\",F.col(\"Stage ID\").alias(\"map_stageid\"),\"real_queryid\",F.floor(F.col(\"time to split\")/F.col(\"time to split_mean\")).alias(\"map_partnum\"),\"time to compress\",\"time to split\",\"shuffle write time\",\"time to spill\",'shuffle records written','data size','shuffle bytes written','shuffle bytes written_mean','shuffle bytes written_stddev','shuffle bytes spilled','number of input rows','number of input batches')\n", + " reducerdf=exchangedf.where(\"`time to split` is null\").select(\"nodeID\",F.col(\"Stage ID\").alias(\"reducer_stageid\"),\"real_queryid\",'local blocks read','local bytes read',F.floor(F.col(\"records read\")/F.col(\"records read_mean\")).alias(\"reducer_partnum\"),(F.col('avg read batch num rows')/10).alias(\"avg read batch num rows\"),'remote bytes read','records read','remote blocks read',(F.col(\"number of output rows\")/F.col(\"records read\")).alias(\"avg rows per split recordbatch\"))\n", + " shuffledf=mapdf.join(reducerdf,on=[\"nodeID\",\"real_queryid\"],how=\"full\")\n", + " if queryid is not None:\n", + " shuffledf=shuffledf.where(F.col(\"real_queryid\").isin(queryid))\n", + " shuffle_pdf=shuffledf.where(\"`shuffle bytes written`>1000000\").orderBy(\"real_queryid\",\"map_stageid\",\"nodeID\").toPandas()\n", + " shuffle_pdf[\"shuffle bytes written\"]=shuffle_pdf[\"shuffle bytes written\"]/1000000000\n", + " shuffle_pdf[\"data size\"]=shuffle_pdf[\"data size\"]/1000000000\n", + " shuffle_pdf[\"shuffle bytes written_mean\"]=shuffle_pdf[\"shuffle bytes written_mean\"]/1000000\n", + " shuffle_pdf[\"shuffle bytes written_stddev\"]=shuffle_pdf[\"shuffle bytes written_stddev\"]/1000000\n", + " ax=shuffle_pdf.plot(y=[\"avg read batch num rows\",'avg rows per split recordbatch'],figsize=(30,8),style=\"-*\",title=\"average batch size after split\")\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " shuffle_pdf[\"split_ratio\"]=shuffle_pdf[\"records read\"]/shuffle_pdf['number of input batches']\n", + " ax=shuffle_pdf.plot(y=[\"split_ratio\",\"records read\"],secondary_y=[\"records read\"],figsize=(30,8),style=\"-*\",title=\"Split Ratio\")\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " shuffle_pdf[\"compress_ratio\"]=shuffle_pdf[\"data size\"]/shuffle_pdf['shuffle bytes written']\n", + " ax=shuffle_pdf.plot(y=[\"shuffle bytes written\",\"compress_ratio\"],secondary_y=[\"compress_ratio\"],figsize=(30,8),style=\"-*\",title=\"compress ratio\")\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " shufflewritepdf=shuffle_pdf\n", + " ax=shufflewritepdf.plot.bar(y=[\"shuffle write time\",\"time to spill\",\"time to compress\",\"time to split\"],stacked=True,figsize=(30,8),title=\"split time + shuffle write time vs. shuffle bytes written\")\n", + " ax=shufflewritepdf.plot(ax=ax,y=[\"shuffle bytes written\"],secondary_y=[\"shuffle bytes written\"],style=\"-*\")\n", + " self.print_real_queryid(ax,shufflewritepdf)\n", + " shuffle_pdf['avg input batch size']=shuffle_pdf[\"number of input rows\"]/shuffle_pdf[\"number of input batches\"]\n", + " ax=shuffle_pdf.plot(y=[\"avg input batch size\"],figsize=(30,8),style=\"b-*\",title=\"average input batch size\")\n", + " ax=shuffle_pdf.plot.bar(ax=ax,y=['number of input rows'],secondary_y=True)\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " \n", + " metrics=self.queryplans.collect()\n", + " coalesce=[]\n", + " metricsid=[0]\n", + " def get_metric(root):\n", + " if root['nodeName'] in [\"ColumnarExchange\",\"ColumnarExchangeAdaptor\"]:\n", + " metricsid[0]=metricsid[0]+1\n", + " for l in root[\"metrics\"]:\n", + " coalesce.append([l['accumulatorId'],l[\"metricType\"],l['name'],root[\"nodeName\"],metricsid[0],root[\"simpleString\"]])\n", + " if root[\"children\"] is not None:\n", + " for c in root[\"children\"]:\n", + " get_metric(c)\n", + " for c in metrics:\n", + " get_metric(c)\n", + "\n", + " tps={}\n", + " for r in coalesce:\n", + " rx=re.search(r\"\\[OUTPUT\\] List\\((.*)\\)\",r[5])\n", + " if rx:\n", + " if r[4] not in tps:\n", + " tps[r[4]]={}\n", + " fds=rx.group(1).split(\", \")\n", + " for f in fds:\n", + " if f.endswith(\"Type\"):\n", + " tp=re.search(r\":(.+Type)\",f).group(1)\n", + " if tp not in tps[r[4]]:\n", + " tps[r[4]][tp]=1\n", + " else:\n", + " tps[r[4]][tp]+=1\n", + " if len(tps)>0:\n", + " typedf=pandas.DataFrame(tps).T.reset_index()\n", + " typedf=typedf.fillna(0)\n", + " shuffle_pdf=pandas.merge(shuffle_pdf,typedf,left_on=\"nodeID\",right_on=\"index\")\n", + " shufflewritepdf=shuffle_pdf\n", + " ax=shufflewritepdf.plot.bar(y=[\"number of input rows\"],stacked=True,figsize=(30,8),title=\"rows vs. shuffle data type\")\n", + " ax=shufflewritepdf.plot(ax=ax,y=list(typedf.columns[1:]),secondary_y=list(typedf.columns[1:]),style=\"-o\")\n", + " self.print_real_queryid(ax,shufflewritepdf)\n", + " ax=shufflewritepdf.plot.bar(y=[\"time to split\"],stacked=True,figsize=(30,8),title=\"split time vs. shuffle data type\")\n", + " ax=shufflewritepdf.plot(ax=ax,y=list(typedf.columns[1:]),secondary_y=list(typedf.columns[1:]),style=\"-o\")\n", + " self.print_real_queryid(ax,shufflewritepdf)\n", + "\n", + " \n", + " \n", + " shufflewritepdf.plot(x=\"shuffle bytes written\",y=[\"shuffle write time\",\"time to split\"],figsize=(30,8),style=\"*\")\n", + " shufflewritepdf[\"avg shuffle batch size after split\"]=shufflewritepdf[\"shuffle bytes written\"]*1000000/shufflewritepdf['records read']\n", + " shufflewritepdf[\"avg raw batch size after split\"]=shufflewritepdf[\"data size\"]*1000000/shufflewritepdf['records read']\n", + " ax=shufflewritepdf.plot(y=[\"avg shuffle batch size after split\",\"avg raw batch size after split\",\"shuffle bytes written\"],secondary_y=[\"shuffle bytes written\"],figsize=(30,8),style=\"-*\",title=\"avg batch KB after split\")\n", + " self.print_real_queryid(ax,shufflewritepdf)\n", + " shufflewritepdf[\"avg batch# per splitted partition\"]=shufflewritepdf['records read']/(shufflewritepdf['local blocks read']+shufflewritepdf['remote blocks read'])\n", + " ax=shufflewritepdf.plot(y=[\"avg batch# per splitted partition\",'records read'],secondary_y=['records read'],figsize=(30,8),style=\"-*\",title=\"avg batch# per splitted partition\")\n", + " self.print_real_queryid(ax,shufflewritepdf)\n", + " fig, ax = plt.subplots(figsize=(30,8))\n", + " ax.set_title('shuffle wite bytes with stddev')\n", + " ax.errorbar(x=shuffle_pdf.index,y=shuffle_pdf['shuffle bytes written_mean'], yerr=shuffle_pdf['shuffle bytes written_stddev'], linestyle='None', marker='o')\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " shuffle_pdf['record batch per mapper per reducer']=shuffle_pdf['records read']/(shuffle_pdf[\"map_partnum\"]*shuffle_pdf['reducer_partnum'])\n", + " ax=shuffle_pdf.plot(y=[\"record batch per mapper per reducer\"],figsize=(30,8),style=\"b-*\",title=\"record batch per mapper per reducer\")\n", + " self.print_real_queryid(ax,shuffle_pdf)\n", + " \n", + " inputsize = self.df.select(\"Stage ID\",\"Executor ID\", \"Task ID\", F.explode(\"Accumulables\")) \\\n", + " .select(\"Stage ID\",\"Executor ID\", \"Task ID\",\"col.*\") \\\n", + " .where(\"Name='input size in bytes' or Name='size of files read'\") \\\n", + " .groupBy(\"Task ID\") \\\n", + " .agg((F.sum(\"Update\")).alias(\"input read\"))\n", + " stageinput=self.df.where(\"event='SparkListenerTaskEnd'\" )\\\n", + " .join(inputsize,on=[\"Task ID\"],how=\"left\")\\\n", + " .fillna(0) \\\n", + " .select(F.col('Host'), F.col(\"real_queryid\"),F.col('Stage ID'),F.col('Task ID'),\n", + " F.round((F.col('Finish Time')/1000-F.col('Launch Time')/1000),2).alias('elapsedtime'),\n", + " F.round((F.col('`input read`')+F.col('`Bytes Read`')+F.col('`Local Bytes Read`')+F.col('`Remote Bytes Read`'))/1024/1024,2).alias('input'))\n", + " baisstage=stageinput.groupBy(\"real_queryid\",\"Stage ID\").agg(F.mean(\"elapsedtime\").alias(\"elapsed\"),F.mean(\"input\").alias(\"input\"),\n", + " (F.stddev(\"elapsedtime\")).alias(\"elapsedtime_err\"),\n", + " (F.stddev(\"input\")).alias(\"input_err\"),\n", + " (F.max(\"elapsedtime\")-F.mean(\"elapsedtime\")).alias(\"elapsed_max\"),\n", + " (F.mean(\"elapsedtime\")-F.min(\"elapsedtime\")).alias(\"elapsed_min\"),\n", + " (F.max(\"input\")-F.mean(\"input\")).alias(\"input_max\"),\n", + " (F.mean(\"input\")-F.min(\"input\")).alias(\"input_min\")).orderBy(\"real_queryid\",\"Stage ID\")\n", + " dfx=baisstage.toPandas()\n", + " fig, ax = plt.subplots(figsize=(30,8))\n", + " ax.set_title('input size')\n", + " ax.errorbar(x=dfx.index,y=dfx['input'], yerr=dfx['input_err'], fmt='ok', ecolor='red', lw=3)\n", + " ax.errorbar(x=dfx.index,y=dfx['input'],yerr=[dfx['input_min'],dfx['input_max']],\n", + " fmt='.k', ecolor='gray', lw=1)\n", + " self.print_real_queryid(ax,dfx)\n", + " \n", + " fig, ax = plt.subplots(figsize=(30,8))\n", + " ax.set_title('stage time')\n", + "\n", + " ax.errorbar(x=dfx.index,y=dfx['elapsed'], yerr=dfx['elapsedtime_err'], fmt='ok', ecolor='red', lw=5)\n", + " ax.errorbar(x=dfx.index,y=dfx['elapsed'],yerr=[dfx['elapsed_min'],dfx['elapsed_max']],\n", + " fmt='.k', ecolor='gray', lw=1)\n", + "\n", + " self.print_real_queryid(ax,dfx)\n", + " return (shuffle_pdf,dfx)\n", + " \n", + " def get_stages_w_odd_partitions(appals,**kwargs):\n", + " if appals.df is None:\n", + " appals.load_data()\n", + " return appals.df.where(\"Event='SparkListenerTaskEnd'\")\\\n", + " .groupBy(\"Stage ID\",\"real_queryid\")\\\n", + " .agg((F.sum(F.col('Finish Time')-F.col('Launch Time'))/1000).alias(\"elapsed time\"),\n", + " F.count('*').alias('partitions'))\\\n", + " .where(F.col(\"partitions\")%(appals.executor_cores*appals.executor_instances/appals.taskcpus)!=0)\\\n", + " .orderBy(F.desc(\"elapsed time\")).toPandas()\n", + " \n", + " def get_scaned_column_v1(appals):\n", + " def get_scans(node):\n", + " if node['nodeName'].startswith(\"Scan arrow\"):\n", + " scans.append(node)\n", + " for c in node['children']:\n", + " get_scans(c)\n", + "\n", + " alltable=[]\n", + " for qid in range(1,23):\n", + " scans=[]\n", + " plans=appals.queryplans.where(\"real_queryid=\"+str(qid)).collect()\n", + " get_scans(plans[0])\n", + " for s in scans:\n", + " alltable.append([qid,\",\".join([l.split(\":\")[0] for l in re.split(r'[<>]',s['metadata']['ReadSchema'])[1].split(\",\")])])\n", + " return alltable\n", + " \n", + " def get_scaned_column_v2(appals):\n", + " def get_scans(node):\n", + " if node['nodeName'].startswith(\"ColumnarBatchScan\"):\n", + " scans.append(node)\n", + " for c in node['children']:\n", + " get_scans(c)\n", + "\n", + " alltable=[]\n", + " for qid in range(1,23):\n", + " scans=[]\n", + " plans=appals.queryplans.where(\"real_queryid=\"+str(qid)).collect()\n", + " get_scans(plans[0])\n", + " for s in scans:\n", + " alltable.append([qid,\",\".join([l.split(\"#\")[0] for l in re.split(r\"[\\[\\]]\",s['simpleString'])[1].split(\",\")])])\n", + " return alltable\n", + " \n", + " def compare_query(appals,queryid,appbaseals):\n", + " print(f\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~Query{queryid}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n", + " appals.show_critical_path_time_breakdown(queryid=22)\n", + " s1=appals.get_stage_stat(queryid=queryid)\n", + " s2=appbaseals.get_stage_stat(queryid=queryid)\n", + " ls=s1[['Stage ID','elapsed time']]\n", + " ls.columns=['l sid','l time']\n", + " rs=s2[['Stage ID','elapsed time']]\n", + " rs.columns=['r sid','r time']\n", + " js=ls.join(rs)\n", + " js['gap']=js['r time'] - js['l time']\n", + " js['gap']=js['gap'].round(2)\n", + " display(js)\n", + " display(s1)\n", + " display(s2)\n", + " stagesmap={}\n", + " for x in range(0,min(len(s1),len(s2))):\n", + " stagesmap[s1['Stage ID'][x]]=s2['Stage ID'][x]\n", + " totaltime=sum(s1['elapsed time'])\n", + " acctime=0\n", + " s1time=s1.sort_values(\"elapsed time\",ascending=False,ignore_index=True)\n", + " ldfx=appals.get_metric_output_rowcnt(queryid=queryid)\n", + " rdfx=appbaseals.get_metric_output_rowcnt(queryid=queryid)\n", + "\n", + " for x in range(0,len(s1time)):\n", + " sid1=int(s1time['Stage ID'][x])\n", + " sid2=int(stagesmap[sid1])\n", + " print(f\"============================================================\")\n", + " display(ldfx[ldfx['Stage ID']==sid1])\n", + " display(rdfx[ldfx['Stage ID']==sid2])\n", + " print(f\" Gazelle Query {queryid} Stage {sid1}\")\n", + " xf=appals.get_query_plan(stageid=sid1,show_simple_string=True)\n", + " print(f\" Photon Query {queryid} Stage {sid2}\")\n", + " xf=appbaseals.get_query_plan(stageid=sid2,show_simple_string=True)\n", + " acctime+=s1time['elapsed time'][x]\n", + " if acctime/totaltime>=0.9:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "notlist=['resource.executor.cores',\n", + " 'spark.app.id',\n", + " 'spark.app.initial.file.urls',\n", + " 'spark.app.name',\n", + " 'spark.app.startTime',\n", + " 'spark.driver.port',\n", + " 'spark.job.description',\n", + " 'spark.jobGroup.id',\n", + " 'spark.org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.param.PROXY_HOSTS',\n", + " 'spark.org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.param.PROXY_URI_BASES',\n", + " 'spark.rdd.scope',\n", + " 'spark.sql.execution.id',\n", + " '__fetch_continuous_blocks_in_batch_enabled',\n", + " 'spark.driver.appUIAddress'\n", + " 'spark.driver.appUIAddress',\n", + " 'spark.driver.host',\n", + " 'spark.driver.appUIAddress',\n", + " 'spark.driver.extraClassPath',\n", + " 'spark.eventLog.dir',\n", + " 'spark.executorEnv.CC',\n", + " 'spark.executorEnv.LD_LIBRARY_PATH',\n", + " 'spark.executorEnv.LD_PRELOAD',\n", + " 'spark.executorEnv.LIBARROW_DIR',\n", + " 'spark.files',\n", + " 'spark.history.fs.logDirectory',\n", + " 'spark.sql.warehouse.dir',\n", + " 'spark.yarn.appMasterEnv.LD_PRELOAD',\n", + " 'spark.yarn.dist.files'\n", + "]\n", + "def comp_spark_conf(app0,app1): \n", + " pdf_sparkconf_0=app0.get_spark_config()\n", + " pdf_sparkconf_1=app1.get_spark_config()\n", + " pdfc=pdf_sparkconf_0.join(pdf_sparkconf_1,lsuffix=app0.appid[-8:],rsuffix=app1.appid[-8:])\n", + " pdfc[\"0\"+app0.appid[-8:]]=pdfc[\"0\"+app0.appid[-8:]].str.lower()\n", + " pdfc[\"0\"+app1.appid[-8:]]=pdfc[\"0\"+app1.appid[-8:]].str.lower()\n", + " \n", + " pdfc['comp']=(pdfc[\"0\"+app0.appid[-8:]]==pdfc[\"0\"+app1.appid[-8:]])\n", + " return pdfc.loc[(pdfc['comp']==False) & (~pdfc.index.isin(notlist))]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Node log analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "@pandas_udf(\"host string, id string,taskid int, time double\", PandasUDFType.GROUPED_MAP)\n", + "def collect_udf_time(pdf):\n", + " proxy_handler = request.ProxyHandler({})\n", + " opener = request.build_opener(proxy_handler)\n", + "\n", + " rst=[]\n", + " for idx,l in pdf.iterrows():\n", + " ip=\"10.1.2.19\"+l['Host'][-1:]\n", + " execid=\"{:06d}\".format(int(l['Executor ID'])+1)\n", + " appid=l['appid']\n", + " url = f'http://{ip}:8042/node/containerlogs/container_{appid}_01_{execid}/sparkuser/stderr/?start=0'\n", + " # open the website with the opener\n", + " req = opener.open(url)\n", + " data = req.read().decode('utf8')\n", + " cnt=data.split(\"\\n\")\n", + " cnt_udf=[l.split(\" \") for l in cnt if l.startswith('start UDF') or l.startswith('stop UDF')]\n", + " unf_pdf=pandas.DataFrame(cnt_udf)\n", + " srst=unf_pdf.loc[:,[0,4,6]]\n", + " srst.columns=['id','taskid','time']\n", + " srst['host']=l['Host']\n", + " srst['taskid']=srst['taskid'].astype(int)\n", + " srst['time']=srst['time'].apply(lambda f: float(re.search('\\d+\\.\\d+',f).group(0)))\n", + " rst.append(srst)\n", + " return pandas.concat(rst)\n", + "\n", + "\n", + "class App_Log_Analysis_Node_log(App_Log_Analysis):\n", + " def __init__(self, appid,jobids):\n", + " App_Log_Analysis.__init__(self, appid,jobids)\n", + " \n", + " def generate_trace_view_list(self,id=0, **kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " showcpu=kwargs['showcpu'] if 'showcpu' in kwargs else False\n", + " \n", + " appid=self.appid\n", + " events=self.df.toPandas()\n", + " coretrack={}\n", + " trace_events=[]\n", + " starttime=0\n", + " taskend=[]\n", + " trace={\"traceEvents\":[]}\n", + " exec_hosts={}\n", + " hostsdf=self.df.select(\"Host\").distinct().orderBy(\"Host\")\n", + " hostid=100000\n", + " ended_event=[]\n", + "\n", + " for i,l in hostsdf.toPandas().iterrows():\n", + " exec_hosts[l['Host']]=hostid\n", + " hostid=hostid+100000\n", + "\n", + " tskmap={}\n", + " for idx,l in events.iterrows():\n", + " if l['Event']=='SparkListenerTaskStart':\n", + " hostid=exec_hosts[l['Host']]\n", + "\n", + " tsk=l['Task ID']\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " stime=l['Launch Time']\n", + " #the task's starttime and finishtime is the same, ignore it.\n", + " if tsk in ended_event:\n", + " continue\n", + " if not pid in coretrack:\n", + " tids={}\n", + " trace_events.append({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"{:s}.{:s}\".format(l['Host'],l['Executor ID'])}\n", + " })\n", + "\n", + " else:\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==-1:\n", + " tids[t]=[tsk,stime]\n", + " break\n", + " else:\n", + " t=len(tids)\n", + " tids[t]=[tsk,stime]\n", + " #print(\"task {:d} tid is {:s}.{:d}\".format(tsk,pid,t))\n", + " coretrack[pid]=tids\n", + "\n", + " if l['Event']=='SparkListenerTaskEnd':\n", + " sevt={}\n", + " eevt={}\n", + " hostid=exec_hosts[l['Host']]\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " tsk=l['Task ID']\n", + " fintime=l['Finish Time']\n", + "\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==tsk:\n", + " tids[t]=[-1,-1]\n", + " break\n", + " else:\n", + " ended_event.append(tsk)\n", + " continue\n", + " for ps in reversed([key for key in tids.keys()]) :\n", + " if tids[ps][1]-fintime<0 and tids[ps][1]-fintime>=-2:\n", + " fintime=tids[ps][1]\n", + " tids[t]=tids[ps]\n", + " tids[ps]=[-1,-1]\n", + " break\n", + " if starttime==0:\n", + " starttime=l['Launch Time']\n", + "\n", + " sstime=l['Launch Time']-starttime\n", + "\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':sstime,\n", + " 'dur':fintime-l['Launch Time'],\n", + " 'pid':pid,\n", + " \"ph\":'X',\n", + " 'name':\"stg{:d}\".format(l['Stage ID']),\n", + " 'args':{\"job id\": l['job id'],\n", + " \"stage id\": l['Stage ID'],\n", + " \"tskid\":tsk,\n", + " \"input\":builtins.round(l[\"Bytes Read\"]/1024/1024,2),\n", + " \"spill\":builtins.round(l[\"Memory Bytes Spilled\"]/1024/1024,2),\n", + " \"Shuffle Read Metrics\": \"\",\n", + " \"|---Local Read\": builtins.round(l[\"Local Bytes Read\"]/1024/1024,2),\n", + " \"|---Remote Read\":builtins.round(l[\"Remote Bytes Read\"]/1024/1024,2),\n", + " \"Shuffle Write Metrics\": \"\",\n", + " \"|---Write\":builtins.round(l['Shuffle Bytes Written']/1024/1024,2)\n", + " }\n", + " })\n", + " tskmap[tsk]={'pid':pid,'tid':pid+int(t)}\n", + "\n", + " self.starttime=starttime\n", + " self.tskmap=tskmap\n", + "\n", + " hostdf=self.df.select('Host','Executor ID',F.lit(appid[len('application_'):]).alias('appid')).distinct().orderBy('Host')\n", + " rst=hostdf.groupBy('Host').apply(collect_udf_time)\n", + " rst.cache()\n", + " start_df=rst.where(\"id='start'\").select(F.col('taskid').alias('start_taskid'),F.col('time').alias(\"starttime\"))\n", + " stop_df=rst.where(\"id='stop'\").select('taskid',F.col('time').alias(\"stop_time\"))\n", + " df=start_df.join(stop_df, on=[start_df.start_taskid==stop_df.taskid,stop_df['stop_time']>=start_df['starttime']],how='left').groupBy('taskid','starttime').agg(F.min('stop_time').alias('stop_time'))\n", + " pdf=df.toPandas() \n", + " for idx,l in pdf.iterrows():\n", + " trace_events.append({\n", + " 'tid':self.tskmap[l['taskid']]['tid'],\n", + " 'ts':l['starttime']*1000-self.starttime,\n", + " 'dur':(l['stop_time']-l['starttime'])*1000, \n", + " 'pid':self.tskmap[l['taskid']]['pid'],\n", + " 'ph':'X',\n", + " 'name':'udf'})\n", + " \n", + " return [json.dumps(l) for l in trace_events]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "class App_Log_Analysis_Node_log(App_Log_Analysis):\n", + " def __init__(self, appid,jobids):\n", + " App_Log_Analysis.__init__(self, appid,jobids)\n", + " \n", + " def generate_trace_view_list(self,id=0, **kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " showcpu=kwargs['showcpu'] if 'showcpu' in kwargs else False\n", + " \n", + " appid=self.appid\n", + " events=self.df.toPandas()\n", + " coretrack={}\n", + " trace_events=[]\n", + " starttime=0\n", + " taskend=[]\n", + " trace={\"traceEvents\":[]}\n", + " exec_hosts={}\n", + " hostsdf=self.df.select(\"Host\").distinct().orderBy(\"Host\")\n", + " hostid=100000\n", + " ended_event=[]\n", + "\n", + " for i,l in hostsdf.toPandas().iterrows():\n", + " exec_hosts[l['Host']]=hostid\n", + " hostid=hostid+100000\n", + "\n", + " tskmap={}\n", + " for idx,l in events.iterrows():\n", + " if l['Event']=='SparkListenerTaskStart':\n", + " hostid=exec_hosts[l['Host']]\n", + "\n", + " tsk=l['Task ID']\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " stime=l['Launch Time']\n", + " #the task's starttime and finishtime is the same, ignore it.\n", + " if tsk in ended_event:\n", + " continue\n", + " if not pid in coretrack:\n", + " tids={}\n", + " trace_events.append({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"{:s}.{:s}\".format(l['Host'],l['Executor ID'])}\n", + " })\n", + "\n", + " else:\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==-1:\n", + " tids[t]=[tsk,stime]\n", + " break\n", + " else:\n", + " t=len(tids)\n", + " tids[t]=[tsk,stime]\n", + " #print(\"task {:d} tid is {:s}.{:d}\".format(tsk,pid,t))\n", + " coretrack[pid]=tids\n", + "\n", + " if l['Event']=='SparkListenerTaskEnd':\n", + " sevt={}\n", + " eevt={}\n", + " hostid=exec_hosts[l['Host']]\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " tsk=l['Task ID']\n", + " fintime=l['Finish Time']\n", + "\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==tsk:\n", + " tids[t]=[-1,-1]\n", + " break\n", + " else:\n", + " ended_event.append(tsk)\n", + " continue\n", + " for ps in reversed([key for key in tids.keys()]) :\n", + " if tids[ps][1]-fintime<0 and tids[ps][1]-fintime>=-2:\n", + " fintime=tids[ps][1]\n", + " tids[t]=tids[ps]\n", + " tids[ps]=[-1,-1]\n", + " break\n", + " if starttime==0:\n", + " starttime=l['Launch Time']\n", + "\n", + " sstime=l['Launch Time']-starttime\n", + "\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':sstime,\n", + " 'dur':fintime-l['Launch Time'],\n", + " 'pid':pid,\n", + " \"ph\":'X',\n", + " 'name':\"stg{:d}\".format(l['Stage ID']),\n", + " 'args':{\"job id\": l['job id'],\n", + " \"stage id\": l['Stage ID'],\n", + " \"tskid\":tsk,\n", + " \"input\":builtins.round(l[\"Bytes Read\"]/1024/1024,2),\n", + " \"spill\":builtins.round(l[\"Memory Bytes Spilled\"]/1024/1024,2),\n", + " \"Shuffle Read Metrics\": \"\",\n", + " \"|---Local Read\": builtins.round(l[\"Local Bytes Read\"]/1024/1024,2),\n", + " \"|---Remote Read\":builtins.round(l[\"Remote Bytes Read\"]/1024/1024,2),\n", + " \"Shuffle Write Metrics\": \"\",\n", + " \"|---Write\":builtins.round(l['Shuffle Bytes Written']/1024/1024,2)\n", + " }\n", + " })\n", + " tskmap[tsk]={'pid':pid,'tid':pid+int(t)}\n", + "\n", + " self.starttime=starttime\n", + " self.tskmap=tskmap\n", + "\n", + " hostdf=self.df.select('Host','Executor ID',F.lit(appid[len('application_'):]).alias('appid')).distinct().orderBy('Host')\n", + " rst=hostdf.groupBy('Host').apply(collect_udf_time)\n", + " rst.cache()\n", + " start_df=rst.where(\"id='start'\").select(F.col('taskid').alias('start_taskid'),F.col('time').alias(\"starttime\"))\n", + " stop_df=rst.where(\"id='stop'\").select('taskid',F.col('time').alias(\"stop_time\"))\n", + " df=start_df.join(stop_df, on=[start_df.start_taskid==stop_df.taskid,stop_df['stop_time']>=start_df['starttime']],how='left').groupBy('taskid','starttime').agg(F.min('stop_time').alias('stop_time'))\n", + " pdf=df.toPandas() \n", + " for idx,l in pdf.iterrows():\n", + " trace_events.append({\n", + " 'tid':self.tskmap[l['taskid']]['tid'],\n", + " 'ts':l['starttime']*1000-self.starttime,\n", + " 'dur':(l['stop_time']-l['starttime'])*1000, \n", + " 'pid':self.tskmap[l['taskid']]['pid'],\n", + " 'ph':'X',\n", + " 'name':'udf'})\n", + " \n", + " return [json.dumps(l) for l in trace_events]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "class App_Log_Analysis_Node_Log_Uni(App_Log_Analysis):\n", + " def __init__(self, file,jobids):\n", + " App_Log_Analysis.__init__(self, file,jobids)\n", + " \n", + " def generate_trace_view_list(self,id=0, **kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " showcpu=False\n", + " \n", + " shownodes=kwargs.get(\"shownodes\",None)\n", + "\n", + " showdf=self.df #self.df.where(F.col(\"Host\").isin(shownodes)) if shownodes else self.df\n", + "\n", + " events=showdf.drop(\"Accumulables\",\"Stage IDs\").orderBy(\"Launch Time\",\"Finish Time\").toPandas()\n", + " coretrack={}\n", + " trace_events=[]\n", + " starttime=0\n", + " taskend=[]\n", + " trace={\"traceEvents\":[]}\n", + " exec_hosts={}\n", + " hostsdf=showdf.select(\"Host\").distinct().orderBy(\"Host\")\n", + " hostid=100000\n", + " ended_event=[]\n", + "\n", + " applog=os.path.splitext(self.file)[0]+\".stdout\"\n", + " logdfs=[]\n", + " if fs.exists(applog):\n", + " logdata=sc.textFile(os.path.splitext(self.file)[0]+\".stdout\",84)\n", + " logdf=logdata.mapPartitions(splits).toDF()\n", + " logdfs.append(logdf)\n", + "\n", + " p=os.path.split(self.file)\n", + " for c in shownodes:\n", + " f=p[0]+\"/\"+c+\"/xgbtck.txt\"\n", + " if fs.exists(f):\n", + " logdata=sc.textFile(f,84)\n", + " logdf=logdata.mapPartitions(splits).toDF()\n", + " logdfs.append(logdf)\n", + " logdf=reduce(lambda l,r: l.concat(r),logdfs)\n", + " logdf=logdf.cache()\n", + " logdf.count()\n", + "\n", + " firstrow=logdf.limit(1).collect()\n", + "\n", + " for c in logdf.columns:\n", + " if firstrow[0][c]!=\"xgbtck\":\n", + " logdf=logdf.drop(c)\n", + " else:\n", + " break\n", + "\n", + " usefulc=[\"xgbtck\",\"event\",\"ts\",\"elapsed\",\"threadid\",\"taskid\"]\n", + " for i in range(0,len(usefulc)):\n", + " logdf=logdf.withColumnRenamed(logdf.columns[i],usefulc[i])\n", + "\n", + " logdf=logdf.where(F.col(\"event\").isin(['load_library','data_load','data_convert']))\n", + " \n", + " task_thread=logdf.where(\"event='data_convert'\").select(F.col(\"taskid\").astype(IntegerType()),F.col(\"threadid\").astype(IntegerType())).distinct().toPandas().set_index('taskid').to_dict('index')\n", + " #task_thread={}\n", + "\n", + " for i,l in hostsdf.toPandas().iterrows():\n", + " exec_hosts[l['Host']]=hostid\n", + " hostid=hostid+100000\n", + "\n", + " tskmap={}\n", + " for idx,l in events.iterrows():\n", + " if l['Event']=='SparkListenerTaskStart':\n", + " hostid=exec_hosts[l['Host']]\n", + "\n", + " tsk=l['Task ID']\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " stime=l['Launch Time']\n", + " #the task's starttime and finishtime is the same, ignore it.\n", + " if tsk in ended_event:\n", + " continue\n", + " if not pid in coretrack:\n", + " tids={}\n", + " trace_events.append({\n", + " \"name\": \"process_name\",\n", + " \"ph\": \"M\",\n", + " \"pid\":pid,\n", + " \"tid\":0,\n", + " \"args\":{\"name\":\"{:s}.{:s}\".format(l['Host'],l['Executor ID'])}\n", + " })\n", + "\n", + " else:\n", + " tids=coretrack[pid]\n", + "\n", + " tidarr=[tsk,stime]\n", + "\n", + " for t in tids.keys():\n", + " if tids[t][0]==-1:\n", + " tids[t]=tidarr\n", + " break\n", + " else:\n", + " t=len(tids)\n", + " tids[t]=tidarr\n", + " #print(\"task {:d} tid is {:s}.{:d}\".format(tsk,pid,t))\n", + " coretrack[pid]=tids\n", + "\n", + " if l['Event']=='SparkListenerTaskEnd':\n", + " sevt={}\n", + " eevt={}\n", + " hostid=exec_hosts[l['Host']]\n", + " pid=int(l['Executor ID'])*100+hostid\n", + " tsk=l['Task ID']\n", + " fintime=l['Finish Time']\n", + "\n", + " tids=coretrack[pid]\n", + " for t in tids.keys():\n", + " if tids[t][0]==tsk:\n", + " tids[t]=[-1,-1]\n", + " break\n", + " else:\n", + " ended_event.append(tsk)\n", + " continue\n", + " for ps in reversed([key for key in tids.keys()]):\n", + " if (tids[ps][1]-fintime<0 and tids[ps][1]-fintime>=-2) or \\\n", + " (tsk in task_thread and tids[ps][0] in task_thread and task_thread[tsk][\"threadid\"]==task_thread[tids[ps][0]][\"threadid\"]):\n", + " fintime=tids[ps][1]\n", + " tids[t]=tids[ps]\n", + " tids[ps]=[-1,-1]\n", + " break\n", + " if starttime==0:\n", + " starttime=l['Launch Time']\n", + "\n", + " sstime=l['Launch Time']-starttime\n", + "\n", + " trace_events.append({\n", + " 'tid':pid+int(t),\n", + " 'ts':sstime,\n", + " 'dur':fintime-l['Launch Time'],\n", + " 'pid':pid,\n", + " \"ph\":'X',\n", + " 'name':\"stg{:d}\".format(l['Stage ID']),\n", + " 'args':{\"job id\": l['Job ID'],\n", + " \"stage id\": l['Stage ID'],\n", + " \"tskid\":tsk,\n", + " \"input\":builtins.round(l[\"Bytes Read\"]/1024/1024,2),\n", + " \"spill\":builtins.round(l[\"Memory Bytes Spilled\"]/1024/1024,2),\n", + " \"Shuffle Read Metrics\": \"\",\n", + " \"|---Local Read\": builtins.round(l[\"Local Bytes Read\"]/1024/1024,2),\n", + " \"|---Remote Read\":builtins.round(l[\"Remote Bytes Read\"]/1024/1024,2),\n", + " \"Shuffle Write Metrics\": \"\",\n", + " \"|---Write\":builtins.round(l['Shuffle Bytes Written']/1024/1024,2)\n", + " }\n", + " })\n", + " tskmap[tsk]={'pid':pid,'tid':pid+int(t)}\n", + "\n", + " self.starttime=starttime\n", + " self.tskmap=tskmap\n", + "\n", + " tskmapdf = spark.createDataFrame(pandas.DataFrame(self.tskmap).T.reset_index())\n", + " logdf=logdf.withColumn(\"ts\",F.col(\"ts\").astype(LongType()))\n", + " logdf=logdf.withColumn(\"taskid\",F.col(\"taskid\").astype(LongType()))\n", + " logdf=logdf.withColumnRenamed(\"event\",'type')\n", + " mgd=logdf.join(tskmapdf,on=(F.col('taskid')==F.col(\"index\")),how=\"right\")\n", + " rstdf=mgd.select(F.col('tid').alias(\"tid\"),\n", + " (F.round(F.col('ts')-F.lit(self.starttime),3)).alias(\"ts\"),\n", + " F.round(F.col(\"elapsed\"),3).alias(\"dur\"),\n", + " F.lit(F.col('pid')).alias(\"pid\"),\n", + " F.lit(\"X\").alias(\"ph\"),\n", + " F.col(\"type\").alias(\"name\")\n", + " ).where(F.col(\"ts\").isNotNull()).orderBy('ts')\n", + "\n", + " # logdf=logdf.withColumn(\"type\",F.substring_index(\"event\",\"_\",1))\n", + " # window= Window.partitionBy(logdf['taskid']).orderBy(\"type\",\"ts\")\n", + " # logdfx=logdf.select(\"taskid\",\"event\",\"type\",\"ts\",F.lag('ts',1).over(window).alias(\"last\"),F.lag('rownum',1).over(window).alias(\"rownum\")).orderBy(\"taskid\",\"ts\").where(\"event like '%end'\")\n", + "\n", + "\n", + " output=[json.dumps(l) for l in trace_events]\n", + " output.extend(rstdf.toJSON().collect())\n", + "\n", + " return output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# perf trace analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "def split_trace(x):\n", + " fi=[]\n", + " for l in x:\n", + " rst1=re.search(r\"^(\\d+\\.\\d+).*sched:(sched_switch):.+:(\\d+) \\[\\d+\\] (\\S+) ==> .+:(\\d+) \"\"\",l)\n", + " rst2=re.search(r\"(\\d+\\.\\d+) \\( +(\\d+\\.\\d+) +ms\\):[^/]+/(\\d+) (recvfrom|sendto)\\(fd: \\d+<\\S+:\\[\\d+\\]>, \\S+: 0x[a-f0-9]+, \\S+: (\\d+)\",l)\n", + " rst3=re.search(r\"(\\d+\\.\\d+) \\( +\\): [^/]+/(\\d+) (recvfrom|sendto)\\(fd: \\d+<\\S+:\\[\\d+\\]>, \\S+: 0x[a-f0-9]+, \\S+: (\\d+)\",l)\n", + " rst4=re.search(r\"(\\d+\\.\\d+) \\( *(\\d+\\.\\d+) ms\\): [^/]+/(\\d+) ... \\[continued\\]: (sendto|recvfrom|poll)\",l)\n", + " rst5=re.search(r\"(\\d+\\.\\d+) \\( +(\\d+\\.\\d+) +ms\\): [^/]+/(\\d+) (poll)\",l)\n", + " rst6=re.search(r\"(\\d+\\.\\d+) \\( +\\): [^/]+/(\\d+) (poll)\",l)\n", + "\n", + " rstx=re.search(r\"(\\d+\\.\\d+)*sched:(sched_switch):.*prev_pid=(\\d+).*prev_state=(\\S+) ==> .*next_pid=(\\d+)\"\"\",l)\n", + " if not rst1:\n", + " rst1=rstx\n", + " \n", + " if rst1:\n", + " fi.append((rst1.group(1),rst1.group(2),rst1.group(3),rst1.group(4),rst1.group(5))) #time, switch, src, status, dst\n", + " elif rst2:\n", + " fi.append((rst2.group(1),rst2.group(4),rst2.group(3),rst2.group(2),rst2.group(5))) #time, sed/rcv, pid, ms, size \n", + " elif rst3:\n", + " fi.append((rst3.group(1),rst3.group(3),rst3.group(2),0, rst3.group(4))) #time, sed/rcv, pid, 0, size\n", + " elif rst4:\n", + " fi.append((rst4.group(1),rst4.group(4),rst4.group(3),rst4.group(2), 0)) #time, sed/rcv, pid, ms, 0\n", + " elif rst5:\n", + " fi.append((rst5.group(1),rst5.group(4),rst5.group(3),rst5.group(2), 0)) #time, sed/rcv, pid, ms, 0\n", + " elif rst6:\n", + " fi.append((rst6.group(1),rst6.group(3),rst6.group(2),0, 0)) #time, sed/rcv, pid, ms0, 0\n", + " elif not re.match(r\"^ +?\",l):\n", + " fi.append((0,l,'','',''))\n", + " return iter(fi)\n", + " \n", + "\n", + "\n", + "class Perf_trace_analysis(Analysis):\n", + " def __init__(self,sar_file):\n", + " Analysis.__init__(self,sar_file)\n", + " self.starttime=None\n", + " \n", + " def load_data(self):\n", + " sardata=sc.textFile(self.file)\n", + " sardf=sardata.mapPartitions(split_trace).toDF()\n", + " display(sardf.where(\"_1=0\").limit(5).collect())\n", + " sardf=sardf.withColumn(\"_1\",F.col(\"_1\").astype(DoubleType()))\n", + " sardf=sardf.where(\"_1>0\")\n", + " starttime=sardf.agg(F.min(\"_1\")).collect()[0][0]\n", + " if self.starttime is None:\n", + " self.starttime=(float(starttime))\n", + " else:\n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/uptime.txt\"):\n", + " with fs.open(paths[0]+\"/uptime.txt\") as f:\n", + " strf=f.read().decode('ascii')\n", + " print(\"input starttime:\",self.starttime,\"uptime:\",float(strf)*1000,\"record starttime:\",starttime)\n", + " self.starttime=self.starttime-float(strf)*1000\n", + " else:\n", + " print(\"uptime.txt isn't found, wrong\")\n", + " return\n", + " \n", + " self.df=sardf\n", + " return sardf\n", + "\n", + " def generate_sched_view_list(self,id=0,**kwargs):\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " starttime=starttime+kwargs.get(\"sched_time_offset\",0)\n", + " print(\"offset time\",starttime)\n", + " \n", + " swdf=sardf.where(\"_2='sched_switch'\")\n", + " \n", + " cputhreshold=kwargs.get(\"cpu_threshold\",0.1)\n", + " sched_cnt = kwargs.get(\"sched_cnt\",10)\n", + " \n", + " pidstat_tids=kwargs.get(\"pidstat_tids\",None)\n", + " pidstat_tids_txt=kwargs.get(\"pidstat_tids_txt\",\"sched_threads.txt\")\n", + " \n", + " if pidstat_tids:\n", + " if type(pidstat_tids) is list:\n", + " tids=pidstat_tids\n", + " else:\n", + " tids=[re.split(r'\\s+',t) for t in pidstat_tids.split(\"\\n\")]\n", + " tids=[t[3] for t in tids if len(t)>4]\n", + " else:\n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/\"+pidstat_tids_txt):\n", + " with fs.open(paths[0]+\"/\"+pidstat_tids_txt) as f:\n", + " tids=[l.strip() for l in f.read().decode('ascii').split(\"\\n\") if len(l)>0] \n", + " else:\n", + " print(\"Wrong, no pidstat_tids args and no sched_threads.txt file\")\n", + " return []\n", + " tidcnt=swdf.where(F.col(\"_5\").isin(tids)).groupBy(\"_5\").count()\n", + " tidm10=tidcnt.where(\"count>{:d}\".format(sched_cnt)).select(\"_5\").collect()\n", + " rtids=[t[0] for t in tidm10]\n", + " rtiddf=swdf.where(F.col(\"_5\").isin(rtids) | F.col(\"_3\").isin(rtids))\n", + " rtiddf=rtiddf.withColumn(\"_1\",F.col(\"_1\").astype(DoubleType())-starttime)\n", + " rtiddf=rtiddf.withColumn(\"_3\",F.col(\"_3\").astype(IntegerType()))\n", + " rtiddf=rtiddf.withColumn(\"_5\",F.col(\"_5\").astype(IntegerType()))\n", + " rtiddf=rtiddf.withColumn(\"_1\",F.round(F.col(\"_1\"),3))\n", + " rtidcol=rtiddf.collect()\n", + " tidmap={}\n", + " tidtotal={}\n", + " for t in rtids:\n", + " tidmap[int(t)]=0\n", + " tidtotal[int(t)]=0\n", + " trace_events=[]\n", + " mintime=rtidcol[0][\"_1\"]\n", + " maxtime=0\n", + " for r in rtidcol:\n", + " if r[\"_3\"] in tidtotal:\n", + " tidtotal[r[\"_3\"]]=tidtotal[r[\"_3\"]]+r[\"_1\"]-tidmap[r[\"_3\"]]\n", + " tidmap[r[\"_3\"]]=r[\"_1\"]\n", + " maxtime=r[\"_1\"]\n", + " if r[\"_5\"] in tidmap:\n", + " tidmap[r[\"_5\"]]=r[\"_1\"]\n", + " for r in rtidcol:\n", + " if r[\"_3\"] in tidmap and tidtotal[r[\"_3\"]]/(maxtime-mintime)>cputhreshold:\n", + " trace_events.append({\n", + " 'tid':r[\"_3\"],\n", + " 'ts':tidmap[r[\"_3\"]],\n", + " 'pid':id,\n", + " 'ph':'X',\n", + " 'dur':round(r[\"_1\"]-tidmap[r[\"_3\"]],3),\n", + " 'name':r[\"_4\"]\n", + " })\n", + "\n", + " tidmap[r[\"_3\"]]=r[\"_1\"]\n", + " if r[\"_5\"] in tidmap:\n", + " tidmap[r[\"_5\"]]=r[\"_1\"]\n", + " return [json.dumps(l) for l in trace_events]\n", + "\n", + " def generate_nic_view_list(self,id=0,**kwargs):\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " starttime=starttime+kwargs.get(\"sched_time_offset\",0)\n", + " print(\"offset time\",starttime)\n", + " \n", + " nicdf=sardf.where(\"_2<>'sched_switch'\")\n", + " cntdf=nicdf.where(\"_2='continued'\")\n", + " cntdf=cntdf.select(\"_1\",\"_3\",\"_4\").withColumnRenamed(\"_4\",\"cnt_4\")\n", + " nicdf=nicdf.join(cntdf,on=[\"_1\",\"_3\"],how=\"leftouter\")\n", + " nicdf=nicdf.where(\"_2<>'continued'\")\n", + " nicdf=nicdf.select(F.col(\"_1\"),F.col(\"_2\"),F.col(\"_3\"),F.when(F.col(\"cnt_4\").isNull(), F.col(\"_4\")).otherwise(F.col(\"cnt_4\")).alias(\"_4\"),F.col(\"_5\"))\n", + " nicdf=nicdf.withColumn(\"_1\",F.col(\"_1\").astype(DoubleType())-starttime)\n", + " nicdf=nicdf.withColumn(\"_3\",F.col(\"_3\").astype(IntegerType()))\n", + " nicdf=nicdf.withColumn(\"_5\",F.col(\"_5\").astype(IntegerType()))\n", + " nicdf=nicdf.withColumn(\"_1\",F.col(\"_1\").astype(IntegerType()))\n", + " nicdf=nicdf.withColumn(\"_4\",F.col(\"_4\").astype(DoubleType()))\n", + " nicdf=nicdf.withColumn(\"_4\",F.col(\"_4\").astype(LongType()))\n", + " return nicdf.select(\n", + " F.col(\"_3\").alias('tid'),\n", + " (F.col(\"_1\")).alias('ts'),\n", + " F.lit(0).alias('pid'),\n", + " F.lit('X').alias('ph'),\n", + " F.col(\"_4\").alias('dur'),\n", + " F.col(\"_2\").alias('name'),\n", + " F.struct(\n", + " F.col(\"_5\").alias(\"size\")\n", + " ).alias('args')\n", + " ).toJSON().collect()\n", + " \n", + " def generate_trace_view_list(self,id=0,**kwargs):\n", + " trace_events=Analysis.generate_trace_view_list(self,id,**kwargs)\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " \n", + " events=self.generate_sched_view_list(id,**kwargs)\n", + " events.extend(self.generate_nic_view_list(id,**kwargs))\n", + " events.extend(trace_events)\n", + " \n", + "# events.extend(nicdf.where(\"_5>1000 and _2='sendto'\").select(\n", + "# F.lit(0).alias('tid'),\n", + "# F.col(\"_1\").alias('ts'),\n", + "# F.lit(0).alias('pid'),\n", + "# F.lit('i').alias('ph'),\n", + "# F.col(\"_2\").alias('name'),\n", + "# F.lit(\"g\").alias(\"s\")\n", + "# ).toJSON().collect())\n", + "\n", + "\n", + " return events\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sar analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "def splits(x):\n", + " fi=[]\n", + " for l in x:\n", + " li=re.split(r'\\s+',l)\n", + " for j in range(len(li),118):\n", + " li.append('')\n", + " fi.append(li)\n", + " return iter(fi)\n", + "\n", + "class Sar_analysis(Analysis):\n", + " def __init__(self,sar_file):\n", + " Analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " sardata=sc.textFile(self.file)\n", + " sardf=sardata.mapPartitions(splits).toDF()\n", + " sardf=sardf.where(\"_1<>'Average:'\")\n", + " \n", + " colstart=1;\n", + " ampm=sardf.where(\"_2='AM' or _2='PM'\").count()\n", + " if ampm==0:\n", + " for i in range(len(sardf.columns),1,-1):\n", + " sardf=sardf.withColumnRenamed(f'_{i}',f'_{i+1}')\n", + " self.timeformat='yyyy-MM-dd HH:mm:ss '\n", + " sardf=sardf.withColumn('_2',F.lit(''))\n", + " #print('no PM/AM')\n", + " colstart=1\n", + " else:\n", + " self.timeformat='yyyy-MM-dd hh:mm:ss a'\n", + " colstart=2\n", + " #print('with PM/AM')\n", + " \n", + " f=fs.open(self.file)\n", + " t=f.readline()\n", + " t=f.readline()\n", + " while len(t)==1:\n", + " t=f.readline()\n", + " cols=t.decode('ascii')\n", + " li=re.split(r'\\s+',cols)\n", + " ci=3;\n", + " for c in li[colstart:]:\n", + " sardf=sardf.withColumnRenamed(f\"_{ci}\",c)\n", + " ci=ci+1\n", + " \n", + " sardf=sardf.where(F.col(li[-2])!=li[-2]).where(F.col(\"_1\")!=F.lit(\"Linux\")) \n", + " \n", + " sardf.cache()\n", + " self.df=sardf\n", + " \n", + " self.sarversion=\"\"\n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/sarv.txt\"):\n", + " with fs.open(paths[0]+\"/sarv.txt\") as f:\n", + " allcnt = f.read().decode('ascii')\n", + " #print(allcnt)\n", + " self.sarversion=allcnt.split(\"\\n\")[0].split(\" \")[2]\n", + " \n", + " return sardf\n", + "\n", + " def col_df(self,cond,colname,args,slaver_id=0, thread_id=0):\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " cpudf=sardf.where(cond)\n", + " #cpudf.select(F.date_format(F.from_unixtime(F.lit(starttime/1000)), 'yyyy-MM-dd HH:mm:ss').alias('starttime'),'_1').show(1)\n", + "\n", + " cpudf=cpudf.withColumn('time',F.unix_timestamp(F.concat_ws(' ',F.date_format(F.from_unixtime(F.lit(starttime/1000)), 'yyyy-MM-dd'),F.col('_1'),F.col('_2')),self.timeformat))\n", + "\n", + " cols=cpudf.columns\n", + " \n", + " cpudf=cpudf.groupBy('time').agg(\n", + " F.sum(F.when(F.col(cols[1]).rlike('^\\d+(\\.\\d+)*$'),F.col(cols[1]).astype(FloatType())).otherwise(0)).alias(cols[1]),\n", + " F.sum(F.when(F.col(cols[2]).rlike('^\\d+(\\.\\d+)*$'),F.col(cols[2]).astype(FloatType())).otherwise(0)).alias(cols[2]),\n", + " *[F.sum(F.col(c)).alias(c) for c in cols[3:] if not c.startswith(\"_\") and c!=\"\" and c!=\"time\"]\n", + " )\n", + " \n", + " traces=cpudf.orderBy(F.col(\"time\")).select(\n", + " F.lit(thread_id).alias('tid'),\n", + " (F.expr(\"time*1000\")-F.lit(self.starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(slaver_id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.lit(colname).alias('name'),\n", + " args(cpudf).alias('args')\n", + " ).toJSON().collect()\n", + " return traces\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Analysis.generate_trace_view_list(self,id, **kwargs)\n", + " return trace_events\n", + "\n", + " def get_stat(self,**kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + " \n", + "class Sar_cpu_analysis(Sar_analysis):\n", + " def __init__(self,sar_file):\n", + " Sar_analysis.__init__(self,sar_file)\n", + " \n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Sar_analysis.generate_trace_view_list(self,id, **kwargs)\n", + " \n", + " self.df=self.df.withColumn(\"%iowait\",F.when(F.col(\"%iowait\")>100,F.lit(100)).otherwise(F.col(\"%iowait\")))\n", + " \n", + " trace_events.extend(self.col_df(\"CPU='all'\", \"all cpu%\", lambda l: F.struct(\n", + " F.floor(F.col('%user').astype(FloatType())).alias('user'),\n", + " F.floor(F.col('%system').astype(FloatType())).alias('system'),\n", + " F.floor(F.col('%iowait').astype(FloatType())).alias('iowait')\n", + " ), id, 0))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":0,\"args\":{\"sort_index \":0}}))\n", + " \n", + " return trace_events \n", + " def get_stat(sar_cpu,**kwargs):\n", + " Sar_analysis.get_stat(sar_cpu)\n", + " \n", + " cpuutil=sar_cpu.df.where(\"CPU='all'\").groupBy(\"_1\").agg(*[F.mean(F.col(l).astype(FloatType())).alias(l) for l in [\"%user\",\"%system\",\"%iowait\"]]).orderBy(\"_1\")\n", + " cnt=cpuutil.count()\n", + " user_morethan_90=cpuutil.where(\"`%user`>0.9\").count()\n", + " kernel_morethan_10=cpuutil.where(\"`%system`>0.1\").count()\n", + " iowait_morethan_10=cpuutil.where(\"`%iowait`>0.1\").count()\n", + " out=[['%user>90%',user_morethan_90/cnt],['%kernel>10%',kernel_morethan_10/cnt],[\"%iowait>10%\",iowait_morethan_10/cnt]]\n", + " avgutil=cpuutil.agg(*[F.mean(l).alias(l) for l in [\"%user\",\"%system\",\"%iowait\"]]).collect()\n", + " out.extend([[\"avg \" + l,avgutil[0][l]] for l in [\"%user\",\"%system\",\"%iowait\"]])\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " pdout.columns=[sar_cpu.file.split(\"/\")[-2]]\n", + " return pdout\n", + " \n", + "class Sar_mem_analysis(Sar_analysis):\n", + " def __init__(self,sar_file):\n", + " Sar_analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " Sar_analysis.load_data(self)\n", + " sarv=[int(l) for l in self.sarversion.split(\".\")]\n", + " if sarv[0]>=12 and sarv[1]>=2:\n", + " self.df=self.df.withColumn(\"kbrealused\",F.col(\"kbmemused\"))\n", + " else:\n", + " # sar 10.1.5, sar 11.6.1\n", + " self.df=self.df.withColumn(\"kbrealused\",F.col(\"kbmemused\")-F.col(\"kbcached\")-F.col(\"kbbuffers\"))\n", + " \n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Sar_analysis.generate_trace_view_list(self,id, **kwargs)\n", + " \n", + " \n", + " trace_events.extend(self.col_df(F.col('kbmemfree').rlike('^\\d+$'),\"mem % \", lambda l: F.struct(F.floor(l['kbcached']*l['%memused']/l['kbmemused']).alias('cached'), # kbcached / (kbmemfree+kbmemused)\n", + " F.floor(l['kbbuffers']*l['%memused']/l['kbmemused']).alias('buffered'),# kbbuffers / (kbmemfree+kbmemused)\n", + " F.floor(l['kbrealused']*l['%memused']/l['kbmemused']).alias('used')), # (%memused- kbcached-kbbuffers )/ (kbmemfree+kbmemused)\n", + " id,1))\n", + " #trace_events.extend(self.col_df(self.df._3.rlike('^\\d+$'),\"mem cmt % \", lambda l: F.struct(F.floor(l._8*F.lit(100)/(l._3+l._4)).alias('commit/phy'),\n", + " # F.floor(l._10-l._8*F.lit(100)/(l._3+l._4)).alias('commit/all')), id))\n", + " trace_events.extend(self.col_df(F.col('kbmemfree').rlike('^\\d+$'),\"pagecache % \", lambda l: F.struct(F.floor((l['kbcached']-l['kbdirty'])*l['%memused']/l['kbmemused']).alias('clean'), \n", + " F.floor(l['kbdirty']*l['%memused']/l['kbmemused']).alias('dirty')),\n", + " id,2))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":1,\"args\":{\"sort_index \":1}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":2,\"args\":{\"sort_index \":2}}))\n", + " return trace_events \n", + " def get_stat(sar_mem,**kwargs):\n", + " Sar_analysis.get_stat(sar_mem)\n", + " \n", + " memutil=sar_mem.df.where(F.col('kbmemfree').rlike('^\\d+$')).select(F.floor(F.col('kbcached').astype(FloatType())*F.lit(100)*F.col('%memused')/F.col('kbmemused')).alias('cached'), \n", + " F.floor(F.col('kbbuffers').astype(FloatType())*F.lit(100)*F.col('%memused')/F.col('kbmemused')).alias('buffered'),\n", + " F.floor(F.col('kbrealused').astype(FloatType())*F.lit(100)*F.col('%memused')/F.col('kbmemused')).alias('used'),\n", + " F.floor(F.col('kbdirty').astype(FloatType())*F.lit(100)*F.col('%memused')/F.col('kbmemused')).alias('dirty'))\n", + " memsum=memutil.summary().toPandas()\n", + " memsum=memsum.set_index(\"summary\")\n", + " out=[\n", + " [[l + ' mean',float(memsum[l][\"mean\"])],\n", + " [l + ' 75%',float(memsum[l][\"75%\"])],\n", + " [l + ' max',float(memsum[l][\"max\"])]] for l in [\"cached\",\"used\",\"dirty\"]]\n", + " out=[*out[0],*out[1]]\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " pdout.columns=[sar_mem.file.split(\"/\")[-2]]\n", + " return pdout\n", + " \n", + "class Sar_PageCache_analysis(Sar_analysis):\n", + " def __init__(self,sar_file):\n", + " Sar_analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " Sar_analysis.load_data(self)\n", + " \n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Sar_analysis.generate_trace_view_list(self,id, **kwargs)\n", + " \n", + " \n", + " trace_events.extend(self.col_df(F.col('pgpgin/s').rlike('^\\d'),\"page inout\", lambda l: F.struct(\n", + " F.floor(l['pgpgin/s']/1024).alias('in'),\n", + " F.floor(l['pgpgout/s']/1024).alias('out')),\n", + " id,11))\n", + " trace_events.extend(self.col_df(F.col('pgpgin/s').rlike('^\\d'),\"faults\", lambda l: F.struct(F.floor((l['majflt/s'])).alias('major'), \n", + " F.floor(l['fault/s']-l['majflt/s']).alias('minor')),\n", + " id,12))\n", + " trace_events.extend(self.col_df(F.col('pgpgin/s').rlike('^\\d'),\"page free\", lambda l: F.struct(F.floor((l['pgfree/s']*4/1024)).alias('free')),\n", + " id,13))\n", + " trace_events.extend(self.col_df(F.col('pgpgin/s').rlike('^\\d'),\"scan\", lambda l: F.struct(F.floor((l['pgscank/s'])*4/1024).alias('kernel'), \n", + " F.floor(l['pgscand/s']*4/1024).alias('app')),\n", + " id,14))\n", + " trace_events.extend(self.col_df(F.col('pgpgin/s').rlike('^\\d'),\"vmeff\", lambda l: F.struct(F.floor((l['%vmeff'])).alias('steal')),\n", + " id,15))\n", + " \n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":11,\"args\":{\"sort_index \":11}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":12,\"args\":{\"sort_index \":12}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":13,\"args\":{\"sort_index \":13}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":14,\"args\":{\"sort_index \":14}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":15,\"args\":{\"sort_index \":15}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":16,\"args\":{\"sort_index \":16}}))\n", + " return trace_events \n", + " def get_stat(sar_mem,**kwargs):\n", + " Sar_analysis.get_stat(sar_mem)\n", + " \n", + " memutil=sar_mem.df.where(F.col('pgpgin/s').rlike('^\\d')).select(F.floor(F.col('pgpgin/s').astype(FloatType())/1024).alias('pgin'), \n", + " F.floor(F.col('pgpgout/s').astype(FloatType())/1024).alias('pgout'),\n", + " F.floor(F.col('fault/s').astype(FloatType())-F.col('majflt/s').astype(FloatType())).alias('fault')\n", + " )\n", + " memsum=memutil.summary().toPandas()\n", + " memsum=memsum.set_index(\"summary\")\n", + " out=[\n", + " [[l + ' mean',float(memsum[l][\"mean\"])],\n", + " [l + ' 75%',float(memsum[l][\"75%\"])],\n", + " [l + ' max',float(memsum[l][\"max\"])]] for l in [\"pgin\",\"pgout\",\"fault\"]]\n", + " out=[*out[0],*out[1],*out[2]]\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " pdout.columns=[sar_mem.file.split(\"/\")[-2]]\n", + " return pdout\n", + " \n", + " \n", + "class Sar_disk_analysis(Sar_analysis):\n", + " def __init__(self,sar_file):\n", + " Sar_analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " Sar_analysis.load_data(self)\n", + " \n", + " self.df=self.df.withColumn(\"%util\",F.col(\"%util\").astype(IntegerType()))\n", + " used_disk=self.df.groupBy(\"DEV\").agg(F.max(F.col(\"%util\")).alias(\"max_util\"),F.mean(\"%util\").alias(\"avg_util\")).where(F.col(\"max_util\")>10).collect()\n", + " self.df=self.df.where(F.col(\"DEV\").isin([l['DEV'] for l in used_disk]))\n", + " #print(\"used disks with its max util% and avg util% are: \")\n", + " #display([(l['DEV'],l[\"max_util\"],l[\"avg_util\"]) for l in used_disk])\n", + " \n", + " if \"rd_sec/s\" in self.df.columns:\n", + " self.df=self.df.withColumn(\"rkB/s\",F.expr('cast(`rd_sec/s` as float)*512/1024'))\n", + " if \"wr_sec/s\" in self.df.columns:\n", + " self.df=self.df.withColumn(\"wkB/s\",F.expr('cast(`wr_sec/s` as float)*512/1024'))\n", + " \n", + " if \"areq-sz\" in self.df.columns:\n", + " self.df=self.df.withColumnRenamed(\"areq-sz\",\"avgrq-sz\")\n", + " if \"aqu-sz\" in self.df.columns:\n", + " self.df=self.df.withColumnRenamed(\"aqu-sz\",\"avgqu-sz\")\n", + " \n", + " if \"rkB/s\" in self.df.columns:\n", + " self.df=self.df.withColumn(\"rkB/s\",F.expr('cast(`rkB/s` as float)/1024'))\n", + " if \"wkB/s\" in self.df.columns:\n", + " self.df=self.df.withColumn(\"wkB/s\",F.expr('cast(`wkB/s` as float)/1024'))\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Sar_analysis.generate_trace_view_list(self,id, **kwargs)\n", + "\n", + " disk_prefix=kwargs.get('disk_prefix',\"\")\n", + " \n", + " if type(disk_prefix)==str:\n", + " diskfilter = \"DEV like '\"+disk_prefix+\"%'\"\n", + " elif type(disk_prefix)==list:\n", + " diskfilter = \"DEV in (\"+\",\".join(disk_prefix)+\")\"\n", + " else:\n", + " diskfilter = \"DEV like '%'\"\n", + "\n", + " print(diskfilter)\n", + " devcnt=self.df.where(diskfilter).select(\"DEV\").distinct().count()\n", + " \n", + " trace_events.extend(self.col_df(diskfilter, \"disk b/w\", lambda l: F.struct(\n", + " F.floor(F.col(\"rKB/s\")).alias('read'),\n", + " F.floor(F.col(\"wKB/s\")).alias('write')),id, 3))\n", + " trace_events.extend(self.col_df(diskfilter, \"disk%\", lambda l: F.struct(\n", + " (F.col(\"%util\")/F.lit(devcnt)).alias('%util')),id, 4))\n", + " trace_events.extend(self.col_df(diskfilter, \"req size\", lambda l: F.struct(\n", + " (F.col(\"avgrq-sz\")/F.lit(devcnt)).alias('avgrq-sz')),id, 5))\n", + " trace_events.extend(self.col_df(diskfilter, \"queue size\", lambda l: F.struct(\n", + " (F.col(\"avgqu-sz\")/F.lit(512*devcnt/1024)).alias('avgqu-sz')),id, 6))\n", + " trace_events.extend(self.col_df(diskfilter, \"await\", lambda l: F.struct(\n", + " (F.col(\"await\")/F.lit(devcnt)).alias('await')),id,7))\n", + " \n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":3,\"args\":{\"sort_index \":3}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":4,\"args\":{\"sort_index \":4}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":5,\"args\":{\"sort_index \":5}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":6,\"args\":{\"sort_index \":6}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":7,\"args\":{\"sort_index \":7}}))\n", + " return trace_events \n", + "\n", + " def get_stat(sar_disk,**kwargs):\n", + " Sar_analysis.get_stat(sar_disk)\n", + " disk_prefix=kwargs.get('disk_prefix',\"\")\n", + " \n", + " if type(disk_prefix)==str:\n", + " diskfilter = \"DEV like '\"+disk_prefix+\"%'\"\n", + " elif type(disk_prefix)==list:\n", + " diskfilter = \"DEV in (\"+\",\".join(disk_prefix)+\")\"\n", + " else:\n", + " diskfilter = \"DEV like '%'\"\n", + "\n", + " diskutil=sar_disk.df.where(diskfilter).groupBy(\"_1\").agg(F.mean(F.col(\"%util\").astype(FloatType())).alias(\"%util\")).orderBy(\"_1\")\n", + " totalcnt=diskutil.count()\n", + " time_morethan_90=diskutil.where(F.col(\"%util\")>90).count()/totalcnt\n", + " avgutil=diskutil.agg(F.mean(\"%util\")).collect()\n", + " out=[[\"avg disk util\",avgutil[0][\"avg(%util)\"]],\n", + " [\"time more than 90%\", time_morethan_90]]\n", + " diskbw=sar_disk.df.where(diskfilter).groupBy(\"_1\").agg(F.sum(F.col(\"rKB/s\")).alias(\"rd_bw\"),F.sum(F.col(\"wKB/s\")).alias(\"wr_bw\"))\n", + " bw=diskbw.agg(F.sum(\"rd_bw\").alias(\"total read\"),F.sum(\"wr_bw\").alias(\"total write\"),F.mean(\"rd_bw\").alias(\"read bw\"),F.mean(\"wr_bw\").alias(\"write bw\"),F.max(\"rd_bw\").alias(\"max read\"),F.max(\"wr_bw\").alias(\"max write\")).collect()\n", + " maxread=bw[0][\"max read\"]\n", + " maxwrite=bw[0][\"max write\"]\n", + " rdstat, wrstat = diskbw.stat.approxQuantile(['rd_bw','wr_bw'],[0.75,0.95,0.99],0.0)\n", + " time_rd_morethan_95 = diskbw.where(F.col(\"rd_bw\")>rdstat[1]).count()/totalcnt\n", + " time_wr_morethan_95 = diskbw.where(F.col(\"wr_bw\")>rdstat[1]).count()/totalcnt\n", + " out.append(['total read (G)' , bw[0][\"total read\"]/1024])\n", + " out.append(['total write (G)', bw[0][\"total write\"]/1024])\n", + " out.append(['avg read bw (MB/s)', bw[0][\"read bw\"]])\n", + " out.append(['avg write bw (MB/s)', bw[0][\"write bw\"]])\n", + " out.append(['read bw %75', rdstat[0]])\n", + " out.append(['read bw %95', rdstat[1]])\n", + " out.append(['read bw max', rdstat[2]])\n", + " out.append(['time_rd_morethan_95', time_rd_morethan_95])\n", + " out.append(['write bw %75', wrstat[0]])\n", + " out.append(['write bw %95', wrstat[1]])\n", + " out.append(['write bw max', wrstat[2]])\n", + " out.append(['time_wr_morethan_95', time_wr_morethan_95])\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " pdout.columns=[sar_disk.file.split(\"/\")[-2]]\n", + " return pdout\n", + " \n", + "class Sar_nic_analysis(Sar_analysis):\n", + " def __init__(self,sar_file):\n", + " Sar_analysis.__init__(self,sar_file)\n", + " \n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_events=Sar_analysis.generate_trace_view_list(self,id, **kwargs)\n", + " \n", + " nicfilter=\"\"\n", + " if 'nic_prefix' in kwargs.keys():\n", + " nicfilter= \"IFACE in (\" + \",\".join(kwargs.get('nic_prefix',[\"'eth3'\",\"'enp24s0f1'\"])) + \")\"\n", + " else:\n", + " nicfilter= \"IFACE != 'lo'\"\n", + " \n", + " trace_events.extend(self.col_df(nicfilter, \"eth \", lambda l: F.struct(F.floor(F.expr('cast(`rxkB/s` as float)/1024')).alias('rxmb/s'),F.floor(F.expr('cast(`txkB/s` as float)/1024')).alias('txmb/s')), id, 8))\n", + " trace_events.extend(self.col_df(\"_3 like 'ib%'\", \"ib \", lambda l: F.struct(F.floor(F.expr('cast(`rxkB/s` as float)/1024')).alias('rxmb/s'),F.floor(F.expr('cast(`txkB/s` as float)/1024')).alias('txmb/s')), id, 9))\n", + " trace_events.extend(self.col_df(\"_3 = 'lo'\", \"lo \", lambda l: F.struct(F.floor(F.expr('cast (`rxkB/s` as float)/1024')).alias('rxmb/s'),F.floor(F.expr('cast (`txkB/s` as float)/1024')).alias('txmb/s')), id, 10))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":8,\"args\":{\"sort_index \":8}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":9,\"args\":{\"sort_index \":9}}))\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":10,\"args\":{\"sort_index \":10}}))\n", + " return trace_events \n", + " \n", + " def get_stat(sar_nic,**kwargs):\n", + " Sar_analysis.get_stat(sar_nic)\n", + " nicfilter=\"\"\n", + " \n", + " if 'nic_prefix' in kwargs.keys():\n", + " nicfilter= \"IFACE in (\" + \",\".join(kwargs.get('nic_prefix',[\"'eth3'\",\"'enp24s0f1'\"])) + \")\"\n", + " else:\n", + " nicfilter= \"IFACE != 'lo'\"\n", + " \n", + " nicbw=sar_nic.df.where(nicfilter).groupBy(\"_1\").agg(F.sum(F.col(\"rxkB/s\").astype(FloatType())/1024).alias(\"rx MB/s\")).orderBy(\"_1\")\n", + " if nicbw.count()==0:\n", + " out=[[\"rx MB/s 75%\",0],[\"rx MB/s 95%\",0],[\"rx MB/s 99%\",0]]\n", + " else:\n", + " out=nicbw.stat.approxQuantile(['rx MB/s'],[0.75,0.95,0.99],0.0)[0]\n", + " out=[[\"rx MB/s 75%\",out[0]],[\"rx MB/s 95%\",out[1]],[\"rx MB/s 99%\",out[2]]]\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " pdout.columns=[sar_nic.file.split(\"/\")[-2]]\n", + " return pdout" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# PID State analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Pidstat_analysis(Analysis):\n", + " def __init__(self,sar_file):\n", + " Analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " sardata=sc.textFile(self.file)\n", + " sardf=sardata.mapPartitions(splits).toDF()\n", + " sardf=sardf.where(\"_1<>'Average:'\")\n", + " \n", + " headers=sardf.where(\"_4='TID' or _5='TID'\").limit(1).collect()\n", + " r=headers[0].asDict()\n", + " findtime=False\n", + " for i,v in r.items():\n", + " if(v==\"Time\"):\n", + " findtime=True\n", + " if not findtime:\n", + " r[\"_1\"]=\"Time\"\n", + " for i,v in r.items():\n", + " if(v!=\"\"):\n", + " sardf=sardf.withColumnRenamed(i,v)\n", + " sardf=sardf.where(\"TGID='0' or TGID='-'\") \n", + "\n", + " self.df=sardf\n", + " return sardf\n", + "\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_list=Analysis.generate_trace_view_list(self,id,**kwargs)\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " \n", + " sardf=sardf.withColumn(\"%CPU\",F.col(\"%CPU\").astype(FloatType()))\n", + " sardf=sardf.withColumn(\"Time\",F.col(\"Time\").astype(LongType()))\n", + " sardf=sardf.withColumn(\"TID\",F.col(\"TID\").astype(LongType()))\n", + " hotthreads=sardf.where(\"`%CPU`>30\").groupBy(\"TID\").count().collect()\n", + " hts=[(r[0],r[1]) for r in hotthreads]\n", + " htc=[r[1] for r in hotthreads]\n", + " if len(htc)==0:\n", + " return trace_list\n", + " maxcnt=max(htc)\n", + " hts=[r[0] for r in hts if r[1]>maxcnt/2]\n", + " tdfs=list(map(lambda x: sardf.withColumnRenamed(\"TID\",\"TID_\"+str(x)).withColumnRenamed(\"%CPU\",\"CPU_\"+str(x)).where(F.col(\"TID\")==x).select(\"Time\",\"TID_\"+str(x),\"CPU_\"+str(x)),hts))\n", + " finaldf=reduce(lambda x,y: x.join(y,on=[\"Time\"]),tdfs)\n", + " othersdf=sardf.where(\"TID not in (\"+\",\".join(map(lambda x: str(x),hts))+\")\").groupBy(\"Time\").agg(F.sum(\"%CPU\").alias(\"CPU_Other\"))\n", + " finaldf=finaldf.join(othersdf,on=[\"Time\"])\n", + " finaldf=finaldf.orderBy(\"Time\")\n", + " hts.append(\"Other\")\n", + " stt=[F.col(\"CPU_\"+str(x)).alias(str(x)) for x in hts]\n", + " args=F.struct(*stt)\n", + " \n", + " trace_list.extend(finaldf.select(\n", + " F.lit(6).alias('tid'),\n", + " (F.expr(\"Time*1000\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.lit(\"pidstat\").alias('name'),\n", + " args.alias('args')\n", + " ).toJSON().collect())\n", + " return trace_list\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Perf Trace Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Perfstat_analysis(Analysis):\n", + " def __init__(self,sar_file):\n", + " Analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " sardata=sc.textFile(self.file)\n", + " sardf=sardata.mapPartitions(splits).toDF()\n", + " \n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/perfstarttime\"):\n", + " with fs.open(paths[0]+\"/perfstarttime\") as f:\n", + " strf=f.read().decode('ascii')\n", + " else:\n", + " print(\"error, perfstarttime not found\")\n", + " return\n", + " \n", + " strf=strf[len(\"# started on \"):].strip()\n", + " starttime=datetime.strptime(strf, \"%a %b %d %H:%M:%S %Y\").timestamp()*1000\n", + " sardf=sardf.where(\"_1<>'#'\")\n", + " sardf=sardf.withColumn(\"ts\",F.col(\"_2\").astype(DoubleType())*1000+F.lit(starttime)).where(\"ts is not null\").select(\"ts\",\"_3\",\"_4\")\n", + " sardf=sardf.withColumn('_3', F.regexp_replace('_3', ',', '').astype(LongType()))\n", + " sardf=sardf.cache()\n", + " self.df=sardf\n", + " return sardf\n", + "\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_list=Analysis.generate_trace_view_list(self,id,**kwargs)\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " \n", + " stringIndexer = StringIndexer(inputCol=\"_4\", outputCol=\"syscall_idx\")\n", + " model = stringIndexer.fit(sardf)\n", + " sardf=model.transform(sardf)\n", + " \n", + "# cnts=sardf.select(\"_4\").distinct().collect()\n", + "# cnts=[l['_4'] for l in cnts]\n", + "# cntmap={ cnts[i]:i for i in range(0, len(cnts) ) }\n", + "# mapexpr=F.create_map([F.lit(x) for x in chain(*cntmap.items())])\n", + "# sardf.select(mapexpr.getItem(F.col(\"_4\")))\n", + " \n", + " sardf=sardf.withColumn(\"syscall_idx\",F.col(\"syscall_idx\").astype(IntegerType()))\n", + " \n", + " trace_list.extend(sardf.select(\n", + " (F.lit(100)+F.col(\"syscall_idx\")).alias('tid'),\n", + " (F.col(\"ts\")-F.lit(starttime)).astype(LongType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.col(\"_4\").alias('name'),\n", + " F.struct(F.col(\"_3\").alias(\"cnt\")).alias('args')\n", + " ).toJSON().collect())\n", + " return trace_list\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# GPU analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class gpu_analysis(Analysis):\n", + " def __init__(self,gpu_file):\n", + " Analysis.__init__(self,gpu_file)\n", + " \n", + " def load_data(self):\n", + " df_pf=spark.read.format(\"com.databricks.spark.csv\").option(\"header\",\"true\").option(\"mode\", \"DROPMALFORMED\").option(\"delimiter\", \",\").load(self.file)\n", + " df_pf2=df_pf.withColumn('timestamp',F.unix_timestamp(F.col('timestamp'),'yyyy/MM/dd HH:mm:ss')*1000+(F.split(F.col('timestamp'),'\\.')[1]).astype(IntegerType()))\n", + " df_pf2=df_pf2.withColumnRenamed(' utilization.gpu [%]','gpu_util')\n", + " df_pf2=df_pf2.withColumnRenamed(' utilization.memory [%]','mem_util')\n", + " df_pf2=df_pf2.withColumnRenamed(' memory.used [MiB]','mem_used')\n", + " df_pf2=df_pf2.withColumnRenamed(' index','index')\n", + " df_pf2=df_pf2.withColumn('gpu_util', (F.split('gpu_util',' ')[1]).astype(IntegerType()))\n", + " df_pf2=df_pf2.withColumn('mem_util', (F.split('mem_util',' ')[1]).astype(IntegerType()))\n", + " df_pf2=df_pf2.withColumn('mem_used', (F.split('mem_used',' ')[1]).astype(IntegerType()))\n", + " df_pf.cache()\n", + " self.df=df_pf2\n", + " return df_pf2\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " Analysis.generate_trace_view_list(self,id)\n", + " \n", + " df_pf2=self.df\n", + " starttime=self.starttime\n", + " trace_events=[]\n", + " \n", + " trace_events.extend(df_pf2.orderBy(df_pf2['timestamp']).select(\n", + " F.col('index').alias('tid'),\n", + " (F.expr(\"timestamp\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('gpu_util_'),F.col('index')).alias('name'),\n", + " F.struct(F.col('gpu_util').alias('gpu')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " trace_events.extend(df_pf2.orderBy(df_pf2['timestamp']).select(\n", + " F.col('index').alias('tid'),\n", + " (F.expr(\"timestamp\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(int(id)+1).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('mem_util_'),F.col('index')).alias('name'),\n", + " F.struct((F.col('mem_used')/F.lit(32768)).alias('mem')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " return trace_events" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "def splits_dmon(x):\n", + " fi=[]\n", + " for l in x:\n", + " l=l.strip()\n", + " if l.startswith('20'):\n", + " li=re.split(r'\\s+',l)\n", + " if len(li)==11:\n", + " fi.append(li)\n", + " return iter(fi)\n", + "\n", + "class gpu_dmon_analysis(Analysis):\n", + " def __init__(self,gpu_file):\n", + " Analysis.__init__(self,gpu_file)\n", + " \n", + " def load_data(self):\n", + " df_pf=sc.textFile(self.file)\n", + " df_pf=df_pf.mapPartitions(splits_dmon).toDF()\n", + " \n", + " df_pf2=df_pf.withColumn('_1',F.unix_timestamp(F.concat_ws(' ',F.col('_1'),F.col('_2')),'yyyyMMdd HH:mm:ss')*1000)\n", + " for c in range(3,12):\n", + " df_pf2=df_pf2.withColumn(f'_{c}',F.col(f'_{c}').astype(IntegerType()))\n", + "\n", + " df_pf.cache()\n", + " self.df=df_pf2\n", + " return df_pf2\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " Analysis.generate_trace_view_list(self,id)\n", + "\n", + " df_pf2=self.df\n", + " starttime=self.starttime\n", + " trace_events=[]\n", + " \n", + " trace_events.extend(df_pf2.orderBy(df_pf2['_1']).select(\n", + " F.col('_3').alias('tid'),\n", + " (F.expr(\"_1\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('gpu_util_'),F.col('_3')).alias('name'),\n", + " F.struct(F.col('_4').alias('gpu')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " trace_events.extend(df_pf2.orderBy(df_pf2['_1']).select(\n", + " F.col('_3').alias('tid'),\n", + " (F.expr(\"_1\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id+1).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('mem_util_'),F.col('_3')).alias('name'),\n", + " F.struct(F.col('_5').alias('mem')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " trace_events.extend(df_pf2.orderBy(df_pf2['_1']).select(\n", + " F.col('_3').alias('tid'),\n", + " (F.expr(\"_1\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id+2).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('gpu_freq_'),F.col('_3')).alias('name'),\n", + " F.struct(F.col('_9').alias('gpu_freq')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " trace_events.extend(df_pf2.orderBy(df_pf2['_1']).select(\n", + " F.col('_3').alias('tid'),\n", + " (F.expr(\"_1\")-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(id+3).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.concat(F.lit('pcie_'),F.col('_3')).alias('name'),\n", + " F.struct(F.col('_10').alias('tx'),F.col('_11').alias('rx')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " return trace_events\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# DASK analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "def split_dask(x):\n", + " fi=[]\n", + " for l in x:\n", + " print(l)\n", + " li=[]\n", + " if l.startswith('('):\n", + " lx=re.split(r'[()]',l)\n", + " lv=lx[1]\n", + " p=re.search(r\"'(.*)-([0-9a-f]+)', *(\\d+)\",lv)\n", + " if not p:\n", + " print(\"dask log first field doesn't match (.*)-[0-9a-f]+', *(\\d+)\")\n", + " return\n", + " li.append(p.group(1))\n", + " li.extend(lx[2].split(\",\")[1:])\n", + " li.append(p.group(3))\n", + " else:\n", + " li=l.split(',')\n", + " p=re.search(r\"(.*)-([0-9a-f]+-[0-9a-f]+-[0-9a-f]+-[0-9a-f]+-[0-9a-f]+)$\",li[0])\n", + " if not p:\n", + " p=re.search(r\"(.*)-([0-9a-f]+)$\",li[0])\n", + " \n", + " li[0]=p.group(1)\n", + " li.append(p.group(2))\n", + " fi.append(li)\n", + " return iter(fi)\n", + "\n", + "class dask_analysis(Analysis):\n", + " def __init__(self,dask_file):\n", + " Analysis.__init__(self,dask_file)\n", + "\n", + " def load_data(self):\n", + " rdds=sc.textFile(self.file)\n", + " df_pf=rdds.mapPartitions(split_dask).toDF()\n", + " df_pf=df_pf.withColumnRenamed('_1','_c0')\n", + " df_pf=df_pf.withColumnRenamed('_2','_c1')\n", + " df_pf=df_pf.withColumnRenamed('_3','_c2')\n", + " df_pf=df_pf.withColumnRenamed('_4','_c3')\n", + " df_pf=df_pf.withColumnRenamed('_5','_id')\n", + " \n", + " df_pf=df_pf.withColumn('_c1',F.split(F.col('_c1'),\":\")[2])\n", + " df_pf=df_pf.withColumn('_c3',df_pf._c3.astype(DoubleType())*1000) \n", + " df_pf=df_pf.withColumn('_c2',df_pf._c2.astype(DoubleType())*1000)\n", + " \n", + " df_pf.cache()\n", + " self.df=df_pf\n", + " self.starttime=df_pf.agg(F.min(\"_c2\")).collect()[0]['min(_c2)']\n", + " return df_pf\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " Analysis.generate_trace_view_list(self,id)\n", + " \n", + " df_pf=self.df\n", + "\n", + " window = Window.partitionBy(\"_c1\").orderBy(\"_c3\")\n", + " df_pf=df_pf.withColumn(\"last_tsk_done\", F.lag('_c3', 1, None).over(window))\n", + " df_pf=df_pf.withColumn('last_tsk_done',F.coalesce('last_tsk_done','_c2'))\n", + " df_pf=df_pf.withColumn('last_tsk_done',F.when(F.col('_c2')>F.col('last_tsk_done'),F.col('_c2')).otherwise(F.col('last_tsk_done')) )\n", + " \n", + " trace_events=[]\n", + " \n", + " trace_events.extend(df_pf.select(\n", + " F.col('_c1').alias('tid'),\n", + " (F.col('last_tsk_done')-F.lit(self.starttime)).astype(IntegerType()).alias('ts'),\n", + " F.expr('_c3 - last_tsk_done ').alias('dur'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('X').alias('ph'),\n", + " F.col('_c0').alias('name'),\n", + " F.struct(F.col('_id').alias('uuid')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " return trace_events" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class dask_analysis_log(dask_analysis):\n", + " def __init__(self,dask_file,logs):\n", + " Analysis.__init__(self,dask_file)\n", + "\n", + " def load_data(self):\n", + " rdds=sc.textFile(self.file)\n", + " df_pf=rdds.mapPartitions(split_dask).toDF()\n", + " df_pf=df_pf.withColumnRenamed('_1','_c0')\n", + " df_pf=df_pf.withColumnRenamed('_2','_c1')\n", + " df_pf=df_pf.withColumnRenamed('_3','_c2')\n", + " df_pf=df_pf.withColumnRenamed('_4','_c3')\n", + " df_pf=df_pf.withColumnRenamed('_5','_id')\n", + " \n", + " df_pf=df_pf.withColumn('_c1',F.split(F.col('_c1'),\":\")[2])\n", + " df_pf=df_pf.withColumn('_c3',df_pf._c3.astype(DoubleType())*1000) \n", + " df_pf=df_pf.withColumn('_c2',df_pf._c2.astype(DoubleType())*1000)\n", + " \n", + " df_pf.cache()\n", + " self.df=df_pf\n", + " self.starttime=df_pf.agg(F.min(\"_c2\")).collect()[0]['min(_c2)']\n", + " return df_pf\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " Analysis.generate_trace_view_list(self,id)\n", + " \n", + " df_pf=self.df\n", + "\n", + " window = Window.partitionBy(\"_c1\").orderBy(\"_c3\")\n", + " df_pf=df_pf.withColumn(\"last_tsk_done\", F.lag('_c3', 1, None).over(window))\n", + " df_pf=df_pf.withColumn('last_tsk_done',F.coalesce('last_tsk_done','_c2'))\n", + " df_pf=df_pf.withColumn('last_tsk_done',F.when(F.col('_c2')>F.col('last_tsk_done'),F.col('_c2')).otherwise(F.col('last_tsk_done')) )\n", + " \n", + " trace_events=[]\n", + " \n", + " trace_events.extend(df_pf.select(\n", + " F.col('_c1').alias('tid'),\n", + " (F.col('last_tsk_done')-F.lit(self.starttime)).astype(IntegerType()).alias('ts'),\n", + " F.expr('_c3 - last_tsk_done ').alias('dur'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('X').alias('ph'),\n", + " F.col('_c0').alias('name'),\n", + " F.struct(F.col('_id').alias('uuid')).alias('args')\n", + " ).toJSON().collect())\n", + "\n", + " return trace_events" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# instantevent analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "## format: _2 = Name; _3 = time\n", + "\n", + "class InstantEvent_analysis(Analysis):\n", + " def __init__(self,sar_file):\n", + " Analysis.__init__(self,sar_file)\n", + " \n", + " def load_data(self):\n", + " sardata=sc.textFile(self.file)\n", + " sardf=sardata.mapPartitions(splits).toDF()\n", + " self.df=sardf\n", + " return sardf\n", + "\n", + "\n", + " def generate_trace_view_list(self,id=0,**kwargs):\n", + " Analysis.generate_trace_view_list(self,id)\n", + " sardf=self.df\n", + " starttime=self.starttime\n", + " return sardf.select(F.lit(0).alias('tid'),\n", + " (F.col(\"_3\").astype(DoubleType())*1000-F.lit(starttime)).astype(IntegerType()).alias('ts'),\n", + " F.lit(0).alias('pid'),\n", + " F.lit('i').alias('ph'),\n", + " F.col(\"_2\").alias('name'),\n", + " F.lit(\"g\").alias(\"s\")\n", + " ).toJSON().collect()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# HBM_Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class HBM_analysis(Analysis):\n", + " def __init__(self,file):\n", + " Analysis.__init__(self,file)\n", + " \n", + " def load_data(self):\n", + " df=spark.read.option(\"delimiter\", \", \").option(\"header\", \"true\").csv(self.file)\n", + " self.df=df.withColumn(\"ts\", F.unix_timestamp(df.timestamp)).withColumn(\"size\", df.size.cast(LongType())).withColumn(\"free\", df.free.cast(LongType()))\n", + " return self.df\n", + "\n", + " def generate_trace_view_list(self,id,**kwargs):\n", + " trace_list=Analysis.generate_trace_view_list(self,id,**kwargs)\n", + " hbmdf=self.df\n", + " starttime=self.starttime\n", + " \n", + " trace_list.extend(hbmdf.select(\n", + " F.lit(0).alias('tid'),\n", + " (F.col(\"ts\") * F.lit(1000)-F.lit(starttime)).astype(LongType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.lit(\"hbm\").alias('name'),\n", + " F.struct((F.col(\"size\")-F.col(\"free\")).alias('hbmused'), F.col(\"free\").alias('hbmfree')).alias('args')\n", + " ).toJSON().collect())\n", + " \n", + " trace_list.extend(hbmdf.select(\n", + " F.lit(0).alias('tid'),\n", + " (F.col(\"ts\") * F.lit(1000)-F.lit(starttime)).astype(LongType()).alias('ts'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.lit(\"hbm %\").alias('name'),\n", + " F.struct(((F.lit(1) - F.col(\"free\") / F.col(\"size\")) * F.lit(100)).alias('%hbmused')).alias('args')\n", + " ).toJSON().collect())\n", + " return trace_list" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Run base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Run:\n", + " def __init__(self,samples):\n", + " self.samples=samples\n", + " \n", + " def generate_trace_view(self,appid,**kwargs):\n", + " traces=[]\n", + " \n", + " for idx, s in enumerate(self.samples):\n", + " traces.extend(s.generate_trace_view_list(idx,**kwargs)) \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ]\n", + " }'''\n", + "\n", + " with open('/home/sparkuser/trace_result/'+appid+'.json', 'w') as outfile: \n", + " outfile.write(output)\n", + "\n", + " print(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appid}.json\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Dask Application Run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Dask_Application_Run:\n", + " def __init__(self, appid):\n", + " self.appid=appid\n", + " self.filedir=\"/tmp/dgx-2Log/\"+self.appid+\"/\"\n", + " \n", + " self.analysis={\n", + " 'dask':{'als':dask_analysis(self.filedir+\"cluster.log\"),'pid':8000},\n", + " 'sar_cpu':{'als':Sar_cpu_analysis(self.filedir + \"/\"+\"sar_cpu.sar\"),'pid':10*0+0},\n", + " 'sar_disk':{'als':Sar_disk_analysis(self.filedir + \"/\"+\"sar_disk.sar\"),'pid':10*0+1},\n", + " 'sar_mem':{'als':Sar_mem_analysis(self.filedir + \"/\"+\"sar_mem.sar\"),'pid':10*0+2},\n", + " 'sar_nic':{'als':Sar_nic_analysis(self.filedir + \"/\"+\"sar_nic.sar\"),'pid':10*0+3},\n", + " 'emon':{'als':Emon_Analysis(self.filedir + \"/\"+\"emon.rst\"),'pid':10*0+4},\n", + " 'gpu':{'als':gpu_analysis(self.filedir + \"/gpu.txt\"),'pid':10*0+5},\n", + " }\n", + " \n", + " \n", + " def generate_trace_view(self,showsar=True,showemon=False,showgpu=True,**kwargs):\n", + " traces=[]\n", + " daskals=self.analysis['dask']['als']\n", + " traces.extend(daskals.generate_trace_view_list(self.analysis['dask']['pid'],**kwargs))\n", + " if showsar:\n", + " sarals=self.analysis['sar_cpu']['als']\n", + " sarals.starttime=daskals.starttime\n", + " traces.extend(sarals.generate_trace_view_list(self.analysis['sar_cpu']['pid'],**kwargs))\n", + " sarals=self.analysis['sar_disk']['als']\n", + " sarals.starttime=daskals.starttime\n", + " traces.extend(sarals.generate_trace_view_list(self.analysis['sar_disk']['pid'],**kwargs))\n", + " sarals=self.analysis['sar_mem']['als']\n", + " sarals.starttime=daskals.starttime\n", + " traces.extend(sarals.generate_trace_view_list(self.analysis['sar_mem']['pid'],**kwargs))\n", + " sarals=self.analysis['sar_nic']['als']\n", + " sarals.starttime=daskals.starttime\n", + " traces.extend(sarals.generate_trace_view_list(self.analysis['sar_nic']['pid'],**kwargs))\n", + " if showemon:\n", + " emonals=self.analysis['emon']['als']\n", + " emonals.starttime=daskals.starttime\n", + " traces.extend(emonals.generate_trace_view_list(self.analysis['emon']['pid'],**kwargs))\n", + " if showgpu:\n", + " gpuals=self.analysis['gpu']['als']\n", + " gpuals.starttime=daskals.starttime\n", + " traces.extend(gpuals.generate_trace_view_list(self.analysis['gpu']['pid'],**kwargs))\n", + " \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ]\n", + " }'''\n", + "\n", + " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", + " outfile.write(output)\n", + "\n", + " print(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appid}.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Dask_Application_Run2:\n", + " def __init__(self, appid):\n", + " self.appid=appid\n", + " \n", + " self.filedir=\"/tmp/dgx-2Log/\"+self.appid+\"/\"\n", + " self.dask=self.load_dask()\n", + " self.sar=self.load_sar()\n", + " self.gpu=self.load_gpu()\n", + " \n", + " \n", + " def load_dask(self):\n", + " return dask_analysis(self.filedir+\"cluster.log\")\n", + " \n", + " def load_sar(self):\n", + " return Sar_analysis(self.filedir+\"sar_data.sar\")\n", + " \n", + " def load_emon(self):\n", + " return Emon_Analysis(self.filedir+\"emon.rst\")\n", + " \n", + " def load_gpu(self):\n", + " return gpu_dmon_analysis(self.filedir+\"gpu_dmon.txt\")\n", + " \n", + " def generate_dask_trace_view(self):\n", + " return self.dask.generate_dask_trace_view(8000)\n", + " \n", + " def generate_sar_trace_view(self):\n", + " return self.sar.generate_sar_trace_view(0)\n", + " \n", + " def generate_gpu_trace_view(self):\n", + " return self.gpu.generate_gpu_trace_view(1)\n", + "\n", + " def generate_emon_trace_view(self,collected_cores):\n", + " return self.emon.generate_emon_trace_view(5,collected_cores)\n", + " \n", + " def generate_trace_view(self,showsar=True,showemon=False,showgpu=True):\n", + " traces=[]\n", + " traces.extend(self.generate_dask_trace_view())\n", + " if showsar:\n", + " self.sar.starttime=self.dask.starttime\n", + " traces.extend(self.generate_sar_trace_view())\n", + " if showemon:\n", + " traces.extend(self.generate_emon_trace_view(collected_cores))\n", + " if showgpu:\n", + " self.gpu.starttime=self.dask.starttime\n", + " traces.extend(self.generate_gpu_trace_view())\n", + " \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ]\n", + " }'''\n", + "\n", + " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", + " outfile.write(output)\n", + "\n", + " print(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appid}.json\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# Application RUN STD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "class Application_Run_STD:\n", + " def __init__(self, appid):\n", + " self.appid=appid\n", + " self.filedir=\"/tmp/dgx-2Log/\"+self.appid+\"/\"\n", + " \n", + " self.analysis={\n", + " 'sar':{'als':Sar_analysis(self.filedir+\"sar_data.sar\"),'pid':0},\n", + " 'emon':{'als':Emon_Analysis(self.filedir+\"emon.rst\"),'pid':1},\n", + " 'gpu':{'als':gpu_analysis(self.filedir+\"gpu.txt\"),'pid':100},\n", + " }\n", + " \n", + " \n", + " def generate_trace_view(self,showsar=True,showemon=False,showgpu=True,**kwargs):\n", + " traces=[]\n", + " starttime=time.time()*1000\n", + " if showsar:\n", + " sarals=self.analysis['sar']['als']\n", + " sarals.starttime=starttime\n", + " traces.extend(sarals.generate_trace_view_list(self.analysis['sar']['pid'],**kwargs))\n", + " if showemon:\n", + " emonals=self.analysis['emon']['als']\n", + " emonals.starttime=starttime\n", + " traces.extend(emonals.generate_trace_view_list(self.analysis['emon']['pid'],**kwargs))\n", + " if showgpu:\n", + " gpuals=self.analysis['gpu']['als']\n", + " gpuals.starttime=starttime\n", + " traces.extend(gpuals.generate_trace_view_list(self.analysis['gpu']['pid'],**kwargs))\n", + " \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ]\n", + " }'''\n", + "\n", + " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", + " outfile.write(output)\n", + "\n", + " print(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appid}.json\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# application Run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [], + "hidden": true + }, + "outputs": [], + "source": [ + "\n", + "\n", + "\n", + "\n", + "class Application_Run:\n", + " def __init__(self, appid,**kwargs):\n", + " self.appid=appid\n", + " \n", + " basedir=kwargs.get(\"basedir\",\"skylake\")\n", + " self.filedir=\"/\"+basedir+\"/\"+self.appid+\"/\"\n", + " self.basedir=basedir\n", + " \n", + " slaves=fs.list_status(\"/\"+basedir+\"/\"+appid)\n", + " slaves=[f['pathSuffix'] for f in slaves if f['type']=='DIRECTORY' and f['pathSuffix']!=\"summary.parquet\"]\n", + " \n", + " jobids=kwargs.get(\"jobids\",None)\n", + " \n", + " self.clients=slaves\n", + " \n", + " sarclnt={}\n", + " for idx,l in enumerate(self.clients):\n", + " sarclnt[l]={'sar_cpu':{'als':Sar_cpu_analysis(self.filedir + l + \"/\"+\"sar_cpu.sar\"),'pid':idx},\n", + " 'sar_disk':{'als':Sar_disk_analysis(self.filedir + l + \"/\"+\"sar_disk.sar\"),'pid':idx},\n", + " 'sar_mem':{'als':Sar_mem_analysis(self.filedir + l + \"/\"+\"sar_mem.sar\"),'pid':idx},\n", + " 'sar_nic':{'als':Sar_nic_analysis(self.filedir + l + \"/\"+\"sar_nic.sar\"),'pid':idx}\n", + " }\n", + " if fs.exists(self.filedir + l + \"/sar_page.sar\"):\n", + " sarclnt[l]['sar_page']={'als':Sar_PageCache_analysis(self.filedir + l + \"/\"+\"sar_page.sar\"),'pid':idx}\n", + " \n", + " if fs.exists(self.filedir + l + \"/pidstat.out\"):\n", + " sarclnt[l]['sar_pid']={'als':Pidstat_analysis(self.filedir + l + \"/pidstat.out\"),'pid':idx}\n", + " if fs.exists(self.filedir + l + \"/sched.txt\"):\n", + " sarclnt[l]['sar_perf']={'als':Perf_trace_analysis(self.filedir + l + \"/sched.txt\"),'pid':100+idx}\n", + " if fs.exists(self.filedir + l + \"/perfstat.txt\"):\n", + " sarclnt[l]['perfstat']={'als':Perfstat_analysis(self.filedir + l + \"/perfstat.txt\"),'pid':300+idx}\n", + " if fs.exists(self.filedir + l + \"/gpu.txt\"):\n", + " sarclnt[l]['gpu']={'als':gpu_analysis(self.filedir + l + \"/gpu.txt\"),'pid':400+idx}\n", + " \n", + " \n", + " self.analysis={\n", + " \"sar\": sarclnt\n", + " }\n", + " \n", + " if fs.exists(self.filedir+\"app.log\"):\n", + " self.analysis['app']={'als':App_Log_Analysis(self.filedir+\"app.log\",jobids)}\n", + " \n", + " if fs.exists(self.filedir+\"instevent.out\"):\n", + " self.analysis['instant']={'als':InstantEvent_analysis(self.filedir+\"instevent.out\")}\n", + " \n", + " self.starttime=0\n", + " if fs.exists(self.filedir+\"starttime\"):\n", + " with fs.open(self.filedir+\"starttime\") as f:\n", + " st = f.read().decode('ascii')\n", + " self.starttime=int(st)\n", + " \n", + " def generate_trace_view(self,showsar=True,showgpu=True,showhbm=False,**kwargs):\n", + " traces=[]\n", + " shownodes=kwargs.get(\"shownodes\",self.clients)\n", + " for l in shownodes:\n", + " if l not in self.clients:\n", + " print(l,\"is not in clients\",self.clients)\n", + " return\n", + " self.clients=shownodes\n", + " \n", + " xgbtcks=kwargs.get('xgbtcks',(\"calltrain\",'enter','begin','end'))\n", + " \n", + " if \"app\" in self.analysis:\n", + " appals=self.analysis['app']['als']\n", + " appals.starttime=self.starttime\n", + " traces.extend(appals.generate_trace_view_list(self.analysis['app'],**kwargs))\n", + " self.starttime=appals.starttime\n", + " \n", + " if 'instant' in self.analysis:\n", + " als=self.analysis['instant']['als']\n", + " als.starttime=self.starttime\n", + " traces.extend(als.generate_trace_view_list(**kwargs))\n", + " \n", + " counttime=kwargs.get(\"counttime\",False)\n", + " \n", + " pidmap={}\n", + " if showsar:\n", + " for l in self.clients:\n", + " for alskey, sarals in self.analysis[\"sar\"][l].items():\n", + " t1 = time.time()\n", + " sarals['als'].starttime=self.starttime\n", + " traces.extend(sarals['als'].generate_trace_view_list(sarals['pid'],node=l, **kwargs))\n", + " if counttime:\n", + " print(l,alskey,\" spend time: \", time.time()-t1)\n", + " \n", + " if showhbm:\n", + " for l in self.clients:\n", + " t1 = time.time()\n", + " hbm_analysis=HBM_analysis(self.filedir + l + \"/numactl.csv\")\n", + " hbm_analysis.starttime=self.starttime\n", + " traces.extend(hbm_analysis.generate_trace_view_list(0,**kwargs))\n", + " if counttime:\n", + " print(l, \" hbm process spend time: \", time.time()-t1)\n", + " \n", + " for idx,l in enumerate(self.clients):\n", + " traces.append(json.dumps({\"name\": \"process_sort_index\",\"ph\": \"M\",\"pid\":idx,\"tid\":0,\"args\":{\"sort_index \":idx}}))\n", + " traces.append(json.dumps({\"name\": \"process_sort_index\",\"ph\": \"M\",\"pid\":idx+100,\"tid\":0,\"args\":{\"sort_index \":idx+100}}))\n", + " traces.append(json.dumps({\"name\": \"process_sort_index\",\"ph\": \"M\",\"pid\":idx+200,\"tid\":0,\"args\":{\"sort_index \":idx+200}}))\n", + " \n", + " if \"app\" in self.analysis:\n", + " for pid in self.analysis['app']['als'].pids:\n", + " traces.append(json.dumps({\"name\": \"process_sort_index\",\"ph\": \"M\",\"pid\":pid+200,\"tid\":0,\"args\":{\"sort_index \":pid+200}}))\n", + "\n", + " allcnt=\"\"\n", + " for c in self.clients:\n", + " paths=self.filedir+c\n", + " if fs.exists(paths+\"/xgbtck.txt\"):\n", + " with fs.open(paths+\"/xgbtck.txt\") as f:\n", + " tmp = f.read().decode('ascii')\n", + " allcnt=allcnt+tmp\n", + " allcnt=allcnt.strip().split(\"\\n\")\n", + " if len(allcnt) > 1:\n", + " allcnt=[l.split(\" \") for l in allcnt]\n", + " cnts=pandas.DataFrame([[l[0],l[1],l[2],l[3]] for l in allcnt if len(l)>1 and l[1] in xgbtcks])\n", + " if len(cnts) > 0:\n", + " cnts.columns=['xgbtck','name','rank','time']\n", + " cntgs=cnts.groupby(\"name\").agg({\"time\":\"min\"})\n", + " cntgs=cntgs.reset_index()\n", + " cntgs.columns=['name','ts']\n", + " cntgs['ph']=\"i\"\n", + " cntgs['ts']=pandas.to_numeric(cntgs['ts'])-self.starttime\n", + " cntgs['pid']=0\n", + " cntgs['tid']=0\n", + " cntgs['s']='g'\n", + " traces.extend([json.dumps(l) for l in cntgs.to_dict(orient='records')])\n", + " \n", + " output='''\n", + " {\n", + " \"traceEvents\": [\n", + " \n", + " ''' + \\\n", + " \",\\n\".join(traces)\\\n", + " + '''\n", + " ],\n", + " \"displayTimeUnit\": \"ns\"\n", + " }'''\n", + "\n", + " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", + " outfile.write(output)\n", + "\n", + " display(HTML(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json\"))\n", + " \n", + " def get_sar_stat(app_ww44,**kwargs):\n", + " disk_prefix=kwargs.get(\"disk_prefix\",\"dev259\")\n", + " nic_prefix = kwargs.get(\"nic_prefix\",[\"'eth3'\",\"'enp24s0f1'\"])\n", + " cpustat=[app_ww44.analysis[\"sar\"][l]['sar_cpu']['als'].get_stat() for l in app_ww44.clients]\n", + " cpustat=reduce(lambda l,r:l.join(r),cpustat)\n", + " diskstat=[app_ww44.analysis[\"sar\"][l]['sar_disk']['als'].get_stat(disk_prefix=disk_prefix) for l in app_ww44.clients]\n", + " diskstat=reduce(lambda l,r:l.join(r),diskstat)\n", + " memstat=[app_ww44.analysis[\"sar\"][l]['sar_mem']['als'].get_stat() for l in app_ww44.clients]\n", + " memstat=reduce(lambda l,r:l.join(r),memstat)\n", + " nicstat=[app_ww44.analysis[\"sar\"][l]['sar_nic']['als'].get_stat(nic_prefix=nic_prefix) for l in app_ww44.clients]\n", + " nicstat=reduce(lambda l,r:l.join(r),nicstat)\n", + " pagestat=[app_ww44.analysis[\"sar\"][l]['sar_page']['als'].get_stat() for l in app_ww44.clients]\n", + " pagestat=reduce(lambda l,r:l.join(r),pagestat)\n", + " pandas.options.display.float_format = '{:,.2f}'.format\n", + " return pandas.concat([cpustat,diskstat,memstat,nicstat,pagestat])\n", + " \n", + " def get_summary(app, **kwargs):\n", + " output=[]\n", + " \n", + " appals=app.analysis[\"app\"][\"als\"]\n", + " \n", + " out=appals.get_query_time(plot=False)\n", + " \n", + " lrun=app.appid\n", + " \n", + " cmpcolumns=['runtime','disk spilled','shuffle_write','f_wait_time','input read','acc_task_time','output rows']\n", + " outcut=out[cmpcolumns]\n", + " \n", + " pdsout=pandas.DataFrame(outcut.sum(),columns=[lrun])\n", + " pdstime=pdsout\n", + "\n", + " node=\"\"\n", + " for l in fs.list_status(app.filedir):\n", + " if l['type']==\"DIRECTORY\" and l['pathSuffix']!=\"summary.parquet\":\n", + " node=l['pathSuffix']\n", + " break\n", + "\n", + " print(\"sar metric\")\n", + " sardf=app.get_sar_stat(**kwargs)\n", + " \n", + " def get_sar_agg(sardf):\n", + " aggs=[]\n", + " for x in sardf.index:\n", + " if \"total\" in x:\n", + " aggs.append(sardf.loc[x].sum())\n", + " elif \"max\" in x:\n", + " aggs.append(sardf.loc[x].max())\n", + " else:\n", + " aggs.append(sardf.loc[x].mean())\n", + "\n", + " sardf['agg']=aggs\n", + " return sardf\n", + " sardf=get_sar_agg(sardf)\n", + "\n", + " sarsum=sardf[[\"agg\"]]\n", + "\n", + " sarsum.columns=[lrun]\n", + " \n", + " summary=pandas.concat([pdstime,sarsum])\n", + " \n", + " df_sum=spark.createDataFrame(summary.T.reset_index())\n", + " for c in df_sum.columns:\n", + " df_sum=df_sum.withColumnRenamed(c,c.replace(\" \",\"_\").replace(\"(\",\"\").replace(\")\",\"\"))\n", + " df_sum.write.mode(\"overwrite\").parquet(app.filedir+\"summary.parquet\")\n", + " \n", + " return summary\n", + " \n", + " def compare_app(app2,**kwargs):\n", + " output=[]\n", + " \n", + " lbasedir=kwargs.get(\"basedir\",app2.basedir)\n", + " r_appid=kwargs.get(\"r_appid\",app2.appid)\n", + " \n", + " app=kwargs.get(\"rapp\",Application_Run(r_appid,basedir=lbasedir))\n", + "\n", + " show_queryplan_diff=kwargs.get(\"show_queryplan_diff\",True)\n", + " \n", + " queryids=kwargs.get(\"queryids\",None)\n", + " \n", + " appals=app.analysis[\"app\"][\"als\"]\n", + " appals2=app2.analysis[\"app\"][\"als\"]\n", + "\n", + " out=appals.get_query_time(plot=False)\n", + " out2=appals2.get_query_time(plot=False)\n", + "\n", + " lrun=app.appid\n", + " rrun=app2.appid\n", + " cmpcolumns=['runtime','shuffle_write','f_wait_time','input read','acc_task_time','output rows']\n", + " outcut=out[cmpcolumns]\n", + " out2cut=out2[cmpcolumns]\n", + " cmp=outcut.join(out2cut,lsuffix='_'+lrun,rsuffix='_'+rrun)\n", + "\n", + " pdsout=pandas.DataFrame(outcut.sum(),columns=[lrun])\n", + " pdsout2=pandas.DataFrame(out2cut.sum(),columns=[rrun])\n", + " pdstime=pdsout.join(pdsout2)\n", + "\n", + " print(\"sar metric\")\n", + " sardf=app.get_sar_stat(**kwargs)\n", + " sardf2=app2.get_sar_stat(**kwargs)\n", + " \n", + " def get_sar_agg(sardf):\n", + " aggs=[]\n", + " for x in sardf.index:\n", + " if \"total\" in x:\n", + " aggs.append(sardf.loc[x].sum())\n", + " elif \"max\" in x:\n", + " aggs.append(sardf.loc[x].max())\n", + " else:\n", + " aggs.append(sardf.loc[x].mean())\n", + "\n", + " sardf['agg']=aggs\n", + " return sardf\n", + " sardf=get_sar_agg(sardf)\n", + " sardf2=get_sar_agg(sardf2)\n", + " #in case we compare two clusters\n", + " sardf2.columns=sardf.columns\n", + "\n", + " sarcolumns=sardf.columns\n", + " sarcmp=sardf.join(sardf2,lsuffix='_'+lrun,rsuffix='_'+rrun)\n", + " sarsum=sarcmp[[\"agg_\"+lrun,\"agg_\"+rrun]]\n", + "\n", + " sarsum.columns=[lrun,rrun]\n", + " \n", + " summary=pandas.concat([pdstime,sarsum])\n", + " \n", + " summary[\"diff\"]=numpy.where(summary[rrun] > 0, summary[lrun]/summary[rrun]-1, 0)\n", + " \n", + " \n", + " def highlight_diff(x):\n", + " styles=[]\n", + " mx=x.max()\n", + " mn=x.min()\n", + " mx=max(mx,-mn,0.2)\n", + " for j in x.index:\n", + " m1=(x[j])/mx*100 if x[j]!=None else 0\n", + " if m1>0:\n", + " styles.append(f'width: 400px ; background-image: linear-gradient(to right, transparent 50%, #5fba7d 50%, #5fba7d {50+m1/2}%, transparent {50+m1/2}%)')\n", + " else:\n", + " styles.append(f'width: 400px ;background-image: linear-gradient(to left, transparent 50%, #f1a863 50%, #f1a863 {50-m1/2}%, transparent {50-m1/2}%)')\n", + " return styles\n", + "\n", + " output.append(summary.style.apply(highlight_diff,subset=['diff']).format({lrun:\"{:,.2f}\",rrun:\"{:,.2f}\",'diff':\"{:,.2%}\"}).render())\n", + "\n", + " cmp_plot=cmp\n", + " cmp_plot['diff']=cmp_plot['runtime_'+lrun]-cmp_plot['runtime_'+rrun]\n", + "\n", + " pltx=cmp_plot.sort_values(by='diff',axis=0).plot.bar(y=['runtime_'+lrun,'runtime_'+rrun],figsize=(30,8))\n", + " better_num=sqldf('''select count(*) from cmp_plot where diff>0''')['count(*)'][0]\n", + " pltx.text(0.1, 0.8,'{:d} queries are better'.format(better_num), ha='center', va='center', transform=pltx.transAxes)\n", + "\n", + " df1 = pandas.DataFrame('', index=cmp.index, columns=cmpcolumns)\n", + " for l in cmpcolumns:\n", + " for j in cmp.index:\n", + " df1[l][j]=[cmp[l+\"_\"+lrun][j],cmp[l+\"_\"+rrun][j],cmp[l+\"_\"+lrun][j]/cmp[l+\"_\"+rrun][j]-1]\n", + "\n", + " def highlight_greater(x,columns):\n", + " df1 = pandas.DataFrame('', index=x.index, columns=x.columns)\n", + " for l in columns:\n", + " m={}\n", + " for j in x.index:\n", + " m[j] = (x[l][j][1] / x[l][j][0])*100 if x[l][j][0]!=0 else 100\n", + " mx=max(m.values())-100\n", + " mn=100-min(m.values())\n", + " mx=max(mx,mn)\n", + " for j in x.index:\n", + " m1=-(100-m[j])/mx*100 if x[l][j][0]!=0 else 0\n", + " if m1>0:\n", + " df1[l][j] = f'background-image: linear-gradient(to right, transparent 50%, #5fba7d 50%, #5fba7d {50+m1/2}%, transparent {50+m1/2}%)'\n", + " else:\n", + " df1[l][j] = f'background-image: linear-gradient(to left, transparent 50%, #f1a863 50%, #f1a863 {50-m1/2}%, transparent {50-m1/2}%)'\n", + "\n", + " return df1\n", + "\n", + " def display_compare(df,columns):\n", + " output.append(df.style.set_properties(**{'width': '300px','border-style':'solid','border-width':'1px'}).apply(lambda x: highlight_greater(x,columns), axis=None).format(lambda x: '''\n", + "
{:,.2f}
\n", + "
{:,.2f}
\n", + "
{:,.2f}%
\n", + " '''.format(x[0],x[1],x[2]*100)).render())\n", + " display_compare(df1,cmpcolumns)\n", + "\n", + " df3 = pandas.DataFrame('', index=sarcmp.index, columns=sarcolumns)\n", + " for l in sarcolumns:\n", + " for j in df3.index:\n", + " df3[l][j]=[sarcmp[l+\"_\"+lrun][j],sarcmp[l+\"_\"+rrun][j],sarcmp[l+\"_\"+lrun][j]/sarcmp[l+\"_\"+rrun][j]-1]\n", + " display_compare(df3,sarcolumns)\n", + "\n", + " print(\"time breakdown\")\n", + " ################################ time breakdown ##################################################################################################\n", + " timel=appals.show_time_metric(plot=False)\n", + " timer=appals2.show_time_metric(plot=False)\n", + " timer.columns=[l.replace(\"scan time\",\"time_batchscan\") for l in timer.columns]\n", + " timel.columns=[l.replace(\"scan time\",\"time_batchscan\") for l in timel.columns]\n", + " rcols=timer.columns\n", + " lcols=[]\n", + " for c in [l.split(\"%\")[1][1:] for l in rcols]:\n", + " for t in timel.columns:\n", + " if t.endswith(c):\n", + " lcols.append(t)\n", + " for t in timel.columns:\n", + " if t not in lcols:\n", + " lcols.append(t)\n", + " timel_adj=timel[lcols]\n", + "\n", + " fig, axs = plt.subplots(nrows=1, ncols=2, sharey=True,figsize=(30,8),gridspec_kw = {'width_ratios':[1, 1]})\n", + " plt.subplots_adjust(wspace=0.01)\n", + " ax=timel_adj.plot.bar(ax=axs[0],stacked=True)\n", + " list_values=timel_adj.loc[0].values\n", + " for rect, value in zip(ax.patches, list_values):\n", + " h = rect.get_height() /2.\n", + " w = rect.get_width() /2.\n", + " x, y = rect.get_xy()\n", + " ax.text(x+w, y+h,\"{:,.2f}\".format(value),horizontalalignment='center',verticalalignment='center',color=\"white\")\n", + " ax=timer.plot.bar(ax=axs[1],stacked=True)\n", + " list_values=timer.loc[0].values\n", + " for rect, value in zip(ax.patches, list_values):\n", + " h = rect.get_height() /2.\n", + " w = rect.get_width() /2.\n", + " x, y = rect.get_xy()\n", + " ax.text(x+w, y+h,\"{:,.2f}\".format(value),horizontalalignment='center',verticalalignment='center',color=\"white\")\n", + "\n", + "################################ critical time breakdown ##################################################################################################\n", + " timel=appals.show_time_metric(plot=False,taskids=[l[0].item() for l in appals.criticaltasks])\n", + " timer=appals2.show_time_metric(plot=False,taskids=[l[0].item() for l in appals2.criticaltasks])\n", + " timer.columns=[l.replace(\"scan time\",\"time_batchscan\") for l in timer.columns]\n", + " timel.columns=[l.replace(\"scan time\",\"time_batchscan\") for l in timel.columns]\n", + " rcols=timer.columns\n", + " lcols=[]\n", + " for c in [l.split(\"%\")[1][1:] for l in rcols]:\n", + " for t in timel.columns:\n", + " if t.endswith(c):\n", + " lcols.append(t)\n", + " for t in timel.columns:\n", + " if t not in lcols:\n", + " lcols.append(t)\n", + " timel_adj=timel[lcols]\n", + "\n", + " fig, axs = plt.subplots(nrows=1, ncols=2, sharey=True,figsize=(30,8),gridspec_kw = {'width_ratios':[1, 1]})\n", + " plt.subplots_adjust(wspace=0.01)\n", + " ax=timel_adj.plot.bar(ax=axs[0],stacked=True)\n", + " list_values=timel_adj.loc[0].values\n", + " for rect, value in zip(ax.patches, list_values):\n", + " h = rect.get_height() /2.\n", + " w = rect.get_width() /2.\n", + " x, y = rect.get_xy()\n", + " ax.text(x+w, y+h,\"{:,.2f}\".format(value),horizontalalignment='center',verticalalignment='center',color=\"white\")\n", + " ax=timer.plot.bar(ax=axs[1],stacked=True)\n", + " list_values=timer.loc[0].values\n", + " for rect, value in zip(ax.patches, list_values):\n", + " h = rect.get_height() /2.\n", + " w = rect.get_width() /2.\n", + " x, y = rect.get_xy()\n", + " ax.text(x+w, y+h,\"{:,.2f}\".format(value),horizontalalignment='center',verticalalignment='center',color=\"white\")\n", + "\n", + "\n", + " ################################ hot stage ##########################################################################################################\n", + "\n", + " hotstagel=appals.get_hottest_stages(plot=False)\n", + " hotstager=appals2.get_hottest_stages(plot=False)\n", + " hotstagel.style.format(lambda x: '''{:,.2f}'''.format(x))\n", + "\n", + " norm = matplotlib.colors.Normalize(vmin=0, vmax=max(hotstager.queryid))\n", + " cmap = matplotlib.cm.get_cmap('brg')\n", + " def setbkcolor(x):\n", + " rgba=cmap(norm(x['queryid']))\n", + " return ['background-color:rgba({:d},{:d},{:d},1); color:white'.format(int(rgba[0]*255),int(rgba[1]*255),int(rgba[2]*255))]*9\n", + "\n", + " output.append(\"
\" + hotstagel.style.apply(setbkcolor,axis=1).format({\"total_time\":lambda x: '{:,.2f}'.format(x),\"stdev_time\":lambda x: '{:,.2f}'.format(x),\"acc_total\":lambda x: '{:,.2%}'.format(x),\"total\":lambda x: '{:,.2%}'.format(x)}).render()+\n", + " \"\" + hotstager.style.apply(setbkcolor,axis=1).format({\"total_time\":lambda x: '{:,.2f}'.format(x),\"stdev_time\":lambda x: '{:,.2f}'.format(x),\"acc_total\":lambda x: '{:,.2%}'.format(x),\"total\":lambda x: '{:,.2%}'.format(x)}).render()+ \"
\")\n", + "\n", + " if not show_queryplan_diff:\n", + " return \"\\n\".join(output)\n", + " \n", + " print(\"hot stage\")\n", + "\n", + " loperators=appals.getOperatorCount()\n", + " roperators=appals2.getOperatorCount()\n", + " loperators_rowcnt=appals.get_metric_output_rowcnt()\n", + " roperators_rowcnt=appals2.get_metric_output_rowcnt()\n", + " \n", + " def show_query_diff(queryid, always_show=True):\n", + " lops=pandas.DataFrame(loperators[queryid])\n", + " lops.columns=['calls_l']\n", + " lops=lops.loc[lops['calls_l'] >0]\n", + "\n", + " rops=pandas.DataFrame(roperators[queryid])\n", + " rops.columns=[\"calls_r\"]\n", + " rops=rops.loc[rops['calls_r'] >0]\n", + " lops_row=pandas.DataFrame(loperators_rowcnt[queryid])\n", + " lops_row.columns=[\"rows_l\"]\n", + " lops_row=lops_row.loc[lops_row['rows_l'] >0]\n", + "\n", + " rops_row=pandas.DataFrame(roperators_rowcnt[queryid])\n", + " rops_row.columns=[\"rows_r\"]\n", + " rops_row=rops_row.loc[rops_row['rows_r'] >0]\n", + "\n", + " opscmp=pandas.merge(pandas.merge(pandas.merge(lops,rops,how=\"outer\",left_index=True,right_index=True),lops_row,how=\"outer\",left_index=True,right_index=True),rops_row,how=\"outer\",left_index=True,right_index=True)\n", + " opscmp=opscmp.fillna(\"\")\n", + " \n", + " def set_bk_color_opscmp(x):\n", + " calls_l= 0 if x['calls_l']==\"\" else x['calls_l']\n", + " calls_r= 0 if x['calls_r']==\"\" else x['calls_r']\n", + " rows_l= 0 if x['rows_l']==\"\" else x['rows_l']\n", + " rows_r= 0 if x['rows_r']==\"\" else x['rows_r']\n", + "\n", + " if calls_l > calls_r or rows_l > rows_r:\n", + " return ['background-color:#eb6b34']*4\n", + " if calls_l < calls_r or rows_l < rows_r:\n", + " return ['background-color:#8ad158']*4\n", + " return ['color:#dbd4d0']*4\n", + "\n", + " if always_show or not (opscmp[\"rows_l\"].equals(opscmp[\"rows_r\"]) and opscmp[\"calls_l\"].equals(opscmp[\"calls_r\"])):\n", + " print(f\"query {queryid} queryplan diff \")\n", + " if not always_show:\n", + " output.append(f\"

query{queryid} is different

\")\n", + " output.append(opscmp.style.apply(set_bk_color_opscmp,axis=1).render())\n", + "\n", + " planl=appals.get_query_plan(queryid=queryid,show_plan_only=True,plot=False)\n", + " planr=appals2.get_query_plan(queryid=queryid,show_plan_only=True,plot=False)\n", + " output.append(\"
\"+planl+\"\"+planr+\"
\")\n", + "\n", + " outputx=df1['output rows']\n", + " runtimex = df1['runtime']\n", + " for x in outputx.index:\n", + " if runtimex[x][0]/runtimex[x][1]<0.95 or runtimex[x][0]/runtimex[x][1]>1.05:\n", + " output.append(f\"

query{x} is different,{lrun} time: {df1['runtime'][x][0]}, {rrun} time: {df1['runtime'][x][1]}

\")\n", + " if queryids is not None and x not in queryids:\n", + " print(\"query plan skipped\")\n", + " continue\n", + " try:\n", + " show_query_diff(x, True)\n", + " except:\n", + " print(\" query diff error\")\n", + " else:\n", + " try:\n", + " show_query_diff(x, False)\n", + " except:\n", + " print(\" query diff error\")\n", + " \n", + " return \"\\n\".join(output)\n", + " \n", + "\n", + " \n", + " def show_queryplan_diff(app2, queryid,**kwargs):\n", + " lbasedir=kwargs.get(\"basedir\",app2.basedir)\n", + " r_appid=kwargs.get(\"r_appid\",app2.appid)\n", + " \n", + " app=kwargs.get(\"rapp\",Application_Run(r_appid,basedir=lbasedir))\n", + "\n", + " appals=app.analysis[\"app\"][\"als\"]\n", + " appals2=app2.analysis[\"app\"][\"als\"]\n", + "\n", + " hotstagel=appals.get_hottest_stages(plot=False)\n", + " hotstager=appals2.get_hottest_stages(plot=False)\n", + " hotstagel.style.format(lambda x: '''{:,.2f}'''.format(x))\n", + "\n", + " loperators=appals.getOperatorCount()\n", + " roperators=appals2.getOperatorCount()\n", + " loperators_rowcnt=appals.get_metric_output_rowcnt()\n", + " roperators_rowcnt=appals2.get_metric_output_rowcnt()\n", + "\n", + " lrun=app.appid\n", + " rrun=app2.appid\n", + "\n", + " output=[]\n", + "\n", + " def show_query_diff(queryid):\n", + " lops=pandas.DataFrame(loperators[queryid])\n", + " lops.columns=['calls_l']\n", + " lops=lops.loc[lops['calls_l'] >0]\n", + "\n", + " rops=pandas.DataFrame(roperators[queryid])\n", + " rops.columns=[\"calls_r\"]\n", + " rops=rops.loc[rops['calls_r'] >0]\n", + " lops_row=pandas.DataFrame(loperators_rowcnt[queryid])\n", + " lops_row.columns=[\"rows_l\"]\n", + " lops_row=lops_row.loc[lops_row['rows_l'] >0]\n", + "\n", + " rops_row=pandas.DataFrame(roperators_rowcnt[queryid])\n", + " rops_row.columns=[\"rows_r\"]\n", + " rops_row=rops_row.loc[rops_row['rows_r'] >0]\n", + "\n", + " opscmp=pandas.merge(pandas.merge(pandas.merge(lops,rops,how=\"outer\",left_index=True,right_index=True),lops_row,how=\"outer\",left_index=True,right_index=True),rops_row,how=\"outer\",left_index=True,right_index=True)\n", + " opscmp=opscmp.fillna(\"\")\n", + "\n", + " def set_bk_color_opscmp(x):\n", + " calls_l= 0 if x['calls_l']==\"\" else x['calls_l']\n", + " calls_r= 0 if x['calls_r']==\"\" else x['calls_r']\n", + " rows_l= 0 if x['rows_l']==\"\" else x['rows_l']\n", + " rows_r= 0 if x['rows_r']==\"\" else x['rows_r']\n", + "\n", + " if calls_l > calls_r or rows_l > rows_r:\n", + " return ['background-color:#eb6b34']*4\n", + " if calls_l < calls_r or rows_l < rows_r:\n", + " return ['background-color:#8ad158']*4\n", + " return ['color:#dbd4d0']*4\n", + "\n", + " output.append(opscmp.style.apply(set_bk_color_opscmp,axis=1).render())\n", + "\n", + " planl=appals.get_query_plan(queryid=queryid,show_plan_only=True,plot=False)\n", + " planr=appals2.get_query_plan(queryid=queryid,show_plan_only=True,plot=False)\n", + " output.append(\"
\"+planl+\"\"+planr+\"
\")\n", + "\n", + " x=queryid\n", + " print(\"query \",x,\" queryplan diff \")\n", + " #output.append(f\"

query{x} is different,{lrun} time: {df1['runtime'][x][0]}, {rrun} time: {df1['runtime'][x][1]}

\")\n", + " show_query_diff(x)\n", + " display(HTML(\"\\n\".join(output)))\n", + " return" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MISC" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def reduce_metric(pdrst,slave_id,metric,core,agg_func):\n", + " pdrst['rst']=pdrst.apply(lambda x:x['app_id'].get_reduce_metric(slave_id,metric,core,agg_func), axis=1)\n", + " for l in agg_func:\n", + " pdrst[get_alias_name(metric,l)]=pdrst.apply(lambda x:x['rst'].iloc[0][get_alias_name(metric,l)],axis=1)\n", + " return pdrst.drop(columns=['rst'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# TPCDS query map" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "code_folding": [] + }, + "outputs": [], + "source": [ + "m='''1\tq01\n", + " 2\tq02\n", + " 3\tq03\n", + " 4\tq04\n", + " 5\tq05\n", + " 6\tq06\n", + " 7\tq07\n", + " 8\tq08\n", + " 9\tq09\n", + " 10\tq10\n", + " 11\tq11\n", + " 12\tq12\n", + " 13\tq13\n", + " 14\tq14a\n", + " 15\tq14b\n", + " 16\tq15\n", + " 17\tq16\n", + " 18\tq17\n", + " 19\tq18\n", + " 20\tq19\n", + " 21\tq20\n", + " 22\tq21\n", + " 23\tq22\n", + " 24\tq23a\n", + " 25\tq23b\n", + " 26\tq24a\n", + " 27\tq24b\n", + " 28\tq25\n", + " 29\tq26\n", + " 30\tq27\n", + " 31\tq28\n", + " 32\tq29\n", + " 33\tq30\n", + " 34\tq31\n", + " 35\tq32\n", + " 36\tq33\n", + " 37\tq34\n", + " 38\tq35\n", + " 39\tq36\n", + " 40\tq37\n", + " 41\tq38\n", + " 42\tq39a\n", + " 43\tq39b\n", + " 44\tq40\n", + " 45\tq41\n", + " 46\tq42\n", + " 47\tq43\n", + " 48\tq44\n", + " 49\tq45\n", + " 50\tq46\n", + " 51\tq47\n", + " 52\tq48\n", + " 53\tq49\n", + " 54\tq50\n", + " 55\tq51\n", + " 56\tq52\n", + " 57\tq53\n", + " 58\tq54\n", + " 59\tq55\n", + " 60\tq56\n", + " 61\tq57\n", + " 62\tq58\n", + " 63\tq59\n", + " 64\tq60\n", + " 65\tq61\n", + " 66\tq62\n", + " 67\tq63\n", + " 68\tq64\n", + " 69\tq65\n", + " 70\tq66\n", + " 71\tq67\n", + " 72\tq68\n", + " 73\tq69\n", + " 74\tq70\n", + " 75\tq71\n", + " 76\tq72\n", + " 77\tq73\n", + " 78\tq74\n", + " 79\tq75\n", + " 80\tq76\n", + " 81\tq77\n", + " 82\tq78\n", + " 83\tq79\n", + " 84\tq80\n", + " 85\tq81\n", + " 86\tq82\n", + " 87\tq83\n", + " 88\tq84\n", + " 89\tq85\n", + " 90\tq86\n", + " 91\tq87\n", + " 92\tq88\n", + " 93\tq89\n", + " 94\tq90\n", + " 95\tq91\n", + " 96\tq92\n", + " 97\tq93\n", + " 98\tq94\n", + " 99\tq95\n", + " 100\tq96\n", + " 101\tq97\n", + " 102\tq98\n", + " 103\tq99'''.split(\"\\n\")\n", + "tpcds_query_map=[l.strip().split(\"\\t\") for l in m]\n", + "tpcds_query_map={int(l[0]):l[1] for l in tpcds_query_map}" + ] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "nbTranslate": { + "displayLangs": [ + "*" + ], + "hotkey": "alt-t", + "langInMainMenu": true, + "sourceLang": "en", + "targetLang": "fr", + "useGoogleTranslate": true + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "298.281px", + "left": "1205px", + "top": "421.125px", + "width": "332px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tools/workload/benchmark_velox/initialize.ipynb b/tools/workload/benchmark_velox/initialize.ipynb index cbbc27686951..f280d60fdac0 100644 --- a/tools/workload/benchmark_velox/initialize.ipynb +++ b/tools/workload/benchmark_velox/initialize.ipynb @@ -2761,7 +2761,7 @@ "heading_collapsed": true }, "source": [ - "# Install Trace-Viewer (optional)" + "# Set up perf analysis tools (optional)" ] }, { @@ -2770,7 +2770,21 @@ "hidden": true }, "source": [ - "Clone the master branch\n", + "We have a set of perf analysis scripts under $GLUTEN_HOME/tools/workload/benchmark_velox/analysis. You can follow below steps to deploy the scripts on the same cluster and use them for performance analysis after each run." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Install and deploy Trace-Viewer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Clone the master branch of project catapult:\n", "```\n", "cd ~\n", "git clone https://github.com/catapult-project/catapult.git -b master\n", @@ -2783,11 +2797,11 @@ "hidden": true }, "source": [ - "Trace-Viewer requires python version 2.7. Create a virtualenv for python2.7\n", + "Trace-Viewer requires python version 2.7. Create a virtualenv for python2.7:\n", "```\n", "sudo apt install -y python2.7\n", - "virtualenv -p /usr/bin/python2.7 py27\n", - "source py27/bin/activate\n", + "virtualenv -p /usr/bin/python2.7 py27-env\n", + "source py27-env/bin/activate\n", "```" ] }, @@ -2797,7 +2811,7 @@ "hidden": true }, "source": [ - "Apply patch\n", + "Apply patch:\n", "\n", "```\n", "cd catapult\n", @@ -2832,13 +2846,84 @@ "hidden": true }, "source": [ - "Start the service\n", + "Start the service:\n", "\n", "```\n", "mkdir -p ~/trace_result\n", "cd ~/catapult && nohup ./bin/run_dev_server --no-install-hooks -d ~/trace_result -p1088 &\n", "```" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deploy perf analysis scripts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a virtualenv to run the perf analaysis scripts:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "```bash\n", + "cd ~\n", + "virtualenv -p python3 -v paus-env\n", + "source paus-env/bin/activate\n", + "python3 -m pip install -r ~/gluten/tools/workload/benchmark_velox/analysis/requirements.txt\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We will put all perf analysis notebooks under `$HOME/PAUS`. Create the directory and start the notebook:\n", + "\n", + "```bash\n", + "mkdir -p ~/PAUS\n", + "cd ~/PAUS\n", + "nohup jupyter notebook --ip=0.0.0.0 --port=8889 &\n", + "```\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Package the virtual environment so that it can be distributed to other nodes:\n", + "```bash\n", + "cd ~\n", + "tar -czf paus-env.tar.gz paus-env\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Distribute to the worker nodes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for l in clients:\n", + " !scp ~/paus-env.tar.gz {l}:~/\n", + " !ssh {l} tar -zxf paus-env.tar.gz" + ] } ], "metadata": { From 19397316297a96a35740e6408a78ee3a9e58700e Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Wed, 27 Nov 2024 07:55:26 +0000 Subject: [PATCH 02/12] update --- .../benchmark_velox/analysis/sparklog.ipynb | 185 ++++++++---------- .../native_sql_initialize.ipynb | 40 ++-- 2 files changed, 111 insertions(+), 114 deletions(-) diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb index 8ceaeb44fe55..8a74c97d4961 100644 --- a/tools/workload/benchmark_velox/analysis/sparklog.ipynb +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -14,24 +14,11 @@ "outputs": [], "source": [ "from __future__ import nested_scopes\n", - "from IPython.core.display import display, HTML\n", - "display(HTML(\"\"))\n", + "from IPython.display import display, HTML\n", + "display(HTML(''))\n", "display(HTML(''))" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pyspark.sql.functions as F\n", - "import json\n", - "import builtins\n", - "from itertools import chain\n", - "import seaborn as sns\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -54,15 +41,29 @@ "metadata": {}, "outputs": [], "source": [ - "import re\n", "import os\n", + "import datetime\n", + "from datetime import date\n", + "import time\n", + "import threading\n", + "import gzip\n", + "import json\n", + "import math\n", + "import re\n", + "import html\n", + "import builtins\n", + "\n", + "import collections\n", + "import numpy\n", "import pandas\n", - "pandas.set_option('display.max_rows', None)\n", + "pandas.options.display.max_rows=50\n", + "pandas.options.display.max_columns=200\n", + "pandas.options.display.float_format = '{:,}'.format\n", "\n", "import matplotlib\n", - "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mtick\n", + "import matplotlib.lines as mlines\n", "from matplotlib import colors\n", "from matplotlib import rcParams\n", "rcParams['font.sans-serif'] = 'Courier New'\n", @@ -70,90 +71,24 @@ "rcParams['font.size'] = '12'\n", "%matplotlib inline\n", "\n", - "from IPython.display import display,HTML\n", - "import threading\n", - "import collections\n", - "\n", - "from IPython.display import display\n", "from ipywidgets import IntProgress,Layout\n", - "import time\n", - "import threading\n", - "import gzip\n", + "\n", "import pyspark\n", "import pyspark.sql\n", + "import pyspark.sql.functions as F\n", "from pyspark.sql import SparkSession\n", - "from pyspark.sql.types import (StructType, StructField, DateType,\n", - " TimestampType, StringType, LongType, IntegerType, DoubleType,FloatType)\n", - "from pyspark.sql.functions import to_date, floor\n", - "from pyspark.ml.feature import StringIndexer, VectorAssembler\n", - "from pyspark.ml import Pipeline\n", - "from pyspark.sql.functions import lit\n", - "import datetime\n", - "import time\n", - "from pyspark.storagelevel import StorageLevel\n", + "from pyspark.sql.functions import to_date, floor, lit, rank, col, pandas_udf, PandasUDFType\n", "from pyspark.sql.window import Window\n", - "from pyspark.sql.functions import rank, col\n", - "from pyspark.ml import Pipeline\n", - "import numpy\n", - "\n", - "import re\n", - "import math\n", - "from functools import reduce\n", - "import json\n", - "\n", "from pyspark.sql.types import *\n", - "from pyspark.sql import functions as F\n", - "from datetime import date" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pyspark.sql.types import (StructType, StructField, DateType,\n", - " TimestampType, StringType, LongType, IntegerType, DoubleType,FloatType)\n", - "\n", - "from pyspark.sql.functions import pandas_udf, PandasUDFType\n", - "\n", - "from pyspark.ml.clustering import KMeans\n", + "from pyspark.ml import Pipeline\n", "from pyspark.ml.feature import StringIndexer, VectorAssembler\n", + "from pyspark.ml.clustering import KMeans\n", + "from pyspark.storagelevel import StorageLevel\n", "\n", - "from pyspark.sql.window import Window\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", + "import seaborn as sns\n", "from functools import reduce\n", - "import re\n", - "import collections\n", - "from pyspark.ml import Pipeline\n", - "import numpy\n", - "import time\n", "from pandasql import sqldf\n", - "import html\n", - "\n", - "pandas.options.display.max_rows=50\n", - "pandas.options.display.max_columns=200\n", - "pandas.options.display.float_format = '{:,}'.format" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ipywidgets import IntProgress,Layout\n", - "import seaborn as sns\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.lines as mlines\n" + "from itertools import chain" ] }, { @@ -163,7 +98,6 @@ "outputs": [], "source": [ "import pyhdfs\n", - "\n", "import socket\n", "localhost=socket.gethostname()\n", "local_ip=socket.gethostbyname(localhost)\n", @@ -4167,6 +4101,15 @@ "# Dask Application Run" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -4231,9 +4174,48 @@ " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", " outfile.write(output)\n", "\n", - " print(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appid}.json\")" + " print(\"http://sr219:1088/tracing_examples/trace_viewer.html#/tracing/test_data/\"+self.appid+\".json\")" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "from datetime import datetime\n", + "datetime.fromtimestamp(1546439400)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -4953,7 +4935,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# MISC" ] @@ -4961,7 +4945,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "def reduce_metric(pdrst,slave_id,metric,core,agg_func):\n", @@ -4973,7 +4959,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# TPCDS query map" ] @@ -4982,7 +4970,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index ee6bf443f6b4..e345a9a0bd57 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -69,6 +69,20 @@ "# System Settings" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from pathlib import Path\n", + "home = os.path.realpath(str(Path.home()))\n", + "cwd = os.getcwd()\n", + "print(f'home: {home}')\n", + "print(f'cwd: {cwd}')" + ] + }, { "cell_type": "code", "execution_count": null, @@ -264,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "code_folding": [] }, @@ -274,23 +288,23 @@ "import os\n", "import sys\n", "\n", - "from pathlib import Path\n", - "home = str(Path.home())\n", - "\n", "def upload_profile(server, base_dir, appid):\n", " local_profile_dir = os.path.join(home, 'profile')\n", " !mkdir -p {local_profile_dir}\n", - " !cd {local_profile_dir}; rm -f {appid}.tar.gz; tar zcvf {appid}.tar.gz {appid} >/dev/null 2>&1\n", + " !(cd {local_profile_dir}; rm -f {appid}.tar.gz; tar zcvf {appid}.tar.gz {appid}) >/dev/null 2>&1\n", " \n", " server_local_dir=os.path.join('PAUS', base_dir)\n", " server_local_profile_dir=os.path.join(server_local_dir, 'profile')\n", " server_hdfs_dir=f'/{base_dir}/'\n", "\n", " !ssh {server} \"mkdir -p {server_local_profile_dir}\"\n", - " !ssh {server} \"cd {server_local_profile_dir}; rm {appid}.tar.gz; rm -r {appid} >/dev/null 2>&1\"\n", + " !ssh {server} \"cd {server_local_profile_dir} && rm {appid}.tar.gz >/dev/null 2>&1\"\n", + " !ssh {server} \"cd {server_local_profile_dir} && rm -r {appid} >/dev/null 2>&1\"\n", " !scp {local_profile_dir}/{appid}.tar.gz {server}:{server_local_profile_dir}/\n", " !ssh {server} \"cd {server_local_profile_dir} && tar zxf {appid}.tar.gz\"\n", - " !ssh {server} \"hdfs dfs -mkdir -p {server_hdfs_dir}; hdfs dfs -rm -r {server_hdfs_dir}{appid}; hdfs dfs -put {server_local_profile_dir}/{appid} {server_hdfs_dir}\"\n", + " !ssh {server} \"hdfs dfs -mkdir -p {server_hdfs_dir}\"\n", + " !ssh {server} \"hdfs dfs -rm -r {server_hdfs_dir}{appid} >/dev/null 2>&1\"\n", + " !ssh {server} \"hdfs dfs -put {server_local_profile_dir}/{appid} {server_hdfs_dir}\"\n", " !ssh {server} \"cd {server_local_profile_dir}; rm {appid}.tar.gz; rm -r {appid}\"\n", "\n", "def killsar(clients):\n", @@ -797,15 +811,9 @@ " stopmonitor(clients, self.sc, self.appid, **kw)\n", " if self.server:\n", " output_nb = f'{self.nb_name[:-6]}-{self.appid}.ipynb'\n", - " if output_nb.startswith(home):\n", - " output_nb_name = os.path.relpath(output_nb, home)\n", - " else:\n", - " output_nb_name = output_nb\n", - " output_nb_dir = os.path.dirname(output_nb_name)\n", - " server_nb_dir = os.path.join('PAUS', self.base_dir, output_nb_dir)\n", - " !ssh {self.server} \"mkdir -p {server_nb_dir}\"\n", - " !scp {output_nb} {self.server}:{server_nb_dir}\n", - " self.finished_nb = f\"http://{self.server}:8888/tree/{self.base_dir}/{output_nb_name}\"\n", + " if output_nb.startswith(cwd):\n", + " output_nb = os.path.relpath(output_nb, home)\n", + " self.finished_nb = f\"http://{localhost}:8888/tree/{output_nb}\"\n", " self.stopped = True\n", "\n", " def run_perf_analysis(self, disk_dev, nic_dev):\n", From 032cf090663f430f7c58517318b2e0c438b5e4d5 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Wed, 27 Nov 2024 08:49:43 +0000 Subject: [PATCH 03/12] add sample trace_view --- tools/workload/benchmark_velox/README.md | 20 + .../sample/trace_result_tpch_q1.json | 517 ++++++++++++++++++ 2 files changed, 537 insertions(+) create mode 100644 tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json diff --git a/tools/workload/benchmark_velox/README.md b/tools/workload/benchmark_velox/README.md index 5f080077f606..120bed8d9c99 100644 --- a/tools/workload/benchmark_velox/README.md +++ b/tools/workload/benchmark_velox/README.md @@ -36,3 +36,23 @@ We also provide a script [run_tpc_workload.sh](./run_tpc_workload.sh). This scri ## Analyzing Performance Results You can check the **Show Performance** section in the output notebook after execution. It shows the cpu% per query, and draws charts for the cpu%, memory throughput, disk throughput/util%, network throughput and pagefaults. + +## Set up Performance Analysis Tools + +Please check the **Set up perf analysis tools (optional)** section in [initialize.ipynb](./initialize.ipynb) to set up the environment required for running performance analysis scripts. Once the setup is complete, update the following variables in your YAML file (as documented in [params.yaml.template](./params.yaml.template)) before running TPC-H/TPC-DS Benchmarks: + +- server: Hostname or IP to server for perf analysis. Able to connect via ssh. Can be localhost if you deploy the perf analysis scripts on the local cluster. +- base_dir: Specify the directory on perf analysis server. Usually a codename for this run. +- analyze_perf: Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set. In this case set to `True` +- proxy: Proxy used to connect to server for perf analysis. Only needed if the perf analysis server is accessed via proxy. + +After the workload completes, the tool generates a notebook, executes it automatically, and saves the output notebook in the `$HOME/PAUS/base_dir` directory with a suffix of `[APPLICATION ID].nbconvert.ipynb`. Additionally, the output notebook is converted into an HTML format for improved readability, with the same filename, and stored in the `html` sub-folder. + +The notebook also produces a trace-viewer JSON file to analyze workload statistics. This includes SAR metrics and stage/task-level breakdowns. Using this tool, users can compare statistics across stages and queries, identify performance bottlenecks, and target specific stages for optimization. + +If you have set up and launched Catapult trace-viewer server (refer to the **Set up perf analysis tools (optional)** section in [initialize.ipynb](./initialize.ipynb)), you can explore a sample trace-viewer JSON file. To do so: + +1. Copy the sample file [trace_result_tpch_q1.json](./sample/trace_result_tpch_q1.json) to the `$HOME/trace_result` directory +2. Open the following link in your browser to view the results: http://[your-host-ip]:1088/tracing_examples/trace_viewer.html#/tracing/test_data/trace_result_tpch_q1.json + +This visualization helps to better understand performance metrics and optimize accordingly. diff --git a/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json b/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json new file mode 100644 index 000000000000..4099df0c4ada --- /dev/null +++ b/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json @@ -0,0 +1,517 @@ + + { + "traceEvents": [ + + {"name": "process_name", "ph": "M", "pid": 100300, "tid": 0, "args": {"name": "sr217.3"}}, +{"tid": 100300, "ts": -29221, "dur": 1658, "pid": 100300, "ph": "X", "name": "stg0", "args": {"job id": 0, "stage id": 0, "tskid": 0, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"name": "process_name", "ph": "M", "pid": 100200, "tid": 0, "args": {"name": "sr217.2"}}, +{"tid": 100200, "ts": -25482, "dur": 1673, "pid": 100200, "ph": "X", "name": "stg1", "args": {"job id": 1, "stage id": 1, "tskid": 1, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -23725, "dur": 44, "pid": 100300, "ph": "X", "name": "stg2", "args": {"job id": 2, "stage id": 2, "tskid": 2, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"name": "process_name", "ph": "M", "pid": 100400, "tid": 0, "args": {"name": "sr217.4"}}, +{"tid": 100400, "ts": -23602, "dur": 1568, "pid": 100400, "ph": "X", "name": "stg3", "args": {"job id": 3, "stage id": 3, "tskid": 3, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100400, "ts": -21959, "dur": 45, "pid": 100400, "ph": "X", "name": "stg4", "args": {"job id": 4, "stage id": 4, "tskid": 4, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -21844, "dur": 33, "pid": 100300, "ph": "X", "name": "stg5", "args": {"job id": 5, "stage id": 5, "tskid": 5, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"name": "process_name", "ph": "M", "pid": 100100, "tid": 0, "args": {"name": "sr217.1"}}, +{"tid": 100100, "ts": -21745, "dur": 1580, "pid": 100100, "ph": "X", "name": "stg6", "args": {"job id": 6, "stage id": 6, "tskid": 6, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100400, "ts": -20094, "dur": 34, "pid": 100400, "ph": "X", "name": "stg7", "args": {"job id": 7, "stage id": 7, "tskid": 7, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100303, "ts": -18980, "dur": 13476, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 20, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100302, "ts": -18981, "dur": 13530, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 16, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -18985, "dur": 13603, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 8, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100402, "ts": -18981, "dur": 13669, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 19, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100400, "ts": -18982, "dur": 13677, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 11, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100301, "ts": -18982, "dur": 13895, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 12, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100401, "ts": -18982, "dur": 13916, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 15, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100103, "ts": -18980, "dur": 13937, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 22, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100203, "ts": -18980, "dur": 14105, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 21, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100403, "ts": -18980, "dur": 14143, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 23, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100202, "ts": -18981, "dur": 14411, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 17, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100100, "ts": -18982, "dur": 14459, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 10, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100102, "ts": -18981, "dur": 14535, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 18, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100201, "ts": -18982, "dur": 14582, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 13, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100101, "ts": -18982, "dur": 14586, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 14, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100200, "ts": -18982, "dur": 14613, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 9, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -3986, "dur": 735, "pid": 100300, "ph": "X", "name": "stg10", "args": {"job id": 9, "stage id": 10, "tskid": 24, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100400, "ts": -3214, "dur": 980, "pid": 100400, "ph": "X", "name": "stg12", "args": {"job id": 10, "stage id": 12, "tskid": 25, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -2089, "dur": 115, "pid": 100300, "ph": "X", "name": "stg15", "args": {"job id": 11, "stage id": 15, "tskid": 26, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid":38,"ts":-2088,"dur":114,"pid":99999,"ph":"X","name":"stg15","args":{"taskid":26,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-3213,"dur":979,"pid":99999,"ph":"X","name":"stg12","args":{"taskid":25,"exec_id":4,"host":"sr217"}}, +{"tid":38,"ts":-3985,"dur":734,"pid":99999,"ph":"X","name":"stg10","args":{"taskid":24,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-18981,"dur":14612,"pid":99999,"ph":"X","name":"stg8","args":{"taskid":9,"exec_id":2,"host":"sr217"}}, +{"tid":38,"ts":-20093,"dur":33,"pid":99999,"ph":"X","name":"stg7","args":{"taskid":7,"exec_id":4,"host":"sr217"}}, +{"tid":38,"ts":-21744,"dur":1579,"pid":99999,"ph":"X","name":"stg6","args":{"taskid":6,"exec_id":1,"host":"sr217"}}, +{"tid":38,"ts":-21843,"dur":32,"pid":99999,"ph":"X","name":"stg5","args":{"taskid":5,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-21958,"dur":44,"pid":99999,"ph":"X","name":"stg4","args":{"taskid":4,"exec_id":4,"host":"sr217"}}, +{"tid":38,"ts":-23601,"dur":1567,"pid":99999,"ph":"X","name":"stg3","args":{"taskid":3,"exec_id":4,"host":"sr217"}}, +{"tid":38,"ts":-23724,"dur":43,"pid":99999,"ph":"X","name":"stg2","args":{"taskid":2,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-25481,"dur":1672,"pid":99999,"ph":"X","name":"stg1","args":{"taskid":1,"exec_id":2,"host":"sr217"}}, +{"tid":38,"ts":-29220,"dur":1657,"pid":99999,"ph":"X","name":"stg0","args":{"taskid":0,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-29221,"dur":9161,"pid":99999,"ph":"X","name":"qry0"}, +{"tid":38,"ts":-18985,"dur":17011,"pid":99999,"ph":"X","name":"qry1"}, +{"tid":38,"ts":-18981,"dur":7473,"pid":99999,"ph":"X","name":"time of scan and filter"}, +{"tid":38,"ts":-11507,"dur":6477,"pid":99999,"ph":"X","name":"time of project"}, +{"tid":38,"ts":-5029,"dur":32,"pid":99999,"ph":"X","name":"time of aggregation"}, +{"tid":38,"ts":-3985,"dur":20,"pid":99999,"ph":"X","name":"time of input iterator"}, +{"tid":38,"ts":-3213,"dur":20,"pid":99999,"ph":"X","name":"time of input iterator"}, +{"tid":38,"ts":-2088,"dur":4,"pid":99999,"ph":"X","name":"time of input iterator"}, +{"name": "process_name", "ph": "M", "pid": 99999, "tid": 0, "args": {"name": "critical path"}}, +{"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, +{"tid":0,"ts":-30931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":2,"system":1,"iowait":0}}, +{"tid":0,"ts":-29931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":0,"system":0,"iowait":0}}, +{"tid":0,"ts":-28931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":14,"system":0,"iowait":0}}, +{"tid":0,"ts":-27931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":4,"system":0,"iowait":0}}, +{"tid":0,"ts":-26931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":1,"system":0,"iowait":0}}, +{"tid":0,"ts":-25931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":3,"system":0,"iowait":0}}, +{"tid":0,"ts":-24931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":14,"system":0,"iowait":0}}, +{"tid":0,"ts":-23931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":9,"system":0,"iowait":0}}, +{"tid":0,"ts":-22931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, +{"tid":0,"ts":-21931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":10,"system":0,"iowait":0}}, +{"tid":0,"ts":-20931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, +{"tid":0,"ts":-19931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":1,"system":0,"iowait":0}}, +{"tid":0,"ts":-18931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":53,"system":6,"iowait":1}}, +{"tid":0,"ts":-17931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":8,"iowait":0}}, +{"tid":0,"ts":-16931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":68,"system":10,"iowait":4}}, +{"tid":0,"ts":-15931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":83,"system":8,"iowait":0}}, +{"tid":0,"ts":-14931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":84,"system":6,"iowait":0}}, +{"tid":0,"ts":-13931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":80,"system":8,"iowait":1}}, +{"tid":0,"ts":-12931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":9,"iowait":1}}, +{"tid":0,"ts":-11931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":9,"iowait":1}}, +{"tid":0,"ts":-10931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":82,"system":8,"iowait":0}}, +{"tid":0,"ts":-9931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":79,"system":8,"iowait":1}}, +{"tid":0,"ts":-8931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":83,"system":7,"iowait":0}}, +{"tid":0,"ts":-7931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":80,"system":9,"iowait":0}}, +{"tid":0,"ts":-6931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":79,"system":8,"iowait":0}}, +{"tid":0,"ts":-5931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":73,"system":8,"iowait":0}}, +{"tid":0,"ts":-4931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":32,"system":3,"iowait":0}}, +{"tid":0,"ts":-3931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":11,"system":0,"iowait":0}}, +{"tid":0,"ts":-2931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 0, "args": {"sort_index ": 0}}, +{"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, +{"tid":3,"ts":-30931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-29931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-28931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":3,"ts":-27931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-26931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-25931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":3,"ts":-24931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-23931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":3,"ts":-22931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-21931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":3,"ts":-20931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-19931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, +{"tid":3,"ts":-18931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":391,"write":0}}, +{"tid":3,"ts":-17931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":144,"write":718}}, +{"tid":3,"ts":-16931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":489,"write":297}}, +{"tid":3,"ts":-15931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":419,"write":0}}, +{"tid":3,"ts":-14931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":202,"write":0}}, +{"tid":3,"ts":-13931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":427,"write":0}}, +{"tid":3,"ts":-12931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":486,"write":0}}, +{"tid":3,"ts":-11931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":478,"write":0}}, +{"tid":3,"ts":-10931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":469,"write":0}}, +{"tid":3,"ts":-9931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":438,"write":0}}, +{"tid":3,"ts":-8931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":359,"write":0}}, +{"tid":3,"ts":-7931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":442,"write":0}}, +{"tid":3,"ts":-6931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":438,"write":0}}, +{"tid":3,"ts":-5931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":343,"write":0}}, +{"tid":3,"ts":-4931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":68,"write":0}}, +{"tid":3,"ts":-3931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":3,"ts":-2931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, +{"tid":4,"ts":-30931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-29931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-28931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-27931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-26931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-25931,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, +{"tid":4,"ts":-24931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-23931,"pid":0,"ph":"C","name":"disk%","args":{"%util":4.0}}, +{"tid":4,"ts":-22931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-21931,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, +{"tid":4,"ts":-20931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-19931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-18931,"pid":0,"ph":"C","name":"disk%","args":{"%util":29.0}}, +{"tid":4,"ts":-17931,"pid":0,"ph":"C","name":"disk%","args":{"%util":95.0}}, +{"tid":4,"ts":-16931,"pid":0,"ph":"C","name":"disk%","args":{"%util":74.0}}, +{"tid":4,"ts":-15931,"pid":0,"ph":"C","name":"disk%","args":{"%util":55.0}}, +{"tid":4,"ts":-14931,"pid":0,"ph":"C","name":"disk%","args":{"%util":45.0}}, +{"tid":4,"ts":-13931,"pid":0,"ph":"C","name":"disk%","args":{"%util":42.0}}, +{"tid":4,"ts":-12931,"pid":0,"ph":"C","name":"disk%","args":{"%util":58.0}}, +{"tid":4,"ts":-11931,"pid":0,"ph":"C","name":"disk%","args":{"%util":61.0}}, +{"tid":4,"ts":-10931,"pid":0,"ph":"C","name":"disk%","args":{"%util":72.0}}, +{"tid":4,"ts":-9931,"pid":0,"ph":"C","name":"disk%","args":{"%util":68.0}}, +{"tid":4,"ts":-8931,"pid":0,"ph":"C","name":"disk%","args":{"%util":65.0}}, +{"tid":4,"ts":-7931,"pid":0,"ph":"C","name":"disk%","args":{"%util":66.0}}, +{"tid":4,"ts":-6931,"pid":0,"ph":"C","name":"disk%","args":{"%util":61.0}}, +{"tid":4,"ts":-5931,"pid":0,"ph":"C","name":"disk%","args":{"%util":65.0}}, +{"tid":4,"ts":-4931,"pid":0,"ph":"C","name":"disk%","args":{"%util":23.0}}, +{"tid":4,"ts":-3931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":4,"ts":-2931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, +{"tid":5,"ts":-30931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, +{"tid":5,"ts":-29931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, +{"tid":5,"ts":-28931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":98.62}}, +{"tid":5,"ts":-27931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":53.2}}, +{"tid":5,"ts":-26931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, +{"tid":5,"ts":-25931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":102.56}}, +{"tid":5,"ts":-24931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, +{"tid":5,"ts":-23931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":76.11}}, +{"tid":5,"ts":-22931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":65.75}}, +{"tid":5,"ts":-21931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":75.09}}, +{"tid":5,"ts":-20931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":73.71}}, +{"tid":5,"ts":-19931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":65.75}}, +{"tid":5,"ts":-18931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.39}}, +{"tid":5,"ts":-17931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":114.09}}, +{"tid":5,"ts":-16931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":96.23}}, +{"tid":5,"ts":-15931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.41}}, +{"tid":5,"ts":-14931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.05}}, +{"tid":5,"ts":-13931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.07}}, +{"tid":5,"ts":-12931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.58}}, +{"tid":5,"ts":-11931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.72}}, +{"tid":5,"ts":-10931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.49}}, +{"tid":5,"ts":-9931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.53}}, +{"tid":5,"ts":-8931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.51}}, +{"tid":5,"ts":-7931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.79}}, +{"tid":5,"ts":-6931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.81}}, +{"tid":5,"ts":-5931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":82.71}}, +{"tid":5,"ts":-4931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":80.16}}, +{"tid":5,"ts":-3931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":101.14}}, +{"tid":5,"ts":-2931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":101.14}}, +{"tid":6,"ts":-30931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-29931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-28931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":6,"ts":-27931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-26931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-25931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":6,"ts":-24931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-23931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":6,"ts":-22931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-21931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":6,"ts":-20931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-19931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-18931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.64}}, +{"tid":6,"ts":-17931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":56.58}}, +{"tid":6,"ts":-16931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":152.6}}, +{"tid":6,"ts":-15931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.3}}, +{"tid":6,"ts":-14931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":1.76}}, +{"tid":6,"ts":-13931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":6.88}}, +{"tid":6,"ts":-12931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.88}}, +{"tid":6,"ts":-11931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.02}}, +{"tid":6,"ts":-10931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.54}}, +{"tid":6,"ts":-9931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.96}}, +{"tid":6,"ts":-8931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.26}}, +{"tid":6,"ts":-7931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.72}}, +{"tid":6,"ts":-6931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.58}}, +{"tid":6,"ts":-5931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.26}}, +{"tid":6,"ts":-4931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.6}}, +{"tid":6,"ts":-3931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":6,"ts":-2931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, +{"tid":7,"ts":-30931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, +{"tid":7,"ts":-29931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, +{"tid":7,"ts":-28931,"pid":0,"ph":"C","name":"await","args":{"await":0.23}}, +{"tid":7,"ts":-27931,"pid":0,"ph":"C","name":"await","args":{"await":0.15}}, +{"tid":7,"ts":-26931,"pid":0,"ph":"C","name":"await","args":{"await":0.33}}, +{"tid":7,"ts":-25931,"pid":0,"ph":"C","name":"await","args":{"await":0.16}}, +{"tid":7,"ts":-24931,"pid":0,"ph":"C","name":"await","args":{"await":0.33}}, +{"tid":7,"ts":-23931,"pid":0,"ph":"C","name":"await","args":{"await":0.22}}, +{"tid":7,"ts":-22931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, +{"tid":7,"ts":-21931,"pid":0,"ph":"C","name":"await","args":{"await":0.2}}, +{"tid":7,"ts":-20931,"pid":0,"ph":"C","name":"await","args":{"await":0.21}}, +{"tid":7,"ts":-19931,"pid":0,"ph":"C","name":"await","args":{"await":0.31}}, +{"tid":7,"ts":-18931,"pid":0,"ph":"C","name":"await","args":{"await":0.59}}, +{"tid":7,"ts":-17931,"pid":0,"ph":"C","name":"await","args":{"await":3.65}}, +{"tid":7,"ts":-16931,"pid":0,"ph":"C","name":"await","args":{"await":9.11}}, +{"tid":7,"ts":-15931,"pid":0,"ph":"C","name":"await","args":{"await":0.42}}, +{"tid":7,"ts":-14931,"pid":0,"ph":"C","name":"await","args":{"await":0.35}}, +{"tid":7,"ts":-13931,"pid":0,"ph":"C","name":"await","args":{"await":0.66}}, +{"tid":7,"ts":-12931,"pid":0,"ph":"C","name":"await","args":{"await":0.49}}, +{"tid":7,"ts":-11931,"pid":0,"ph":"C","name":"await","args":{"await":0.43}}, +{"tid":7,"ts":-10931,"pid":0,"ph":"C","name":"await","args":{"await":0.4}}, +{"tid":7,"ts":-9931,"pid":0,"ph":"C","name":"await","args":{"await":0.37}}, +{"tid":7,"ts":-8931,"pid":0,"ph":"C","name":"await","args":{"await":0.37}}, +{"tid":7,"ts":-7931,"pid":0,"ph":"C","name":"await","args":{"await":0.44}}, +{"tid":7,"ts":-6931,"pid":0,"ph":"C","name":"await","args":{"await":0.43}}, +{"tid":7,"ts":-5931,"pid":0,"ph":"C","name":"await","args":{"await":0.38}}, +{"tid":7,"ts":-4931,"pid":0,"ph":"C","name":"await","args":{"await":0.34}}, +{"tid":7,"ts":-3931,"pid":0,"ph":"C","name":"await","args":{"await":0.24}}, +{"tid":7,"ts":-2931,"pid":0,"ph":"C","name":"await","args":{"await":0.29}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 3, "args": {"sort_index ": 3}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 4, "args": {"sort_index ": 4}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 5, "args": {"sort_index ": 5}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 6, "args": {"sort_index ": 6}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 7, "args": {"sort_index ": 7}}, +{"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, +{"tid":1,"ts":-30931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-29931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-28931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-27931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-26931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-25931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-24931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-23931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-22931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-21931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-20931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-19931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, +{"tid":1,"ts":-18931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-17931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-16931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-15931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-14931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-13931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, +{"tid":1,"ts":-12931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-11931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-10931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-9931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-8931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-7931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-6931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-5931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-4931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-3931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":1,"ts":-2931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, +{"tid":2,"ts":-30931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-29931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-28931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-27931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-26931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-25931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-24931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-23931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-22931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-21931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-20931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-19931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-18931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-17931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-16931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-15931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-14931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-13931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-12931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-11931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-10931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-9931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-8931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-7931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-6931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-5931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-4931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-3931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-2931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 1, "args": {"sort_index ": 1}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 2, "args": {"sort_index ": 2}}, +{"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, +{"tid":10,"ts":-30931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-29931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-28931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-27931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-26931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-25931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-24931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-23931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-22931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-21931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-20931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-19931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-18931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":516,"txmb/s":516}}, +{"tid":10,"ts":-17931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":621,"txmb/s":621}}, +{"tid":10,"ts":-16931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":843,"txmb/s":843}}, +{"tid":10,"ts":-15931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":719,"txmb/s":719}}, +{"tid":10,"ts":-14931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":454,"txmb/s":454}}, +{"tid":10,"ts":-13931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":792,"txmb/s":792}}, +{"tid":10,"ts":-12931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":873,"txmb/s":873}}, +{"tid":10,"ts":-11931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":909,"txmb/s":909}}, +{"tid":10,"ts":-10931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":868,"txmb/s":868}}, +{"tid":10,"ts":-9931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":876,"txmb/s":876}}, +{"tid":10,"ts":-8931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":735,"txmb/s":735}}, +{"tid":10,"ts":-7931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":843,"txmb/s":843}}, +{"tid":10,"ts":-6931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":848,"txmb/s":848}}, +{"tid":10,"ts":-5931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":780,"txmb/s":780}}, +{"tid":10,"ts":-4931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":210,"txmb/s":210}}, +{"tid":10,"ts":-3931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-2931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 8, "args": {"sort_index ": 8}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 9, "args": {"sort_index ": 9}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 10, "args": {"sort_index ": 10}}, +{"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, +{"tid":11,"ts":-30931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-29931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":39}}, +{"tid":11,"ts":-28931,"pid":0,"ph":"C","name":"page inout","args":{"in":2,"out":1}}, +{"tid":11,"ts":-27931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-26931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-25931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":11,"ts":-24931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-23931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":11,"ts":-22931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-21931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":11,"ts":-20931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-19931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, +{"tid":11,"ts":-18931,"pid":0,"ph":"C","name":"page inout","args":{"in":392,"out":0}}, +{"tid":11,"ts":-17931,"pid":0,"ph":"C","name":"page inout","args":{"in":145,"out":745}}, +{"tid":11,"ts":-16931,"pid":0,"ph":"C","name":"page inout","args":{"in":489,"out":270}}, +{"tid":11,"ts":-15931,"pid":0,"ph":"C","name":"page inout","args":{"in":419,"out":0}}, +{"tid":11,"ts":-14931,"pid":0,"ph":"C","name":"page inout","args":{"in":202,"out":0}}, +{"tid":11,"ts":-13931,"pid":0,"ph":"C","name":"page inout","args":{"in":427,"out":0}}, +{"tid":11,"ts":-12931,"pid":0,"ph":"C","name":"page inout","args":{"in":486,"out":0}}, +{"tid":11,"ts":-11931,"pid":0,"ph":"C","name":"page inout","args":{"in":478,"out":0}}, +{"tid":11,"ts":-10931,"pid":0,"ph":"C","name":"page inout","args":{"in":469,"out":0}}, +{"tid":11,"ts":-9931,"pid":0,"ph":"C","name":"page inout","args":{"in":437,"out":0}}, +{"tid":11,"ts":-8931,"pid":0,"ph":"C","name":"page inout","args":{"in":360,"out":0}}, +{"tid":11,"ts":-7931,"pid":0,"ph":"C","name":"page inout","args":{"in":441,"out":0}}, +{"tid":11,"ts":-6931,"pid":0,"ph":"C","name":"page inout","args":{"in":438,"out":0}}, +{"tid":11,"ts":-5931,"pid":0,"ph":"C","name":"page inout","args":{"in":343,"out":0}}, +{"tid":11,"ts":-4931,"pid":0,"ph":"C","name":"page inout","args":{"in":68,"out":0}}, +{"tid":11,"ts":-3931,"pid":0,"ph":"C","name":"page inout","args":{"in":2,"out":3}}, +{"tid":11,"ts":-2931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":12,"ts":-30931,"pid":0,"ph":"C","name":"faults","args":{"major":1,"minor":23980}}, +{"tid":12,"ts":-29931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":2538}}, +{"tid":12,"ts":-28931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":61704}}, +{"tid":12,"ts":-27931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":6771}}, +{"tid":12,"ts":-26931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":1435}}, +{"tid":12,"ts":-25931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":15931}}, +{"tid":12,"ts":-24931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":49910}}, +{"tid":12,"ts":-23931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":14816}}, +{"tid":12,"ts":-22931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":50900}}, +{"tid":12,"ts":-21931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":15503}}, +{"tid":12,"ts":-20931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":43315}}, +{"tid":12,"ts":-19931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":484}}, +{"tid":12,"ts":-18931,"pid":0,"ph":"C","name":"faults","args":{"major":1,"minor":153303}}, +{"tid":12,"ts":-17931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":154535}}, +{"tid":12,"ts":-16931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":203874}}, +{"tid":12,"ts":-15931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":190509}}, +{"tid":12,"ts":-14931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":146313}}, +{"tid":12,"ts":-13931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":164929}}, +{"tid":12,"ts":-12931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":215345}}, +{"tid":12,"ts":-11931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":217906}}, +{"tid":12,"ts":-10931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":192812}}, +{"tid":12,"ts":-9931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":209257}}, +{"tid":12,"ts":-8931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":194076}}, +{"tid":12,"ts":-7931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":216745}}, +{"tid":12,"ts":-6931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":206316}}, +{"tid":12,"ts":-5931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":266467}}, +{"tid":12,"ts":-4931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":60599}}, +{"tid":12,"ts":-3931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":41092}}, +{"tid":12,"ts":-2931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":46108}}, +{"tid":13,"ts":-30931,"pid":0,"ph":"C","name":"page free","args":{"free":73}}, +{"tid":13,"ts":-29931,"pid":0,"ph":"C","name":"page free","args":{"free":2}}, +{"tid":13,"ts":-28931,"pid":0,"ph":"C","name":"page free","args":{"free":45}}, +{"tid":13,"ts":-27931,"pid":0,"ph":"C","name":"page free","args":{"free":5}}, +{"tid":13,"ts":-26931,"pid":0,"ph":"C","name":"page free","args":{"free":5}}, +{"tid":13,"ts":-25931,"pid":0,"ph":"C","name":"page free","args":{"free":29}}, +{"tid":13,"ts":-24931,"pid":0,"ph":"C","name":"page free","args":{"free":50}}, +{"tid":13,"ts":-23931,"pid":0,"ph":"C","name":"page free","args":{"free":6}}, +{"tid":13,"ts":-22931,"pid":0,"ph":"C","name":"page free","args":{"free":20}}, +{"tid":13,"ts":-21931,"pid":0,"ph":"C","name":"page free","args":{"free":29}}, +{"tid":13,"ts":-20931,"pid":0,"ph":"C","name":"page free","args":{"free":23}}, +{"tid":13,"ts":-19931,"pid":0,"ph":"C","name":"page free","args":{"free":13}}, +{"tid":13,"ts":-18931,"pid":0,"ph":"C","name":"page free","args":{"free":64}}, +{"tid":13,"ts":-17931,"pid":0,"ph":"C","name":"page free","args":{"free":340}}, +{"tid":13,"ts":-16931,"pid":0,"ph":"C","name":"page free","args":{"free":529}}, +{"tid":13,"ts":-15931,"pid":0,"ph":"C","name":"page free","args":{"free":695}}, +{"tid":13,"ts":-14931,"pid":0,"ph":"C","name":"page free","args":{"free":592}}, +{"tid":13,"ts":-13931,"pid":0,"ph":"C","name":"page free","args":{"free":491}}, +{"tid":13,"ts":-12931,"pid":0,"ph":"C","name":"page free","args":{"free":619}}, +{"tid":13,"ts":-11931,"pid":0,"ph":"C","name":"page free","args":{"free":675}}, +{"tid":13,"ts":-10931,"pid":0,"ph":"C","name":"page free","args":{"free":694}}, +{"tid":13,"ts":-9931,"pid":0,"ph":"C","name":"page free","args":{"free":710}}, +{"tid":13,"ts":-8931,"pid":0,"ph":"C","name":"page free","args":{"free":660}}, +{"tid":13,"ts":-7931,"pid":0,"ph":"C","name":"page free","args":{"free":639}}, +{"tid":13,"ts":-6931,"pid":0,"ph":"C","name":"page free","args":{"free":642}}, +{"tid":13,"ts":-5931,"pid":0,"ph":"C","name":"page free","args":{"free":692}}, +{"tid":13,"ts":-4931,"pid":0,"ph":"C","name":"page free","args":{"free":332}}, +{"tid":13,"ts":-3931,"pid":0,"ph":"C","name":"page free","args":{"free":20}}, +{"tid":13,"ts":-2931,"pid":0,"ph":"C","name":"page free","args":{"free":71}}, +{"tid":14,"ts":-30931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-29931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-28931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-27931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-26931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-25931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-24931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-23931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-22931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-21931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-20931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-19931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-18931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-17931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-16931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-15931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-14931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-13931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-12931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-11931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-10931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-9931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-8931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-7931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-6931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-5931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-4931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-3931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-2931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":15,"ts":-30931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-29931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-28931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-27931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-26931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-25931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-24931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-23931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-22931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-21931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-20931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-19931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-18931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-17931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-16931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-15931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-14931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-13931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-12931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-11931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-10931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-9931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-8931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-7931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-6931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-5931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-4931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-3931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-2931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 11, "args": {"sort_index ": 11}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 12, "args": {"sort_index ": 12}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 13, "args": {"sort_index ": 13}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 14, "args": {"sort_index ": 14}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 15, "args": {"sort_index ": 15}}, +{"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 16, "args": {"sort_index ": 16}}, +{"name": "process_sort_index", "ph": "M", "pid": 0, "tid": 0, "args": {"sort_index ": 0}}, +{"name": "process_sort_index", "ph": "M", "pid": 100, "tid": 0, "args": {"sort_index ": 100}}, +{"name": "process_sort_index", "ph": "M", "pid": 200, "tid": 0, "args": {"sort_index ": 200}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}} + ], + "displayTimeUnit": "ns" + } \ No newline at end of file From 663d4ffa5ee62c05ed20e1bb3571bf5577bbe539 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Mon, 2 Dec 2024 10:02:50 +0000 Subject: [PATCH 04/12] add perf stat --- .../analysis/perf_analysis_template.ipynb | 15 +- .../workload/benchmark_velox/analysis/run.py | 15 ++ .../analysis/run_perf_analysis.sh | 10 + .../benchmark_velox/analysis/sparklog.ipynb | 179 ++++++++++++++---- .../native_sql_initialize.ipynb | 9 +- 5 files changed, 173 insertions(+), 55 deletions(-) diff --git a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb index ca9c1de27500..973474a08a0d 100644 --- a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb +++ b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb @@ -23,6 +23,7 @@ "tz=''\n", "basedir=''\n", "name=''\n", + "proxy=''\n", "\n", "compare_appid=''\n", "compare_basedir=''\n", @@ -59,16 +60,6 @@ " return py4jzip[0]" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "print(sys.path)" - ] - }, { "cell_type": "code", "execution_count": null, @@ -149,8 +140,8 @@ "metadata": {}, "outputs": [], "source": [ - "os.environ[\"https_proxy\"] = \"http://10.239.44.250:8080\"\n", - "os.environ[\"http_proxy\"] = \"http://10.239.44.250:8080\"" + "os.environ[\"https_proxy\"] = proxy\n", + "os.environ[\"http_proxy\"] = proxy" ] }, { diff --git a/tools/workload/benchmark_velox/analysis/run.py b/tools/workload/benchmark_velox/analysis/run.py index 06fe712a5e09..ba8f008d3553 100644 --- a/tools/workload/benchmark_velox/analysis/run.py +++ b/tools/workload/benchmark_velox/analysis/run.py @@ -1,3 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import fire import papermill as pm diff --git a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh index 7dcc4ce90c89..42b391ffa3f4 100755 --- a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh +++ b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh @@ -55,6 +55,11 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + --proxy) + PROXY="$2" + shift # past argument + shift # past value + ;; --comp-appid) COMP_APPID="$2" shift # past argument @@ -113,6 +118,11 @@ then EXTRA_ARGS="--compare_appid $COMP_APPID --compare_basedir $COMP_BASEDIR --compare_name $COMP_NAME" fi +if [ -n "${PROXY}" ] +then + EXTRA_ARGS=$EXTRA_ARGS" --proxy $PROXY" +fi + source ~/paus-env/bin/activate python3 $SCRIPT_LOCATION/run.py --inputnb $nb_name --outputnb ${nb_name0}.nbconvert.ipynb --appid $APPID --disk $DISK --nic $NIC --tz $SPARK_TZ --basedir $BASEDIR --name $NAME $EXTRA_ARGS diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb index 8a74c97d4961..d2396c2cd24c 100644 --- a/tools/workload/benchmark_velox/analysis/sparklog.ipynb +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -2,7 +2,9 @@ "cells": [ { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# initialize" ] @@ -10,7 +12,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "from __future__ import nested_scopes\n", @@ -23,6 +27,7 @@ "cell_type": "code", "execution_count": null, "metadata": { + "hidden": true, "lang": "en" }, "outputs": [], @@ -38,7 +43,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "import os\n", @@ -77,7 +84,7 @@ "import pyspark.sql\n", "import pyspark.sql.functions as F\n", "from pyspark.sql import SparkSession\n", - "from pyspark.sql.functions import to_date, floor, lit, rank, col, pandas_udf, PandasUDFType\n", + "from pyspark.sql.functions import to_date, floor, lit, rank, col, lag, when, pandas_udf, PandasUDFType, avg, sum as _sum\n", "from pyspark.sql.window import Window\n", "from pyspark.sql.types import *\n", "from pyspark.ml import Pipeline\n", @@ -94,7 +101,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "import pyhdfs\n", @@ -107,7 +116,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# fs functions" ] @@ -115,7 +126,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "def getexecutor_stat(pdir):\n", @@ -166,7 +179,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "def background_gradient(s, m, M, cmap='PuBu', low=0, high=0):\n", @@ -182,7 +197,8 @@ { "cell_type": "markdown", "metadata": { - "collapsed": "true" + "collapsed": "true", + "heading_collapsed": true }, "source": [ "# base class" @@ -192,7 +208,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -205,7 +222,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -256,7 +274,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# app log analysis" ] @@ -264,7 +284,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "def get_his_perf(namelike,currentdir):\n", @@ -292,7 +314,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -2387,7 +2410,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "notlist=['resource.executor.cores',\n", @@ -2432,7 +2457,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "## Node log analysis" ] @@ -2441,7 +2468,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -2604,7 +2632,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -2741,7 +2770,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -2923,7 +2953,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# perf trace analysis" ] @@ -2932,7 +2964,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -3119,7 +3152,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "heading_collapsed": true + }, "source": [ "# Sar analysis" ] @@ -3128,7 +3163,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "code_folding": [] + "code_folding": [], + "hidden": true }, "outputs": [], "source": [ @@ -3585,7 +3621,7 @@ "heading_collapsed": true }, "source": [ - "# Perf Trace Analysis" + "# Perf stat Analysis" ] }, { @@ -3613,6 +3649,20 @@ " print(\"error, perfstarttime not found\")\n", " return\n", " \n", + " tsc_freq_file = os.path.join(paths[0], 'tsc_freq')\n", + " if fs.exists(tsc_freq_file):\n", + " self.tsc_freq = int(spark.read.text(tsc_freq_file).collect()[0][0])\n", + " else:\n", + " print(f'{tsc_freq_file} not exists')\n", + " return\n", + " \n", + " totalcores_file = os.path.join(paths[0], 'totalcores')\n", + " if fs.exists(totalcores_file):\n", + " self.totalcores = int(spark.read.text(totalcores_file).collect()[0][0])\n", + " else:\n", + " print(f'{totalcores_file} not exists')\n", + " return\n", + " \n", " strf=strf[len(\"# started on \"):].strip()\n", " starttime=datetime.strptime(strf, \"%a %b %d %H:%M:%S %Y\").timestamp()*1000\n", " sardf=sardf.where(\"_1<>'#'\")\n", @@ -3649,7 +3699,50 @@ " F.struct(F.col(\"_3\").alias(\"cnt\")).alias('args')\n", " ).toJSON().collect())\n", " return trace_list\n", - " \n" + " \n", + " def get_stat(self, **kwargs):\n", + " if self.df is None:\n", + " self.load_data()\n", + "\n", + " raw_data = spark.read.text(self.file)\n", + "\n", + " # Filter out non-data lines and split the data into columns\n", + " filtered_data = raw_data.filter(\n", + " ~raw_data.value.startswith('#') & raw_data.value.rlike(r\"^\\s*\\d\")\n", + " )\n", + "\n", + " split_data = filtered_data.rdd.map(lambda row: row[0].split()).map(\n", + " lambda parts: (float(parts[0]), int(parts[1].replace(\",\", \"\")), parts[2], '' if len(parts) == 3 else parts[4])\n", + " )\n", + "\n", + " schema = [\"time\", \"counts\", \"events\", \"ipc\"]\n", + " df = split_data.toDF(schema)\n", + "\n", + " events_df = df.filter(col('ipc') == '')\n", + " ipc_df = df.filter(col('ipc') != '')\n", + "\n", + " instructions = ipc_df.select(_sum(col(\"counts\"))).collect()[0][0] / 1e9\n", + " avg_ipc = ipc_df.select(avg(col(\"ipc\"))).collect()[0][0]\n", + "\n", + " df_ccu_ref_tsc = events_df.select(col('time'), col('counts')).filter(col('events') == 'cpu_clk_unhalted.ref_tsc').withColumnRenamed('counts', 'cpu_clk_unhalted_ref_tsc')\n", + " df_ccu_thread = events_df.select(col('time'), col('counts')).filter(col('events') == 'cpu_clk_unhalted.thread').withColumnRenamed('counts', 'cpu_clk_unhalted_thread')\n", + "\n", + " window_spec = Window.orderBy(\"time\")\n", + " df_ccu_ref_tsc = df_ccu_ref_tsc.withColumn(\"prev_time\", lag(\"time\").over(window_spec))\n", + " df_ccu_ref_tsc = df_ccu_ref_tsc.withColumn(\"prev_time\", when(col(\"prev_time\").isNull(), 0).otherwise(col(\"prev_time\")))\n", + " df_ccu_ref_tsc = df_ccu_ref_tsc.withColumn(\"tsc\", (col(\"time\") - col(\"prev_time\")) * self.tsc_freq)\n", + "\n", + " joined_df = df_ccu_ref_tsc.join(df_ccu_thread, on=[\"time\"], how=\"inner\")\n", + " cpu_freq_df = joined_df.withColumn(\"freq\", joined_df.cpu_clk_unhalted_thread / joined_df.cpu_clk_unhalted_ref_tsc * self.tsc_freq / 1e9)\n", + " cpu_freq = cpu_freq_df.select(avg(col('freq'))).collect()[0][0]\n", + "\n", + " cpu_util_df = df_ccu_ref_tsc.withColumn(\"cpu%\", col(\"cpu_clk_unhalted_ref_tsc\") / col(\"tsc\") / self.totalcores * 100)\n", + " cpu_util = cpu_util_df.select(avg(col('cpu%'))).collect()[0][0]\n", + "\n", + " out = [['ipc', avg_ipc], ['instructions', instructions], ['cpu_freq', cpu_freq], ['cpu%', cpu_util]]\n", + " pdout=pandas.DataFrame(out).set_index(0)\n", + " \n", + " return pdout" ] }, { @@ -4355,7 +4448,7 @@ "heading_collapsed": true }, "source": [ - "# application Run" + "# Application Run" ] }, { @@ -4367,10 +4460,6 @@ }, "outputs": [], "source": [ - "\n", - "\n", - "\n", - "\n", "class Application_Run:\n", " def __init__(self, appid,**kwargs):\n", " self.appid=appid\n", @@ -4513,22 +4602,26 @@ "\n", " display(HTML(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json\"))\n", " \n", - " def get_sar_stat(app_ww44,**kwargs):\n", + " def get_sar_stat(self,**kwargs):\n", " disk_prefix=kwargs.get(\"disk_prefix\",\"dev259\")\n", " nic_prefix = kwargs.get(\"nic_prefix\",[\"'eth3'\",\"'enp24s0f1'\"])\n", - " cpustat=[app_ww44.analysis[\"sar\"][l]['sar_cpu']['als'].get_stat() for l in app_ww44.clients]\n", + " cpustat=[self.analysis[\"sar\"][l]['sar_cpu']['als'].get_stat() for l in self.clients]\n", " cpustat=reduce(lambda l,r:l.join(r),cpustat)\n", - " diskstat=[app_ww44.analysis[\"sar\"][l]['sar_disk']['als'].get_stat(disk_prefix=disk_prefix) for l in app_ww44.clients]\n", + " diskstat=[self.analysis[\"sar\"][l]['sar_disk']['als'].get_stat(disk_prefix=disk_prefix) for l in self.clients]\n", " diskstat=reduce(lambda l,r:l.join(r),diskstat)\n", - " memstat=[app_ww44.analysis[\"sar\"][l]['sar_mem']['als'].get_stat() for l in app_ww44.clients]\n", + " memstat=[self.analysis[\"sar\"][l]['sar_mem']['als'].get_stat() for l in self.clients]\n", " memstat=reduce(lambda l,r:l.join(r),memstat)\n", - " nicstat=[app_ww44.analysis[\"sar\"][l]['sar_nic']['als'].get_stat(nic_prefix=nic_prefix) for l in app_ww44.clients]\n", + " nicstat=[self.analysis[\"sar\"][l]['sar_nic']['als'].get_stat(nic_prefix=nic_prefix) for l in self.clients]\n", " nicstat=reduce(lambda l,r:l.join(r),nicstat)\n", - " pagestat=[app_ww44.analysis[\"sar\"][l]['sar_page']['als'].get_stat() for l in app_ww44.clients]\n", + " pagestat=[self.analysis[\"sar\"][l]['sar_page']['als'].get_stat() for l in self.clients]\n", " pagestat=reduce(lambda l,r:l.join(r),pagestat)\n", " pandas.options.display.float_format = '{:,.2f}'.format\n", " return pandas.concat([cpustat,diskstat,memstat,nicstat,pagestat])\n", " \n", + " def get_perf_stat(self, **kwargs):\n", + " perfstat=[self.analysis[\"sar\"][l]['perfstat']['als'].get_stat() for l in self.clients]\n", + " return reduce(lambda l,r: l.join(r), perfstat)\n", + " \n", " def get_summary(app, **kwargs):\n", " output=[]\n", " \n", @@ -4571,7 +4664,13 @@ "\n", " sarsum.columns=[lrun]\n", " \n", - " summary=pandas.concat([pdstime,sarsum])\n", + " # perf stat\n", + " print(\"perf stat metric\")\n", + " perf_stat = app.get_perf_stat(**kwargs)\n", + " perf_stat = get_sar_agg(perf_stat)[['agg']]\n", + " perf_stat.columns=[lrun]\n", + " \n", + " summary=pandas.concat([pdstime,sarsum,perf_stat])\n", " \n", " df_sum=spark.createDataFrame(summary.T.reset_index())\n", " for c in df_sum.columns:\n", @@ -5122,9 +5221,9 @@ "title_sidebar": "Contents", "toc_cell": false, "toc_position": { - "height": "298.281px", - "left": "1205px", - "top": "421.125px", + "height": "298.275px", + "left": "1180px", + "top": "317.125px", "width": "332px" }, "toc_section_display": true, diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index e345a9a0bd57..1d41e6c85a05 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -278,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "code_folding": [] }, @@ -345,13 +345,16 @@ " !ssh {l} mkdir -p {prof_client}\n", " !ssh {l} \"sar -o {prof_client}/sar.bin -r -u -d -B -n DEV 1 >/dev/null 2>&1 &\"\n", " !ssh root@{l} \"jps | grep CoarseGrainedExecutorBackend | cut -d' ' -f 1 | xargs -I % bash -c '(cat /proc/%/status >> {prof_client}/%.stat; cat /proc/%/io >> {prof_client}/%.stat)'\"\n", + " !ssh root@{l} \"perf stat -e 'instructions,cycles,cpu_clk_unhalted.thread,cpu_clk_unhalted.ref_tsc' -a -I 500 -o {prof_client}/perfstat.txt >/dev/null 2>&1 & \"\n", + " !ssh {l} \"cat /sys/devices/system/cpu/cpu0/tsc_freq_khz | xargs -I% echo %000 > {prof_client}/tsc_freq 2>/dev/null &\"\n", + " !ssh {l} \"lscpu | grep '^CPU(s):' | cut -d ':' -f 2 | tr -d ' ' > {prof_client}/totalcores 2>/dev/null &\"\n", " if kwargs.get(\"collect_pid\",False):\n", " !ssh {l} \"jps | grep CoarseGrainedExecutorBackend | head -n 1 | cut -d' ' -f 1 | xargs -I % pidstat -h -t -p % 1 > {prof_client}/pidstat.out 2>/dev/null &\"\n", " !ssh root@{l} 'cat /proc/uptime | cut -d\" \" -f 1 | xargs -I ^ date -d \"- ^ seconds\" +%s.%N' > $prof/$l/uptime.txt\n", " if kwargs.get(\"collect_sched\",False):\n", " !ssh root@{l} 'perf trace -e \"sched:sched_switch\" -C 8-15 -o {prof_client}/sched.txt -T -- sleep 10000 >/dev/null 2>/dev/null &'\n", " if perfsyscalls is not None:\n", - " !ssh root@{l} \"perf stat -e 'syscalls:sys_exit_poll,syscalls:sys_exit_epoll_wait' -a -I 1000 -o {prof_client}/perfstat.txt >/dev/null 2>&1 & \"\n", + " !ssh root@{l} \"perf stat -e 'syscalls:sys_exit_poll,syscalls:sys_exit_epoll_wait' -a -I 1000 -o {prof_client}/perfsyscalls.txt >/dev/null 2>&1 & \"\n", " if kwargs.get(\"collect_hbm\",False):\n", " hbm_nodes = kwargs.get(\"hbm_nodes\")\n", " if hbm_nodes is not None:\n", @@ -384,7 +387,7 @@ " !ssh {l} \"sar -f {prof_client}/sar.bin -r > {prof_client}/sar_mem.sar;sar -f {prof_client}/sar.bin -u > {prof_client}/sar_cpu.sar;sar -f {prof_client}/sar.bin -d -p > {prof_client}/sar_disk.sar;sar -f {prof_client}/sar.bin -n DEV > {prof_client}/sar_nic.sar;sar -f {prof_client}/sar.bin -B > {prof_client}/sar_page.sar;\" \n", " !ssh root@{l} \"jps | grep CoarseGrainedExecutorBackend | cut -d' ' -f 1 | xargs -I % bash -c '(cat /proc/%/status >> {prof_client}/%.stat; cat /proc/%/io >> {prof_client}/%.stat)'\"\n", " !ssh {l} \"sar -V \" > {prof_client}/sarv.txt\n", - " !test -f {prof_client}/perfstat.txt && head -n 1 {prof_client}/perfstat.txt > {prof_client}/perfstarttime\n", + " !ssh {l} \"test -f {prof_client}/perfstat.txt && head -n 1 {prof_client}/perfstat.txt > {prof_client}/perfstarttime\"\n", " if l!= socket.gethostname():\n", " !scp -r {l}:{prof_client} {prof}/ > /dev/null 2>&1\n", " \n", From 02fdacf8d3222cbe9e7793364885dabb94887af8 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Mon, 2 Dec 2024 15:40:23 +0000 Subject: [PATCH 05/12] add samples --- tools/workload/benchmark_velox/README.md | 15 +- .../benchmark_velox/analysis/sparklog.ipynb | 7 +- .../native_sql_initialize.ipynb | 4 +- .../benchmark_velox/sample/Trace-viewer.png | Bin 0 -> 154395 bytes .../benchmark_velox/sample/tpch_q1.html | 14376 ++++++++++++++++ .../sample/tpch_q1.nbconvert.ipynb | 2550 +++ 6 files changed, 16945 insertions(+), 7 deletions(-) create mode 100644 tools/workload/benchmark_velox/sample/Trace-viewer.png create mode 100644 tools/workload/benchmark_velox/sample/tpch_q1.html create mode 100644 tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb diff --git a/tools/workload/benchmark_velox/README.md b/tools/workload/benchmark_velox/README.md index 120bed8d9c99..b1e7a2f795b8 100644 --- a/tools/workload/benchmark_velox/README.md +++ b/tools/workload/benchmark_velox/README.md @@ -48,11 +48,18 @@ Please check the **Set up perf analysis tools (optional)** section in [initializ After the workload completes, the tool generates a notebook, executes it automatically, and saves the output notebook in the `$HOME/PAUS/base_dir` directory with a suffix of `[APPLICATION ID].nbconvert.ipynb`. Additionally, the output notebook is converted into an HTML format for improved readability, with the same filename, and stored in the `html` sub-folder. +A sample generated notebook for TPCH Q1 and its corresponding HTML file are available for reference: +- Notebook: [tpch_q1.nbconvert.ipynb](./sample/tpch_q1.nbconvert.ipynb) +- HTML file: [tpch_q1.html](./sample/tpch_q1.html) + The notebook also produces a trace-viewer JSON file to analyze workload statistics. This includes SAR metrics and stage/task-level breakdowns. Using this tool, users can compare statistics across stages and queries, identify performance bottlenecks, and target specific stages for optimization. -If you have set up and launched Catapult trace-viewer server (refer to the **Set up perf analysis tools (optional)** section in [initialize.ipynb](./initialize.ipynb)), you can explore a sample trace-viewer JSON file. To do so: +You can explore the sample trace-viewer JSON file using the Google Chrome browser. To do so: + +1. Download the sample file [trace_result_tpch_q1.json](./sample/trace_result_tpch_q1.json) +2. Launch Google Chrome. In the address bar, enter "chrome://tracing/". +3. Use the "Load" button to upload the sample JSON file. -1. Copy the sample file [trace_result_tpch_q1.json](./sample/trace_result_tpch_q1.json) to the `$HOME/trace_result` directory -2. Open the following link in your browser to view the results: http://[your-host-ip]:1088/tracing_examples/trace_viewer.html#/tracing/test_data/trace_result_tpch_q1.json +This will allow you to check the sample trace data interactively. -This visualization helps to better understand performance metrics and optimize accordingly. +![trace-result-tpch-q1](./sample/Trace-viewer.png) diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb index d2396c2cd24c..876b4f1f2c28 100644 --- a/tools/workload/benchmark_velox/analysis/sparklog.ipynb +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -2204,13 +2204,18 @@ "\n", " exchangedf=self.get_metrics_by_node([\"ColumnarExchange\",\"ColumnarExchangeAdaptor\"])\n", " exchangedf.cache()\n", - " exchangedf.count()\n", + " if exchangedf.count() == 0:\n", + " return (None, None)\n", + "\n", " mapdf=exchangedf.where(\"`time to split` is not null\").select(\"nodeID\",F.col(\"Stage ID\").alias(\"map_stageid\"),\"real_queryid\",F.floor(F.col(\"time to split\")/F.col(\"time to split_mean\")).alias(\"map_partnum\"),\"time to compress\",\"time to split\",\"shuffle write time\",\"time to spill\",'shuffle records written','data size','shuffle bytes written','shuffle bytes written_mean','shuffle bytes written_stddev','shuffle bytes spilled','number of input rows','number of input batches')\n", " reducerdf=exchangedf.where(\"`time to split` is null\").select(\"nodeID\",F.col(\"Stage ID\").alias(\"reducer_stageid\"),\"real_queryid\",'local blocks read','local bytes read',F.floor(F.col(\"records read\")/F.col(\"records read_mean\")).alias(\"reducer_partnum\"),(F.col('avg read batch num rows')/10).alias(\"avg read batch num rows\"),'remote bytes read','records read','remote blocks read',(F.col(\"number of output rows\")/F.col(\"records read\")).alias(\"avg rows per split recordbatch\"))\n", " shuffledf=mapdf.join(reducerdf,on=[\"nodeID\",\"real_queryid\"],how=\"full\")\n", " if queryid is not None:\n", " shuffledf=shuffledf.where(F.col(\"real_queryid\").isin(queryid))\n", " shuffle_pdf=shuffledf.where(\"`shuffle bytes written`>1000000\").orderBy(\"real_queryid\",\"map_stageid\",\"nodeID\").toPandas()\n", + " if shuffle_pdf.shape[0] == 0:\n", + " return (shuffledf, None)\n", + "\n", " shuffle_pdf[\"shuffle bytes written\"]=shuffle_pdf[\"shuffle bytes written\"]/1000000000\n", " shuffle_pdf[\"data size\"]=shuffle_pdf[\"data size\"]/1000000000\n", " shuffle_pdf[\"shuffle bytes written_mean\"]=shuffle_pdf[\"shuffle bytes written_mean\"]/1000000\n", diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index 1d41e6c85a05..1cdab3a47e02 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -819,7 +819,7 @@ " self.finished_nb = f\"http://{localhost}:8888/tree/{output_nb}\"\n", " self.stopped = True\n", "\n", - " def run_perf_analysis(self, disk_dev, nic_dev):\n", + " def run_perf_analysis(self, disk_dev, nic_dev, proxy):\n", " if not self.server:\n", " return\n", "\n", @@ -832,7 +832,7 @@ " disk=','.join(disk_dev)\n", " nic=','.join(nic_dev)\n", "\n", - " command =' '.join(['bash', run_script, '--ts', ts, '--base-dir', self.base_dir, '--name', name, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt()])\n", + " command =' '.join(['bash', run_script, '--ts', ts, '--base-dir', self.base_dir, '--name', name, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\"])\n", " print(command)\n", "\n", " # Block if running on local cluster.\n", diff --git a/tools/workload/benchmark_velox/sample/Trace-viewer.png b/tools/workload/benchmark_velox/sample/Trace-viewer.png new file mode 100644 index 0000000000000000000000000000000000000000..2e51094774826c038a85605843352b80324fef12 GIT binary patch literal 154395 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 z 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 + + + + +2024_12_02_152940_tpch_gluten_application_1733153225851_0001.nbconvert + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+

start analysis cluster and run

+
+
+
+
+
+
+
+
+
+
+
+
+
Setting default log level to "WARN".
+To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
+
+
+
+
+
+
24/12/02 15:29:47 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
+
+
+
+
+
+
24/12/02 15:29:48 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.
+24/12/02 15:29:48 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
+
+
+
+
+
+
/home/sparkuser/spark/python/pyspark/sql/context.py:112: FutureWarning: Deprecated in 3.0.0. Use SparkSession.builder.getOrCreate() instead.
+  warnings.warn(
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Sparklog

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Content

+
+
+
+ +
+
+

App info

+
+
+
+
+
+
+
+
+
+
+
load data  /sr213/application_1733153225851_0001/app.log
+
+
+
+
+
+
[Stage 0:>                                                          (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 1:>                                                          (0 + 1) / 1]

                                                                                
+
+
+
+
+
[Stage 5:>                                                          (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 8:>                                                          (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 15:>                                                         (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 17:>                                                         (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 39:>                                                      (0 + 16) / 200]
+
+
+
+
+
[Stage 39:=>                                                     (6 + 17) / 200]

[Stage 39:===>                                                  (13 + 16) / 200]
+
+
+
+
+
[Stage 39:======>                                               (24 + 16) / 200]

[Stage 39:=========>                                            (37 + 16) / 200]
+
+
+
+
+
[Stage 39:================>                                     (60 + 16) / 200]

[Stage 39:=======================>                              (88 + 16) / 200]
+
+
+
+
+
[Stage 39:=================================>                   (126 + 16) / 200]

[Stage 39:=============================================>       (171 + 16) / 200]
+
+
+
+
+
                                                                                
+
+
+ +
+
+
[Stage 42:(173 + 7) / 200][Stage 43:>   (0 + 1) / 1][Stage 44:> (0 + 8) / 200]

                                                                                
+
+
+
+
+
[Stage 44:(129 + 9) / 200][Stage 45:>   (0 + 1) / 1][Stage 46:> (0 + 6) / 200]

[Stage 44:(163 + 4) / 200][Stage 46:>(8 + 12) / 200][Stage 47:> (0 + 0) / 200]
+
+
+
+
+
[Stage 44:(185 + 4) / 200][Stage 46:>(46 + 9) / 200][Stage 47:> (0 + 3) / 200]

[Stage 46:>(91 + 8) / 200][Stage 47:> (7 + 8) / 200][Stage 48:> (0 + 0) / 200]
+
+
+
+
+
[Stage 46:(128 + 4) / 200][Stage 47:>(38 + 8) / 200][Stage 48:> (0 + 4) / 200]

[Stage 46:(160 + 4) / 200][Stage 47:>(99 + 4) / 200][Stage 48:>(25 + 6) / 200]
+
+
+
+
+
[Stage 46:(196 + 4) / 200][Stage 47:(105 + 0) / 200][Stage 48:>(86 + 4) / 200]

[Stage 47:(121 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (0 + 12) / 16]
+
+
+
+
+
[Stage 47:(191 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (4 + 12) / 16]

                                                                                
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appidapplication_1733153225851_0001
executor.instances4
executor.cores4
shuffle.partitions32
batch size4,096
real executors4
Failed Tasks
Speculative Tasks0
Speculative Killed Tasks0
Speculative Stage0
runtime17.8
disk spilled0.0
memspilled0.0
local_read0.0
remote_read0.0
shuffle_write0.0
task run time6.73
ser_time0.0
f_wait_time0.0
gc_time0.04
input read22.54
acc_task_time14.14
file read size5,944.5
file write size21.74
disk read size4.95
disk write size12.38
disk cancel size0.0
+
+
+
+
+
{'appid': 'application_1733153225851_0001',
+ 'executor.instances': 4,
+ 'executor.cores': 4,
+ 'shuffle.partitions': 32,
+ 'batch size': 4096,
+ 'real executors': 4,
+ 'Failed Tasks': '',
+ 'Speculative Tasks': 0,
+ 'Speculative Killed Tasks': 0,
+ 'Speculative Stage': 0,
+ 'runtime': 17.8,
+ 'disk spilled': 0.0,
+ 'memspilled': 0.0,
+ 'local_read': 0.0,
+ 'remote_read': 0.0,
+ 'shuffle_write': 0.0,
+ 'task run time': 6.73,
+ 'ser_time': 0.0,
+ 'f_wait_time': 0.0,
+ 'gc_time': 0.04,
+ 'input read': 22.54,
+ 'acc_task_time': 14.14,
+ 'file read size': 5944.5,
+ 'file write size': 21.74,
+ 'disk read size': 4.95,
+ 'disk write size': 12.38,
+ 'disk cancel size': 0.0}
+
+
+
+
+
+
+
+
+
+
+
[Stage 91:============> (174 + 4) / 200][Stage 92:=======>      (105 + 0) / 200]

                                                                                
+
+
+
+
+
sar metric
+
+
+
+
+
+
perf stat metric
+
+
+
+
+
+
[Stage 258:>                                                        (0 + 1) / 1]

                                                                                
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 application_1733153225851_0001
runtime17.800000
disk spilled0.000000
shuffle_write0.000000
f_wait_time0.000000
input read22.540000
acc_task_time14.140000
output rows1.180000
%user>90%0.931034
%kernel>10%0.965517
%iowait>10%0.620690
avg %user41.233793
avg %system4.608621
avg %iowait0.623793
avg disk util33.448276
time more than 90%0.000000
total read (G)5.432129
total write (G)0.994891
avg read bw (MB/s)191.810354
avg write bw (MB/s)35.129954
read bw %75402.394531
read bw %95479.738281
read bw max480.722656
time_rd_morethan_950.034483
write bw %751.074219
write bw %9535.035156
write bw max945.855469
time_wr_morethan_950.034483
cached mean97.137931
cached 75%152.000000
cached max188.000000
used mean573.379310
used 75%593.000000
used max597.000000
rx MB/s 75%0.000000
rx MB/s 95%0.000000
rx MB/s 99%0.000000
pgin mean191.965517
pgin 75%402.000000
pgin max480.000000
pgout mean35.103448
pgout 75%1.000000
pgout max947.000000
fault mean117681.655172
fault 75%193074.000000
fault max287177.000000
ipc1.144464
instructions962.586404
cpu_freq3.225843
cpu%7.480452
+
+
+
+
+
+
+
+
+
+
+
[Stage 288:>                                                      (0 + 12) / 12]
+
+
+
+
+
[Stage 288:==============>                                         (3 + 9) / 12]

[Stage 288:==========================================>             (9 + 3) / 12]
+
+
+
+
+
                                                                                
+
+
+
+
+
DEV in ('nvme0n1')
+
+
+
+ +
+
+
+
+
+
+
+
gluten tpch_power 663d4f
+
+
+
+
+
+
+
+
+
+
[Stage 471:> (2 + 3) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]

[Stage 471:> (5 + 0) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]
+
+
+
+
+
[Stage 471:>(5 + 11) / 16][Stage 472:> (0 + 5) / 16][Stage 475:> (0 + 0) / 16]

[Stage 472:> (5 + 0) / 16][Stage 475:> (0 + 0) / 16][Stage 476:> (0 + 0) / 16]
+
+
+
+
+
[Stage 472:>(15 + 1) / 16][Stage 475:> (2 + 3) / 16][Stage 476:> (0 + 0) / 16]

[Stage 475:> (5 + 0) / 16][Stage 476:> (0 + 0) / 16][Stage 479:> (0 + 0) / 16]
+
+
+
+
+
[Stage 475:>(15 + 1) / 16][Stage 476:> (3 + 2) / 16][Stage 479:> (0 + 0) / 16]

[Stage 476:> (5 + 0) / 16][Stage 479:> (0 + 0) / 16][Stage 481:> (0 + 0) / 16]
+
+
+
+
+
[Stage 476:>(6 + 10) / 16][Stage 479:> (0 + 5) / 16][Stage 481:> (0 + 0) / 16]

[Stage 479:> (5 + 0) / 16][Stage 481:> (0 + 0) / 16][Stage 482:> (0 + 0) / 16]
+
+
+
+
+
[Stage 479:>(5 + 11) / 16][Stage 481:> (0 + 5) / 16][Stage 482:> (0 + 0) / 16]

[Stage 481:> (5 + 0) / 16][Stage 482:> (0 + 0) / 16][Stage 484:> (0 + 0) / 16]
+
+
+
+
+
[Stage 481:>(13 + 3) / 16][Stage 482:> (1 + 4) / 16][Stage 484:> (0 + 0) / 16]

[Stage 482:> (5 + 0) / 16][Stage 484:> (0 + 0) / 16][Stage 487:> (0 + 0) / 16]
+
+
+
+
+
[Stage 482:>(5 + 11) / 16][Stage 484:> (0 + 5) / 16][Stage 487:> (0 + 0) / 16]

[Stage 484:> (5 + 0) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]
+
+
+
+
+
[Stage 484:>(5 + 11) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]

[Stage 487:> (5 + 0) / 16][Stage 488:> (0 + 0) / 16][Stage 490:> (0 + 0) / 16]
+
+
+
+
+
[Stage 487:>(13 + 3) / 16][Stage 488:> (0 + 5) / 16][Stage 490:> (0 + 0) / 16]

[Stage 488:> (5 + 0) / 16][Stage 490:> (0 + 0) / 16][Stage 492:> (0 + 0) / 16]
+
+
+
+
+
[Stage 488:>(5 + 11) / 16][Stage 490:> (0 + 5) / 16][Stage 492:> (0 + 0) / 16]

[Stage 490:> (5 + 0) / 16][Stage 492:> (0 + 0) / 16][Stage 495:> (0 + 0) / 16]
+
+
+
+
+
[Stage 490:>(14 + 2) / 16][Stage 492:> (1 + 4) / 16][Stage 495:> (0 + 0) / 16]

[Stage 492:> (5 + 0) / 16][Stage 495:> (0 + 0) / 16][Stage 497:> (0 + 0) / 16]
+
+
+
+
+
[Stage 492:>(13 + 3) / 16][Stage 495:> (1 + 4) / 16][Stage 497:> (0 + 0) / 16]

[Stage 495:> (5 + 0) / 16][Stage 497:> (0 + 0) / 16][Stage 498:> (0 + 0) / 16]
+
+
+
+
+
[Stage 495:>(5 + 11) / 16][Stage 497:> (0 + 5) / 16][Stage 498:> (0 + 0) / 16]

[Stage 497:> (5 + 0) / 16][Stage 498:> (0 + 0) / 16][Stage 500:> (0 + 0) / 16]
+
+
+
+
+
[Stage 498:> (1 + 5) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]

[Stage 498:> (6 + 0) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]
+
+
+
+
+
[Stage 498:>(6 + 10) / 16][Stage 500:> (0 + 3) / 16][Stage 502:> (0 + 0) / 16]

[Stage 500:> (6 + 0) / 16][Stage 502:> (0 + 0) / 16][Stage 504:> (0 + 0) / 16]
+
+
+
+
+
[Stage 500:>(13 + 3) / 16][Stage 502:> (0 + 6) / 16][Stage 504:> (0 + 0) / 16]

[Stage 502:> (6 + 0) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]
+
+
+
+
+
[Stage 502:>(6 + 10) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]

[Stage 504:> (6 + 0) / 16][Stage 507:> (0 + 0) / 16][Stage 509:> (0 + 0) / 16]
+
+
+
+
+
[Stage 504:>(6 + 10) / 16][Stage 507:> (0 + 6) / 16][Stage 509:> (0 + 0) / 16]

[Stage 507:> (6 + 0) / 16][Stage 509:> (0 + 0) / 16][Stage 510:> (0 + 0) / 16]
+
+
+
+
+
[Stage 507:>(6 + 10) / 16][Stage 509:> (0 + 6) / 16][Stage 510:> (0 + 0) / 16]

[Stage 509:======>         (6 + 0) / 16][Stage 510:>               (0 + 0) / 16]
+
+
+
+
+
[Stage 509:=====>         (6 + 10) / 16][Stage 510:>               (0 + 6) / 16]

[Stage 510:=====================>                                  (6 + 0) / 16]
+
+
+
+
+
[Stage 510:============================================>          (13 + 3) / 16]
+
+
+
+
+
[Stage 513:===========================================>        (168 + 16) / 200]
+
+
+
+
+
[Stage 514:============================================>       (171 + 16) / 200]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 662:====================================================>(197 + 3) / 200]

                                                                                
+
+
+
+
+
[Stage 711:==============================================>      (176 + 8) / 200]
+
+
+
+
+
                                                                                
+
+
+
+
+
+
+
+
+
+
application_1733153225851_0001
+
+ +
+
query time
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 runtimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelism
real_queryid                     
117.8000000.0000000.0000000.0000000.0000000.0000000.3300006.7300000.0000000.0000000.0400001.340000822.54000014.140000[ 8 10 12 15]1.18000044132
+
+
+
+
operator count
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 01
AQEShuffleRead02
AdaptiveSparkPlan01
ColumnarExchange02
FilterExecTransformer01
FlushableHashAggregateExecTransformer01
InputAdapter02
InputIteratorTransformer02
ProjectExecTransformer02
RegularHashAggregateExecTransformer01
Scan parquet 01
ShuffleQueryStage02
SortExecTransformer01
VeloxColumnarToRow01
VeloxResizeBatches02
+
+
+
+
operator input row count
+
+
+
+ + + + + + + + + + + + + + + + + +
 1
ColumnarExchange0.000000
VeloxResizeBatches0.000000
+
+
+
+
operator output row count
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 1
ColumnarExchange0.000000
FlushableHashAggregateExecTransformer0.000000
InputIteratorTransformer0.000000
ProjectExecTransformer591.600000
RegularHashAggregateExecTransformer0.000000
Scan parquet 591.600000
SortExecTransformer0.000000
VeloxColumnarToRow0.000000
VeloxResizeBatches0.000000
+
+
+
+
+No description has been provided for this image +
+
+
+
+No description has been provided for this image +
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0
40%_time of scan and filter6.95
35%_time of project6.02
21%_not_counted3.55
3%_idle0.54
0%_time of input iterator0.06
0%_time of aggregation0.03
0%_time to append / split batches0.00
0%_time of rowConstruction0.00
0%_time to split0.00
0%_time to deserialize0.00
0%_time of sort0.00
0%_time of extraction0.00
0%_shuffle write time0.00
0%_time to compress0.00
0%_time to spill0.00
0%_time to decompress0.00
0%_time to convert0.00
+
+
+
+
+No description has been provided for this image +
+
+
+
+
+
+
+

Compare to previous run

+
+
+
+
+
+
+
+

Config compare

+
+
+
+
+
+
+
+

convert to HTML

+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb b/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb new file mode 100644 index 000000000000..26430241e69f --- /dev/null +++ b/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb @@ -0,0 +1,2550 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4e2615af", + "metadata": { + "papermill": { + "duration": 0.003759, + "end_time": "2024-12-02T15:29:45.316600", + "exception": false, + "start_time": "2024-12-02T15:29:45.312841", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3007d85d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:29:45.324819Z", + "iopub.status.busy": "2024-12-02T15:29:45.324405Z", + "iopub.status.idle": "2024-12-02T15:29:45.330628Z", + "shell.execute_reply": "2024-12-02T15:29:45.330233Z" + }, + "papermill": { + "duration": 0.011609, + "end_time": "2024-12-02T15:29:45.331772", + "exception": false, + "start_time": "2024-12-02T15:29:45.320163", + "status": "completed" + }, + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "appid=''\n", + "disk=''\n", + "nic=''\n", + "tz=''\n", + "basedir=''\n", + "name=''\n", + "proxy=''\n", + "\n", + "compare_appid=''\n", + "compare_basedir=''\n", + "compare_name=''" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f8ea15a6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:29:45.339630Z", + "iopub.status.busy": "2024-12-02T15:29:45.339237Z", + "iopub.status.idle": "2024-12-02T15:29:45.341862Z", + "shell.execute_reply": "2024-12-02T15:29:45.341478Z" + }, + "papermill": { + "duration": 0.007763, + "end_time": "2024-12-02T15:29:45.342990", + "exception": false, + "start_time": "2024-12-02T15:29:45.335227", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "appid = \"application_1733153225851_0001\"\n", + "disk = \"nvme0n1\"\n", + "nic = \"enp61s0f0\"\n", + "tz = \"Etc/GMT+0\"\n", + "basedir = \"sr213\"\n", + "name = \"tpch_gluten\"\n", + "compare_appid = \"\"\n", + "compare_basedir = \"\"\n", + "compare_name = \"\"\n" + ] + }, + { + "cell_type": "markdown", + "id": "f5b83da6", + "metadata": { + "papermill": { + "duration": 0.003418, + "end_time": "2024-12-02T15:29:45.350391", + "exception": false, + "start_time": "2024-12-02T15:29:45.346973", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# start analysis cluster and run" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f1ed544f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:29:45.358265Z", + "iopub.status.busy": "2024-12-02T15:29:45.357941Z", + "iopub.status.idle": "2024-12-02T15:29:45.360578Z", + "shell.execute_reply": "2024-12-02T15:29:45.360205Z" + }, + "papermill": { + "duration": 0.007969, + "end_time": "2024-12-02T15:29:45.361868", + "exception": false, + "start_time": "2024-12-02T15:29:45.353899", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import findspark\n", + "findspark.init()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ace428dd", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:29:45.369886Z", + "iopub.status.busy": "2024-12-02T15:29:45.369520Z", + "iopub.status.idle": "2024-12-02T15:29:45.372438Z", + "shell.execute_reply": "2024-12-02T15:29:45.372052Z" + }, + "papermill": { + "duration": 0.008252, + "end_time": "2024-12-02T15:29:45.373616", + "exception": false, + "start_time": "2024-12-02T15:29:45.365364", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "def get_py4jzip():\n", + " spark_home=os.environ['SPARK_HOME']\n", + " py4jzip = !ls {spark_home}/python/lib/py4j*.zip\n", + " return py4jzip[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d25fd5b9", + "metadata": { + "code_folding": [], + "execution": { + "iopub.execute_input": "2024-12-02T15:29:45.381704Z", + "iopub.status.busy": "2024-12-02T15:29:45.381384Z", + "iopub.status.idle": "2024-12-02T15:30:13.999878Z", + "shell.execute_reply": "2024-12-02T15:30:13.999216Z" + }, + "papermill": { + "duration": 28.624314, + "end_time": "2024-12-02T15:30:14.001501", + "exception": false, + "start_time": "2024-12-02T15:29:45.377187", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24/12/02 15:29:47 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24/12/02 15:29:48 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.\n", + "24/12/02 15:29:48 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/sparkuser/spark/python/pyspark/sql/context.py:112: FutureWarning: Deprecated in 3.0.0. Use SparkSession.builder.getOrCreate() instead.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from pyspark import SparkConf, SparkContext\n", + "from pyspark.sql import SQLContext\n", + "import time\n", + "import sys\n", + "conf = (SparkConf()\n", + " .set('spark.app.name', f'perf_analysis_{appid}')\n", + " .set('spark.serializer','org.apache.spark.serializer.KryoSerializer')\n", + " .set('spark.executor.instances', '4')\n", + " .set('spark.executor.cores','4')\n", + " .set('spark.executor.memory', '8g')\n", + " .set('spark.driver.memory','20g')\n", + " .set('spark.memory.offHeap.enabled','True')\n", + " .set('spark.memory.offHeap.size','20g')\n", + " .set('spark.executor.memoryOverhead','1g')\n", + " .set('spark.executor.extraJavaOptions',\n", + " '-XX:+UseParallelGC -XX:+UseParallelOldGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps')\n", + " .set('spark.executorEnv.PYTHONPATH',f\"{os.environ['SPARK_HOME']}/python:{get_py4jzip()}:{':'.join(sys.path)}\")\n", + " .set('spark.sql.inMemoryColumnarStorage.compressed','False')\n", + " .set('spark.sql.inMemoryColumnarStorage.batchSize','100000')\n", + " .set('spark.sql.execution.arrow.pyspark.fallback.enabled','True')\n", + " .set('spark.sql.execution.arrow.pyspark.enabled','True')\n", + " .set('spark.sql.execution.arrow.maxRecordsPerBatch','100000')\n", + " .set(\"spark.sql.repl.eagerEval.enabled\", True)\n", + " .set(\"spark.sql.legacy.timeParserPolicy\",\"LEGACY\") \n", + " .set(\"spark.sql.session.timeZone\", tz)\n", + " )\n", + "\n", + "sc = SparkContext(conf=conf,master='yarn')\n", + "sc.setLogLevel(\"ERROR\")\n", + "spark = SQLContext(sc)\n", + "time.sleep(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5aed17d6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:14.010905Z", + "iopub.status.busy": "2024-12-02T15:30:14.010558Z", + "iopub.status.idle": "2024-12-02T15:30:14.016526Z", + "shell.execute_reply": "2024-12-02T15:30:14.016117Z" + }, + "papermill": { + "duration": 0.012011, + "end_time": "2024-12-02T15:30:14.017774", + "exception": false, + "start_time": "2024-12-02T15:30:14.005763", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "3247c23f", + "metadata": { + "papermill": { + "duration": 0.003742, + "end_time": "2024-12-02T15:30:14.025349", + "exception": false, + "start_time": "2024-12-02T15:30:14.021607", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Sparklog" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d6126b5d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:14.034277Z", + "iopub.status.busy": "2024-12-02T15:30:14.033993Z", + "iopub.status.idle": "2024-12-02T15:30:16.344751Z", + "shell.execute_reply": "2024-12-02T15:30:16.344056Z" + }, + "papermill": { + "duration": 2.317118, + "end_time": "2024-12-02T15:30:16.346569", + "exception": false, + "start_time": "2024-12-02T15:30:14.029451", + "status": "completed" + }, + "scrolled": false, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%run ~/PAUS/sparklog.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "71b8be80", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.388630Z", + "iopub.status.busy": "2024-12-02T15:30:16.388161Z", + "iopub.status.idle": "2024-12-02T15:30:16.391534Z", + "shell.execute_reply": "2024-12-02T15:30:16.390964Z" + }, + "papermill": { + "duration": 0.041493, + "end_time": "2024-12-02T15:30:16.392813", + "exception": false, + "start_time": "2024-12-02T15:30:16.351320", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "os.environ[\"https_proxy\"] = proxy\n", + "os.environ[\"http_proxy\"] = proxy" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7689c4d6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.402338Z", + "iopub.status.busy": "2024-12-02T15:30:16.402063Z", + "iopub.status.idle": "2024-12-02T15:30:16.405000Z", + "shell.execute_reply": "2024-12-02T15:30:16.404449Z" + }, + "papermill": { + "duration": 0.009284, + "end_time": "2024-12-02T15:30:16.406279", + "exception": false, + "start_time": "2024-12-02T15:30:16.396995", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "de3d224d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.415984Z", + "iopub.status.busy": "2024-12-02T15:30:16.415720Z", + "iopub.status.idle": "2024-12-02T15:30:16.418974Z", + "shell.execute_reply": "2024-12-02T15:30:16.418401Z" + }, + "papermill": { + "duration": 0.009752, + "end_time": "2024-12-02T15:30:16.420246", + "exception": false, + "start_time": "2024-12-02T15:30:16.410494", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "disk_prefix=[f\"'{dev}'\" for dev in disk.split(',')]\n", + "nic_prefix=[f\"'{dev}'\" for dev in nic.split(',')]" + ] + }, + { + "cell_type": "markdown", + "id": "f03ea9cd", + "metadata": { + "papermill": { + "duration": 0.004229, + "end_time": "2024-12-02T15:30:16.428694", + "exception": false, + "start_time": "2024-12-02T15:30:16.424465", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Content" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "34fc9194", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.438322Z", + "iopub.status.busy": "2024-12-02T15:30:16.438042Z", + "iopub.status.idle": "2024-12-02T15:30:16.444163Z", + "shell.execute_reply": "2024-12-02T15:30:16.443602Z" + }, + "papermill": { + "duration": 0.012553, + "end_time": "2024-12-02T15:30:16.445428", + "exception": false, + "start_time": "2024-12-02T15:30:16.432875", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + " 5 App info" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " 6 Compare to previous run" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " 7 Config compare" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(HTML(' 5 App info'))\n", + "display(HTML(' 6 Compare to previous run'))\n", + "display(HTML(' 7 Config compare'))" + ] + }, + { + "cell_type": "markdown", + "id": "3fcaa57d", + "metadata": { + "papermill": { + "duration": 0.004439, + "end_time": "2024-12-02T15:30:16.454227", + "exception": false, + "start_time": "2024-12-02T15:30:16.449788", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# App info" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d923e343", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.463831Z", + "iopub.status.busy": "2024-12-02T15:30:16.463581Z", + "iopub.status.idle": "2024-12-02T15:30:16.505165Z", + "shell.execute_reply": "2024-12-02T15:30:16.504133Z" + }, + "papermill": { + "duration": 0.048063, + "end_time": "2024-12-02T15:30:16.506705", + "exception": false, + "start_time": "2024-12-02T15:30:16.458642", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "app=Application_Run(appid, basedir=basedir)\n", + "appals=app.analysis['app']['als']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fa84df8a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:16.516771Z", + "iopub.status.busy": "2024-12-02T15:30:16.516568Z", + "iopub.status.idle": "2024-12-02T15:30:43.518801Z", + "shell.execute_reply": "2024-12-02T15:30:43.518199Z" + }, + "papermill": { + "duration": 27.009075, + "end_time": "2024-12-02T15:30:43.520099", + "exception": false, + "start_time": "2024-12-02T15:30:16.511024", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "load data /sr213/application_1733153225851_0001/app.log\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 0:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 1:> (0 + 1) / 1]\r", + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 5:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 8:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 15:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 17:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 39:> (0 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 39:=> (6 + 17) / 200]\r", + "\r", + "[Stage 39:===> (13 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 39:======> (24 + 16) / 200]\r", + "\r", + "[Stage 39:=========> (37 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 39:================> (60 + 16) / 200]\r", + "\r", + "[Stage 39:=======================> (88 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 39:=================================> (126 + 16) / 200]\r", + "\r", + "[Stage 39:=============================================> (171 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "data": { + "text/html": [ + "http://sr213:18080/history/application_1733153225851_0001" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 42:(173 + 7) / 200][Stage 43:> (0 + 1) / 1][Stage 44:> (0 + 8) / 200]\r", + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 44:(129 + 9) / 200][Stage 45:> (0 + 1) / 1][Stage 46:> (0 + 6) / 200]\r", + "\r", + "[Stage 44:(163 + 4) / 200][Stage 46:>(8 + 12) / 200][Stage 47:> (0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 44:(185 + 4) / 200][Stage 46:>(46 + 9) / 200][Stage 47:> (0 + 3) / 200]\r", + "\r", + "[Stage 46:>(91 + 8) / 200][Stage 47:> (7 + 8) / 200][Stage 48:> (0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 46:(128 + 4) / 200][Stage 47:>(38 + 8) / 200][Stage 48:> (0 + 4) / 200]\r", + "\r", + "[Stage 46:(160 + 4) / 200][Stage 47:>(99 + 4) / 200][Stage 48:>(25 + 6) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 46:(196 + 4) / 200][Stage 47:(105 + 0) / 200][Stage 48:>(86 + 4) / 200]\r", + "\r", + "[Stage 47:(121 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (0 + 12) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 47:(191 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (4 + 12) / 16]\r", + "\r", + " \r" + ] + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
appidapplication_1733153225851_0001
executor.instances4
executor.cores4
shuffle.partitions32
batch size4,096
real executors4
Failed Tasks
Speculative Tasks0
Speculative Killed Tasks0
Speculative Stage0
runtime17.8
disk spilled0.0
memspilled0.0
local_read0.0
remote_read0.0
shuffle_write0.0
task run time6.73
ser_time0.0
f_wait_time0.0
gc_time0.04
input read22.54
acc_task_time14.14
file read size5,944.5
file write size21.74
disk read size4.95
disk write size12.38
disk cancel size0.0
\n", + "\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'appid': 'application_1733153225851_0001',\n", + " 'executor.instances': 4,\n", + " 'executor.cores': 4,\n", + " 'shuffle.partitions': 32,\n", + " 'batch size': 4096,\n", + " 'real executors': 4,\n", + " 'Failed Tasks': '',\n", + " 'Speculative Tasks': 0,\n", + " 'Speculative Killed Tasks': 0,\n", + " 'Speculative Stage': 0,\n", + " 'runtime': 17.8,\n", + " 'disk spilled': 0.0,\n", + " 'memspilled': 0.0,\n", + " 'local_read': 0.0,\n", + " 'remote_read': 0.0,\n", + " 'shuffle_write': 0.0,\n", + " 'task run time': 6.73,\n", + " 'ser_time': 0.0,\n", + " 'f_wait_time': 0.0,\n", + " 'gc_time': 0.04,\n", + " 'input read': 22.54,\n", + " 'acc_task_time': 14.14,\n", + " 'file read size': 5944.5,\n", + " 'file write size': 21.74,\n", + " 'disk read size': 4.95,\n", + " 'disk write size': 12.38,\n", + " 'disk cancel size': 0.0}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "appals.get_basic_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "cc75b864", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:43.533299Z", + "iopub.status.busy": "2024-12-02T15:30:43.532986Z", + "iopub.status.idle": "2024-12-02T15:30:56.864546Z", + "shell.execute_reply": "2024-12-02T15:30:56.864095Z" + }, + "papermill": { + "duration": 13.339489, + "end_time": "2024-12-02T15:30:56.865821", + "exception": false, + "start_time": "2024-12-02T15:30:43.526332", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 91:============> (174 + 4) / 200][Stage 92:=======> (105 + 0) / 200]\r", + "\r", + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sar metric\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "perf stat metric\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 258:> (0 + 1) / 1]\r", + "\r", + " \r" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 application_1733153225851_0001
runtime17.800000
disk spilled0.000000
shuffle_write0.000000
f_wait_time0.000000
input read22.540000
acc_task_time14.140000
output rows1.180000
%user>90%0.931034
%kernel>10%0.965517
%iowait>10%0.620690
avg %user41.233793
avg %system4.608621
avg %iowait0.623793
avg disk util33.448276
time more than 90%0.000000
total read (G)5.432129
total write (G)0.994891
avg read bw (MB/s)191.810354
avg write bw (MB/s)35.129954
read bw %75402.394531
read bw %95479.738281
read bw max480.722656
time_rd_morethan_950.034483
write bw %751.074219
write bw %9535.035156
write bw max945.855469
time_wr_morethan_950.034483
cached mean97.137931
cached 75%152.000000
cached max188.000000
used mean573.379310
used 75%593.000000
used max597.000000
rx MB/s 75%0.000000
rx MB/s 95%0.000000
rx MB/s 99%0.000000
pgin mean191.965517
pgin 75%402.000000
pgin max480.000000
pgout mean35.103448
pgout 75%1.000000
pgout max947.000000
fault mean117681.655172
fault 75%193074.000000
fault max287177.000000
ipc1.144464
instructions962.586404
cpu_freq3.225843
cpu%7.480452
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "summary=app.get_summary(disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + "display(summary.style)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "fc298e84", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:30:56.880941Z", + "iopub.status.busy": "2024-12-02T15:30:56.880598Z", + "iopub.status.idle": "2024-12-02T15:31:08.981531Z", + "shell.execute_reply": "2024-12-02T15:31:08.980923Z" + }, + "papermill": { + "duration": 12.110503, + "end_time": "2024-12-02T15:31:08.982917", + "exception": false, + "start_time": "2024-12-02T15:30:56.872414", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 288:> (0 + 12) / 12]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 288:==============> (3 + 9) / 12]\r", + "\r", + "[Stage 288:==========================================> (9 + 3) / 12]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DEV in ('nvme0n1')\n" + ] + }, + { + "data": { + "text/html": [ + "http://sr213:1088/tracing_examples/trace_viewer.html#/tracing/test_data/application_1733153225851_0001.json" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "app.generate_trace_view(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8f587a04", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:08.998181Z", + "iopub.status.busy": "2024-12-02T15:31:08.997435Z", + "iopub.status.idle": "2024-12-02T15:31:09.948956Z", + "shell.execute_reply": "2024-12-02T15:31:09.948476Z" + }, + "papermill": { + "duration": 0.960354, + "end_time": "2024-12-02T15:31:09.950263", + "exception": false, + "start_time": "2024-12-02T15:31:08.989909", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "gluten tpch_power 663d4f" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.get_app_name()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c7c5b7ec", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:09.964776Z", + "iopub.status.busy": "2024-12-02T15:31:09.964508Z", + "iopub.status.idle": "2024-12-02T15:31:43.805715Z", + "shell.execute_reply": "2024-12-02T15:31:43.805213Z" + }, + "papermill": { + "duration": 33.849826, + "end_time": "2024-12-02T15:31:43.807072", + "exception": false, + "start_time": "2024-12-02T15:31:09.957246", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 471:> (2 + 3) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]\r", + "\r", + "[Stage 471:> (5 + 0) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 471:>(5 + 11) / 16][Stage 472:> (0 + 5) / 16][Stage 475:> (0 + 0) / 16]\r", + "\r", + "[Stage 472:> (5 + 0) / 16][Stage 475:> (0 + 0) / 16][Stage 476:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 472:>(15 + 1) / 16][Stage 475:> (2 + 3) / 16][Stage 476:> (0 + 0) / 16]\r", + "\r", + "[Stage 475:> (5 + 0) / 16][Stage 476:> (0 + 0) / 16][Stage 479:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 475:>(15 + 1) / 16][Stage 476:> (3 + 2) / 16][Stage 479:> (0 + 0) / 16]\r", + "\r", + "[Stage 476:> (5 + 0) / 16][Stage 479:> (0 + 0) / 16][Stage 481:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 476:>(6 + 10) / 16][Stage 479:> (0 + 5) / 16][Stage 481:> (0 + 0) / 16]\r", + "\r", + "[Stage 479:> (5 + 0) / 16][Stage 481:> (0 + 0) / 16][Stage 482:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 479:>(5 + 11) / 16][Stage 481:> (0 + 5) / 16][Stage 482:> (0 + 0) / 16]\r", + "\r", + "[Stage 481:> (5 + 0) / 16][Stage 482:> (0 + 0) / 16][Stage 484:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 481:>(13 + 3) / 16][Stage 482:> (1 + 4) / 16][Stage 484:> (0 + 0) / 16]\r", + "\r", + "[Stage 482:> (5 + 0) / 16][Stage 484:> (0 + 0) / 16][Stage 487:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 482:>(5 + 11) / 16][Stage 484:> (0 + 5) / 16][Stage 487:> (0 + 0) / 16]\r", + "\r", + "[Stage 484:> (5 + 0) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 484:>(5 + 11) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]\r", + "\r", + "[Stage 487:> (5 + 0) / 16][Stage 488:> (0 + 0) / 16][Stage 490:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 487:>(13 + 3) / 16][Stage 488:> (0 + 5) / 16][Stage 490:> (0 + 0) / 16]\r", + "\r", + "[Stage 488:> (5 + 0) / 16][Stage 490:> (0 + 0) / 16][Stage 492:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 488:>(5 + 11) / 16][Stage 490:> (0 + 5) / 16][Stage 492:> (0 + 0) / 16]\r", + "\r", + "[Stage 490:> (5 + 0) / 16][Stage 492:> (0 + 0) / 16][Stage 495:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 490:>(14 + 2) / 16][Stage 492:> (1 + 4) / 16][Stage 495:> (0 + 0) / 16]\r", + "\r", + "[Stage 492:> (5 + 0) / 16][Stage 495:> (0 + 0) / 16][Stage 497:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 492:>(13 + 3) / 16][Stage 495:> (1 + 4) / 16][Stage 497:> (0 + 0) / 16]\r", + "\r", + "[Stage 495:> (5 + 0) / 16][Stage 497:> (0 + 0) / 16][Stage 498:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 495:>(5 + 11) / 16][Stage 497:> (0 + 5) / 16][Stage 498:> (0 + 0) / 16]\r", + "\r", + "[Stage 497:> (5 + 0) / 16][Stage 498:> (0 + 0) / 16][Stage 500:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 498:> (1 + 5) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]\r", + "\r", + "[Stage 498:> (6 + 0) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 498:>(6 + 10) / 16][Stage 500:> (0 + 3) / 16][Stage 502:> (0 + 0) / 16]\r", + "\r", + "[Stage 500:> (6 + 0) / 16][Stage 502:> (0 + 0) / 16][Stage 504:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 500:>(13 + 3) / 16][Stage 502:> (0 + 6) / 16][Stage 504:> (0 + 0) / 16]\r", + "\r", + "[Stage 502:> (6 + 0) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 502:>(6 + 10) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]\r", + "\r", + "[Stage 504:> (6 + 0) / 16][Stage 507:> (0 + 0) / 16][Stage 509:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 504:>(6 + 10) / 16][Stage 507:> (0 + 6) / 16][Stage 509:> (0 + 0) / 16]\r", + "\r", + "[Stage 507:> (6 + 0) / 16][Stage 509:> (0 + 0) / 16][Stage 510:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 507:>(6 + 10) / 16][Stage 509:> (0 + 6) / 16][Stage 510:> (0 + 0) / 16]\r", + "\r", + "[Stage 509:======> (6 + 0) / 16][Stage 510:> (0 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 509:=====> (6 + 10) / 16][Stage 510:> (0 + 6) / 16]\r", + "\r", + "[Stage 510:=====================> (6 + 0) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 510:============================================> (13 + 3) / 16]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 513:===========================================> (168 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 514:============================================> (171 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 662:====================================================>(197 + 3) / 200]\r", + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 711:==============================================> (176 + 8) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + } + ], + "source": [ + "shuffle_df, dfx=appals.get_shuffle_stat()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "39469bb7", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:43.824780Z", + "iopub.status.busy": "2024-12-02T15:31:43.824454Z", + "iopub.status.idle": "2024-12-02T15:31:52.321835Z", + "shell.execute_reply": "2024-12-02T15:31:52.321332Z" + }, + "papermill": { + "duration": 8.508382, + "end_time": "2024-12-02T15:31:52.323715", + "exception": false, + "start_time": "2024-12-02T15:31:43.815333", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + " application_1733153225851_0001 " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "http://sr213:18080/history/application_1733153225851_0001" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " query time " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 runtimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelism
real_queryid                     
117.8000000.0000000.0000000.0000000.0000000.0000000.3300006.7300000.0000000.0000000.0400001.340000822.54000014.140000[ 8 10 12 15]1.18000044132
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 01
AQEShuffleRead02
AdaptiveSparkPlan01
ColumnarExchange02
FilterExecTransformer01
FlushableHashAggregateExecTransformer01
InputAdapter02
InputIteratorTransformer02
ProjectExecTransformer02
RegularHashAggregateExecTransformer01
Scan parquet 01
ShuffleQueryStage02
SortExecTransformer01
VeloxColumnarToRow01
VeloxResizeBatches02
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator input row count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 1
ColumnarExchange0.000000
VeloxResizeBatches0.000000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator output row count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 1
ColumnarExchange0.000000
FlushableHashAggregateExecTransformer0.000000
InputIteratorTransformer0.000000
ProjectExecTransformer591.600000
RegularHashAggregateExecTransformer0.000000
Scan parquet 591.600000
SortExecTransformer0.000000
VeloxColumnarToRow0.000000
VeloxResizeBatches0.000000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2rmDvYuy9G2vAEjVRY4kmlsSafNWYxB5NNBG7JkaMNXZULKjYidjBgp2OSJ33D17mtwPbC837c117scueOXtmdnbm7NlnniMTBEEAERERERERERERERERERERERFRMWJS0A0gIiIiIiIiIiIiIiIiIiIiIiIyNAZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYRFSJxcXGQyWRKb35+fgZ7rYCAALHewMBAg9X7oYiMjBS3n7e3d0E3h4iIiIiIiIiIiABMmjRJ5RhrcHCwVvUtW7ZMZX0FPbZ67do1le0LCAgw2Gv5+fnpvB2JSHuBgYFG+SwTkXLy51AiKj4YGEVERPkiLS0NoaGhWLp0Kfr3749y5cppPSglH5Cmy03Ra2RkZODy5ctYuXIlRo4ciSZNmqBMmTKwtLSEjY0NPD090aNHD6xduxZJSUlq2ygIAm7evInffvsNY8eORcuWLVG2bFlYWVnBysoK7u7u6NixI3788Ue8fftWq20YHR2NXbt2YcqUKWjatCksLS11CpycO3euVtutQYMGKut79eoVgoKCMHPmTHTr1g3VqlWDvb09zM3N4ezsjPr162PChAkICwvTuI1v3rzBxo0bMWzYMNStWxclSpSAubk5SpYsibp162L8+PG4cuWKxvUlJCTgzz//xKhRo9CgQQM4OzvD3Nwcjo6OqF69OkaOHKnVgJ62+97+/fs1qjcmJgY//vgj2rVrJ+6HdnZ2qFixIgYMGIBdu3YhIyNDbT3yA5Wa3KZOnapR+wy1DxpTTEwMlixZgsaNG6NUqVKw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2+Pt27c4fvw4Tp48iUuXLuHevXuIiYmBTCYTx986d+4Mf39/ODs7F0g7DaWwjw8agzH6g1ZWVjhy5AhWrlyJrVu34s6dO5DJZPD29kbv3r0xbtw4lC5dGocOHcqHNVTPEOfiokDf/mBRk5ycjL/++kt8rGj2kOLEmGMzxrB9+3b07t0bW7duxdWrV8VzaHFStWpVhIaG4t9//0VQUBBCQkLw/PlzJCQkwN7eHp6envDx8UHbtm3RpUsXuLi4FHST9Sb/fa9WrVrw9fUtwNZQccGp9OiDI5/+VNl0e9ooqKnJiIiIiIoD+SkGjD2dARERfZgK8/R0RESKGGpKHCIiIiIiIgKKbsoGIiIiIiIiIiIiIiIiIiIiIiIiJRgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7MgEQRAKuhHKZGVlITo6Gvb29pDJZAXdHCKiYmvcuHHYvn27wer7+uuv8fXXXxusPiIq+nx8fPD48WOD1bd37160aNHCYPURERFRweJ3Ev08fvwYPj4+Bq0zJibGoPURERERERERERmSIAhITEyEu7s7TEyU54Uq1IFRT58+hYeHR0E3g4iIiIiIiIiIiIiIiIiIiIiICpknT56gXLlySp83y8e2aM3e3h5A9ko4ODgUcGuIiIiICs5vk04VdBOIiIiIiIiIiKgQGL2sdUE3gYiIiKjAJSQkwMPDQ4wtUqZQB0blTJ/n4ODAwCgiIiL6oHU991VBN4GIiIiIiIiIiAoBB4fbBd0EIiIiokIjJ7ZIGeWT7BERERERERERERERERERERERERVRDIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTtaB0alp6djwYIF6NChAxwcHCCTyRAcHJynnCAIWLt2LerUqQNra2u4urqiR48eSEpKMkS7iYiIiIiIiIiIiIiIiIiIiIiIlNI6MCo5ORmzZ8/G/fv3Ubt2baXlZs6cic8++wzVqlXDihUrMGPGDJibmyMlJUWvBhMREREREREREREREREREREREaljpu0C9vb2ePz4MTw8PLBr1y6cO3cuT5mIiAgsWbIEM2fOxPfffy/+f/Lkyfq1loiIiOgDNWCG1t02IiIiIiIiIiIqhm4WdAOIiIiIihCtM0aZmprCw8NDZZnt27fD3NwcM2bMAABOn0dERERERERERERERERERERERPlK68AoTYSGhqJ27drYu3cvXF1dYW9vDw8PD2zfvt0YL0dERERERERERERERERERERERCRhlMCoZ8+e4fXr1xg7diymTZuGnTt3okKFChgyZAiuXLmidLnU1FQkJCRIbkRERERERERERERERERERERERNoySmDUu3fvEBkZiUWLFmHatGkYMGAADhw4ADs7OyxZskTpcgsXLoSjo6N4UzdlHxERERERERERERERERERERERkSJGCYyysLAAAPTp00f8n52dHZo1a4YbN24oXW7GjBmIj48Xb0+ePDFG84iIiIiIiIiIiIiIiIiIiIiIqJgzSmBUqVKlJH9zlCxZEq9evVK6nKWlJRwcHCQ3IiIiIiIiIiIiIiIiIiIiIiIibRklMKpGjRoAgBcvXkj+//r1a7i7uxvjJYmIiIiIiIiIiIiIiIiIiIiIiERGCYzq1KkTAGDbtm3i/96+fYuzZ8+iQYMGxnhJIiIiIiIiIiIiIiIiIiIiIiIikZkuC61atQpxcXEIDw8HAGzevBkhISFwcnLC+PHj0aNHD9SvXx8zZ87Eq1ev4OnpiXXr1iEzMxPTp0836AoQERERERERERERERERERERERHlJhMEQdB2IW9vb0RFReX5v5eXFyIjIwFkT5s3depU7N+/H8nJyfD19cXChQvh5+en8eskJCTA0dER8fHxcHBw0LaZRERERMVG7Y21C7oJRERERERERERUCNz0v1nQTSAiIiIqcJrGFOmUMSon+EmVUqVKYePGjbpUT0REREREREREREREREREREREpBeTgm4AERERERERERERERERERERERGRoTEwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNgxK+gGEBEREREREREREREREREVF5mZmUhPTy/oZhARERUpZmZmMDU1hUwmM2y9Bq2NiIiIiIiIiIiIiIiIiOgDJAgCXrx4gbi4uIJuChERUZFkamoKV1dXODo6GixAioFRRERERERERERERERERER6ygmKcnV1hY2NjcEzXhARERVXgiAgIyMDCQkJeP78OVJSUuDm5maQuhkYRURERERERERERERERESkh8zMTDEoytnZuaCbQ0REVCTZ29vD0tISb968gaurK0xNTfWu08QA7SIiIiIiIiIiIiIiIiIi+mClp6cDAGxsbAq4JUREREWbra0tBEEQz636YmAUEREREREREREREREREZEBcPo8IiIi/Rj6XMrAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUERERERERERERERERERGRDmQyGfz8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mxESEgInJyeMHz9eaVo/b29vo6T8IyIiIiIiIiIiIiIiIiIqrCIXdS3oJhQ6ISEh2Lhxo+R/hw8fFu8HBAQoDIwCgN9//x1TpkzB9u3bYWlpiSlTpmDevHl6t2n69OmIi4vDrl27MH36dGRmZsLLyytPYFTu14qKipL8z8/PT6fAKABo164dwsLCsHDhQpw4cQIHDx6Es7Mzqlatip9++gnt2rXTqV4gO/Aqp/1BQUG4dOkSSpYsiYCAACxYsACurq46162LhQsXYv/+/Th79iz27NkDZ2dnNG7cGNOmTYOfn1+e8mXLlsXly5fxww8/YM+ePVi2bBns7Ozg4+MjZijLsXHjRnh5eSEoKAgrVqxAxYoVsWzZMlStWjXfA6MmTJgAMzMzrF69GmvXroWLiwsGDRqEBQsWwMbGRu/658yZgxIlSmDVqlX49ddfUb58eWzYsAFHjhwpkMCo3NMgnjp1SvI/RYFRABAUFITx48fj8OHD2L59O4Ds44CiwChNPqumpqbYu3cvfv31V2zatAlbt26FIAjw8PBA7969MWjQIP1XmIoEmZA7N50GvL29ERUVlef/Xl5eYtRfnheSyTBu3DisWrVK49dJSEiAo6Mj4uPj4eDgoG0ziYiIiIqN2htrF3QTiIiIiIiIiIioELjpf7Ogm0AKvH//Ho8ePUL58uVhZWVV0M0hIiIqsjQ9p2oaU6RTxihlwU+q6BB/RUREREREREREREREREREREREpBOTgm4AERERERERERERERERERERERGRoTEwioiIiIiIiIiIiIiIiIiIiIiIih2dptIjIiIiIiIiIiIiIiIiIiIqTAYOHIgLFy5oVNbMzAz37983couIiKigMTCKiIiIiIiIiIiIiIiIiIiKvB07dhR0E4iIqJDhVHpERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOyYFXQDiIiIiIiIiIiIiIiIiIiKtbmOBd0C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v3OM/+mnn+46f0mvmduVKVNGku5aj3GNHThw4L7f/+zZs8rOzlbXrl1zBM/27dt317H5qd34nf344485rhmPBfTw8ChIyfiHePAPXAUAAAAAAAAAAAAAlBpDhgyRJM2YMcN0jJwkBQcHS5KGDh16zzmMR6gZ3Y/dYKpWraqLFy/qypUrhZ7LEr169ZKzs7Nmz56tw4cP57h+5swZnT592uL5+/TpI0l6//33zY6emzVrltLS0tS3b1+L535QzZkzJ8ezSv97F0YeHh5KTU3VN998Y2o7dOiQtm3bdtf5S3rN3FmLJJ06dSrPPq+88ooMBoMmTJiQaxAsOjra4uMa69SpI+lWCOr2d37kyBEtWrTormPzU7vxO5s/f76SkpJM7Tt37tT333+vxo0by93d3aLaUbpxrh0AAAAAAAAAAAAAoNi0atVKL7/8ssLCwtS6dWt16NBB+/btU2RkpLp06SJvb+88x5YvX17e3t4aPHiwhg4dqtTUVK1atUq+vr6Frqtr166KjY1V165d1a9fP9nb28vBwcEU5JKkqKgoRUVFmY2Lj49XYGCg6bOPj49cXV0LfH9bW1t99tln6tmzpzw9PdWtWze5u7srNTVVsbGx2r9/v1avXq0GDRpY9HxjxozRypUrFRYWpri4OLVs2VLHjx/X119/rZo1axbrUYTx8fEKDQ01+yzJ7D16eXnJy8urUPc5c+aM2rRpo3bt2ungwYPauXOnPDw89Prrr5v1e+mll/Tll1+qb9++GjBggG7cuKFNmzapffv22rVrV57z52fNFFRoaKjpfRh/RkVFmb2b2//79lpmzJihf/3rX3rttddUrVo1SbeCiMYj5jw9PfX+++9r8uTJcnd31wsvvKDatWvr4sWLioqK0tmzZ3XhwgXZ2dkVuO5HH31UvXv31vr169W6dWu1a9dOv/76qzZs2KCOHTsqIiIiz7H5qf2pp57SK6+8oqVLl6pFixZ64YUXdOnSJa1bt06PPPKIPvroowLXjH8GglEAAAAAAAAAAAAAUIQmfL65pEt44Cxbtkzu7u5avny55syZo+rVq8vPz08BAQE5doPKbez48eO1evVqWVtba/z48QoKCip0TX5+frp69arCw8Pl5+enzMxMubi45AhG3XmvhIQEszYvLy+LglGS1LlzZx08eFDBwcHatWuXIiIiVKVKFbm7u+vD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duzQu+++q5iYGG3btq1QuxGNHj1aderUUdu2bVW7dm1dunRJ69at0zPPPKNt27apQ4cOOcaMHTtWGRkZGjZsmK5cuaJVq1bJy8tLMTExaty4cY7+zz77rKpWrao33nhDx44d08qVK3Xw4EEdOHBAtra2pn6WvPdTp06pW7du6tmzp5588kmFh4dr2rRpqlGjhl5//XVTvwsXLqht27b666+/1L9/f7m6umrz5s2mXdDut7CwMP3++++aP3++WfDQUi+//LLCw8PVqlUr/etf/9L169d14sQJffjhhxo3bpyqV6+eY0x+33tB3R5CDA0NVUJCQp59C7reLZGUlKTOnTvrqaee0tixY/Xdd99pwYIFOnr0qHbt2iUrq//tVVSQ9W5J7Tt37lTPnj1148YN9ezZU+7u7rpy5Yq2bNmicuXKKTQ01Kz/9evX1alTJ7m4uOiVV17Rrl279MUXXygrK0tr16416ztjxgz5+fmpWrVqGjBggGxtbbV161Z5e3srJCQkR1DLkjVTlAzZucUVHxBJSUlydHRUYmKiKlSoUNLlAAAAlJxAx5KuAAAAAAAAAA+CwMSSrgC5SE9P17lz5+Tm5iYbG5sc18/7fVsCVeVPrentiv2eVapUkcFg0N9//60ff/xRo0eP1pgxYzRkyBA1bdpUR44cUVpammxsbLRz5055e3srOTlZkuTs7Kxdu3apUaNGio6O1rx587Rz505NmzZNY8aMKVRdxt2h4uPj8z3GYDCoffv2ioqKynEtMDBQQUFB2rp1q7p06aJBgwbp888/11dffaUePXpo0qRJCg4O1q+//qpatWopPT1djz32mK5cuaLvvvtOLVq0MM01evRoLVq0SN9++22OQFlBxcfHy83NTcOGDcsRlrhdt27dFBERobCwML300kuSpKysLD3//PPasWOH1q5dq379+llcx7fffqt27czXX0JCgho2bChPT0/t3r3b1G58l9WrV9eJEydUqVIlSdKGDRvUu3dv9ejRQ1999ZWpv5eXl6Kjo9WlSxdFRESYAly+vr6aN2+ePvzwQ40fP16SCvzeje9PkiIiItS1a1dJt3aFcnd315NPPql9+/blmGPOnDmm0F16ero8PT11/Pjxe34PBZGVlaWGDRvq8uXLSkhIUPny5Qs1X1JSkipWrKiWLVvqu+++MwvC/frrr6pWrZqsra1N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T+Xm5qpfv36qV6+eEhMTFRYWptOnTys6OvqB12gSHh4uSbp27ZrmzZunVq1aKTAw0Hy9devWFv1PnTqldu3aKTs7W4MHD1bDhg21e/duvffee0pISNA///lP85GHxZGXl6fevXtr+/btaty4sYKDg1WtWjUlJSUpNDRUffr0MQfTbty4oY4dO+r48ePq1KmTXnrpJSUnJysmJka7du3St99+qzp16ljM/yDPXZLOnz+vnj17qmfPnurSpYt27Nih9957T//+97/v+dy3bNmijz/+WL169VLnzp118eJFbd++XTk5ObKzs1NeXp4CAwO1bds2tWjRQq+++qqysrK0YcMG+fv76+uvv1bLli3N812/fl0dOnTQxYsX1bt3bw0aNEi//vqrDh8+rLlz5+q1116zuP/Ro0fVoUMHVa1aVf369ZOrq6t++OEHffXVV/rss8/0/PPPF/s7AioCglEAAAAAAAAAAAAAgDJz4cIFOTs7y8HBQUePHtWYMWM0duxYBQUFycPDQ8eOHTOHSpYsWaLAwEC5urpKklxdXc0hlX379mnevHnas2ePpk2bVuxglElMTIykOzsBFXVMUYJRc+bMUbdu3fTLL79o/fr1WrVqlXr16iV7e3tFRkbq4sWLql+/vnJychQUFKTbt2/rwIEDevLJJ81zjBkzRosXL9aoUaPyBcqKyrSu1NRUzZs3T61bt77nWidMmKCMjAzFxsbqj3/8oyRp2rRp6tq1q3bu3Kl//OMfGjBgQLFqkaR58+Zp+/bt6tOnjzZs2GCxe9iRI0fk6Oho/rxw4UIdP35cI0eO1IoVK8zt77//vqZMmaL33ntPCxcutJi/qM/d5IcfflBkZKTCwsIkSX/729/Url07xcTEaOzYsXrqqacKXMfixYu1Z88ePfvss+a2y5cvq1q1aubat23bpqFDhyo2Nta8zkmTJqlly5YKCQnR7t27zWP37NmjtLQ0hYWFKTIy0uJe586dy3f/1atX69atW1q/fr26du1qbs/Ly1NaWlqBNQP/SzhKDwAAAAAAAAAAAABQZjIzM82hl+XLlyshIcEcADG1Z2RkSJKef/55nThxQosWLdKyZct0+PBhHTx4UG3atNHIkSPVvn17paWlaezYsdZZTBF4eHhIkho2bChJatSokSSpQYMGkqQff/xR0p2dhy5duqRXX33VIhQlSaGhoZKkDRs2lEnN2dnZ2rFjhxo0aKCgoCBze6VKlTRhwgRJ0saNG0t0j6VLl8rGxkZz5861CEVJ0lNPPSVnZ2fzZ9O9TKElkzfeeEP29vYF1lLU525iZ2en119/3fy5cuXKGjNmjMX9CzJw4ECLUJQkOTs7q0qVKpKkJUuWyMbGRgsWLLBY5+OPP66+fftq7969unr1qrnddGSinZ1dvns1adIkX1th/W1sbPT4448XWjfwv4IdowAAAAAAAAAAAAAAVvHiiy9q9erVGjRoUKF9PDw81LdvXy1evFi+vr5q2bKlpk6dqp49e6pSpfK/F4gpsGL6bW9vb/H5xo0bkqRDhw5Jkv7973/n28kpNzdXkpSSklLq9Up3dibKy8vTE088ke8Zt2nTRpKUnJxc7PkzMzN19uxZNWrUyHxc3r0kJyerWrVq+YJBTk5O8vLy0qlTp5Seni4nJyfztaI+dxMPDw+L8ZLMR9ydOnWq0No6d+5c6LXMzEydPn1aNWvW1IIFC/JdT01NldFo1Pfffy9fX19J0nPPPScXFxd98MEHSk1NVefOneXr66tmzZoVeI9+/fpp/vz5GjRokF5++WW1b99eTz/9tOrWrVtoXcD/EoJRAAAAAAAAAAAAAIAy4+joqMzMTElSjx49lJ6ebr5maq9evbok6cSJE5o5c6a2bdumwYMHKy4uTvXq1dObb76pUaNGyc7OTqNGjdK7776bb9eh8sJgMEiSOWBk+mz6bdrx59q1a5KkTZs2adOmTQXOlZ2dXZqlmmVlZUmSatWqle+aqc30XRWH6Tt3c3Mrcj2FBX1MO0tlZmZaBJuK+txNirvWu4/j+z3TOq9evXrPYxfv/l5r1aqlAwcOKCIiQp9//rn5iEcPDw/Nnz9fvXv3thj73HPPaefOnZo5c6YWLFigDz/8UJLUrl07RUVFycfHp9D7Av8Lyn98FgAAAAAAAAAAAABQYXh5eeny5cvm8I2J0WhUWlqa3N3dzbv6nDlzRm3atNH58+e1aNEiNWvWTKNGjdJnn32mwYMH64UXXtD06dP1wQcfWGMpD1WNGjUkSVu3bpXRaCzwJy4urkxqcXBwkCRduXIl3zVTm+nYw+IwBZguXbpU5HoKqkWSLl++XOJ6pHuv1fQ8CmI6Mq8gpnU+9dRThX6nRqNRHTt2tBjXuHFjrV69Wr/++qtOnDih9957T7/88osGDx6sH374Id99unTpop07dyojI0P/+te/NHLkSB04cED9+/cv0tqBioxgFAAAAAAAAAAAAACgzPj5+UmS9u/fb9GelJSk9PR0tWvXztzWv39/hYSEmAMm169f18aNG7V27VotXLhQK1as0OzZszV//vwS12VjY2M+ss4aTEepmY7UKy02NjaSdM+1NmnSRDY2Njp27Jhu375tce27776TpBLtROTo6Chvb2+lpaXp/Pnz9+3frFkzZWdn69y5cxbtGRkZunDhgtzc3PIdg/eg0tLSLHYvk+7sWGa6f3GY1nn69Oli7bBlMBjUokULTZ48WZMnT1ZOTo4SExML7f/YY4+pQ4cOWrFihbp27apTp07p119/LVbtQEVBMAoAAAAAAAAAAAAAUGaCgoIkSTNmzLA4ziwyMlKSNGzYsPvOYToOzeReu/YUVe3atfXTTz/p6tWrJZ6rOPr06SNXV1fNnj1bSUlJ+a6fO3dOZ8+eLfF9nJ2dZTAYdPr06UL7VKtWTV27dtUPP/xgPspNkm7evKkZM2ZIUol3Ixo9erTy8vI0btw43bp1y+LasWPHLHZw6tevnyTpb3/7m4xGo7l91qxZunHjxkPZGSknJ0eLFy82f75x44YWLlwoSerbt2+x5x09erSys7M1fvz4fOu8deuWdu7cadF28uRJ/fTTT/nmMX33NWvWtGg/cOCAcnJyLNp+++03paWl6bHHHlPVqlWLXTtQEZTPQ1YBAAAAAAAAAAAAABVSu3bt9PLLLys2Nlb+/v7q1KmTDh48qLi4OHXr1k2BgYGFjq1ataoCAwM1dOhQDRs2TNevX9eaNWs0fvz4EtfVvXt3JSYmqnv37howYIAcHBzk6OhoDnJJUnx8vOLj4y3GpaamKiIiwvw5ODhYnp6eD3x/e3t7rV69Wr1795avr6969Oghb29vXb9+XYmJiTp06JDWrl2rpk2bFnOFd1StWlUdO3ZUfHy8hgwZIn9/fz322GPy9vZWp06dzP1mzZql/fv3609/+pO++OILeXh4aO/evTp27JheeOGFEoeRxo0bpz179uiLL75Qs2bN1KNHD1WrVk0nTpzQ9u3blZKSolq1akmSxo4dq1WrVik2NlYpKSny8/PTyZMntWPHDtWrV09TpkwpUS2SVL9+fU2dOlXffvutGjRooB07dujkyZP64x//qKef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AADKzIEDByRJHTp0sGhv1aqVnJyczNdr1aqlxo0ba8qUKVq2bJmys7MVGRkpPz8/i3GpqalKT09Xq1atHriW4OBgc7Bp7ty5ku4c32dSo0aNe46ZOnXqfe8RFRWlQYMGaenSpQoODpaLi4uCg4MVHR2tkSNHWgR74uLi1LNnT+Xm5qpfv36qV6+eEhMTFRYWptOnTys6OvqB12gSHh4uSbp27ZrmzZunVq1aKTAw0Hy9devWFv1PnTqldu3aKTs7W4MHD1bDhg21e/duvffee0pISNA///lP85GHxZGXl6fevXtr+/btaty4sYKDg1WtWjUlJSUpNDRUffr0MQfTbty4oY4dO+r48ePq1KmTXnrpJSUnJysmJka7du3St99+qzp16uS7x6uvvqorV65oyJAhOnfunL744gv16NFD586dk52dnSRpyJAhWrlypT799FM98cQTFuN37dqlK1eu6PXXX7donzFjhsLCwlSnTh0NGjRI9vb2+vLLLxUYGKjo6OgCQ2Ymb731lqKiotSvXz+5uLgoOTlZX331lSTJ09PT/D1999132rJli/r06WPx3fz+ewJwbwSjAAAAAAAAAAAAAABl5sKFC3J2dpaDg4OOHj2qMWPGaOzYsQoKCpKHh4eOHTumnJwc2dnZacmSJQoMDJSrq6skydXV1RwO2rdvn+bNm6c9e/Zo2rRpxQ5GmZh24omIiCjymKIEo+bMmaNu3brpl19+0fr167Vq1Sr16tVL9vb/v717j6qyzvc4/tlscYPIRfECISKZ4mUoL3RSzNTR8o6YJno04ahTs1zOEe20Ii2VGRPMlWY5OY15idGjCamAYnkDZ/TkjSkvqaNkMDaplXITubPPH669cwd4AXEj836t1bLn9/ye3/P9Pc9jtJYffz9nxcTE6LvvvlObNm1UVFSkiRMnqqKiQl988YV69OhhHWP69OlauXKlpk6dWilQdrcs88rMzNTy5cvVrVu328711VdfVV5enuLi4vTiiy9Kkt566y0NHjxYu3bt0qeffqqxY8fWqBZJWr58uVJSUjRq1CglJCTYrB6Wnp4uV1dX6/GKFSt08uRJTZkyRatXr7a2/+EPf9C8efP0+9//XitWrKh0j4qKCh07dkyNGzeWJIWHhysuLk779u3TsGHDJEmDBg1SixYtFB8fr4ULF9pcv3nzZkk3w1MWX375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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.get_app_info(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "8d703114", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:52.348015Z", + "iopub.status.busy": "2024-12-02T15:31:52.347758Z", + "iopub.status.idle": "2024-12-02T15:31:54.312505Z", + "shell.execute_reply": "2024-12-02T15:31:54.312032Z" + }, + "papermill": { + "duration": 1.978758, + "end_time": "2024-12-02T15:31:54.314515", + "exception": false, + "start_time": "2024-12-02T15:31:52.335757", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
40%_time of scan and filter6.95
35%_time of project6.02
21%_not_counted3.55
3%_idle0.54
0%_time of input iterator0.06
0%_time of aggregation0.03
0%_time to append / split batches0.00
0%_time of rowConstruction0.00
0%_time to split0.00
0%_time to deserialize0.00
0%_time of sort0.00
0%_time of extraction0.00
0%_shuffle write time0.00
0%_time to compress0.00
0%_time to spill0.00
0%_time to decompress0.00
0%_time to convert0.00
\n", + "
" + ], + "text/plain": [ + " 0\n", + "40%_time of scan and filter 6.95\n", + "35%_time of project 6.02\n", + "21%_not_counted 3.55\n", + " 3%_idle 0.54\n", + " 0%_time of input iterator 0.06\n", + " 0%_time of aggregation 0.03\n", + " 0%_time to append / split batches 0.00\n", + " 0%_time of rowConstruction 0.00\n", + " 0%_time to split 0.00\n", + " 0%_time to deserialize 0.00\n", + " 0%_time of sort 0.00\n", + " 0%_time of extraction 0.00\n", + " 0%_shuffle write time 0.00\n", + " 0%_time to compress 0.00\n", + " 0%_time to spill 0.00\n", + " 0%_time to decompress 0.00\n", + " 0%_time to convert 0.00" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2rmDvYuy9G2uwRU3UWKKxJdbkq8Yk9miiUeyaGDHW2FGxoGInYgcLdjoidd4/eJnfDmwvNO/Pde3Fsnvm7JnZ2ZmzZ595jkwQBAFERERERERERERERERERERERERFiEl+N4CIiIiIiIiIiIiIiIiIiIiIiMjQGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVUgMTGxkImkym9+fn5Gey1hg4dKtYbEBBgsHo/FhEREeL28/b2zu/mEBEREREREREREYCJEyeqHGMNCgrSqr5ly5aprC+/x1avX7+usn1Dhw412Gv5+fnpvB2JSHsBAQFG+SwTkXLy51AiKjoYGEVERHkiNTUVISEhWLp0Kfr27YsyZcpoPSglH5Cmy03Ra6Snp+PKlStYuXIlRowYgUaNGqFUqVKwtLSEjY0NPD090a1bN6xduxaJiYlq2ygIAm7duoXff/8dY8aMQfPmzVG6dGlYWVnBysoK7u7uaN++PX766Se8e/dOq20YFRWF3bt3Y/LkyWjcuDEsLS11CpycO3euVtutXr16Kut7/fo1AgMDMXPmTHTp0gVVqlSBvb09zM3N4ezsjLp162L8+PEIDQ3VuI1v377Fpk2bMGTIENSuXRvFihWDubk5ihcvjtq1a2PcuHG4evWqxvXFx8fjzz//xMiRI1GvXj04OzvD3Nwcjo6OqFq1KkaMGKHVgJ62+96BAwc0qjc6Oho//fQT2rRpI+6HdnZ2KF++PPr164fdu3cjPT1dbT3yA5Wa3KZMmaJR+wy1DxpTdHQ0lixZgoYNG6JEiRKwtrZG+fLlMXjwYJ0Gbd+/f481a9agZcuWcHNzg5WVFby9vdGrVy/s27dP6/rS09OxZcsWtG/fHmXKlIGlpSXKlCmDDh06YOvWrcjIyNC4royMDFy/fh2//vorhgwZgvLlyxeowXljuXv3Lr7++mtUr14dDg4OcHBwQI0aNTBlyhTcu3cvv5tHRDrYtWuX0S4IISIi0kXHjh0/ir41ERmHscYHb9y4gR9++AGdOnWCt7c37OzsYGlpCTc3N7Rt2xZLlixBTEyMEdeMqOCLj4/H0aNHMW/ePLRv3x5OTk5aB7rIB6TpciP6mBhqjFqfzxz76qQJs/xuABH9H0tLS4wdO1by2PPnz7F37978aVAREBERgbJlywIAvLy8EBERkb8N+kitWbMGkydPxocPH/K1HaVKlcr1WFBQENq2bat0madPn+Lp06fYv38/5s6di3Xr1qFr165Kyz98+BC1atVS+vyLFy/w4sULHD16FPPnz8fSpUsxYsQItW339vZGZGSk2nL5oVevXjh37pzC56KjoxEdHY2rV69i1apVGDBgANasWQNHR0el9Q0dOhTbt29HWlparudiYmIQExODmzdvYvXq1Rg0aBB+/fVXODg4KK1v1qxZWL58OZKSknI9Fx8fj/j4eISHh2PDhg1o27YtNm/erHBfMbbAwECMGDEi1wBWamoqHj16hEePHuGvv/5CnTp1sGvXLlSoUCFP21eQ98FsZ8+eRf/+/REVFSV5PHv7bdu2DaNHj8bKlSthbm6utr6wsDD06dMH4eHhkscjIyMRGRmJwMBA9OjRA5s2bVK5D2Z79uwZ+vXrhwsXLkgef/78OZ4/f44jR47gt99+w65du+Du7q6yrv3792PgwIEaBWwWJb/++ismT56MlJQUyeNhYWEICwvD6tWrsXz5cowaNSqfWkgFEfuDBVt8fDwmTZqU380gIirUAgICMGzYMACAv78/fxjQ059//ol///03v5tBemjevHmui4oCAwNzfVfUlI+PT64x2xMnTuT6rphfSpQokat94eHhOHHiRD61iAw9Pvjff/9h4MCBuHHjhsLnX758iZcvX+L48eNYsGABVqxYwexCeYzn4oJhyJAh2L59OzIzM/OtDSVLlsy31/7YyAehCYKQjy35eBWUMer8+D2HCh8GRhEVINbW1li1apXksaCgIAZGUaH36tUrgwRF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3h7v3r3DiRMncOrUKVy+fBn3799HdHQ0ZDKZOP7WsWNH+Pv7w9nZOV/aaSgFfXzQGIzRH7SyssLRo0excuVKbNu2DXfv3oVMJoO3tzd69uyJsWPHomTJkjh8+HAerKF6hjgXFwb69gcLm6SkJPz111/i/4pmDylKjDk2Yww7duxAz549sW3bNly7dk08hxYllStXRkhICP79918EBgYiODgYL168QHx8POzt7eHp6QkfHx+0bt0anTp1gouLS343WW/y3/dq1KgBX1/ffGwNFRWcSo8+OvLpT5VNt6eN/JqajIiIiKgokJ9iwNjTGRAR0cepIE9PR0SkiKGmxCEiIiIiIiKg8KZsICIiIiIiIiIiIiIiIiIiIiIiUoKBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERY5MEAQhvxuhTGZmJqKiomBvbw+ZTJbfzSEiKrLGjh2LHTt2GKy+adOmYdq0aQarj4gKPx8fHzx58sRg9e3btw/NmjUzWH1ERESUv/idRD9PnjyBj4+PQeuMjo42aH1ERERERERERIYkCAISEhLg7u4OExPleaEKdGDUs2fP4OHhkd/NICIiIiIiIiIiIiIiIiIiIiKiAubp06coU6aM0ufN8rAtWrO3tweQtRIODg753BoiIiKi/LNyaN/8bgIRERERERERERUA4wP+yu8mEBEREeW7+Ph4eHh4iLFFyhTowKjs6fMcHBwYGEVEREQfNSfXj2cqGCIiIiIiIiIiUo6/mRERERH9n+zYImWUT7JHRERERERERERERERERERERERUSBXojFFERERElOWToLH53QQiIiIiIiIiIioQ7uR3A4iIiIgKDWaMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkmOV3A4iIiIhIvX4z2G0jIiIiIiIiIiLgVn43gIiIiKgQYcYoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTlaB0alpaVhwYIFaNeuHRwcHCCTyRAUFJSrnCAIWLt2LWrVqgVra2u4urqiW7duSExMNES7iYiIiIiIiIiIiIiIiIiIiIiIlNI6MCopKQmzZ8/GgwcPULNmTaXlZs6ciS+++AJVqlTBihUrMGPGDJibmyM5OVmvBhMREREREREREREREREREREREaljpu0C9vb2ePLkCTw8PLB7926cP38+V5nw8HAsWbIEM2fOxA8//CA+PmnSJP1aS0REREREREREREREREREREREpAGtM0aZmprCw8NDZZkdO3bA3NwcM2bMAABOn0dERERERERERERERERERERERHlK68AoTYSEhKBmzZrYt28fXF1dYW9vDw8PD+zYscMYL0dERERERERERERERERERERERCRhlMCo58+f482bNxgzZgymTp2KXbt2oVy5chg0aBCuXr2qdLmUlBTEx8dLbkRERERERERERERERERERERERNoySmDU+/fvERERgUWLFmHq1Kno168fDh48CDs7OyxZskTpcgsXLoSjo6N4UzdlHxERERERERERERERERERERERkSJGCYyysLAAAPTq1Ut8zM7ODk2aNMHNmzeVLjdjxgzExcWJt6dPnxqjeUREREREREREREREREREREREVMQZJTCqRIkSkr/ZihcvjtevXytdztLSEg4ODpIbERERERERERERERERERERERGRtowSGFWtWjUAwMuXLyWPv3nzBu7u7sZ4SSIiIiIiIiIiIiIiIiIiIiIiIpFRAqM6dOgAANi+fbv42Lt373Du3DnUq1fPGC9JREREREREREREREREREREREQkMtNloVWrViE2NhZhYWEAgC1btiA4OBhOTk4YN24cunXrhrp162LmzJl4/fo1PD09sW7dOmRkZGD69OkGXQEiIiIiIiIiIiIiIiIiIiIiIqKcZIIgCNou5O3tjcjIyFyPe3l5ISIiAkDWtHlTpkzBgQMHkJSUBF9fXyxcuBB+fn4av058fDwcHR0RFxcHBwcHbZtJREREVGTU3FQzv5tAREREREREREQFwC3/W/ndBCIiIqJ8p2lMkU4Zo7KDn1QpUaIENm3apEv1REREREREREREREREREREREREejHJ7wYQEREREREREREREREREREREREZGgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihyz/G4AEREREREREREREREREVFRkZGRgbS0tPxuBhERUaFiZmYGU1NTyGQyw9Zr0NqIiIiIiIiIiIiIiIiIiD5CgiDg5cuXiI2Nze+mEBERFUqmpqZwdXWFo6OjwQKkGBhFRERERERERERERERERKSn7KAoV1dX2NjYGDzjBRERUVElCALS09MRHx+PFy9eIDk5GW5ubgapm4FRRERERERERERERERERER6yMjIEIOinJ2d87s5REREhZK9vT0sLS3x9u1buLq6wtTUVO86TQzQLiIiIiIiIiIiIiIiIiKij1ZaWhoAwMbGJp9bQkREVLjZ2tpCEATx3KovBkYRERERERERERERERERERkAp88jIiLSj6HPpQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYRERERERERERERERER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IiIiIiIiIiIiIiIiKvR27tyZ300gIqIChlPpERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRY5bfDSAiIiIiIiIiIiIiIiIiKtLmOuZ3C5SbG5ffLSjUZDIZWrZsiaCgoPxuilEJgoAff/wR69evR2RkJNLS0uDv74+AgID8bppRfCzvK9HHgBmjiIiIiIiIiIiIiIiIiIhIZ/fv38ewYcPg4+MDZ2dn2NjYoGrVqhg/fjyioqJylQ8KCoJMJlN4K1OmjKTshw8fMGHCBJQsWRKurq5YuHAhMjMzjbIe3t7e8Pb2Nkrdhd327dsxffp0ODo6YsqUKZgzZw569OiR380q0gICAiCTyYps8BlRXmHGKCIiIiIiIiIiIiIiIiIi0llYWBj+/vtvNG/eHE2bNoW9vT3Cw8OxZs0abNu2DefPn0eVKlVyLdeyZUv4+flJHnNwcJD8P3HiRGzevBn+/v5ITEzEd999BysrK0yaNMmYq6SxO3fuwMbGJr+bYXSHDh0CAOzfvx9ubm753Brj+1jeV6KPAQOjiIiIiIiIiIiIiIiIiIhIZ23btsW7d+9gbm4ueXzHjh0YOHAg5syZg127duVazs/PD3PnzlVab1paGjZu3IiAgAAMGDAAAFClShX8+uuvBSYwSlHAV1H04sULAPgogqKAj+d9JfoYcCo9IiIiIiIiIiIiIiIiIiLSma2tba6gKADo3LkzgKyMUrpISEhAamoqqlWrJj5WvXp1/D/27jysymr///9rOwGK4oAiTkAOoGYOUV/HxKFySnHWtETt5PmYJWoDOQGV4XByQFPLAUTNShNNRc0BMEtxKGccSKE8mZUDyKQy/P7wt/dxCyhsQJSej+vysr3utdb9vu+9OFzX8XWt9eeff1pWaDY8PDxMx/jFxcUpLi7O7Gi/7I7Wu3uMwWDIsuuVkZ+fnwwGg2bNmiUHBwc5Ojpqw4YNCgwMVKVKlVS3bl199913WcadPHlSgwYNkoODg6ysrOTq6qoZM2YoPT0938977do1jR07Vk5OTipTpowcHR01fPhwXbx4MUtfLy8v0zOGh4dLktlze3l5WVyH8ThFPz8/zZ8/X0888YSsra311FNP6YsvvshxnPHdZ2ZmaubMmWrQoIGsra1Vo0YNvf3222Z9o6Oj1b9/f9nb28vKykoNGjSQr6+vUlNTs8yblpaW5VjHnL5Xo82bN6tjx46ys7NT2bJl1bJlS23cuDHH/teuXdP777+vRo0aycbGRtWqVdPzzz+vDRs2ZHkvBoNBw4cPlyQNHz7crC6O1gPyhh2jAAAAAAAAAAAAAAAF7ttvv5Uk1a9fP9vrMTExCgwMVEpKiurVq6cXX3xRtra2puuVK1dWvXr1NHXqVC1ZskRJSUkKCAhQy5YtzeaJjY1VfHy8mjZtmucavby8TAGYuXPnSrpzfJ9RxYoV7zvG39//gfdYvny5BgwYoM8++0xeXl6yt7eXl5eXgoKCNGLECLNQUnh4uHr06KG0tDT16dNHNWvWVFRUlHx8fHT69GkFBQXl+RmNUlJS1L59ex0/flwdOnTQyy+/rOjoaAUHB2vHjh366aefVK1aNVN/T09PUzAsODhYcXFx8vX1NV1v1qyZxbUYrV69Wn/88YeGDBkiGxsbffXVVxoyZIhu376tYcOG5Tju7bff1vLly9WnTx/Z29srOjpae/bsMV0/deqUWrVqpaSkJA0cOFB16tTRzp079cEHH2j//v3atm2bDAaDqX+JEiXMnu1B3+uMGTPk4+OjatWqacCAAbKxsdHWrVvl6empoKCgLKGx33//XW3bttWFCxfUpk0bvfTSS0pLS1NERIS8vb3l6ekpSXJ2djbVceTIEW3cuFG9evUye9cF8d6BfxJDZmZmZlEXkZOEhATZ2dkpPj4+y1myAAAA/yRNVjQp6hIAAAAAAADwCDg+7HhRl4BspKam6sKFC3JxcZG1tXXWDn52D7+o3PKLL7CpYmJitGrVKqWmpur48ePatm2b7O3ttXPnTjVp8r//jzMiIkIdOnTIMt7e3l6rVq3Siy++aGrbtWuXPD09lZiYKElycHDQ7t271ahRI0VGRmrevHnatWuXpk2bpjFjxuSrfmMIKDY2NtdjDAaD2rdvr4iIiCzX/Pz85O/vr61bt6pLly4aNGiQvvrqK3377bd66aWXNHHiRAUEBOi3335TrVq1lJqaqieeeELXrl3TDz/8oBYtWpjmGj16tBYtWqTvv/9ebdu2tej5Zs2apXfffVcjRozQsmXLTO0ffvihpk6dqjfeeEMLFizIdqyHh4ciIyNVUPGCu9fAjz/+qFatWkmSLl68KDc3N9nY2Oi///2vypQpk20dTzzxhPbu3Wt2tN8ff/yh6tWrS7qzW1lYWJhCQkL0yiuvSJIyMjL04osvaufOnVq7dq369euXY333+15//vlnubu7q0GDBvrhhx9UuXJlSXeCZ23atNH58+d18eJFs5Bfz549tWnTJs2cOVPvvPOO2XzfffedXnjhhSz3CQ4O1vDhw7MNWgHF2QN/p/7/cpsp4ig9AAAAAAAAAAAAAEC+xcTEyN/fXzNmzFBYWJiaNGmiffv2mYWiJKlatWoKDAzUL7/8opSUFJ0/f14ffvihEhIS1Lt3b509e9bUt1OnTjpx4oQWLlyoJUuW6NChQzpw4ICaN2+uESNGqE2bNoqLi8t3KKowOTk5SZLq1KkjSapbt64kqXbt2pLuBHokaePGjbp06ZJGjRplFoqSpPHjx0uS1q1bZ3Ed69evlyT5+PiYtb/11luysbExXX+YWrVqZQpFSVKtWrXUt29f/f3334qMjMxx3MSJE81CUZJMoaikpCRt375dtWvX1pAhQ0zXS5QoYQol5edZP//8c2VkZCggIMAUipIkGxsbjR49WvHx8dq5c6ep/ffff9emTZvUoEED0/d4t+xCUQAKDkfpAQAAAAAAAAAAAADyrUuXLsrMzFRSUpKOHDkiHx8ftW7dWps2bdIzzzxj6teoUSM1atTI9NnFxUWTJ09WiRIlNGnSJM2bN0+ffvqp6bqTk5N69+6tRYsWyd3dXU2aNJG/v7969OihEiUe/b1AjDueGP+2sbEx+5ySkiJJOnjwoCTp119/lZ+fn9kcaWlpku6EzywVHR2tcuXKZTna0M7OTi4uLjp16pTi4+NlZ/fwdjh76qmnsrQZg3SnTp3S888/n+24jh075jjnuXPnlJ6erqeeeirL+mjevLmkO+/CUsbvac+ePTpy5IjZNeP3c/f39NNPP0mS2rVrp5IlS1p8XwCWIRgFAAAAAAAAAAAAACgw5cqVU5s2bbRlyxa5urrq5Zdf1unTpx8YCnn55Zc1adIkHThwwNR24sQJzZw5U1u2bNHAgQMVHh6umjVrasKECRo5cqSsra01cuRITZ48WaVKPZr//G0wGCTJFNIxfjb+nZ6eLkm6fv26JCk0NFShoaHZzpWUlGRxHYmJiapRo0a216pUqSJJunHjxkMNRt2949K9bTdu3MhxXK1atXK8Zjx20dK5H8T4Pc2ZMyfHPnd/T8b+xh2tADxcj+ZvBgAAAAAAAAAAAADAY61ChQpq1aqVQkNDFRMTI1dX1/v2t7e3lyQlJyeb2s6cOaPmzZtr/vz5psBO//79tWPHDg0dOlQpKSmaPn26SpQooalTpxbewzwEFStWlCRt2rRJPXr0KPD5bW1tdfXq1WyvXblyRZJUvnz5Ar/v/WRXj7HN1tY2x3GlS5fO8Zpx3P3mzs9zGr+nhISEXM1j7H/p0iWL7wnAco/+voIAAAAAAAAAAAAAgMfS5cuXJUmpqakP7Hvs2DFJkrOzs6mtb9++GjdunCkUlZycrPXr12vNmjVasGCBli1bptmzZyswMDDftZYsWdJ0ZF1RcHd3l/S/o9oKWsOGDZWUlKRz586ZtSckJOjChQuqXr36Q90tSvrfd363EydOSLpTryXq16+vkiVL6tixY8rIyDC7Zjz6zs3NzaK5pf99T4cOHcpV/6effloGg0F79uwx7Q6WG8Yd1opyTQLFAcEoAAAAAAAAAAAAAIDF9uzZo1u3bmVp37hxo/bt2yd7e3s1atTI1H73UXlGCQkJevfddyVJAwYMeOA9jcfQGd1vB6Hcqlq1qi5fvqxr167ley5L9OrVSw4ODpo9e7aOHj2a5fq5c+d09uxZi+fv06ePJOmjjz5SZmamqX3WrFlKSUlR3759LZ7bUvv27dP+/ftNn8+fP69169apcuXKat++vUVzlitXTi+++KJ+++03BQcHm9pv3bqlGTNmSFK+nvW1116TwWDQhAkT9Pfff2e5HhkZaXaUnqOjo3r06KGYmBjNmjUrS/+IiIhs71O1alVJ0unTpy2uFQBH6QEAAAAAAAAAAAAA8mHq1Kk6evSo2rVrJxcXF5UqVUrHjh3Tzp07VbJkSS1atMgsuDRgwACVKlVKzz77rGrXrq2//vpLW7du1R9//CFPT0+98sorOd6rbNmy8vT01ODBgzV06FAlJydr9erV8vb2zvdzdO3aVVFRUeratav69esnW1tblS9fXkOGDDH1iYiIyBJkiY2NlZ+fn+mzl5eX2a5XuWVjY6NVq1apZ8+ecnd3V/fu3eXq6qrk5GRFRUXp4MGDWrNmjRo0aGDR840ZM0YrV65USEiIYmJi1LJlS508eVLbt29XzZo1i+Qowrp16+r555/X0KFDJUnr169XUlKSAgMDZW1tbfG8s2bN0t69e/Wvf/1LmzdvlpOTk3bv3q1jx47phRdeyFcwyt3dXR999JEmTZokV1dXdevWTbVr19bly5cVERGh8+fP69KlSypXrpxpzKJFi3TixAm9//772rRpk9q1a6e0tDTt3btXf/zxh2JjY7Pcp3Xr1qpQoYI+/fRTpaenq379+ipRooQ6dOjwwGMpAfwPwSgAAAAAAAAAAAAAKEx+8UVdQaF688039c033+inn37Snj17lJSUpGrVqmnAgAF65513TEePGf3rX//Spk2btGvXLl2/fl2lS5dW48aNNXXqVI0aNUolStz/4KNly5Zp/PjxWrNmjaysrDR+/Hj5+/vn+zl8fHx0/fp1rVu3Tj4+PkpPT5eTk1OWYNS994qLizNr8/DwsCgYJUmdO3fW4cOHFRAQoN27dyssLExVqlSRq6urPvnkE3Xu3NmieaU7wStj/aGhoTp48KAqV64sLy8vffjhh6pWrZrFc1tq6NChqlChggIDA3Xp0iW5urpq9uzZZu/cEo0aNdK+ffs0depUhYeH68aNG6pTp46mTJmiiRMnZtlxLK8mTpyoFi1aaN68eQoLC1NiYqIcHR3VrFkz+fr6yt7e3qx/zZo1dejQIc2cOVMbNmzQ3LlzZWtrq2bNmmnu3LnZ3qNChQratGmTJk2apCVLlph2oQoKCiIYBeSBIfPuPfIeMQkJCbKzs1N8fLwqVKhQ1OUAAAAUmSYrmhR1CQAAAAAAAHgEHB92vKhLQDZSU1N14cIFubi45GuXG+CfIiIiQh06dJCvr6/ZbluPgqSkJNna2qpnz57auHFjUZcD/OPk9ndqbjNF7BgFAADwGDh+4deiLgEAAAAAAAAAgGJv3759kqR69eoVcSUACgLBKAAAAAAAAAAAAAAA8I81ffp0paamKjExUSEhISpZsqRef/31oi4LQAEgGAUAAAAAAAAAAAAAAP6xpk+frvj4eJUoUUL169fXwoUL5erqWtRlASgABKMAAAAAAAAAAAAAAI+9QYMGaf/+/bnqW6pUKcXExBRyRciJh4eHMjMzi7oMk+vXrxd1CQAKCcEoAAAAAAAAAAAAAMBj78svvyzqEgAAj5gSRV0AAAAAAAAAAAAAAAAAABQ0glEAAAAAAAAAAAAAAAAAih2CUQAAAAAAAAAAAAAAAACKHYJRAAAAAAAAAAAAAAAAAIodglEAAAAAAAAAAAAAAAAAih2CUQAAAAAAAAAAAAAAAACKHYJRAAAAAAAAAAAAAAAAAIodglEAAAAAAAAAAAAAAAAAih2CUQAAAAAAAAAAAAAAAACKnVJFXQAAAAAAAAAAAAAAFGdNVjQp6hJydHzY8aIuAXgogoODNXz4cAUFBcnLy6uoywHwkLBjFAAAAAAAAAAAAADAYleuXNH8+fPVsWNH1axZU2XKlFHt2rU1YsQIXbhwIUv/L774Qq+//rqaNWumUqVKyWAwKCIiIku/1NRUjR07Vg4ODqpWrZoCAgKUkZHxEJ6oYAUHB8tgMCg4OLioS3nkODs7y9nZuajLAFCMsWMUAAAAAAAAAAAAAMBioaGheuutt/TEE0+oe/fuqlSpkn766ScFBQUpNDRU33//vZ588klT/4kTJyouLk41atRQtWrVdOnSpWzn9fb2VkhIiIYNG6bExERNmTJF1tbWGjdu3MN6NADAY45gFAAAAAAAAAAAAADAYvXr19fWrVv14osvymAwmNr9/f3l5+enCRMmaPv27ab2zz//XI0aNVKtWrX02muvadmyZVnmvH37toKCghQcHKzBgwdLktzc3LRw4UKCUQCAXOMoPQAAAAAAAAAAAACAxdq3b68uXbqYhaIkafTo0ZKkvXv3mrW/8MILqlWr1n3nvHHjhm7duqVGjRqZ2ho3bqw///yzgKqWYmNjZTAY5OXlpb1796pt27YqW7asqlevrsmTJyszMzPLmGvXrmns2LFycnJSmTJl5OjoqOHDh+vixYtm/SIiImQwGGQwGDR8+HBJ0vDhw01tBXW0Xnp6uhYuXKiWLVuqQoUKqlChgtzd3TVv3jzdunXLotolycvLSwaDQbGxsdk+l5+fn1m78Ui8//73v+rfv78qVqyo8uXLa+DAgbp27ZpZXw8PD9M7iIuLU1xcnNl7ye5ovbS0NM2dO1fNmjWTjY2NKlasqJ49e+rEiRPZvpcdO3aoVatWsrGxUY0aNTRlyhSlpaU9+IUCKHbYMQoAAAAAAAAAAAAAUOBKlbrzz9E2NjZ5Hlu5cmXVq1dPU6dO1ZIlS5SUlKSAgAC1bNnSrF9sbKzi4+PVtGlTi+s8ffq0unfvrp49e+rpp5/WunXrNG3aNDk6OuqNN94w9UtJSVH79u11/PhxdejQQS+//LKio6MVHBysHTt26KefflK1atUk3QkK+fr6SpKOHDmijRs3qlevXmrWrJlpvrv/2xLp6enq2bOnwsLCVK9ePXl5ealcuXI6evSoxo8fr169eplCRnmp3VI3b95Up06d5OTkpNdee027d+/W119/rYyMDK1du9bUz8vLSx4eHpKkuXPnSrpzbKJRxYoVszynp6entmzZosaNG2vUqFFKTEzUunXr1Lp1a/3www9q0qSJqf93332nbt26ydbWVsOHD1fp0qW1ePFi2dnZ5ev5ADyeCEYBAAAAAAAAAAAAAArcN998I0nq3r27ReMXL14sT09POTg4SJIcHBwUFBQkSYqMjNS8efO0a9cuTZs2LV/BqKioKIWFhalr166SpDfffFOurq5asWKFWTBqwYIFOn78uEaMGGF2/N+HH36oqVOn6oMPPtCCBQsk3QlGGXdVCg4O1saNG+Xp6SkvLy+L67zXvHnzFBYWpl69emndunWmIJokHT58WOXLl7eodkv98ccfevXVVzVjxgxJd45DbNSokUJDQ5WQkKAKFSpIktk7MO6ade8OVHdbsGCBtmzZosGDByskJMT0nBMnTlSTJk00btw47dy509Tf29tbGRkZ2r17t1q0aCFJeuutt8x2HwPwz8FRegAAAAAAAAAAAACAAnXp0iVNmjRJtra29w293E+nTp104sQJLVy4UEuWLNGhQ4d04MABNW/eXCNGjFCbNm0UFxenMWPG5KvWp556yhSKkqR69erJzc1N0dHRZv3Wr18vSfLx8TFrf+utt2RjY2O6/rB89tlnKlmypObOnWsWipKkp59+WlWqVDF9fli1v/fee6b/Ll26tF544QWlp6fr3LlzFs+5ePFilSxZUvPnzzd7zieeeEK9e/fW7t27Tcf1nT59WtHR0XruuedMoShJqlu3rnr37m1xDQAeX+wYBQAAAAAAAAAAAAAoMCkpKerbt6/+/vtvrVu3Ti4uLhbP5eTkpN69e2vRokVyd3dXkyZN5O/vrx49eqhEiYLZB6RBgwZZ2uzt7XXq1CmztujoaJUrV07169c3a7ez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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.show_critical_path_time_breakdown().T" + ] + }, + { + "cell_type": "markdown", + "id": "bde3cd7c", + "metadata": { + "papermill": { + "duration": 0.012768, + "end_time": "2024-12-02T15:31:54.340986", + "exception": false, + "start_time": "2024-12-02T15:31:54.328218", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Compare to previous run" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "888c7084", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:54.367369Z", + "iopub.status.busy": "2024-12-02T15:31:54.367111Z", + "iopub.status.idle": "2024-12-02T15:31:54.370128Z", + "shell.execute_reply": "2024-12-02T15:31:54.369683Z" + }, + "papermill": { + "duration": 0.017843, + "end_time": "2024-12-02T15:31:54.371339", + "exception": false, + "start_time": "2024-12-02T15:31:54.353496", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "if compare_appid:\n", + " compare_app=Application_Run(comapre_appid,basedir=compare_basedir)\n", + " output=app.compare_app(rapp=compare_app,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + " display(HTML(output))" + ] + }, + { + "cell_type": "markdown", + "id": "bb199e20", + "metadata": { + "papermill": { + "duration": 0.012114, + "end_time": "2024-12-02T15:31:54.396409", + "exception": false, + "start_time": "2024-12-02T15:31:54.384295", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Config compare" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ae5a681e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:54.422666Z", + "iopub.status.busy": "2024-12-02T15:31:54.422386Z", + "iopub.status.idle": "2024-12-02T15:31:54.424818Z", + "shell.execute_reply": "2024-12-02T15:31:54.424396Z" + }, + "papermill": { + "duration": 0.01699, + "end_time": "2024-12-02T15:31:54.426008", + "exception": false, + "start_time": "2024-12-02T15:31:54.409018", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "if compare_appid:\n", + " display(comp_spark_conf(app_als, compare_app_als))" + ] + }, + { + "cell_type": "markdown", + "id": "6118d3af", + "metadata": { + "papermill": { + "duration": 0.012438, + "end_time": "2024-12-02T15:31:54.451132", + "exception": false, + "start_time": "2024-12-02T15:31:54.438694", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# convert to HTML" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "902ebd2c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:54.477825Z", + "iopub.status.busy": "2024-12-02T15:31:54.477584Z", + "iopub.status.idle": "2024-12-02T15:31:54.480969Z", + "shell.execute_reply": "2024-12-02T15:31:54.480577Z" + }, + "papermill": { + "duration": 0.018124, + "end_time": "2024-12-02T15:31:54.482237", + "exception": false, + "start_time": "2024-12-02T15:31:54.464113", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "IPython.notebook.kernel.execute('nb_name = \"' + IPython.notebook.notebook_name + '\"')\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%javascript\n", + "IPython.notebook.kernel.execute('nb_name = \"' + IPython.notebook.notebook_name + '\"')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "1f55d7ac", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:54.509184Z", + "iopub.status.busy": "2024-12-02T15:31:54.508952Z", + "iopub.status.idle": "2024-12-02T15:31:54.511234Z", + "shell.execute_reply": "2024-12-02T15:31:54.510830Z" + }, + "papermill": { + "duration": 0.016976, + "end_time": "2024-12-02T15:31:54.512431", + "exception": false, + "start_time": "2024-12-02T15:31:54.495455", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# htmlname=nb_name.replace(\"ipynb\",\"html\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "45249902", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-02T15:31:54.539435Z", + "iopub.status.busy": "2024-12-02T15:31:54.539198Z", + "iopub.status.idle": "2024-12-02T15:31:54.541484Z", + "shell.execute_reply": "2024-12-02T15:31:54.541077Z" + }, + "papermill": { + "duration": 0.01708, + "end_time": "2024-12-02T15:31:54.542686", + "exception": false, + "start_time": "2024-12-02T15:31:54.525606", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# !jupyter nbconvert --to html ./{nb_name} --no-input --output html/{htmlname} --template classic" + ] + } + ], + "metadata": { + "celltoolbar": "Tags", + "hide_input": false, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "nbTranslate": { + "displayLangs": [ + "*" + ], + "hotkey": "alt-t", + "langInMainMenu": true, + "sourceLang": "en", + "targetLang": "fr", + "useGoogleTranslate": true + }, + "papermill": { + "default_parameters": {}, + "duration": 132.778369, + "end_time": "2024-12-02T15:31:57.173789", + "environment_variables": {}, + "exception": null, + "input_path": "2024_12_02_152940_tpch_gluten_application_1733153225851_0001.ipynb", + "output_path": "2024_12_02_152940_tpch_gluten_application_1733153225851_0001.nbconvert.ipynb", + "parameters": { + "appid": "application_1733153225851_0001", + "basedir": "sr213", + "compare_appid": "", + "compare_basedir": "", + "compare_name": "", + "disk": "nvme0n1", + "name": "tpch_gluten", + "nic": "enp61s0f0", + "tz": "Etc/GMT+0" + }, + "start_time": "2024-12-02T15:29:44.395420", + "version": "2.6.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "197px", + "left": "2188px", + "top": "111px", + "width": "269px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 9a83994e2dbbd5c97b7c72565924dd0b68022f51 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Mon, 2 Dec 2024 15:52:10 +0000 Subject: [PATCH 06/12] install tsc_freq_khz --- .../workload/benchmark_velox/initialize.ipynb | 139 +++++++++--------- .../benchmark_velox/tpc_workload.ipynb | 2 +- 2 files changed, 70 insertions(+), 71 deletions(-) diff --git a/tools/workload/benchmark_velox/initialize.ipynb b/tools/workload/benchmark_velox/initialize.ipynb index f280d60fdac0..ab17c5f00840 100644 --- a/tools/workload/benchmark_velox/initialize.ipynb +++ b/tools/workload/benchmark_velox/initialize.ipynb @@ -2,34 +2,28 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "heading_collapsed": true - }, + "metadata": {}, "source": [ "# System Setup" ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "**1. Install system dependencies and python packages. Prepare the environment.**" ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "First, install all dependencies and python packages as `root`. Run commands and make sure the installations are successful.\n", "\n", "```bash\n", "apt update\n", "\n", - "apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex\n", + "apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex linux-tools-common linux-tools-generic linux-tools-`uname -r`\n", "\n", "python3 -m pip install notebook==6.5.2\n", "python3 -m pip install jupyter_server==1.23.4\n", @@ -45,9 +39,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "***Required for Ubuntu***\n", "\n", @@ -73,18 +65,14 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "**2. Format and mount disks**" ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Create a python virtual environment to finish the system setup process:\n", "\n", @@ -101,18 +89,14 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Run script [init_disks.py](./init_disks.py) to format and mount disks. **Be careful when choosing the disks to format.** If you see errors like `device or resource busy`, perhaps the partition has been mounted, you should unmount it first. If you still see this error, reboot the system and try again." ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Exit `venv`:\n", "```bash\n", @@ -122,18 +106,14 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "**3. Create user `sparkuser`**" ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Create user `sparkuser` without password and with sudo priviledge. It's recommended to use one of the disks as the home directory instead of the system drive.\n", "\n", @@ -151,9 +131,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Generate ssh keys for `sparkuser`\n", "\n", @@ -172,9 +150,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Generate ssh keys for `root`, and enable no password ssh from `sparkuser`\n", "\n", @@ -188,9 +164,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Login to `sparkuser` and run the first-time ssh to the `root`\n", "\n", @@ -207,9 +181,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "***Required for Ubuntu***\n", "\n", @@ -222,18 +194,14 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "**4. Configure jupyter notebook**" ] }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "As `sparkuser`, install python packages\n", "\n", @@ -252,9 +220,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Configure jupyter notebook. Setup password when it prompts\n", "\n", @@ -341,9 +307,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Clone Gluten\n", "\n", @@ -355,9 +319,7 @@ }, { "cell_type": "markdown", - "metadata": { - "hidden": true - }, + "metadata": {}, "source": [ "Start jupyter notebook\n", "\n", @@ -546,7 +508,7 @@ "source": [ "for l in clients:\n", " !ssh root@{l} apt update > /dev/null 2>&1\n", - " !ssh root@{l} apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex > /dev/null 2>&1" + " !ssh root@{l} apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex linux-tools-common linux-tools-generic linux-tools-`uname -r` > /dev/null 2>&1" ] }, { @@ -1713,7 +1675,26 @@ "heading_collapsed": true }, "source": [ - "# Configure startup" + "# Configure monitor & startups" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "!cd ~\n", + "!git clone https://github.com/trailofbits/tsc_freq_khz.git\n", + "\n", + "for l in clients:\n", + " !scp -r tsc_freq_khz {l}:~/\n", + "\n", + "for l in hclients:\n", + " !ssh {l} 'cd tsc_freq_khz && make && sudo insmod ./tsc_freq_khz.ko' >/dev/null 2>&1\n", + " !ssh root@{l} 'dmesg | grep tsc_freq_khz'" ] }, { @@ -2775,14 +2756,18 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "## Install and deploy Trace-Viewer" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "Clone the master branch of project catapult:\n", "```\n", @@ -2856,21 +2841,27 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "## Deploy perf analysis scripts" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "Create a virtualenv to run the perf analaysis scripts:" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "\n", "```bash\n", @@ -2883,7 +2874,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "\n", "We will put all perf analysis notebooks under `$HOME/PAUS`. Create the directory and start the notebook:\n", @@ -2898,7 +2891,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "Package the virtual environment so that it can be distributed to other nodes:\n", "```bash\n", @@ -2909,7 +2904,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "hidden": true + }, "source": [ "Distribute to the worker nodes:" ] @@ -2917,7 +2914,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hidden": true + }, "outputs": [], "source": [ "for l in clients:\n", @@ -2943,7 +2942,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.12" }, "nbTranslate": { "displayLangs": [ diff --git a/tools/workload/benchmark_velox/tpc_workload.ipynb b/tools/workload/benchmark_velox/tpc_workload.ipynb index 5dcb50a8a066..b9b147619d9a 100644 --- a/tools/workload/benchmark_velox/tpc_workload.ipynb +++ b/tools/workload/benchmark_velox/tpc_workload.ipynb @@ -266,7 +266,7 @@ "outputs": [], "source": [ "if analyze_perf:\n", - " test_tpc.run_perf_analysis(disk_dev, nic_dev)" + " test_tpc.run_perf_analysis(disk_dev, nic_dev, proxy)" ] }, { From d2a3c2abdeb1f8016d3553374766ed7bad57d471 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Fri, 6 Dec 2024 05:35:33 +0000 Subject: [PATCH 07/12] add emon --- .gitignore | 2 + .../analysis/perf_analysis_template.ipynb | 56 +- .../workload/benchmark_velox/analysis/run.py | 4 +- .../analysis/run_perf_analysis.sh | 7 +- .../benchmark_velox/analysis/sparklog.ipynb | 732 ++- tools/workload/benchmark_velox/emon.list | 10 + .../workload/benchmark_velox/initialize.ipynb | 122 + .../native_sql_initialize.ipynb | 37 +- .../benchmark_velox/params.yaml.template | 9 + .../benchmark_velox/sample/tpch_q1.html | 2761 ++++++++-- .../sample/tpch_q1.nbconvert.ipynb | 4776 +++++++++++++---- .../benchmark_velox/tpc_workload.ipynb | 13 +- 12 files changed, 6932 insertions(+), 1597 deletions(-) create mode 100644 tools/workload/benchmark_velox/emon.list diff --git a/.gitignore b/.gitignore index 4ea83cbf7e12..f402cb1e83e0 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,5 @@ dist/ # For Hive metastore_db/ + +.ipynb_checkpoints diff --git a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb index 973474a08a0d..28f1032b5e21 100644 --- a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb +++ b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb @@ -21,13 +21,13 @@ "disk=''\n", "nic=''\n", "tz=''\n", - "basedir=''\n", + "base_dir=''\n", "name=''\n", "proxy=''\n", "\n", - "compare_appid=''\n", - "compare_basedir=''\n", - "compare_name=''" + "comp_appid=''\n", + "comp_base_dir=''\n", + "comp_name=''" ] }, { @@ -144,6 +144,18 @@ "os.environ[\"http_proxy\"] = proxy" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emonmetric=['emon_cpuutil',\n", + " 'emon_cpufreq',\n", + " 'emon_instr_retired',\n", + " 'emon_ipc']" + ] + }, { "cell_type": "code", "execution_count": null, @@ -174,19 +186,21 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ - "display(HTML(' 5 App info'))\n", - "display(HTML(' 6 Compare to previous run'))\n", - "display(HTML(' 7 Config compare'))" + "display(HTML(' 5 Self app info'))\n", + "display(HTML(f\" 6 Compare to {comp_name}\"))\n", + "display(HTML(' 7 Config compare'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# App info" + "# Self app info" ] }, { @@ -195,7 +209,7 @@ "metadata": {}, "outputs": [], "source": [ - "app=Application_Run(appid, basedir=basedir)\n", + "app=Application_Run(appid, basedir=base_dir)\n", "appals=app.analysis['app']['als']" ] }, @@ -214,7 +228,7 @@ "metadata": {}, "outputs": [], "source": [ - "summary=app.get_summary(disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + "summary=app.get_summary(show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", "display(summary.style)" ] }, @@ -226,7 +240,7 @@ }, "outputs": [], "source": [ - "app.generate_trace_view(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + "app.generate_trace_view(showemon=True,show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)" ] }, { @@ -244,7 +258,8 @@ "metadata": {}, "outputs": [], "source": [ - "shuffle_df, dfx=appals.get_shuffle_stat()" + "if not 'vanilla' in name:\n", + " shuffle_df, dfx=appals.get_shuffle_stat()" ] }, { @@ -273,7 +288,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Compare to previous run" + "# Compare to" ] }, { @@ -282,9 +297,9 @@ "metadata": {}, "outputs": [], "source": [ - "if compare_appid:\n", - " compare_app=Application_Run(comapre_appid,basedir=compare_basedir)\n", - " output=app.compare_app(rapp=compare_app,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + "if comp_appid:\n", + " comp_app=Application_Run(comp_appid,basedir=comp_base_dir)\n", + " output=app.compare_app(rapp=comp_app,show_metric=emonmetric,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", " display(HTML(output))" ] }, @@ -301,15 +316,16 @@ "metadata": {}, "outputs": [], "source": [ - "if compare_appid:\n", - " display(comp_spark_conf(app_als, compare_app_als))" + "if comp_appid:\n", + " comp_appals=comp_app.analysis['app']['als']\n", + " display(comp_spark_conf(appals, comp_appals))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# convert to HTML" + "# Convert to HTML" ] }, { diff --git a/tools/workload/benchmark_velox/analysis/run.py b/tools/workload/benchmark_velox/analysis/run.py index ba8f008d3553..7dedb1210201 100644 --- a/tools/workload/benchmark_velox/analysis/run.py +++ b/tools/workload/benchmark_velox/analysis/run.py @@ -16,11 +16,11 @@ import fire import papermill as pm -def exec(inputnb, outputnb, appid, disk, nic, tz, basedir, name, compare_appid='', compare_basedir='', compare_name=''): +def exec(inputnb, outputnb, appid, disk, nic, tz, base_dir, name, comp_appid='', comp_base_dir='', comp_name='', proxy=''): return pm.execute_notebook( inputnb, outputnb, - parameters=dict(appid=appid,disk=disk,nic=nic,tz=tz,basedir=basedir,name=name,compare_appid=compare_appid,compare_basedir=compare_basedir,compare_name=compare_name)) + parameters=dict(appid=appid,disk=disk,nic=nic,tz=tz,base_dir=base_dir,name=name,comp_appid=comp_appid,comp_base_dir=comp_base_dir,comp_name=comp_name,proxy=proxy)) if __name__ == '__main__': fire.Fire(exec) diff --git a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh index 42b391ffa3f4..23ef530b8cef 100755 --- a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh +++ b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -x + SCRIPT_LOCATION=$(dirname $0) PAUS=$HOME/PAUS @@ -115,7 +117,8 @@ then exit 1 fi hadoop fs -cp -f /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID - EXTRA_ARGS="--compare_appid $COMP_APPID --compare_basedir $COMP_BASEDIR --compare_name $COMP_NAME" + EXTRA_ARGS="--comp_appid $COMP_APPID --comp_base_dir $COMP_BASEDIR --comp_name $COMP_NAME" + sed -i "s/# Compare to/# Compare to $COMP_NAME/g" ${nb_name} fi if [ -n "${PROXY}" ] @@ -125,6 +128,6 @@ fi source ~/paus-env/bin/activate -python3 $SCRIPT_LOCATION/run.py --inputnb $nb_name --outputnb ${nb_name0}.nbconvert.ipynb --appid $APPID --disk $DISK --nic $NIC --tz $SPARK_TZ --basedir $BASEDIR --name $NAME $EXTRA_ARGS +python3 $SCRIPT_LOCATION/run.py --inputnb $nb_name --outputnb ${nb_name0}.nbconvert.ipynb --appid $APPID --disk $DISK --nic $NIC --tz $SPARK_TZ --base_dir $BASEDIR --name $NAME $EXTRA_ARGS jupyter nbconvert --to html --no-input ./${nb_name0}.nbconvert.ipynb --output html/${nb_name0}.html --template classic > /dev/null 2>&1 diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb index 876b4f1f2c28..86165394cd0b 100644 --- a/tools/workload/benchmark_velox/analysis/sparklog.ipynb +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -272,6 +272,602 @@ " " ] }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "# EMON process" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "def get_alias_name(metric,func):\n", + " return metric+\"_\"+func.__name__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "def splits_fill0(x):\n", + " fi=[]\n", + " for l in x:\n", + " li=re.split(r'\\s+',l.strip())\n", + " li=[l.replace(\",\",\"\") for l in li]\n", + " for j in range(len(li),192*4+5):\n", + " li.append('0')\n", + " fi.append(li)\n", + " return iter(fi)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "def background_gradient(s, m, M, cmap='PuBu', low=0, high=0):\n", + " from matplotlib import colors\n", + " rng = M - m\n", + " norm = colors.Normalize(m - (rng * low),\n", + " M + (rng * high))\n", + " normed = norm(s.values)\n", + " c = [colors.rgb2hex(x) for x in plt.cm.get_cmap(cmap)(normed)]\n", + " return ['background-color: {:s}'.format(color) for color in c]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "class Emon_Analysis(Analysis):\n", + " def __init__(self,emon_file):\n", + " Analysis.__init__(self,emon_file)\n", + " \n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/emonv.txt\"):\n", + " self.totalcores=0\n", + " self.numberofpackages=0\n", + " self.coresperpackage=0\n", + " self.threadsperpackage=0\n", + " self.tsc=0\n", + " self.unc_cha_cnt=0\n", + " self.unc_mdf_cnt=0\n", + " self.unc_imc_cnt=0\n", + " self.unc_cxlcm_cnt=0\n", + " self.unc_cxldp_cnt=0\n", + " self.unc_mchbm_cnt=0\n", + " self.unc_m2hbm_cnt=0\n", + " self.unc_pmem_fc_cnt=0\n", + " self.unc_pmem_mc_cnt=0\n", + " self.unc_m2m_cnt=0\n", + " self.unc_qpi_cnt=0\n", + " self.unc_r3qpi_cnt=0\n", + " self.unc_iio_cnt=0\n", + " self.unc_irp_cnt=0\n", + " self.unc_pcu_cnt=0\n", + " self.unc_ubox_cnt=0\n", + " self.unc_m2pcie_cnt=0\n", + " self.unc_rdt_cnt=0\n", + " with fs.open(paths[0]+\"/emonv.txt\") as f:\n", + " allcnt = f.read().decode('ascii')\n", + " for l in allcnt.split(\"\\n\"):\n", + " if l.startswith(\"number_of_online_processors\"):\n", + " self.totalcores=int(re.split(\" +\",l)[2])\n", + " elif re.search(\"Number of Packages: +(\\d+)\",l):\n", + " self.numberofpackages=int(re.search(\"Number of Packages: +(\\d+)\",l).group(1))\n", + " elif re.search(\"Cores Per Package: +(\\d+)\",l):\n", + " self.coresperpackage=int(re.search(\"Cores Per Package: +(\\d+)\",l).group(1))\n", + " elif re.search(\"Threads Per Package: +(\\d+)\",l):\n", + " self.threadsperpackage=int(re.search(\"Threads Per Package: +(\\d+)\",l).group(1))\n", + " elif re.search(\"TSC Freq +[.]+ +([0-9.]+)\",l):\n", + " self.tsc=int(float(re.search(\"TSC Freq +[.]+ +([0-9.]+)\",l).group(1))*1000000)\n", + " elif l.startswith(\" cha\"):\n", + " self.unc_cha_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" mdf\"):\n", + " self.unc_mdf_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" imc\"):\n", + " self.unc_imc_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" cxlcm\"):\n", + " self.unc_cxlcm_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" cxldp\"):\n", + " self.unc_cxldp_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" mchbm\"):\n", + " self.unc_mchbm_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" m2hbm\"):\n", + " self.unc_m2hbm_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" pmem_fc\"):\n", + " self.unc_pmem_fc_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" pmem_mc\"):\n", + " self.unc_pmem_mc_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" m2m\"):\n", + " self.unc_m2m_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" qpi\"):\n", + " self.unc_qpi_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" r3qpi\"):\n", + " self.unc_r3qpi_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" iio\"):\n", + " self.unc_iio_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" irp\"):\n", + " self.unc_irp_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" pcu\"):\n", + " self.unc_pcu_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" ubox\"):\n", + " self.unc_ubox_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" m2pcie\"):\n", + " self.unc_m2pcie_cnt=int(re.split(\" +\",l)[-1])*2\n", + " elif l.startswith(\" rdt\"):\n", + " self.unc_rdt_cnt=int(re.split(\" +\",l)[-1])*2\n", + " else:\n", + " raise Exception(\"Wrong, no emonv specified\")\n", + " \n", + " self.begin_clk=0\n", + " self.end_clk=0\n", + " \n", + " self.corecnt=self.totalcores\n", + " \n", + " self.emon_metrics=collections.OrderedDict({\n", + " 'emon_cpuutil':{\n", + " 'sum_func':self.cores_sum, \n", + " 'events':{\n", + " 'a':'CPU_CLK_UNHALTED.REF_TSC'\n", + " },\n", + " 'formula':{\n", + " 'cpu%':'a/({:f}*{:d})'.format(self.tsc,self.corecnt)\n", + " },\n", + " 'fmt':lambda l: F.round(l, 3)\n", + " },\n", + " 'emon_cpufreq':{\n", + " 'sum_func':self.cores_sum, \n", + " 'events':{\n", + " 'a':'CPU_CLK_UNHALTED.THREAD',\n", + " 'b':'CPU_CLK_UNHALTED.REF_TSC'\n", + " },\n", + " 'formula':{\n", + " 'cpu freq':'a/b*{:f}'.format(self.tsc/1000000)\n", + " },\n", + " 'fmt':lambda l: F.round(l, 3)\n", + " },\n", + " 'emon_instr_retired':{\n", + " 'sum_func':self.cores_sum, \n", + " 'events':{\n", + " 'a':'INST_RETIRED.ANY'\n", + " },\n", + " 'formula':{\n", + " 'pathlength':'a/1000000000'\n", + " },\n", + " 'fmt':lambda l: F.round(l, 0)\n", + " },\n", + " 'emon_ipc':{\n", + " 'sum_func':self.cores_sum, \n", + " 'events':{\n", + " 'a':'CPU_CLK_UNHALTED.THREAD',\n", + " 'b':'INST_RETIRED.ANY'\n", + " },\n", + " 'formula':{\n", + " 'ipc':'b/a'\n", + " },\n", + " 'fmt':lambda l: F.round(l, 3)\n", + " }\n", + " })\n", + " self.effective_metric=None\n", + " self.appclients=[] # there is no appid and client column\n", + "\n", + " def count_sum(self,collected_cores):\n", + " return F.expr('+'.join(['_{:d}/_2*{:d}'.format(c+3,self.tsc) for c in collected_cores]))\n", + "\n", + " def cores_sum(self,collected_cores):\n", + " return self.count_sum(collected_cores)\n", + "\n", + " def mem_sum(self,collected_cores):\n", + " return self.count_sum(collected_cores)\n", + "\n", + " def pcie_sum(self,collected_cores):\n", + " return self.count_sum([2,3,7,8])\n", + " \n", + " def list_metric(self):\n", + " if self.effective_metric is None:\n", + " self.get_effective_metric()\n", + " for k in self.effective_metric:\n", + " m=self.emon_metrics[k]\n", + " print(k)\n", + " for fk,fm in m['formula'].items():\n", + " print(\" \",fk)\n", + " \n", + " def load_data(self):\n", + " paths=os.path.split(self.file)\n", + " if fs.exists(paths[0]+\"/emon.parquet/_SUCCESS\"):\n", + " self.df=spark.read.parquet(paths[0]+\"/emon.parquet\")\n", + " self.df.cache()\n", + " return\n", + " \n", + " emondata=sc.textFile(self.file)\n", + " emondf=emondata.mapPartitions(splits_fill0).toDF()\n", + " emondf=emondf.withColumn(\"id\", F.monotonically_increasing_id())\n", + " giddf=emondf.where(emondf._1.rlike(\"======\")).selectExpr(\"id as g_id\")\n", + " \n", + " iddf=emondf.where(emondf._1.rlike(\"\\d\\d/\")).selectExpr(\"_1 as r_1\",\"_2 as r_2\",\"id as r_id\")\n", + " jfid=emondf.where(emondf._2.rlike(\"^[1-9][0-9][0-9]+\")).join(iddf,on=[emondf.id>iddf.r_id]).groupBy('id').agg(F.max('r_id').alias('r_id'))\n", + " iddf=iddf.join(jfid,on='r_id',how='left')\n", + " emondf=emondf.where(emondf._2.rlike(\"^[1-9][0-9][0-9]+\")).join(iddf,on='id',how='left')\n", + " \n", + " jfid=emondf.join(giddf,on=[emondf.id>giddf.g_id]).groupBy('id').agg(F.max('g_id').alias('g_id'))\n", + " giddf=giddf.join(jfid,on='g_id',how='left')\n", + " emondf=emondf.join(giddf,on='id',how='inner')\n", + " \n", + " df=emondf\n", + "\n", + " select_list = []\n", + " for idx, c in enumerate(df.columns):\n", + " if idx >= 2 and c.startswith('_'):\n", + " select_list.append(col(c).cast(LongType()).alias(c))\n", + " else:\n", + " select_list.append(col(c))\n", + " df=df.select(select_list)\n", + "\n", + " df=df.withColumn(\"timestamp\",F.unix_timestamp(F.concat_ws(' ','r_1','r_2'),'MM/dd/yyyy HH:mm:ss')*F.lit(1000)+(F.split(F.col('r_2'),'\\.')[1]).astype(IntegerType()))\n", + " df=df.drop(\"r_1\")\n", + " df=df.drop(\"r_2\")\n", + " \n", + " cores=list(range(0,self.totalcores))\n", + " df=df.withColumn('sum',\n", + " F.when(F.col(\"_1\").startswith(\"UNC_IIO\"),self.pcie_sum(cores))\n", + " .otherwise(self.cores_sum(cores)))\n", + " if self.begin_clk>0 and self.end_clk>0:\n", + " df=df.withColumn('valid',((F.col(\"timestamp\")>F.lit(self.begin_clk)) & (F.col(\"timestamp\")0:\n", + " effective_metric.append(k)\n", + " progress.value=progress.value+1\n", + " self.effective_metric=effective_metric\n", + " emondf.unpersist()\n", + " \n", + " def gen_metric(self,emondf, m):\n", + " join_df=None\n", + " for alias,event in m['events'].items():\n", + " if join_df is None:\n", + " join_df=emondf.where(\"_1='{:s}'\".format(event)).select('timestamp','_1','_2','r_id','g_id',*self.appclients,F.col('sum').alias(alias))\n", + " else:\n", + " tdf=emondf.where(\"_1='{:s}'\".format(event)).select('_1','_2','r_id','g_id',*self.appclients,F.col('sum').alias(alias))\n", + " join_dft=join_df.join(tdf.drop('g_id'),on=['r_id',*self.appclients],how='inner')\n", + " if join_dft.count()==0:\n", + " join_df=join_df.join(tdf.drop('r_id'),on=['g_id',*self.appclients],how='inner')\n", + " else:\n", + " join_df=join_dft\n", + " return join_df\n", + "\n", + " \n", + " \n", + " def generate_trace_view_list(self,id=0, **kwargs):\n", + " trace_events=Analysis.generate_trace_view_list(self,id, **kwargs)\n", + " \n", + " cores=list(range(0,self.totalcores))\n", + " \n", + " emondf=self.df\n", + " if 'collected_cores' in kwargs:\n", + " cores=kwargs.get(\"collected_cores\",None)\n", + " emondf=emondf.withColumn('sum',\n", + " F.when(F.col(\"_1\").startswith(\"UNC_IIO\"),self.pcie_sum(cores))\n", + " .otherwise(self.cores_sum(cores)))\n", + " show_metric= kwargs.get('show_metric', None)\n", + " \n", + " if show_metric is None and self.effective_metric is None:\n", + " self.get_effective_metric()\n", + "\n", + " self.effective_metric=show_metric if show_metric is not None else self.effective_metric\n", + " \n", + " emondf=self.df\n", + " \n", + " tid=0\n", + " for k in self.effective_metric:\n", + " m=self.emon_metrics[k]\n", + " join_df=self.gen_metric(emondf,m)\n", + " rstdf=join_df.select(\n", + " F.lit(tid).alias('tid'),\n", + " F.lit(id).alias('pid'),\n", + " F.lit('C').alias('ph'),\n", + " F.lit(k).alias('name'),\n", + " (F.col('timestamp')-F.lit(self.starttime)).alias(\"ts\"),\n", + " F.struct(*[m['fmt'](F.expr(formula)).alias(col_name) for col_name,formula in m['formula'].items() ]).alias('args')\n", + " ).where(F.col(\"ts\").isNotNull()).orderBy('ts')\n", + " trace_events.extend(rstdf.toJSON().collect())\n", + " trace_events.append(json.dumps({\"name\": \"thread_sort_index\",\"ph\": \"M\",\"pid\":id,\"tid\":tid,\"args\":{\"sort_index \":tid}}))\n", + " tid=tid+1 \n", + "\n", + " return trace_events\n", + " \n", + " def show_emon_metric(self,metric,sub_metric,core,draw=True,metric_define=None, **kwargs):\n", + " if self.df==None:\n", + " self.load_data()\n", + " emondf=self.df\n", + " \n", + " showalltime=kwargs.get(\"showalltime\",True)\n", + " \n", + " if not showalltime:\n", + " emondf=emondf.filter(F.col(\"valid\")==F.lit(True))\n", + " \n", + " if metric is None or metric=='':\n", + " for k in self.effective_metric:\n", + " m=self.emon_metrics[k]\n", + " if sub_metric in m['formula']:\n", + " break\n", + " else:\n", + " print(\"can't find metric\",sub_metric)\n", + " return \n", + " else:\n", + " k=metric\n", + " if metric_define is None:\n", + " m= self.emon_metrics[k]\n", + " else:\n", + " m= metric_define[k]\n", + "\n", + " if type(core)==int:\n", + " core=[core,]\n", + " emondf=emondf.withColumn('sum',\n", + " F.when(F.col(\"_1\").startswith(\"UNC_IIO\"),self.pcie_sum(core))\n", + " .otherwise(self.count_sum(core)))\n", + " \n", + " join_df=self.gen_metric(emondf,m)\n", + " \n", + " rstdf=join_df.select(\n", + " F.col('timestamp').alias('ts'),\n", + " m['fmt'](F.expr(m['formula'][sub_metric])).alias(sub_metric),\n", + " 'r_id'\n", + " ).where(F.col(\"timestamp\").isNotNull()).orderBy('timestamp')\n", + " \n", + " metric_sum=rstdf.select(sub_metric).summary().toPandas()\n", + " display(metric_sum)\n", + " \n", + " if draw:\n", + " pddf=rstdf.toPandas()\n", + " pddf['ts']=(pddf['ts']-pddf.loc[0,'ts'])/1000\n", + " fig, axs = plt.subplots(nrows=1, ncols=2, sharey=True,figsize=(30,8),gridspec_kw = {'width_ratios':[1, 5]})\n", + " plt.subplots_adjust(wspace=0.01)\n", + " sns.violinplot(y=sub_metric, data=pddf, ax=axs[0],palette=['g'])\n", + " axs[0].yaxis.grid(True, which='major')\n", + " ax=axs[1]\n", + " ax.stackplot(pddf['ts'], pddf[sub_metric],colors=['bisque'])\n", + " #ymin, ymax = ax.get_ylim()\n", + " ax2 = ax.twinx()\n", + " ax2.set_ylim(ax.get_ylim())\n", + " ax2.axhline(y=float(metric_sum.loc[4,sub_metric]), linewidth=2, color='r')\n", + " ax2.axhline(y=float(metric_sum.loc[5,sub_metric]), linewidth=2, color='r')\n", + " ax2.axhline(y=float(metric_sum.loc[6,sub_metric]), linewidth=2, color='r')\n", + " ax2.axhline(y=float(metric_sum.loc[7,sub_metric]), linewidth=2, color='r')\n", + " ax.set_xlabel('time (s)')\n", + " ax.yaxis.grid(True, which='major')\n", + " plt.show()\n", + " \n", + " hist_elapsedtime=rstdf.select('`{:s}`'.format(sub_metric)).rdd.flatMap(lambda x: x).histogram(15)\n", + " fig, axs = plt.subplots(figsize=(30, 5))\n", + " ax=axs\n", + " binSides, binCounts = hist_elapsedtime\n", + " binSides=[builtins.round(l,2) for l in binSides]\n", + "\n", + " N = len(binCounts)\n", + " ind = numpy.arange(N)\n", + " width = 0.5\n", + "\n", + " rects1 = ax.bar(ind+0.5, binCounts, width, color='b')\n", + "\n", + " ax.set_ylabel('Frequencies')\n", + " ax.set_title(sub_metric)\n", + " ax.set_xticks(numpy.arange(N+1))\n", + " ax.set_xticklabels(binSides)\n", + " return rstdf\n", + " \n", + "\n", + " def gen_reduce_metric(self,metric,core,sub_metric,agg_func):\n", + " if self.df==None:\n", + " self.load_data()\n", + " emondf=self.df\n", + " \n", + " emondf=emondf.where(F.col(\"valid\")==F.lit(True))\n", + " \n", + " k=metric\n", + " m= self.emon_metrics[k]\n", + "\n", + " if type(core)==int:\n", + " core=[core,]\n", + " \n", + " if len(core)http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json\"))\n", + " \n", + " def getemonmetric(app,**kwargs):\n", + " emondfs=get_emon_parquets([app.appid],app.basedir)\n", + " emons=Emon_Analysis_All(emondfs)\n", + " metric_msg_map={\n", + " 'emon_instr_retired':F.sum\n", + " }\n", + " \n", + " emonmetric=kwargs.get(\"show_metric\",None)\n", + "\n", + " outdf=None\n", + " for k in emonmetric:\n", + " m=emons.emon_metrics[k]\n", + " for fk,fm in m['formula'].items():\n", + " if k not in metric_msg_map:\n", + " metric_msg_map[k]=F.avg\n", + " df=emons.gen_reduce_metric(k,list(range(0,emons.totalcores)),fk,metric_msg_map[k])\n", + " tmpdf=df.groupBy(\"appid\",'client').agg(*[l(\"`{:s}`\".format(fk)).alias(get_alias_name(fk,l)) for l in [metric_msg_map[k]]]).toPandas()\n", + " tmpdf=tmpdf.set_index(\"client\").drop(columns=['appid']).T\n", + " if outdf is None:\n", + " outdf=tmpdf\n", + " else:\n", + " outdf=outdf.append(tmpdf)\n", + " pandas.options.display.float_format = '{:,.2f}'.format\n", + " return outdf\n", " \n", - " def get_sar_stat(self,**kwargs):\n", + " def get_sar_stat(app,**kwargs):\n", " disk_prefix=kwargs.get(\"disk_prefix\",\"dev259\")\n", " nic_prefix = kwargs.get(\"nic_prefix\",[\"'eth3'\",\"'enp24s0f1'\"])\n", - " cpustat=[self.analysis[\"sar\"][l]['sar_cpu']['als'].get_stat() for l in self.clients]\n", + " cpustat=[app.analysis[\"sar\"][l]['sar_cpu']['als'].get_stat() for l in app.clients]\n", " cpustat=reduce(lambda l,r:l.join(r),cpustat)\n", - " diskstat=[self.analysis[\"sar\"][l]['sar_disk']['als'].get_stat(disk_prefix=disk_prefix) for l in self.clients]\n", + " diskstat=[app.analysis[\"sar\"][l]['sar_disk']['als'].get_stat(disk_prefix=disk_prefix) for l in app.clients]\n", " diskstat=reduce(lambda l,r:l.join(r),diskstat)\n", - " memstat=[self.analysis[\"sar\"][l]['sar_mem']['als'].get_stat() for l in self.clients]\n", + " memstat=[app.analysis[\"sar\"][l]['sar_mem']['als'].get_stat() for l in app.clients]\n", " memstat=reduce(lambda l,r:l.join(r),memstat)\n", - " nicstat=[self.analysis[\"sar\"][l]['sar_nic']['als'].get_stat(nic_prefix=nic_prefix) for l in self.clients]\n", + " nicstat=[app.analysis[\"sar\"][l]['sar_nic']['als'].get_stat(nic_prefix=nic_prefix) for l in app.clients]\n", " nicstat=reduce(lambda l,r:l.join(r),nicstat)\n", - " pagestat=[self.analysis[\"sar\"][l]['sar_page']['als'].get_stat() for l in self.clients]\n", + " pagestat=[app.analysis[\"sar\"][l]['sar_page']['als'].get_stat() for l in app.clients]\n", " pagestat=reduce(lambda l,r:l.join(r),pagestat)\n", " pandas.options.display.float_format = '{:,.2f}'.format\n", " return pandas.concat([cpustat,diskstat,memstat,nicstat,pagestat])\n", - " \n", + " \n", " def get_perf_stat(self, **kwargs):\n", " perfstat=[self.analysis[\"sar\"][l]['perfstat']['als'].get_stat() for l in self.clients]\n", " return reduce(lambda l,r: l.join(r), perfstat)\n", @@ -4640,13 +5278,25 @@ " outcut=out[cmpcolumns]\n", " \n", " pdsout=pandas.DataFrame(outcut.sum(),columns=[lrun])\n", - " pdstime=pdsout\n", + " pdstime=pdsout \n", + "\n", + " if app.show_emon:\n", + " emondf=app.getemonmetric(**kwargs)\n", + " def get_agg(emondf):\n", + " aggs=[]\n", + " for x in emondf.index:\n", + " if x.endswith(\"avg\"):\n", + " aggs.append(emondf.loc[x].mean())\n", + " else:\n", + " aggs.append(emondf.loc[x].sum())\n", "\n", - " node=\"\"\n", - " for l in fs.list_status(app.filedir):\n", - " if l['type']==\"DIRECTORY\" and l['pathSuffix']!=\"summary.parquet\":\n", - " node=l['pathSuffix']\n", - " break\n", + " emondf['agg']=aggs\n", + " return emondf\n", + " emondf=get_agg(emondf)\n", + "\n", + " emonsum=emondf[[\"agg\"]]\n", + "\n", + " emonsum.columns=[lrun]\n", "\n", " print(\"sar metric\")\n", " sardf=app.get_sar_stat(**kwargs)\n", @@ -4669,13 +5319,15 @@ "\n", " sarsum.columns=[lrun]\n", " \n", - " # perf stat\n", - " print(\"perf stat metric\")\n", - " perf_stat = app.get_perf_stat(**kwargs)\n", - " perf_stat = get_sar_agg(perf_stat)[['agg']]\n", - " perf_stat.columns=[lrun]\n", - " \n", - " summary=pandas.concat([pdstime,sarsum,perf_stat])\n", + " summary=pandas.concat([pdstime,sarsum])\n", + " if app.show_emon:\n", + " summary=pandas.concat([summary,emonsum])\n", + " elif app.show_perfstat:\n", + " print(\"perf stat metric\")\n", + " perf_stat = app.get_perf_stat(**kwargs)\n", + " perf_stat = get_sar_agg(perf_stat)[['agg']]\n", + " perf_stat.columns=[lrun]\n", + " summary=pandas.concat([summary,perf_stat])\n", " \n", " df_sum=spark.createDataFrame(summary.T.reset_index())\n", " for c in df_sum.columns:\n", @@ -4713,6 +5365,33 @@ " pdsout2=pandas.DataFrame(out2cut.sum(),columns=[rrun])\n", " pdstime=pdsout.join(pdsout2)\n", "\n", + " showemon=app.show_emon and app2.show_emon\n", + " if showemon:\n", + " print(\"emon metric\")\n", + "\n", + " emondf=app.getemonmetric(**kwargs)\n", + " emondf2=app2.getemonmetric(**kwargs)\n", + " #in case we comare with two clsuter\n", + " emondf.columns=emondf2.columns\n", + " def get_agg(emondf):\n", + " aggs=[]\n", + " for x in emondf.index:\n", + " if x.endswith(\"avg\"):\n", + " aggs.append(emondf.loc[x].mean())\n", + " else:\n", + " aggs.append(emondf.loc[x].sum())\n", + "\n", + " emondf['agg']=aggs\n", + " return emondf\n", + " emondf=get_agg(emondf)\n", + " emondf2=get_agg(emondf2)\n", + "\n", + " emoncolumns=emondf.columns\n", + " emoncmp=emondf.join(emondf2,lsuffix='_'+lrun,rsuffix='_'+rrun)\n", + " emonsum=emoncmp[[\"agg_\"+lrun,\"agg_\"+rrun]]\n", + "\n", + " emonsum.columns=[lrun,rrun]\n", + "\n", " print(\"sar metric\")\n", " sardf=app.get_sar_stat(**kwargs)\n", " sardf2=app2.get_sar_stat(**kwargs)\n", @@ -4741,6 +5420,8 @@ " sarsum.columns=[lrun,rrun]\n", " \n", " summary=pandas.concat([pdstime,sarsum])\n", + " if showemon:\n", + " summary=pandas.concat([summary,emonsum])\n", " \n", " summary[\"diff\"]=numpy.where(summary[rrun] > 0, summary[lrun]/summary[rrun]-1, 0)\n", " \n", @@ -4804,6 +5485,13 @@ " df3[l][j]=[sarcmp[l+\"_\"+lrun][j],sarcmp[l+\"_\"+rrun][j],sarcmp[l+\"_\"+lrun][j]/sarcmp[l+\"_\"+rrun][j]-1]\n", " display_compare(df3,sarcolumns)\n", "\n", + " if showemon:\n", + " df2 = pandas.DataFrame('', index=emoncmp.index, columns=emoncolumns)\n", + " for l in emoncolumns:\n", + " for j in df2.index:\n", + " df2[l][j]=[emoncmp[l+\"_\"+lrun][j],emoncmp[l+\"_\"+rrun][j],emoncmp[l+\"_\"+lrun][j]/emoncmp[l+\"_\"+rrun][j]-1]\n", + " display_compare(df2,emoncolumns)\n", + "\n", " print(\"time breakdown\")\n", " ################################ time breakdown ##################################################################################################\n", " timel=appals.show_time_metric(plot=False)\n", diff --git a/tools/workload/benchmark_velox/emon.list b/tools/workload/benchmark_velox/emon.list new file mode 100644 index 000000000000..552bfefca0f1 --- /dev/null +++ b/tools/workload/benchmark_velox/emon.list @@ -0,0 +1,10 @@ +-q -c -experimental -t0.5 -l100000 -u +-C ( + +INST_RETIRED.ANY +CPU_CLK_UNHALTED.REF_TSC +CPU_CLK_UNHALTED.THREAD +MSR_EVENT:msr=0x611:type=FREERUN:scope=PACKAGE + +) + diff --git a/tools/workload/benchmark_velox/initialize.ipynb b/tools/workload/benchmark_velox/initialize.ipynb index ab17c5f00840..968f2dbe5534 100644 --- a/tools/workload/benchmark_velox/initialize.ipynb +++ b/tools/workload/benchmark_velox/initialize.ipynb @@ -1713,6 +1713,10 @@ "end=$(($(nproc) - 1))\n", "for i in $(seq 0 $end); do echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor; done\n", "for file in $(find /sys/devices/system/cpu/cpu*/power/energy_perf_bias); do echo \"0\" > $file; done\n", + "\n", + "if [ -d /home/{user}/sep_installed ]; then\n", + " /home/{user}/sep_installed/sepdk/src/insmod-sep -g {user}\n", + "fi\n", "'''\n", "\n", "with open('/tmp/tmpstartup', 'w') as f:\n", @@ -1742,6 +1746,124 @@ " !ssh $l \"sudo systemctl status mystartup.service\"" ] }, + { + "cell_type": "markdown", + "metadata": { + "hidden": true + }, + "source": [ + "## Install Emon" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "hidden": true + }, + "source": [ + " Get the latest offline installer from [link](https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler-download.html?operatingsystem=linux&linux-install-type=offline) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "offline_installer = 'https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e7797b12-ce87-4df0-aa09-df4a272fc5d9/intel-vtune-2025.0.0.1130_offline.sh'\n", + "for l in hclients:\n", + " !ssh {l} \"wget {offline_installer} -q && chmod +x intel-vtune-2025.0.0.1130_offline.sh\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh {l} \"sudo ./intel-vtune-2025.0.0.1130_offline.sh -a -c -s --eula accept\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh {l} \"sudo chown -R {user}:{user} /opt/intel/oneapi/vtune/ && rm -f sep_installed && ln -s /opt/intel/oneapi/vtune/latest sep_installed\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh {l} \"cd sep_installed/sepdk/src/; echo -e \\\"\\\\n\\\\n\\\\n\\\" | ./build-driver\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh root@{l} \"/home/{user}/sep_installed/sepdk/src/rmmod-sep && /home/{user}/sep_installed/sepdk/src/insmod-sep -g {user}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh {l} \"source /home/{user}/sep_installed/sep_vars.sh > /dev/null 2>&1; emon -v | head -n 1\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "for l in hclients:\n", + " !ssh {l} 'echo \"source /home/{user}/sep_installed/sep_vars.sh > /dev/null 2>&1\" >> ~/.bashrc'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidden": true + }, + "outputs": [], + "source": [ + "for c in hclients:\n", + " !ssh {c} 'tail -n1 ~/.bashrc'" + ] + }, { "cell_type": "markdown", "metadata": { diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index 1cdab3a47e02..2e63640c40b7 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -320,6 +320,8 @@ " out=!ssh $l \"ps aux | grep -w perf | grep -v grep | tr -s ' ' | cut -d' ' -f2\"\n", " for x in out:\n", " !ssh root@$l \"kill $x > /dev/null 2>&1\"\n", + " for l in clients:\n", + " !ssh $l \"emon -stop > /dev/null 2>&1\"\n", "\n", "def killnumactl(clients):\n", " for l in clients:\n", @@ -327,7 +329,7 @@ " for x in out:\n", " !ssh $l \"kill $x > /dev/null 2>&1\"\n", "\n", - "def startmonitor(clients,appid,**kwargs):\n", + "def startmonitor(clients, appid, collect_emon, **kwargs):\n", " local_profile_dir=os.path.join(home, 'profile')\n", " prof=os.path.join(local_profile_dir, appid)\n", " !mkdir -p {prof}\n", @@ -337,6 +339,11 @@ " \n", " killsar(clients)\n", " \n", + " if collect_emon:\n", + " !cp -f {emon_list} {home}/emon.list\n", + " for l in clients:\n", + " !scp {home}/emon.list {l}:{home}/emon.list > /dev/null 2>&1\n", + " \n", " perfsyscalls=kwargs.get(\"collect_perf_syscall\",None)\n", " \n", " for l in clients:\n", @@ -345,9 +352,12 @@ " !ssh {l} mkdir -p {prof_client}\n", " !ssh {l} \"sar -o {prof_client}/sar.bin -r -u -d -B -n DEV 1 >/dev/null 2>&1 &\"\n", " !ssh root@{l} \"jps | grep CoarseGrainedExecutorBackend | cut -d' ' -f 1 | xargs -I % bash -c '(cat /proc/%/status >> {prof_client}/%.stat; cat /proc/%/io >> {prof_client}/%.stat)'\"\n", - " !ssh root@{l} \"perf stat -e 'instructions,cycles,cpu_clk_unhalted.thread,cpu_clk_unhalted.ref_tsc' -a -I 500 -o {prof_client}/perfstat.txt >/dev/null 2>&1 & \"\n", - " !ssh {l} \"cat /sys/devices/system/cpu/cpu0/tsc_freq_khz | xargs -I% echo %000 > {prof_client}/tsc_freq 2>/dev/null &\"\n", - " !ssh {l} \"lscpu | grep '^CPU(s):' | cut -d ':' -f 2 | tr -d ' ' > {prof_client}/totalcores 2>/dev/null &\"\n", + " if collect_emon:\n", + " !ssh {l} \"emon -i {home}/emon.list -f {prof_client}/emon.rst >/dev/null 2>&1 & \"\n", + " else:\n", + " !ssh root@{l} \"perf stat -e 'instructions,cycles,cpu_clk_unhalted.thread,cpu_clk_unhalted.ref_tsc' -a -I 500 -o {prof_client}/perfstat.txt >/dev/null 2>&1 & \"\n", + " !ssh {l} \"cat /sys/devices/system/cpu/cpu0/tsc_freq_khz | xargs -I% echo %000 > {prof_client}/tsc_freq 2>/dev/null &\"\n", + " !ssh {l} \"lscpu | grep '^CPU(s):' | cut -d ':' -f 2 | tr -d ' ' > {prof_client}/totalcores 2>/dev/null &\"\n", " if kwargs.get(\"collect_pid\",False):\n", " !ssh {l} \"jps | grep CoarseGrainedExecutorBackend | head -n 1 | cut -d' ' -f 1 | xargs -I % pidstat -h -t -p % 1 > {prof_client}/pidstat.out 2>/dev/null &\"\n", " !ssh root@{l} 'cat /proc/uptime | cut -d\" \" -f 1 | xargs -I ^ date -d \"- ^ seconds\" +%s.%N' > $prof/$l/uptime.txt\n", @@ -369,7 +379,7 @@ " print(\"Missing argument: hbm_nodes. e.g. hbm_nodes = list(range(8,16))\")\n", " return prof\n", "\n", - "def stopmonitor(clients, sc, appid, **kwargs):\n", + "def stopmonitor(clients, sc, appid, collect_emon, **kwargs):\n", " %cd ~\n", " \n", " local_profile_dir=os.path.join(home, 'profile')\n", @@ -386,6 +396,8 @@ " prof_client=os.path.join(prof, l)\n", " !ssh {l} \"sar -f {prof_client}/sar.bin -r > {prof_client}/sar_mem.sar;sar -f {prof_client}/sar.bin -u > {prof_client}/sar_cpu.sar;sar -f {prof_client}/sar.bin -d -p > {prof_client}/sar_disk.sar;sar -f {prof_client}/sar.bin -n DEV > {prof_client}/sar_nic.sar;sar -f {prof_client}/sar.bin -B > {prof_client}/sar_page.sar;\" \n", " !ssh root@{l} \"jps | grep CoarseGrainedExecutorBackend | cut -d' ' -f 1 | xargs -I % bash -c '(cat /proc/%/status >> {prof_client}/%.stat; cat /proc/%/io >> {prof_client}/%.stat)'\"\n", + " if collect_emon:\n", + " !ssh {l} \"source ~/sep_install/sep_vars.sh>/dev/null 2>&1; emon -v \" > {prof}/{l}/emonv.txt\n", " !ssh {l} \"sar -V \" > {prof_client}/sarv.txt\n", " !ssh {l} \"test -f {prof_client}/perfstat.txt && head -n 1 {prof_client}/perfstat.txt > {prof_client}/perfstarttime\"\n", " if l!= socket.gethostname():\n", @@ -796,6 +808,7 @@ " self.table_loaded = False\n", " self.result = {}\n", " self.stopped = False\n", + " self.collect_emon = False\n", " self.perf_html = ''\n", " self.finished_nb = ''\n", " for l in os.listdir(self.tpc_query_path):\n", @@ -805,13 +818,15 @@ " self.query_ids = sorted(self.query_infos.keys(), key=lambda x: str(len(x))+x if x[-1] != 'a' and x[-1] != 'b' else str(len(x)-1) + x)\n", " print(\"http://{}:18080/history/{}/jobs/\".format(local_ip, self.sc.applicationId))\n", " \n", - " def start_monitor(self, clients, **kw):\n", - " startmonitor(clients, self.appid, **kw)\n", + " def start_monitor(self, clients, emon_list='', **kw):\n", + " if emon_list:\n", + " self.collect_emon = True\n", + " startmonitor(clients, self.appid, self.collect_emon, **kw)\n", " \n", " def stop_monitor(self, clients, **kw):\n", " if self.stopped:\n", " return\n", - " stopmonitor(clients, self.sc, self.appid, **kw)\n", + " stopmonitor(clients, self.sc, self.appid, self.collect_emon, **kw)\n", " if self.server:\n", " output_nb = f'{self.nb_name[:-6]}-{self.appid}.ipynb'\n", " if output_nb.startswith(cwd):\n", @@ -819,7 +834,7 @@ " self.finished_nb = f\"http://{localhost}:8888/tree/{output_nb}\"\n", " self.stopped = True\n", "\n", - " def run_perf_analysis(self, disk_dev, nic_dev, proxy):\n", + " def run_perf_analysis(self, disk_dev, nic_dev, proxy, comp_appid, comp_base_dir, comp_name):\n", " if not self.server:\n", " return\n", "\n", @@ -833,6 +848,8 @@ " nic=','.join(nic_dev)\n", "\n", " command =' '.join(['bash', run_script, '--ts', ts, '--base-dir', self.base_dir, '--name', name, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\"])\n", + " if comp_appid:\n", + " command += f' --comp-appid {comp_appid} --comp-base-dir {comp_base_dir} --comp-name {comp_name}'\n", " print(command)\n", "\n", " # Block if running on local cluster.\n", @@ -841,7 +858,7 @@ " else:\n", " !ssh {self.server} \"{command} > /dev/null 2>&1 &\"\n", "\n", - " self.perf_html=f'http://{self.server}:8888/view/{self.base_dir}/html/{ts}_{name}_{self.appid}.html'\n", + " self.perf_html=f'http://{self.server}:8889/view/{self.base_dir}/html/{ts}_{name}_{self.appid}.html'\n", " display(HTML(f'{self.perf_html}'))\n", " \n", " def load_table(self, table):\n", diff --git a/tools/workload/benchmark_velox/params.yaml.template b/tools/workload/benchmark_velox/params.yaml.template index 1c70e428bc99..bdb604cfef97 100644 --- a/tools/workload/benchmark_velox/params.yaml.template +++ b/tools/workload/benchmark_velox/params.yaml.template @@ -29,9 +29,18 @@ base_dir: emr # Proxy used to connect to server for perf analysis. proxy: '' +# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable. +# Supported emon events on platform can be verified via `emon -i emon.list` +emon_list: /home/sparkuser/ipython/emon.list + # Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set. analyze_perf: True +# Specify app info to compare for perf analysis +comp_appid: '' +comp_base_dir: '' +comp_name: '' + # Select workload. Can be either 'tpch' or 'tpcds'. workload: tpch diff --git a/tools/workload/benchmark_velox/sample/tpch_q1.html b/tools/workload/benchmark_velox/sample/tpch_q1.html index 57c0f088edbd..c401c35ec87c 100644 --- a/tools/workload/benchmark_velox/sample/tpch_q1.html +++ b/tools/workload/benchmark_velox/sample/tpch_q1.html @@ -3,7 +3,7 @@ -2024_12_02_152940_tpch_gluten_application_1733153225851_0001.nbconvert @@ -13092,27 +13092,27 @@
-
+

Parameters

-
+
-
+
-
+

start analysis cluster and run

-
+
-
+
-
+
-
24/12/02 15:29:48 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.
-24/12/02 15:29:48 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
+
24/12/06 05:53:37 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.
+24/12/06 05:53:37 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
 
@@ -13145,7 +13145,7 @@

start analysis cluster and run +
@@ -13160,13 +13160,13 @@

start analysis cluster and run
+ -
+
@@ -13178,47 +13178,49 @@

Sparklog

-
+
-
+
-
+
-
+
+
+

Content

-
+ -
+
-

App info

+

Self app info

-
+
-
+
-
load data  /sr213/application_1733153225851_0001/app.log
+
load data  /sr213/application_1733153225851_0048/app.log
 
@@ -13234,12 +13236,7 @@

App info

-
[Stage 1:>                                                          (0 + 1) / 1]

                                                                                
-
-
-
-
-
[Stage 5:>                                                          (0 + 1) / 1]
+
[Stage 1:>                                                          (0 + 1) / 1]
@@ -13249,7 +13246,7 @@

App info

-
[Stage 8:>                                                          (0 + 1) / 1]
+
[Stage 4:>                                                          (0 + 1) / 1]
@@ -13259,7 +13256,7 @@

App info

-
[Stage 15:>                                                         (0 + 1) / 1]
+
[Stage 5:>                                                          (0 + 1) / 1]
@@ -13279,65 +13276,65 @@

App info

-
[Stage 39:>                                                      (0 + 16) / 200]
+
[Stage 39:>                                                      (0 + 16) / 200]

[Stage 39:=>                                                     (6 + 16) / 200]
-
[Stage 39:=>                                                     (6 + 17) / 200]

[Stage 39:===>                                                  (13 + 16) / 200]
+
[Stage 39:===>                                                  (14 + 16) / 200]
-
[Stage 39:======>                                               (24 + 16) / 200]

[Stage 39:=========>                                            (37 + 16) / 200]
+
[Stage 39:========>                                             (33 + 16) / 200]

[Stage 39:==================>                                   (67 + 16) / 200]
-
[Stage 39:================>                                     (60 + 16) / 200]

[Stage 39:=======================>                              (88 + 16) / 200]
+
[Stage 39:==========================>                           (97 + 16) / 200]

[Stage 39:==================================>                  (131 + 16) / 200]
-
[Stage 39:=================================>                   (126 + 16) / 200]

[Stage 39:=============================================>       (171 + 16) / 200]
+
[Stage 39:=================================================>   (185 + 15) / 200]

                                                                                
- +
+
[Stage 42:(177 + 5) / 200][Stage 43:>   (0 + 1) / 1][Stage 44:>(0 + 11) / 200]

                                                                                
+
-
[Stage 42:(173 + 7) / 200][Stage 43:>   (0 + 1) / 1][Stage 44:> (0 + 8) / 200]

                                                                                
+
[Stage 44:(113 + 12) / 200][Stage 45:>   (0 + 1) / 1][Stage 46:> (0 + 3) / 200]

[Stage 44:(182 + 5) / 200][Stage 46:>(4 + 11) / 200][Stage 47:> (0 + 0) / 200]
-
[Stage 44:(129 + 9) / 200][Stage 45:>   (0 + 1) / 1][Stage 46:> (0 + 6) / 200]

[Stage 44:(163 + 4) / 200][Stage 46:>(8 + 12) / 200][Stage 47:> (0 + 0) / 200]
+
[Stage 46:(43 + 16) / 200][Stage 47:> (0 + 0) / 200][Stage 48:> (0 + 0) / 200]

[Stage 46:(110 + 8) / 200][Stage 47:> (0 + 8) / 200][Stage 48:> (0 + 0) / 200]
-
[Stage 44:(185 + 4) / 200][Stage 46:>(46 + 9) / 200][Stage 47:> (0 + 3) / 200]

[Stage 46:>(91 + 8) / 200][Stage 47:> (7 + 8) / 200][Stage 48:> (0 + 0) / 200]
+
[Stage 46:(155 + 8) / 200][Stage 47:>(47 + 8) / 200][Stage 48:> (0 + 0) / 200]

[Stage 46:(194 + 4) / 200][Stage 47:>(73 + 4) / 200][Stage 48:> (8 + 8) / 200]
-
[Stage 46:(128 + 4) / 200][Stage 47:>(38 + 8) / 200][Stage 48:> (0 + 4) / 200]

[Stage 46:(160 + 4) / 200][Stage 47:>(99 + 4) / 200][Stage 48:>(25 + 6) / 200]
+
[Stage 47:(114 + 8) / 200][Stage 48:>(57 + 4) / 200][Stage 49:>  (0 + 4) / 16]

[Stage 47:(185 + 4) / 200][Stage 48:>(73 + 4) / 200][Stage 49:>  (0 + 8) / 16]
-
[Stage 46:(196 + 4) / 200][Stage 47:(105 + 0) / 200][Stage 48:>(86 + 4) / 200]

[Stage 47:(121 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (0 + 12) / 16]
+
[Stage 48:(126 + 8) / 200][Stage 49:>  (0 + 8) / 16][Stage 51:>   (0 + 0) / 1]

[Stage 48:(184 + 4) / 200][Stage 49:> (4 + 12) / 16][Stage 51:>   (0 + 0) / 1]
-
[Stage 47:(191 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (4 + 12) / 16]

                                                                                
+
                                                                                
@@ -13346,7 +13343,7 @@

App info

appid -application_1733153225851_0001 +application_1733153225851_0048 executor.instances @@ -13386,7 +13383,7 @@

App info

runtime -17.8 +17.65 disk spilled @@ -13410,7 +13407,7 @@

App info

task run time -6.73 +6.79 ser_time @@ -13422,7 +13419,7 @@

App info

gc_time -0.04 +0.03 input read @@ -13430,23 +13427,23 @@

App info

acc_task_time -14.14 +13.99 file read size -5,944.5 +5,951.35 file write size -21.74 +24.52 disk read size -4.95 +5.05 disk write size -12.38 +15.31 disk cancel size @@ -13458,7 +13455,7 @@

App info

-
{'appid': 'application_1733153225851_0001',
+
{'appid': 'application_1733153225851_0048',
  'executor.instances': 4,
  'executor.cores': 4,
  'shuffle.partitions': 32,
@@ -13468,259 +13465,424 @@ 

App info

'Speculative Tasks': 0, 'Speculative Killed Tasks': 0, 'Speculative Stage': 0, - 'runtime': 17.8, + 'runtime': 17.65, 'disk spilled': 0.0, 'memspilled': 0.0, 'local_read': 0.0, 'remote_read': 0.0, 'shuffle_write': 0.0, - 'task run time': 6.73, + 'task run time': 6.79, 'ser_time': 0.0, 'f_wait_time': 0.0, - 'gc_time': 0.04, + 'gc_time': 0.03, 'input read': 22.54, - 'acc_task_time': 14.14, - 'file read size': 5944.5, - 'file write size': 21.74, - 'disk read size': 4.95, - 'disk write size': 12.38, + 'acc_task_time': 13.99, + 'file read size': 5951.35, + 'file write size': 24.52, + 'disk read size': 5.05, + 'disk write size': 15.31, 'disk cancel size': 0.0}
-
+
-
[Stage 91:============> (174 + 4) / 200][Stage 92:=======>      (105 + 0) / 200]

                                                                                
+
[Stage 92:(161 + 4) / 200][Stage 93:>(68 + 9) / 200][Stage 94:> (8 + 4) / 200]

[Stage 93:(151 + 4) / 200][Stage 94:>(66 + 8) / 200][Stage 95:>  (1 + 4) / 16]
-
-
sar metric
-
+
+
                                                                                
-
perf stat metric
+
/sr213/application_1733153225851_0048/sr217/emon.parquet is not found, trying to load data ...
 
-
[Stage 258:>                                                        (0 + 1) / 1]

                                                                                
+
[Stage 129:>                (0 + 2) / 2][Stage 130:>                (0 + 2) / 2]

[Stage 129:>  (0 + 2) / 2][Stage 130:>  (0 + 2) / 2][Stage 131:>  (0 + 4) / 4]
+
+
+
+
+
[Stage 129:=> (1 + 1) / 2][Stage 130:=> (1 + 1) / 2][Stage 131:>  (1 + 3) / 4]

[Stage 129:========>        (1 + 1) / 2][Stage 131:====>            (1 + 3) / 4]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 143:==>                                                  (16 + 16) / 400]

[Stage 143:==>                                                  (17 + 16) / 400]
+
+
+
+
+
[Stage 143:===>                                                 (24 + 16) / 400]

[Stage 143:====>                                                (34 + 16) / 400]
+
+
+
+
+
[Stage 143:=====>                                               (43 + 16) / 400]

[Stage 143:=======>                                             (53 + 16) / 400]
+
+
+
+
+
[Stage 143:========>                                            (65 + 16) / 400]

[Stage 143:=========>                                           (72 + 16) / 400]
+
+
+
+
+
[Stage 143:==========>                                          (83 + 16) / 400]

[Stage 143:===========>                                         (90 + 16) / 400]
+
+
+
+
+
[Stage 143:=============>                                       (99 + 16) / 400]

[Stage 143:=============>                                      (106 + 16) / 400]
+
+
+
+
+
[Stage 143:==============>                                     (113 + 16) / 400]

[Stage 143:===============>                                    (118 + 16) / 400]
+
+
+
+
+
[Stage 143:================>                                   (126 + 16) / 400]

[Stage 143:=================>                                  (132 + 16) / 400]
+
+
+
+
+
[Stage 143:==================>                                 (140 + 16) / 400]

[Stage 143:==================>                                 (146 + 16) / 400]
+
+
+
+
+
[Stage 143:===================>                                (153 + 16) / 400]

[Stage 143:====================>                               (160 + 16) / 400]
+
+
+
+
+
[Stage 143:======================>                             (170 + 16) / 400]

[Stage 143:======================>                             (173 + 16) / 400]
+
+
+
+
+
[Stage 143:=======================>                            (182 + 16) / 400]

[Stage 143:========================>                           (186 + 16) / 400]
+
+
+
+
+
[Stage 143:=========================>                          (194 + 16) / 400]

[Stage 143:=========================>                          (197 + 16) / 400]
+
+
+
+
+
[Stage 143:==========================>                         (204 + 16) / 400]

[Stage 143:===========================>                        (211 + 16) / 400]
+
+
+
+
+
[Stage 143:===========================>                        (214 + 16) / 400]

[Stage 143:============================>                       (222 + 16) / 400]
+
+
+
+
+
[Stage 143:=============================>                      (230 + 16) / 400]

[Stage 143:==============================>                     (236 + 16) / 400]
+
+
+
+
+
[Stage 143:===============================>                    (243 + 16) / 400]

[Stage 143:================================>                   (249 + 16) / 400]
+
+
+
+
+
[Stage 143:=================================>                  (256 + 16) / 400]

[Stage 143:==================================>                 (263 + 16) / 400]
+
+
+
+
+
[Stage 143:===================================>                (272 + 16) / 400]

[Stage 143:====================================>               (279 + 16) / 400]
+
+
+
+
+
[Stage 143:======================================>             (294 + 16) / 400]

[Stage 143:======================================>             (299 + 16) / 400]
+
+
+
+
+
[Stage 143:========================================>           (311 + 16) / 400]

[Stage 143:=========================================>          (322 + 16) / 400]
+
+
+
+
+
[Stage 143:===========================================>        (333 + 17) / 400]

[Stage 143:=============================================>      (348 + 16) / 400]
+
+
+
+
+
[Stage 143:==============================================>     (360 + 16) / 400]

[Stage 143:================================================>   (372 + 16) / 400]
+
+
+
+
+
[Stage 143:==================================================> (386 + 14) / 400]
+
+
+
+
+
[Stage 148:>                                                        (0 + 1) / 1]
+
+
+
+
+
[Stage 154:>                                                        (0 + 3) / 3]
+
+
+
+
+
[Stage 154:===================>                                     (1 + 2) / 3]

[Stage 154:======================================>                  (2 + 1) / 3]
+
+
+
+
+
                                                                                
+
+
+
+
+
[Stage 157:>                                                        (0 + 3) / 3]

[Stage 157:===================>                                     (1 + 2) / 3]
+
+
+
+
+
[Stage 157:======================================>                  (2 + 1) / 3]

                                                                                
+
+
+
+
+
sar metric
+
- +
- + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
 application_1733153225851_0001application_1733153225851_0048
runtime17.800000runtime17.650000
disk spilled0.000000disk spilled0.000000
shuffle_write0.000000shuffle_write0.000000
f_wait_time0.000000f_wait_time0.000000
input read22.540000input read22.540000
acc_task_time14.140000acc_task_time13.990000
output rows1.180000output rows1.180000
%user>90%0.931034%user>90%0.931034
%kernel>10%0.965517%kernel>10%0.965517
%iowait>10%0.620690%iowait>10%0.620690
avg %user41.233793avg %user41.216207
avg %system4.608621avg %system4.514138
avg %iowait0.623793avg %iowait0.743793
avg disk util33.448276avg disk util32.206897
time more than 90%0.000000time more than 90%0.000000
total read (G)5.432129total read (G)5.388613
total write (G)0.994891total write (G)1.121773
avg read bw (MB/s)191.810354avg read bw (MB/s)190.273771
avg write bw (MB/s)35.129954avg write bw (MB/s)39.610183
read bw %75402.394531read bw %75411.578125
read bw %95479.738281read bw %95484.542969
read bw max480.722656read bw max510.351562
time_rd_morethan_950.034483time_rd_morethan_950.034483
write bw %751.074219write bw %751.074219
write bw %9535.035156write bw %95165.687500
write bw max945.855469write bw max812.511719
time_wr_morethan_950.034483time_wr_morethan_950.034483
cached mean97.137931cached mean93.896552
cached 75%152.000000cached 75%145.000000
cached max188.000000cached max188.000000
used mean573.379310used mean834.000000
used 75%593.000000used 75%852.000000
used max597.000000used max859.000000
rx MB/s 75%0.000000rx MB/s 75%0.000000
rx MB/s 95%0.000000rx MB/s 95%0.000000
rx MB/s 99%0.000000rx MB/s 99%0.000000
pgin mean191.965517pgin mean190.206897
pgin 75%402.000000pgin 75%412.000000
pgin max480.000000pgin max509.000000
pgout mean35.103448pgout mean40.965517
pgout 75%1.000000pgout 75%1.000000
pgout max947.000000pgout max840.000000
fault mean117681.655172fault mean117653.310345
fault 75%193074.000000fault 75%205151.000000
fault max287177.000000fault max256538.000000
ipc1.144464cpu%_avg0.448817
instructions962.586404cpu freq_avg3241.915617
cpu_freq3.225843pathlength_sum1933.000000
cpu%7.480452ipc_avg1.137983
@@ -13729,17 +13891,22 @@

App info

-
+
-
[Stage 288:>                                                      (0 + 12) / 12]
+
[Stage 330:>                                                        (0 + 1) / 1]
+
+
+
+
+
                                                                                
-
[Stage 288:==============>                                         (3 + 9) / 12]

[Stage 288:==========================================>             (9 + 3) / 12]
+
[Stage 341:>                                                        (0 + 1) / 1]
@@ -13754,156 +13921,266 @@

App info

+
+
+
                                                                                
+
+
+
+
+
[Stage 396:>                                                        (0 + 1) / 1]
+
+
+
+
+
                                                                                
+
+
+
+
+
{'sr217': 200}
+
+
+
+
+
[Stage 490:===================>                                     (1 + 2) / 3]

                                                                                
+
+
+
-
+
-
gluten tpch_power 663d4f
+
gluten tpch_power 6600a1
-
+
-
[Stage 471:> (2 + 3) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]

[Stage 471:> (5 + 0) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]
+
[Stage 605:==>                                                   (11 + 0) / 200]

[Stage 531:(174 + 16) / 200][Stage 532:>(0 + 0) / 200][Stage 533:>(0 + 0) / 200]
-
[Stage 471:>(5 + 11) / 16][Stage 472:> (0 + 5) / 16][Stage 475:> (0 + 0) / 16]

[Stage 472:> (5 + 0) / 16][Stage 475:> (0 + 0) / 16][Stage 476:> (0 + 0) / 16]
+
[Stage 532:(102 + 16) / 200][Stage 533:>(0 + 0) / 200][Stage 534:>(0 + 0) / 200]

[Stage 533:(72 + 16) / 200][Stage 534:>(0 + 0) / 200][Stage 535:>(0 + 0) / 200]
-
[Stage 472:>(15 + 1) / 16][Stage 475:> (2 + 3) / 16][Stage 476:> (0 + 0) / 16]

[Stage 475:> (5 + 0) / 16][Stage 476:> (0 + 0) / 16][Stage 479:> (0 + 0) / 16]
+
[Stage 534:(63 + 16) / 200][Stage 535:>(0 + 0) / 200][Stage 536:>(0 + 0) / 200]

[Stage 535:(75 + 16) / 200][Stage 536:>(0 + 0) / 200][Stage 537:>(0 + 0) / 200]
-
[Stage 475:>(15 + 1) / 16][Stage 476:> (3 + 2) / 16][Stage 479:> (0 + 0) / 16]

[Stage 476:> (5 + 0) / 16][Stage 479:> (0 + 0) / 16][Stage 481:> (0 + 0) / 16]
+
[Stage 536:(102 + 17) / 200][Stage 537:>(0 + 0) / 200][Stage 538:>(3 + 0) / 200]

[Stage 537:(114 + 16) / 200][Stage 538:>(3 + 0) / 200][Stage 539:>(0 + 0) / 200]
-
[Stage 476:>(6 + 10) / 16][Stage 479:> (0 + 5) / 16][Stage 481:> (0 + 0) / 16]

[Stage 479:> (5 + 0) / 16][Stage 481:> (0 + 0) / 16][Stage 482:> (0 + 0) / 16]
+
[Stage 538:(105 + 16) / 200][Stage 539:>(0 + 0) / 200][Stage 540:>(0 + 0) / 200]

[Stage 539:(67 + 16) / 200][Stage 540:>(0 + 0) / 200][Stage 541:>(0 + 0) / 200]
-
[Stage 479:>(5 + 11) / 16][Stage 481:> (0 + 5) / 16][Stage 482:> (0 + 0) / 16]

[Stage 481:> (5 + 0) / 16][Stage 482:> (0 + 0) / 16][Stage 484:> (0 + 0) / 16]
+
[Stage 540:(59 + 16) / 200][Stage 541:>(0 + 0) / 200][Stage 542:>(0 + 0) / 200]

[Stage 541:(104 + 16) / 200][Stage 542:>(0 + 0) / 200][Stage 543:>(0 + 0) / 200]
-
[Stage 481:>(13 + 3) / 16][Stage 482:> (1 + 4) / 16][Stage 484:> (0 + 0) / 16]

[Stage 482:> (5 + 0) / 16][Stage 484:> (0 + 0) / 16][Stage 487:> (0 + 0) / 16]
+
[Stage 542:(115 + 16) / 200][Stage 543:>(0 + 0) / 200][Stage 544:>(0 + 0) / 200]

[Stage 543:(148 + 16) / 200][Stage 544:>(0 + 0) / 200][Stage 545:>(0 + 0) / 200]
-
[Stage 482:>(5 + 11) / 16][Stage 484:> (0 + 5) / 16][Stage 487:> (0 + 0) / 16]

[Stage 484:> (5 + 0) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]
+
[Stage 545:(0 + 16) / 200][Stage 546:>(0 + 0) / 200][Stage 547:>(0 + 0) / 200]

[Stage 546:(38 + 16) / 200][Stage 547:>(0 + 0) / 200][Stage 548:>(0 + 0) / 200]
-
[Stage 484:>(5 + 11) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]

[Stage 487:> (5 + 0) / 16][Stage 488:> (0 + 0) / 16][Stage 490:> (0 + 0) / 16]
+
[Stage 547:(58 + 17) / 200][Stage 548:>(0 + 0) / 200][Stage 549:>(0 + 0) / 200]

[Stage 548:(94 + 16) / 200][Stage 549:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]
-
[Stage 487:>(13 + 3) / 16][Stage 488:> (0 + 5) / 16][Stage 490:> (0 + 0) / 16]

[Stage 488:> (5 + 0) / 16][Stage 490:> (0 + 0) / 16][Stage 492:> (0 + 0) / 16]
+
[Stage 549:(113 + 17) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]

[Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]
-
[Stage 488:>(5 + 11) / 16][Stage 490:> (0 + 5) / 16][Stage 492:> (0 + 0) / 16]

[Stage 490:> (5 + 0) / 16][Stage 492:> (0 + 0) / 16][Stage 495:> (0 + 0) / 16]
+
[Stage 551:(16 + 1) / 200][Stage 553:>(0 + 0) / 200][Stage 555:>(0 + 0) / 200]

[Stage 551:(179 + 16) / 200][Stage 553:>(0 + 0) / 200][Stage 555:>(0 + 0) / 200]
-
[Stage 490:>(14 + 2) / 16][Stage 492:> (1 + 4) / 16][Stage 495:> (0 + 0) / 16]

[Stage 492:> (5 + 0) / 16][Stage 495:> (0 + 0) / 16][Stage 497:> (0 + 0) / 16]
+
[Stage 553:(16 + 0) / 200][Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200]

[Stage 553:(54 + 17) / 200][Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200]
-
[Stage 492:>(13 + 3) / 16][Stage 495:> (1 + 4) / 16][Stage 497:> (0 + 0) / 16]

[Stage 495:> (5 + 0) / 16][Stage 497:> (0 + 0) / 16][Stage 498:> (0 + 0) / 16]
+
[Stage 555:>(8 + 8) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]

[Stage 555:(16 + 0) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]
-
[Stage 495:>(5 + 11) / 16][Stage 497:> (0 + 5) / 16][Stage 498:> (0 + 0) / 16]

[Stage 497:> (5 + 0) / 16][Stage 498:> (0 + 0) / 16][Stage 500:> (0 + 0) / 16]
+
[Stage 555:(199 + 1) / 200][Stage 557:(0 + 15) / 200][Stage 559:>(0 + 0) / 200]

[Stage 557:(16 + 0) / 200][Stage 559:>(0 + 0) / 200][Stage 560:>(0 + 0) / 200]
-
[Stage 498:> (1 + 5) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]

[Stage 498:> (6 + 0) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]
+
[Stage 557:(84 + 16) / 200][Stage 559:>(0 + 0) / 200][Stage 560:>(0 + 0) / 200]

[Stage 559:(16 + 0) / 200][Stage 560:>(0 + 0) / 200][Stage 564:>(0 + 0) / 200]
-
[Stage 498:>(6 + 10) / 16][Stage 500:> (0 + 3) / 16][Stage 502:> (0 + 0) / 16]

[Stage 500:> (6 + 0) / 16][Stage 502:> (0 + 0) / 16][Stage 504:> (0 + 0) / 16]
+
[Stage 559:(29 + 16) / 200][Stage 560:>(0 + 0) / 200][Stage 564:>(0 + 0) / 200]

[Stage 560:(85 + 16) / 200][Stage 564:>(0 + 0) / 200][Stage 566:>(0 + 0) / 200]
-
[Stage 500:>(13 + 3) / 16][Stage 502:> (0 + 6) / 16][Stage 504:> (0 + 0) / 16]

[Stage 502:> (6 + 0) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]
+
[Stage 564:>(0 + 0) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]
-
[Stage 502:>(6 + 10) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]

[Stage 504:> (6 + 0) / 16][Stage 507:> (0 + 0) / 16][Stage 509:> (0 + 0) / 16]
+
[Stage 564:(16 + 0) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]
-
[Stage 504:>(6 + 10) / 16][Stage 507:> (0 + 6) / 16][Stage 509:> (0 + 0) / 16]

[Stage 507:> (6 + 0) / 16][Stage 509:> (0 + 0) / 16][Stage 510:> (0 + 0) / 16]
+
[Stage 564:(149 + 16) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]

[Stage 566:(16 + 0) / 200][Stage 568:>(0 + 0) / 200][Stage 569:>(0 + 0) / 200]
-
[Stage 507:>(6 + 10) / 16][Stage 509:> (0 + 6) / 16][Stage 510:> (0 + 0) / 16]

[Stage 509:======>         (6 + 0) / 16][Stage 510:>               (0 + 0) / 16]
+
[Stage 566:(71 + 16) / 200][Stage 568:>(0 + 0) / 200][Stage 569:>(0 + 0) / 200]

[Stage 568:(16 + 0) / 200][Stage 569:>(0 + 0) / 200][Stage 573:>(0 + 0) / 200]
-
[Stage 509:=====>         (6 + 10) / 16][Stage 510:>               (0 + 6) / 16]

[Stage 510:=====================>                                  (6 + 0) / 16]
+
[Stage 568:(16 + 2) / 200][Stage 569:>(0 + 0) / 200][Stage 573:>(0 + 0) / 200]

[Stage 569:(42 + 18) / 200][Stage 573:>(0 + 0) / 200][Stage 575:>(0 + 0) / 200]
-
[Stage 510:============================================>          (13 + 3) / 16]
+
[Stage 573:>(0 + 0) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]
-
[Stage 513:===========================================>        (168 + 16) / 200]
+
[Stage 573:(0 + 16) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]

[Stage 573:(16 + 0) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]
-
[Stage 514:============================================>       (171 + 16) / 200]
+
[Stage 573:(67 + 16) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]

[Stage 575:(16 + 0) / 200][Stage 577:>(0 + 0) / 200][Stage 578:>(0 + 0) / 200]
-
                                                                                
+
[Stage 575:(144 + 16) / 200][Stage 577:>(0 + 0) / 200][Stage 578:>(0 + 0) / 200]

[Stage 577:(16 + 0) / 200][Stage 578:>(0 + 0) / 200][Stage 581:>(0 + 0) / 200]
+
+
+
+
+
[Stage 577:(184 + 16) / 200][Stage 578:>(0 + 0) / 200][Stage 581:>(0 + 0) / 200]

[Stage 578:(197 + 3) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]
+
+
+
+
+
[Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]

[Stage 580:(58 + 16) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]
+
+
+
+
+
[Stage 580:(176 + 17) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]

[Stage 581:(195 + 5) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]
+
+
+
+
+
[Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]

[Stage 583:(69 + 17) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]
+
+
+
+
+
[Stage 583:(170 + 16) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]

[Stage 585:(16 + 0) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]
+
+
+
+
+
[Stage 585:(75 + 16) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]
+
+
+
+
+
[Stage 587:(16 + 0) / 200][Stage 589:>(0 + 0) / 200][Stage 591:>(0 + 0) / 200]
+
+
+
+
+
[Stage 587:(16 + 6) / 200][Stage 589:>(0 + 0) / 200][Stage 591:>(0 + 0) / 200]

[Stage 589:>(8 + 8) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]
+
+
+
+
+
[Stage 589:(16 + 0) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]
+
+
+
+
+
[Stage 589:(182 + 17) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]

[Stage 591:(16 + 0) / 200][Stage 593:>(0 + 0) / 200][Stage 595:>(0 + 0) / 200]
+
+
+
+
+
[Stage 591:(133 + 17) / 200][Stage 593:>(0 + 0) / 200][Stage 595:>(0 + 0) / 200]

[Stage 593:(16 + 0) / 200][Stage 595:>(0 + 0) / 200][Stage 597:>(0 + 0) / 200]
+
+
+
+
+
[Stage 593:(39 + 18) / 200][Stage 595:>(0 + 0) / 200][Stage 597:>(0 + 0) / 200]

[Stage 595:(16 + 0) / 200][Stage 597:>(0 + 0) / 200][Stage 599:>(0 + 0) / 200]
+
+
+
+
+
[Stage 597:(16 + 0) / 200][Stage 599:>(0 + 0) / 200][Stage 600:>(0 + 0) / 200]
+
+
+
+
+
[Stage 599:(0 + 16) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]

[Stage 599:(16 + 0) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]
+
+
+
+
+
[Stage 599:(169 + 16) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]

[Stage 605:==>                                                   (11 + 0) / 200]
+
+
+
+
+
[Stage 602:======>     (102 + 18) / 200][Stage 605:>             (11 + 0) / 200]

[Stage 605:==>                                                  (11 + 16) / 200]
-
[Stage 662:====================================================>(197 + 3) / 200]

                                                                                
+
[Stage 606:============================================>       (170 + 16) / 200]
-
[Stage 711:==============================================>      (176 + 8) / 200]
+
[Stage 607:===================================>                (135 + 16) / 200]
@@ -13911,62 +14188,67 @@

App info

                                                                                
+
+
+
[Stage 932:====================================================>(197 + 3) / 200]

                                                                                
+
+
-
+
-
application_1733153225851_0001
+
application_1733153225851_0048
query time
- +
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -13995,28 +14277,28 @@

App info

- - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
 runtimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelismruntimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelism
real_queryid
117.8000000.0000000.0000000.0000000.0000000.0000000.3300006.7300000.0000000.0000000.0400001.340000822.54000014.140000[ 8 10 12 15]1.18000044132117.6500000.0000000.0000000.0000000.0000000.0000000.2000006.7900000.0000000.0000000.0300001.340000822.54000013.990000[ 8 10 12 15]1.18000044132
@@ -14027,94 +14309,94 @@

App info

- +
- - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
 0101
AQEShuffleRead02AQEShuffleRead02
AdaptiveSparkPlan01AdaptiveSparkPlan01
ColumnarExchange02ColumnarExchange02
FilterExecTransformer01FilterExecTransformer01
FlushableHashAggregateExecTransformer01FlushableHashAggregateExecTransformer01
InputAdapter02InputAdapter02
InputIteratorTransformer02InputIteratorTransformer02
ProjectExecTransformer02ProjectExecTransformer02
RegularHashAggregateExecTransformer01RegularHashAggregateExecTransformer01
Scan parquet 01Scan parquet 01
ShuffleQueryStage02ShuffleQueryStage02
SortExecTransformer01SortExecTransformer01
VeloxColumnarToRow01VeloxColumnarToRow01
VeloxResizeBatches02VeloxResizeBatches02
@@ -14125,25 +14407,25 @@

App info

- +
- + - - + + - - + +
 11
ColumnarExchange0.000000ColumnarExchange0.000000
VeloxResizeBatches0.000000VeloxResizeBatches0.000000
@@ -14154,56 +14436,56 @@

App info

- +
- + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
 11
ColumnarExchange0.000000ColumnarExchange0.000000
FlushableHashAggregateExecTransformer0.000000FlushableHashAggregateExecTransformer0.000000
InputIteratorTransformer0.000000InputIteratorTransformer0.000000
ProjectExecTransformer591.600000ProjectExecTransformer591.600000
RegularHashAggregateExecTransformer0.000000RegularHashAggregateExecTransformer0.000000
Scan parquet 591.600000Scan parquet 591.600000
SortExecTransformer0.000000SortExecTransformer0.000000
VeloxColumnarToRow0.000000VeloxColumnarToRow0.000000
VeloxResizeBatches0.000000VeloxResizeBatches0.000000
@@ -14211,18 +14493,18 @@

App info

-No description has been provided for this image +No description has been provided for this image
-No description has been provided for this image +No description has been provided for this image
-
+
@@ -14249,20 +14531,20 @@

App info

-40%_time of scan and filter -6.95 +44%_time of scan and filter +7.53 -35%_time of project -6.02 +36%_time of project +6.13 -21%_not_counted -3.55 +16%_not_counted +2.69 3%_idle -0.54 +0.55 0%_time of input iterator @@ -14301,19 +14583,19 @@

App info

0.00 -0%_time to compress +0%_time to convert 0.00 -0%_time to spill +0%_time to compress 0.00 -0%_time to decompress +0%_time to spill 0.00 -0%_time to convert +0%_time to decompress 0.00 @@ -14322,41 +14604,1784 @@

App info

-No description has been provided for this image +No description has been provided for this image
-
+
-

Compare to previous run

+

Compare to vanilla

+
+
+
+
+
+
+
load data  /sr213/application_1733153225851_0029/app.log
+
-
-
-
-

Config compare

+
+
+
emon metric
+
+
+
+
+
+
[Stage 1319:>                                                       (0 + 3) / 3]
+
+
+
+
+
[Stage 1319:==================>                                     (1 + 2) / 3]

                                                                                
+
+
+
+
+
sar metric
+
+
+
+
+
+
time breakdown
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 application_1733153225851_0029application_1733153225851_0048diff
runtime132.1417.65648.67%
shuffle_write0.000.000.00%
f_wait_time0.000.000.00%
input read22.5422.540.00%
acc_task_time128.0113.99815.01%
output rows1.791.1851.69%
%user>90%0.990.935.91%
%kernel>10%0.990.972.85%
%iowait>10%0.310.62-49.30%
avg %user82.1141.2299.21%
avg %system6.104.5135.11%
avg %iowait0.170.74-76.60%
avg disk util7.1332.21-77.85%
time more than 90%0.000.000.00%
total read (G)5.245.39-2.75%
total write (G)0.021.12-97.81%
avg read bw (MB/s)37.52190.27-80.28%
avg write bw (MB/s)0.1839.61-99.55%
read bw %7559.27411.58-85.60%
read bw %95173.05484.54-64.29%
read bw max236.70510.35-53.62%
time_rd_morethan_950.050.0341.96%
write bw %750.071.07-93.45%
write bw %951.23165.69-99.25%
write bw max1.70812.51-99.79%
time_wr_morethan_950.000.03-100.00%
cached mean88.3393.90-5.93%
cached 75%132.00145.00-8.97%
cached max160.00188.00-14.89%
used mean2,060.73834.00147.09%
used 75%2,343.00852.00175.00%
used max2,346.00859.00173.11%
rx MB/s 75%0.000.000.00%
rx MB/s 95%0.000.000.00%
rx MB/s 99%0.000.000.00%
pgin mean37.37190.21-80.35%
pgin 75%59.00412.00-85.68%
pgin max352.00509.00-30.84%
pgout mean0.1340.97-99.68%
pgout 75%0.001.00-100.00%
pgout max2.00840.00-99.76%
fault mean952,586.87117,653.31709.66%
fault 75%1,426,717.00205,151.00595.45%
fault max2,628,392.00256,538.00924.56%
cpu%_avg0.880.4596.45%
cpu freq_avg3,460.223,241.926.73%
pathlength_sum17,960.001,933.00829.13%
ipc_avg1.271.1411.30%
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 runtimeshuffle_writef_wait_timeinput readacc_task_timeoutput rows
real_queryid      
1 +
132.14
+
17.65
+
648.67%
+
+
0.00
+
0.00
+
nan%
+
+
0.00
+
0.00
+
nan%
+
+
22.54
+
22.54
+
0.00%
+
+
128.01
+
13.99
+
815.01%
+
+
1.79
+
1.18
+
51.69%
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 sr217agg
0  
%user>90% +
0.99
+
0.93
+
5.91%
+
+
0.99
+
0.93
+
5.91%
+
%kernel>10% +
0.99
+
0.97
+
2.85%
+
+
0.99
+
0.97
+
2.85%
+
%iowait>10% +
0.31
+
0.62
+
-49.30%
+
+
0.31
+
0.62
+
-49.30%
+
avg %user +
82.11
+
41.22
+
99.21%
+
+
82.11
+
41.22
+
99.21%
+
avg %system +
6.10
+
4.51
+
35.11%
+
+
6.10
+
4.51
+
35.11%
+
avg %iowait +
0.17
+
0.74
+
-76.60%
+
+
0.17
+
0.74
+
-76.60%
+
avg disk util +
7.13
+
32.21
+
-77.85%
+
+
7.13
+
32.21
+
-77.85%
+
time more than 90% +
0.00
+
0.00
+
nan%
+
+
0.00
+
0.00
+
nan%
+
total read (G) +
5.24
+
5.39
+
-2.75%
+
+
5.24
+
5.39
+
-2.75%
+
total write (G) +
0.02
+
1.12
+
-97.81%
+
+
0.02
+
1.12
+
-97.81%
+
avg read bw (MB/s) +
37.52
+
190.27
+
-80.28%
+
+
37.52
+
190.27
+
-80.28%
+
avg write bw (MB/s) +
0.18
+
39.61
+
-99.55%
+
+
0.18
+
39.61
+
-99.55%
+
read bw %75 +
59.27
+
411.58
+
-85.60%
+
+
59.27
+
411.58
+
-85.60%
+
read bw %95 +
173.05
+
484.54
+
-64.29%
+
+
173.05
+
484.54
+
-64.29%
+
read bw max +
236.70
+
510.35
+
-53.62%
+
+
236.70
+
510.35
+
-53.62%
+
time_rd_morethan_95 +
0.05
+
0.03
+
41.96%
+
+
0.05
+
0.03
+
41.96%
+
write bw %75 +
0.07
+
1.07
+
-93.45%
+
+
0.07
+
1.07
+
-93.45%
+
write bw %95 +
1.23
+
165.69
+
-99.25%
+
+
1.23
+
165.69
+
-99.25%
+
write bw max +
1.70
+
812.51
+
-99.79%
+
+
1.70
+
812.51
+
-99.79%
+
time_wr_morethan_95 +
0.00
+
0.03
+
-100.00%
+
+
0.00
+
0.03
+
-100.00%
+
cached mean +
88.33
+
93.90
+
-5.93%
+
+
88.33
+
93.90
+
-5.93%
+
cached 75% +
132.00
+
145.00
+
-8.97%
+
+
132.00
+
145.00
+
-8.97%
+
cached max +
160.00
+
188.00
+
-14.89%
+
+
160.00
+
188.00
+
-14.89%
+
used mean +
2,060.73
+
834.00
+
147.09%
+
+
2,060.73
+
834.00
+
147.09%
+
used 75% +
2,343.00
+
852.00
+
175.00%
+
+
2,343.00
+
852.00
+
175.00%
+
used max +
2,346.00
+
859.00
+
173.11%
+
+
2,346.00
+
859.00
+
173.11%
+
rx MB/s 75% +
0.00
+
0.00
+
nan%
+
+
0.00
+
0.00
+
nan%
+
rx MB/s 95% +
0.00
+
0.00
+
nan%
+
+
0.00
+
0.00
+
nan%
+
rx MB/s 99% +
0.00
+
0.00
+
nan%
+
+
0.00
+
0.00
+
nan%
+
pgin mean +
37.37
+
190.21
+
-80.35%
+
+
37.37
+
190.21
+
-80.35%
+
pgin 75% +
59.00
+
412.00
+
-85.68%
+
+
59.00
+
412.00
+
-85.68%
+
pgin max +
352.00
+
509.00
+
-30.84%
+
+
352.00
+
509.00
+
-30.84%
+
pgout mean +
0.13
+
40.97
+
-99.68%
+
+
0.13
+
40.97
+
-99.68%
+
pgout 75% +
0.00
+
1.00
+
-100.00%
+
+
0.00
+
1.00
+
-100.00%
+
pgout max +
2.00
+
840.00
+
-99.76%
+
+
2.00
+
840.00
+
-99.76%
+
fault mean +
952,586.87
+
117,653.31
+
709.66%
+
+
952,586.87
+
117,653.31
+
709.66%
+
fault 75% +
1,426,717.00
+
205,151.00
+
595.45%
+
+
1,426,717.00
+
205,151.00
+
595.45%
+
fault max +
2,628,392.00
+
256,538.00
+
924.56%
+
+
2,628,392.00
+
256,538.00
+
924.56%
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clientsr217agg
cpu%_avg +
0.88
+
0.45
+
96.45%
+
+
0.88
+
0.45
+
96.45%
+
cpu freq_avg +
3,460.22
+
3,241.92
+
6.73%
+
+
3,460.22
+
3,241.92
+
6.73%
+
pathlength_sum +
17,960.00
+
1,933.00
+
829.13%
+
+
17,960.00
+
1,933.00
+
829.13%
+
ipc_avg +
1.27
+
1.14
+
11.30%
+
+
1.27
+
1.14
+
11.30%
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 indexStage IDJob IDreal_queryidqueryidtotal_timestdev_timeacc_totaltotal
008818127.981.9199.65%99.65%
11109180.29nan99.87%0.23%
221210180.09nan99.94%0.07%
331511180.07nan100.00%0.06%
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 indexStage IDJob IDreal_queryidqueryidtotal_timestdev_timeacc_totaltotal
00881813.860.3286.65%86.65%
111210180.98nan92.80%6.15%
22109180.74nan97.43%4.63%
331511180.41nan100.00%2.57%
+
+
+
+
+No description has been provided for this image +
+
+
+
+No description has been provided for this image +
+
+
+
+No description has been provided for this image +
+
+
+
+
+
+
+

Config compare

+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0851_00480851_0029comp
callSite.shortcollect at /tmp/ipykernel_265482/1936321720.py:117collect at /tmp/ipykernel_234307/1936321720.py:117False
spark.app.submitTime17334643016691733457038427False
spark.executor.extraClassPathfile:///data0/home/sparkuser/jars/6600a164407ae0e4f5ea5b33dc4b902f23a27730/gluten-velox-bundle-spark3.3_2.12-centos_7_x86_64-1.3.0-snapshot.jarFalse
spark.executor.extraJavaOptions-xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/home/sparkuser/logs/java/hs_err_pid%p.log-xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/data0/home/sparkuser/logs/java/hs_err_pid%p.logFalse
spark.executor.memory10944m29184mFalse
spark.gluten.memory.conservative.task.offHeap.size.in.bytes10041163776NaNFalse
spark.gluten.memory.dynamic.offHeap.sizing.enabledfalseNaNFalse
spark.gluten.memory.offHeap.size.in.bytes80329310208NaNFalse
spark.gluten.memory.overAcquiredMemoryRatio0NaNFalse
spark.gluten.memory.task.offHeap.size.in.bytes20082327552NaNFalse
spark.gluten.memoryOverhead.size.in.bytes1073741824NaNFalse
spark.gluten.numTaskSlotsPerExecutor4NaNFalse
spark.gluten.sql.columnar.backend.libveloxNaNFalse
spark.gluten.sql.columnar.coalesce.batchestrueNaNFalse
spark.gluten.sql.columnar.forceshuffledhashjointrueNaNFalse
spark.gluten.sql.columnar.maxBatchSize4096NaNFalse
spark.gluten.sql.columnar.shuffle.codeclz4NaNFalse
spark.gluten.sql.columnar.shuffle.codecBackendNaNFalse
spark.gluten.sql.session.timeZone.defaultetc/utcNaNFalse
spark.memory.offHeap.size8032931020858368mFalse
spark.pluginsorg.apache.gluten.glutenpluginNaNFalse
spark.repl.class.outputDir/tmp/tmpypqh85b0/tmp/tmpynceqaxdFalse
spark.repl.class.urispark://sr213:40521/classesspark://sr213:34951/classesFalse
spark.shuffle.managerorg.apache.spark.shuffle.sort.columnarshufflemanagerNaNFalse
spark.sql.adaptive.customCostEvaluatorClassorg.apache.spark.sql.execution.adaptive.glutencostevaluatorNaNFalse
spark.sql.extensionsorg.apache.gluten.extension.glutensessionextensionsNaNFalse
spark.sql.files.maxPartitionBytes4gNaNFalse
spark.sql.shuffle.partitions3264False
+
-
-
+
-

convert to HTML

+

Convert to HTML

-
+
-
+
@@ -14365,9 +16390,9 @@

convert to HTML +
-
+

diff --git a/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb b/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb index 26430241e69f..122f1c3c7dec 100644 --- a/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb +++ b/tools/workload/benchmark_velox/sample/tpch_q1.nbconvert.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "markdown", - "id": "4e2615af", + "id": "4371325d", "metadata": { "papermill": { - "duration": 0.003759, - "end_time": "2024-12-02T15:29:45.316600", + "duration": 0.003812, + "end_time": "2024-12-06T05:53:34.206544", "exception": false, - "start_time": "2024-12-02T15:29:45.312841", + "start_time": "2024-12-06T05:53:34.202732", "status": "completed" }, "tags": [] @@ -20,19 +20,19 @@ { "cell_type": "code", "execution_count": 1, - "id": "3007d85d", + "id": "c61021c1", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:29:45.324819Z", - "iopub.status.busy": "2024-12-02T15:29:45.324405Z", - "iopub.status.idle": "2024-12-02T15:29:45.330628Z", - "shell.execute_reply": "2024-12-02T15:29:45.330233Z" + "iopub.execute_input": "2024-12-06T05:53:34.214595Z", + "iopub.status.busy": "2024-12-06T05:53:34.214315Z", + "iopub.status.idle": "2024-12-06T05:53:34.220494Z", + "shell.execute_reply": "2024-12-06T05:53:34.220105Z" }, "papermill": { - "duration": 0.011609, - "end_time": "2024-12-02T15:29:45.331772", + "duration": 0.011601, + "end_time": "2024-12-06T05:53:34.221688", "exception": false, - "start_time": "2024-12-02T15:29:45.320163", + "start_time": "2024-12-06T05:53:34.210087", "status": "completed" }, "tags": [ @@ -45,31 +45,31 @@ "disk=''\n", "nic=''\n", "tz=''\n", - "basedir=''\n", + "base_dir=''\n", "name=''\n", "proxy=''\n", "\n", - "compare_appid=''\n", - "compare_basedir=''\n", - "compare_name=''" + "comp_appid=''\n", + "comp_base_dir=''\n", + "comp_name=''" ] }, { "cell_type": "code", "execution_count": 2, - "id": "f8ea15a6", + "id": "f4c7b29a", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:29:45.339630Z", - "iopub.status.busy": "2024-12-02T15:29:45.339237Z", - "iopub.status.idle": "2024-12-02T15:29:45.341862Z", - "shell.execute_reply": "2024-12-02T15:29:45.341478Z" + "iopub.execute_input": "2024-12-06T05:53:34.229763Z", + "iopub.status.busy": "2024-12-06T05:53:34.229436Z", + "iopub.status.idle": "2024-12-06T05:53:34.232162Z", + "shell.execute_reply": "2024-12-06T05:53:34.231769Z" }, "papermill": { - "duration": 0.007763, - "end_time": "2024-12-02T15:29:45.342990", + "duration": 0.008176, + "end_time": "2024-12-06T05:53:34.233387", "exception": false, - "start_time": "2024-12-02T15:29:45.335227", + "start_time": "2024-12-06T05:53:34.225211", "status": "completed" }, "tags": [ @@ -79,26 +79,27 @@ "outputs": [], "source": [ "# Parameters\n", - "appid = \"application_1733153225851_0001\"\n", + "appid = \"application_1733153225851_0048\"\n", "disk = \"nvme0n1\"\n", "nic = \"enp61s0f0\"\n", "tz = \"Etc/GMT+0\"\n", - "basedir = \"sr213\"\n", + "base_dir = \"sr213\"\n", "name = \"tpch_gluten\"\n", - "compare_appid = \"\"\n", - "compare_basedir = \"\"\n", - "compare_name = \"\"\n" + "comp_appid = \"application_1733153225851_0029\"\n", + "comp_base_dir = \"sr213\"\n", + "comp_name = \"vanilla\"\n", + "proxy = \"http://10.239.44.250:8080\"\n" ] }, { "cell_type": "markdown", - "id": "f5b83da6", + "id": "51887dbb", "metadata": { "papermill": { - "duration": 0.003418, - "end_time": "2024-12-02T15:29:45.350391", + "duration": 0.003585, + "end_time": "2024-12-06T05:53:34.240616", "exception": false, - "start_time": "2024-12-02T15:29:45.346973", + "start_time": "2024-12-06T05:53:34.237031", "status": "completed" }, "tags": [] @@ -110,19 +111,19 @@ { "cell_type": "code", "execution_count": 3, - "id": "f1ed544f", + "id": "11b3e5f6", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:29:45.358265Z", - "iopub.status.busy": "2024-12-02T15:29:45.357941Z", - "iopub.status.idle": "2024-12-02T15:29:45.360578Z", - "shell.execute_reply": "2024-12-02T15:29:45.360205Z" + "iopub.execute_input": "2024-12-06T05:53:34.248767Z", + "iopub.status.busy": "2024-12-06T05:53:34.248529Z", + "iopub.status.idle": "2024-12-06T05:53:34.251294Z", + "shell.execute_reply": "2024-12-06T05:53:34.250897Z" }, "papermill": { - "duration": 0.007969, - "end_time": "2024-12-02T15:29:45.361868", + "duration": 0.008331, + "end_time": "2024-12-06T05:53:34.252497", "exception": false, - "start_time": "2024-12-02T15:29:45.353899", + "start_time": "2024-12-06T05:53:34.244166", "status": "completed" }, "tags": [] @@ -136,19 +137,19 @@ { "cell_type": "code", "execution_count": 4, - "id": "ace428dd", + "id": "58fa24f6", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:29:45.369886Z", - "iopub.status.busy": "2024-12-02T15:29:45.369520Z", - "iopub.status.idle": "2024-12-02T15:29:45.372438Z", - "shell.execute_reply": "2024-12-02T15:29:45.372052Z" + "iopub.execute_input": "2024-12-06T05:53:34.260508Z", + "iopub.status.busy": "2024-12-06T05:53:34.260287Z", + "iopub.status.idle": "2024-12-06T05:53:34.263142Z", + "shell.execute_reply": "2024-12-06T05:53:34.262754Z" }, "papermill": { - "duration": 0.008252, - "end_time": "2024-12-02T15:29:45.373616", + "duration": 0.008226, + "end_time": "2024-12-06T05:53:34.264308", "exception": false, - "start_time": "2024-12-02T15:29:45.365364", + "start_time": "2024-12-06T05:53:34.256082", "status": "completed" }, "tags": [] @@ -165,20 +166,20 @@ { "cell_type": "code", "execution_count": 5, - "id": "d25fd5b9", + "id": "6608ae2f", "metadata": { "code_folding": [], "execution": { - "iopub.execute_input": "2024-12-02T15:29:45.381704Z", - "iopub.status.busy": "2024-12-02T15:29:45.381384Z", - "iopub.status.idle": "2024-12-02T15:30:13.999878Z", - "shell.execute_reply": "2024-12-02T15:30:13.999216Z" + "iopub.execute_input": "2024-12-06T05:53:34.272550Z", + "iopub.status.busy": "2024-12-06T05:53:34.272222Z", + "iopub.status.idle": "2024-12-06T05:54:05.226922Z", + "shell.execute_reply": "2024-12-06T05:54:05.226384Z" }, "papermill": { - "duration": 28.624314, - "end_time": "2024-12-02T15:30:14.001501", + "duration": 30.960697, + "end_time": "2024-12-06T05:54:05.228547", "exception": false, - "start_time": "2024-12-02T15:29:45.377187", + "start_time": "2024-12-06T05:53:34.267850", "status": "completed" }, "tags": [] @@ -196,15 +197,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "24/12/02 15:29:47 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + "24/12/06 05:53:36 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "24/12/02 15:29:48 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.\n", - "24/12/02 15:29:48 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.\n" + "24/12/06 05:53:37 WARN DomainSocketFactory: The short-circuit local reads feature cannot be used because libhadoop cannot be loaded.\n", + "24/12/06 05:53:37 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.\n" ] }, { @@ -253,19 +254,19 @@ { "cell_type": "code", "execution_count": 6, - "id": "5aed17d6", + "id": "beaceea2", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:14.010905Z", - "iopub.status.busy": "2024-12-02T15:30:14.010558Z", - "iopub.status.idle": "2024-12-02T15:30:14.016526Z", - "shell.execute_reply": "2024-12-02T15:30:14.016117Z" + "iopub.execute_input": "2024-12-06T05:54:05.237940Z", + "iopub.status.busy": "2024-12-06T05:54:05.237576Z", + "iopub.status.idle": "2024-12-06T05:54:05.243620Z", + "shell.execute_reply": "2024-12-06T05:54:05.243229Z" }, "papermill": { - "duration": 0.012011, - "end_time": "2024-12-02T15:30:14.017774", + "duration": 0.01213, + "end_time": "2024-12-06T05:54:05.244853", "exception": false, - "start_time": "2024-12-02T15:30:14.005763", + "start_time": "2024-12-06T05:54:05.232723", "status": "completed" }, "tags": [] @@ -301,13 +302,13 @@ }, { "cell_type": "markdown", - "id": "3247c23f", + "id": "96ff6bfd", "metadata": { "papermill": { - "duration": 0.003742, - "end_time": "2024-12-02T15:30:14.025349", + "duration": 0.004098, + "end_time": "2024-12-06T05:54:05.253289", "exception": false, - "start_time": "2024-12-02T15:30:14.021607", + "start_time": "2024-12-06T05:54:05.249191", "status": "completed" }, "tags": [] @@ -319,19 +320,19 @@ { "cell_type": "code", "execution_count": 7, - "id": "d6126b5d", + "id": "96db8a10", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:14.034277Z", - "iopub.status.busy": "2024-12-02T15:30:14.033993Z", - "iopub.status.idle": "2024-12-02T15:30:16.344751Z", - "shell.execute_reply": "2024-12-02T15:30:16.344056Z" + "iopub.execute_input": "2024-12-06T05:54:05.287175Z", + "iopub.status.busy": "2024-12-06T05:54:05.286902Z", + "iopub.status.idle": "2024-12-06T05:54:07.652568Z", + "shell.execute_reply": "2024-12-06T05:54:07.652028Z" }, "papermill": { - "duration": 2.317118, - "end_time": "2024-12-02T15:30:16.346569", + "duration": 2.397178, + "end_time": "2024-12-06T05:54:07.654334", "exception": false, - "start_time": "2024-12-02T15:30:14.029451", + "start_time": "2024-12-06T05:54:05.257156", "status": "completed" }, "scrolled": false, @@ -370,19 +371,19 @@ { "cell_type": "code", "execution_count": 8, - "id": "71b8be80", + "id": "f2087dbe", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.388630Z", - "iopub.status.busy": "2024-12-02T15:30:16.388161Z", - "iopub.status.idle": "2024-12-02T15:30:16.391534Z", - "shell.execute_reply": "2024-12-02T15:30:16.390964Z" + "iopub.execute_input": "2024-12-06T05:54:07.664430Z", + "iopub.status.busy": "2024-12-06T05:54:07.664039Z", + "iopub.status.idle": "2024-12-06T05:54:07.666809Z", + "shell.execute_reply": "2024-12-06T05:54:07.666368Z" }, "papermill": { - "duration": 0.041493, - "end_time": "2024-12-02T15:30:16.392813", + "duration": 0.009062, + "end_time": "2024-12-06T05:54:07.668029", "exception": false, - "start_time": "2024-12-02T15:30:16.351320", + "start_time": "2024-12-06T05:54:07.658967", "status": "completed" }, "tags": [] @@ -396,19 +397,47 @@ { "cell_type": "code", "execution_count": 9, - "id": "7689c4d6", + "id": "df22c6c4", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.402338Z", - "iopub.status.busy": "2024-12-02T15:30:16.402063Z", - "iopub.status.idle": "2024-12-02T15:30:16.405000Z", - "shell.execute_reply": "2024-12-02T15:30:16.404449Z" + "iopub.execute_input": "2024-12-06T05:54:07.677489Z", + "iopub.status.busy": "2024-12-06T05:54:07.677198Z", + "iopub.status.idle": "2024-12-06T05:54:07.679618Z", + "shell.execute_reply": "2024-12-06T05:54:07.679199Z" }, "papermill": { - "duration": 0.009284, - "end_time": "2024-12-02T15:30:16.406279", + "duration": 0.008559, + "end_time": "2024-12-06T05:54:07.680791", "exception": false, - "start_time": "2024-12-02T15:30:16.396995", + "start_time": "2024-12-06T05:54:07.672232", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "emonmetric=['emon_cpuutil',\n", + " 'emon_cpufreq',\n", + " 'emon_instr_retired',\n", + " 'emon_ipc']" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "44921944", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:54:07.690327Z", + "iopub.status.busy": "2024-12-06T05:54:07.689959Z", + "iopub.status.idle": "2024-12-06T05:54:07.692308Z", + "shell.execute_reply": "2024-12-06T05:54:07.691898Z" + }, + "papermill": { + "duration": 0.008606, + "end_time": "2024-12-06T05:54:07.693519", + "exception": false, + "start_time": "2024-12-06T05:54:07.684913", "status": "completed" }, "tags": [] @@ -421,20 +450,20 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "de3d224d", + "execution_count": 11, + "id": "e3b53125", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.415984Z", - "iopub.status.busy": "2024-12-02T15:30:16.415720Z", - "iopub.status.idle": "2024-12-02T15:30:16.418974Z", - "shell.execute_reply": "2024-12-02T15:30:16.418401Z" + "iopub.execute_input": "2024-12-06T05:54:07.702902Z", + "iopub.status.busy": "2024-12-06T05:54:07.702567Z", + "iopub.status.idle": "2024-12-06T05:54:07.705136Z", + "shell.execute_reply": "2024-12-06T05:54:07.704728Z" }, "papermill": { - "duration": 0.009752, - "end_time": "2024-12-02T15:30:16.420246", + "duration": 0.008666, + "end_time": "2024-12-06T05:54:07.706366", "exception": false, - "start_time": "2024-12-02T15:30:16.410494", + "start_time": "2024-12-06T05:54:07.697700", "status": "completed" }, "tags": [] @@ -447,13 +476,13 @@ }, { "cell_type": "markdown", - "id": "f03ea9cd", + "id": "04d5c054", "metadata": { "papermill": { - "duration": 0.004229, - "end_time": "2024-12-02T15:30:16.428694", + "duration": 0.00437, + "end_time": "2024-12-06T05:54:07.715026", "exception": false, - "start_time": "2024-12-02T15:30:16.424465", + "start_time": "2024-12-06T05:54:07.710656", "status": "completed" }, "tags": [] @@ -464,29 +493,30 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "34fc9194", + "execution_count": 12, + "id": "004663b7", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.438322Z", - "iopub.status.busy": "2024-12-02T15:30:16.438042Z", - "iopub.status.idle": "2024-12-02T15:30:16.444163Z", - "shell.execute_reply": "2024-12-02T15:30:16.443602Z" + "iopub.execute_input": "2024-12-06T05:54:07.725014Z", + "iopub.status.busy": "2024-12-06T05:54:07.724613Z", + "iopub.status.idle": "2024-12-06T05:54:07.729656Z", + "shell.execute_reply": "2024-12-06T05:54:07.729270Z" }, "papermill": { - "duration": 0.012553, - "end_time": "2024-12-02T15:30:16.445428", + "duration": 0.011505, + "end_time": "2024-12-06T05:54:07.730819", "exception": false, - "start_time": "2024-12-02T15:30:16.432875", + "start_time": "2024-12-06T05:54:07.719314", "status": "completed" }, + "scrolled": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ - " 5 App info" + " 5 Self app info" ], "text/plain": [ "" @@ -498,7 +528,7 @@ { "data": { "text/html": [ - " 6 Compare to previous run" + " 6 Compare to vanilla" ], "text/plain": [ "" @@ -510,7 +540,7 @@ { "data": { "text/html": [ - " 7 Config compare" + " 7 Config compare" ], "text/plain": [ "" @@ -521,70 +551,70 @@ } ], "source": [ - "display(HTML(' 5 App info'))\n", - "display(HTML(' 6 Compare to previous run'))\n", - "display(HTML(' 7 Config compare'))" + "display(HTML(' 5 Self app info'))\n", + "display(HTML(f\" 6 Compare to {comp_name}\"))\n", + "display(HTML(' 7 Config compare'))" ] }, { "cell_type": "markdown", - "id": "3fcaa57d", + "id": "64cbb5ba", "metadata": { "papermill": { - "duration": 0.004439, - "end_time": "2024-12-02T15:30:16.454227", + "duration": 0.004589, + "end_time": "2024-12-06T05:54:07.739936", "exception": false, - "start_time": "2024-12-02T15:30:16.449788", + "start_time": "2024-12-06T05:54:07.735347", "status": "completed" }, "tags": [] }, "source": [ - "# App info" + "# Self app info" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "d923e343", + "execution_count": 13, + "id": "0c621763", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.463831Z", - "iopub.status.busy": "2024-12-02T15:30:16.463581Z", - "iopub.status.idle": "2024-12-02T15:30:16.505165Z", - "shell.execute_reply": "2024-12-02T15:30:16.504133Z" + "iopub.execute_input": "2024-12-06T05:54:07.749952Z", + "iopub.status.busy": "2024-12-06T05:54:07.749546Z", + "iopub.status.idle": "2024-12-06T05:54:07.832927Z", + "shell.execute_reply": "2024-12-06T05:54:07.832513Z" }, "papermill": { - "duration": 0.048063, - "end_time": "2024-12-02T15:30:16.506705", + "duration": 0.090016, + "end_time": "2024-12-06T05:54:07.834415", "exception": false, - "start_time": "2024-12-02T15:30:16.458642", + "start_time": "2024-12-06T05:54:07.744399", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ - "app=Application_Run(appid, basedir=basedir)\n", + "app=Application_Run(appid, basedir=base_dir)\n", "appals=app.analysis['app']['als']" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "fa84df8a", + "execution_count": 14, + "id": "0195d322", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:16.516771Z", - "iopub.status.busy": "2024-12-02T15:30:16.516568Z", - "iopub.status.idle": "2024-12-02T15:30:43.518801Z", - "shell.execute_reply": "2024-12-02T15:30:43.518199Z" + "iopub.execute_input": "2024-12-06T05:54:07.844603Z", + "iopub.status.busy": "2024-12-06T05:54:07.844367Z", + "iopub.status.idle": "2024-12-06T05:54:33.914699Z", + "shell.execute_reply": "2024-12-06T05:54:33.914257Z" }, "papermill": { - "duration": 27.009075, - "end_time": "2024-12-02T15:30:43.520099", + "duration": 26.07688, + "end_time": "2024-12-06T05:54:33.916079", "exception": false, - "start_time": "2024-12-02T15:30:16.511024", + "start_time": "2024-12-06T05:54:07.839199", "status": "completed" }, "tags": [] @@ -594,7 +624,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "load data /sr213/application_1733153225851_0001/app.log\n" + "load data /sr213/application_1733153225851_0048/app.log\n" ] }, { @@ -618,17 +648,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 1:> (0 + 1) / 1]\r", - "\r", - " \r" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "[Stage 5:> (0 + 1) / 1]\r" + "[Stage 1:> (0 + 1) / 1]\r" ] }, { @@ -644,7 +664,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 8:> (0 + 1) / 1]\r" + "[Stage 4:> (0 + 1) / 1]\r" ] }, { @@ -660,7 +680,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 15:> (0 + 1) / 1]\r" + "[Stage 5:> (0 + 1) / 1]\r" ] }, { @@ -692,17 +712,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 39:> (0 + 16) / 200]\r" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "[Stage 39:=> (6 + 17) / 200]\r", + "[Stage 39:> (0 + 16) / 200]\r", "\r", - "[Stage 39:===> (13 + 16) / 200]\r" + "[Stage 39:=> (6 + 16) / 200]\r" ] }, { @@ -710,9 +722,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 39:======> (24 + 16) / 200]\r", - "\r", - "[Stage 39:=========> (37 + 16) / 200]\r" + "[Stage 39:===> (14 + 16) / 200]\r" ] }, { @@ -720,9 +730,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 39:================> (60 + 16) / 200]\r", + "[Stage 39:========> (33 + 16) / 200]\r", "\r", - "[Stage 39:=======================> (88 + 16) / 200]\r" + "[Stage 39:==================> (67 + 16) / 200]\r" ] }, { @@ -730,15 +740,17 @@ "output_type": "stream", "text": [ "\r", - "[Stage 39:=================================> (126 + 16) / 200]\r", + "[Stage 39:==========================> (97 + 16) / 200]\r", "\r", - "[Stage 39:=============================================> (171 + 16) / 200]\r" + "[Stage 39:==================================> (131 + 16) / 200]\r" ] }, { "name": "stderr", "output_type": "stream", "text": [ + "\r", + "[Stage 39:=================================================> (185 + 15) / 200]\r", "\r", " \r" ] @@ -746,7 +758,7 @@ { "data": { "text/html": [ - "http://sr213:18080/history/application_1733153225851_0001" + "http://sr213:18080/history/application_1733153225851_0048" ], "text/plain": [ "" @@ -760,7 +772,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 42:(173 + 7) / 200][Stage 43:> (0 + 1) / 1][Stage 44:> (0 + 8) / 200]\r", + "[Stage 42:(177 + 5) / 200][Stage 43:> (0 + 1) / 1][Stage 44:>(0 + 11) / 200]\r", "\r", " \r" ] @@ -770,9 +782,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 44:(129 + 9) / 200][Stage 45:> (0 + 1) / 1][Stage 46:> (0 + 6) / 200]\r", + "[Stage 44:(113 + 12) / 200][Stage 45:> (0 + 1) / 1][Stage 46:> (0 + 3) / 200]\r", "\r", - "[Stage 44:(163 + 4) / 200][Stage 46:>(8 + 12) / 200][Stage 47:> (0 + 0) / 200]\r" + "[Stage 44:(182 + 5) / 200][Stage 46:>(4 + 11) / 200][Stage 47:> (0 + 0) / 200]\r" ] }, { @@ -780,9 +792,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 44:(185 + 4) / 200][Stage 46:>(46 + 9) / 200][Stage 47:> (0 + 3) / 200]\r", + "[Stage 46:(43 + 16) / 200][Stage 47:> (0 + 0) / 200][Stage 48:> (0 + 0) / 200]\r", "\r", - "[Stage 46:>(91 + 8) / 200][Stage 47:> (7 + 8) / 200][Stage 48:> (0 + 0) / 200]\r" + "[Stage 46:(110 + 8) / 200][Stage 47:> (0 + 8) / 200][Stage 48:> (0 + 0) / 200]\r" ] }, { @@ -790,9 +802,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 46:(128 + 4) / 200][Stage 47:>(38 + 8) / 200][Stage 48:> (0 + 4) / 200]\r", + "[Stage 46:(155 + 8) / 200][Stage 47:>(47 + 8) / 200][Stage 48:> (0 + 0) / 200]\r", "\r", - "[Stage 46:(160 + 4) / 200][Stage 47:>(99 + 4) / 200][Stage 48:>(25 + 6) / 200]\r" + "[Stage 46:(194 + 4) / 200][Stage 47:>(73 + 4) / 200][Stage 48:> (8 + 8) / 200]\r" ] }, { @@ -800,9 +812,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 46:(196 + 4) / 200][Stage 47:(105 + 0) / 200][Stage 48:>(86 + 4) / 200]\r", + "[Stage 47:(114 + 8) / 200][Stage 48:>(57 + 4) / 200][Stage 49:> (0 + 4) / 16]\r", "\r", - "[Stage 47:(121 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (0 + 12) / 16]\r" + "[Stage 47:(185 + 4) / 200][Stage 48:>(73 + 4) / 200][Stage 49:> (0 + 8) / 16]\r" ] }, { @@ -810,7 +822,15 @@ "output_type": "stream", "text": [ "\r", - "[Stage 47:(191 + 4) / 200][Stage 48:(105 + 0) / 200][Stage 49:> (4 + 12) / 16]\r", + "[Stage 48:(126 + 8) / 200][Stage 49:> (0 + 8) / 16][Stage 51:> (0 + 0) / 1]\r", + "\r", + "[Stage 48:(184 + 4) / 200][Stage 49:> (4 + 12) / 16][Stage 51:> (0 + 0) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ "\r", " \r" ] @@ -823,7 +843,7 @@ " \n", " \n", " appid\n", - " application_1733153225851_0001\n", + " application_1733153225851_0048\n", " \n", " \n", " executor.instances\n", @@ -863,7 +883,7 @@ " \n", " \n", " runtime\n", - " 17.8\n", + " 17.65\n", " \n", " \n", " disk spilled\n", @@ -887,7 +907,7 @@ " \n", " \n", " task run time\n", - " 6.73\n", + " 6.79\n", " \n", " \n", " ser_time\n", @@ -899,7 +919,7 @@ " \n", " \n", " gc_time\n", - " 0.04\n", + " 0.03\n", " \n", " \n", " input read\n", @@ -907,23 +927,23 @@ " \n", " \n", " acc_task_time\n", - " 14.14\n", + " 13.99\n", " \n", " \n", " file read size\n", - " 5,944.5\n", + " 5,951.35\n", " \n", " \n", " file write size\n", - " 21.74\n", + " 24.52\n", " \n", " \n", " disk read size\n", - " 4.95\n", + " 5.05\n", " \n", " \n", " disk write size\n", - " 12.38\n", + " 15.31\n", " \n", " \n", " disk cancel size\n", @@ -944,7 +964,7 @@ { "data": { "text/plain": [ - "{'appid': 'application_1733153225851_0001',\n", + "{'appid': 'application_1733153225851_0048',\n", " 'executor.instances': 4,\n", " 'executor.cores': 4,\n", " 'shuffle.partitions': 32,\n", @@ -954,26 +974,26 @@ " 'Speculative Tasks': 0,\n", " 'Speculative Killed Tasks': 0,\n", " 'Speculative Stage': 0,\n", - " 'runtime': 17.8,\n", + " 'runtime': 17.65,\n", " 'disk spilled': 0.0,\n", " 'memspilled': 0.0,\n", " 'local_read': 0.0,\n", " 'remote_read': 0.0,\n", " 'shuffle_write': 0.0,\n", - " 'task run time': 6.73,\n", + " 'task run time': 6.79,\n", " 'ser_time': 0.0,\n", " 'f_wait_time': 0.0,\n", - " 'gc_time': 0.04,\n", + " 'gc_time': 0.03,\n", " 'input read': 22.54,\n", - " 'acc_task_time': 14.14,\n", - " 'file read size': 5944.5,\n", - " 'file write size': 21.74,\n", - " 'disk read size': 4.95,\n", - " 'disk write size': 12.38,\n", + " 'acc_task_time': 13.99,\n", + " 'file read size': 5951.35,\n", + " 'file write size': 24.52,\n", + " 'disk read size': 5.05,\n", + " 'disk write size': 15.31,\n", " 'disk cancel size': 0.0}" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -984,20 +1004,20 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "cc75b864", + "execution_count": 15, + "id": "4be7e21a", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:30:43.533299Z", - "iopub.status.busy": "2024-12-02T15:30:43.532986Z", - "iopub.status.idle": "2024-12-02T15:30:56.864546Z", - "shell.execute_reply": "2024-12-02T15:30:56.864095Z" + "iopub.execute_input": "2024-12-06T05:54:33.929243Z", + "iopub.status.busy": "2024-12-06T05:54:33.928978Z", + "iopub.status.idle": "2024-12-06T05:55:12.939373Z", + "shell.execute_reply": "2024-12-06T05:55:12.938897Z" }, "papermill": { - "duration": 13.339489, - "end_time": "2024-12-02T15:30:56.865821", + "duration": 39.018383, + "end_time": "2024-12-06T05:55:12.940731", "exception": false, - "start_time": "2024-12-02T15:30:43.526332", + "start_time": "2024-12-06T05:54:33.922348", "status": "completed" }, "tags": [] @@ -1008,23 +1028,24 @@ "output_type": "stream", "text": [ "\r", - "[Stage 91:============> (174 + 4) / 200][Stage 92:=======> (105 + 0) / 200]\r", + "[Stage 92:(161 + 4) / 200][Stage 93:>(68 + 9) / 200][Stage 94:> (8 + 4) / 200]\r", "\r", - " \r" + "[Stage 93:(151 + 4) / 200][Stage 94:>(66 + 8) / 200][Stage 95:> (1 + 4) / 16]\r" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "sar metric\n" + "\r", + " \r" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "perf stat metric\n" + "/sr213/application_1733153225851_0048/sr217/emon.parquet is not found, trying to load data ...\n" ] }, { @@ -1032,264 +1053,37 @@ "output_type": "stream", "text": [ "\r", - "[Stage 258:> (0 + 1) / 1]\r", + "[Stage 129:> (0 + 2) / 2][Stage 130:> (0 + 2) / 2]\r", "\r", - " \r" + "[Stage 129:> (0 + 2) / 2][Stage 130:> (0 + 2) / 2][Stage 131:> (0 + 4) / 4]\r" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 application_1733153225851_0001
runtime17.800000
disk spilled0.000000
shuffle_write0.000000
f_wait_time0.000000
input read22.540000
acc_task_time14.140000
output rows1.180000
%user>90%0.931034
%kernel>10%0.965517
%iowait>10%0.620690
avg %user41.233793
avg %system4.608621
avg %iowait0.623793
avg disk util33.448276
time more than 90%0.000000
total read (G)5.432129
total write (G)0.994891
avg read bw (MB/s)191.810354
avg write bw (MB/s)35.129954
read bw %75402.394531
read bw %95479.738281
read bw max480.722656
time_rd_morethan_950.034483
write bw %751.074219
write bw %9535.035156
write bw max945.855469
time_wr_morethan_950.034483
cached mean97.137931
cached 75%152.000000
cached max188.000000
used mean573.379310
used 75%593.000000
used max597.000000
rx MB/s 75%0.000000
rx MB/s 95%0.000000
rx MB/s 99%0.000000
pgin mean191.965517
pgin 75%402.000000
pgin max480.000000
pgout mean35.103448
pgout 75%1.000000
pgout max947.000000
fault mean117681.655172
fault 75%193074.000000
fault max287177.000000
ipc1.144464
instructions962.586404
cpu_freq3.225843
cpu%7.480452
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summary=app.get_summary(disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", - "display(summary.style)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "fc298e84", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:30:56.880941Z", - "iopub.status.busy": "2024-12-02T15:30:56.880598Z", - "iopub.status.idle": "2024-12-02T15:31:08.981531Z", - "shell.execute_reply": "2024-12-02T15:31:08.980923Z" + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 129:=> (1 + 1) / 2][Stage 130:=> (1 + 1) / 2][Stage 131:> (1 + 3) / 4]\r", + "\r", + "[Stage 129:========> (1 + 1) / 2][Stage 131:====> (1 + 3) / 4]\r" + ] }, - "papermill": { - "duration": 12.110503, - "end_time": "2024-12-02T15:31:08.982917", - "exception": false, - "start_time": "2024-12-02T15:30:56.872414", - "status": "completed" + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] }, - "scrolled": true, - "tags": [] - }, - "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", - "[Stage 288:> (0 + 12) / 12]\r" + "[Stage 143:==> (16 + 16) / 400]\r", + "\r", + "[Stage 143:==> (17 + 16) / 400]\r" ] }, { @@ -1297,9 +1091,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 288:==============> (3 + 9) / 12]\r", + "[Stage 143:===> (24 + 16) / 400]\r", "\r", - "[Stage 288:==========================================> (9 + 3) / 12]\r" + "[Stage 143:====> (34 + 16) / 400]\r" ] }, { @@ -1307,100 +1101,49 @@ "output_type": "stream", "text": [ "\r", - " \r" + "[Stage 143:=====> (43 + 16) / 400]\r", + "\r", + "[Stage 143:=======> (53 + 16) / 400]\r" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "DEV in ('nvme0n1')\n" + "\r", + "[Stage 143:========> (65 + 16) / 400]\r", + "\r", + "[Stage 143:=========> (72 + 16) / 400]\r" ] }, { - "data": { - "text/html": [ - "http://sr213:1088/tracing_examples/trace_viewer.html#/tracing/test_data/application_1733153225851_0001.json" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "app.generate_trace_view(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "8f587a04", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:31:08.998181Z", - "iopub.status.busy": "2024-12-02T15:31:08.997435Z", - "iopub.status.idle": "2024-12-02T15:31:09.948956Z", - "shell.execute_reply": "2024-12-02T15:31:09.948476Z" + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 143:==========> (83 + 16) / 400]\r", + "\r", + "[Stage 143:===========> (90 + 16) / 400]\r" + ] }, - "papermill": { - "duration": 0.960354, - "end_time": "2024-12-02T15:31:09.950263", - "exception": false, - "start_time": "2024-12-02T15:31:08.989909", - "status": "completed" + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 143:=============> (99 + 16) / 400]\r", + "\r", + "[Stage 143:=============> (106 + 16) / 400]\r" + ] }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "gluten tpch_power 663d4f" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "appals.get_app_name()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c7c5b7ec", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:31:09.964776Z", - "iopub.status.busy": "2024-12-02T15:31:09.964508Z", - "iopub.status.idle": "2024-12-02T15:31:43.805715Z", - "shell.execute_reply": "2024-12-02T15:31:43.805213Z" - }, - "papermill": { - "duration": 33.849826, - "end_time": "2024-12-02T15:31:43.807072", - "exception": false, - "start_time": "2024-12-02T15:31:09.957246", - "status": "completed" - }, - "tags": [] - }, - "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", - "[Stage 471:> (2 + 3) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]\r", + "[Stage 143:==============> (113 + 16) / 400]\r", "\r", - "[Stage 471:> (5 + 0) / 16][Stage 472:> (0 + 0) / 16][Stage 475:> (0 + 0) / 16]\r" + "[Stage 143:===============> (118 + 16) / 400]\r" ] }, { @@ -1408,9 +1151,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 471:>(5 + 11) / 16][Stage 472:> (0 + 5) / 16][Stage 475:> (0 + 0) / 16]\r", + "[Stage 143:================> (126 + 16) / 400]\r", "\r", - "[Stage 472:> (5 + 0) / 16][Stage 475:> (0 + 0) / 16][Stage 476:> (0 + 0) / 16]\r" + "[Stage 143:=================> (132 + 16) / 400]\r" ] }, { @@ -1418,9 +1161,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 472:>(15 + 1) / 16][Stage 475:> (2 + 3) / 16][Stage 476:> (0 + 0) / 16]\r", + "[Stage 143:==================> (140 + 16) / 400]\r", "\r", - "[Stage 475:> (5 + 0) / 16][Stage 476:> (0 + 0) / 16][Stage 479:> (0 + 0) / 16]\r" + "[Stage 143:==================> (146 + 16) / 400]\r" ] }, { @@ -1428,9 +1171,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 475:>(15 + 1) / 16][Stage 476:> (3 + 2) / 16][Stage 479:> (0 + 0) / 16]\r", + "[Stage 143:===================> (153 + 16) / 400]\r", "\r", - "[Stage 476:> (5 + 0) / 16][Stage 479:> (0 + 0) / 16][Stage 481:> (0 + 0) / 16]\r" + "[Stage 143:====================> (160 + 16) / 400]\r" ] }, { @@ -1438,9 +1181,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 476:>(6 + 10) / 16][Stage 479:> (0 + 5) / 16][Stage 481:> (0 + 0) / 16]\r", + "[Stage 143:======================> (170 + 16) / 400]\r", "\r", - "[Stage 479:> (5 + 0) / 16][Stage 481:> (0 + 0) / 16][Stage 482:> (0 + 0) / 16]\r" + "[Stage 143:======================> (173 + 16) / 400]\r" ] }, { @@ -1448,9 +1191,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 479:>(5 + 11) / 16][Stage 481:> (0 + 5) / 16][Stage 482:> (0 + 0) / 16]\r", + "[Stage 143:=======================> (182 + 16) / 400]\r", "\r", - "[Stage 481:> (5 + 0) / 16][Stage 482:> (0 + 0) / 16][Stage 484:> (0 + 0) / 16]\r" + "[Stage 143:========================> (186 + 16) / 400]\r" ] }, { @@ -1458,9 +1201,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 481:>(13 + 3) / 16][Stage 482:> (1 + 4) / 16][Stage 484:> (0 + 0) / 16]\r", + "[Stage 143:=========================> (194 + 16) / 400]\r", "\r", - "[Stage 482:> (5 + 0) / 16][Stage 484:> (0 + 0) / 16][Stage 487:> (0 + 0) / 16]\r" + "[Stage 143:=========================> (197 + 16) / 400]\r" ] }, { @@ -1468,9 +1211,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 482:>(5 + 11) / 16][Stage 484:> (0 + 5) / 16][Stage 487:> (0 + 0) / 16]\r", + "[Stage 143:==========================> (204 + 16) / 400]\r", "\r", - "[Stage 484:> (5 + 0) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]\r" + "[Stage 143:===========================> (211 + 16) / 400]\r" ] }, { @@ -1478,9 +1221,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 484:>(5 + 11) / 16][Stage 487:> (0 + 0) / 16][Stage 488:> (0 + 0) / 16]\r", + "[Stage 143:===========================> (214 + 16) / 400]\r", "\r", - "[Stage 487:> (5 + 0) / 16][Stage 488:> (0 + 0) / 16][Stage 490:> (0 + 0) / 16]\r" + "[Stage 143:============================> (222 + 16) / 400]\r" ] }, { @@ -1488,9 +1231,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 487:>(13 + 3) / 16][Stage 488:> (0 + 5) / 16][Stage 490:> (0 + 0) / 16]\r", + "[Stage 143:=============================> (230 + 16) / 400]\r", "\r", - "[Stage 488:> (5 + 0) / 16][Stage 490:> (0 + 0) / 16][Stage 492:> (0 + 0) / 16]\r" + "[Stage 143:==============================> (236 + 16) / 400]\r" ] }, { @@ -1498,9 +1241,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 488:>(5 + 11) / 16][Stage 490:> (0 + 5) / 16][Stage 492:> (0 + 0) / 16]\r", + "[Stage 143:===============================> (243 + 16) / 400]\r", "\r", - "[Stage 490:> (5 + 0) / 16][Stage 492:> (0 + 0) / 16][Stage 495:> (0 + 0) / 16]\r" + "[Stage 143:================================> (249 + 16) / 400]\r" ] }, { @@ -1508,9 +1251,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 490:>(14 + 2) / 16][Stage 492:> (1 + 4) / 16][Stage 495:> (0 + 0) / 16]\r", + "[Stage 143:=================================> (256 + 16) / 400]\r", "\r", - "[Stage 492:> (5 + 0) / 16][Stage 495:> (0 + 0) / 16][Stage 497:> (0 + 0) / 16]\r" + "[Stage 143:==================================> (263 + 16) / 400]\r" ] }, { @@ -1518,9 +1261,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 492:>(13 + 3) / 16][Stage 495:> (1 + 4) / 16][Stage 497:> (0 + 0) / 16]\r", + "[Stage 143:===================================> (272 + 16) / 400]\r", "\r", - "[Stage 495:> (5 + 0) / 16][Stage 497:> (0 + 0) / 16][Stage 498:> (0 + 0) / 16]\r" + "[Stage 143:====================================> (279 + 16) / 400]\r" ] }, { @@ -1528,9 +1271,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 495:>(5 + 11) / 16][Stage 497:> (0 + 5) / 16][Stage 498:> (0 + 0) / 16]\r", + "[Stage 143:======================================> (294 + 16) / 400]\r", "\r", - "[Stage 497:> (5 + 0) / 16][Stage 498:> (0 + 0) / 16][Stage 500:> (0 + 0) / 16]\r" + "[Stage 143:======================================> (299 + 16) / 400]\r" ] }, { @@ -1538,9 +1281,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 498:> (1 + 5) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]\r", + "[Stage 143:========================================> (311 + 16) / 400]\r", "\r", - "[Stage 498:> (6 + 0) / 16][Stage 500:> (0 + 0) / 16][Stage 502:> (0 + 0) / 16]\r" + "[Stage 143:=========================================> (322 + 16) / 400]\r" ] }, { @@ -1548,9 +1291,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 498:>(6 + 10) / 16][Stage 500:> (0 + 3) / 16][Stage 502:> (0 + 0) / 16]\r", + "[Stage 143:===========================================> (333 + 17) / 400]\r", "\r", - "[Stage 500:> (6 + 0) / 16][Stage 502:> (0 + 0) / 16][Stage 504:> (0 + 0) / 16]\r" + "[Stage 143:=============================================> (348 + 16) / 400]\r" ] }, { @@ -1558,9 +1301,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 500:>(13 + 3) / 16][Stage 502:> (0 + 6) / 16][Stage 504:> (0 + 0) / 16]\r", + "[Stage 143:==============================================> (360 + 16) / 400]\r", "\r", - "[Stage 502:> (6 + 0) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]\r" + "[Stage 143:================================================> (372 + 16) / 400]\r" ] }, { @@ -1568,9 +1311,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 502:>(6 + 10) / 16][Stage 504:> (0 + 0) / 16][Stage 507:> (0 + 0) / 16]\r", - "\r", - "[Stage 504:> (6 + 0) / 16][Stage 507:> (0 + 0) / 16][Stage 509:> (0 + 0) / 16]\r" + "[Stage 143:==================================================> (386 + 14) / 400]\r" ] }, { @@ -1578,9 +1319,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 504:>(6 + 10) / 16][Stage 507:> (0 + 6) / 16][Stage 509:> (0 + 0) / 16]\r", - "\r", - "[Stage 507:> (6 + 0) / 16][Stage 509:> (0 + 0) / 16][Stage 510:> (0 + 0) / 16]\r" + "[Stage 148:> (0 + 1) / 1]\r" ] }, { @@ -1588,9 +1327,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 507:>(6 + 10) / 16][Stage 509:> (0 + 6) / 16][Stage 510:> (0 + 0) / 16]\r", - "\r", - "[Stage 509:======> (6 + 0) / 16][Stage 510:> (0 + 0) / 16]\r" + "[Stage 154:> (0 + 3) / 3]\r" ] }, { @@ -1598,17 +1335,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 509:=====> (6 + 10) / 16][Stage 510:> (0 + 6) / 16]\r", - "\r", - "[Stage 510:=====================> (6 + 0) / 16]\r" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "[Stage 154:===================> (1 + 2) / 3]\r", "\r", - "[Stage 510:============================================> (13 + 3) / 16]\r" + "[Stage 154:======================================> (2 + 1) / 3]\r" ] }, { @@ -1616,7 +1345,7 @@ "output_type": "stream", "text": [ "\r", - "[Stage 513:===========================================> (168 + 16) / 200]\r" + " \r" ] }, { @@ -1624,15 +1353,9 @@ "output_type": "stream", "text": [ "\r", - "[Stage 514:============================================> (171 + 16) / 200]\r" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "[Stage 157:> (0 + 3) / 3]\r", "\r", - " \r" + "[Stage 157:===================> (1 + 2) / 3]\r" ] }, { @@ -1640,476 +1363,3110 @@ "output_type": "stream", "text": [ "\r", - "[Stage 662:====================================================>(197 + 3) / 200]\r", + "[Stage 157:======================================> (2 + 1) / 3]\r", "\r", " \r" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "[Stage 711:==============================================> (176 + 8) / 200]\r" - ] - }, - { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - " \r" + "sar metric\n" ] - } - ], - "source": [ - "shuffle_df, dfx=appals.get_shuffle_stat()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "39469bb7", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:31:43.824780Z", - "iopub.status.busy": "2024-12-02T15:31:43.824454Z", - "iopub.status.idle": "2024-12-02T15:31:52.321835Z", - "shell.execute_reply": "2024-12-02T15:31:52.321332Z" - }, - "papermill": { - "duration": 8.508382, - "end_time": "2024-12-02T15:31:52.323715", - "exception": false, - "start_time": "2024-12-02T15:31:43.815333", - "status": "completed" - }, - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - " application_1733153225851_0001 " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "http://sr213:18080/history/application_1733153225851_0001" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " query time " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" }, { "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - "
 runtimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelism
real_queryid                     application_1733153225851_0048
117.8000000.0000000.0000000.0000000.0000000.0000000.3300006.7300000.0000000.0000000.0400001.340000822.54000014.140000[ 8 10 12 15]1.18000044132runtime17.650000
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " operator count " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - "
 01disk spilled0.000000
AQEShuffleRead02shuffle_write0.000000
AdaptiveSparkPlan01f_wait_time0.000000
ColumnarExchange02input read22.540000
FilterExecTransformer01acc_task_time13.990000
FlushableHashAggregateExecTransformer01output rows1.180000
InputAdapter02%user>90%0.931034
InputIteratorTransformer02%kernel>10%0.965517
ProjectExecTransformer02%iowait>10%0.620690
RegularHashAggregateExecTransformer01avg %user41.216207
Scan parquet 01avg %system4.514138
ShuffleQueryStage02avg %iowait0.743793
SortExecTransformer01avg disk util32.206897
VeloxColumnarToRow01time more than 90%0.000000
VeloxResizeBatches02total read (G)5.388613
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " operator input row count " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - "
 1total write (G)1.121773
ColumnarExchange0.000000avg read bw (MB/s)190.273771
VeloxResizeBatches0.000000avg write bw (MB/s)39.610183
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " operator output row count " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - "
 1read bw %75411.578125
ColumnarExchange0.000000read bw %95484.542969
FlushableHashAggregateExecTransformer0.000000read bw max510.351562
InputIteratorTransformer0.000000time_rd_morethan_950.034483
ProjectExecTransformer591.600000write bw %751.074219
RegularHashAggregateExecTransformer0.000000write bw %95165.687500
Scan parquet 591.600000write bw max812.511719
SortExecTransformer0.000000time_wr_morethan_950.034483
VeloxColumnarToRow0.000000cached mean93.896552
VeloxResizeBatches0.000000cached 75%145.000000
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] + " \n", + " cached max\n", + " 188.000000\n", + " \n", + " \n", + " used mean\n", + " 834.000000\n", + " \n", + " \n", + " used 75%\n", + " 852.000000\n", + " \n", + " \n", + " used max\n", + " 859.000000\n", + " \n", + " \n", + " rx MB/s 75%\n", + " 0.000000\n", + " \n", + " \n", + " rx MB/s 95%\n", + " 0.000000\n", + " \n", + " \n", + " rx MB/s 99%\n", + " 0.000000\n", + " \n", + " \n", + " pgin mean\n", + " 190.206897\n", + " \n", + " \n", + " pgin 75%\n", + " 412.000000\n", + " \n", + " \n", + " pgin max\n", + " 509.000000\n", + " \n", + " \n", + " pgout mean\n", + " 40.965517\n", + " \n", + " \n", + " pgout 75%\n", + " 1.000000\n", + " \n", + " \n", + " pgout max\n", + " 840.000000\n", + " \n", + " \n", + " fault mean\n", + " 117653.310345\n", + " \n", + " \n", + " fault 75%\n", + " 205151.000000\n", + " \n", + " \n", + " fault max\n", + " 256538.000000\n", + " \n", + " \n", + " cpu%_avg\n", + " 0.448817\n", + " \n", + " \n", + " cpu freq_avg\n", + " 3241.915617\n", + " \n", + " \n", + " pathlength_sum\n", + " 1933.000000\n", + " \n", + " \n", + " ipc_avg\n", + " 1.137983\n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "summary=app.get_summary(show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + "display(summary.style)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ae213d2c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:55:12.957566Z", + "iopub.status.busy": "2024-12-06T05:55:12.957206Z", + "iopub.status.idle": "2024-12-06T05:55:33.180803Z", + "shell.execute_reply": "2024-12-06T05:55:33.180353Z" + }, + "papermill": { + "duration": 20.233292, + "end_time": "2024-12-06T05:55:33.182105", + "exception": false, + "start_time": "2024-12-06T05:55:12.948813", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 330:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 341:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DEV in ('nvme0n1')\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 388:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 396:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "data": { + "text/plain": [ + "{'sr217': 200}" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 490:===================> (1 + 2) / 3]\r", + "\r", + " \r" + ] + }, + { + "data": { + "text/html": [ + "http://sr213:1088/tracing_examples/trace_viewer.html#/tracing/test_data/application_1733153225851_0048.json" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "app.generate_trace_view(showemon=True,show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "adde42f3", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:55:33.200290Z", + "iopub.status.busy": "2024-12-06T05:55:33.199984Z", + "iopub.status.idle": "2024-12-06T05:55:33.930601Z", + "shell.execute_reply": "2024-12-06T05:55:33.930143Z" + }, + "papermill": { + "duration": 0.741184, + "end_time": "2024-12-06T05:55:33.931895", + "exception": false, + "start_time": "2024-12-06T05:55:33.190711", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "gluten tpch_power 6600a1" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.get_app_name()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "b20c9ef4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:55:33.949596Z", + "iopub.status.busy": "2024-12-06T05:55:33.949323Z", + "iopub.status.idle": "2024-12-06T05:56:11.412960Z", + "shell.execute_reply": "2024-12-06T05:56:11.412450Z" + }, + "papermill": { + "duration": 37.473642, + "end_time": "2024-12-06T05:56:11.414122", + "exception": false, + "start_time": "2024-12-06T05:55:33.940480", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 605:==> (11 + 0) / 200]\r", + "\r", + "[Stage 531:(174 + 16) / 200][Stage 532:>(0 + 0) / 200][Stage 533:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 532:(102 + 16) / 200][Stage 533:>(0 + 0) / 200][Stage 534:>(0 + 0) / 200]\r", + "\r", + "[Stage 533:(72 + 16) / 200][Stage 534:>(0 + 0) / 200][Stage 535:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 534:(63 + 16) / 200][Stage 535:>(0 + 0) / 200][Stage 536:>(0 + 0) / 200]\r", + "\r", + "[Stage 535:(75 + 16) / 200][Stage 536:>(0 + 0) / 200][Stage 537:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 536:(102 + 17) / 200][Stage 537:>(0 + 0) / 200][Stage 538:>(3 + 0) / 200]\r", + "\r", + "[Stage 537:(114 + 16) / 200][Stage 538:>(3 + 0) / 200][Stage 539:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 538:(105 + 16) / 200][Stage 539:>(0 + 0) / 200][Stage 540:>(0 + 0) / 200]\r", + "\r", + "[Stage 539:(67 + 16) / 200][Stage 540:>(0 + 0) / 200][Stage 541:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 540:(59 + 16) / 200][Stage 541:>(0 + 0) / 200][Stage 542:>(0 + 0) / 200]\r", + "\r", + "[Stage 541:(104 + 16) / 200][Stage 542:>(0 + 0) / 200][Stage 543:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 542:(115 + 16) / 200][Stage 543:>(0 + 0) / 200][Stage 544:>(0 + 0) / 200]\r", + "\r", + "[Stage 543:(148 + 16) / 200][Stage 544:>(0 + 0) / 200][Stage 545:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 545:(0 + 16) / 200][Stage 546:>(0 + 0) / 200][Stage 547:>(0 + 0) / 200]\r", + "\r", + "[Stage 546:(38 + 16) / 200][Stage 547:>(0 + 0) / 200][Stage 548:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 547:(58 + 17) / 200][Stage 548:>(0 + 0) / 200][Stage 549:>(0 + 0) / 200]\r", + "\r", + "[Stage 548:(94 + 16) / 200][Stage 549:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 549:(113 + 17) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]\r", + "\r", + "[Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 551:(16 + 1) / 200][Stage 553:>(0 + 0) / 200][Stage 555:>(0 + 0) / 200]\r", + "\r", + "[Stage 551:(179 + 16) / 200][Stage 553:>(0 + 0) / 200][Stage 555:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 553:(16 + 0) / 200][Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200]\r", + "\r", + "[Stage 553:(54 + 17) / 200][Stage 555:>(0 + 0) / 200][Stage 557:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 555:>(8 + 8) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]\r", + "\r", + "[Stage 555:(16 + 0) / 200][Stage 557:>(0 + 0) / 200][Stage 559:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 555:(199 + 1) / 200][Stage 557:(0 + 15) / 200][Stage 559:>(0 + 0) / 200]\r", + "\r", + "[Stage 557:(16 + 0) / 200][Stage 559:>(0 + 0) / 200][Stage 560:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 557:(84 + 16) / 200][Stage 559:>(0 + 0) / 200][Stage 560:>(0 + 0) / 200]\r", + "\r", + "[Stage 559:(16 + 0) / 200][Stage 560:>(0 + 0) / 200][Stage 564:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 559:(29 + 16) / 200][Stage 560:>(0 + 0) / 200][Stage 564:>(0 + 0) / 200]\r", + "\r", + "[Stage 560:(85 + 16) / 200][Stage 564:>(0 + 0) / 200][Stage 566:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 564:>(0 + 0) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 564:(16 + 0) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 564:(149 + 16) / 200][Stage 566:>(0 + 0) / 200][Stage 568:>(0 + 0) / 200]\r", + "\r", + "[Stage 566:(16 + 0) / 200][Stage 568:>(0 + 0) / 200][Stage 569:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 566:(71 + 16) / 200][Stage 568:>(0 + 0) / 200][Stage 569:>(0 + 0) / 200]\r", + "\r", + "[Stage 568:(16 + 0) / 200][Stage 569:>(0 + 0) / 200][Stage 573:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 568:(16 + 2) / 200][Stage 569:>(0 + 0) / 200][Stage 573:>(0 + 0) / 200]\r", + "\r", + "[Stage 569:(42 + 18) / 200][Stage 573:>(0 + 0) / 200][Stage 575:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 573:>(0 + 0) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 573:(0 + 16) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]\r", + "\r", + "[Stage 573:(16 + 0) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 573:(67 + 16) / 200][Stage 575:>(0 + 0) / 200][Stage 577:>(0 + 0) / 200]\r", + "\r", + "[Stage 575:(16 + 0) / 200][Stage 577:>(0 + 0) / 200][Stage 578:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 575:(144 + 16) / 200][Stage 577:>(0 + 0) / 200][Stage 578:>(0 + 0) / 200]\r", + "\r", + "[Stage 577:(16 + 0) / 200][Stage 578:>(0 + 0) / 200][Stage 581:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 577:(184 + 16) / 200][Stage 578:>(0 + 0) / 200][Stage 581:>(0 + 0) / 200]\r", + "\r", + "[Stage 578:(197 + 3) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]\r", + "\r", + "[Stage 580:(58 + 16) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 580:(176 + 17) / 200][Stage 581:>(0 + 0) / 200][Stage 585:>(0 + 0) / 200]\r", + "\r", + "[Stage 581:(195 + 5) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]\r", + "\r", + "[Stage 583:(69 + 17) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 583:(170 + 16) / 200][Stage 585:>(0 + 0) / 200][Stage 587:>(0 + 0) / 200]\r", + "\r", + "[Stage 585:(16 + 0) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 585:(75 + 16) / 200][Stage 587:>(0 + 0) / 200][Stage 589:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 587:(16 + 0) / 200][Stage 589:>(0 + 0) / 200][Stage 591:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 587:(16 + 6) / 200][Stage 589:>(0 + 0) / 200][Stage 591:>(0 + 0) / 200]\r", + "\r", + "[Stage 589:>(8 + 8) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 589:(16 + 0) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 589:(182 + 17) / 200][Stage 591:>(0 + 0) / 200][Stage 593:>(0 + 0) / 200]\r", + "\r", + "[Stage 591:(16 + 0) / 200][Stage 593:>(0 + 0) / 200][Stage 595:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 591:(133 + 17) / 200][Stage 593:>(0 + 0) / 200][Stage 595:>(0 + 0) / 200]\r", + "\r", + "[Stage 593:(16 + 0) / 200][Stage 595:>(0 + 0) / 200][Stage 597:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 593:(39 + 18) / 200][Stage 595:>(0 + 0) / 200][Stage 597:>(0 + 0) / 200]\r", + "\r", + "[Stage 595:(16 + 0) / 200][Stage 597:>(0 + 0) / 200][Stage 599:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 597:(16 + 0) / 200][Stage 599:>(0 + 0) / 200][Stage 600:>(0 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 599:(0 + 16) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]\r", + "\r", + "[Stage 599:(16 + 0) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 599:(169 + 16) / 200][Stage 600:>(0 + 0) / 200][Stage 605:(11 + 0) / 200]\r", + "\r", + "[Stage 605:==> (11 + 0) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 602:======> (102 + 18) / 200][Stage 605:> (11 + 0) / 200]\r", + "\r", + "[Stage 605:==> (11 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 606:============================================> (170 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 607:===================================> (135 + 16) / 200]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 932:====================================================>(197 + 3) / 200]\r", + "\r", + " \r" + ] + } + ], + "source": [ + "if not 'vanilla' in name:\n", + " shuffle_df, dfx=appals.get_shuffle_stat()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "110d231a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:56:11.436348Z", + "iopub.status.busy": "2024-12-06T05:56:11.436046Z", + "iopub.status.idle": "2024-12-06T05:56:19.512226Z", + "shell.execute_reply": "2024-12-06T05:56:19.511740Z" + }, + "papermill": { + "duration": 8.089268, + "end_time": "2024-12-06T05:56:19.514108", + "exception": false, + "start_time": "2024-12-06T05:56:11.424840", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + " application_1733153225851_0048 " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "http://sr213:18080/history/application_1733153225851_0048" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " query time " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 runtimedisk spilledmemspilledlocal_readremote_readshuffle_writedeser_timerun_timeser_timef_wait_timegc_timepeak_memqueryidinput readacc_task_timestagesoutput rowsexecutorscore/exectask.cpusparallelism
real_queryid                     
117.6500000.0000000.0000000.0000000.0000000.0000000.2000006.7900000.0000000.0000000.0300001.340000822.54000013.990000[ 8 10 12 15]1.18000044132
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 01
AQEShuffleRead02
AdaptiveSparkPlan01
ColumnarExchange02
FilterExecTransformer01
FlushableHashAggregateExecTransformer01
InputAdapter02
InputIteratorTransformer02
ProjectExecTransformer02
RegularHashAggregateExecTransformer01
Scan parquet 01
ShuffleQueryStage02
SortExecTransformer01
VeloxColumnarToRow01
VeloxResizeBatches02
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator input row count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 1
ColumnarExchange0.000000
VeloxResizeBatches0.000000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " operator output row count " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 1
ColumnarExchange0.000000
FlushableHashAggregateExecTransformer0.000000
InputIteratorTransformer0.000000
ProjectExecTransformer591.600000
RegularHashAggregateExecTransformer0.000000
Scan parquet 591.600000
SortExecTransformer0.000000
VeloxColumnarToRow0.000000
VeloxResizeBatches0.000000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2EguosaMYe+/GGmvUJBqj0dgSu181xthLEqPYTWLE2HvFgoKdiB0s2GmCSJ33D96d3w5sL7Tcn+vai13mzJkzs1POnnnmHJkgCAKIiIiIiIiIiIiIiIiIiIiIiIiKELP8LgAREREREREREREREREREREREZGxMTCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqoAImPj4dMJlP5CgwMNNqyBg8eLOYbFBRktHz/K6KiosTt5+vrm9/FISIiIiIiIiIiIgDffPON2jbWU6dO6ZTf0qVL1eaX322r165dU1u+wYMHG21ZgYGBem9HItJdUFCQSY5lIlJN8RpKREUHA6OIiChPpKWlITQ0FEuWLEGvXr1QpkwZnRulFAPS9HkpW0ZGRgbCwsKwYsUKDBs2DA0aNECpUqVgbW0NOzs7eHt7o3Pnzli7di2SkpI0llEQBNy8eRO//vorRo0ahYCAAJQuXRo2NjawsbGBp6cn2rRpg59++glv377VaRvGxMRg586dGD9+PBo2bAhra2u9Aidnzpyp03arW7eu2vxevXqF4OBgTJ06FR07dkSVKlXg6OgIS0tLuLq6ok6dOhgzZgzCw8O1LuObN2+wceNGDBw4ELVq1UKxYsVgaWmJ4sWLo1atWhg9ejSuXLmidX6JiYn4888/MXz4cNStWxeurq6wtLSEs7MzqlatimHDhunUoKfrvrdv3z6t8o2NjcVPP/2Eli1bivuhg4MDypcvj969e2Pnzp3IyMjQmI9iQ6U2rwkTJmhVPmPtg6YUGxuLRYsWoX79+ihRogRs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sGrVKhw6dAh37txBYmKipDcSTSpWrIgbN25g8+bN2LVrF65evYo3b97AysoKnp6eaN68OYYOHaq2R2EyjRkzZog9DF2+fBlv376Fu7s7GjVqhFGjRok9qarzww8/oHXr1li+fDnOnDmDV69ewcHBAd7e3ujcuTNGjBiB0qVL49SpU6ZfISVM3T4IZPdKffXqVfz444/YvXs3oqKi8OHDB73zK168OM6dO4dly5bhjz/+wN27d/H+/Xud8jDWtVgZmUyGDRs2oE2bNvjll19w9epVJCQk6LqaRuHo6Ii3b9/i+PHjOHnyJC5fvox79+4hNjYWMplMbH9r164dBg0aBFdX13wpp7EU9PZBUzBFfdDGxgZHjhzBihUrsHXrVty5cwcymQy+vr7o1q0bvvrqK5QsWRIHDx7MgzXUzBjX4sLA0PpgYZOcnIy//vpL/CzvgbGoMmXbjCls374d3bp1w9atW3H16lXxGlqUVK5cGaGhoTh06BCCg4MREhKC58+fIzExEY6OjvD29oafnx9atGiB9u3bw83NLb+LbDDF33vVq1eHv79/PpaGigqZkN+RFUR5LDAwUBx65uTJkzrdIFVm8ODB2LhxI4DsE/XgwYMNLCERERHRf4evry+io6MBAI8ePYKvr2/+FoiIiIqcoKAgDBkyBED2sBf6Bp4QEeWVmTNnikO0zJgxAzNnzszfAhERERERERVihbfLBiIiIiIiIiIiIiIiIiIiIiIiIhUYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOTIBEEQ8rsQqmRlZSEmJgaOjo6QyWT5XRwioiLrq6++wvbt242W36RJkzBp0iSj5UdEhZ+fnx8eP35stPz27NmDJk2aGC0/IiIiyl/8TWKYx48fw8/Pz6h5xsbGGjU/IiIiIiIiIiJjEgQB7969g6enJ8zMVPcLVaADo54+fQovL6/8LgYRERERERERERERERERERERERUwT548QZkyZVROt8jDsujM0dERQPZKODk55XNpiIiIiPLPr9+czu8iEBERERERERFRATBiabP8LgIRERFRvktMTISXl5cYW6RKgQ6Mkg+f5+TkxMAoIiIi+k/rcP67/C4CEREREREREREVAE5Ot/O7CEREREQFhjy2SBXVg+wREREREREREREREREREREREREVUgyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIscivwtARERERJr1nsJqGxERERERERERATfzuwBEREREhQh7jCIiIiIiIiIiIiIiIiIiIiIioiJH58Co9PR0zJkzB61bt4aTkxNkMhlOnTqVK50gCFi7di1q1qwJW1tbuLu7o3PnzkhKSjJGuYmIiIiIiIiIiIiIiIiIiIiIiFTSOTAqOTkZ06dPx/3791GjRg2V6aZOnYovvvgCVapUwfLlyzFlyhRYWloiJSXFoAITERERERERERERERERERERERFpYqHrDI6Ojnj8+DG8vLywc+dOnD9/PleayMhILFq0CFOnTsW8efPE/48bN86w0hIREREREREREREREREREREREWlB5x6jzM3N4eXlpTbN9u3bYWlpiSlTpgAAh88jIiIiIiIiIiIiIiIiIiIiIqI8pXNglDZCQ0NRo0YN7NmzB+7u7nB0dISXlxe2b99uisURERERERERERERERERERERERFJmCQw6tmzZ3j9+jVGjRqFiRMn4o8//kC5cuXQv39/XLlyReV8qampSExMlLyIiIiIiIiIiIiIiIiIiIiIiIh0ZZLAqPfv3yMqKgoLFizAxIkT0bt3b+zfvx8ODg5YtGiRyvnmz58PZ2dn8aVpyD4iIiIiIiIiIiIiIiIiIiIiIiJlTBIYZWVlBQDo3r27+D8HBwc0atQIN27cUDnflClTkJCQIL6ePHliiuIREREREREREREREREREREREVERZ5LAqBIlSkj+yhUvXhyvXr1SOZ+1tTWcnJwkLyIiIiIiIiIiIiIiIiIiIiIiIl2ZJDCqWrVqAIAXL15I/v/69Wt4enqaYpFEREREREREREREREREREREREQikwRGtW3bFgCwbds28X9v377FuXPnULduXVMskoiIiIiIiIiIiIiIiIiIiIiISGShz0wrV65EfHw8IiIiAACbN29GSEgIXFxcMHr0aHTu3Bl16tTB1KlT8erVK3h7e+O3335DZmYmJk+ebNQVICIiIiIiIiIiIiIiIiIiIiIiykkmCIKg60y+vr6Ijo7O9X8fHx9ERUUByB42b8KECdi3bx+Sk5Ph7++P+fPnIzAwUOvlJCYmwtnZGQkJCXByctK1mERERERFRo2NNfK7CEREREREREREVADcHHQzv4tARERElO+0jSnSq8coefCTOiVKlMDGjRv1yZ6IiIiIiIiIiIiIiIiIiIiIiMggZvldACIiIiIiIiIiIiIiIiIiIiIiImNjYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIixyK/C0BEREREREREREREREREVFRkZmYiPT09v4tBRERUqFhYWMDc3Bwymcy4+Ro1NyIiIiIiIiIiIiIiIiKi/yBBEPDixQvEx8fnd1GIiIgKJXNzc7i7u8PZ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enl54fr168ZeLBERERERERERERERERER5ZMZM2bg+fPnYk8uujp69Ci2bdsGPz8/SUBHixYtcOvWLaxevRq//fYbwsLCcOnSJfj7+2Po0KFo3LgxoqOjMXr0aCOtifH5+PgAALy9vQEA5cuXBwDxPro82OKff/7B8+fPMXLkSElQFABx5KWdO3fqXY5du3YBACZPniz5/9dffw1bW1txel7JzMyEubl5rk5VHB0dc/WgFBMTg71796JSpUqSUajkWrduLflctWrVXEFRwP8F3d28eVNpmSZNmiS+t7S0ROvWrZGZmYl79+5pt1JKuLu75wqK0qYs48aNE4OiAKBjx44Asnugktu7dy8yMjIwdOhQSeBW37594enpqXeZi4K1a9fC3NwcK1asEIOigOxAtW7duuHEiRMqh0kUBAFLlizJtW8q69mLCj6j9xhVsmRJ7N27N9f/O3XqhA4dOmDUqFGoWLGisRdLRERERERERERERERERET5ICwsDD///DN+/PFHlClTRuf579+/j379+qF48eL4+++/JUEMQHZgUbdu3bBmzRrUrVsXNWrUwKxZs9CxY0eYmRm9LxCjkw97Jv8rHypQ/jklJQUAcPnyZQDA48ePc/WEk5GRASB7W+nr9u3bsLe3z3W/3tnZGWXLlsW///6LhIQEODs7670MXfTo0QPTp09HgwYN0LdvX9SvXx8ff/yx0p6Zrly5AgAICAiAubm5xryzsrKwbt06bNy4Ebdu3cK7d+8gCII4/d27d7nmcXNzQ/HixXP9DwCSkpJ0Wrecjh8/jiVLluDy5ct4+/YtMjMz1ZYFACpVqqSxLPIgqZxDwpmbm6N69eqIiYkxqNyF1bt37xAZGYlixYphxYoVuaZHRUVBEAQ8ePAAdevWzTW9TJkyubY/FV56BUatXLkS8fHxiIiIAABs3rwZISEhcHFxwejRo8VIxZx8fX1VTiMiIiIiIiIiIiIiIiIiosJn2LBhqFatGr7++mud533+/DnatGmDDx8+4NixYyhXrpxk+q1bt/Djjz9i//79+PTTT3Hy5EmULl0a3377LYYNGwYbGxsMGzYM33//fa6AqoJCJpMBgBjEJf8s/ysPkomPjwcABAcHIzg4WGleyoaY01ZSUpLKXoRcXV0BZAeU5FVg1LRp0+Dq6or169fj+++/hyAIsLS0RK9evbBmzRpJ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E3L2TVeAJCYmwtnZGQkJCXBycsrv4hARERHlmxoba+R3EYiIiIiIiIiIqAC4OehmfheBlPjw4QMePXqEsmXLwsbGJr+LQ0REVGhpe03VNqbIzBSFJCIiIiIiIiIiIiIiIiIiIiIiyk8MjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkWOR3AYiIiIiIiIiIiIiIiIiIiAzVp08fXLx4Uau0FhYWuH//volLRERE+Y2BUUREREREREREREREREREVOjt2LEjv4tAREQFDIfSIyIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIixyK/C0BEREREREREREREREREVKTNdM7vEqg2MyG/S1CoyWQyNGvWDKdOncrvopiUIAj48ccfsW7dOkRHRyM9PR2DBg1CUFBQfhfNJP4r3yvRfwF7jCIiIiIiIiIiIiIiIiIiIr3du3cPQ4YMgZ+fH1xdXWFnZ4eqVatizJgxiImJyZX+1KlTkMlkSl9lypSRpP3w4QPGjh2LkiVLwt3dHfPnz0dWVpZJ1sPX1xe+vr4mybuw27ZtGyZPngxnZ2dMmDABM2bMQNeuXfO7WEVaUFAQZDJZkQ0+I8or7DGKiIiIiIiIiP4fe/cd1nX1/3/88XbEVBwojhTIAWrmiPo4E0eluXBrWqJWfr6miVofycHIDMcnV6aWA8TMSlypNBxAWYqj3JqSQllm5WCjMn5/+Hu/P74FFN4spfvturjwfV7nnNfzNYjrisd1DgAAAAAAFjtx4oQ2bNig9u3bq23btqpQoYJOnz6tpUuXau3atfr+++/l7u6ebVyHDh3k6elp1laxYkWzzz4+PgoNDdXw4cOVlJSk6dOny9raWhMmTCjKS8qzU6dOydbWtqTLKHLh4eGSpK1bt6pmzZolXE3R+6c8V+CfgGAUAADAA+DY+V9KugQAAAAAAAAAyNHTTz+ty5cvq3z5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t5eHh4eOHDli1n/btm3q1KmTHBwcZGtrq1atWmnLli0Frv3MmTN644031KJFC1WuXFk2NjZq3Lix3nrrLaWmppr1Nb5jBoNBq1evliS5urqaPac7t9a7fYzx624seWd++uknvfHGG6pVq5asra3Vtm1bHT169K7nAYoKK0YBAAAAAAAAAAAAAIrN3r17JUnt2rUza2/WrJkcHBxMx6tUqaL69evLz89Py5cvV3JysoKCgtSqVSuzcbGxsYqPj1ezZs3yXYu3t7cp2LRgwQJJt7bvM6pUqdJdxwQGBt7zHKtWrdLAgQP1wQcfyNvbW46OjvL29lZwcLBGjhxpFjCJiIhQjx49lJ6err59+6p27dqKjo6Wr6+vTp8+reDg4Hxfo1Fqaqo6dOigY8eOqWPHjnr++ed16tQphYSEaMeOHfrhhx9UvXp1U38vLy9TMCwkJERxcXHy9/c3HW/evLnFtUjSmDFjVLduXbVr10516tTR5cuXtXHjRj311FP68ssv1bFjR1Pfv/76S+3bt9fvv/+uvn37qn79+vryyy/1wgsv5Dj3N998o65du8rKykovvviibG1ttWzZMlWpUuWedf36669q27atmjRpoldeeUXXrl1TRESEzp8/b3rHZs+eLV9fX1WvXl0DBw6UjY2NvvjiC3l5eSk4ONgs7JTf2jdu3KhFixapY8eOatu2rWxsbHTgwAH5+/vru+++05dffmkKM90eytu8ebOOHDmi8ePHm723d77Dt48xPtfc5PedMRo9erSuXLmiwYMH6+zZs9q2bZu6d++us2fPytraOtfzAUWBYBQAAAAAAAAAAAAAoNicP39eVatWlb29vX788UeNGTNGY8eO1dChQ+Xs7KyjR48qLS1N1tbWWrZsmby8vOTk5CRJcnJyMoWDoqKitHDhQu3atUszZ860OBhlZFxFKCAgIM9j8hKMmj9/vrp27aq//vpLn376qdasWaOePXvKxsZGQUFBunDhgh5++GGlpaVp6NChyszM1N69e9WyZUvTHGPGjNHSpUs1atSobIGyvFq8eLGOHTumkSNHauXKlab2GTNmyM/PT2+99ZYWL15savfy8pKXl5ekW6spxcXF3fPe5MeOHTvUvn17s7Zp06apUaNG8vf3NwtGvfPOO/rtt98UFBQkX19fU91PPvlkjnOPHz9eN2/eVFRUlFq3bi1J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jx5KT09X3759Vbt2bUVHR8vX11enT59WcHBwvq/RyN/fX5J07do1LVy4UM2aNZOXl5fpePPmzc36nzx5Uq1bt1ZycrIGDRqkunXraufOnXrrrbe0b98+ffnllwVajWjMmDGqW7eu2rVrpzp16ujy5cvauHGjnnrqKX355Zfq2LFjtjHjx49Xenq6hg8frqtXr2rt2rXy9PTUvn371KRJk2z9n376aVWrVk3jxo3T8ePHtWbNGh06dEgHDx6UjY2NqZ8l9/306dPq3r27evXqpccff1xhYWGaOXOmatasqVdffdXU7+LFi2rXrp3++usvDRgwQC4uLtq2bZtpFbTCFhoaqt9//12LFi0yCx5a6sUXX1RYWJhat26tf//737p+/bpOnjypd999VxMmTFCNGjWyjcnrfc+v20OIISEhiouLy7Vvft93SyQkJKhLly564oknNH78eH333XdavHixjh07pt27d6tMmf+tVZSf992S2nft2qVevXrpxo0b6tWrl9zc3HT16lVt375d5cuXV0hIiFn/69evq3PnznJ2dtZLL72k3bt367PPPlNmZqbWr19v1nf27Nny9fVV9erVNXDgQNnY2OiLL76Ql5eXgoODswW1LHlnihLBKAAAAAAAAAAAAABAsTl//ryqVq0qe3t7/fjjjxozZozGjh2roUOHytnZWUePHlVaWpqsra21bNkyeXl5ycnJSZLk5ORkCqlERUVp4cKF2rVrl2bOnGlxMMrIGBwICAjI85i8BKPmz5+vrl276q+//tKnn36qNWvWqGfPnrKxsVFQUJAuXLighx9+WGlpaRo6dKgyMzO1d+9etWzZ0jTHmDFjtHTpUo0aNSpboCyvjNcVGxurhQsXqnnz5ne91jfeeEMJCQkKDQ3VCy+8IEmaOXOmnn32WX399dfasGGD+vfvb1EtkrRjxw61b9/erG3atGlq1KiR/P39cwxGJSUl6eTJk6pcubIkqWfPnurTp4/efPNNff7559n6169fX+Hh4aYAl4+PjxYuXKilS5dq4sSJkmTxfY+OjlZ4eLi6desmSRo3bpzc3Ny0evVqs2DUjBkzdOnSJc2fP98UugsICJCHh0d+b9k9ZWZmau7cuXJ0dNSoUaMKPF9CQoI2bNig1q1b67vvvjMLwv3666+m53CnvNx3S3h6eprCUZGRkXcNRuX3fbfE1atX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pUqRHKUnSTVr1tSqVat09epVZWZm6uDBg5xhCQAAAAAAAAAAAAD/49auXStJeuedd8yhKEmaPHmyJGn16tWSpPT0dN2+fVtNmjQx92natKl++eWXJ1aLj4+PDAaDDAaDkpOTlZycbP5sMBhyPVrv/jEGgyHPfwcPDg6WwWDQ7Nmz5ejoKGdnZ23dulULFixQtWrVVL9+fe3atSvHuFOnTmnw4MFydHSUtbW13N3dNXPmTGVnZxd6vSkpKRo3bpxcXFz01FNPydnZWcOHD9fly5dz9A0ICDCvMTo6WpIs1h0QEFDoer766it17txZ9vb2qlixotq2bavIyEiLPllZWfLy8pKtra1Onz5tcS0tLU1ubm6qUaOGfvzxR0lSTEyMucbhw4dLkoYPH25Re27H05nGBQcH69SpU+rdu7eqVaumypUry9PTUydOnDD3DQ0Nla+vr1xcXGRtba0aNWrI19dXcXFxea41JSVF7777rpo0aSJbW1vVqlVLf/nLX7R169YcNTxO7fePMf3ExMTkWcfdu3c1d+5cNWvWTDY2NqpWrZp69Oih2NjYHH3vP85vxYoVaty4sWxsbNSoUSN9+eWXed4DKE2KZMcoAAAAAAAAAAAAAAByc/DgQUlShw4dLNqbN28ue3t78/Xq1aurQYMGmjp1qpYvX66MjAyFhISobdu2FuOSkpKUmpqq5s2bP3YtAQEB5mDTvHnzJN07vs+katWqDx0zbdq0R94jNDRUAwcO1LJlyxQQEKAaNWooICBAYWFhGjFihEUoKTo6Wr169VJWVpb69eun2rVrKy4uToGBgTpz5ozCwsIee40mt27dkre3t77//nt16tRJL7/8shISEhQeHq7du3fr2LFjqlWrlrm/n5+fORgWHh6u5ORkBQUFma+3aNGiwLVI0syZMxUYGKhatWpp4MCBsrW11ddffy0/Pz+FhYWZg1fly5fXF198oRYtWujll19WXFycrK2tJUl/+9vflJSUpMjISD399NOSJFdXV3Od3333nSIjI9WnTx+Leh9W+6VLl9S+fXs1bdpUo0aN0vXr1xUdHa2LFy+a37ExY8aoXr166tChg+rWraurV69q8+bN6tixo/75z3+qU6dOFnP++OOP6tChgy5evKj27durd+/eysrKUkxMjMaPHy8/P78C137/mJiYGO3bt++hz3306NFasWKF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Zyd/f3/dvn3b3N/0HuzcuVN///vfVbNmTVWqVEldunTR0aNH86zd9G5dv35dr7/+upydnWVjY6OGDRua/wyZPO47s379erVv3141atRQpUqV5O7urtdee02JiYk5+t66dUszZszQn/70J9nZ2alatWpq2bKl3nnnnSfyHgBFjR2jAAAAAAAAAAAAAADF5uDBg5KkDh06WLQ3b95c9vb25uvVq1dXgwYNNHXqVC1fvlwZGRkKCQlR27ZtLcYlJSUpNTVVzZs3f+xaAgICzMGmefPmSbp3fJ9J1apVHzpm2rRpj7xHaGioBg4cqGXLlikgIEA1atRQQECAwsLCNGLECF2+fNncNzo6Wr169VJWVpb69eun2rVrKy4uToGBgTpz5ozCwsIee40mQUFBkqTr169r/vz5at68ufz8/MzXW7RoYdH/9OnTateunTIyMjRo0CDVq1dPe/bs0QcffKDY2Fj985//NB95+Lju3r2r3r17a9++fXr++efVvn17HTt2TH/5y19kNBpVpUoVi/7Z2dny8/PTjh071LRpU40ePVo3btzQpk2b5OXlpQMHDqhZs2YWY6KiouTr66vbt2/L19dX7u7uSklJ0Y4dO1ShQgWFh4eb+65Zs0avvvqqqlWrpldffVXW1tbauHGjhg0bpsuXL5tDeyZbt27VsGHD9Oyzz+qrr77Sv//9b3Xv3l12dnZav369unTpotdee81izLhx45SVlaVhw4YpJSVFa9eulY+Pj2JjY9W0adM8n9MLL7yga9euaeDAgSpXrpwOHTqkI0eOaMiQIZIe/5357LPPNHbsWLm5uenll1+WjY2NEhMTtWHDBnXt2lUNGjSw6P/qq69q06ZNateunV5//XX9/vvvOn36tD799FNNmDBBTk5Oj/7CgRJkMBqNxpIuIi9paWmyt7dXampqjv/hAwAA+F/iGrijpEsAAAAAAABAKZA0o2dJl4BcZGZm6uLFi3Jzc5ONjU2O6wkejUugqvxpfCah2O/p4OAgg8Gg3377TcePH9eYMWM0duxYDRkyRM2bN9fJkyd169Yt2djYKCoqSn5+frpx44YkydHRUXv37lWTJk20b98+zZ8/X1FRUZo+fbrGjh1bqLpMu0MlJSXle4zBYJC3t7diYmJyXAsODta0adP09ddfq3v37ho8eLA2bNigbdu2qXfv3po8ebJCQkJ0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AAAAAAAAAAAAeKAqKiq0aNEide/eXWazWV26dNErr7yisrIyu35lZWWaPn26fHx85O3trcTERFVVVTVITV26dFGXLl0a5NmNSX5+vgzDUExMjKNLwR2kpKTIMAylpKQ4uhTgocaOUQAAAAAAAAAAAACAB+qFF15QcnKyHnvsMY0bN045OTlauHChjh8/rl27dskwDElSbGysUlNTNWnSJJWUlOi1116T2WzWjBkzHLyC2/Ly8tSyZUtHlwEAqAXBKAAAAAAAAAAAAADAA5Odna3k5GSFhYUpIyNDzZrd/rV1RESEtmzZorS0NIWHh6u8vFzJyclKSUnRhAkTJEk9evTQihUrGk0wqkePHo4uAQBwBxylBwAAAAAAAAAAAAB4YDZs2CBJmjNnji0UJUlz586VJK1fv16SVFxcrFu3bqlnz562Pr169dKlS5fqrZawsDAZhiHDMFRQUKCCggLbtWEYNR6t9+MxhmEoLCysxmcnJCTIMAwtWbJEPj4+at++vXbs2KHly5erTZs26tq1q/bu3Vtt3JdffqmoqCj5+PjIZDIpKChIixcvVmVlZZ3Waq03ICBAkrRu3Tq7ddR0tF5eXp6effZZeXl5yWQyKTAwUPHx8dWOPLxflZWVWrFihUJDQ+Xu7i53d3eFhIQoKSlJt27dsut79epVTZ8+Xf7+/mrRooXat2+v559/Xt99912158bExMgwDH399deaPXu2OnToILPZrIEDByo3N7fGvj9tl6Ty8nJ5enqqe/fu1e7t3r1bv/71r+Xh4aGWLVsqNDRUaWlpta7V+vfGYrHozTffVGBgoMxmszp06KA//vGPkqSsrCzb+3j++eclSc8//7zde+JoPeDnYccoAAAAAAAAAAAAAMADc/DgQUnS448/btfeu3dveXh42O63bdtW3bp107x587R69WqVlpYqMTFRoaGhduPy8/NVWFio3r17/+xaYmJibMGmZcuWSbp9fJ9V69at7zhm/vz5d51j7dq1ioiI0KpVqxQTEyMvLy/FxMQoOTlZkydPtgv2ZGZmauTIkaqoqNDYsWPl5+ennJwcxcXF6auvvlJycvLPXqNVfHy8JOnatWtKSkpS7969FR4ebrvfp08fu/6nTp1S//79VVpaqsjISHXu3Fn79u3T66+/ruzsbH3yySe2Iw/vR2VlpUaNGqX09HR169ZNMTExcnV11fHjxzVz5kyNHj3aFky7ceOGnnzySZ04cUKDBg3Sb3/7W+Xl5SklJUUZGRn6+9//Lm9v72pzvPjii7py5YqioqJ05swZ7d69WyNGjNCZM2dkNpslSVFRUVq3bp02b96sRx991G58RkaGrly5ov/8z/+0a1+8eLHi4uLk7e2tiIgIubi46OOPP1Z4eLiSk5NrDJlZ/fGPf9TatWs1duxYeXl5KS8vT5999pkkqUuXLrb3dOzYMaWlpWn06NF27+an7wnAnRGMAgAAAAAAAAAAAAA8MOfOnZOnp6datWqlL774QlOnTtW0adMUHR0tf39/5ebmqqysTGazWe+++67Cw8Pl4+MjSfLx8bGFgw4cOKCkpCR9+umnWrBgwX0Ho6ysO/EkJCTc85h7CUYtXbpUQ4cO1eXLl7Vp0yatX79ezzzzjFxcXJSYmKjvvvtOHTt2VFlZmaKjo1VVVaWDBw+qX79+tmdMnTpVK1eu1JQpU6oFyu6VdV35+flKSkpSnz597rjW2bNnq6ioSKmpqXruueckSQsWLNCQIUO0d+9effjhhxo/fvx91SJJSUlJSk9P1+jRo7V161a73cOOHj0qNzc32/U777yjEydOaPLkyVqzZo2t/U9/+pPmzZun119/Xe+88061OaqqqnTkyBG1aNFCkjRp0iSlpqZq//79Gj58uCRp8ODB8vLy0pYtW/TGG2/Yjd+8ebOk2+Epqy+++EJz585Vjx499Le//U1t27aVdDu8NXDgQMXGxmr8+PFq1apVjevesWOHTp06pfbt29vaLly4IOl2MMr6TlJSUmzHSt4paAXgzjhKDwAAAAAAAAAAAADwwBQXF9tCL++9956ys7OVmJgoSbb2oqIiSdJTTz2lkydPasWKFVq9erWOHDmiQ4cOqW/fvpo8ebIGDhyogoICTZs2zTGLuQf+/v6SpM6dO0uSunbtKknq1KmTpB9CMWlpaTp//rxefPFFu1CUJM2cOVOStHXr1gdSc2lpqfbs2aNOnTopOjra1u7k5KTZs2dLkrZt21anOVatWiVnZ2ctW7bMLhQlSb/4xS/k6elpu7bOFRcXZ9fvv/7rv+Ti4lJrLTNmzLCFoiRp5MiRkm4fEWjVrFkzjR8/XqdPn9axY8ds7bdu3VJaWpp69eql//iP/7C1//d//7eqqqqUmJhoC0VJkouLi6ZOnarCwkLt27ev1nXPnTvXLhQlSb6+vrX2B1A37BgFAAAAAAAAAAAAAHCI4cOH6/3331dEREStffz9/TVmzBitXLlSISEhCg4O1vz58zVy5Eg5OTX+vUCsR7ZZv7u4uNhd37hxQ5J0+PBhSdI//vGPajs5VVRUSJLOnj3b4PVK0pkzZ1RZWalHH3202mfct29fSfbhop+ruLhYp0+fVteuXW3H5d1JXl6eXF1d1b17d7t2Dw8PBQQE6NSpUyosLJSHh4fd/cDAQLtrLy8vSVJJSYlde1RUlN59911t2bLFdlTd3r17de3aNc2aNcuur/U9ffbZZ3ZBKumH93On9/TrX//6DisFUN8IRgEAAAAAAAAAAAAAHhg3NzcVFxdLkkaMGKHCwkLbPWu7u7u7JOnkyZN688039dFHHykyMlKZmZny8/PTrFmzNGXKFJnNZk2ZMkWvvvpqtV2HGgvDMCTJFjCyXlu/V1ZWSpKuXbsmSdq+fbu2b99e47NKS0sbslQba3DoxzsiWVnbrO/qfljf+b3ulFRSUqIOHTrUeM+6s1RxcXG1YJSrq6vdtfUzt1gsdu1PPPGE/Pz8tGXLFi1YsEBSzcfoST+8p6VLl9Za753eU8eOHWu9B6D+Nc6fDAAAAAAAAAAAAACAJikgIEBHjx5VSUmJWrVqZWu3WCwqKChQ+/btbbspff311+rbt6/+8pe/2EIvzz77rDIyMjRx4kTduHFDixYtkpOTk+bNm+eQ9dSX1q1bS5J27dplO/LNUazv5cqVK9XuWdusxx7eD+u7PH/+/D3XU1MtkvT999/XuR4nJydFRERo6dKl+uKLL9SzZ0+lpaXpF7/4hbp162bX1/qeioqK7mvO5s2b33edAH6+xr+vIAAAAAAAAAAAAACgyQgNDZUkff7553btx48fV2Fhofr3729rGzdunGbMmGEL0ly/fl3btm3Txo0b9c4772jNmjV6++23tXz58jrX5ezsbDuyzhFCQkIk/XBUW0NxdnaWpDuutXv37nJ2dlZubq6qqqrs7lmPj+vRo8d91+Dm5qagoCAVFBTom2++uWv/Rx55RKWlpTpz5oxde1FRkc6dOydfX99qu0X9XNadoTZv3qxPPvlERUVF1XaLkn54T0eOHKnTfHdzL+8JwN0RjAIAAAAAAAAAAAAAPDDR0dGSpMWLF9uOkZOkxMRESdLEiRPv+gzrkWhW9bELT7t27XTx4kVdvXq1zs+6H6NHj5aPj4/efvttHT9+vNr9M2fO6PTp03Wex9PTU4Zh6Kuvvqq1j6urq4YMGaJvv/1WKSkptvZbt25p8eLFkm6H1urihRdeUGVlpaZPn67y8nK7e7m5uXY7RI0dO1aS9MYbb9gdg7dkyRLduHGjzrVI0i9/+Ut17dpVW7Zs0ebNm2UYhiIjI6v1+/3vfy/DMDRr1iz961//qnb/wIED9XLkYbt27STpju8JwN1xlB4AAAAAAAAAAAAA4IHp37+/fve73yk1NVUDBgzQoEGDdOjQIWVmZmro0KEKDw+vdWzLli0VHh6uCRMmaOLEibp+/bo2bNig2NjYOtc1bNgw5eTkaNiwYRo/frxatWolNzc3W5BLkrKyspSVlWU3Lj8/XwkJCbbrmJgYdenS5WfP7+Liovfff1+jRo1SSEiIRowYoaCgIF2/fl05OTk6fPiwNm7cqMDAwPtc4W0tW7bUk08+qaysLEVFRWnAgAFq0aKFgoKCNGjQIFu/JUuW6PPPP9cf/vAH7d69W/7+/tq/f79yc3P19NNP1zmMNH36dH366afavXu3HnnkEY0YMUKurq46efKk0tPTdfbsWbVt21aSNG3aNK1fv16pqak6e/asQkND9eWXX2rPnj3y8/Ort2MUIyMjtXDhQhUUFGjAgAHq1KlTtT4hISF644039MorrygoKEjDhw9Xp06ddPHiRWVlZembb77R+fPn5erqWqdaBgwYIHd3d/31r39VZWWlunfvLicnJw0aNEhBQUF1ejbw74RgFAAAAAAAAAAAAAA0oI6LnnB0CY3OmjVrFBQUpLVr12rp0qXy9fVVXFyc4uPjq+0GVdPYmTNnauPGjTKZTJo5c6bmz59f55ri4uJ07do1bd26VXFxcaqsrJS/v3+1YNRP5yooKLBrCwsLu69glCQNHjxYR48eVWJiovbv36/09HR5enoqKChIb731lgYPHnxfz/2p1NRUxcbGKiMjQ5s3b5bFYtGkSZPsglE9e/bUwYMHNW/ePGVmZqq4uFidO3fWa6+9prlz5971Pd2Ns7Ozdu7cqVWrVmndunVas2aNDMNQYGCglixZog4dOtj6uri42D777du36/Dhw2rbtq1iYmL0pz/9Sd7e3nWqxWrChAlauHChKioqajxGz2ru3Lnq16+fkpKSlJ6erpKSErVv3159+vRRfHy8vLy86lyLu7u7du3apVdeeUWrV6+27UKVnJxMMAr4GQzLj/eZa2SKiork4eGhwsJCubu7O7ocAAAAh+kS95GjSwAAAAAAAEAjkL9ohKNLQA3Kysp07tw5BQQEyGw2O7ocAAAeWvf6M/VeM0VODVEkAAAAAAAAAAAAAAAAADgSwSgAAAAAAAAAAAAAAAAATQ7BKAAAAAAAAAAAAAAAAABNTjNHFwAAAAAAAAAAAAAAQF1FRUUpOzv7nvo2a9ZMZ8+ebeCKAACORjAKAAAAAAAAAAAAAPDQ++CDDxxdAgCgkeEoPQAAAAAAAAAAAAAAAABNDsEoAAAAAAAAAAAAAAAAAE0OwSgAAAAAAAAAAAAAqAcWi8XRJQAA8FCr75+lBKMAAAAAAAAAAAAAoA6aNWsmSaqoqHBwJQAAPNzKy8slSc7OzvXyPIJRAAAAAAAAAAAAAFAHzs7OcnZ2VlFRkaNLAQDgoWWxWFRYWCiTyaTmzZvXyzOb1ctTAAAAAAAAAAAAAODflGEY8vb21vnz52UymeTq6irDMBxdFgAADwWLxaLy8nIVFhaqpKREfn5+9fZsglEAAAAAAAAAAAAAUEceHh66ceOG/vWvf+ny5cuOLgcAgIeOyWSSn5+f3N3d6+2ZBKMAAAAAAAAAAAAAoI4Mw1D79u3l7e2t8vJyR5cDAMBDxdnZud6Oz/sxglEAAAAAAAAAAAAAUE+cnZ3l7Ozs6DIAAIAkp4Z68NWrVxUTE6M2bdrIw8NDkZGRunTpUkNNBwAAAAAAAAAAAAAAAAA2DbZj1JgxY3T06FG9/PLLat68uRYvXqxhw4bp0KFDJKQBAAAAAAAAAAAAAAAANKgGCUZlZGTowIEDSklJ0aRJkyRJPXv21MiRI/Xhhx8qIiKiIaYFAAAAAAAAAAAAAAAAAEkNdJTerl27ZDKZFBkZaWsbNmyYPD09tXPnzoaYEgAAAAAAAAAAAAAAAABsGiQYdeLECQUGBspsNv8wkZOTgoODdeLEiYaYEgAAAAAAAAAAAAAAAABsGuQovQsXLqhjx46SpMGDB+vy5cs6fPiwvL29derUqVrH3bx5Uzdv3rRdFxYWSpKKiooaokwAAICHRtXN644uAQAAAAAAAI0AvzcDAAD44d9EFovljv0aJBh18+ZNtWjRQpKUn5+vq1evqry8XCaTSWVlZbWOS0xM1Pz586u1d+rUqSHKBAAAAAAAAAAAAB4qHsscXQEAAEDjUVxcLA8Pj1rvN0gwymQy6datW5KkY8eOqbKyUq6urrp586bd8Xo/9fLLL2vmzJm266qqKl25ckWenp4yDKMhSgUAAAAAAMBDoKioSJ06ddK3334rd3d3R5cDAAAAAAAAB7JYLCouLlaHDh3u2K9BglG+vr66ePGiJKlVq1a29kuXLsnX17fWcSaTSSaTya6tdevWDVEiAAAAAAAAHkLu7u4EowAAAAAAAHDHnaKsnBpi4uDgYJ0+fdru2LyqqiqdOHFCwcHBDTElAAAAAAAAAAAAAAAAANg0SDBq5MiRunnzpjZt2mRr+/jjj/X999/rmWeeaYgpAQAAAAAAAAAAAAAAAMCmQY7S+81vfqMnnnhCL730kv75z3+qefPmWrRokfr06aNx48Y1xJQAAAAAAABowkwmk+Lj42UymRxdCgAAAAAAAB4ShsVisTTEg69cuaLY2Fjt3LlTVVVVGjp0qJYvXy5fX9+GmA4AAAAAAAAAAAAAAAAAbBosGAUAAAAAAAAAAAAAAAAAjuLk6AIAAAAAAAAAAAAAAAAAoL4RjAIAAAAAAAAAAAAAAADQ5BCMAgAAAAAAAAAAAAAAANDkEIwCAAAAAAAAAAAAAAAA0OQQjAIAAAAAAAAAAAAAAADQ5DRzdAEAAAAAAACAlcVi0YcffqidO3fqxIkTunDhgsrKymQ2m+Xr66vg4GCNGjVKY8eOlZMT/+cPAAAAAAAAtTMsFovF0UUAAAAAAAAAly9f1vDhw3X06FF5enoqODhY3t7eMplMunnzpi5duqQTJ07o+++/V79+/ZSeni5vb29Hlw0AAAAAAIBGimAUAAAAAAAAGoWoqCh9+umnWrdunYYNGybDMFRRUaHy8nK5uLhIur2jVHp6umJiYjR48GBt3LjRwVUDAAAAAACgsWK/cQAAAAAAADQKn3zyieLi4jR8+HAZhiFJCgkJkb+/v4qLiyVJhmFoxIgRmjNnjj7++GNHlgsAAAAAAIBGrpmjCwAAAAAAAAAkycnJSRUVFXZtXl5eKi0tlbOzs117RUWFnJz4P38AAAAAAACoHcEoAAAAAAAANAqjRo3SwoUL5efnp4iICLVo0UL79u2z63Pr1i1t2rRJixYtUnh4uGMKBQAAAAAAwEPBsFgsFkcXAQAAAAAAAFy7dk3h4eH67LPPZDabFRgYKB8fH7Vo0UK3bt3SxYsXdfr0aZWVlemJJ55QWlqaWrdu7eiyAQAAAAAA0EgRjAIAAAAAAECjkpGRoV27dunkyZO6cOGCbt68KZPJJF9fXwUHB2vkyJH6zW9+4+gyAQAAAAAA0MgRjAIAAAAAAAAAAAAAAADQ5Dg5ugAAAAAAAAAAAAAAAAAAqG8EowAAAAAAAAAAAAAAAAA0OQSjAAAAAAAAAAAAAAAAADQ5BKMAAAAAAAAAAAAAAAAANDkEowAAAAAAAAAAAAAAAAA0OQSjAAAAAAAAAAAAAAAAADQ5BKMAAAAAAAAAAAAAAAAANDkEowAAAAAAAAAAAAAAAAA0Of8fXQQBuAEGMy4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.get_app_info(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1263e7ae", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:56:19.542523Z", + "iopub.status.busy": "2024-12-06T05:56:19.542250Z", + "iopub.status.idle": "2024-12-06T05:56:21.623772Z", + "shell.execute_reply": "2024-12-06T05:56:21.623288Z" + }, + "papermill": { + "duration": 2.097246, + "end_time": "2024-12-06T05:56:21.625534", + "exception": false, + "start_time": "2024-12-06T05:56:19.528288", + "status": "completed" + }, + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
44%_time of scan and filter7.53
36%_time of project6.13
16%_not_counted2.69
3%_idle0.55
0%_time of input iterator0.06
0%_time of aggregation0.03
0%_time to append / split batches0.00
0%_time of rowConstruction0.00
0%_time to split0.00
0%_time to deserialize0.00
0%_time of sort0.00
0%_time of extraction0.00
0%_shuffle write time0.00
0%_time to convert0.00
0%_time to compress0.00
0%_time to spill0.00
0%_time to decompress0.00
\n", + "
" + ], + "text/plain": [ + " 0\n", + "44%_time of scan and filter 7.53\n", + "36%_time of project 6.13\n", + "16%_not_counted 2.69\n", + " 3%_idle 0.55\n", + " 0%_time of input iterator 0.06\n", + " 0%_time of aggregation 0.03\n", + " 0%_time to append / split batches 0.00\n", + " 0%_time of rowConstruction 0.00\n", + " 0%_time to split 0.00\n", + " 0%_time to deserialize 0.00\n", + " 0%_time of sort 0.00\n", + " 0%_time of extraction 0.00\n", + " 0%_shuffle write time 0.00\n", + " 0%_time to convert 0.00\n", + " 0%_time to compress 0.00\n", + " 0%_time to spill 0.00\n", + " 0%_time to decompress 0.00" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2rqDGjmLsxt5i71ETNUajsSV2v2qMsZdEo9hNYsTee0fBTsQOFuw0KVLn/YOX+e3A9kLL/bmuvdhlz5w9szvl7NlnniMTBEEAERERERERERERERERERERERFRIWKS1w0gIiIiIiIiIiIiIiIiIiIiIiIyNAZGERERERERERERERERERERERFRocPAKCIiIiIiIiIiIiIiIiIiIiIiKnQYGEVERERERERERERERERERERERIUOA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOgyMIiIiIiIiIiIiIiIiIiIiIiKiQoeBUUREREREREREREREREREREREVOgwMIqIiIiIiIiIiIiIiIiIiIiIiAodBkYR5SMxMTGQyWRKb/7+/gZ7rUGDBon1BgQEGKze/4rw8HDx/fP29s7r5hARERERERERERGA7777TuUY65kzZ7Sqb+nSpSrry+ux1Zs3b6ps36BBgwz2Wv7+/jq/j0SkvYCAAKPsy0SknPw5lIgKDwZGERFRrkhJSUFQUBCWLFmCHj16oFSpUloPSskHpOlyU/QaaWlpCA4OxooVKzB06FDUr18fJUqUgKWlJWxsbODp6YmOHTti7dq1iI+PV9tGQRBw584d/P777xg5ciT8/PxQsmRJWFlZwcrKCu7u7mjdujV++eUXfPjwQav3MDIyErt27cL48ePRoEEDWFpa6hQ4OXPmTK3etzp16qis7+3btwgMDMTUqVPRvn17VKpUCfb29jA3N4ezszNq166NMWPGICQkROM2vn//Hps2bUL//v1Rs2ZNFClSBObm5ihatChq1qyJ0aNH4/r16xrXFxcXh7/++gvDhg1DnTp14OzsDHNzczg6OqJy5coYOnSoVgN62m57Bw4c0KjeqKgo/PLLL2jRooW4HdrZ2aFs2bLo2bMndu3ahbS0NLX1yA9UanKbMGGCRu0z1DZoTFFRUVi0aBHq1auHYsWKwdraGmXLlkW/fv10GrRNTEzEmjVr0LRpU7i5ucHKygre3t7o2rUr9u3bZ5A2//nnnzoHQr98+RIzZ86En58fihUrBgsLCzg4OKBSpUoYMGAAjh49apA25if379/H999/j6pVq8LBwQEODg6oVq0aJkyYgAcPHuR184hIB/ocB4mIiIyhbdu2+SrwhYgKFmOND966dQvz5s1Du3bt4O3tDTs7O1haWsLNzQ0tW7bEokWLEB0dbcQ1I8r/4uLicOzYMcyaNQutW7eGk5OT1oEu8gFputyI/kvS09Nx8+ZNrF69Gv3790fZsmV16kfrs8+xr06aMMvrBhDR/7G0tMSoUaMk/3v58iX27NmTNw0qBMLDw1G6dGkAgJeXF8LDw/O2Qf9Ra9aswfjx4/Hp06c8bUeJEiVy/O/MmTNo2bKl0mWeP3+O58+fY//+/Zg5cybWrVuHDh06KC3/+PFj1KhRQ+nzr169wqtXr3Ds2DHMnj0bS5YswdChQ9W23dvbGxEREWrL5YWuXbvi4sWLCp+LiopCVFQUrl+/jpUrV6J3795Ys2YNHB0dldY3aNAgbN++HampqTmei46ORnR0NG7fvo1Vq1ahb9++WL16NRwcHJTWN23aNCxbtgwJCQk5nouLi0NcXBzCwsKwYcMGtGzZEps3b1a4rRhbYGAghg4dmmMAKyUlBU+ePMGTJ0/w999/o1atWvjzzz9Rrly5XG1fft4Gs5w/fx69evVCZGSk5P9Z79+2bdswYsQIrFixAubm5mrrCw0NRffu3REWFib5f0REBCIiIhAYGIjOnTtj06ZNKrdBVeLi4jBu3Didll2zZg2+//57JCUlSf6fmpqK+/fv4/79+9iyZQuaN2+O7du3w9XVVafXyU9Wr16N8ePHIzk5WfL/0NBQhIaGYtWqVVi2bBmGDx+eRy2k/Ij9wfxNn+MgERFlCggIwODBgwEAAwcO5A8Devrrr79w5MiRvG4G6cHPzy/HRUWBgYE5vitqysfHJ8eY7cmTJ3N8V8wrxYoVy9G+sLAwnDx5Mo9aRIYeH/z333/Rp08f3Lp1S+Hzr1+/xuvXr3HixAnMmTMHy5cvZ3ahXMZzcf7Qv39/bN++HRkZGXnWhuLFi+fZa//XyAehCYKQhy3579q/fz/69OmjUVIBY8qL33Oo4GFgFFE+Ym1tjZUrV0r+d+bMGQZGUYH35s0bgwRFOTg45BjoUeXq1au4du0aAMDX1xeVKlVSWd7S0hKVK1dGuXLlUKRIEcTHxyM8PBxXr15Feno63rx5g86dO2Pnzp3o0aOH2tc3NTVFpUqVUKFCBRQtWhSpqal4+vQprl27hk+fPuHjx48YNmwYYmNjMX78eJV1GSsg5bPPPkPdunVVlvHy8tK4Pnd3d1SpUgXu7u6wtLTEixcvcOfOHbx48QIAsGPHDjx58gSnTp2CjY2NwjoOHDggCYry9PRErVq1UKxYMcTFxeHChQt4+fIlAGDbtm14/PgxTpw4AVtbW4X1HT16VBIU5erqirp166JEiRJISkpCUFAQHj16BAA4fvw4/Pz8cOHCBY2/xGqyTWb9IK/MoUOH0KNHD6SnpwMAzMzM0KBBA5QpUwbx8fG4e/cu7t+/DwC4fv06mjVrhpCQEI0CXTp37oySJUuqLNO4cWO19eT3oKh///0XX3zxBT5+/Agg85zaqlUrFClSBNeuXUNoaCgA4LfffgMArF27VmV9r1+/RuvWrcVtzczMDC1atIC7uzvu3LkjHlv27NmD3r17Y//+/TAx0T4Z69SpU/Hq1Sutl/vtt9/wzTffiI9tbGxQr149eHt748OHD7h165b4mZ08eRItW7ZEUFAQrKystH6t/GLLli2S/a1EiRJo1qwZAOD06dN4/fo1Pn36hBEjRsDBwQG9evXKq6YSkRZ0PQ4SEREZAwN2C4du3bqhW7dukv/dvXtX58Aof3//HBktBw0alG8Co0qWLJljTDkgIICBUfmEIcYHnzx5IgmKMjU1Re3atVG2bFnY2dkhIiIC586dE+sbPHgwPnz4gO+//z63VpMoX3j+/LlBgqIqV66s1e8Q8sG3ffr00fv1iQqKDx8+GCwoSpt9Tj4A3NXVFS1atDBIG6iQE4goXzt9+rQAQAAgNG3aNK+bU+A8ffpUfP+8vLzyujn/WTNmzBAACGXKlBEGDBgg/Pbbb0JoaKj42QAQTp8+bfDXbdCggVj/kiVLFJYJCgoSvv76a+HEiRNCUlKSwjIPHjwQmjdvLtbl5OQkvH37VmHZZ8+eCQMGDBD2798vxMXFKSzz8uVLoVevXmJ95ubmwr///qtyXQAINjY2gr+/vzBt2jTh8OHDwvjx43U6PmR9HgCEGTNmaLycMt9//72watUq4fHjxwqfT01NFX7//XfB0tJSfN1p06Yprc/Z2VlwcHAQxo4dK4SGhiqsb9GiRYJMJhPrGzt2rNL6ateuLVhaWgpDhgwRrl69KmRkZEiez8jIEDZv3ixpX6dOnVSus/y2q6+UlBTB09NTrK9WrVrCvXv3crRxy5YtkjaOGDFCaZ1NmzY1+L5lyG3QGGrVqiW2pUaNGsLLly8lzy9fvlyyzRw8eFBlfV26dBHLenh45NhHd+3aJVhYWIhlVq1apXWbr127JpiYmIjvn6bv5bt37wR7e3uxfKtWrYQXL15IyqSmpgqLFy+WrPP8+fO1bmN+8erVK8Ha2lpcl/79+0uO2UlJSULfvn3F521tbZUep+m/h/3B/EvX4yAREUlt3LhRPIYOHDgwr5tToI0ZM0YAIJQvX15wd3cX39eNGzfmddNIT4b+njxw4MB8vX3wuJC3DD0+uH//fgGAUK1aNWHNmjVCTExMjjKRkZHC559/LtZnYmIihISEGHS9SDnuc/lD06ZNBVNTU8HX11cYM2aMsHPnTmH79u0GHcvNLiYmRjJmdePGDYO/BilmzM+VNJN17CtZsqTQs2dPYfny5UJISIjg4eFh1H5S7969NfptiEgejxRE+RwDo/TDH8Lyh8ePHwuvXr3K8X9jBkaFhYWJdZuZmQlv3rzRq76EhATBzc1NrHPp0qV61Zeeni74+vqK9X333XcqywcFBQkpKSmS/8kHOOVlYJSmfv31V/F1XVxchLS0NIXlfvzxR+Hdu3dq65MPyjE3NxeioqIUlps/f74QHh6utr7ly5dLtsk7d+4oLWvIL10nTpyQDFo9evRIadnp06eLZYsWLZojyCuLMQKjDLkNGtq+ffvEdlhbWwtPnjxRWG7o0KFiubp16yqt79atW2JAkUwmEy5duqSw3Jw5cyTBU8nJyRq3OS0tTahdu7YAQOjWrZtW7+X69evFsg4ODgoHRLMMGDBALOvj46Nx+/Ib+f29WrVqQmpqao4yKSkpQqVKlcRyP/zwQx60lPIj9gfzJ32Og0REJMUfYw0jJCREMDU1FQAI+/fvF7y8vPJ14Atph4FRlB9pOj545coVISAgQOk4UJaPHz9Kjl3dunUzRrNJAe5z+cOtW7dyBCPK/8ZmjACatWvXinXXqFHD4PWTcgyMynsvXrwQnj59muP/xuxHR0dHC1ZWVmL9169fN2j9VHhpP98HERGRlsqUKZPrc/xu3LhRvN+mTRuNphxTxcbGBh06dBAfX758Wa/6TExMJNPxqauvbt26MDc31+s185r8tFbv37/Hw4cPFZabM2cOXFxc1NYnnw48NTUVJ06cUFhu8uTJGk0HOGLECMl0fIcPH1a7jCHcvXtXvF+5cmWULVtWadn27duL96OiovDhwwejtk1eft4G5ff3fv36KZ268KeffhLnnr969Sr+/fdfheUCAgLEeelbtGiBBg0aKCw3fvx42NnZAchM1a1sG1Rk1apVCAkJgZWVFX755ReNlwOk24yfnx8cHR2VlpXfZpTtc/ldRkYGNm/eLD6eMmUKzMxyzghubm6OKVOmiI83bdokfo5ElP/ocxwkIiIytIyMDIwYMQLp6elo06aNpB9NRGQsmo4P1qtXDwMHDhTHNJSxs7PD8OHDxcdHjx7l92L6T6lRowbs7e1z9TXlxyUHDBiQq69NlNdKliwJb2/vXH3NnTt34tOnTwCAatWqwdfXN1dfnwouBkZRgfD27VsEBARg0KBB8PX1RZEiRWBubg5nZ2dUqVIFw4cPx7FjxzSqy9/fHzKZDDKZDGfOnIEgCNi8eTOaNm0KFxcX2NraomLFivj222/x6NEjtfUNGjRIrC8gIAAAsH//frRt2xbFixeHtbU1ypQpg2HDhuHGjRv6vA0627lzp9hGRbesduvqyZMnmDlzJvz8/FCyZElYWlrCwcEBNWvWxJgxY3Dp0iW1dYSFhWHJkiXo1q0bKlasCHt7e1hYWMDNzQ2fffYZpkyZgtDQULX1ZF83+R/HIyIilL4HgwYNUllvpUqVlC6rz0k/JCQEo0aNQpUqVeDk5AQrKyt4eHigU6dO2Lx5M9LT09XWoWgbDAsLw+jRo1GxYkXY2tqiSJEi8PPzw+bNm/8TX4bT09OxZcsW8bGhvpA4OzuL96OiovJdffmd/PoC+q+zu7u7JIAqIiJCr/osLCxQuXJlg9WnqYSEBPG+k5OTyrLZn/8v7M/qZA+K+/LLL5WW9fLyQr169cTHBw8eVFhOPihOVX02NjaSH0yU1ZddZGQkfvzxRwDAxIkTtT6P6LrN5MX2kpKSghUrVqBx48ZwcXGBjY0NKlWqhClTpuDt27cAAG9vb/E8Fh4enqOOa9eu4f379wAy99POnTsrfb2uXbuKQVNv3rxBcHCwwddJnZSUFGzYsAGdO3eGl5cXrK2t4ejoiGrVqmHcuHFqA9TWr18v6cfExcWpLP/vv//C2toaMpkMpqamOHfunNo2Hj16FEOHDkXFihXh6OgIGxsblC5dGgMGDMCpU6e0Wt8s+vQHw8PDNe5XaVLWWP3BLKdOncKQIUNQvnx52Nvbi+9f7969sWfPHo3qUNbeLJGRkZg2bZr43cfOzg5ly5ZF165dsXPnTpX13blzB2PHjkXt2rVRpEgRmJmZwc7ODuXLl0fnzp2xbNkyvHz5Uut2GpK+x8Hc8ObNGyxcuBAtWrSAh4cHrK2tYWtri8qVK2Po0KE4duyYxsfVwMBA9OrVC6VLl4aNjQ3s7e1Rvnx5DBkyBKdPn9aqXcr2gUePHuHbb79F9erV4eDgAEdHR1SoUAH9+/fHkSNHVNYZHx+PFStWoHXr1vDw8ICVlRWKFi2KWrVqYdq0aXj16pVWbcyP22BAQECOff3WrVsYNGgQvLy8YGVlBXd3d3Ts2FGn/fjy5csYPXo0qlWrhiJFisDKygqenp7o3r07du/erXdbAeDs2bPo2bMnypcvD2traxQrVgw1atTAuHHjJEHTueHdu3dYuHAhmjZtCnd3d1haWqJYsWJo2LAh/ve//yEmJkbl8v369RPXsVu3bmpfb+PGjWJ5Nzc3vHv3TmV5fc/Fyly4cAFjx46Fj48PXF1dYWFhAWdnZzRu3BizZs3CkydPlC6r7HPVpeyZM2dynMMGDx4sPr9p0ya9xn/S09OxadMmdOrUSTwmODk5oUqVKhg9ejRCQkLU1qGsvf7+/uL/b9y4gcGDB6Ny5cqwtbVF0aJFUblyZYwYMULvC5F0sWrVKgQHB8Pc3BxLlizJ9dfPbubMmeL7NnPmTADA+fPn0b17d5QsWVI8zvTu3RtnzpzRqE5BEHDhwgXMmDEDrVu3hqenJ2xsbGBtbQ1PT098/vnnWLRokdp9TJO2CoKA/fv3o3379ihdujSsrKxQokQJ1KlTB9OmTVPY7wcMNz5Y0Bj6XGwoCxYsUDmmrOm2l92bN28wb948NG3aVDyeWltbo1SpUmjevDlmzJihchxdfiz06dOnWLBgAby8vGBjY4O6devi+PHjAIAPHz5g0KBBKFasGOzs7ODv74/r16/r1GZjMvT4YM2aNcX78fHxuXpRXRZD9AcVHVt0LSv/m1BycjImTpwINzc3cbvIOrc9ffoUXbt2RZEiReDg4IAOHTooPL8b61z8+vVrlfucpt9Z5fsSAQEB2Lt3L3x9fWFtbY1y5cph+fLlADKDgmfPng1vb29YW1ujevXq2L59u0avoW9/sLC4d+8egoKCAACmpqbo27dvnrTDEOdiQ4/NAIrHO/755x+0bdsWpUqVgqWlJUqWLIm+ffuqPb/Ljx9mrzP7a8nf5PufirRp00blfqcp+dd7+fIlunfvDkdHRzg7O6NPnz5i/+rUqVNo2LAhbG1tUbx4cYwePVoy1qtMRkYG/v77b/Tp0wdly5aFnZ0d7OzsUKFCBYwYMULrPnpBxmBE0lkeZaoi0tjy5cvFNNbqbi1atFA7XZZ82uRjx44JnTp1UlqftbW1sHnzZpX1ZU+b/M033yitz9TUVFiwYIFW62+IqfR27Nih8n3TNY1hSkqK8O233wrm5uZqP5uOHTsqradHjx4afb6mpqbCt99+q3T6LUEQNKpH0U1detuKFSsqXVaXKVnS0tKEb775RpyqSdmtevXqwuPHj1XWlX0b3L59uySNZPbboEGDtG6vsci3y5BT6R04cECst0iRIsKnT58MUm+HDh3Eevv27at3fWPGjBHra9SokdbLF7Sp9EJCQiSf+cOHD/Wu09nZWazv119/1bu+rCl9AAjffvut0nLy66GvLVu2iHW5ubmpLHvo0CGxrLu7u9JyxphKT5H8MO3R9evXxTaYmJgIHz9+VFlefkq2Tp065Xg+KipK8vmGhoaqrE9+CsaaNWtq1Obu3bsLAIRSpUoJCQkJgiBo917KT+FXv359lWVXr14tlm3QoIFG7TOUiIgIoWrVqkrPR+7u7sKtW7ckqZUVpV6Wn4bzs88+U/u6tWrVEssvWbLE8Cumwrlz54QyZcqoPLebm5sLCxcuVFlPt27dxPL9+/dXWi4lJUUy7cK0adNU1vvixQvB399fbb/oyy+/FJKSkjRaZ0P0B7WZ6k6TssbqDyYkJAhdu3ZVW0/Tpk2F9+/fa/Du5WyvIAjCwYMHBVtbW6X1Ozo6Kq1r6tSpgomJido2mpiYCB8+fNC4jYam73HQmDIyMoS5c+cKNjY2at9HddMkvH37VvDz81NbT/fu3YXExESN2qdoH1i/fr1gZmamtH5V56d//vlHKF68uMr22draClu2bNGoffl1G8w+tcnmzZsFCwsLpe3r2rWrRlPkxsTEiNuzqpu/v7/SaZ/VtTUtLU0YNmyYyvrHjh2r5zukudWrVwsODg4q2+Pi4iIcO3ZMaR2xsbFC6dKlxfJ//PGH0rJPnjwR7O3tBSBzimNV9QqC4c7F8iIjI4XWrVur/ZxNTU2FRYsWKaxDm+l11JXNPh2MNjd14z+PHj1S2X/L+hxGjx4tpKena/T+KRrXmjlzpsrXUNRPN6bIyEhxux4/frz4/7ycSi/79/YFCxaoHEMaPXq0yim2UlJShJIlS2q0nTg6OgobNmzQua0JCQnCF198ofI1FPXTDTk+qEh+nUrP0OfiLIaY1mv+/Pkq26XL+/jPP/+oPY9k3fbs2aOwDvn3XtF52MLCQggKCpJ8V8q6OTk5CS9fvtTp/TAWfccHs9u/f79knTXtgxiKofqD2oxfqisrv/8r2mYcHR2F0NBQoVSpUjme8/b2FuLj4yX1Getc/OrVK5XLarovy+//Xbt2VXj+WLlypTB69GiFr3Pw4EGV9RuiP5ibjDmV3oQJE8R627Zta9C6tWGIc7Ghx2YEQTre8enTJ6Fnz55K22NhYSEcPXpUaV3y/TJtburGF9T18zWVVd7X11fh95HPPvtMuHDhgsLxsx49eqis++7du4KPj4/KdspkMmHs2LEa99GNzVj96Lt374r1mpqaCpGRkQarmwq/nHNQEOUzL1++FLPm2Nraolq1aihbtizs7e2RnJyMJ0+e4PLly2LGiJYtW+LcuXMqp5XJMnPmTFy6dAkymQyNGjVCxYoVER0djRMnTiAuLg5JSUkYPHgwnJ2d0a5dO7X1rVu3TrwavlatWvDx8UFCQgJOnTqFd+/eIT09HZMnT4aTkxNGjBih3xujhQoVKmDUqFGS/508eRJhYWE615mcnIw2bdpIrgxycHBA48aN4e7ujk+fPuHRo0e4du0a0tPTcevWLaV1PXv2TLyfddWru7s7bG1tERcXh9DQUNy6dQvp6elYvnw5YmJisGnTJoV1ZV/Pjx8/itPv2NvbK40erl+/vsr17devH16/fq2wXl0MHTpUsg7u7u5o2rQprK2tERoaKl5lcOfOHTRp0gQhISEoXry42nqvX7+OtWvXIi0tDQ0bNkTlypWRkJCAkydPihHpAQEBaNOmjcosKAWdfMR4z549YWlpqXedJ0+elGSDadOmjV713b17Fxs2bDBYfbp69+4dtm/fjvv37yM+Ph5FihRBxYoV0axZM42ms9NUamoqJk+eLD4uV64cypUrp1edHz58kFz1VqZMGb3qS09Px+PHj7Wu7+LFiwgKCsKrV69gbm6OEiVKoFGjRvD19YWJifrknK1bt4alpSWSk5Px6tUr7NixA717985RLiMjQ3Ll8tdff61R+x48eID79+8jIiICqampKFasGGrVqoVGjRrB2tpaozrys/v374v3PT09xantlKlevbp4/8GDByrrMzMzQ8WKFTWu79GjRxAEQeXVRIcPH8auXbsAAD///DNsbGxU1q9Ix44d8dNPPwEAgoKCcOnSJTRs2DBHuU+fPmH16tXi42+++Ubr19JVXFwcWrRoIWZkkMlkaNiwISpVqoSYmBicOHECkZGR6NatG5KSklTWJf+ZVK1aVe1rV69eXbwKWNFnbCwHDhxA9+7dkZycDACwtrZG48aN4e3tjU+fPiE4OBj37t1DamoqJk2ahIyMDMlxUd66desQFBSEFy9eYMuWLWjfvj169uyZo9z06dPFK6nr16+v8iraJ0+ewN/fH8+fPweQ+ZnUrVsXlStXhomJCR48eIBLly4hIyMDf/75J+Li4nDw4EGV27Mh+4OGZIz+YEZGBjp06CDJqFWuXDnUr18fZmZmCAkJwZ07dwBkZnVp1qwZgoKCtD7OBgUFoVOnTkhLS4O9vT0aN26MkiVLIjk5Gbdu3cLt27eVLrts2TL873//Ex+7u7ujQYMGcHFxQVJSEp49e4bg4GDEx8cjIyMDGRkZWrXNUAxxHDQWQRDQr18/yVXSVlZWaNy4MTw9PZGeno7w8HBcvnwZKSkpKj+PhIQE+Pv7S6ZtrVGjBmrVqoW0tDRcuXJFzFC8a9cuxMbG4ujRo1pdkQpkXm07bNgwABAz17i6uiIhIQHBwcEqj4O//fYbvvnmG3FbcHBwELO+ffz4EZcvX0Z4eDgSEhIwYMAAmJqaKuyjZCko2+Ddu3exc+dOpKSkwNPTE35+fjAzM0NQUJD4HXn37t0YOHAgduzYobSeDx8+oFmzZuK+D2Seg3x9fWFhYYGnT5/i/PnzSElJwZkzZ/D555/j8uXLsLKy0qq93333HdavXw8gs3/62WefwdHREe/evcPFixfFDIy5Ydq0aZLP2MXFBX5+fihWrBiio6Nx/vx5vH79Gu/fv0f79u1x/PhxNGnSJEc9Dg4O2LZtG5o0aYK0tDSMHTsWTZs2zTGldEZGBvr374+PHz8CyJzGuGXLlkrbZ8hzcZbHjx+jWbNm4vkTyJwuokGDBihatChiY2Nx8+ZN3L9/H+np6bmSvatkyZI5znVhYWE4efIkgMyM182bN1e4rHyG3OwiIyPh5+cnyUxTv359VKlSBUlJSTh79iwiIyMhCAJWrlyJpKQkcdvUxuLFi8U+i7u7Oxo2bIiiRYsiOjoaV65ckbzXueW7775DXFwcXF1dMX369Fx/fXWOHTuGK1euQBAEVKpUCfXq1UN6ejrOnTsnjqmtXLkSdnZ2mD9/vsI60tPTJdlZSpcujapVq6JYsWKwsLDAu3fvEBwcjGfPniE2NhZDhw6FIAgYMmSI1u398ssvxfGTatWqoXr16rCzs0NkZCQuXLiA2NhYhcsZcnywoDD0udjQateuneN4ExgYiMjISJ3qCwkJwZdffom0tDQAmX3zRo0awcPDAxkZGXj9+jWCg4Px5s0bAJljSers2rUL/v7+cHd3x5EjRxAVFYWUlBS0adMG0dHRaNiwIcqWLYujR4/i7du3iImJwbp16zBjxgyd1sHQjDE+KP8d2snJCUWKFNG7Tk0VhP7grl270L59e1hZWeHw4cNISEhAbGwsGjdujOjoaLRq1QpFixbFoUOHEBcXh/DwcOzatQsDBw4U6zDWudjW1lZlvbrYvXs3KlWqhPr16+PChQvid5Bp06bh48ePKFOmDJo2bYorV67g3r17AIBFixYp/T3MUP3BwiAtLc0os1YYgq7nYmOaOnUq/vrrLzg4OODzzz9HsWLFEB4ejlOnTiE9PR0pKSno378/Hj58CAcHhxzLDxw4MEcGvFWrVon3s+87WcqXL6+yXR07dszxO4V8vdq6ceMGbG1t0bdvX7x9+1bMYnjt2jV06NABpqam6NatG+Lj43Hw4EEIgoBdu3YhPDxcYfata9euoVWrVmIWNjMzMzRs2BDly5dHeno67ty5g5CQEAiCgGXLluHTp09Yu3atzu3P7+R/+2vRogXc3NzysDVU4ORhUBaRRubOnSuMGDFCOH36tJCamqqwzKtXr4QWLVqIUaITJ05UWp/81QEAhKJFiwoXL16UlImKihJatmwplvH09BSvZM5O/goVAIKlpWWOq1mSkpKE/v37i2Xs7e01jmI1RMYode3WJVp3xIgRkqjcefPmKcws8OrVK2HMmDFCmTJllNbVo0cPYdasWcLt27eVlgkJCRE8PT01vmohizZR7trQp969e/dKtpkff/wxx1Vu586dk2TCURUxLv9ZmpiYCM7Ozjm26Y8fPwrNmzcXy9WrV0+rNhuL/PtgqKw279+/l1z9nf290FRGRobw+vVr4dKlS8JXX30lqbNevXpKj0eqvHv3TggODhYmTJgg2NnZifWVLl1aiI2N1bo+Q2SMUnYzMzMTBg8eLLx69UrrdmVJTEwUwsLChI0bNwqVK1eWXL2wd+9enevNsnbtWrFOGxubHFdvaevIkSOS90BVtjZ17x8AoXz58sLOnTs1eu25c+dKziMTJ04U7ty5I8THxwuvX78Wjh8/LjRp0kQs07FjR5VZDLKf6xTdnJychNmzZwspKSlav1dZ8kN2D/n3rnHjxmrLHzt2TCxvYWGR4/mtW7eKz5cqVUptfQ8ePJC8r6rO74mJieIVQ9nbqu17KZ85wsHBQfjf//4n3Lt3T0hMTBRevHgh7NmzR6hRo4ZYZuTIkWrrNCT5zFxOTk7C+fPnJc/HxMQI7dq1y7FdKsoYJd/H+/HHH9W+9tSpU8XyrVq1MtQqqfTkyRPB0dFRfN2+ffsKb9++zVFu79694lWVZmZmws2bN5XWeebMGfEq2yJFigjPnz+XPH/+/HnxeQcHB5XHrOTkZElGvFq1agl3797NUe7ff/8VqlSpIpZbtWqVyvU2VH/QGFcl6rtMdsuWLZP0t1avXp2jzO7duyVZO1V9J5Envw/UrVtXkMlkwvTp0xVmELp165bCzFvp6elCsWLFxHqmTp2qMIvCp0+fhMDAQKFx48bCu3fvcjz/4MEDYdSoUXrflDHkcdAYsmdFGDt2rBATE5OjXExMjDBz5kzB0tJSaV3jxo0T67G2thYCAwNzlFm5cqXk6m11+5wgSLfnEiVKCJ6enoKFhYWwYsUKhf3Tc+fOKcw8d+XKFUmWqe+//16Ii4uTlMnIyBDWr18vXtHq4OCg9DxnqG3QWOSvmpdvY/araVeuXCkps3//fqV1duzYUSxXpkwZ4cKFCznKPH/+XJI1TJPjgnxba9euLZiamgqlSpVSePV0amqqEBAQIMyZM0eDd0E///zzj+S7woIFC3L0R1NSUoR58+aJ5Tw9PVVmQ5s9e7ZYtn79+jm2mf/973+Sc5eq/q8xzsVJSUmSK7NdXFyEXbt2KSx748YNoXXr1kozORgyY5ShlsmuS5cuknXNvk2npaUJU6ZMkewjmozNyI9rVa5cWbC3txccHR2FHTt25MhwlJGRIezdu1eSvXfLli16n5dUZdqR/x64bt06yXP5JWMUkPk9Onv/Iy0tTZg0aZKkP6Zsm05KShJq164trF27Vnjx4oXS1922bZs4/mFra6twP1LV1rp16woAhGrVqglBQUE5yiYmJgq//vqr8Pvvv+d4zpjjg4KQ/zJGGfpcnJ0hjguK6PM+ymdfbdmypcKxsIyMDOHixYtCv379FPafBEH63nft2lX8/82bNyV9qw4dOojP3bt3T/z+lL2vOX36dL2PM1euXNH4fTD0+GB29evXF+scMGCA3vVpytD9QWNljJLPDLhv3z7JsXbMmDHic0ePHtVqHzLWPqdvv8DDw0P8bSs2NlZybnN3dxePOwkJCULZsmUFIHO8TFG/y1D9wYMHD+q9zy1dulTj99BYGaPktx8HBweNM28bgyHOxcbOGGViYiK0a9cuRxa7oKAgMUMsAGHNmjUar7cxPldd65VfZt++feL/5cdIAQj//POP+Jx831pRXyIqKkrS72nZsqUQERGRo9zFixcFd3d3pf2jDx8+GGSsR5usz8boR6empkqybG7bts0g9dJ/BwOjqNB49+6d+MVd0+mFACj9ghUbGys5wK5fv15hueyBUcqmbElNTRWqV68ultPkhz1ByJ+BUbdu3ZKssybptUNCQnRs6f+R72j26dNHo2XyY2BUgwYNNFoP+SmzZDKZ0mnHsm+Dhw4dUtpm+cEBbaZ4MRb5dhsqMEr+h8vy5ctrvbz8D8eKbm3atNGqAyg/HZKiW926dRUGAmjCmIFRWbeSJUuq/LEgu+zpurPfsgbA9ZWUlCRJSatv0EdGRobQqFEjyeesiqbvHyAdVFFl4cKFalONlypVSliwYIHalLiaBEZl3Ro3bixER0dr+lZJ5IcfseVTVnfu3Fn8/61bt4SaNWsK9vb2wrBhw8TBuBs3bkjWP/vgjPwPoj4+PuL/nz17JjRu3Fiws7MTunTpIk7ZFx0dLanv33//VdrWrIAdExOTHOdFbd/L9PR0YezYsWo/3woVKijtwxhLXFycYG1tLbbhzz//VFguPj4+R5p6RcfDOnXqiM/LD3zt3LlTcHd3F1xdXSU/Ei1ZskRyjM0N8tN+9OrVS2XZnTt3imXVTcsqH+T1+eefiz8exsXFSaYgUjetxqpVq8SyFStWVBjokSU8PFwM7vHy8lI6RYkh+4P5PTAqPT1dsq1OnTpVaVn56SttbW1z/LilSPb9VpepYUNDQ8Xl1U3Lqoo+U0LI35Qx5HHQ0N68eSMJbJs+fbraZZRt0zExMZLjoKIff7P88MMPku1T3TlefnvOuu3evVttW7PLGiwHIEyePFll2QULFohllU3Zaaht0FiyB0apmqZr5MiRkn6SIgcPHhTLuLi45AhelRcdHS2UKFFCPC6oOgYraqujo6Pw5MkTjdbTWLJPwbV27VqV5eXfw+yBJvLS09MlgWMzZ84Un7t+/boYCGBrayuEhYWpfE1jnIvlv1va2NgoDCqWl5GRofS4kN8Do+7fvy/Z7lRNfSM/BYomFyZkP7eYm5sr/JFOmexjHrrclL0nSUlJ4o/AtWrVynEMzk+BUaqmzGzbtq1Yrl+/fnq/tvwPeKrOYcraWrp0aaNOl6rL+KAg5L/AKEOfi7PLj4FR8kEz6o7rqsi/91u3bpU8V7FiRfG5zZs3S57LugjExcVF8n9dp2eSv6nbBow5PihP/mIwAMLly5f1rlNThu4PGiswSj7wNz09XdJvP3funPhcRkaGOMV5nTp11LY3vwZGDRs2TPKc/AVOQ4YMkTz3zTffiM9l7/cYsj+ozdi0sps23xmNFRglH1Se/X3ObYY4Fxs7MMrb21vpRROzZs0Sy8kHtapjjM9V13qzyltZWUnG0i5fviw+Z2lpKbmg6erVq+JzEyZMyFHnxIkTxef9/PxUXuAs/zrZp2VVNI6gy02b85Qx+tHySSccHBxUXoRDpIj6+V2ICggXFxdxOpvIyEjJtGfKVK5cGZ07d1b4nIODA0aOHCk+VpVCP4uTk5PSqY3MzMwwfvx4rerLr5YtWybeb968OQYPHqx2mVq1aun9us2aNRPvh4SE6F1fXsiaeiOLqhTtbdu2xWeffQYAEARBMqWHMtWrV0fbtm0VPuft7Y0aNWqIj+Wn9ShM5FNp9u/f32D1enl54fDhwzh8+DCKFi2qd33Ozs7YunUrrly5ojBFqrF99tlnWLJkCYKDgxETE4PU1FS8ffsWhw8fRrdu3cRyL1++RMeOHXOkqdWWTCbD8OHD8fTpU/Tq1Uvf5mPGjBl48uQJAMDR0RGzZs3Sq761a9fi4sWLADKP17/88ovK8nZ2dhg+fDj27duHZ8+e4dOnT0hISMC///6LxYsXw93dXSy7YsUKLFq0SG0bfvjhBzx8+BBdu3ZV+LyVlRX69OmD3r17q52iz9TUFJ06dcKmTZtw7949xMfHIzk5GREREdi6dStq164tlr1w4QL69esHQRDUtjE/SkxMFO/LT00zZswY3Lp1Cx8/fsT69evF1NbZp9ZMSEjQqL4ff/wRFy5cQHx8PAIDA8VtRF19We7duyduB0OHDtX7vGhiYoKlS5fi1q1bSlOSFylSBP3790enTp30ei1t7d27V5wer0yZMujRo4fCcra2thgzZoza+hR9JklJSRg4cCAiIyPx9u1bjBo1Ck+fPgUg/UyUfR6G9OLFC+zevRsAYGFhIeknKdKzZ0+ULFkSQOY0FFnTSCgya9Ys1KtXDwBw6tQp/PrrrwCAb7/9Vlzfvn37ol+/fipfU75NCxcuVDnltJeXF7p06QIAiIiIwNWrV9XWmZv9wbxw7tw5vHjxAkDm9vXDDz8oLfvVV1+JabwTEhIQGBio1Wv5+vriu+++07qNWSnVAaBEiRJaL58bDH0cNLTffvsNnz59AgBUrFhRo6mUlK1DYGCgeBwsWbKkymmIpkyZAgsLCwCZ+9yFCxe0anenTp3EfVZTly9fFvft4sWLq5yGE8icksDc3BwA8PfffyssUxC2QXlTpkxR+tykSZPE+xcvXlQ4rZf8MfDHH39EqVKllNbn5OQkHiMTEhJw6NAhrdo6c+ZMlC5dWqtlDG3Xrl3iFFw+Pj4YMWKEyvLjxo0T7yvbZoDM/szWrVvh5OQEAJg7dy6CgoLw6dMn9O3bV5xCaenSpSqnNzbWuVi+nilTpqid0lcmk+W7Y5um5Mcb6tevr3LKQvnppy5cuICIiAitXuubb75B3bp1tW+kEcydO1ecTn358uUaTYWeF0xMTCTHpuzk+yaBgYHidJK60nf87ddffzXIuIkyhWF80Bjn4oJAvr9gqKlvsp8jvby8xPtlypSRPOfh4QEgczpcVd/DcpMhxwfj4+Mlv2f07t1b5XThhlZQ+oPy24yJiYm4XQDSbUYmk4l9PE1+a8qvdNlHgJzrbKz+YEH17t07HDhwQHycn6bRA4x/LtbFmDFjYG1trfC5jh07ivdDQ0Nzq0lG4eHhAVNTU/Gx/D7n4eEBMzMzyeMs2fe5pKQk/P777+Lj5cuXi30BRerXr48GDRoAyPweKz89dmEhP/Vs9+7dlW5PRMqYqS9ClH+8efMGly9fxr179xATE4PExETJD7nyB/rXr1+r7YArmyc5S9u2bcUf269duwZBECCTyZSWb968eY4fSLPXl+Xx48f48OEDnJ2dVbYhP8qaExcAhg8fbtC6Hzx4gKtXr+LJkyeIjY1VOphTUL+MBAUFiffLlSuncnAXyOwQXrt2Lceyyiibu1z+NW/dugUgs/Ne2Ny4cQM3b94EkPnlVZfAqC+//FIcNIiLi0NoaChu3LiBiIgI9OrVCz/88AMmTZok6dyq0rZtW/FYFB8fj4cPH+Lq1av48OEDhg0bhuvXr2Pu3Lm52okbO3aswkG3YsWKoU2bNmjTpg22bNmCgQMHQhAEPHv2DHPmzMHSpUvV1l26dGlxPu/U1FS8evUKFy9eRFRUFH7//XeEhYVh5cqVYiCrLo4dOyYJXPr999/h6uqqc323b9/G999/Lz6eN2+e2h89nj17hiJFiuT4f+XKlVG5cmUMHDgQ7du3x5UrVwBkBkH2799f5Xnp+PHjmDJlCkJCQmBtbQ0/Pz94eXkhMTERQUFBePToEX7++WcsW7YMy5cvV3n83bVrl8L2eXp6om/fvujVqxdGjx4tzjd+8OBB7N27V2mwcH6W9SM2APGHZQBIT09XWD77eTrrh2tj1Zfl66+/RmpqKhwdHTFv3jyFZbT1559/YsaMGbh//z4cHBzQtGlTuLm5ITY2FhcuXMDLly/x008/4ZdffsHmzZslgwzGlLXdA0Dr1q1V9p3atWun8kceQPFnIggCMjIyJOWy+oTyn4myz8OQjh8/Lm4f/v7+ao9HWT+avnz5EomJibhz5w58fX0VljUzM8P27dvh4+ODjx8/YurUqUhMTERAQACAzGPu6tWrVb7e06dP8eDBAwCZwWhffPGF2nWqU6eOGMR/5coVcWBFnjH7g/mNfB/Mz89PZWCZmZkZ2rVrhz/++ENcVpsB0sGDB6vcZ5SR/2EpNDQU9+/fV9vPVMTf399ogbLGOA4a0rFjx8T7Q4YM0bivp4j8NtO2bVuVdTk5OcHPzw8nT54Ul1UW8KrI0KFDtW7fkSNHxPudOnVS+R0WyAwIr1SpEu7cuYMHDx4gKioqxyC7obbB3ODi4qIyKMPb2xuVKlVCWFgYBEHA1atXJQPWnz59wpkzZ8THPXv2VPuaderUEe9fuXIFvXv31qitZmZmGDhwoEZljUl+m9FkfStUqAAHBwfExcWp/R7r6emJ33//HT179kRaWhr69euHZs2a4d69ewCAbt26YdiwYSrrMMa5+PHjx+KFGDKZDF999ZXKOgs6+c+pffv2KstWqVIFZcuWFQOKrl69KvnBRx1tj1sBAQFi38eQwsLCxIDd3r17o1GjRgZ/DUPx9fVVGUTSuHFj2NnZIT4+HgkJCbh7967kYpjsMjIyEBwcjOvXryMyMhJxcXGSIJGsH74B7cffXF1d0aFDB62WUaSwjw8a41xcELi5ueHZs2cAgH/++UejiyvUyQquzSLfV88+LpL1nCAIiI2NFcflw8PD9W6HOrkxPjhy5Ejx3OXh4YEVK1YYpO2aKij9QV22Gfmgr4JGl/UFcq6zIfuDM2fOVBsQmt9t3bpVDOIvXbo0GjdunMct+j+GOhcbmqrfrsqVKyfeL+i/Wxlqn7ty5QpiY2MBZO5PPj4+al+7Tp06YmKGK1euiBdReXt7F9iLorO8ffsWBw8eFB/nt2BEKhgYGEUFwv379zFx4kQcOnRI6Q+T2WmSIUDdD99VqlQR78fFxeH58+fw9PTUub7ixYujaNGiiIqKApD5BUGbQe/84PXr15IrZg3V4Tt8+DB+/PFHXL9+XaPyuZEBwhiyBncBSLI3KSMfPKJJhqfsV3lkZ2trK96Pj49XW19BI58tqkmTJjpdaTVx4sQc/7t37x6++uorXLx4EdOmTcPly5exe/dulRH6WRQN+j5//hxjxozB3r178euvv+L8+fM4ceIEHBwctG6vLhQFzGTXv39/3Lx5U8xOsm7dOixYsECSQUeRqlWrYuXKlZL/paSkYM2aNZg0aRLOnTuHevXq4cCBA/j888+1bvv9+/fRq1cvMSBizJgxGn0ZV+bt27fo3LmzGDzRsWNHhdtAdureQ2dnZ+zevRvly5dHQkICPn36hN9//11p9omlS5di/PjxEAQBbdq0QUBAAIoXLy4ps3XrVgwfPhxJSUkYMWIEHBwclGbfUtc+U1NTrFy5EiEhIWLw5fLlywtkYJT8NpmSkiLeX7p0KQYNGoSIiAj06NFDzKiTfUA9+6Cjsvpmz56NR48e4e7du2jevLkYTKeuPiDzx5yzZ88CyLzCvlixYlqtoyLjxo0TgxUHDhyI5cuXS44h6enpWLp0KX744QfExsaie/fuOHnyJPz8/PR+bXXkr+yS70spUrFiRZiZmam8WlfRZ2JjY4N169Zh0qRJyMjIwPTp08VzoPxnkhtBp/IZlSIjIzF69Gi1y9y/f1+8//LlS6WBUUDmuX3VqlUYMGAAUlJSxONIVtCUunOHfPssLCw0ykYk3+eQ/2Esi7H6g/mVsftv8nR9L0uXLg0fHx/cvHkTKSkpaNy4MUaOHIkOHTqgVq1akisS84IxjoOGFhwcLN7Xd5vWZZvJCozSdpvR5Yd8+ePC3bt3NTpuvX//XrwfGRmZ48fY/L4NyqtSpYraAMQqVaogLCwMQOZ5TT6j6q1bt8TzkZmZmUaBfllZ5wDFx1VV7dCk725s8tvM2bNnNVqHrLGb2NhYxMfHw87OTmnZHj16YMiQIdiwYQMePXqER48eAQBKlSqFdevWadU+Q52Ls/rIQOYPNdn75oWNLsetrMAobY5bjo6OqFatmvYNNIKvv/4aKSkpsLGxwc8//5zXzVFJ3XijmZkZKlSoII6phYaGKgyMSk9Px4oVK7B48WLJcUkVbcff6tevr1dw8X9lfNAY5+KCoGvXruL32BEjRuDSpUvo3r07GjduLBmz1Eb2oDL5C5yyPyc/jqdvZjVtGXt8cNGiRdi2bRuAzPfgr7/+yvULsgtKf1CXbSa3txdDMtQ+Yuz+YEEj/zvEgAEDdLrAyVj0PRcbi6rfrgrT71bG2OeSk5M16ivIByFq872zINi6das4fuzt7V3gflun/CF/9ESIVDh+/Dg6duwoyRagCU3S4aob2LK3t4eVlZX42lFRUSoDozQZKHN1dRUDo7L+FiRv374V75ubm0umi9LV3Llz8dNPP2m1TH5Jd6yt6Oho8b4m24t8GflllVH35UK+g54900ZBl5KSIkn/b8iI8cqVK+PEiRNo0qQJrl27hgMHDmDBggVab7dZPDw8sHv3bnTp0gX79u3DtWvXMG7cODG7RH4xYcIEMTAqMTERly9flqSs15SFhQXGjh2LUqVKoXv37khKSkKvXr0QFham1UDe27dv0a5dO3FfaNOmjdg+XSQmJqJDhw7idFS+vr7Ytm2bwb7Iurm5oW/fvmLK25MnTyoMjLp8+TK+//57CIKAChUqYPfu3QqDOfr164eEhAQxLfq3336LLl26qL2yVBlTU1OMGzcOffr0AQBcunQJnz59Uhv8lt/Y2NiI9+X7CnXq1MHdu3dzlM/+JTP74Kuy+sqUKSPJhKRpfVFRUWKwXaVKlTT6EqvOn3/+KQ4mN2nSBBs2bMgx7YepqSm+//57vH//HgsWLEBqaipGjx4tZg00Jvn+jbqMDebm5nBycpIM8men7DMZOHCgwiwa8p+JroPr2njz5o14/+7duwq3O1U0ufK0f//+OHz4sGQq5unTp2s0LYJ8+6Kjo7Fq1Sq922eM/mB+Zuz+mzx9psv6448/0Lx5c8TExOD9+/eYO3eueNV5jRo1UKtWLTRv3hzt27fX+dyhC2McBw0tLi5OcnzRdxqT3NpmHB0ddfpRVP64cOnSJVy6dEmr5ZUdt/LrNpidpt/bs2T/3i7//qWlpRnkuKpMXk+hl0V+nY8ePYqjR49qtXxMTIza76rLly/H+fPn8fDhQwD/N82eJoFhxjgXy5/r8mLq89yWW8ctb2/vfPHD4ebNm8XMb1OmTFE5HWZ+oO9xC8gcM+nSpYvW03lqO/6mz3HrvzQ+aKxzcX43c+ZMnDx5Enfu3EFqairWr1+P9evXw8TEBJUrV4aPjw/8/PzQvXt3jYN6sv/4Lx98o+q5rEwveclQ44N///23JBPzhg0bcnUKPXkFoT+oyzaTH7YXXRlqH8mN/mBBERISgjt37oiP81vmmvzyHSI7VZ+/fP+woGc2MsY+FxERYdTvnQWBfDBi//7988V3Cip48ufE6UT/34cPH/Dll1+Kg9Rubm5YtGgRbt26hY8fPyIjIwOCIIi3pk2bistqcvLU5Mdf+TLqrkIydH350cePH8X7hvix8dSpU5JBjzp16mDTpk149OiROFWi/K2gk//MNdle5IMjNImU/y93Bvbt24cPHz4AyHzfevToYdD6raysxDT7QOY83doGbMozMTHBsmXLxMebNm3Kd1H8bm5uKFu2rPg4ayomXXXr1g3+/v4AMlPianL1d5aEhAS0b99eTAleu3Zt/P333zpfbZaeno5evXqJV154e3vj4MGDBv+CLp+dR9n7t3DhQkkGLFUZboYOHSpm2Xj37p3Wg9qq2pecnIyIiAi96ssL8umJVQXXZJFPx2xhYZHj/danvuzLA5k/tGTVs3TpUo0yzakzf/588f7EiRNzBEXJmzhxovil+/bt27hx44ber6+Otuc6dWX0+Uyyfx7GIN830oWmP+Zkv7JO04EuY7TP0P3B/M7Y/Td5+mSPrFWrFm7evImBAwdKAgqTkpIQFBSENWvWoHv37ihXrhxOnTql8+toyxjHQUPLvp/ou13n1jaj6/ZirONWft0Gs9P3e3tuHfcB/Y4JhpQb62xtbS2ZdtrS0lLl1GHyeK7TX34/bhlSbGwsJkyYACDze2DW/fzMEOONc+fOlXx/7NatGw4cOIDIyEgkJydLxt5Onz4tltN2LE7Xz/i/Nj6Ym+eS/MTR0RGXL1/G9OnTJcf8jIwMhIaGYtu2bRg5ciQ8PT0lY2bGkF+2I33HB8+dO4f+/fuL6zN//nz07dvX4O3UVEHpD5J62feR/+pxSxH5AI1GjRqpncUjt+WH/pYi/+XfrjTBfU654OBgycUv+S0YkQoOZoyifO33338XrzwrX748Ll26BBcXF6Xltf3hQZOgBvky8p353KgvP7K3txfvGyKwa+HCheL97t27Y+fOnUrTfBb0FJqA8qwXymRN7wX8NwZj9bFhwwbxfpcuXSTbqqH4+fnB2toaSUlJiImJQXBwsF5TrXh7e6NixYq4f/8+0tPTcfr0aXG6r/yiePHi4hQJhshy17p1a/HK3OPHj0uuaFMmLS0NPXr0EKezKFeuHA4dOqRXENPXX3+N/fv3AwBcXFxw9OhRjX940Yb8lb2K3r+MjAxx6hwAaq/oMzMzw2effSYOaAcHB4tzhevbPmVtzO/kg/c0GTyULyO/rKL/vX79GhkZGSoDj+Trs7W1lQzuAv+XwtjCwgJLlizBkiVLFNaTNWUMkBnA1KZNG/HxkSNHxPtv376VZH1St80ULVoUFStWFKc4CQ4OVjltmyHI/1Cmbd9IkbJly+LEiRMADPMZG5r8+Wbx4sUYP368wV/j7NmzkoA4ABg1ahQaNmyodgBOvn0dOnTAvn379G6PofuD2siLjJe52X9TdbzRhJeXFwICArBmzRpcuXIFISEhOHv2LM6cOSP2pV+8eIF27drhypUr8PHxkSz/8OFDg/wIJT+trqGPg8aQvd+YkJAAR0dHnevLrW1G1+1Ffn3/+ecfdO3aVad6FNF3G8wN+n5vl3//qlevjtu3bxuucdnoe0wwFHt7e3FsJiQkBLVq1TL4a8ybNw/nz58XHyclJaF37964fPmyZPoJZe3LYqhz8X/xXJf140t+O25t3bpVYeZWbdSvX1/8rv306VMxkF4mk6mcTlz+Sv3Fixdj586dAICWLVuKU2vnBn2PWykpKWLGWQBYtmwZvv32W6V16TP+putx6782PmjMc3F+Z2tri1mzZmHGjBm4efMmrl69isuXL+P48eN49eoVgMwM39999x0sLS3FrNnGNGPGDPFiS131798f9erV02lZXccHQ0ND0alTJzFr8pgxYzB58mSd2mBIedEfLGwzI+RHhuwPHjp0SO+LPcuXL4+xY8fqVYcukpOTJbNWKMpkntdy4zsE9znjk+8rjBkzBsuXL9e5rqioKIUzWWhr9uzZeTKVr/xvfw0bNkS5cuVyvQ1UODAwivI1+R+LZ86cqTIoCtB+zlT5AQ5FPn78KBlYUJfCXV19gDQduyYp4fMb+dTcqampiIyM1Hn6lPT0dDFAQiaTYenSpSrnPn7x4oVOr5OfyH/mr1+/VltefpsqiNtLbomMjMSxY8fEx8aKGDcxMUGRIkXEQWBDbJPyqcHz4zaemJgo3jdEcJ626ysIAoYOHYrDhw8DAEqUKIGjR4+qnZ5LlenTp4vZquzs7HDo0CFUqFBB5/pUUff+vX//XjKoq0l2G/ljgSbZczRtH1AwAzArVqwo3o+IiEB8fLzKoDn5q0vkl1X0v7S0NNy/fx+VK1fWqL7y5csrvfopJSVF4zTj0dHRSsuGh4dLHuf2NqMJ+dfLnlEru9TUVLXTr8h/JqGhoWpfX91nbGjyxyP5fp6hREVFoV+/fuKg0+eff45Tp04hLi4Offr0wYULF1RmzzNG+wzZHwSkg3bqrtzW94o5XRTE/pu1tTWaNWuGZs2aYcKECUhOTsb69esxefJkxMfHIzk5GbNnz8bu3bsly718+VLr9OyKyAdGZTHUcdAYHBwcJFOoh4eH67VN5/dtxtjHLUD3bTA36Pu9PTfev/zG1dVVPF8bY50vXbqEWbNmAcjsj1atWhVXr17F9evXMWXKFCxevFht+7IY41yXvf+li4Jwrst63fx23Dpx4gQ2bdqkVx3x8fEKgwyePn0qTq2ujvw0jdkvhjA2fY9bV69eFT/fChUqqAyKAnJ/bOK/OD74XzyXZGdiYoJatWqhVq1aYvDTwYMHMW7cOHFa1enTp+Orr75SuT0YwqZNm/TOoF2nTh2dA6MA7cfLnj17hjZt2ohTJfXq1cvoWba0pW9/ML+fO/9rDNkfvHr1qt7fO5s2bZongVF79uwR3wcrKyv07Nkz19tgLNzn8hdD9hXi4uIMMtYzYcKEXA+M+vTpE3bs2CE+ZrYo0kf+uPSMSAn5QCd1EehPnz7VaPBGnvwPZ4pkZVcAMgfnPD099arvzZs3kmwcVapUUdtG+R+68kMUdokSJVCqVCnxsfwVndp6//49UlJSAGSe5EuWLKmy/OXLl7V+jfyWnlP+M5efh1oZ+auPNdle/qs2b96M9PR0AJnTv7Vo0cIor5Oeni7Zhy0tLfWuU75Ta4j6DCktLU2SvUGfHwizaLu+P/zwAzZv3gwgMwDk6NGjeqUnXrVqFebMmQMgM3NFYGAgPvvsM53rU+fevXvifUXvX/YvmZrM/S0fRKJq2j1NyLcPgFGyZhlbtWrVxBTRGRkZ4vSIyly6dEm836hRoxzPFylSBJUqVRIfqzv3qKvP0PJ6m9GE/PlKXSBTWFiYePxWpmHDhuL9W7duSTIUZJeQkCA5d+bGZyJ/DMnKjGNIw4YNEwfG+/bti6NHj4oD7kFBQWqv+JJv361bt8SrifVhyP4gIM1qoC4DQFYWQ23o2x8sDP03S0tLjBo1Clu2bBH/d+7cuTxsUf5Tp04d8b6+23R+32aMfdxSJD9tg//++6/agX75sYDsn0nNmjXFDEZv3rwpkFMRa8uY20xsbCz69u0r9geWLl2KXbt2icHfS5YsURsoaYz2ydf56NEjrcebsuO5jvShbrwxLS1NMnV79s9EfnxVk+yxuoy/6SM3xgcBw4+x6lNfbpyL89uYsia++OILnDlzRvze+u7duxzjFoWVNuNlHz58QOvWrcXvia1bt8bmzZvz3Th4dtr2B4197jS0/P7+6ysvvkPkR/LT6HXs2FGvTMP5TUHb5wo77nOZ9uzZI45/W1pa4ssvv8zbBlGBxsAoytfkI5TVZTiQ75BoSl26zqwMJUDmSUhdCsqTJ0+q/LFJvj5vb2+NMp7Id6xyI8uDJlq2bCnez8q6ogv59zMmJkbtD6O6fMZWVlbifVU/pOYW+SuHHj16hPv376ssLz/dTd26dY3WroIuICBAvN+vXz+jXUl28eJFSRY5b29vveqLiIiQBB7pW5+hHTlyRPwSJJPJ4Ofnp3ed8pkA1a3v4sWL8csvvwDIDOY4cOAAatSoofNr//333+KVsSYmJti2bZvRguiy7Nq1S7zfpEmTHM+7uLjA3NxcfCwfZKNIeno6goODxcfqAna1aV/lypVRrFgxverLC+bm5pLP8a+//lJa9tmzZ5JpONq1a6ewnPz/VdWXlJSEAwcOqKzv5s2bEARB7W3GjBniMk2bNpU8Jy978Jq6bSYmJkZyrtF3m9GE/PR+x44dU/njs3zfSJnPPvtMzBqanJyMvXv3Ki0bGBiI1NRUAJlTRdauXVvTZuusRYsWYp/m3LlzBh0cWrNmDQIDAwFkTkewatUqmJmZYevWrWKGt4ULF+LUqVNK6yhbtqw4pWD2q6z0Yaj+IJAZ+Jp1LIyKilI5jYV8hkhN6dsflO+/nT9/HrGxsUrLpqWlSbbr/NZ/a9WqlXhf0RWe/v7+Gh2z1N3kGfo4aCzy2/TGjRvVfjdRRX6bOXz4sMq6oqOjceHCBfFxbmwzrVu3Fu/v3r0bcXFxRn/NLOq2wdzw/v17lYHU4eHhCAsLEx9n/0ysra0l/WJdvqcWNPLbjPxFKYYwYsQIMSNT586dMWzYMHh4eGD16tUAMoPCBw4cqDJjjjHOxWXLlhUvyBAEAevXr9erPvl+dlYmFGXy+lwn379VJDQ0FE+ePBEfG/u4FRAQoPd5SX7MwMfHR+PlvLy8xOU2btyosL7ccOPGDXGKMUUuXLggfne3trZG9erVJc9rM74aGxsr9j9zS26MDwKGH2PVp77cOBfnxzFlTbi7u6NatWri49zoL4SHh+t9nBk0aJDOr6/N+GBCQgK++OILsa/SoEED/PPPP5KxpfxO0/6gpufO5OTkfHHRR377HcLQDNkfnDlzpt77XFamwdz04sULHD9+XHycH6fR04exx2aMoTDvdw0aNBCn0wsPD9drm/f29jbIWE9e/H6VPRhRk9kTiJRhYBTla1k/4gCQdDiyCwsLU5taXdlye/bsUfhcXFwc1q5dKz7u3bu32vpiY2OxZs0ahc+lpaVhyZIlWtUHAOXKlROv8Hnw4EG+SK8sn6L05MmTGg1IKMoY4ezsLH5JV/cFZvPmzTpduV20aFHx/Xv37p1GmTWMydvbW/KD8ezZs5WWPXz4sCQAok+fPkZtW0F18eJFyY/+2qbSVDconSU1NRVTp04VH5coUQI+Pj461wdkZkPKYmFhgc8//1zjZXWl6T7w8eNHTJw4UXzcvHlzFC9ePEe58PBwpKWlaVTnoUOHcPr0afFx27ZtlZbdvHmz+Prm5ubYtWuXXplfTpw4IZmKau3atejevbvW9aSnp6u9YibL+vXrERISIj7u27dvjjKmpqZo3Lix+HjFihU5preTt3nzZsl5QFFgl6af8e3bt8UfnJS1r6CQH4DcsmWL0swNc+fOFX9gr1u3rtKr2wcOHChe6Xfs2DGlV+UsWbJEHMTz8PAweqAdkBnYVLp0afHxokWLVF79u2TJEnGwytTUFP7+/sZuIjp37iwOTDx+/FhpWvyEhASsWLFCbX0mJiaSY/v8+fMVDsClpaVhwYIF4mP5z9GYvLy80LlzZwCZV2IPGzZMDM5SJT09HTdv3lT6fGhoKL7//nsAme/B5s2bxX5TuXLlxH5lRkYG+vfvr3LASr7vNmnSJI2nn5Y/hqmqU5/+IJB5Nbv8lKbKtplnz55Jri7WlL79wSZNmoiZC5KTk/Hzzz8rLbtu3Trxh0tra2t06dJF6/bqIjY2VqPzsfw2py4bw3/NiBEjxGPX/fv3VfbTsyjbpuWPgy9fvsSGDRuU1rFgwQIxS0apUqUUBlIbWuPGjcWMzHFxcRg1apRGAWjJyclK17mgbYPz589X+pz8Pt6gQQOFg7/yx8Cff/5Zkj1Hlbt374qfd0HSs2dPMTj7yZMnarMVZomLi1P5/WjDhg34888/AWR+v5IPtO3du7f4HfjNmzcYOHCg0u3UWOdi+enG5s+fr9GUvsrKVK1aVbx/584dSXYfef/884/aC6gUkb/wTlndqsiPUV25ckXlGJz88VHZPkKGJQgCFi5cqPR5+eNW586dc2SJlR9fDQkJkWTCzm7cuHG5HriaG+ODACSZgeWDknWlT33GOBeral9QUJBGx0VjSktLU3mBQZbExETJuaOg9lmNMT6YmpqKbt26iWMU1apVw8GDB8WLZvKaofuD8ufOU6dOKf0et3LlSo22LWPT91yc3xmrP1iQbNq0SRyDK168uCRYrDAw9tiMMRTm/c7GxgZfffWV+Pibb77RuI92/fp1YzUrVz1//hwnTpwQH3MaPdKbQJSPrVu3TgAgABAsLS2Fffv25Shz+vRpwd3dXQAgWFhYiOVPnz6tsM6mTZuKZQAIRYsWFS5evCgpEx0dLbRs2VIsU7JkSeHjx48K6xs4cKCkPktLS2HPnj2SMklJSUL//v3FMra2tsLz5881fh8+//xzcdlBgwYJGRkZGi+rjHy7N27cqPXyX331lbi8qampMG/ePCEpKSlHuaioKGHatGlCuXLlFNbTt29fsZ5y5coJoaGhkufT09OF1atXC+bm5pLPV5vDl4+Pj7jMzJkztVtRJZ4+fSrW6eXlpdWygYGBkvX48ccfhbS0NEmZc+fOCc7OzmKZTp06Ka1Pm89S38/d0OTfB2X7rDpDhw4V6/D19dV6eRMTE6Fnz57CoUOHhNTUVIVlwsLCJPshAGH58uUKy3p7ewtt2rQR/v77byExMVFhmefPnwtffvmlpL7x48dr3fYZM2aIyzdt2lSjZb777juhZcuWQmBgoPDp0yeFZUJCQiT7jZmZmXD16lWlbfDy8hIWLlwoREREKCyTnJwsrFmzRrC1tRXrLFWqlJCQkKCw/P79+wUzMzMBgGBiYiJs375do3VT5urVq4KdnZ342gsWLNC5rujoaMHZ2VmYPn268PDhQ4VlEhIShLlz5wqmpqYa7cO7du2SbAstW7YUXr16laPcX3/9JXkPW7RoobC+zz77TBg6dKhw8eJFheeLjIwM4e+//5YcY0qVKqX0PKeKLtugsdSqVUtsi4+PjxAZGSl5fuXKlYJMJhPLHDx4UGV9Xbp0kRzn7927J3n+n3/+ESwtLcUyq1at0qv92ryXv/zyi2Sb6devnxATEyMpk56eLqxYsUKyHQ4bNkyvNmrj22+/VdnXiomJEdq1aydZDwDC06dPFdb36tUrwdraWiw3YMAAyTFMUV/r7du3xlxFiQcPHgj29vbi6zdp0kS4e/euwrKRkZHC4sWLhbJlyyo9NiQlJQnVq1cX6/vhhx8UluvYsaNYpmPHjkrbl5SUJDmue3h4CIcOHVJYNj4+Xti6davQpEkTwcnJSeV6G6o/KAiC8P3334t1FStWTLh+/brk+bCwMKFq1aqS/qA2fTB9+4NLliwRlzcxMRHWrFmTo8zu3bsFKysrsdzYsWM1qluX/m12gYGBgoeHhzBv3jzh8ePHCsvcvHlTqFSpkvhaY8aM0fn1jCE/nFPmzZsn+TzGjh2b4/gqCJnn+l9++UWwtbVVWtfYsWPFeqytrYXAwMAcZVatWiU5Ny1ZskRtG/X5HiLvwoULYn8LgNC1a1chPDxcYdnHjx8Ls2bNEtzc3JRu1/l9G9y4cWOOc860adOE9PR0SbmVK1dKyij63AQhsz/Vtm1bsZyTk5OwdevWHPUJQmZfODAwUGjfvr0gk8mE6Ohojds6cOBAHdfY8Hbs2CF5b0aOHCm8e/dOYdnbt28LEyZMEJycnJRu1/fv35f0bRWdl6KjowUPDw+xzOLFi5W2z9DnYkHIPH/WqFFDrNPFxUXYtWuX0vXp3r27ys+sdu3aYl3169fP0Vc5ePCgYG9vLznXaboNfPjwQTAxMRGXO3PmjEbLyevUqZNkXS9cuCB5Pi0tTZg6dapG+4i806dP5/nxXVdeXl5i23N7DEX+vAhAkMlkOfof6enpwqRJkyR9lODg4Bx1paenS/alDh06CB8+fJCUiYuLE4YPHy4A0vFVTT4z+bbOmDFDp/XNjfHBc+fOSb4v3LlzR6e2ZgkPDxf3OxMTE+HEiRNaLW/oc7EiZcuWFeufPn26Vu1TRn5sXZuxvOjoaMHOzk4YM2aMcPnyZYXjFa9evZJ8F69evbrCuuTHN7N/h9T1OUMz9PhgRkaG0Lt3b7FcmTJlcox75DVD9wfT0tIEV1dXsWznzp1zjF1t3Lgxx3FB0XFIfrs11HPZGeJcrIgufUP5ZbKfv3R9ThAM3x/MLfJ9EX2+d5crV06sY9y4cQZsof4McS4WBMOPzWjzvuvyGXXu3FlcZvDgwRovZ4y2qOo76frcu3fvhFKlSollqlWrJly6dEnh60dFRQlr164VfHx8hJo1a2rcbmMxRD96zpw5Yh2urq5Kf78j0tT/TTRNlA8NGDAAv/76K+7du4fk5GR07NgRvr6+qFq1KmQyGW7evIk7d+4AALp37453797h7NmzGtdfv359XLlyBY0bN0bjxo1RsWJFREdH4/jx42IKYxMTE6xduxZ2dnYa19e5c2fUrl0bNWvWRGJiIk6ePIl3796J5X7++WeUKlVK43ZOmjRJnCIlICAAwcHBaNiwoSRF7pQpUxReYbF161bJtEFZ5LNfbN26VZKZKMvYsWNRvnx5hW1avnw57t+/j3PnziE9PR3Tpk3DwoUL4efnB3d3d3z69AlPnz4Vr0iSTz8u78cff0RgYCASExPx6NEj1KxZE40bN0aZMmWQkJCA8+fPIzIyEkBmJpUxY8aoeKcU69u3r3glysyZM3HhwgX4+fnBwcFBLFOlShVJGt8sUVFRCq9+kI/MjoqKwujRo3OUKV++vORK4iydO3dGv379sHXrVgCZGUw2btyIpk2bwtraGqGhoQgKChKvFCtRogRWrVql3UrnM5GRkUqnrMoybNiwHPvZ+vXrUadOHaXLJCYmSqa50iV9bUZGBv766y/89ddfsLGxga+vL7y8vODg4ICPHz8iNDQUt27dkly5161bN3zzzTcK6xMEAUeOHMGRI0dgaWmJ6tWro1y5cnB0dERSUhLu37+P4OBgSbaTRo0aqc1KMH36dMnUigDw+vVr8X5wcHCODFZ16tTJMeWDIAg4fvw4jh8/Dmtra/j4+KB06dKwt7dHfHw8bt68Kbn6UCaTYdWqVZI5rbOLiIjApEmTMGnSJJQuXRo1atSAi4sLZDIZIiMjceXKFckVqba2tti5c6dk3vIs79+/R8+ePcUrzLy9vXHx4kVcvHhR5fsDZB6D+/Xrl+P/7dq1E7M8FStWDM+fP1e4z2anbB/+8OEDZs+ejdmzZ8PLyws1a9aEi4sLTExM8OLFC1y6dEmSBr9KlSoqp1ro1q0b+vTpg+3btwPIzJBYunRpNG3aFF5eXkhMTMTVq1clV724urrit99+U1hfSkoK/vjjD/zxxx9wdnaGr68v3N3dYW1tjffv3+PKlSuSbDH29vbYu3ev2vOcobZBY9myZQvq1asnbsdly5ZF69atUaRIEVy7dg13794Vy44YMULtMWn16tUICgpCZGQkIiIiUL16dbRs2RJubm7icTpLu3btMHLkSKOtW3ZjxozB/v37xT7P1q1bsW/fPjRt2hRubm6Ii4vDxYsX8fz5c3GZChUqqLzK3NDmzJmDQ4cO4dGjR4iKisrR1zpx4gRiY2NRoUIFxMbGqpweB8g8F/7222/ilUGbN2/G8ePH0axZMwDA6dOnJdOLrF+/Plenhixfvjy2bt2Knj17ile5V69eHTVq1EC1atVgZ2eHqKgo3LlzB/fv3xfPKfJTRMj7/vvvxT6ur68v5syZo7Dc+vXrUb16dbx58wb79u3DypUrFR7frKyssGvXLjRr1gzPnz/H8+fP0a5dO3h6eqJu3bpwdnbGx48f8ejRI9y4cUO8mlx++g1FDNUfBICRI0dixYoVSElJwbt371CnTh3Uq1cPbm5uePnyJa5du4aMjAzMmTMHP/30k8p2KaJPfxDI3O/27NmDs2fPIiMjA19//TUWL16MBg0awNTUFNevX5dkjKlUqRLmzp2rdTv18fz5c0ybNg3Tpk2Dt7c3fHx8UKxYMXz8+BGPHz/GtWvXxLLFihXDtGnTcrV9BcGUKVNw+/ZtMYPNsmXL8Pvvv6Nx48bw9PREeno6nj17hsuXL6tN0z937lwcPXoUYWFhSEpKQpcuXVCzZk34+voiPT0dly9flkyZ0rRpU0l2GmNr1KgRVqxYgVGjRiEjIwO7d+/G3r17UadOHVSoUAFWVlZ4//49bt68iadPn2pUZ0HZBmvVqoW7d+9i3rx52Lp1K/z8/GBmZoYrV65IptDr2bOnmIUoO5lMhi1btsDf3x93795FTEwM+vXrh/Hjx6Nhw4ZwdXVFYmIiIiIiEBwcXCimdejVqxdu374tZttau3YtNmzYgPr166NMmTIwMzPDmzdvEBISIn6HVyYlJQW9evVCQkICgMyrnxVlk3VycsLmzZvRvHlzZGRkYMqUKfD39xezrMgz9LkY+L/zp7+/PyIjI/H+/Xt0794dpUqVQoMGDVCkSBHExcXh7t27Yl9T1XfSsWPHin2ZK1euwNvbG40aNYKtrS3u3buH+/fvw9raGt9//73KrGaKFC1aFG3btsXBgwcBZE53061bN1SvXl0yxUirVq2UZk1dtWoVrly5gjdv3uD9+/fw8/NDvXr1ULVqVSQlJeHMmTOSz7Zfv35K9xEyrKzxxq+//hrLly9HvXr1kJaWhnPnzuHZs2diuQkTJiicStrExATz5s0Tt7/9+/ejbNmyaNCgAUqWLInXr1/jzJkziI+Ph6WlJebNm4cJEybk2voBuTM+6Ofnh4YNG+LSpUtISEhA3bp18cUXX0iyY9esWVOSnUEVLy8v9OrVC9u3b0dGRgZat26Ntm3bwtPTU8xcW6pUKUyePFnh8sY4F2c3adIkDB8+HEBmtrdjx47Bx8cHpqamYplFixblyDIGZPaDFGV5kf/fsmXLsGvXrhxlZs+ejaJFi+b4f3x8PFasWIEVK1bA2dkZtWvXRsmSJZGRkYHnz5/jwoULYmZFU1NTnWaIyC8MPT64evVqybTolStXxrx58zRqi6oxfkMzZH/Q1NQUo0ePFsfm9+zZAw8PDzRs2BBmZma4desWIiIiULx4cfTo0QMrV640+vqpou+5OCgoSGEWHvn+aVBQkMLv/O3atVM7zmUIhuwPGsu+ffty/J6TPfu/olkgVGURBYDz589Lvr8Vtmn0shh7bMbQ+vbtK84KtHHjRvz7779o1aoVihQpIjkXK5s5QpPfCBSVcXZ2xqxZs3RvuIZcXFywa9cutGnTBjExMbh79y4aNmyIChUqoFatWnB0dERMTAzCwsJw9+5d8ZxSs2ZNo7dNnqJ9Sv4YMH36dCxdulTy/OzZs9GxY0eV9cr/ptKnTx8xGzyRzvIwKItII48fPxYqVKggidDNfuvSpYsQFxen0RUr8mWOHj0qtGnTRmm9VlZWQkBAgMr2Zc/AM2TIEKX1mZqaCv/73/90eh+mT5+u8j24ceOG2vZpe1N31U9ycrIwatQoydVNym4dOnRQWs+hQ4ckV3Zmv5mYmAizZ88WBEG3SO3k5GTBz89PZfuUXW0hf0W2tjdVV9WlpqYKw4cPl1whruhWuXJl4cGDByrXryBkjNL1fVS3DW7atEksa2ZmplN2kOxXGqq6mZmZCVOnThVSUlKU1qfueCV/k8lkwldffaVRph5d9mVF26B89gJ1t+LFiyvM1Cfvf//7n1ZtqlatmhASEqK0Pn32OWX7sSH34ejoaK3q+PLLL4XY2FiV76EgCEJKSoowbtw4tccEIDMbUlhYmNK6atasqXH7fH19c2RCUsZQ26AxnT17Vswiqez21VdfqdyH5d25c0dyJaOiW6dOnTT6jNXRNlNKXFyc5KpqVbfPP/9cePnypd5t1FZ4eLhQpUoVpe1yd3cXbt26JbmCSN1VuytXrpRk6sp+s7KyEtauXZs7K6jApUuX1G4zWTcbGxthzpw5OerYu3evWMba2jrH1fLZHTx4ULL+t2/fVlr21atXQuvWrTVqn4mJifDFF1+oXWdD9QcFQRDWrFmjdFmZTCbMmDFD52w5+vQHs8THx0uyaSi7NWzYUHjz5o3GbZNfVldHjx6VXJ2s6la5cmWlWVTyUn7IGCUImVfjz5o1S5KlTtlNWRaDLG/evBEaNmyotp6OHTsK8fHxGrXPUBmjsuzbt09yBaqqm5OTk/DHH38orCe/b4PZr7Rfv369yuNWly5dlGZXlRcXFyf06dNHoz4cAKFu3bpKs0Yoa2t+s379eqFo0aIarW+JEiUUZoIaN26cWKZSpUpq35OJEyeK5StUqKByfzHEuTi7Fy9eCC1atFBbn4mJifDzzz8rrScjI0Po06eP0uXt7e2F/fv367wNPH78WHBzc1PZRnXjAA8ePBAqV66ssg6ZTCYMHz5c4yu2mTFKN9kzP8ycOVPl5/LNN9+ozTA/e/ZslcerIkWKCPv379f6MzNUlgpjjw8KQuZ5VP5zzX5TlUVOkQ8fPgi+vr5K69MkY4OhzsWKZGRkCIMGDVJZp7JMhtlnXdDmpuh7XVxcnEb9q6xtUVmGPkEoGBmjDD0+mD2LnDY3XbP0a8sY/cGkpCTB399faT0lSpQQrly5ovY4lBsZowRBv3Oxogynmt6yr7OxMkZlMUR/0Fh0fR/VGTx4sFi2Ro0aubAm2jHUuVgQDDs2o817rE1Zedkz72W/qerL6LrPKVpnVa+n63NZwsLChLp162rUNnNzc2HkyJHq3zgD0uU9VNe3Pnv2rKR89uxlRLpgaB3le2XKlMH169exZs0a7Nq1S8weVaJECfj6+mLgwIE6X6FmYWGBgwcP4o8//kBAQADu3buHT58+oWTJkmjTpg3Gjh2LcuXKaVXnH3/8gTZt2uD333/HrVu3EBcXBzc3NzRr1gyjR49WeGWjJmbNmoWGDRti+fLlCAoKQlRUlEZzzxuThYUFVq5ciXHjxmHTpk04deoUHj9+jKioKFhYWMDb2xuNGzdGnz594Ofnp7Setm3bIjQ0FEuWLMHhw4cREREBU1NTuLu7w9/fH8OHD1d4xZs27Tx58iQ2btyIXbt24fbt24iOjhavQMoLZmZm+O233zBs2DBs2LABp0+fRmRkJFJSUuDi4gJfX1907doV/fv3ZxS0Chs3bhTvt2nTRqfsIFFRUTh16hQuXbqEGzdu4MmTJ3jz5g0SExNhbm6OokWLomrVqmjatCkGDRoEd3d3lfXdvn0b58+fx4ULFxASEoLHjx/j1atXiI+Ph6mpKYoUKYKKFSuicePGGDhwYK5dsZVlxowZqF27Ns6dO4c7d+7gxYsXiIqKQnJyMqytreHi4oLatWujbdu26Nevn+SKJkWmTJmCzp0749SpU7h69Sru3buHZ8+eITY2FqmpqXBwcEDJkiXx2WefoVu3bmjbti1MTExyaW0Nz8nJCUFBQTh8+DCuXbuGx48f4/Xr10hISIAgCHBycoK3tzeaNGmCgQMHokaNGhrVa25ujl9//RUjR47EH3/8gXPnzuHhw4eIjY2FlZUVihcvjrp166J79+7o3LmzyvcwMDAQ+/btw+XLlxEWFobIyEjExcUhNTUV9vb2cHNzQ8OGDdG1a1e0a9dOvHqmMGjSpAnu3LmDdevW4Z9//sGTJ0+QkJAANzc3NGjQAF999RX8/f01rq9atWoICQnBxo0bsXPnTjx8+BAxMTEoXrw4fH19MXjwYHTq1Ml4K6SCvb09tm7divHjxyMgIAAXL17E06dP8fHjR9jY2MDd3R0NGjRAnz590KJFizxpo5eXF27cuIG1a9fizz//FLOmeHh4oFOnTvj+++8lV2drYtSoUWjRogXWrl2Lo0eP4sWLFwAyr/5q06YNRo4ciQoVKhhjdTTSoEED3L17F7t378b+/ftx5coVvH37FgkJCXBwcECZMmVQq1YttGjRAm3atIG9vb1k+cjISAwZMkR8vHDhQqVZHbK0a9cOX3/9NdasWYNPnz6hV69eCA4OVnjVd4kSJXDkyBFcunQJf/75J86ePYuXL18iJiYG1tbW8PDwQI0aNeDv748vvvhCowynhuoPAplXJlapUgWLFy8Ws++5ubmhfv36GDNmDBo1aoTw8HC1bVLWTn37g7a2ttizZw9OnDiBrVu34vz583jz5g3S09Ph6uqKevXq4csvv0TXrl1z/djaqlUrvHr1CkeOHMG5c+fEzAJxcXGwsLAQj1tdu3ZFz549JZlnSUomk2H69OkYPnw4Nm7ciBMnTiAsLAwfPnyAiYkJPDw80KBBA/Ts2VNhhht5rq6uuHDhAnbv3o0///wTQUFBePv2LUxNTVG8eHE0btwY/fv3z7PjNAB06NABrVq1wvbt23Ho0CGEhITg3bt3SE5OhpOTE8qVK4c6deqgVatWaNmyJSwtLRXWU9C2waFDh6JGjRpYsmQJzp8/j7dv36Jo0aKoU6cOhgwZgi5dumhUj729PbZt24bJkydj27ZtOHXqFCIiIhAdHQ0LCwu4ubmhevXqaNKkCb744otc7/sbw9ChQ9GjRw9s3rwZR48exe3bt/H+/XukpaWhaNGiqFixIurVq4dWrVrB399fkpUEAI4cOSJeLWxubo6tW7cqPGfJmzt3Lo4fP46bN2/iwYMHGD16tOS7oDx9z8WKlCxZEsePH8f58+fx119/4dy5c3j58iViY2Nhb2+PSpUqoXnz5hgwYIDKz1gmk2Hr1q1o3rw5NmzYgDt37iA1NRWenp5o27YtxowZgzJlyqjMNqtKmTJlcPv2baxatQpHjhzB/fv3ERcXJ8lGok758uVx+/ZtbNmyBbt378aNGzfw/v17WFhYwN3dHc2aNcOQIUNUZhQm45gxY4aYYejatWv48OEDXF1d0bBhQ4wcOVLMpKrKTz/9hFatWmH58uU4d+4c3r59Czs7O3h6eqJjx44YPnw4SpYsiTNnzhh/hRQw9vggkJmV+saNG/j555+xZ88ehIeH49OnTzrXV7RoUVy8eBHLli3Dn3/+iQcPHiAxMVGrOgx1LlZEJpNh48aNaN26NX777TfcuHEDsbGx2q6mQdjb2+PDhw84efIkTp8+jWvXruHhw4eIioqCTCYTx9/atm2LgQMHwtnZOU/aaSj5fXzQGIzRH7SyssKxY8ewYsUKbNu2Dffv34dMJoO3tze6dOmCUaNGoXjx4jh8+HAurKF6hjgXFwT69gcLmoSEBPz999/i46wMjIWVMcdmjGHHjh3o0qULtm3bhhs3bojn0MKkYsWKCAoKwpEjRxAYGIgLFy7g1atXiIuLg729PTw9PeHj44PmzZujXbt2cHFxyesm603++161atXg6+ubh62hwkIm5HVkBVEu8/f3F6eeOX36tFY/kCoyaNAgbNq0CUDmgXrQoEF6tpCIiIjov8Pb2xsREREAgKdPn8Lb2ztvG0RERIVOQEAABg8eDCBz2gtdA0+IiHLLzJkzxSlaZsyYgZkzZ+Ztg4iIiIiIiAqwgpuygYiIiIiIiIiIiIiIiIiIiIiISAkGRhERERERERERERERERERERERUaHDwCgiIiIiIiIiIiIiIiIiIiIiIip0GBhFRERERERERERERERERERERESFDgOjiIiIiIiIiIiIiIiIiIiIiIio0GFgFBERERERERERERERERERERERFToyQRCEvG6EMhkZGYiMjIS9vT1kMlleN4eIqNAaNWoUduzYYbD6Jk2ahEmTJhmsPiIq+Hx8fPDs2TOD1bdv3z40btzYYPURERFR3uJ3Ev08e/YMPj4+Bq0zKirKoPURERERERERERmSIAj4+PEj3N3dYWKiPC9Uvg6MevHiBTw8PPK6GURERERERERERERERERERERElM88f/4cpUqVUvq8WS62RWv29vYAMlfCwcEhj1tDRERElHdWDOqR100gIiIiIiIiIqJ8YEzA33ndBCIiIqI8FxcXBw8PDzG2SJl8HRiVNX2eg4MDA6OIiIjoP83J9b8zFQwRERERERERESnH38yIiIiI/k9WbJEyyifZIyIiIiIiIiIiIiIiIiIiIiIiKqDydcYoIiIiIsr0+ZlRed0EIiIiIiIiIiLKF+7ldQOIiIiICgxmjCIiIiIiIiIiIiIiIiIiIiIiokKHgVFERERERERERERERERERERERFToMDCKiIiIiIiIiIiIiIiIiIiIiIgKHQZGERERERERERERERERERERERFRocPAKCIiIiIiIiIiIiIiIiIiIiIiKnQYGEVERERERERERERERERERERERIUOA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOgyMIiIiIiIiIiIiIiIiIiIiIiKiQoeBUUREREREREREREREREREREREVOgwMIqIiIiIiIiIiIiIiIiIiIiIiAodBkYREREREREREREREREREREREVGhw8AoIiIiIiIiIiIiIiIiIiIiIiIqdBgYRUREREREREREREREREREREREhQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNBhYBQRERERERERERERERERERERERU6DIwiIiIiIiIiIiIiIiIiIiIiIqJCh4FRRERERERERERERERERERERERU6DAwioiIiIiIiIiIiIiIiIiIiIiICh2zvG4AEREREanXcwq7bUREREREREREBNzJ6wYQERERFSDMGEVERERERERERERERERERERERIUOA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOgyMIiIiIiIiIiIiIiIiIiIiIiKiQoeBUUREREREREREREREREREREREVOgwMIqIiIiIiIiIiIiIiIiIiIiIiAodrQOjUlNTMWfOHLRq1QoODg6QyWQ4c+ZMjnKCIGDt2rWoUaMGrK2t4erqio4dOyI+Pt4Q7SYiIiIiIiIiIiIiIiIiIiIiIlJK68CohIQETJ8+HY8ePUL16tWVlps6dSq+/vprVKpUCcuXL8eUKVNgbm6OpKQkvRpMRERERERERERERERERERERESkjpm2C9jb2+PZs2fw8PDArl27cOnSpRxlwsLCsGjRIkydOhXz5s0T/z9u3Dj9WktERERERERERERERERERERERKQBrTNGmZqawsPDQ2WZHTt2wNzcHFOmTAEATp9HRERERERERERERERERERERES5SuvAKE0EBQWhevXq2LdvH1xdXWFvbw8PDw/s2LHDGC9HREREREREREREREREREREREQkYZTAqJcvX+Ldu3cYOXIkJk6ciD///BNlypRB3759cf36daXLJScnIy4uTnIjIiIiIiIiIiIiIiIiIiIiIiLSllECoxITExEeHo4FCxZg4sSJ6NmzJw4ePAg7OzssWrRI6XLz58+Ho6OjeFM3ZR8REREREREREREREREREREREZEiRgmMsrCwAAB07dpV/J+dnR0aNmyI27dvK11uypQpiI2NFW/Pnz83RvOIiIiIiIiIiIiIiIiIiIiIiKiQM0pgVLFixSR/sxQtWhRv375VupylpSUcHBwkNyIiIiIiIiIiIiIiIiIiIiIiIm0ZJTCqSpUqAIDXr19L/v/u3Tu4u7sb4yWJiIiIiIiIiIiIiIiIiIiIiIhERgmMatOmDQBg+/bt4v8+fPiAixcvok6dOsZ4SSIiIiIiIiIiIiIiIiIiIiIiIpGZLgutXLkSMTExCA0NBQBs2bIFFy5cgJOTE0aPHo2OHTuidu3amDp1Kt6+fQtPT0+sW7cO6enpmDx5skFXgIiIiIiIiIiIiIiIiIiIiIiIKDuZIAiCtgt5e3sjIiIix/+9vLwQHh4OIHPavAkTJuDAgQNISEiAr68v5s+fD39/f41fJy4uDo6OjoiNjYWDg4O2zSQiIiIqNKpvqp7XTSAiIiIiIiIionzgzsA7ed0EIiIiojynaUyRThmjsoKfVClWrBg2bdqkS/VERERERERERERERERERERERER6McnrBhARERERERERERERERERERERERkaA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOgyMIiIiIiIiIiIiIiIiIiIiIiKiQoeBUUREREREREREREREREREREREVOgwMIqIiIiIiIiIiIiIiIiIiIiIiAodBkYREREREREREREREREREREREVGhw8AoIiIiIiIiIiIiIiIiIiIiIiIqdBgYRUREREREREREREREREREREREhQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNBhYBQRERERERERERERERERERERERU6DIwiIiIiIiIiIiIiIiIiIiIiIqJCh4FRRERERERERERERERERERERERU6DAwioiIiIiIiIiIiIiIiIiIiIiICh0GRhERERERERERERERERERERERUaHDwCgiIiIiIiIiIiIiIiIiIiIiIip0GBhFRERERERERERERERERERERESFDgOjiIiIiIiIiIiIiIiIiIiIiIio0GFgFBERERERERERERERERERERERFToMjCIiIiIiIiIiIiIiIiIiIiIiokKHgVFERERERERERERERERERERERFToMDCKiIiIiIiIiIiIiIiIiIiIiIgKHQZGERERERERERERERERERERERFRocPAKCIiIiIiIiIiIiIiIiIiIiIiKnQYGEVERERERERERERERERERERERIUOA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOgyMIiIiIiIiIiIiIiIiIiIiIiKiQoeBUUREREREREREREREREREREREVOgwMIqIiIiIiIiIiIiIiIiIiIiIiAodBkYREREREREREREREREREREREVGhw8AoIiIiIiIiIiIiIiIiIiIiIiIqdBgYRUREREREREREREREREREREREhQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNBhYBQRERERERERERERERERERERERU6DIwiIiIiIiIiIiIiIiIiIiIiIqJCh4FRRERERERERERERERERERERERU6DAwioiIiIiIiIiIiIiIiIiIiIiICh0GRhERERERERERERERERERERERUaHDwCgiIiIiIiIiIiIiIiIiIiIiIip0GBhFRERERERERERERERERERERESFDgOjiIiIiIiIiIiIiIiIiIiIiIio0GFgFBERERERERERERERERERERERFToMjCIiIiIiIiIiIiIiIiIiIiIiokKHgVFERERERERERERERERERERERFToMDCKiIiIiIiIiIiIiIiIiIiIiIgKHQZGERERERERERERERERERERERFRocPAKCIiIiIiIiIiIiIiIiIiIiIiKnQYGEVERERERERERERERERERERERIUOA6OIiIiIiIiIiIiIiIiIiIiIiKjQYWAUEREREREREREREREREREREREVOmZ53QAiIiIiIiIiIiIiIiIiosIiPT0dqamped0MIiKiAsXMzAympqaQyWSGrdegtRERERERERERERERERER/QcJgoDXr18jJiYmr5tCRERUIJmamsLV1RWOjo4GC5BiYBQRERERERERERERERERkZ6ygqJcXV1hY2Nj8IwXREREhZUgCEhLS0NcXBxevXqFpKQkuLm5GaRuBkYREREREREREREREREREekhPT1dDIpydnbO6+YQEREVSPb29rC0tMT79+/h6uoKU1NTves0MUC7iIiIiIiIiIiIiIiIiIj+s1JTUwEANjY2edwSIiKigs3W1haCIIjnVn0xMIqIiIiIiIiIiIiIiIiIyAA4fR4REZF+DH0uZWAUEREREREREREREREREREREREVOloHRqWmpmLOnDlo1aoVHBwcIJPJcObMGZXLTJgwATKZDKNHj9a1nURERERERERERERERERERERERBrTOjAqISEB06dPx6NHj1C9enW15Z88eYLff/9dp8YRERERERERERERERERERERERHpQuvAKHt7ezx79gxPnjzBuHHj1Jb/4YcfMHjwYJ0aR0RERERERERERERERERElF/JZDL4+/vndTOMThAELFy4EOXLl4eFhQVkMhkGDRqU180iFQYNGgSZTIbw8HCD1XngwAHUrl0bdnZ2kMlk8Pb2Vlr2zJkzkMlkmDlzpsLnb968CZlMJrkFBAQYrK1EWcy0XcDU1BQeHh4alb1w4QKOHj2Kx48fY/ny5Vo3joiIiIiIiIiIiIiIiIiooPOefDCvm6BU+IIvjFJv//79sXXrVpQtWxaPHj1SWTYpKQk1a9bEw4cPMXToUKxfv1587tOnT5g0aRJ27twJQRAwbtw4TJo0CSYmWucAUSsryMOQgSSFxfbt2zF58mTUrl0bEyZMgIWFBXx8fPK6WZSLnjx5gm7dusHZ2RkjR46EnZ0dnJycdK6vRIkSmDFjBoDMIKm9e/dqvCz3VdKG1oFRmhIEAePHj8e4cePg6upqrJchIiIiIiIiIiIiIiIiIqJ85NChQ/j77781Lj9jxgxEREQofO67777D5s2bMXDgQMTHx+Onn36ClZWVRrMb5YZ79+7BxsYmr5thdIcOHQIA7N+/H25ubnncGsoLJ0+eREpKChYvXozevXurLV+3bl3cu3cPLi4uCp8vUaKEmE0qICBAq8AoIm0YPoz2/9u2bRuePHmCCRMmaLxMcnIy4uLiJDciIiIiIiIiIiIiIiIiIioYPn78iJEjR+KHH37QqHxwcDCWLFmisHxqaio2btyIP/74A2vW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6NChqF69Or755huVZZs3b467d+9i9erVWLduHYKDg3H16lX4+vpiyJAhaNSoESIiIjB69GgDrYnheXl5AQA8PT0BAGXLlgUA8Xf0rGCLvXv34tWrVxgxYoQkKAqAOPPSrl27dG7H7t27AQCTJ0+W/P/bb7+FtbW1+HxuSU9Ph6mpaY6kKvb29jkyKEVGRmL//v2oUKGCZBaqLK1atZI8rly5co6gKAD44osvAAB37txR2KZJkyaJ983NzdGqVSukp6fj4cOHmq2UAq6urjmCojRpy7hx48SgKABo3749gMwMVFn279+PtLQ0DBkyRBK41bt3b7i7u+vc5sJg7dq1MDU1xYoVK8SgKCAzUK1Lly44deqU0mkSBUHAkiVLcmybijJ7Uf5n8IxRxYsXx/79+3P8v0OHDvjiiy8wcuRIlC9f3tAvS0REREREREREREREREREeSA4OBi//vorfv75Z5QqVUpt+eXLl+Pq1au4cuUKTEzU5/Lw8vJCly5dsGbNGtSpUwfVq1fHrFmz0L59e42Wz2tZ055l/bW2tpY8TkpKAgBcu3YNAPDs2bMcmXDS0tIAAI8ePdK5Hffu3YOtrW2O3+sdHR1RunRp/Pvvv4iNjYWjo6POr6GNbt26Yfr06ahfvz569+6NevXq4bPPPlOYmen69esAAD8/P5iamqqtOyMjA+vXr8emTZtw9+5dfPz4EYIgiM9//PgxxzIuLi4oWrRojv8BQHx8vFbrlt3JkyexZMkSXLt2DR8+fEB6errKtgBAhQoV1LYlK0gq+5RwpqamqFatGiIjI/Vqd0H18eNHhIWFoUiRIlixYkWO58PDwyEIAh4/fow6derkeL5UqVI53n8quHQKjFq5ciViYmIQGhoKANiyZQsuXLgAJycnjB49WoxUzM7b21vpc0REREREREREREREREREVPAMHToUVapUwbfffqu27IsXLzBt2jSMGDECn332mdryd+/exc8//4yDBw/iyy+/xOnTp1GyZEl8//33GDp0KKysrDB06FD8+OOPkqww+YlMJgMAMYgr63HW36wgmZiYGABAYGAgAgMDFdalaIo5TcXHxyvNIuTs7AwgM6AktwKjpk2bBmdnZ2zYsAE//vgjBEGAubk5evTogTVr1kgCpLLeG00z9nz77bdYtWoVihcvju7du8PNzQ1mZmYIDw/Hpk2bxEAz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bg4REVGBpek5VdOYImaMIiIiIioA7jx9ltdNICIiIiIiIiIiIiIiIipQTPK6AURERERERERERERERERERERERIbGwCgiIiIiIiIiIiIiIiIiIiIiIip0OJUeEREREREREREREREREREVeL169cKVK1c0KmtmZoZHjx4ZuUVERJTXGBhFREREREREREREREREREQF3s6dO/O6CURElM9wKj0iIiIiIiIiIiIiIiIiIiIiIip0GBhFRERERERERERERERERERERESFDgOjiIiIiIiIiIiIiIiIiIiIiIio0GFgFBERERERERERERERERERERERFToMjCIiIiIiIiIiIiIiIiIiIiIiokKHgVFERERERERERERERERERERERFToMDCKiIiIiIiIiIiIiIiIiIiIiIgKHQZGERERERERERERERERERERERFRocPAKCIiIiIiIiIiIiIiIiIiIiIiKnTM8roBRERERERERERERERERESF2kzHvG6BcjNj87oFBZpMJkPTpk1x5syZvG6KUQmCgJ9//hnr169HREQEUlNTMXDgQAQEBOR104ziv/K5Ev0XMGMUERERERERERERERERERHp7OHDhxg8eDB8fHzg7OwMGxsbVK5cGWPGjEFkZKTS5UJCQtC9e3eUKFEClpaW8PDwQI8ePfDy5UuxzKdPnzB27FgUL14crq6umD9/PjIyMoyyHt7e3vD29jZK3QXd9u3bMXnyZDg6OmLChAmYMWMGOnfunNfNKtQCAgIgk8kKbfAZUW5hxigiIiIiIiIiIiIiIiIiItJZaGgo/vnnH/j5+aFRo0awt7dHWFgY1qxZg23btuH/sXfnYVVW+///X9shQFAcUFBUIAdwyiHs65g4lbM4a3oStZN9zHKqE8dUsDIcTg5oajmAqMdKc0hFywEwS3EoZ0xJIS2zUgGZHIDfH/72Pm4Bhc2k9Hxcl5ftda+17vd978Xhuo6va63vv/9eHh4eZmO+/PJLDR48WDY2Nurdu7eqV6+uP//8U2FhYbp06ZKcnZ0lSePHj1dISIiGDx+uxMRETZ06VdbW1powYUJRPGomUVFRKlOmTFGXUeBCQ0MlSVu3blXVqlWLuJqC93f5XoG/A4JRAAAAAAAAAAAAAACLde7cWdeuXVPp0qXN2tetW6eXXnpJfn5++vzzz03tV69e1ciRI1WjRg1F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pk2b6p133sm0Dix577lhXAf3/8mOJevdEj/++KOef/550xp44403dPPmzUz9crPeLa397Nmz8vHxUY0aNWRlZaWaNWtq6NChOnbsWJb9f/31Vw0YMEDly5dX2bJlNWjQIN24cSPLvtu2bVOHDh1kb2+vMmXKqEWLFtnu8pWbNVMY2DEKAAAAAAAAAAAAAFBoDhw4IElq06aNWXvjxo1lb29vul6xYkXVrl1b06ZN07Jly5SUlKSAgAC1aNHCbFxMTIzi4+PVuHHjXNfi4+NjCjbNnz9f0r3j+4zKly//0DHTp09/5D1WrlypgQMH6pNPPpGPj48cHBzk4+OjoKAgjRw5UpcvXzb1DQsLU48ePXT37l317dtXzs7OioyMlK+vr86ePaugoKBcP6ORn5+fJCkuLk4LFixQ48aN5e3tbbrepEkTs/5nzpxRy5YtlZSUpEGDBqlmzZravXu33nvvPR08eFA7d+7M025EY8aMUc2aNdWmTRvVqFFD165d08aNG/X8889r586dat++faYx48aN0927dzV8+HDduHFDa9eulZeXlw4ePKgGDRpk6t+5c2dVrlxZb7zxhk6dOqXVq1fr6NGjOnLkiGxsbEz9LHnvZ8+eVffu3dWrVy89++yz2rBhg2bMmKGqVavq9ddfN/W7cuWK2rRpoz///FMDBgyQq6urtm3bZtoFLb+FhITot99+U2BgoFnw0FIvv/yyNmzYoJYtW+q1117TrVu3dObMGX300UeaMGGCnJycMo3J6XvPrftDiMHBwYqNjc22b27XuyUSEhLUqVMnNW/eXOPGjdN3332nRYsW6eTJk9q7d69KlPjfXkW5We+W1L5nzx716tVLt2/fVq9eveTu7q4bN25o+/btKl26tIKDg83637p1Sx07dpSLi4teeeUV7d27V1988YXS09O1fv16s76zZs2Sr6+vqlSpooEDB8rGxkY7duyQt7e3goKCMgW1LFkzBcmQkVVc8TGRkJAge3t7xcfHq1y5ckVdDgAAQNHxty/qCgAAAAAAAPA48I8v6gqQhdTUVF28eFFubm6ytrbOdP2y77dFUFXOVJ/ZttDvWalSJRkMBv3111/68ccfNWbMGI0dO1ZDhw5V48aNdeLECaWkpMja2lp79uyRt7e3EhMTJUmOjo7au3ev6tevr4iICC1YsEB79uzRjBkzNHbs2DzV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OTm6efOmWrdube7Tpk0bff/99w+9pg0bNqhz585ydXWVg4ODfHx89MorrygtLa3EMStXrlSrVq1kZ2enFi1a6NNPPy3SJyQkRAaDQenp6RbtiYmJMhgMioyMtGj38vKSwWCQwWCQ0WjUwYMHzZ8NBoPFTk/p6enm9q5du0qSpk+fbtH/l/M+qKtXr2rChAny9vZWjRo11KBBA73++uu6evVqqe/ZuHFji3danO+++04Gg0EjR460aPf39zc/mzlz5qhFixays7NTgwYN9Oabb1r0vfs5FPesTSIjI819Vq9eLUny9vb+1ee4Y8cOde/eXc7OzqpZs6b8/PwUHx9//w+iGKbvxd1rHzlyZInfgV+OMf0kJiYWe3+DwaDBgwfr+eefl729vfr166d//vOf6tSpk5ycnBQcHKybN29ajCkoKNCCBQvUvn172dvbq3bt2urfv79OnjxZprUCFaVCdoy6cOGCPvnkk4qYCgAAAAAAAAAAAABQiR0+fFiS1KVLF4v2du3aydnZ2Xy9bt26atasmaZNm6YVK1YoLy9PUVFR8vPzsxiXnp6urKwstWvXrlT1fPzxxxo3bpy8vb314osvys7OTmlpadq4caN69OihZs2aFRkTGxurs2fPauDAgerUqZPWrVun4OBgtWzZUo899lip6pDuHB147do1SXdCTp6engoJCTFfb9++vfnPtWvXVkREhKQ7z2D16tXq2rWr/P39LfqU1pUrV9SlSxdduHBBzz77rIYMGaKLFy/qk08+0d///nclJyfLwcHhge/bqVMnbd68WdnZ2apVq1axfY4cOWLuW5w333xT0dHRGjRokFxdXZWamqrPP//cos8vn01J7n5e27ZtU0pKisaPH2/x7H75HGfPnq3w8HDVr19fgYGBsre311//+lcFBAQoJibG4p09CC8vL3PdX3/9teLj4zVgwACL9373n385JjExUQcPHrznHNu2bdOIESP02GOPaceOHfrHP/6hXr16ycnJSRs2bNCzzz6rV155RZJUWFiogIAA7dy5U23atNGrr76q3Nxcbd68WZ06ddIXX3yhtm3blmqtQEWpkGDUn/70J40cOVKLFi2qiOkAAAAAAAAAAAAAAJXUxYsX5eLiIkdHRx0/flxjx47VuHHjNGzYMHl6eurEiRPKz8+XnZ2dli1bpoCAALm5uUmS3NzcFBMT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "appals.show_critical_path_time_breakdown().T" + ] + }, + { + "cell_type": "markdown", + "id": "94f75901", + "metadata": { + "papermill": { + "duration": 0.014921, + "end_time": "2024-12-06T05:56:21.656661", + "exception": false, + "start_time": "2024-12-06T05:56:21.641740", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Compare to vanilla" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "f9051ad7", + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-06T05:56:21.687372Z", + "iopub.status.busy": "2024-12-06T05:56:21.687092Z", + "iopub.status.idle": "2024-12-06T05:56:57.099205Z", + "shell.execute_reply": "2024-12-06T05:56:57.098700Z" + }, + "papermill": { + "duration": 35.429191, + "end_time": "2024-12-06T05:56:57.100672", + "exception": false, + "start_time": "2024-12-06T05:56:21.671481", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "load data /sr213/application_1733153225851_0029/app.log\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "emon metric\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 1319:> (0 + 3) / 3]\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "[Stage 1319:==================> (1 + 2) / 3]\r", + "\r", + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sar metric\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time breakdown\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 application_1733153225851_0029application_1733153225851_0048diff
runtime132.1417.65648.67%
shuffle_write0.000.000.00%
f_wait_time0.000.000.00%
input read22.5422.540.00%
acc_task_time128.0113.99815.01%
output rows1.791.1851.69%
%user>90%0.990.935.91%
%kernel>10%0.990.972.85%
%iowait>10%0.310.62-49.30%
avg %user82.1141.2299.21%
avg %system6.104.5135.11%
avg %iowait0.170.74-76.60%
avg disk util7.1332.21-77.85%
time more than 90%0.000.000.00%
total read (G)5.245.39-2.75%
total write (G)0.021.12-97.81%
avg read bw (MB/s)37.52190.27-80.28%
avg write bw (MB/s)0.1839.61-99.55%
read bw %7559.27411.58-85.60%
read bw %95173.05484.54-64.29%
read bw max236.70510.35-53.62%
time_rd_morethan_950.050.0341.96%
write bw %750.071.07-93.45%
write bw %951.23165.69-99.25%
write bw max1.70812.51-99.79%
time_wr_morethan_950.000.03-100.00%
cached mean88.3393.90-5.93%
cached 75%132.00145.00-8.97%
cached max160.00188.00-14.89%
used mean2,060.73834.00147.09%
used 75%2,343.00852.00175.00%
used max2,346.00859.00173.11%
rx MB/s 75%0.000.000.00%
rx MB/s 95%0.000.000.00%
rx MB/s 99%0.000.000.00%
pgin mean37.37190.21-80.35%
pgin 75%59.00412.00-85.68%
pgin max352.00509.00-30.84%
pgout mean0.1340.97-99.68%
pgout 75%0.001.00-100.00%
pgout max2.00840.00-99.76%
fault mean952,586.87117,653.31709.66%
fault 75%1,426,717.00205,151.00595.45%
fault max2,628,392.00256,538.00924.56%
cpu%_avg0.880.4596.45%
cpu freq_avg3,460.223,241.926.73%
pathlength_sum17,960.001,933.00829.13%
ipc_avg1.271.1411.30%
\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 runtimeshuffle_writef_wait_timeinput readacc_task_timeoutput rows
real_queryid      
1\n", + "
132.14
\n", + "
17.65
\n", + "
648.67%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
22.54
\n", + "
22.54
\n", + "
0.00%
\n", + "
\n", + "
128.01
\n", + "
13.99
\n", + "
815.01%
\n", + "
\n", + "
1.79
\n", + "
1.18
\n", + "
51.69%
\n", + "
\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 sr217agg
0  
%user>90%\n", + "
0.99
\n", + "
0.93
\n", + "
5.91%
\n", + "
\n", + "
0.99
\n", + "
0.93
\n", + "
5.91%
\n", + "
%kernel>10%\n", + "
0.99
\n", + "
0.97
\n", + "
2.85%
\n", + "
\n", + "
0.99
\n", + "
0.97
\n", + "
2.85%
\n", + "
%iowait>10%\n", + "
0.31
\n", + "
0.62
\n", + "
-49.30%
\n", + "
\n", + "
0.31
\n", + "
0.62
\n", + "
-49.30%
\n", + "
avg %user\n", + "
82.11
\n", + "
41.22
\n", + "
99.21%
\n", + "
\n", + "
82.11
\n", + "
41.22
\n", + "
99.21%
\n", + "
avg %system\n", + "
6.10
\n", + "
4.51
\n", + "
35.11%
\n", + "
\n", + "
6.10
\n", + "
4.51
\n", + "
35.11%
\n", + "
avg %iowait\n", + "
0.17
\n", + "
0.74
\n", + "
-76.60%
\n", + "
\n", + "
0.17
\n", + "
0.74
\n", + "
-76.60%
\n", + "
avg disk util\n", + "
7.13
\n", + "
32.21
\n", + "
-77.85%
\n", + "
\n", + "
7.13
\n", + "
32.21
\n", + "
-77.85%
\n", + "
time more than 90%\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
total read (G)\n", + "
5.24
\n", + "
5.39
\n", + "
-2.75%
\n", + "
\n", + "
5.24
\n", + "
5.39
\n", + "
-2.75%
\n", + "
total write (G)\n", + "
0.02
\n", + "
1.12
\n", + "
-97.81%
\n", + "
\n", + "
0.02
\n", + "
1.12
\n", + "
-97.81%
\n", + "
avg read bw (MB/s)\n", + "
37.52
\n", + "
190.27
\n", + "
-80.28%
\n", + "
\n", + "
37.52
\n", + "
190.27
\n", + "
-80.28%
\n", + "
avg write bw (MB/s)\n", + "
0.18
\n", + "
39.61
\n", + "
-99.55%
\n", + "
\n", + "
0.18
\n", + "
39.61
\n", + "
-99.55%
\n", + "
read bw %75\n", + "
59.27
\n", + "
411.58
\n", + "
-85.60%
\n", + "
\n", + "
59.27
\n", + "
411.58
\n", + "
-85.60%
\n", + "
read bw %95\n", + "
173.05
\n", + "
484.54
\n", + "
-64.29%
\n", + "
\n", + "
173.05
\n", + "
484.54
\n", + "
-64.29%
\n", + "
read bw max\n", + "
236.70
\n", + "
510.35
\n", + "
-53.62%
\n", + "
\n", + "
236.70
\n", + "
510.35
\n", + "
-53.62%
\n", + "
time_rd_morethan_95\n", + "
0.05
\n", + "
0.03
\n", + "
41.96%
\n", + "
\n", + "
0.05
\n", + "
0.03
\n", + "
41.96%
\n", + "
write bw %75\n", + "
0.07
\n", + "
1.07
\n", + "
-93.45%
\n", + "
\n", + "
0.07
\n", + "
1.07
\n", + "
-93.45%
\n", + "
write bw %95\n", + "
1.23
\n", + "
165.69
\n", + "
-99.25%
\n", + "
\n", + "
1.23
\n", + "
165.69
\n", + "
-99.25%
\n", + "
write bw max\n", + "
1.70
\n", + "
812.51
\n", + "
-99.79%
\n", + "
\n", + "
1.70
\n", + "
812.51
\n", + "
-99.79%
\n", + "
time_wr_morethan_95\n", + "
0.00
\n", + "
0.03
\n", + "
-100.00%
\n", + "
\n", + "
0.00
\n", + "
0.03
\n", + "
-100.00%
\n", + "
cached mean\n", + "
88.33
\n", + "
93.90
\n", + "
-5.93%
\n", + "
\n", + "
88.33
\n", + "
93.90
\n", + "
-5.93%
\n", + "
cached 75%\n", + "
132.00
\n", + "
145.00
\n", + "
-8.97%
\n", + "
\n", + "
132.00
\n", + "
145.00
\n", + "
-8.97%
\n", + "
cached max\n", + "
160.00
\n", + "
188.00
\n", + "
-14.89%
\n", + "
\n", + "
160.00
\n", + "
188.00
\n", + "
-14.89%
\n", + "
used mean\n", + "
2,060.73
\n", + "
834.00
\n", + "
147.09%
\n", + "
\n", + "
2,060.73
\n", + "
834.00
\n", + "
147.09%
\n", + "
used 75%\n", + "
2,343.00
\n", + "
852.00
\n", + "
175.00%
\n", + "
\n", + "
2,343.00
\n", + "
852.00
\n", + "
175.00%
\n", + "
used max\n", + "
2,346.00
\n", + "
859.00
\n", + "
173.11%
\n", + "
\n", + "
2,346.00
\n", + "
859.00
\n", + "
173.11%
\n", + "
rx MB/s 75%\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
rx MB/s 95%\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
rx MB/s 99%\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
\n", + "
0.00
\n", + "
0.00
\n", + "
nan%
\n", + "
pgin mean\n", + "
37.37
\n", + "
190.21
\n", + "
-80.35%
\n", + "
\n", + "
37.37
\n", + "
190.21
\n", + "
-80.35%
\n", + "
pgin 75%\n", + "
59.00
\n", + "
412.00
\n", + "
-85.68%
\n", + "
\n", + "
59.00
\n", + "
412.00
\n", + "
-85.68%
\n", + "
pgin max\n", + "
352.00
\n", + "
509.00
\n", + "
-30.84%
\n", + "
\n", + "
352.00
\n", + "
509.00
\n", + "
-30.84%
\n", + "
pgout mean\n", + "
0.13
\n", + "
40.97
\n", + "
-99.68%
\n", + "
\n", + "
0.13
\n", + "
40.97
\n", + "
-99.68%
\n", + "
pgout 75%\n", + "
0.00
\n", + "
1.00
\n", + "
-100.00%
\n", + "
\n", + "
0.00
\n", + "
1.00
\n", + "
-100.00%
\n", + "
pgout max\n", + "
2.00
\n", + "
840.00
\n", + "
-99.76%
\n", + "
\n", + "
2.00
\n", + "
840.00
\n", + "
-99.76%
\n", + "
fault mean\n", + "
952,586.87
\n", + "
117,653.31
\n", + "
709.66%
\n", + "
\n", + "
952,586.87
\n", + "
117,653.31
\n", + "
709.66%
\n", + "
fault 75%\n", + "
1,426,717.00
\n", + "
205,151.00
\n", + "
595.45%
\n", + "
\n", + "
1,426,717.00
\n", + "
205,151.00
\n", + "
595.45%
\n", + "
fault max\n", + "
2,628,392.00
\n", + "
256,538.00
\n", + "
924.56%
\n", + "
\n", + "
2,628,392.00
\n", + "
256,538.00
\n", + "
924.56%
\n", + "
\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clientsr217agg
cpu%_avg\n", + "
0.88
\n", + "
0.45
\n", + "
96.45%
\n", + "
\n", + "
0.88
\n", + "
0.45
\n", + "
96.45%
\n", + "
cpu freq_avg\n", + "
3,460.22
\n", + "
3,241.92
\n", + "
6.73%
\n", + "
\n", + "
3,460.22
\n", + "
3,241.92
\n", + "
6.73%
\n", + "
pathlength_sum\n", + "
17,960.00
\n", + "
1,933.00
\n", + "
829.13%
\n", + "
\n", + "
17,960.00
\n", + "
1,933.00
\n", + "
829.13%
\n", + "
ipc_avg\n", + "
1.27
\n", + "
1.14
\n", + "
11.30%
\n", + "
\n", + "
1.27
\n", + "
1.14
\n", + "
11.30%
\n", + "
\n", + "\n", + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 indexStage IDJob IDreal_queryidqueryidtotal_timestdev_timeacc_totaltotal
008818127.981.9199.65%99.65%
11109180.29nan99.87%0.23%
221210180.09nan99.94%0.07%
331511180.07nan100.00%0.06%
\n", + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 indexStage IDJob IDreal_queryidqueryidtotal_timestdev_timeacc_totaltotal
00881813.860.3286.65%86.65%
111210180.98nan92.80%6.15%
22109180.74nan97.43%4.63%
331511180.41nan100.00%2.57%
\n", + "
" + ], + "text/plain": [ + "" + ] }, "metadata": {}, "output_type": "display_data" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2rmDvYuy9G2vAEjVRY4kmlsSafNWYxB5NNBG7JkaMNXZULKjYidjBgp2OSJ33D17mtwPbC837c117scueOXtmdnbm7NlnniMTBEEAERERERERERERERERERERERFRMWJS0A0gIiIiIiIiIiIiIiIiIiIiIiIyNAZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYRFSJxcXGQyWRKb35+fgZ7rYCAALHewMBAg9X7oYiMjBS3n7e3d0E3h4iIiIiIiIiIiABMmjRJ5RhrcHCwVvUtW7ZMZX0FPbZ67do1le0LCAgw2Gv5+fnpvB2JSHuBgYFG+SwTkXLy51AiKj4YGEVERPkiLS0NoaGhWLp0Kfr3749y5cppPSglH5Cmy03Ra2RkZODy5ctYuXIlRo4ciSZNmqBMmTKwtLSEjY0NPD090aNHD6xduxZJSUlq2ygIAm7evInffvsNY8eORcuWLVG2bFlYWVnBysoK7u7u6NixI3788Ue8fftWq20YHR2NXbt2YcqUKWjatCksLS11CpycO3euVtutQYMGKut79eoVgoKCMHPmTHTr1g3VqlWDvb09zM3N4ezsjPr162PChAkICwvTuI1v3rzBxo0bMWzYMNStWxclSpSAubk5SpYsibp162L8+PG4cuWKxvUlJCTgzz//xKhRo9CgQQM4OzvD3Nwcjo6OqF69OkaOHKnVgJ62+97+/fs1qjcmJgY//vgj2rVrJ+6HdnZ2qFixIgYMGIBdu3YhIyNDbT3yA5Wa3KZOnapR+wy1DxpTTEwMlixZgsaNG6NUqVKw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2+Pt27c4fvw4Tp48iUuXLuHevXuIiYmBTCYTx986d+4Mf39/ODs7F0g7DaWwjw8agzH6g1ZWVjhy5AhWrlyJrVu34s6dO5DJZPD29kbv3r0xbtw4lC5dGocOHcqHNVTPEOfiokDf/mBRk5ycjL/++kt8rGj2kOLEmGMzxrB9+3b07t0bW7duxdWrV8VzaHFStWpVhIaG4t9//0VQUBBCQkLw/PlzJCQkwN7eHp6envDx8UHbtm3RpUsXuLi4FHST9Sb/fa9WrVrw9fUtwNZQccGp9OiDI5/+VNl0e9ooqKnJiIiIiIoD+SkGjD2dARERfZgK8/R0RESKGGpKHCIiIiIiIgKKbsoGIiIiIiIiIiIiIiIiIiIiIiIiJRgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7MgEQRAKuhHKZGVlITo6Gvb29pDJZAXdHCKiYmvcuHHYvn27wer7+uuv8fXXXxusPiIq+nx8fPD48WOD1bd37160aNHCYPURERFRweJ3Ev08fvwYPj4+Bq0zJibGoPURERERERERERmSIAhITEyEu7s7TEyU54Uq1IFRT58+hYeHR0E3g4iIiIiIiIiIiIiIiIiIiIiICpknT56gXLlySp83y8e2aM3e3h5A9ko4ODgUcGuIiIiICs5vk04VdBOIiIiIiIiIiKgQGL2sdUE3gYiIiKjAJSQkwMPDQ4wtUqZQB0blTJ/n4ODAwCgiIiL6oHU991VBN4GIiIiIiIiIiAoBB4fbBd0EIiIiokIjJ7ZIGeWT7BERERERERERERERERERERERERVRDIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTtaB0alp6djwYIF6NChAxwcHCCTyRAcHJynnCAIWLt2LerUqQNra2u4urqiR48eSEpKMkS7iYiIiIiIiIiIiIiIiIiIiIiIlNI6MCo5ORmzZ8/G/fv3Ubt2baXlZs6cic8++wzVqlXDihUrMGPGDJibmyMlJUWvBhMREREREREREREREREREREREaljpu0C9vb2ePz4MTw8PLBr1y6cO3cuT5mIiAgsWbIEM2fOxPfffy/+f/Lkyfq1loiIiOgDNWCG1t02IiIiIiIiIiIqhm4WdAOIiIiIihCtM0aZmprCw8NDZZnt27fD3NwcM2bMAABOn0dERERERERERERERERERERERPlK68AoTYSGhqJ27drYu3cvXF1dYW9vDw8PD2zfvt0YL0dERERERERERERERERERERERCRhlMCoZ8+e4fXr1xg7diymTZuGnTt3okKFChgyZAiuXLmidLnU1FQkJCRIbkRERERERERERERERERERERERNoySmDUu3fvEBkZiUWLFmHatGkYMGAADhw4ADs7OyxZskTpcgsXLoSjo6N4UzdlHxERERERERERERERERERERERkSJGCYyysLAAAPTp00f8n52dHZo1a4YbN24oXW7GjBmIj48Xb0+ePDFG84iIiIiIiIiIiIiIiIiIiIiIqJgzSmBUqVKlJH9zlCxZEq9evVK6nKWlJRwcHCQ3IiIiIiIiIiIiIiIiIiIiIiIibRklMKpGjRoAgBcvXkj+//r1a7i7uxvjJYmIiIiIiIiIiIiIiIiIiIiIiERGCYzq1KkTAGDbtm3i/96+fYuzZ8+iQYMGxnhJIiIiIiIiIiIiIiIiIiIiIiIikZkuC61atQpxcXEIDw8HAGzevBkhISFwcnLC+PHj0aNHD9SvXx8zZ87Eq1ev4OnpiXXr1iEzMxPTp0836AoQERERERERERERERERERERERHlJhMEQdB2IW9vb0RFReX5v5eXFyIjIwFkT5s3depU7N+/H8nJyfD19cXChQvh5+en8eskJCTA0dER8fHxcHBw0LaZRERERMVG7Y21C7oJRERERERERERUCNz0v1nQTSAiIiIqcJrGFOmUMSon+EmVUqVKYePGjbpUT0REREREREREREREREREREREpBeTgm4AERERERERERERERERERERERGRoTEwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNhhYBQRERERERERERERERERERERERU7DIwiIiIiIiIiIiIiIiIiIiIiIqJih4FRRERERERERERERERERERERERU7DAwioiIiIiIiIiIiIiIiIiIiIiIih0GRhERERERERERERERERERERERUbHDwCgiIiIiIiIiIiIiIiIiIiIiIip2GBhFRERERERERERERERERERERETFDgOjiIiIiIiIiIiIiIiIiIiIiIio2GFgFBERERERERERERERERERERERFTsMjCIiIiIiIiIiIiIiIiIiIiIiomKHgVFERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOwwMIqIiIiIiIiIiIiIiIiIiIiIiIodBkYREREREREREREREREREREREVGxw8AoIiIiIiIiIiIiIiIiIiIiIiIqdhgYRURERERERERERERERERERERExQ4Do4iIiIiIiIiIiIiIiIiIiIiIqNgxK+gGEBEREREREREREREREREVF5mZmUhPTy/oZhARERUpZmZmMDU1hUwmM2y9Bq2NiIiIiIiIiIiIiIiIiOgDJAgCXrx4gbi4uIJuChERUZFkamoKV1dXODo6GixAioFRRERERERERERERERERER6ygmKcnV1hY2NjcEzXhARERVXgiAgIyMDCQkJeP78OVJSUuDm5maQuhkYRURERERERERERERERESkh8zMTDEoytnZuaCbQ0REVCTZ29vD0tISb968gaurK0xNTfWu08QA7SIiIiIiIiIiIiIiIiIi+mClp6cDAGxsbAq4JUREREWbra0tBEEQz636YmAUEREREREREREREREREZEBcPo8IiIi/Rj6XMrAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUERERERERERERERERERGRDmQyGfz8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mxESEgInJyeMHz9eaVo/b29vo6T8IyIiIiIiIiIiIiIiIiIqrCIXdS3oJhQ6ISEh2Lhxo+R/hw8fFu8HBAQoDIwCgN9//x1TpkzB9u3bYWlpiSlTpmDevHl6t2n69OmIi4vDrl27MH36dGRmZsLLyytPYFTu14qKipL8z8/PT6fAKABo164dwsLCsHDhQpw4cQIHDx6Es7Mzqlatip9++gnt2rXTqV4gO/Aqp/1BQUG4dOkSSpYsiYCAACxYsACurq46162LhQsXYv/+/Th79iz27NkDZ2dnNG7cGNOmTYOfn1+e8mXLlsXly5fxww8/YM+ePVi2bBns7Ozg4+MjZijLsXHjRnh5eSEoKAgrVqxAxYoVsWzZMlStWjXfA6MmTJgAMzMzrF69GmvXroWLiwsGDRqEBQsWwMbGRu/658yZgxIlSmDVqlX49ddfUb58eWzYsAFHjhwpkMCo3NMgnjp1SvI/RYFRABAUFITx48fj8OHD2L59O4Ds44CiwChNPqumpqbYu3cvfv31V2zatAlbt26FIAjw8PBA7969MWjQIP1XmIoEmZA7N50GvL29ERUVlef/Xl5eYtRfnheSyTBu3DisWrVK49dJSEiAo6Mj4uPj4eDgoG0ziYiIiIqN2htrF3QTiIiIiIiIiIioELjpf7Ogm0AKvH//Ho8ePUL58uVhZWVV0M0hIiIqsjQ9p2oaU6RTxihlwU+q6BB/RUREREREREREREREREREREREpBOTgm4AERERERERERERERERERERERGRoTEwioiIiIiIiIiIiIiIiIiIiIiIih2dptIjIiIiIiIiIiIiIiIiIiIqTAYOHIgLFy5oVNbMzAz37983couIiKigMTCKiIiIiIiIiIiIiIiIiIiKvB07dhR0E4iIqJDhVHpERERERERERERERERERERERFTsMDCKiIiIiIiIiIiIiIiIiIiIiIiKHQZGERERERERERERERERERERERFRscPAKCIiIiIiIiIiIiIiIiIiIiIiKnYYGEVERERERERERERERERERERERMUOA6OIiIiIiIiIiIiIiIiIiIiIiKjYYWAUEREREREREREREREREREREREVOwyMIiIiIiIiIiIiIiIiIiIiIiKiYoeBUUREREREREREREREREREREREVOyYFXQDiIiIiIiIiIiIiIiIiIiKtbmOBd0C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v3OM/+mnn+46f0mvmduVKVNGku5aj3GNHThw4L7f/+zZs8rOzlbXrl1zBM/27dt317H5qd34nf344485rhmPBfTw8ChIyfiHePAPXAUAAAAAAAAAAAAAlBpDhgyRJM2YMcN0jJwkBQcHS5KGDh16zzmMR6gZ3Y/dYKpWraqLFy/qypUrhZ7LEr169ZKzs7Nmz56tw4cP57h+5swZnT592uL5+/TpI0l6//33zY6emzVrltLS0tS3b1+L535QzZkzJ8ezSv97F0YeHh5KTU3VN998Y2o7dOiQtm3bdtf5S3rN3FmLJJ06dSrPPq+88ooMBoMmTJiQaxAsOjra4uMa69SpI+lWCOr2d37kyBEtWrTormPzU7vxO5s/f76SkpJM7Tt37tT333+vxo0by93d3aLaUbpxrh0AAAAAAAAAAAAAoNi0atVKL7/8ssLCwtS6dWt16NBB+/btU2RkpLp06SJvb+88x5YvX17e3t4aPHiwhg4dqtTUVK1atUq+vr6Frqtr166KjY1V165d1a9fP9nb28vBwcEU5JKkqKgoRUVFmY2Lj49XYGCg6bOPj49cXV0LfH9bW1t99tln6tmzpzw9PdWtWze5u7srNTVVsbGx2r9/v1avXq0GDRpY9HxjxozRypUrFRYWpri4OLVs2VLHjx/X119/rZo1axbrUYTx8fEKDQ01+yzJ7D16eXnJy8urUPc5c+aM2rRpo3bt2ungwYPauXOnPDw89Prrr5v1e+mll/Tll1+qb9++GjBggG7cuKFNmzapffv22rVrV57z52fNFFRoaKjpfRh/RkVFmb2b2//79lpmzJihf/3rX3rttddUrVo1SbeCiMYj5jw9PfX+++9r8uTJcnd31wsvvKDatWvr4sWLioqK0tmzZ3XhwgXZ2dkVuO5HH31UvXv31vr169W6dWu1a9dOv/76qzZs2KCOHTsqIiIiz7H5qf2pp57SK6+8oqVLl6pFixZ64YUXdOnSJa1bt06PPPKIPvroowLXjH8GglEAAAAAAAAAAAAAUIQmfL65pEt44Cxbtkzu7u5avny55syZo+rVq8vPz08BAQE5doPKbez48eO1evVqWVtba/z48QoKCip0TX5+frp69arCw8Pl5+enzMxMubi45AhG3XmvhIQEszYvLy+LglGS1LlzZx08eFDBwcHatWuXIiIiVKVKFbm7u+vD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duzQu+++q5iYGG3btq1QuxGNHj1aderUUdu2bVW7dm1dunRJ69at0zPPPKNt27apQ4cOOcaMHTtWGRkZGjZsmK5cuaJVq1bJy8tLMTExaty4cY7+zz77rKpWrao33nhDx44d08qVK3Xw4EEdOHBAtra2pn6WvPdTp06pW7du6tmzp5588kmFh4dr2rRpqlGjhl5//XVTvwsXLqht27b666+/1L9/f7m6umrz5s2mXdDut7CwMP3++++aP3++WfDQUi+//LLCw8PVqlUr/etf/9L169d14sQJffjhhxo3bpyqV6+eY0x+33tB3R5CDA0NVUJCQp59C7reLZGUlKTOnTvrqaee0tixY/Xdd99pwYIFOnr0qHbt2iUrq//tVVSQ9W5J7Tt37lTPnj1148YN9ezZU+7u7rpy5Yq2bNmicuXKKTQ01Kz/9evX1alTJ7m4uOiVV17Rrl279MUXXygrK0tr16416ztjxgz5+fmpWrVqGjBggGxtbbV161Z5e3srJCQkR1DLkjVTlAzZucUVHxBJSUlydHRUYmKiKlSoUNLlAAAAlJxAx5KuAAAAAAAAAA+CwMSSrgC5SE9P17lz5+Tm5iYbG5sc18/7fVsCVeVPrentiv2eVapUkcFg0N9//60ff/xRo0eP1pgxYzRkyBA1bdpUR44cUVpammxsbLRz5055e3srOTlZkuTs7Kxdu3apUaNGio6O1rx587Rz505NmzZNY8aMKVRdxt2h4uPj8z3GYDCoffv2ioqKynEtMDBQQUFB2rp1q7p06aJBgwbp888/11dffaUePXpo0qRJCg4O1q+//qpatWopPT1djz32mK5cuaLvvvtOLVq0MM01evRoLVq0SN9++22OQFlBxcfHy83NTcOGDcsRlrhdt27dFBERobCwML300kuSpKysLD3//PPasWOH1q5dq379+llcx7fffqt27czXX0JCgho2bChPT0/t3r3b1G58l9WrV9eJEydUqVIlSdKGDRvUu3dv9ejRQ1999ZWpv5eXl6Kjo9WlSxdFRESYAly+vr6aN2+ePvzwQ40fP16SCvzeje9PkiIiItS1a1dJt3aFcnd315NPPql9+/blmGPOnDmm0F16ero8PT11/Pjxe34PBZGVlaWGDRvq8uXLSkhIUPny5Qs1X1JSkipWrKiWLVvqu+++MwvC/frrr6pWrZqsra1N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T+Xm5qpfv36qV6+eEhMTFRYWptOnTys6OvqB12gSHh4uSbp27ZrmzZunVq1aKTAw0Hy9devWFv1PnTqldu3aKTs7W4MHD1bDhg21e/duvffee0pISNA///lP85GHxZGXl6fevXtr+/btaty4sYKDg1WtWjUlJSUpNDRUffr0MQfTbty4oY4dO+r48ePq1KmTXnrpJSUnJysmJka7du3St99+qzp16ljM/yDPXZLOnz+vnj17qmfPnurSpYt27Nih9957T//+97/v+dy3bNmijz/+WL169VLnzp118eJFbd++XTk5ObKzs1NeXp4CAwO1bds2tWjRQq+++qqysrK0YcMG+fv76+uvv1bLli3N812/fl0dOnTQxYsX1bt3bw0aNEi//vqrDh8+rLlz5+q1116zuP/Ro0fVoUMHVa1aVf369ZOrq6t++OEHffXVV/rss8/0/PPPF/s7AioCglEAAAAAAAAAAAAAgDJz4cIFOTs7y8HBQUePHtWYMWM0duxYBQUFycPDQ8eOHTOHSpYsWaLAwEC5urpKklxdXc0hlX379mnevHnas2ePpk2bVuxglElMTIykOzsBFXVMUYJRc+bMUbdu3fTLL79o/fr1WrVqlXr16iV7e3tFRkbq4sWLql+/vnJychQUFKTbt2/rwIEDevLJJ81zjBkzRosXL9aoUaPyBcqKyrSu1NRUzZs3T61bt77nWidMmKCMjAzFxsbqj3/8oyRp2rRp6tq1q3bu3Kl//OMfGjBgQLFqkaR58+Zp+/bt6tOnjzZs2GCxe9iRI0fk6Oho/rxw4UIdP35cI0eO1IoVK8zt77//vqZMmaL33ntPCxcutJi/qM/d5IcfflBkZKTCwsIkSX/729/Url07xcTEaOzYsXrqqacKXMfixYu1Z88ePfvss+a2y5cvq1q1aubat23bpqFDhyo2Nta8zkmTJqlly5YKCQnR7t27zWP37NmjtLQ0hYWFKTIy0uJe586dy3f/1atX69atW1q/fr26du1qbs/Ly1NaWlqBNQP/SzhKDwAAAAAAAAAAAABQZjIzM82hl+XLlyshIcEcADG1Z2RkSJKef/55nThxQosWLdKyZct0+PBhHTx4UG3atNHIkSPVvn17paWlaezYsdZZTBF4eHhIkho2bChJatSokSSpQYMGkqQff/xR0p2dhy5duqRXX33VIhQlSaGhoZKkDRs2lEnN2dnZ2rFjhxo0aKCgoCBze6VKlTRhwgRJ0saNG0t0j6VLl8rGxkZz5861CEVJ0lNPPSVnZ2fzZ9O9TKElkzfeeEP29vYF1lLU525iZ2en119/3fy5cuXKGjNmjMX9CzJw4ECLUJQkOTs7q0qVKpKkJUuWyMbGRgsWLLBY5+OPP66+fftq7969unr1qrnddGSinZ1dvns1adIkX1th/W1sbPT4448XWjfwv4IdowAAAAAAAAAAAAAAVvHiiy9q9erVGjRoUKF9PDw81LdvXy1evFi+vr5q2bKlpk6dqp49e6pSpfK/F4gpsGL6bW9vb/H5xo0bkqRDhw5Jkv7973/n28kpNzdXkpSSklLq9Up3dibKy8vTE088ke8Zt2nTRpKUnJxc7PkzMzN19uxZNWrUyHxc3r0kJyerWrVq+YJBTk5O8vLy0qlTp5Seni4nJyfztaI+dxMPDw+L8ZLMR9ydOnWq0No6d+5c6LXMzEydPn1aNWvW1IIFC/JdT01NldFo1Pfffy9fX19J0nPPPScXFxd98MEHSk1NVefOneXr66tmzZoVeI9+/fpp/vz5GjRokF5++WW1b99eTz/9tOrWrVtoXcD/EoJRAAAAAAAAAAAAAIAy4+joqMzMTElSjx49lJ6ebr5maq9evbok6cSJE5o5c6a2bdumwYMHKy4uTvXq1dObb76pUaNGyc7OTqNGjdK7776bb9eh8sJgMEiSOWBk+mz6bdrx59q1a5KkTZs2adOmTQXOlZ2dXZqlmmVlZUmSatWqle+aqc30XRWH6Tt3c3Mrcj2FBX1MO0tlZmZaBJuK+txNirvWu4/j+z3TOq9evXrPYxfv/l5r1aqlAwcOKCIiQp9//rn5iEcPDw/Nnz9fvXv3thj73HPPaefOnZo5c6YWLFigDz/8UJLUrl07RUVFycfHp9D7Av8Lyn98FgAAAAAAAAAAAABQYXh5eeny5cvm8I2J0WhUWlqa3N3dzbv6nDlzRm3atNH58+e1aNEiNWvWTKNGjdJnn32mwYMH64UXXtD06dP1wQcfWGMpD1WNGjUkSVu3bpXRaCzwJy4urkxqcXBwkCRduXIl3zVTm+nYw+IwBZguXbpU5HoKqkWSLl++XOJ6pHuv1fQ8CmI6Mq8gpnU+9dRThX6nRqNRHTt2tBjXuHFjrV69Wr/++qtOnDih9957T7/88osGDx6sH374Id99unTpop07dyojI0P/+te/NHLkSB04cED9+/cv0tqBioxgFAAAAAAAAAAAAACgzPj5+UmS9u/fb9GelJSk9PR0tWvXztzWv39/hYSEmAMm169f18aNG7V27VotXLhQK1as0OzZszV//vwS12VjY2M+ss4aTEepmY7UKy02NjaSdM+1NmnSRDY2Njp27Jhu375tce27776TpBLtROTo6Chvb2+lpaXp/Pnz9+3frFkzZWdn69y5cxbtGRkZunDhgtzc3PIdg/eg0tLSLHYvk+7sWGa6f3GY1nn69Oli7bBlMBjUokULTZ48WZMnT1ZOTo4SExML7f/YY4+pQ4cOWrFihbp27apTp07p119/LVbtQEVBMAoAAAAAAAAAAAAAUGaCgoIkSTNmzLA4ziwyMlKSNGzYsPvOYToOzeReu/YUVe3atfXTTz/p6tWrJZ6rOPr06SNXV1fNnj1bSUlJ+a6fO3dOZ8+eLfF9nJ2dZTAYdPr06UL7VKtWTV27dtUPP/xgPspNkm7evKkZM2ZIUol3Ixo9erTy8vI0btw43bp1y+LasWPHLHZw6tevnyTpb3/7m4xGo7l91qxZunHjxkPZGSknJ0eLFy82f75x44YWLlwoSerbt2+x5x09erSys7M1fvz4fOu8deuWdu7cadF28uRJ/fTTT/nmMX33NWvWtGg/cOCAcnJyLNp+++03paWl6bHHHlPVqlWLXTtQEZTPQ1YBAAAAAAAAAAAAABVSu3bt9PLLLys2Nlb+/v7q1KmTDh48qLi4OHXr1k2BgYGFjq1ataoCAwM1dOhQDRs2TNevX9eaNWs0fvz4EtfVvXt3JSYmqnv37howYIAcHBzk6OhoDnJJUnx8vOLj4y3GpaamKiIiwvw5ODhYnp6eD3x/e3t7rV69Wr1795avr6969Oghb29vXb9+XYmJiTp06JDWrl2rpk2bFnOFd1StWlUdO3ZUfHy8hgwZIn9/fz322GPy9vZWp06dzP1mzZql/fv3609/+pO++OILeXh4aO/evTp27JheeOGFEoeRxo0bpz179uiLL75Qs2bN1KNHD1WrVk0nTpzQ9u3blZKSolq1akmSxo4dq1WrVik2NlYpKSny8/PTyZMntWPHDtWrV09TpkwpUS2SVL9+fU2dOlXffvutGjRooB07dujkyZP64x//qKef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AADKzIEDByRJHTp0sGhv1aqVnJyczNdr1aqlxo0ba8qUKVq2bJmys7MVGRkpPz8/i3GpqalKT09Xq1atHriW4OBgc7Bp7ty5ku4c32dSo0aNe46ZOnXqfe8RFRWlQYMGaenSpQoODpaLi4uCg4MVHR2tkSNHWgR74uLi1LNnT+Xm5qpfv36qV6+eEhMTFRYWptOnTys6OvqB12gSHh4uSbp27ZrmzZunVq1aKTAw0Hy9devWFv1PnTqldu3aKTs7W4MHD1bDhg21e/duvffee0pISNA///lP85GHxZGXl6fevXtr+/btaty4sYKDg1WtWjUlJSUpNDRUffr0MQfTbty4oY4dO+r48ePq1KmTXnrpJSUnJysmJka7du3St99+qzp16uS7x6uvvqorV65oyJAhOnfunL744gv16NFD586dk52dnSRpyJAhWrlypT799FM98cQTFuN37dqlK1eu6PXXX7donzFjhsLCwlSnTh0NGjRI9vb2+vLLLxUYGKjo6OgCQ2Ymb731lqKiotSvXz+5uLgoOTlZX331lSTJ09PT/D1999132rJli/r06WPx3fz+ewJwbwSjAAAAAAAAAAAAAABl5sKFC3J2dpaDg4OOHj2qMWPGaOzYsQoKCpKHh4eOHTumnJwc2dnZacmSJQoMDJSrq6skydXV1RwO2rdvn+bNm6c9e/Zo2rRpxQ5GmZh24omIiCjymKIEo+bMmaNu3brpl19+0fr167Vq1Sr16tVL9vb/v717j6qyzvc4/tlscYPIRfECISKZ4mUoL3RSzNTR8o6YJno04ahTs1zOEe20Ii2VGRPMlWY5OY15idGjCamAYnkDZ/TkjSkvqaNkMDaplXITubPPH669cwd4AXEj836t1bLn9/ye3/P9Pc9jtJYffz9nxcTE6LvvvlObNm1UVFSkiRMnqqKiQl988YV69OhhHWP69OlauXKlpk6dWilQdrcs88rMzNTy5cvVrVu328711VdfVV5enuLi4vTiiy9Kkt566y0NHjxYu3bt0qeffqqxY8fWqBZJWr58uVJSUjRq1CglJCTYrB6Wnp4uV1dX6/GKFSt08uRJTZkyRatXr7a2/+EPf9C8efP0+9//XitWrKh0j4qKCh07dkyNGzeWJIWHhysuLk779u3TsGHDJEmDBg1SixYtFB8fr4ULF9pcv3nzZkk3w1MWX375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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAACVAAAAKnCAYAAABqVPSgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABuFElEQVR4nOzdbZiVZb03/u8I44DAIIKA6SiEkXo3iWZPJOIOfCBBxVSyh43ZFq1k32roDjLDcqdUpImZtz1IYrubQlOw0EiDNLoxNZWdWSYikCKCCoIyIKz/i/6s7QTImnHGMa7P5zjW0cy5fus8f+d1rZwXfI/rrCqVSqUAAAAAAAAAAAAU0C5t3QAAAAAAAAAAAEBbEaACAAAAAAAAAAAKS4AKAAAAAAAAAAAoLAEqAAAAAAAAAACgsASoAAAAAAAAAACAwhKgAgAAAAAAAAAACkuACgAAAAAAAAAAKKz2bd1AS9i8eXOeeuqpdOnSJVVVVW3dDgAAAAAAAAAA0MZKpVJefPHFvOUtb8kuu2z/OVM7RYDqqaeeSl1dXVu3AQAAAAAAAAAAvMksXbo0++yzz3bf3ykCVF26dEny983W1ta2cTcAAAAAAAAAAEBbW7NmTerq6srZou3ZKQJUW47tq62tFaACAAAAAAAAAADKtmSLtmf7h/sBAAAAAAAAAADs5ASoAAAAAAAAAACAwhKgAgAAAAAAAAAACkuACgAAAAAAAAAAKCwBKgAAAAAAAAAAoLDat3UDAAAAAAAAALwxSqVSNm3alFdeeaWtWwGAZquurk67du1abD4BKgAAAAAAAICdXKlUygsvvJBnn302mzZtaut2AOB123333dO7d+9UVVW97rkEqAAAAAAAAAB2csuXL88LL7yQ2tra1NbWpn379i3yD84A8EYrlUp56aWXsmLFiiTJXnvt9brnFKACAAAAAAAA2Ilt2rQpq1evzp577pkePXq0dTsA8Lp17NgxSbJixYr07NnzdR/nt0tLNAUAAAAAAADAm9PGjRtTKpXSqVOntm4FAFrMbrvtluTvf+deLwEqAAAAAAAAgAJwZB8AO5OW/LsmQAUAAAAAAAAAABSWABUAAAAAAAAAAFBYAlQAAAAAAAAA8AaYOHGioxT/fx//+MdTVVVVfs2dO3eHn3mzX783e3/A9glQAQAAAAAAAEAz3XLLLbnyyivbuo1/Op/5zGcybdq0TJgwoa1beU3/7Pd348aN+cpXvpKjjz46tbW12w2r9enTp1Gg7dWvo446qlx3xx135Ljjjsvee++dDh06pF+/fhk7dmxWrVrVaL5K6yrtb+rUqdvs7cgjj2zWur///e9zxhlnZP/9989uu+2W/v3754ILLsiLL77YrLpK+0uSu+++O//yL/+Sbt26pUePHjn66KOzYMGCZs1X6fVriueffz6nn356unXrlq5du2bUqFFZsWJFs+oqvX5JMmPGjBxyyCHp0KFD9txzz5xxxhlb3bfW1P4NWwkAAAAAAACAN50+n/95W7eQxZcf19YtNNstt9ySuXPn5txzz91h7UUXXZTPf/7zrd/UP4GBAwdm4MCBmTt3br761a9W9Jm2uH7/7Pd33bp1ufjii9O3b9/U19dn/vz526y78sors3bt2kZjixcvzhe/+MVGAaqHHnoo1dXV+exnP5tevXpl6dKl+fa3v50777wzDzzwQDp06NCkukr72+KKK65Ijx49yr/36tWr0fuVrjt58uTMnz8/H/nIR9K/f//86U9/ypQpU3LXXXdlwYIFad++fZPqKu3vwQcfzNChQ3PwwQfn0ksvzcaNG/Od73wnQ4YMyX333ZcDDjigSfM19fpVYuTIkbn//vszfvz4VFdXZ9KkSRk2bFjuvffetGvXrkl1lV6/X//61znllFPygQ98IJMnT86yZctyxRVX5I9//GN+97vfZZddWv/5UAJUAAAAAAAAAPAGaN++/VaBCyr3Zr9+b8b+unTpkiVLlqSuri4zZszYbsDmxBNP3Grsy1/+cqqqqnLaaaeVxy688MKt6t71rnfl+OOPz2233ZaTTz65SXWV9vfqPvv06bPd9ytd97zzzsuNN97Y6H7tu+++OffcczNz5sycdNJJTaqrtL/rr78+VVVV+dWvfpXa2tokybBhw3LAAQdkxowZueiii5o0X1Ov347MmTMn8+bNy9SpUzN69OgkyUEHHZThw4fnpptuyqmnntqkukqv36WXXpq99947d911V3bdddckydve9rZ86lOfys9//vOMGDHide2rEo7wAwAAAAAAAOCfXlVVVSZOnJhbbrkl9fX15eO7fvGLXyT5nyOxFi9e3Ohzffr0yemnn17+fUvdvffem5EjR6ZLly7p169fvv/972+1XlVVVX74wx/mySefbHTM1tSpUxvV7r///o3e/0eLFy9OVVVVJkyYkB49euSggw7K/PnzM2DAgHTv3j3f+c53GtU/++yzGTNmTHr37p0OHTrk0EMPLe+zqZ577rmMGzcu73znO9OlS5fU1tZm6NChWwUxJk6cmKqqqsyfPz8HH3xwOnTokHe961255557mlXXFDu6fq/2m9/8JkcffXS6du2arl275sgjj8wvf/nLJu+3Je/vFo888kg+9KEPpUuXLunSpUuOO+64PProo41qKv3+Vapdu3apq6tr1mdvvPHGHH744Tv8/F577ZUk2zzmbUd1Te2vVCplzZo1KZVKFX9mW+u+973v3SrsNnTo0CTJn//85ybXVdrfM888kw4dOpTDU0nSs2fP7fa+o/lez/3dllmzZqWmpiajRo0qjw0bNizdu3fPzJkzm1xX6fVbuHBhjjjiiHJ4KvmfUF9z/9vWVAJUAAAAAAAAAOwU7r333nzyk5/Mhz70oVx55ZUZOnToVoGpSv3rv/5r3vKWt2TSpEnZY4898m//9m954IEHyu9PmzYt06ZNy6BBg9KjR4/y79OmTcsRRxzRaK7Jkydn2rRpGTly5GuuOWfOnHzhC1/I4sWL88EPfjAnnHBCPvCBD2TcuHHZuHFjkmTNmjUZNGhQbrrpppx99tn55je/mW7duuX444/P3Llzm7zPRYsW5fvf/34GDx6cK664Il/60peybNmyDBkyZKtwT5KcdNJJGTJkSC677LK8+OKLGTZsWJ544olm11Wi0us3a9asfPCDH8ySJUty4YUX5hvf+Eb23nvvXHfddU3eb0vf3xUrVmTw4MG57777MmHChEyYMCH33ntvBg8enJUrV25Vv6PvX2tbsGBBHnvssXz0ox/d5vurV6/OM888k3vuuSfnnHNOqqqqMnDgwGbXVerggw8uh+M+/elP56WXXnpd/b3as88+m+R/AlfNqdtRf4MHD87q1aszbty4LFq0KI8++mjGjh2bPffcs1GQs6n7bSkLFy5M//79y0cdJskuu+yS+vr6LFy4sMl127Kt67d+/fpGcyVJx44dkyR/+tOfmr+hJnhzPTsOAAAAAAAAAJrpjjvuyH333ZdDDjmkPLZp06ZmzTVixIh8/etfL/+833775bbbbsuhhx6aJPn4xz+eJPnVr36VJUuWlH/flhNOOCFJ8te//jU/+9nPtlt33nnn5aMf/WjuuOOOLFq0KJdcckkWLFiQWbNm5fHHH88BBxyQr3/961m0aFEeeOCBvOMd70iSnH322RkwYEAuueSSHHnkkU3a59vf/vYsWbIkXbp0KY+dcsop6dOnT37wgx/ka1/7WqP6s846K5dcckmSZOTIkenXr1+uuOKKXHXVVc2qq0Ql12/Tpk0555xz0q9fv9x3333p3LlzkuTMM8/M008/3eT9tvT9veaaa7Jy5crMnz8/73//+5MkgwYNyqBBg3LNNdfk4osvblS/o+9fa5s2bVqqq6tzyimnbPP9Y445JgsWLEiSdOvWLddcc00GDBjQ7Lod6dSpU8aMGZMjjjgi1dXV+cUvfpFrr702TzzxRG6//fYWWfc73/lOOnfuvMPj4rZVV2l/Z555Zh566KFceeWVmTx5cpK/fyd/97vfZZ999mn2flvK8uXLy30MHTo0zz77bH7/+9+nZ8+eeeSRR5pcty3bun79+vXLQw891Kju//2//5fkfwJXrU2ACgAAAAAAAICdwlFHHdUoPJX8/Yir5nj104Tq6urSo0ePLFu27HX1tyNbjvLq3r171q5dmyTZY489kiTPP/98kuTmm2/Ou9/97vTu3bvRk4sGDhyY66+/Pps2bWrSnl8dJHrllVeyevXq7LbbbunRo8c2nxh12mmnlX/u06dP3vOe92TevHnNrmsp999/f5YsWZIpU6aUw1NbvPpJN03db0uZO3du3vrWt5bDU0ly+OGHp2/fvpk7d+5WAaq2+P5tsXHjxkyfPj1HH310unfvvs2aKVOmZOXKlXnooYdy66235i1vecvrqtuRU045pVGY69RTT02PHj0yefLk/OY3v9nqqWBNXfcnP/lJfvKTn+Rb3/rWdvf8WnWV9te+ffv0798/H/nIRzJixIi8/PLLmTRpUk444YTMmzevPGdT99tSGhoaysfoLV68OM8//3w2btyYmpqarF+/vsl1/2h71+9Tn/pUxo4dm4kTJ+Zf//Vfs3Tp0px99tnZfffd09DQ0Cp7/UcCVAAAAAAAAADsFA444IAWm6t3796Nft9tt92yYcOGFpt/W9q3//s/4VdXVzf6OUl57ccffzwNDQ3Zc889tznHmjVr0q1bt4rX3Lx5c6ZMmZKrr746TzzxRKMndm0rCFFXV9fo93322Se//vWvm13XUraEnw488MDXrGvqflvK008/nX333Xer8X333Td/+9vfthpvi+/fFrNnz87KlSu3e3xfkrz73e9OkgwbNiyDBg3KEUcckblz52bQoEHNqmuOT3/605k8eXLmzZu3VaCoKes+/PDD+dSnPpWTTz45Y8eO3e56lda9Vn+XXXZZrr322jz22GPlANKQIUOy//77Z/LkyfnqV7/arP22lJqamvL37MEHH8ymTZvSqVOnNDQ0NDpir9K6V3ut63fWWWfl97//fS655JJccsklqaqqyrnnnpsHHnggzz33XKvs9R8JUAEAAAAAAACwU9h9992b/JntHfG3yy67vM5uWlapVEqSVFVV5Zhjjsm4ceO2WfePT1/akUmTJmXChAn52Mc+lksvvbT8VJjTTjutvOaObAmCtFRda2qJ/b4R2vL7N23atHTq1Kl8NOGOfOADH0ivXr3yve997zWDUZXWVWrLU6W2PJ2tOes+/fTTGT58eA488MDccMMNqaqq2uYcldbtqL/rrrsuRxxxRKP/L9TV1eXAAw/M/PnzmzxfS+vdu3eeeeaZJI3/W7JixYpGob5K67bY0fWrrq7OD3/4w3z1q1/NokWLst9++2XfffdN3759dxiKbCkCVAAAAAAAAADs9LYEFl566aXy2ObNm7NixYrXNW8lQYqW9Na3vjUvv/xyhg4d2iLzTZ8+PUcccURuvPHG8tjGjRvzwgsvbLN+6dKljZ70tWzZsq2eNtWUui335ZVXXmnuFpIkffv2TZI88sgjGTJkyHbrmrrflrq/e+21V5YsWbLV+JNPPlnu/c1g9erVue222zJy5Mh06tSp4s9t2LChHKhpibpKLF26NEm2+zS2Ha27du3aHHfccamurs5tt92Wjh07bvOzldZV0t/f/va3bYY2N23alHXr1jV5vpZWX1+f6667LuvXry8/SWrz5s1ZuHBhjj322CbXJU27fnvvvXf23nvvJMmiRYuyePHijB49uqW3uU1vrsgsAAAAAAAAALSCLf8of//995fHZs6c+bqPRevSpUtWrlz5ugNAlRo5cmTuvvvubT6tZkvAoinatWtXPiZwi+9973vb3c+Pf/zj8s+LFy/Ovffem8GDBze7bp999kmS/PWvf21y76/2rne9K3V1dfnWt76VF198sdF7rw7JNXW/LXV/jzzyyCxatCi/+93vymN33313Fi9enCOPPPJ1zd2SfvrTn2b9+vXbPb5vy1GJr/bLX/4yq1atahSYq7SuUitXrtxq7KqrrkqSHHXUUU1e95VXXsnJJ5+cpUuX5vbbb0/Pnj23uW6ldZX217dv39x1111Zu3Zteezxxx/Po48+mvr6+ibP19KGDx+ehoaGTJ8+vTw2e/bsrFq1KiNGjGhyXaXXb1tPf7v44ovTrl27nHbaaS2xtR3yBCoAAAAAAAAAdnrve9/70qNHj5x//vlZunRpXnrppUyfPr18hFtzDRw4MFOmTMmYMWNy4oknZtddd019fX05sPXwww/n4YcfLv+cpPz0o86dO+fEE09s0noXXnhhZsyYkaFDh+ass87KgQcemGXLluXOO+9MbW1tZs+e3aT5jj/++EycODFnn312Dj300PzhD3/Irbfemh49emyz/tprr83atWtTV1eXa665JjU1NRk7dmyz6/bdd9+85z3vyVe+8pVs3rw5tbW1Oeyww8phl0qvX7t27fLtb387I0eOzGGHHZbRo0enZ8+eueeee7Ju3br89Kc/bdZ+W+r+fuYzn8m3v/3tnHjiiTn33HOTJFdccUV69uyZz3zmM9u5Oy3j6quvzgsvvJA//vGPSf5+RN8999yT3XffPeecc06j2mnTpqV79+455phjtjnXBz/4wbztbW/LMccck65du+a///u/c91112WPPfYo76spdZX2N2jQoBx66KE55JBD0rFjx8yZMye33nprPvGJT+Swww5r8rqf+9zncscdd2Ts2LFZsGBBFixYUH6vX79+ef/739+kukr7GzduXMaMGZPDDz88Z5xxRtavX5+rr7461dXVOf/888t1lc7X1Pu7I0cddVQGDRqUsWPH5qmnnkp1dXUuv/zyDBgwIB/+8IebXFfp9XvyySczevToHH/88encuXN+9rOf5Y477siECRPy9re/vUl7aLbSTmD16tWlJKXVq1e3dSsAAAAAAAAAbyovv/xy6ZFHHim9/PLLbd1Kq0pS+tKXvvSaNb/73e9KAwYMKHXs2LH03ve+t3T//feX9ttvv9Lo0aPLNddff30pSemJJ55o9Nl/rNti06ZNpc997nOlXr16laqqqkpJStdff335/S996UulJNt87bfffqVSqVR64oknSklKv/71r0ulUqk0evTo0uDBg7f5XqlUKq1cubL02c9+trTPPvuUdt1111JdXV3plFNOKc2ZM6eyi/UqDQ0NpQsuuKD0lre8pdSxY8fS4MGDSw899FCpX79+peOOO26rfcybN6/0jne8o1RTU1M65JBDSnPnzm00X6V1r/bXv/61NHjw4FJNTU0pSemKK65o0vV7tblz55aGDh1a6tKlS6lLly6lI444onT77bc3eb9btMT93eKPf/xj6dhjjy116tSp1KlTp9Kxxx5beuSRRxrVNPX7V4n99tuvov4WL15cqqqqKp111lnbnetrX/taaeDAgaU999yztOuuu5b69u1bOv3000tPPvlks+oq7e/zn/986YADDih16dKlVF1dXerfv3/psssuK73yyivNWnfw4MHbvW+vvs6V1lXaX6lUKt18882l973vfaXa2tpSp06dSkOHDi0tWLCgUU1T5qv0/lZq1apVpU984hOlrl27lrp06VI65ZRTSk8//XSz6iq9fs8991xp2LBhpe7du5dqampK9fX1pWuvvba0efPm1+y1kr9vlWaKqkqlbTwH65/MmjVr0rVr16xevTq1tbVt3Q4AQJvp8/mft3ULAABtbvHlx7V1CwAA8Kayfv36PPHEE+nbt286dOjQ1u3wT2rixIm55JJLtnnUVnPqAF6vSv6+VZop2qW1mgQAAAAAAAAAAHiza9/WDQAAAAAAAAAALWf58uUV1fXu3buVO6E1uL80he9LZQSoAAAAAAAAAGAnstdee1VUt3HjxrRvLzbwz8b9pSl8XypT3J0DAAAAAAAAwE5ozpw5FdW1a9eu4jknTpyYiRMntlgdzdca95edl+9LZQSoAAAAAAAAAGAnMnTo0LZugVbk/tIUvi+V2aWtGwAAAAAAAAAAAGgrAlQAAAAAAAAAAEBhCVABAAAAAAAAAACFJUAFAAAAAAAAAAAUlgAVAAAAAAAAAABQWAJUAAAAAAAAAABAYQlQAQAAAAAAAAAAhSVABQAAAAAAAABvgIkTJ6aqqqqt23hT+PjHP56qqqrya+7cuTv8zJv9+r3Z+wO2T4AKAAAAAAAAoMgmdm371z+xW265JVdeeWVbt/FP5zOf+UymTZuWCRMmtHUrr+mf/f5u3LgxX/nKV3L00UentrZ2u2G1Pn36NAq0vfp11FFHlevuuOOOHHfccdl7773ToUOH9OvXL2PHjs2qVasazVdpXaX9TZ06dZu9HXnkkc1a9/e//33OOOOM7L///tltt93Sv3//XHDBBXnxxRebVVdpf0ly991351/+5V/SrVu39OjRI0cffXQWLFjQrPkqvX5N8fzzz+f0009Pt27d0rVr14waNSorVqxodt2rjRs3LlVVVTnnnHO2eq+S69Ka2r9hKwEAAAAAAADATuaWW27J3Llzc+655+6w9qKLLsrnP//51m/qn8DAgQMzcODAzJ07N1/96lcr+kxbXL9/9vu7bt26XHzxxenbt2/q6+szf/78bdZdeeWVWbt2baOxxYsX54tf/GKjANVDDz2U6urqfPazn02vXr2ydOnSfPvb386dd96ZBx54IB06dGhSXaX9bXHFFVekR48e5d979erV6P1K1508eXLmz5+fj3zkI+nfv3/+9Kc/ZcqUKbnrrruyYMGCtG/fvkl1lfb34IMPZujQoTn44INz6aWXZuPGjfnOd76TIUOG5L777ssBBxzQpPmaev0qMXLkyNx///0ZP358qqurM2nSpAwbNiz33ntv2rVr1+S6LRYtWpTrrrtum2s29bq0BgEqAAAAAAAAAHgDtG/ffqvABZV7s1+/N2N/Xbp0yZIlS1JXV5cZM2ZsN2Bz4oknbjX25S9/OVVVVTnttNPKYxdeeOFWde9617ty/PHH57bbbsvJJ5/cpLpK+3t1n3369Nnu+5Wue9555+XGG29sdL/23XffnHvuuZk5c2ZOOumkJtVV2t/111+fqqqq/OpXv0ptbW2SZNiwYTnggAMyY8aMXHTRRU2ar6nXb0fmzJmTefPmZerUqRk9enSS5KCDDsrw4cNz00035dRTT21S3atdeOGF+eQnP5mrrrpqq/eael1agyP8AAAAAAAAAPinV1VVlYkTJ+aWW25JfX19+fiuX/ziF0n+50isxYsXN/pcnz59cvrpp5d/31J37733ZuTIkenSpUv69euX73//+1utV1VVlR/+8Id58sknGx2zNXXq1Ea1+++/f6P3/9HixYtTVVWVCRMmpEePHjnooIMyf/78DBgwIN27d893vvOdRvXPPvtsxowZk969e6dDhw459NBDy/tsqueeey7jxo3LO9/5znTp0iW1tbUZOnToVkGMiRMnpqqqKvPnz8/BBx+cDh065F3velfuueeeZtU1xY6u36v95je/ydFHH52uXbuma9euOfLII/PLX/6yyfttyfu7xSOPPJIPfehD6dKlS7p06ZLjjjsujz76aKOaSr9/lWrXrl3q6uqa9dkbb7wxhx9++A4/v9deeyXJDo9v21ZdU/srlUpZs2ZNSqVSxZ/Z1rrvfe97twq7DR06NEny5z//ucl1lfb3zDPPpEOHDuWQUJL07Nlzu73vaL7Xc3+3ZdasWampqcmoUaPKY8OGDUv37t0zc+bMJtdtcc899+SOO+7IF77whW2u29Tr0hoEqAAAAAAAAADYKdx777355Cc/mQ996EO58sorM3To0K0CU5X613/917zlLW/JpEmTsscee+Tf/u3f8sADD5TfnzZtWqZNm5ZBgwalR48e5d+nTZuWI444otFckydPzrRp0zJy5MjXXHPOnDn5whe+kMWLF+eDH/xgTjjhhHzgAx/IuHHjsnHjxiTJmjVrMmjQoNx00005++yz881vfjPdunXL8ccfn7lz5zZ5n4sWLcr3v//9DB48OFdccUW+9KUvZdmyZRkyZMhW4Z4kOemkkzJkyJBcdtllefHFFzNs2LA88cQTza6rRKXXb9asWfngBz+YJUuW5MILL8w3vvGN7L333o2ODat0vy19f1esWJHBgwfnvvvuy4QJEzJhwoTce++9GTx4cFauXLlV/Y6+f61twYIFeeyxx/LRj350m++vXr06zzzzTO65556cc845qaqqysCBA5tdV6mDDz64HI779Kc/nZdeeul19fdqzz77bJL/CVw1p25H/Q0ePDirV6/OuHHjsmjRojz66KMZO3Zs9txzz0ZBzqbut6UsXLgw/fv3Lx91mCS77LJL6uvrs3DhwibXJX8PgZ1//vk577zzthuKaup1aQ1vrmfHAQAAAAAAAEAz3XHHHbnvvvtyyCGHlMc2bdrUrLlGjBiRr3/96+Wf99tvv9x222059NBDkyQf//jHkyS/+tWvsmTJkvLv23LCCSckSf7617/mZz/72XbrzjvvvHz0ox/NHXfckUWLFuWSSy7JggULMmvWrDz++OM54IAD8vWvfz2LFi3KAw88kHe84x1JkrPPPjsDBgzIJZdckiOPPLJJ+3z729+eJUuWpEuXLuWxU045JX369MkPfvCDfO1rX2tUf9ZZZ+WSSy5JkowcOTL9+vXLFVdcsdWxXJXWVaKS67dp06acc8456devX+6777507tw5SXLmmWfm6aefbvJ+W/r+XnPNNVm5cmXmz5+f97///UmSQYMGZdCgQbnmmmty8cUXN6rf0fevtU2bNi3V1dU55ZRTtvn+MccckwULFiRJunXrlmuuuSYDBgxodt2OdOrUKWPGjMkRRxyR6urq/OIXv8i1116bJ554IrfffnuLrPud73wnnTt3zogRI5pcV2l/Z555Zh566KFceeWVmTx5cpK/fyd/97vfZZ999mn2flvK8uXLy30MHTo0zz77bH7/+9+nZ8+eeeSRR5pclyQ/+tGPsmjRoowbN26761Z6XVqTABUAAAAAAAAAO4WjjjqqUXgq+fsRV83x6qcJ1dXVpUePHlm2bNnr6m9HtjydpXv37lm7dm2SZI899kiSPP/880mSm2++Oe9+97vTu3fvRk8uGjhwYK6//vps2rSpSXt+dZDolVdeyerVq7PbbrulR48e23xi1GmnnVb+uU+fPnnPe96TefPmNbuupdx///1ZsmRJpkyZUg5PbfHqJwU1db8tZe7cuXnrW99aDk8lyeGHH56+fftm7ty5WwWo2uL7t8XGjRszffr0HH300enevfs2a6ZMmZKVK1fmoYceyq233pq3vOUtr6tuR0455ZRGYa5TTz01PXr0yOTJk/Ob3/xmq6eCNXXdn/zkJ/nJT36Sb33rW9vd82vVVdpf+/bt079//3zkIx/JiBEj8vLLL2fSpEk54YQTMm/evPKcTd1vS2loaMiuu+6a5O9Hiz7//PPZuHFjampqsn79+ibXvfzyy5kwYULGjx/f6Hi+f1TpdWlNAlQAAAAAAAAA7BQOOOCAFpurd+/ejX7fbbfdsmHDhhabf1vat//7P+FXV1c3+jlJee3HH388DQ0N2XPPPbc5x5o1a9KtW7eK19y8eXOmTJmSq6++Ok888USjJ3a9OgixRV1dXaPf99lnn/z6179udl1L2RJ+OvDAA1+zrqn7bSlPP/109t13363G99133/ztb3/barwtvn9bzJ49OytXrtzu8X1J8u53vztJMmzYsAwaNChHHHFE5s6dm0GDBjWrrjk+/elPZ/LkyZk3b95WgaKmrPvwww/nU5/6VE4++eSMHTt2u+tVWvda/V122WW59tpr89hjj5UDSEOGDMn++++fyZMn56tf/Wqz9ttSampqyt+zBx98MJs2bUqnTp3S0NDQ6Li+SusmT56cUqmUz372s6+57uu5Li1FgAoAAAAAAACAncLuu+/e5M9s74i/XXbZ5XV207JKpVKSpKqqKsccc8x2j8P6x6cv7cikSZMyYcKEfOxjH8ull15aftLLaaedVl5zR7YEHlqqrjW1xH7fCG35/Zs2bVo6depUPppwRz7wgQ+kV69e+d73vveawahK6yq15alSW57O1px1n3766QwfPjwHHnhgbrjhhlRVVW1zjkrrdtTfddddlyOOOKLR/xfq6upy4IEHZv78+U2er6X17t07zzzzTJLG/y1ZsWJFo1BfJXWrV6/OpEmT8h//8R+NnpaXJOvWrcuyZcvSq1evVFdXv67r0lIEqAAAAAAAAADY6W35h/mXXnqpPLZ58+asWLHidc1bSZCiJb31rW/Nyy+/nKFDh7bIfNOnT88RRxyRG2+8sTy2cePGvPDCC9usX7p0aaMnfS1btmyrp001pW7LfXnllVeau4UkSd++fZMkjzzySIYMGbLduqbut6Xu71577ZUlS5ZsNf7kk0+We38zWL16dW677baMHDkynTp1qvhzGzZsKAdqWqKuEkuXLk2S7T6NbUfrrl27Nscdd1yqq6tz2223pWPHjtv8bKV1lfT3t7/9bZuhzU2bNmXdunVNnq+l1dfX57rrrsv69evLT5LavHlzFi5cmGOPPbZJdc8//3zWrl2bL37xi/niF7/YaJ2pU6dm6tSp+f3vf5/DDjvsdV2XlvLmiswCAAAAAAAAQCvYe++9kyT3339/eWzmzJmv+1i0Ll26ZOXKla87AFSpkSNH5u67797mU1m2BCyaol27duVjArf43ve+t939/PjHPy7/vHjx4tx7770ZPHhws+v22WefJMlf//rXJvf+au9617tSV1eXb33rW3nxxRcbvffqkFxT99tS9/fII4/MokWL8rvf/a48dvfdd2fx4sU58sgjX9fcLemnP/1p1q9fv93j+7Yclfhqv/zlL7Nq1apGgblK6yr1j08wSpKrrroqSXLUUUc1ed1XXnklJ598cpYuXZrbb789PXv23Oa6ldZV2l/fvn1z1113Ze3ateWxxx9/PI8++mjq6+ubPF9LGz58eBoaGjJ9+vTy2OzZs7Nq1aqMGDGiSXW9evXKrFmztnolyXHHHZdZs2blbW97W5LKr0tr8gQqAAAAAAAAAHZ673vf+9KjR4+cf/75Wbp0aV566aVMnz69fIRbcw0cODBTpkzJmDFjcuKJJ2bXXXdNfX19ObD18MMP5+GHHy7/nKT89KPOnTvnxBNPbNJ6F154YWbMmJGhQ4fmrLPOyoEHHphly5blzjvvTG1tbWbPnt2k+Y4//vhMnDgxZ599dg499ND84Q9/yK233poePXpss/7aa6/N2rVrU1dXl2uuuSY1NTUZO3Zss+v23XffvOc978lXvvKVbN68ObW1tTnssMPKYZdKr1+7du3y7W9/OyNHjsxhhx2W0aNHp2fPnrnnnnuybt26/PSnP23Wflvq/n7mM5/Jt7/97Zx44ok599xzkyRXXHFFevbsmc985jPbuTst4+qrr84LL7yQP/7xj0n+fkTfPffck9133z3nnHNOo9pp06ale/fuOeaYY7Y51wc/+MG87W1vyzHHHJOuXbvmv//7v3Pddddljz32KO+rKXWV9jdo0KAceuihOeSQQ9KxY8fMmTMnt956az7xiU/ksMMOa/K6n/vc53LHHXdk7NixWbBgQRYsWFB+r1+/fnn/+9/fpLpK+xs3blzGjBmTww8/PGeccUbWr1+fq6++OtXV1Tn//PPLdZXO19T7uyNHHXVUBg0alLFjx+app55KdXV1Lr/88gwYMCAf/vCHm1TXsWPHDB8+fJvr9OnTp9F7lV6X1iRABQAAAAAAAFBkE1e3dQdviJqamsyaNSuf/vSnc+mll+ad73xnpk+fnpNOOul1zXvqqafmvvvuy4033pipU6emVCrl+uuvz+mnn54kufnmm3PJJZc0+swnPvGJJMl+++3X5ABVbW1tfvvb3+ZLX/pSZsyYkRUrVqRXr1553/velzFjxjS5//Hjx2fdunX50Y9+lBtuuCHvec97cvvtt2/3uvz0pz/NZz/72Tz22GM56KCDMnv27G0ezVdpXZL813/9Vz71qU/l/PPPT0NDQ6644opygKop12/EiBG58847c+mll+byyy9PkhxyyCGZMGFCs/fbUve3Z8+emTdvXj73uc/lP//zP5P8PSTzzW9+c7vhrZbyjW98I08++WT59x/84Afl/l4dsHnyySdz9913Z8yYMVs9pWuLz3zmM7nlllsyadKkrF69OnvvvXdGjRqVSy65JPvuu2+T6yrt78QTT8wtt9ySWbNmZf369enbt28uu+yyXHDBBc3q76GHHkqSTJkyZas9jh49uhyMqrSu0v7OPPPM9OjRI1/72tfyxS9+MZs2bcr73//+zJgxI+94xzvKdZXOV+n1q1RV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r702zz77bO6///4ceuihSZK+ffvmjDPOaNZ8X//617No0aI88MADecc73pEkOfvsszNgwIBccskl2wzE3HHHHbnvvvtyyCGHlMc2bdpU/vmEE05Ikvz1r3/dboCq0nX/9Kc/5cknn8x3v/vd/Nu//Vv586+88kqz9vv2t789S5YsSZcuXcpjp5xySvr06ZMf/OAH+drXvtak/Tbn+lVixIgR+d73vpckGT16dPbdd99cdtllue2225q07sc//vEkya9+9assWbKk/Ps/qrSuNb4vAAAAAAAAAIAj/KBiv/71r7P//vuXw1NJMmrUqNc8Ku+13HzzzXn3u9+d3r17Z+XKlVm5cmWee+65DBw4MPPnz99m0OWoo45qFIZJ/n5UYWus26lTpyTJb3/722zYsKH8+fbtm5e77NKlSzk89corr2TVqlXZbbfd0qNHjzzxxBPb/Mxr7bc5168So0aNKv9cW1ubYcOG5Te/+U15rLXW3ZG2+r4AAAAAAAAAwM7OE6igQsuWLcs+++zTaGy33XZL9+7dmzXf448/noaGhuy5557bfH/NmjXp1q1bo7FtHXPXWuvuv//+GTNmTK677rrcfPPN+cAHPpAhQ4bkjDPO2KqvSmzevDlTpkzJ1VdfnSeeeKJR4Gf9+vXb/Mxr7bc5168S/3iP99lnn7z44ot58cUX06VLl1Zbd0fa6vsCAAAAAAAAADs7ASqoUE1Nzev6/D8+IaiqqirHHHNMxo0bt836zp07bzW2++67v64emrru//k//ydnnXVWbr/99tx+++0ZN25cvvvd7+bBBx9Mhw4dmrTupEmTMmHChHzsYx/LpZdeWg6enXbaaSmVStv8zGvttznXr7mqqqrK9/+NXPcfe2iL7wsAAAAAAAAA7OwEqKBCdXV1eeyxxxqNvfTSS1m1alWjsV133bX83habN2/OihUrGtW99a1vzcsvv5yhQ4e2Usfb1tR1Dz300Bx66KGZMGFCvvnNb+Zzn/tc7rzzzhx33HFNWnf69Ok54ogjcuONN5bHNm7cmBdeeKFJ82zRWtdv2bJl+V//6381+r13797l+9rUdSs94nFHdW31fQEAAAAAAACAnd0ubd0A/LM48sgj89hjj+XBBx8sj02fPn2rpyftvffeSZL777+/PDZz5sxs2LChUd3IkSNz9913Z/78+VuttXTp0hbsvLFK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+cEPfpAbb7wxF154Ya1HAQAAAICNElABAAAAUDWHHnpoTj311BxxxBG1HuUT66KLLsrbb79d6zEAAAAACquu1gMAAAAAQJHV1dWlrs6v6QAAAABqxR2oAAAAAAqkVCpl4sSJueOOO9LU1JSuXbtmr732yt13313Zs2zZsowdOzaNjY3p2rVrBg8e3OF4kqxYsSIXXHBBBg0alB49eqShoSHDhw/P3Llzq34NLS0tGTp0aHbYYYcMHDgwd955Z/r165fTTz+9smfq1KkplUpZuHBhh/f+975ky673fZv7/N5+++00NDTke9/73gbvu/7661MqlfLUU09V1gYMGJBSqVR5bcqDDz6YwYMHp2vXrhk0aFD++te/fviHBAAAAMAW86dtAAAAAAXz6KOP5le/+lXGjh2b/v3758knn6yERqtWrcrQoUOzbNmyjBs3Lr179860adNy9NFH5/7778/hhx+eJFmwYEGuv/76nHrqqTnnnHOycuXK/O53v8uwYcPy5JNPZp999qnK7K+//nqGDRuWLl265NJLL83q1avz3e9+N+vWrdum823p9X7Qpj6/HXbYIcccc0xmzJiR6667rsNdpW677bbst99+OeCAAyprV155ZVavXp3p06dnxowZG53vmWeeyTe+8Y30798/kyZNyksvvZTRo0dv07UCAAAAsHECKgAAAICCue+++/L444/nC1/4QmXt3XffTZL88pe/zIIFC/LEE09k//33T5KcffbZOfDAA3PJJZdUgqK99947L7/8cnr06FE5xwknnJB+/frlD3/4Q6644oqqzP7rX/86y5Yty7x58zJ48OAkSf/+/XPGGWds0/m29Ho/aHOf37e//e3ceOONmT17do488sgk792ta/bs2bn44os7nOdb3/pWkuT555/fZEB1xRVXpK2tLQ888EAaGxuTJN26dcsvfvGLbbpeAAAAADbkEX4AAAAABXPEEUd0iH+SpHPnzkmS6dOn56CDDkpjY2Nef/31vP7661mxYkUOPfTQzJ07txIK9ejRoxJPrV+/PsuXL0+3bt2y66675sUXX6za7A8++GAGDBhQiaeSZMyYMZt9BN7mbOn1ftDmPr/hw4end+/eaW5urhybMWNG1q9fn5NOOmmr55szZ04OO+ywSjyVJKeccspWnwcAAACATXMHKgAAAICC2dzj9V544YW0trbmM5/5zEaPr1q1KjvvvHPa2toyZcqUXHPNNXnxxRc7hEbvvPPO/3zm9y1evDh77LFHh7Vu3bqlV69e23S+Lb3eD9rc51dXV5cTTjght9xyS37zm9+kvr4+t912Ww466KAMGDBgq+d75ZVXNrgLVt++fbf6PAAAAABsmoAKAAAAoGB22mmnTR4rlUo58sgjc8EFF2z0ePfu3ZMkkydPzoUXXphTTjkll112WSVgOvnkk9Pe3v4/n/l95XL5I73/v+8otaXX+0Gb+/yS9x7jd+2112bWrFkZMmRIZs+evc2PNOzates2vQ8AAACALSegAgAAAKBizz33zNtvv53hw4dvdl9zc3MOO+yw3HTTTZW1devW5c0339zo/i5duiR573F/H0WfPn3y3HPPdVhbs2ZNli9fvtHvt2bNmspaW1tbli5d2mHfll7v1jj00EPTr1+/NDc359VXX01bW1tOPPHEbTpX3759s3jx4g5rL7/88v9iTAAAAAD+n061HgAAAACAT45jjz02f/nLXzJ37twNji1atKjy786dO6e+vr7D8d///vebDKTef+ze888//5HmO/zww/Pcc89l/vz5lbXm5uYN7nr1uc99Lkkyb968ytrMmTOzdu3aDvu29Hq31sknn5w777wzN910U4YOHVqZZ2sNGzYsDz/8cJYsWVJZu/nmm7d5LgAAAAA25A5UAAAAAFT85Cc/ye23357hw4fnrLPOyr777pvFixdn9uzZaWhoyD333JMkOfroozNx4sScffbZGTx4cJ588snceeed2XXXXTd63r59++bggw/Oz372s7S1taWhoSFf+tKXss8++2zVfGPHjs3kyZMzatSonHvuuVm9enWuueaaDR61N2TIkOy66645//zzs2jRoqxZsybNzc2VRw1u7fVurZNPPjmXX3555syZk+uuu26D408//XSefvrpyr+TVO7m1b179xxzzDFJknPPPTe//e1v8/Wvfz1nnXVWFi5cmD/96U/bNBMAAAAAGyegAgAAAKCioaEhf/vb33LxxRfn9ttvz9KlS7PbbrtlyJAhGTt2bGXfhAkT8tZbb+Xmm2/ODTfckIMPPjj33ntvjjvuuE2e+5ZbbsmZZ56Z888/P62trbnqqqu2OqDq2bNnZs2alR/+8Ie56KKL0qdPn/zxj3/MOeec02FfuVzOXXfdle9///u57LLLMmjQoDQ3N28w35Ze79ZqamrK/vvvn2eeeSajR4/e4Pj06dNzySWXdFj7zne+kyT5/Oc/Xwmo+vfvn7vvvjvnnXdefvrTn2bvvffO9OnT85WvfGWbZwMAAACgo1L7f9/fHAAAAAC2M/369cvhhx+eqVOn1nqUii9+8YvZZZddMmvWrFqPAgAAAMBmdKr1AAAAAADwafPUU0/liSeeyCmnnFLrUQAAAAD4EB7hBwAAAEBNLVmyZIv2NTY2VnmSj+7vf/97Hn/88Vx11VXp3bt3TjjhhFqPBAAAAMCHEFABAAAAUFO77777Fu1bt25d6uo+2b/Ouv3223PppZdm7733zowZM7LjjjvWeiQAAAAAPkSpvb29vdZDAAAAAFBc999//xbtGzZsWEqlUpWnAQAAAKBoBFQAAAAAAAAAAEBhdar1AAAAAAAAAAAAALUioAIAAAAAAAAAAApLQAUAAAAAAAAAABSWgAoAAAAAAAAAACgsARUAAAAAAAAAAFBYAioAAAAAAAAAAKCwBFQAAAAAAAAAAEBh/R/ZA7WZDV/5KgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "image/png": "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Zyd/f39lZmZKklq3bq21a9eqd+/eys/P1+7duzVmzBhT/IEDB/TEE0+oadOmFs/76aefSpISExOVlZWlBQsWmM4FBgaaxc6bN0+XL19WcnKyNmzYcNMxt23bphkzZmjGjBkKDg7W1KlTdfjwYU2ePFljx46Vo6OjiouLFRQUpMLCQkVFRcloNGr9+vV66aWXtH37dvXs2dPiGqypo6CgQD169DA1eknS/Pnz1aNHD33zzTfy8PCwat6srCz17dtXvr6+SkhI0KlTp/TKK69Ui7O03rKyMoWHh6usrEwxMTFq0qSJjh8/ro0bN5o1UdXm+u3fv18LFy5UZGSkfH19dfjwYeXk5JjOW3J/s7Oz9ec//1nDhw/Xm2++qUuXLmnZsmXq1auXDh8+rDZt2lh1/Sydt23btqZ7XGXr1q1avXq12T2r6+cKD496aaBKTEzUCy+8YGqekqTmzZurbdu2Zl2HXl5eys/PlyQ1atTIdLygoEBeXl43Hd/JyUlOTk71kDkAAAAAAAAeBHx/BAAAAOB+k5eXp2bNmkmSQkJCVFhYqAMHDshoNOrYsWOSbvzHIqGhoWrbtq0kaeTIkercubPmzJmjVatWydPTU3PnzrWqgWr48OGSpO3bt+v06dOm9zUZOHCgJOn777+/ZQPVxIkTNWzYMG3dulXZ2dmKj4/X119/rU2bNunEiRNq06aN5s6dq+zsbB06dEjt27eXJL3++uvq1KmT4uPjrW50sbSOpUuXqqioSOnp6Xr22WclSUFBQQoKCtLSpUv13nvvWTXvnDlzVFFRoZ07d5r6HB599FHTwjJVLK03KytLp06d0rJlyzR27FjT569fv16r8X5p69atysjIUOfOnU3HysvLTa8tub9PPfWUTp8+LRcXF9OxV199VU8++aT+8pe/aM6cObe8XjWxZN7HH3/c7J6ePXtW0dHR+o//+A/179/fdLyunys8POplC7+zZ8+a/SWrUl5erqtXr5re+/v763//93/NtuurqKhQZmam/P396yM1AAAAAAAAAAAAAADuOaWlpaZFSnJycpSbm6tr167JycnJ9G/qnp6eysjI0L59+/T++++roKBAISEhKikpUUpKinbt2qUuXbrYsgxJktFolCS5u7ubXjdp0kSSdPHiRUlScnKynnnmGXl5eamoqEhFRUX64YcfFBgYqPT09Bp7DupC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mWeekZeXl4qKilRUVKQffvhBgYGBSk9PV3l5eb3klpqaqpYtW5qapyTp+eefl6+vr1JTU60er2HDhpKkffv2qayszHTcwaHm9WyGDh1qev3kk0+qa9euSktLs3peAHWLBioAAAAAAAAAAAAAAGzMycnJ1IBz5MgRZWdnq2HDhiotLTVt65eXl6c33nhDw4YN05kzZ/Tuu+9q2rRpWrBggTp06KBp06bZsgSTquYhR0dHs9eSTDWeOHFC6enp8vT0NPvzySefqKysTMXFxfWS2/nz5+Xj41PtuI+Pj86ePWv1eK1atVJkZKSSkpLk6empvn37at68eaZGsV9r3ry52ftmzZrVal4AdYst/AAAAAAAAAAAAAAAsDEvLy/l5+dLkho1amQ6XlBQIC8vL0nSI488ouDgYC1cuFDOzv9fe/cepnVV743/fc+BGQQGEBwGFU8oCU+zRbeWWmxRsUChQNta+9mlWVlZFJ5FK+XJtrDb1pNmPdunfqLbXdvygGihkSae2h4wlLQ8pCiIHEUGkBkOM78/5nFswgODjPcM83pd11wz9/qu71qfdV9dQ37nfa9VmaeeeipHHnlkpkyZkoEDB+bMM8/MAQcc0GqXo46mqakpSVIoFPLRj340Z5999pv2++v3oKP793//93zxi1/M7bffnttvvz1nn312/u///b+ZN29eS/jt7by+8xhQPAJUAAAAAAAAAFBktbW1ueqqq1JfX98SumlsbMz8+fMzevToJEnv3r1z0kkntdzzm9/8JkcddVTLzlMvv/xybr755m0KUBUKhe2wiq23zz77ZP369Rk1atR2Hfed1jFw4MC8+OKLW7S/8MIL2Xvvvbd53oMOOigHHXRQLrjggnzve9/LWWedlTvvvDPHHXdcq34LFy7M/vvv3/J60aJFW+xK1Ravh682bdq0XfpBV+UIPwAAAAAAAAAosrFjx6ahoSHXX399S9usWbOycuXKjBs37k3vKSkpSUNDQ8vr+vr6bQ5C9erVKytWrHjPAjYTJkzIvffemwceeGCLawsXLtzmcd9pHSNHjsxzzz2X3//+9y1t9957bxYsWJCRI0e2eb66urot5no9iPX68YV/7ec//3nLzwsWLMhDDz2UI444os3zvm733XdPkjz77LPbpR90VXagAgAAAAAAAIAiO+aYYzJixIhMnDgxixcvTnl5eaZO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h+aDH/zge1prWVmZv+kDO5SS93Kypqam/PCHP2zVtvPOO+faa6/Nq6++mrq6uvziF79ITU3Ne1kWAAAAAAAAABTVrbfemoqKipx00kktbWPGjEm/fv0yc+bMJMkDDzyQs846K5/61KcyadKkHHvssbnvvvve1byFQiGFQiHXXHNNXnjhhZbXhUIh06dPb9V33333bXX9by1YsCCFQiEXXHBB+vfvn2HDhuWBBx7I8OHD069fv/z4xz9u1X/58uU57bTTUlNTk8rKyhx00EH59a9/3e7rePLJJ3PsscemV69e6dWrV4477rj8+c9/3qZ5X3fPPffkIx/5SHr37p3evXtn5MiR+c1vftPmeadPn55CoZCHHnooEyZMSK9evTJ48OD89Kc/belTV1eXysrKfOMb39iijm984xvp1q1bXn311Za2trzPhUIhF198cWbMmJHa2tpUVlZm8ODBLf3b8j5DZyISCgAAAAAAAABFNn/+/AwZMiSVlZUtbSUlJamtrc38+fOTJEOGDMn111+fj3zkI1m6dGnuueeenHrqqS39H3744ey6667Zbbfdtnre//iP/0iSXHXVVfnTn/6U73//+y3XDj/88FZ9L7vssqxZsyY33XRTbr755rccc/bs2bnwwgtz4YUX5qijjsp5552XP/zhDzn77LPz+c9/PuXl5amrq8uIESOyfPnyTJw4MdXV1bnxxhvzsY99LL/97W8zcuTIrV5DW9axbNmyHHHEES1BryT53ve+lyOOOCJPPPFE+vfv36Z5k+bw24QJE7Lvvvvm3HPPTXV1de6+++5cddVV+chHPrJN837mM5/J0UcfnWnTpuXqq6/O5z//+Rx44IE56KCDUlVVlVGjRmXGjBm55JJLWt1388035+ijj06fPn2SZJve54ceeig/+MEPctppp2XvvffOH/7whyxYsKBN7zN0NgJUAAAAAAAAAFBkS5Ysye67754kGTVqVJYvX56HH3441dXVefLJJ5MkkydPzjHHHJOhQ4cmaQ7ZHHjggfnXf/3XXHvttdlll13y3e9+t00Bqn/+539Okvz2t7/Niy++2PL6zXz84x9Pkjz77LNvG6A644wz8k//9E+544478txzz2XKlCl58MEHc+utt+Yvf/lL9t9//3z3u9/Nc889l0cffTTvf//7kyRf+tKXMnz48EyZMqXNAaqtXcePfvSjrFixIg888EAOO+ywJMmIESMyYsSI/OhHP8q3vvWtNs27efPmfPWrX83gwYPzyCOPpGfPnkmSL3zhC3n55Ze3ed5x48blu9/9bsvPe+65Z2677bYcdNBBSZITTjghp556ap599tnsu+++SZJnnnkmTz75ZM4444yWcbblfb7jjjvyyCOP5MADD2y1zqRt/3uBzuQ9PcIPAAAAAAAAANhSQ0NDunXrlqT5KLxFixZl48aNqaioSH19fZJkl112ySOPPJL7778/3/72t7Ns2bKMGjUq9fX1mTFjRn73u9/l4IMPLuYykiTV1dVJkn79+rX8vPPOOydJVq1alSS56aabcsghh6SmpiYrVqzIihUr8sorr+Twww/PAw880BLY2d7uvvvu7LPPPi0hpiT58Ic/nL333jt33313m8ebO3duXnzxxUycOLElPPW6gQMHbvO8EyZMaPl50KBB6d+/fxYtWtTS9vGPfzxlZWWtgmw333xzSktLM378+Ja2bXmfjznmmFbhqSQpLS195zcDOjE7UAEAAAAAAABAkVVUVGTDhg1Jknnz5mXz5s3p0aNHGhoaWo71W7JkSS666KLccccd+ehHP5pvfvObeeaZZzJp0qRMnTo1X/va1zJ16tRiLiNJUlbWHEUoLy9v9XOSljX+5S9/SUNDQ3bZZZc3HaOuri59+/bd7rW9/PLL2WOPPbZo32OPPfLSSy+1ebznn38+SVp2Bdte89bU1LR6vdNOO7W8d0lzIG3kyJG5+eabc8455yRpDlCNGDGi1XGA2/I+77///m+7FtgRCVABAAAAAAAAQJHV1NRk6dKlSdJqJ6Nly5a1hGm6d++eo446Kj/4wQ9SWVmZp556KkceeWSmTJmSgQMH5swzz8wBBxyQT33qU0VZw9ZoampKkhQKhXz0ox/N2Wef/ab9/nY3p66mpOSdDxQ7/vjj89WvfjVLlixJU1NTHnzwwVx++eWt+mzL+9ynT59tqhk6MwEqAAAAAAAAACiy2traXHXVVamvr2/ZcaqxsTHz58/P6NGjkyS9e/fOSSed1HLPb37zmxx11FE5//zzkzTvcnTzzTdvU4CqUChsh1VsvX322Sfr16/PqFGjtuu477SOgQMH5sUXX9yi/YUXXsjee+/d5vlev+fJVPLPgwAAJLNJREFUJ5/M0Ucf/Z7NmzQf8/fVr341t9xyS0sw7a+P/kuK9z5DZ/POkUUAAAAAAAAAoF2NHTs2DQ0Nuf7661vaZs2alZUrV2bcuHFvek9JSUkaGhpaXtfX129zsKVXr15ZsWJFNm3atE33t9WECRNy77335oEHHtji2sKFC7d53Hdax8iRI/Pcc8/l97//fUvbvffemwULFmTkyJFtnu/v//7vM2jQoPzgBz/ImjVrWl1btmxZu82bNO9advjhh2fGjBmZMWNGDj300Oy2226t+hTrfYbOxg5UAAAAAAAAAFBkxxxzTEaMGJGJEydm8eLFKS8vz9SpUzN8+PCccMIJb3rP6NGjc+aZZ2bSpEkZOHBgLrvssvzkJz/ZpvkPP/zwXHHFFTnttNMyfvz4dOvWLbW1tS2BnMcffzyPP/54y89Jct111yVpPgZu/PjxbZrv3HPPzQ033JBRo0bli1/8YoYOHZpFixblzjvvTFVVVWbNmtUu6zj99NNz5ZVXZvz48Zk0aVKS5Pvf/36qq6tz+umnt3m+0tLSXHnllZkwYUIOPvjgnHzyyamurs59992XdevW5Ze//GW7zPu6E044Ieedd16S5F/+5V+2uF6s9xk6GwEqAAAAAAAAADqs3aeOKHYJ74lCoZAZM2Zk0qRJmTZtWhobGzN69OhcfvnlKSt78z/tDx48OD/72c9yzjnnZO3atTnnnHNaHfHXFieeeGIeeeSRXHfddZk+fXqamppy9dVX55RTTkmS3HTTTZkyZUqrez796U8nSfbcc882B6iqqqpy//3356KLLsoNN9yQZcuWZcCAATn00ENz2mmnbdMatmYd1dXVmTNnTs4666x85zvfSZKMGDEi3/ve99K/f/9tmnPcuHG58847c8kll2Tq1KlJkgMPPDAXXHBBS5/2mDdJjj/++JxxxhktP/+tYr3P0NkUml4/CLMTq6urS+/evbN69epUVVUVuxygK7q4d7ErAAAojotXF7sCoItq6/Mgz48AAKDjqq+vz/PPP5+99947lZWVxS4HgE5ia/792NpnQiXtVSQAAAAAAAAAAEBH5wg/AAAAAAAAANiBLFmyZKv61dTUtHMlAJ2DABUAAAAAAAAA7EAGDhy4Vf02btyYsjKxAQC/CQEAAAAAAABgBzJ79uyt6ldaWtrOlQB0DgJUAAAAAAAAALADGTVqVLFLAOhUSopdAAAAAAAAAAA0NTUVuwQAOpHt+e+GABUAAAAAAAAARfP6MXIbN24sciUAdCabNm1KkpSVvfsD+ASoAAAAAAAAACia8vLyVFRUZPXq1XahAmCr1dXVpbS0tCWI+268+wgWAAAAAAAAALwL/fv3z0svvZRFixald+/eKS8vT6FQKHZZAHRATU1NWbduXerq6jJw4MDt8u+FABUAAAAAAAAARVVVVZUkWbFiRV566aUiVwNAR1coFNKnT5/07t17u4wnQAUAAAAAAABA0VVVVaWqqiobN27M5s2bi10OAB1YeXn5djm673UCVAAAAAAAAAB0GOXl5SkvLy92GQB0ISXFLgAAAAAAAAAAAKBYBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LLaJUD18MMP59RTT82+++6bnXbaKUOGDMk555yTNWvWtOq3atWqnHLKKenbt2969+6dk046KcuWLWuPkgAAAAAAAAAAALZQ1h6DXnbZZXnggQfyyU9+MkOGDMmf/vSnXHHFFbnrrrvy4IMPpqysedoJEyZk7ty5mTx5csrLyzNt2rSMGTMmDz30UEpLS9ujNAAAAAAAAAAAgBbtEqA644wzct1117UEpZJkjz32yKRJkzJz5swcf/zxmT17dubMmZPp06fn5JNPTpIMGzYsY8eOzY033pgTTzyxPUoDAAAAAAAAAABo0S5H+H3wgx9sFZ5KklGjRiVJnnrqqSTJrbfemoqKipx00kktfcaMGZN+/fpl5syZ7VEWAAAAAAAAAABAK+2yA9WbWb58eZJk4MCBSZL58+dnyJAhqaysbOlTUlKS2trazJ8//23HamhoSENDQ8vrurq6dqgYAAAAgM7K8yMAAAAAtla77ED1Zn784x+nZ8+eGTduXJJkyZIlGTBgQJLm3akOOOCAbNiwIdXV1VmyZMnbjnXppZemd+/eLV+DBg1q9/oBAAAA6Dw8PwIAAABga70nAapf/OIX+cUvfpHvfOc76devX5LmTwF269YtSbJgwYIsWrQoGzduTEVFRerr6992vMmTJ2f16tUtXwsXLmz3NQAAAADQeXh+BAAAAMDWavcj/B5//PF87nOfyyc+8YlMnDixpb2ioiIbNmxIksybNy+bN29Ojx490tDQ0OpYvzdTUVGRioqKdq0bAAAAgM7L8yMAAAAAtla7BqhefvnljB07NkOHDs21116bQqHQcq2mpiZLly5NkvTs2bOlfdmyZampqWnPsgAAAAAAAAAAAJK04xF+a9euzXHHHZfy8vLcdttt6d69e6vrtbW1efrpp1sd19fY2Jj58+entra2vcoCAAAAAAAAAABo0S4Bqk2bNuUTn/hEFi5cmNtvvz3V1dVb9Bk7dmwaGhpy/fXXt7TNmjUrK1euzLhx49qjLAAAAAAAAAAAgFba5Qi/s846K3fccUcmTpyYBx98MA8++GDLtcGDB+ewww7LMccckxEjRmTixIlZvHhxysvLM3Xq1AwfPjwnnHBCe5QFAAAAAAAAAADQSrsEqB577LEkyRVXXLHFtZNPPjmHHXZYCoVCZsyYkUmTJmXatGlpbGzM6NGjc/nll6esrF3KAgAAAAAAAAAAaKVdkkp33333VvXbeeedc+2117ZHCQAAAAAAAAAAAO+opNgFAAAAAAAAAAAAFIsAFQAAAAAAAAAA0GUJUAEAAAAAAAAAAF2WABUAAAAAAAAAANBllRW7AAAAAAAA2NEtOv/eYpcAdDK7XfrhJMlLk+9L/6++PyU9yrPs3+Zlt0s+1NK+LWNVvH/ndP/grumxd++ktNBqrNf7vfLLp5NduqVyjz7pMbhvmpqa2jwnwF/bfeqIYpcA8LYEqAAAAAAAoJ2tmXFasUsAOptLn0zS/Puj+su3p6TQO2t//bXkkrkt7dsy1prbyrLfPXOy9r570vOII1raS3r2TC59KEnyypVfbLl1vzl3p1AopKmpKWtuOz3ZtGl7rA7oaqb+qdgVALwtASoAAAAAAADooLofdGCem3B8CiUladoOY5X27pOynXdO3Z13tgSokqS0d1UKheYdqfabc/cW9xYKhVTu/77U//GJd1kFAEDHI0AFAAAAAAAAHUzj5s0pLSvLHtddl2zcmE1Ll6a0piaFQiGNjY1b9N//T827TP156LAtrm1esyZlVVXZ47rrUti8OU1NTan51reax9qwIUmyacXKbKqrS1lVVRobG9PU0JDS7t3fqGfTpmxY8EI7rRYAoLgEqAAAAAAAoJ2dONnjeKBtrl05P8Orhzcfn1denrLdd285Sm/Ogjn52t/8Xpn//3aPetPfNzd/KI9/5vHm+0tLk6amlJSVpampKWNuGZfFk8uSbE6v20bngX96oHknqoqKVkNc9dhPcuXE+vjzIrAt5he7AIB3UFLsAgAAAAAAAIDWfvz4j1uO1CsUCq1+Xrh+YZvGOmzgYS33l5SUtBqrdpfaln7lpeW5cu6VLdf+2u9e/t22LQQAoBMQoAIAAAAAAIAO5veLf5+5S+dm3cZ1+cGjP8hlcy/Lmo1rkiQL17QtQHXEoCPSsLkhjy57NKvqV+Wg/zgoB1x7QFbVr8rIQSNb+l390auzV9+9ctncy3LTMze1tM/8y8w8ufLJ7bIuAICOyB6bAAAAAAAA0AF97a6v5RuHfiOfr/18SktK07CpIY1NjfnDsj+0aZz9+uyXl9a8lAOrD8wNT9+QTU2bkiTPrHom+/Xdr6XfXQvvylGDjsoRux+RyrLKJMkvn/plLnnwku23KACADsgOVAAAAAAAANAB1W2oy649d03Pbj3Tvax7CoVCLvnvS/LUqqe26Ft7TW1qr6l9k1GS/t37Z+lrS3PAtQdkj1575IZxN6SspCyv1L+S/t37t/T7waM/yMdv+XgO+/lhOfeec5Mkv37+12lsamyfBQIAdBB2oAIAAAAAAIAO6tIHL03fyr55X9/35chBR2b5+uVtHqNbabdsbNyYJNm1566p6laV8pLybGjckG6l3bZ3yQAAnY4AFQAAAAAAAHRQT6x8Ikly30v3Ze7SuZk+enpOvePUPLrs0a0eY8PmDSkvKU+SfOLWT6S0UJr1m9anW0m3bNi8oV3qBgDoTBzhBwAAAAAAAJ3AvOXzsrJ+ZY7f7/g23bdi/Yr0q+yXJFm/aX3WblybJNm5cuesWL9iu9cJANDZCFABAAAAAABAJ1FeUp5+3fu16Z5nXn0me/beM91K3jiur5BC9uu7X55Z9cz2LhEAoNMRoAIAAAAAAIAOZreeu23Rdtiuh6VvZd88v/r5La7NHD8zM8fPfNOx5iyak4rSiozee3RL24d3+3D6VvbN3Yvu3m41AwB0VmXFLgAAAAAAAABo7Scf+UleXPNi7n/p/qzduDb79tk3nxjyibxa/2que/K6Lfrv3Xvvtxzr94t/n7lL52byByZnl+67ZFPTpnzu/Z/Ln1b+Kb994bet+n5q/0+lV7deGdxncJJk3OBxOWjAQVmzYU1+/uefb99FAgB0EAJUAAAAAAAA0MFc/9T1OWqPo3Lq+09Nr269suy1ZbljwR25ct6VWbJuSZvH+9pdX8t5Hzgvp9aempKU5P7F9+fSBy/N5qbNrfqd/D9ObrX71fH7HZ8keWntSwJUAMAOS4AKAAAAAAAAOpjpT0zP9Cemb3X/2mtq3/Z63Ya6XHjfhe84zugbR79jHwCAHY0AFQAAAAAAtLP5z79Y7BIAAAB4CyXFLgAAAAAAAAAAAKBYBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LLKil0AAAAAAAAA8DeG/1My/sdbti+4N5k+tu3jDft4MuLsZJchScPa5OlZyW++maxf1brfHoclR16Q1Pxd0rQ5efmx5K5Lkpfmbts6AAA6AQEqAAAAAAAA6KhuPz95beUbr9cub/sYe41ITrw2efH3yR0XJlW7JYednuwyNPnpqKSpqblfTW3ymVuSpX9M7vp2UlqeHPy55OSZyVUjkxXPbJclAQB0NAJUAAAAAAAA0FH9+VfJqy++uzH+4Zyk7qXkmnHJ5o3Nba/8Jfn4lcl+H02evr25bfj/TNKUXPvxpGFNc9szs5OJc5t3sLrn395dHQAAHVRJsQsAAAAAAAAA3kohqej17oYYMCx54YE3wlNJczArSfb7yBttPauTTfVvhKeSZN2Kdzc3AEAnIEAFAAAAAAAAHdWX70smL0omL0yO+15S3r3tY5RVNAej/trG9c3fdxnyRtuC+5PKPslHLkn67pX03y859l+TdcuTeT/b1hUAAHR4jvADAAAAAACAjmbDa8kjVycv3J80bkr2OyY55HNJ3z2T605o21ivLEgG1LZu2/2Q5u879X+j7dHpSc37k0O/nBw+sbltxdPJT45J6hZv60oAADo8ASoAAAAAAADoaJ6c0fz1uiduTl57pTnYtOfhzUfyba0/XJsc+2/JyPOTx/4rqdotGfv9ZP2rzbtTva5xc7Ly2eSPNyZP3Z6UVyYfmpR86mfJ1ccm61dtn7UBAHQwjvADAAAAAACAzuDhnzZ/3/NDbbvvkaubj+AbOTn5+mPJKbclz9yRLJ2fbHztjX4fPjP54JeSW76SPHFT8z3/MSHZefAbO1IBAOyA7EAFAAAAAAAAncGal5u/d+/TtvsaNyUzvpzc+b+SvnslqxcmqxclX388WfHUG/3+/pTmna02b3yjre6l5j6DPvAuiwcA6LgEqAAAAAAAAKAz6L1b8/d1K7ft/jUvvxHC6rtX0nfP5LGfvXG9amBSUrrlfYXSpLzHts0JANAJOMIPAAAAAAAAOpqddt6y7YNfav7+3O+2vPbVh5u/ttaRFzTvTDX/hjfaVr2Q7P0PSbe/Ckv13TvpPyRZ9sTWjw0A0MnYgQoAAAAAAAA6ms/enrz8WLLk8WTj+mTwkcn+Y5PHfp4s/sOW/fsPeeux+uyRjP9x8tSsZMO6ZOjYZN9RyT3/lqx89o1+D1yRfOzy5NTbkz9cl5RVJh/4QtK4Mfn9ldt/jQAAHYQAFQAAAAAAAHQ0f/5Vsv9xyftGNweZVr2Q/Pbi5P4ftH2s+rpk42vJiDObd5da+Wxy66Rk7tWt+z16TfLayuRDX0+OvLD5OL+FDyd3fSZZ9qftsSoAgA5JgAoAAAAAAAA6mjunNH9trYt7v/W1+leT//zHrRvnz7c1fwEAdCElxS4AAAAAAAAAAACgWASoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADossqKXQAAAAAAAOzo9qr/WbFLAAAomgXFLgDgHdiBCgAAAAAAAAAA6LIEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LIEqAAAAAAAAAAAgC6rrNgFAAAAAAAAAK3dd96R2b3vTm967d5nlufTP31oq8f6u917558P3TMf2GvnDKiqzMur12f2k0tz+Z3PZN2GzW3uBwCwoxGgAgAAAAAAgA7mf936ZHbq1vpPebvv3D1nf+R9ue+ZFW0a6wsj9slBe/bNrY8tzvMr1mXf6p455fC9cvjg/hn/o/uzubGpTf0AAHY0AlQAAAAAAADQwfzmyaVbtH3t6H3T2NiUmY8tbtNYP73v+Uy6fl6rANTiV9fnonH/I6OGDsgdTyxpUz8AgB2NABUAAAAAAAB0AuOH75aHX3glL6+ub9N98xa+ukXb67tYDd6lR5v7AQDsaEqKXQAAAAAAAADw9oYP6pN9dumZmfPatvvUW+nXs1uSZNmahu3SDwCgMxOgAgAAAAAAgA5uwoG7ZcOmxvxq/svbZbx//uCeWduwKb/905ZHBW5LPwCAzkyACgAAAAAAADqwspJCxv7dwNz7zPK8+trGdz3ecbUDM/aAXfNvdzz1tuNtbT8AgM6urNgFAOwI9qr/WbFLAAAoigXFLgAAAKALGPm+XdKvZ0Vu2Q7H9+1f0yvTPvF3+dXjL2f6AwvedT8AgB2BABUAQBH8w379c8qH9s6wgVXpu1N5ltTV53dPLc///u3T2/xpvv/5wT3yz4fumb3798jahk35w4uv5uv/9Ye8tmFzS5+q7mX51thhOWZYTQqF5J6nlueimU9k5boN22tpAAAAAGxnEw7cPesaNmX2k+/uGL1delXkp6cckmeXrc2Zv5j3rvsBAOwoBKgAAIpg6MCqbNrcmGt/vyAr1m7Irn0q8+lD98yHBvfL2CvuS8OmxjaNd+5H35fTj9w3tz2+ONc8sCA9Kspy8F59U1le2ipAddWnD877d+udH/3u2WxqbMqXjhic6Z/9QD5+5X1pbNreqwQAAADg3epVUZajh1bnjieWZP3Gze98w1vYqVtprj7lkGza3JjPTX/4LZ8/bW0/AIAdiQAVAEAR/Ps9z23RNv+l1fnpyYfkqP2rM+uPS7Z6rMG79Mhp/7BPfnjXs/m33zzV0v7T+55v1e/D+/bPofv0y1m/mJcbH30pSfLM0rW5+rOHZMz7B+ZX81/extUAAAAA0F6O/buBqSwvfcfj++4884gkydHfm7PFtdKSQn78Pw/KwN6VOeHHD7zlbuRb2w8AYEcjQAUA0EEsq2tIkvTrWdGm+z52wK7Z1NiUH939bJLmTwn+9a5Trzt6aHUaNm7ObY+/EZS6++lleWXdhowaNkCACgAAAKADOv7A3fLKug255+nlb9tvcHXPt7z2jeOG5oj3Vefq+5/P8EF9M3xQ35ZrL76yLo+++Gqb+gEA7GgEqAAAiqhXRVkqykuyV78eufC4oWlsbMqjL6xq0xjDB/XJn5esyaihA/KtccPSv2dFFr+6PlNn/TkzH3vjk4n711TluRXrWm273tSUPLVkTfav6bXd1gQAAADA9rFbn+45ZK+d8/OHXsymxqZtHmfowKokyWc/tPcW126Yu7AlGLW1/QAAdjQCVAAARXTt5z6QA/do/iTfq69tyDdv+WOefLmuTWMM6F2ZHt3K8p0J788Vdz2bl1atz2cO2zP/+6Th+cvytXlicfN4u/SqyMur1ydJrvvcB9OvZ7d87If3ZeXahuz7Np9QBAAAAKA4Xnp1ffa54Ndb1Xev83/1ltc+edV/b9UYW9sPAGBHI0AFAFBEF818Ijvv1C1DB1blmGEDsrSuvs1jdC8vzaCdd8o3Zvwx1/33C0mS3z21LA9ecHS++A/75Gv/NS9J0q20JBs3N39Scfe+3dO7e3nKSkrSsLkxFeUl221NAAAAAAAA0JkIUAEAFNHji1YnSe5+enkeWvBKfvHFw/LJq36fhxds/TF+r4ei7vjjkpa21zZszqMvrMr+/2/b9STZsLkx5aWFJMmxl9+b0kIh6zduTkVpSRo2NgYAAAAAAAC6IgEqAIAOYu4Lq7JibUM+ecgebQpQrVzXkH3TMyvXNbRqf3X9xrx/t94tr5evaUj/nhVJmgNWr+vXsyIr1ra+FwAAAIDiO3jPPvn5aYelrKT5Q3GbG5ty2rWP5K6nlrfbWNtzTgCAzsJZLQAAHUh5aUn69+zWpnueXbo2SbJLr4pW7Tv36JZla94IRv15SV326d8jFWVv/F/AQiF5X02v/HnJmndRNQAAAADt4ZdfOjxlJYWsem1jVqxtSGlJIT895ZBUbsMWCVs71vacEwCgsyh6gGrVqlU55ZRT0rdv3/Tu3TsnnXRSli1bVuyyAADa1e59u2/RNmK//tm5R7f8Zfm6La7deeYRufPMI950rDlPN3/67+PDd2tp67NTeQ7ec+eWIwKT5K4/L0tFeWnG/t3AlraRQ6qzc49uufNPS7d5LQAAAABsf1efckgKhUL+snxtDvr27BzynTvz38+tTKFQyA1f+lC7jLU95wQA6EyKnhWfMGFC5s6dm8mTJ6e8vDzTpk3LmDFj8tBDD6W0tLTY5QEAtIuff+HQPL9iXe55ZnnW1G/K+wb0yqc+sEdWrduQ/+/+57foP7i651uONftPS/P4oldzzkffl349umXx6vp88pBBKSlJfnz3sy397n1mRR58fmUu/tj/yICqymzc3JQvjxycJxavzqw/LmmXdQIAAACwbQ7dZ+c0NTXl0z99qKXt01c/mGe+fWz2H1jVLmNtzzkBADqTogaoZs+enTlz5mT69Ok5+eSTkyTDhg3L2LFjc+ONN+bEE08sZnkAAO3mP/77hXxk2IB86YjB6VVZlqWrG3Lb44vz/dlPZ/Hq+jaN1dSUnHL1w7nw2KE58eBB2albaZ5YXJeT/7+HsmDla636nnbt3Hxr3LB86YjBKRSad6+aMvPJbG5s2p7LAwAAAOBdqihv3mjg5b96VrRpU9KUpLSk0C5jbc85AQA6k6IGqG699dZUVFTkpJNOamkbM2ZM+vXrl5kzZwpQAQA7rKvueS5X3fPcVvff6/xfve31V9ZtyFm/fOwdx1m9fmPO+sU79wMAAACguAppDi4lyXOXHptCkoMv+U0aG5vaHGba2rG255wAAJ1JUQNU8+fPz5AhQ1JZWdnSVlJSktra2syfP/8t72toaEhDQ0PL69WrVydJ6urq2q9YgLfR2PDaO3cCANgB+e8woFhe//3T1PTmO2l6fgR0NJ4fAdukqfn3x+vRpV6ljS0Bpzb/XtnasbbnnAD/j/8WA4rlnZ4hva7Q9E492tHQoUOz++67Z/bs2Rk1alSWL1+ehx9+OJ/+9Kdz9913Z+nSpW9638UXX5wpU6a8x9UCAAAA0NEsXLgwu++++xbtnh8BAJ1dY2NjmpqaUlpammHDhqVHjx55+OGHs3HjxpSWlqakpGS7j7U95wQA6Eje6hnS64oaoNpnn30ydOjQ/OpXv8q+++6bVatW5cUXX8yXv/zl3HLLLS2fDPxbf/sJwsbGxrzyyivp169fCgXbhwIAXUddXV0GDRqUhQsXpqqqqtjlAAC8Z5qamrJmzZrsuuuub/qHPM+PAIDOrlevXkmSNWvWbFX7W6mrq8uuu+6aQqHwjmNtrzkBADqKd3qG9LqiHuFXUVGRDRs2JEnmzZuXzZs3p0ePHmloaGh1rN+b3VdRUdGqrU+fPu1ZKgBAh1ZVVSVABQB0Ob17937La54fAQA7ird65tOWZ0H19fXp3r37Vo+1PeYEAOgo3u4Z0uuKus9mTU1NyzF9PXv2bCl42bJlqampKWZpAAAAAAAAsEO455577MIJAPA2ihqgqq2tzdNPP536+vqWtsbGxsyfPz+1tbVFrAwAAAAAAAB2DGPGjElTU1OxywAA6LCKGqAaO3ZsGhoacv3117e0zZo1KytXrsy4ceOKWBkAQOdQUVGRiy66aIvjaQAAAAAgeeP50YYNG4pdCgBAh1VoKmLcvKmpKUcccUTmzZuXyZMnp7y8PFOnTs2gQYPy8MMPp6ysrFilAQAAAAAAAAAAXUBRA1RJ8sorr2TSpEmZOXNmGhsbM3r06Fx++eWpqakpZlkAAAAAAAAAAEAXUPQAFQAAAAAAAAAAQLGUFLsAAAAAAAAAAACAYhGgAgAAAAAAAAAAuiwBKgAAAAAAAAAAoMsSoAIAAAAAAAAAALosASoAAAAAAAAAAKDLKit2AQAAvLOmpqbceOONmTlzZubPn58lS5akvr4+lZWVqampSW1tbT72sY/l+OOPT0mJjDwAAABAV+P5EQDAtis0NTU1FbsIAADe2vLly3Psscdm7ty56devX2pra1NdXZ2Kioo0NDRk2bJlmT9/flauXJmDDjoov/71r1NdXV3ssgEAAAB4j3h+BADw7ghQAQB0cJ/85Cdz55135pprrsmYMWNSKBSyadOmbNy4Md27d0/S/AnDX//61znllFMyatSo/PznPy9y1QAAAAC8Vzw/AgB4d+zPCQDQwd1+++05//zzc+yxx6ZQKCRJDj744Oy5555Zs2ZNkqRQKOS4447Leeedl1mzZhWzXAAAAADeY54fAQC8O2XFLgAAgLdXUlKSTZs2tWrr379/1q1bl9LS0lbtmzZtSkmJjDwAAABAV+L5EQDAuyNABQDQwX3sYx/Lv/zLv2S33XbLiSeemG7duuW3v/1tqz4bNmzI9ddfn6lTp2b8+PHFKRQAAACAovD8CADg3Sk0NTU1FbsIAADe2quvvprx48fnnnvuSWVlZYYMGZIBAwakW7du2bBhQ5YuXZqnn3469fX1GTFiRG655Zb06dOn2GUDAAAA8B7x/AgA4N0RoAIA6CRmz56dW2+9NX/84x+zZMmSNDQ0pKKiIjU1Namtrc3YsWNzzDHHFLtMAAAAAIrE8yMAgG0jQAUAAAAAAAAAAHRZJcUuAAAAAAAAAAAAoFgEqAAAAAAAAAAAgC5LgAoAAAAAAAAAAOiyBKgAAAAAAAAAAIAuS4AKAAAAAAAAAADosgSoAAAAAAAAAACALkuACgAAAAAAAAAA6LL+f4cM6fDArim7AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACVAAAAKPCAYAAACBq3P7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVjU5f7/8dewCC6AyiKooIi5/cKFTI1CDXFfkvqqx3I7HUOzLMSdFuHkKZejppaVWaG2eXIhLZfMxI3KtfSkdkpE3BBQEzcWYX5/eJgjgTKDg6PwfFwX1zXz+dxz3+/7Mx+hefee+zYYjUajAAAAAAAAAAAAAAAAAKACsrN1AAAAAAAAAAAAAAAAAABgKxRQAQAAAAAAAAAAAAAAAKiwKKACAAAAAAAAAAAAAAAAUGFRQAUAAAAAAAAAAAAAAACgwqKACgAAAAAAAAAAAAAAAECFRQEVAAAAAAAAAAAAAAAAgAqLAioAAAAAAAAAAAAAAAAAFZaDrQOwhvz8fJ06dUouLi4yGAy2DgcAAAAAAABlzGg06uLFi6pdu7bs7Er+jiD5IwAAAAAAgIrH3BxSuSigOnXqlHx9fW0dBgAAAAAAAO6w48ePq27duiW2I38EAAAAAABQcZWUQyoXBVQuLi6Srk/W1dXVxtEAAAAAAACgrGVmZsrX19eUFyoJ+SMAAAAAAICKx9wcUrkooCpYdt3V1ZUEGAAAAAAAQAVi7nZ85I8AAAAAAAAqrpJySDff3A8AAAAAAAAAAAAAAAAAyjkKqAAAAAAAAAAAAAAAAABUWBRQAQAAAAAAAAAAAAAAAKiwKKACAAAAAAAAAAAAAAAAUGFRQAUAAAAAAAAAAAAAAACgwnKwdQAAAAAAgPIhLy9Pubm5tg4DQDng6Ogoe3t7W4cBAAAAwAaMRqPy8vJ07do1W4cCALiLWTt/RAEVAAAAAOC2GI1Gpaam6o8//rB1KADKkerVq8vb21sGg8HWoQAAAAC4A4xGo/744w+lp6crLy/P1uEAAO4B1swfUUAFAAAAALgtBcVTXl5eqlKlCsUOAG6L0WjUlStXlJaWJkny8fGxcUQAAAAA7oSC/IKrq6tcXV3l4OBAjgEAUKyyyB9RQAUAAAAAKLW8vDxT8ZS7u7utwwFQTlSuXFmSlJaWJi8vL7bzAwAAAMq5vLw8XbhwQZ6envLw8LB1OACAe4C180d21ggKAAAAAFAx5ebmSpKqVKli40gAlDcFv1cKfs8AAAAAKL9yc3NlNBpVtWpVW4cCALiHWDN/RAEVAAAAAOC2saQ+AGvj9woAAABQ8fA5AABgCWv+3aCACgAAAAAAAAAAAAAAAECFRQEVAAAAAAAAAAAAAAAAgAqLAioAAAAAAIAyYjAYFBMTY+swAAAAAACwqpiYmHKx5eLJkyfVq1cvubm5yWAwaNiwYbYOqdyzRq7E3PftVvfpoEGDZDAYTD8JCQm3FRPufRRQAQAAAABwE8uXL1erVq3k7OwsT09PPf300zp79myhNnFxcYWSLQU/HTt2LNJfTk6OjEbjHYq+dOLj4/Xmm2/aOow7pqLNFwAAAABge+PGjZPBYNDzzz9f6nZlkWOoiJ+Ro6Ki9MMPP+jvf/+7li5dqhEjRtg6JJjBGu/bqFGjtHTpUkVHR5vVviL++6hoHGwdAAAAAACg/Ko/6Wtbh6DkaT1L9brNmzerX79+evjhhzVr1iydOHFCc+bM0S+//KLvv/9ednaFv5M0Z84ceXh4mJ7XqlXL9Dg7O1vPPPOMPv/8c1WpUkWxsbF68cUXSzehMhYfH6+EhARFRkbaOpQ7oqLNFwAAAADuRfdyfuHPkpKStHDhwlK3K8scgyWfkV9++WVNmjTJKuPaUkJCggYNGnTX5mlQPHPft1vdp8HBwQoODlZCQoJef/31Esckh1T+UUAFAAAAAEAxpk6dqjp16ui7775TpUqVJEn33Xef/va3v+nrr79W7969C7Xv27ev6tevX2xfs2bN0pYtW7R48WKdOXNGEydOVLt27dS2bduyngYAAAAAALiLTJgwQX/96181b968UrW7W3IMDg4OcnC498sN0tPTVb16dVuHAQuZ+76Vl/sUdwZb+AEAAAAAUIwDBw6offv2puIp6XqRlCStXbu2SHuj0ajMzMxil89PTEzU2LFjNXDgQEVGRqpHjx7avn37bcVXsHXgzp07FR4eLhcXFwUEBOiDDz4o0vbgwYPq0aOHXFxc5OLiop49e+rw4cOF2hRsPbh48WIdO3as0HaEcXFxpY5z69at6tKli9zc3OTm5qaOHTvqm2++sTi+gvkmJycXOl6/fn0NGzbM4utiyXzT09MVEREhb29vOTs7KygoqNh7YPPmzQoKCpKzs7OaN29+2+8xAAAAAKB82b59uzZs2KCXXnqp1O3KIsdgyWfkhg0bFjr/Z8nJyTIYDIqOjpaHh4eaNWumxMREtWzZUu7u7nrnnXcKtTf3M7e5LMkxGAwGGY1GxcbGmp7fmGOwxKFDh/TYY4/Jy8tLVatW1f3336+YmJhi25aUKzl37pzGjRun5s2by8XFRa6urgoLC1NiYmKx8zAnN2SOshjXmrkSS963ku5TS5RFDqmg35iYGMXHxyswMFDOzs4KCAi4rfsft4dSOwAAAAAAipGVlSVnZ+dCxypXrizpelLsz1q0aKGLFy/KxcVFTz31lGbNmqUqVapIkho1aqRly5apS5cuOnPmjLZu3aqnn37a9Npdu3apdu3aqlOnjsVxDhkyRJ06ddL06dP10Ucfafjw4WrVqpWCgoIkSWlpaerQoYMpeSlJs2fPVocOHfTLL7+Yth1cunSpJGnhwoU6dOiQ5syZYxojODjY4rgkac2aNQoPD1fDhg01YcIEeXl5KSEhQQsXLlSXLl0sis/a18Xc+WZmZiokJETp6ekaPXq0vLy8tGLFCvXp00fffvutOnbsKOn6PdGjRw/5+/tr2rRpOnbsmJ544olSxQ4AAAAAKH+MRqOioqI0ZswYeXl5lbpdWeQYLMkJzJo1SxcvXtTKlSu1atWqm/a5ceNGvfTSS3rppZcUGhqqiRMnat++fRo3bpyGDx8uR0dHsz9zm8vcHEP79u1Ncx48eLDCw8P1+OOPS5ICAgIsGlOScnJy1L17d+Xk5CgqKko1a9bUr7/+qtWrVxcpojInV5KUlKQPPvhAgwYN0gsvvKALFy7o/fffV6dOnbRv3z41adKkUJ8l5UDMZe1xrZ0rseR9M/c+NYe1c0g32rlzp+bOnauIiAj5+/tr3759Rb48iDuHAioAAAAAAIoREBCgn3/+udCxH374QdL1b5MVqFq1qiIiItS+fXs5Ojpq7dq1evfdd3X06FGtX79ekjR58mR17txZTZs2lXQ9wdSqVSvNmDFDS5Yskaenp2bOnFmqAqrevXtr5syZpsf16tXTV199ZUpWLViwQBkZGUpMTNRDDz0kSQoJCVFISIgWLFigV199VZI0aNAgSdK3336rlJQU0/PSysvL0/PPP6+AgADt3r1b1apVkyQ988wzOn36tKmdufFZqqTrYu58Z86cqaSkJO3du1f333+/JGnkyJFq2bKlYmNjTcmvGTNmKD8/X9999528vb0lSVWqVNHrr79eqvgBAAAAAOXLJ598oqSkJI0bN+622pVFjsGSnMBjjz0mSfr9999vWZgyZswYPfnkk9qwYYOSkpIUGxurH3/8UWvWrNGRI0fUpEkTsz9zm8vcHEODBg3UoEEDSdcLcZo3b35beZBDhw7p2LFjev/99zV8+HDT8WvXrhVqZ26upHHjxkpJSZGLi4vpWL9+/VS/fn19+OGHmjFjRqF+S8qBmMva41o7V2LJ+2bufWoOa+eQbrRhwwbt3r1brVq1Mh3Ly8u7rXhRemzhBwAAAABAMf72t79p7969iomJUVJSkrZs2aKRI0eqevXqys7ONrXr16+f3nvvPT311FPq37+/4uLiNHbsWG3YsEFbt26VJHl6emr37t3asWOHXnvtNaWlpSksLExZWVmKj4/X5s2b1bp161LFGR4ebnrs6+srDw8PnThxwnQsISFBDRo0MCUOJemRRx6Rv7+/EhISSjWmOfbs2aOUlBSNHj3alBAs4OPjU+bxlXRdzLVy5Uo9+OCD8vb2VkZGhjIyMnTu3DkFBwcrMTHRlNRKSEhQ+/btTQlBSXrqqadKHT8AAAAAoPy4evWqoqOjNXnyZLm6ut5Wu7LMMVhTwepZ7u7upsc1a9aUJJ0/f16S+Z+5zWWrHEjVqlUlSTt27FBOTo7puIND4fVszM2VFGw/KF0vwjp79qyqVKkiDw8PHT16tMj41sqBWHvcipYrKc393Llz50LFU5Jkb29/p0LGn1BABQAAAABAMUaMGKEhQ4YoNjZWAQEBevTRR9WzZ0+1aNHCtDXfzTz77LOSpC1btkiSUlNT9dxzz+nJJ5/U8ePH9corr2jSpEmaM2eOmjdvrkmTJpU6zhuTUNL1b/LdmKw7ffq0/Pz8irzOz89PJ0+eLPW4JSlIrBV8I/Zmyiq+kq6LuY4cOaLExER5enoW+nnvvfeUk5OjzMxMSdKpU6dUt27dInMAAAAAAGDWrFkyGo167rnnbrtdWeYYrKmgeMjR0bHQY0mmz+fmfuY2l61yIA0bNlRERITi4uLk6empHj16aNasWaZCsQLm5kry8/M1d+5c3XfffXJ2dpaHh4c8PT2Vnp6urKysIu2tlQOx9rgVLVdSmvv5z9siwrbYwg8AAAAAgGI4Ojpq8eLFev3115WUlKR69erJz89P/v7+JSa6ateuLel/36isXLmyQkNDNXfuXDk7O+vXX3/Vo48+qtjYWPn4+CgqKkotWrTQwIEDLY7Tzq5ifzfqZt9GtdZ1MRgM6tq16023Tij4xqizs7NVxgMAAAAAlC8XLlzQ9OnTNXHiRGVkZBQ6d/nyZZ04cUK1atXSlStXzGpXljmGO8VoNEoy/zP3veC9997TiBEjtH79eq1fv17jxo3T+++/r59++sninMH06dMVHR2tp556SlOnTpW7u7skaeDAgaZrdyNr5UCsPW5Fy5WU5n6uXr16GUcFS1BABQAAAADALdSpU0d16tSRJCUlJSk5OVlDhw695WuOHz8u6fqy+pLk5uamAQMGmM5/8803Cg0NNX0r9PTp01q1alWZJDd9fHyUkpJS5PixY8fk7+9f5LjBYLDKuAV9Hzx4UJ06dbrt+CpVqiRJunLliulYfn6+0tLSbivOkubboEEDXb16VWFhYbds5+fnV2R5/OLmBQAAAACoWM6fP69Lly7plVde0SuvvFLoXFxcnOLi4rRr1y55eHiY1a5169ZllmOwVk7AXOZ+5jaXpTkQawsKClJQUJCio6M1e/ZsjR07Vps2bVLPnj0lmZ8rWbZsmdq3b6+PP/7YdCw3N1d//PFHmcZv7XHvlVxJQc7p2rVrt2xnrRwS7l4V+2uqAAAAAADcRHHfrHv11Vdlb29fKAn552+FStK8efMkSZ07dy62bzs7O2VnZ5ueZ2VllVmSsmPHjkpKStL3339vOrZt2zYlJyerY8eORdq7uLgoIyOjxKRRSR544AH5+vpq7ty5unjxYqFzNxY9mRtfQRHbnj17TMdWr15dqiXpb1TSfMPDw7Vt2zYlJiYWOVdQKCdJnTp10tatW5Wammo69sknn9xWbAAAAACAe1+tWrW0Zs2aIj+S1LNnT61Zs0b33Xef2e3+zJo5BmvlBMxl7mduc1maA7GWzMzMItesoFiqYPtCyfxcib29vWm7wwKLFi0q8/fF2uPeK7mSgm0Gf//991u2s1YOCXcvVqACAAAAAKAYx44d09ChQ9WnTx9Vq1ZNq1at0oYNGxQdHa3GjRub2oWEhCgoKEitWrVS5cqVtXHjRn355ZcaPHiwWrduXWzf3bp1U1RUlCIjI+Xj46NZs2Zp0aJFZTKPUaNG6e2331bfvn0VGRkpSZozZ468vLw0atSoIu2Dg4M1f/58RUREqG/fvqpUqZICAwNNBUzmsre319tvv63w8HC1bt1aQ4cOlZeXl7Zv367Lly/riy++sCi+du3aycPDQ1FRUTp+/LiuXLmiZcuWmZaTL62S5jthwgQtX75cYWFhGjFihJo2baoTJ05o06ZNcnV11bp16yRJL774ohYuXKjQ0FCNGDFCycnJ+uyzz24rNgAAAADAva9y5crq1atXsefq169f6Jy57W5kzRxDSZ+R9+/fr/3795seSzKtVlStWjX17dvXovHM/cxtLktzINby3XffafTo0erXr58aN26ss2fPav78+fLz81NwcLCpnbm5kj59+igmJkYjR45UUFCQ9u3bpy+//FIeHh5lNoeyGNdWuRJL71M/Pz+1adNGr732mvLz8+Xq6qrWrVurSZMmhdpZK4eEu5ixHLhw4YJRkvHChQu2DgUAAAAAKpSrV68aDx48aLx69aqtQ7G6c+fOGbt37250d3c3Ojk5GQMDA43vvvuuMT8/v1C7SZMmGZs0aWJ0cXExOjo6Ghs1amR84403jNeuXbtl/8uXLzf6+/sbPT09jbGxsRbH99FHHxklGY8ePVroeL169YxDhw4tdOyXX34xduvWzVi1alVj1apVjd26dTMePHiw2H7z8vKMY8eONdaqVctoMBiMkowfffSRxfEVSEhIMIaFhRldXFyMLi4uxvbt2xvXr19fqvi+//57Y8uWLY2VK1c2tm3b1rhnz54i87Xkupg734yMDONzzz1nrFu3rrFSpUpGX19fY79+/YwbN24s1G7z5s3Gli1bGp2cnIzNmzc37tixwyjJOGXKFEsuGf6rpN8vluaDyB8BAAAAd6/ynF+4GUnG5557zirtbjfHUKCkz8hTpkwxSir2p169ekaj0Wg8evSoUZJx8+bNRqPRaBw6dKixQ4cOxZ4zGs3/zG0uS3IgRqPRKp/bk5KSjMOGDTPWr1/f6OTkZPT29jb269fP+OuvvxbbvqRcSXZ2tnH8+PHG2rVrGytXrmzs0KGD8eeffzYGBAQYe/bsaWpnaQ6kJGUxblnlSm7Vhzn36Z/9/vvvxg4dOhidnJyMkoxz5swp0saaOaSS5gDzmfP3w9yckMFoLGZPgntMZmam3NzcdOHCBbm6uto6HAAV0KEmTW0dAgAAgE34/7RPR48elb+/v5ydnW0dDoByJCsr65a/XyzNB5E/AgAAAO5eJf33PwAAxTHn74e5OSG7sgoSAAAAAAAAAAAAAAAAAO52DrYOAAAAAAAAXJeammpWO29v7zKOpHh3e3wAAAAAAOA6PsMDgGUooAIAAAAA4C7h4+NjVrvc3Fw5ONz5j/R3e3wAAAAAAOA6PsMDgGX4TQgAAAAAwF1i48aNZrWzt7cv40iKd7fHBwAAAAAAruMzPABYhgIqAAAAAADuEmFhYbYO4Zbu9vgAAAAAAMB1fIYHAMtQQAUAAGBD1QcMUI0nB6pSvXrKv3xZV3/+WSfHjZfxyhWz+3C+/37VGPgXVWndWg5eXso9c0aXNm1SxoIFyr9cuJ/KDzwgzxdGy7lJExnz85V18KDS585T1v791p4aAAAAAAAAAAAAcE+ggAoAAMBGPKPGyCMiQpnr1un8x5/IrkoVVX4gSHZOTsqzoICq5l//qiqtWipz7TrlJCerUkAD1Rg0SFXatVNy/wFSXp4kyalJE/l99KGyDx9W+tx5koODagz8i+p99KGO/l8/5Rw9WlZTBQAAAAAAAAAAAO5aFFABAADYQCV/f7k//bQy3n1X6W/O/d+JxYst7uvc4sU6NWGCqVBKknJPnZb3S9FyCQ3Vxf/udV/98XDJaFTKX59W/uXLkqTL27YqYN06uXTtqrPvvnt7kwIAAAAAAAAAAADuQXa2DgAAAKAicu3VU8Zr15Sx8H1JkqFKlVL3lbV/f6HiKUm6/P33kqRK/vVNx+zdPWTMzjYVT0nStbPnSj0uAAAAAAAAAAAAUB5QQAUAAGADlZs3V/Z//iOX0Ed1347tarJ3jxpu/k6uPXtYpX+HmjUkSdfS003HruzaJXtXV3lNGC/HunVVyd9f3i+/pGtnz+rCqlVWGRcAAAAAAAAAAAC417CFHwAAgA041KoluypV5B0To4wF7yj31CnVeOpJ1Z45UzlHk5V18OBt9V/jLwOVd/myLm1OMB3744sv5NyksWoOGSL3p5+WJGUnJSn5LwN17cyZ2xoPAAAAAAAAAAAAuFexAhUAAIAN2Dk7q1LdukqfNVvnPvxQF9ev1/ERI5V/5Ypq/u3p2+rbpVs3ufborvQ331TeH3/870RennKSk5W5dq1OjInSqcmTJaNRdd9+W/bVq9/WmAAAAAAAAAAAAMC9igIqAAAAGzDm5kqSMjdu/N+xK1d0dd8+OTdqXOp+nRo1ks8/pipz/XqdX/pxoXPuEc+o5uAhOvXSy7q4bp0urIpXyt+Gq1L9eqr512GlHhMAYHsxMTEyGAwWvcZgMCgmJsb0fNCgQTIYDKafhIQE6wYJAAAAAADKjdLkIu5GJ0+eVK9eveTm5iaDwaBhw4bZOqRSSU5OlsFgUFxcnK1DAe5ZbOEHAABgA3nnzksBUt65c4WPX7gg5//3/0rVp4Onp3zffUc5R47o1MRJRc5X799fV3bvlv5bvCVJ11JTlXPkiCq3alWqMQGgRDFuto5AirlQ5kOcP39eY8aM0Zdffqn8/Hx169ZN8+fPl5eXV6F2OTk5cnR0vCsTjKNGjVK3bt106NAhvf7667YOBwAAAACA/7nH8wsbNmzQvHnz9NNPP+ns2bOqU6eOevTooZiYGLm7uxdqazQa9d5772nBggX67bff5OLionbt2unTTz9VtWrVTO3KIscQHx+v5ORkRUZGWq3Pu11UVJR++OEH/f3vf5e7u7sCAgJsHdI9oyLeLyjfWIEKAADABrKP/C5JcvDwKHTcvkZNXUtLs7g/Q5Uq8n33XRmvXdPxkc/KmJ1dpI2jl5dkX8x//tnby65yZYvHBAD8T3h4uFasWKHx48fr5Zdf1qZNm9S9e3fl5eVJkrKzszVkyBBVq1ZNNWrU0Ny5c606/ssvv6yrV6/eVh/BwcEaNGiQOnfubKWoAAAAAACAJP38889ydHTUc889p7fffluDBw/W559/rpCQEGVlZRVqGx0drWeffVZNmjTRvHnzNHnyZDk6Opo+95dljiE+Pl5vvvmmWW2tkYu4GyQkJGjQoEF68cUXNWjQID300EO2DqlU6tWrp6tXr2rw4MF3bExL7hfgXsAKVAAAADZwadt21fjLX+Taq5fOffihJMm+enVVCWqlzK/XFmnfYO3XkqSkHj2LdmZvr7pz35SDj7eSBz5ZZFWrAjknT6pq27YyVKki45UrkiRHX185+fvrwurVVpoZAFQ8Gzdu1JYtWxQXF6ehQ4dKkpo1a6ZevXppxYoV6t+/v2bNmqUtW7Zo8eLFOnPmjCZOnKh27dqpbdu2VonBwcFBDg58xAcAAAAA4G40YcKEIsceeOAB9enTR1999ZX+7//+T5J0+PBhzZw5U9HR0frHP/5hajtmzBjT47LOMZirvOQi0tPTVb16dVuHcdsMBoOcnZ1tHQZwT2MFKgAAABu49N13uvrvf8trTKS8xo9TjUFPyW9xnGRvr4z33y/S3qlBAzk1aFBsX7UmTlC1kBBlfv21KjdvLtfevU0/lVu2NLU79+FHcvD0VP1PPlaNwYNU829/U73FcTJeu6ZzcYvLaKYAUP6tWbNGTk5OGjBggOlY9+7d5e7urtX/LVBNTEzU2LFjNXDgQEVGRqpHjx7avn37bY/dsGFDGQwG08/NbN68WUFBQXJ2dlbz5s1ve+z09HRFRETI29tbzs7OCgoK0tq1RQuAAQAAAABA8Xx8fCRJaTfsSPDZZ5/J0dFRkydPliRdunSpyOvKIsdQkFdYvHixjh07VijXEBcXV6htSbmI5ORkGQwGRUdHy8PDQ82aNVNiYqJatmwpd3d3vfPOO4XaWzvHcPDgQfXo0UMuLi5ycXFRz549dfjw4UJt4uLiTPEbjUbFxsaang8bNsziMWNiYmQwGJSYmKgWLVrI2dlZDzzwwE3fF4PBoJiYGMXHxyswMFDOzs4KCAgoNG9z5iFJvXr1uuX7VcCS67x161Z16dJFbm5ucnNzU8eOHfXNN98Uit/c+wW4l9z7JaEAAAD3IqNRx5+JkNfECXJ74gnZVa6srEOHdHz4cOUeO2ZRV05NmkiSahazNO8fq1bp6k8/XX/8xRfKO39eNYf/TZ4vvCCDnZ2u/PSz0l+MVPZvv932lACgojpw4IAaNWpU6Ft+dnZ2CgwM1IEDByRJjRo10rJly9SlSxedOXNGW7du1dNPP21qv2vXLtWuXVt16tSxaOxZs2bp4sWLWrlypVatWlVsm0OHDqlHjx7y9/fXtGnTdOzYMT3xxBOlmOl1mZmZCgkJUXp6ukaPHi0vLy+tWLFCffr00bfffquOHTuWum8AAAAAAMqzCxcuKCsrS7/99pvGjRsng8Gg4OBg0/kff/xRgYGBWr16tSIjI5Wenq66detqxowZGjhwoKSyyTEsXbpUkrRw4UIdOnRIc+bMMZ27MT7JvFyEdH3F7pdeekkvvfSSQkNDNXHiRO3bt0/jxo3T8OHD5ejoaPUcQ1pamjp06GAq4JKk2bNnq0OHDvrll1/k4eEhSWrfvr1pzoMHD1Z4eLgef/xxSVJAQIBFY97o8ccf15NPPqlhw4bpnXfeUffu3bV//375+/sXabtz507NnTtXERER8vf31759+5ScnGzRPCRp3Lhx+stf/qKMjIxCK5XdyJLrvGbNGoWHh6thw4aaMGGCvLy8lJCQoIULF6pLly6SLLtfgHsJBVQAAAA2knf+vE5PmmxW20NNmt70XMqQoWaPefHbb3Xx22/Nbg8AKFlqaqrq1q0rSQoLC1N6erp27dolLy8vHTx4UJI0efJkde7cWU2bXv99PmTIELVq1UozZszQkiVL5OnpqZkzZ1pcQPXYY49Jkn7//febJi1nzJih/Px8fffdd/L29pYkValSRa+//nqp5jtz5kwlJSVp7969uv/++yVJI0eOVMuWLRUbG0sBFQAAAAAAN9G1a1f9+OOPkqQaNWpowYIFannDLgInT57UpUuXNHLkSL3yyiuqV6+e3n77bT311FNq3LixgoKCyiTHMGjQIEnSt99+q5SUFNPz4piTi5Cubzv45JNPasOGDUpKSlJsbKx+/PFHrVmzRkeOHFGTJk2snmNYsGCBMjIylJiYqIceekiSFBISopCQEC1YsECvvvqqJKlBgwZq8N8dHwYPHqzmzZvfcs7mGjFihGJjYyVJ4eHhCggI0Jw5czRv3rwibTds2KDdu3erVatWpmN5eXkWzUOS6RolJyfftIDK3Oucl5en559/XgEBAdq9e7eqVasmSXrmmWd0+vRpU3+W3C/AvYQt/AAAAAAAuA3Z2dmqVKmSpOvJqhMnTig3N1dOTk7KysqSJHl6emr37t3asWOHXnvtNaWlpSksLExZWVmKj4/X5s2b1bp16zKJLyEhQe3btzcVT0nSU089Ver+Vq5cqQcffFDe3t7KyMhQRkaGzp07p+DgYCUmJpqSfQAAAAAAoLD58+dr7dq1euONN9S4cWPVrl270PkrV64oOTlZ06ZN0/jx49W/f399/fXXqlatmmbOnCnJtjkGS3h5eUmS3N3dTY9r1qwpSTp//rwk6+cYEhIS1KBBA1PRkSQ98sgj8vf3V0JCghVmdWsFq4RJUv369dWmTRtt2bKl2LadO3cuVDwlSfb29pKsPw9zr/OePXuUkpKi0aNHm4qnChRsOQmUZ6xABQAAYCMOdeqo3ocfyNHPT5J07XSqUp4ZrpwjSRb143z//ao5ZLCqhYbKrmpVyWhUTnKyjkdEKPfEyUJtXbp2kceIEaoUECDl58uucmWd/+ILpb7y6k16BwCUxMnJSTk5OZKkn376SXl5eapataqys7NN2/qlpqZqypQp2rBhg7p27apXXnlFv/32myIjIzVt2jS98MILmjZtWpnEd+rUqSLf2PT779+e0jhy5Iiys7Pl6elZ7PnMzEzVqFGj1P0DAAAAAFBePfjgg5Kk7t27KyQkRO3bt1dCQoJCQkIkyfQFrYLt5CSpWrVqCg4O1v79+yXZNsdgCQeH66UIjo6OhR5LMuVRrJ1jOH36dLE5Dz8/P508ebKYV1iXr69voed169bV5s2bi23bpEmTm/Zj7XmYe52PHj0qSabVzYCKhgIqAAAAG2mwaqXsXFx0eccOGa9dU7X27eW/fLl+fbCNdO2a2f3U/Otf5RLWSQaDQRe//Vb21aurSuvWarBmjX5t01bKzZUkVWnbRnXnztWVPXt09r2Fch85QpLk8uijSjUYJKOxTOYJAOWdt7e3zpw5I0mFvp2XlpZmWvWpcuXKCg0N1dy5c+Xs7Kxff/1Vjz76qGJjY+Xj46OoqCi1aNGi0DcVraWgiMtaDAaDunbtqnHjxhV7/s/fUAQAAAAAAEU9/PDDqlWrlhYtWmQqoPL09NThw4eLFLrUrFlTe/bskWTbHIO1GP+bi64IOYaCorg/q169+h2LoSJcZ8AaKKACAACwAffhw2Xv6qrz//qXUl+dIknyeO45eY5+Xl7jxinNgm8IXdm7V249e+jUpEm6EP+lJMk7NkY1BgyQ15gxSpsx43r/I0cqNzVVx4b9VXX+OVN/fP65ag4ZIgcPD1Xr2EGXNidYfZ4AUBEEBgZq4cKFysrKMhUr5efn68CBA+rWrZskyc3NTQMGDDC95ptvvlFoaKgmTZok6fo3C1etWlUmyU0/Pz+dOHGi0LGUlJSbti9I7F27STFvgwYNdPXqVYWFhVkvSAAAAAAAKqCcnBzTl7IkqVmzZtq2bZtSU1NVp04d0/H09HTTdn9lmWMwGAylnUqpWDvH4OPjU2zO49ixY/L397fKGLdy/PjxQitLnThxosiqVOaw9jzMvc4FfR88eFCdOnUqsd87fb8AZc3O1gEAAABURK69espoNCptxkzTsYx33pExP18uYSV/MLmRU/16ys/OVubadaZj5z7+RJJU9aF2/2vXqJGu7N6tyoGBqvrII8p49z3TuWrtO5R2KgBQ4fXq1UvZ2dlatmyZ6di6det09uxZ9e7du9jX2NnZKTs72/Q8KyurzJJOnTp10tatW5Wammo69sknn9y0fd26dSVJv//+e7Hnw8PDtW3bNiUmJhY5d/z48duMFgAAAACA8qdga7QbffPNNzp79myhgpuCL2J9+umnpmNnz57Vjh071Lp162L7tmaOwcXFRRkZGTf9UpW1WTvH0LFjRyUlJen77783Hdu2bZuSk5PVsWPH2wnVLJ999pnpcXJysnbu3KkOHSzPvVt7HuZe5wceeEC+vr6aO3euLl68WKhdWlpakdfe6fsFKGusQAUAAGADjrVry5iTo/xLl/53MD9f+ZcuycHDw6K+nBo1Uk5ysoz/3TdekhxqVJck2d+wDLDByUnG7GzVmjRR5+IWK+/cOdO5SgENSjUPAIDUuXNnhYSEaPTo0Tp16pQcHR01bdo0tWzZUk888USxr+nWrZuioqIUGRkpHx8fzZo1S4sWLbJo3P3792v//v2mx5L08ccfS7q+9Hrfvn0lSS+++KIWLlyo0NBQjRgxQsnJyYUSen/m5+enNm3a6LXXXlN+fr5cXV3VunVrU0J3woQJWr58ucLCwjRixAg1bdpUJ06c0KZNm+Tq6qp169bdtG8AAAAAACqi0NBQ3Xffferatavc3Nz073//WwsXLlTNmjUVGRlpatenTx898MADio6OVlpamvz8/PT+++8rLy/PtMLUn1kjx1AgODhY8+fPV0REhPr27atKlSopMDDQtBqWubkIc1k7xzBq1Ci9/fbb6tu3r+m6zpkzR15eXho1apRFfZXGu+++q0uXLsnX11cLFiyQk5OTRo8ebXE/1p6HudfZ3t5eb7/9tsLDw9W6dWsNHTpUXl5e2r59uy5fvqwvvviiUL8l3S/AvYYCKgAAABswODsr/8oVSVKjH76XwdlZvz4UrPxLl+Xgbdl+4w4eHspNvb7Ms9+HH8q+Zg3lHE1W/rVrMjg5mdrlpqSoStu2sqtaVec+/LBwHzVq3uaMAOAmYi7YOoIyZzAYFB8fr8jISE2fPl35+fnq1q2b5s2bJweH4j92BwQE6NNPP9X48eN16dIljR8/vtDy++ZYuXKlYmNjCx0bPHiwJKlevXqmpKW/v7/Wrl2rMWPGaOLEiWrcuLFWrlyphx9++KZ9f/rpp/rb3/6mqKgoZWdna86cOaYCKldXV+3YsUNTpkzR8uXLlZaWplq1aqldu3aKiIiwaA4AAAAAAJjlHs8vjBo1SvHx8Zo+fbouXLigOnXqaMCAAYqNjZWfn5+pnZ2dndatW6dx48bpww8/1OXLl9WqVStt2LBB9913X7F9WyPHUKB///7avXu3Pv74Y8XFxcloNOqjjz7SsGHDJJmfizCXtXMMXl5e2rJli8aOHat//OMfkqSQkBDNnj1bHhZ+cbk0vvjiCz333HP67bff1KxZM61bt65UW/hZex6WXOfevXtr06ZNmjp1qqZNmyZJatWqlaKjo4v0W9L9AtxrDEaj0WjrIG5XZmam3NzcdOHCBbm6uto6HAAV0KEmTW0dAoB7TJN/H1DehQv67eFH1OTAfsneXv95+BH5L1smR9+6Oty0mdl9BWz8RjlHknR85EgFbFgvew8P2Vetqqv796uSv7/+82AbSVKNoUPkPXmyLm3frtSYWDn6+Kje0iXKz87WtdRUHenaraymC6Ac8/9pn44ePSp/f385OzvbOhwA5UhWVtYtf79Ymg8ifwQAAADcvUr673/gbhYTE6PY2FjZsvTit99+U6NGjfTZZ5/pL3/5i83iAO40c/5+mJsTYgUqALCCpn85ZesQANxz8uRQ2XD998ebTSX7Smrc9aTkZpCMRst+rzhfUSXf/Ouv+eZpaUi89Eu8KtvlSwbv//XVLl/Kuaxqjzyiht9ulIz5kiS77LOq5HyR32UASiXL1gEAAAAAAAAAFdx//vMfSSrVilcArqOACgCsoH7Wp7YOAcA95udcOzk5uqlJ1qeFqg9+rlRLTnnG68fN9Fmmh6pX8dEQxxWK7/ew0tOyNeAzJ8X9tY2qX3RU96xP5eLkoO+DO+ndhCPacjhdtWtUVuqFq/ry+Ud02clLP6dV0pCcz3Qt/55fnBTAHXbY1gGUM6mpqWa18/b2LuNIAAAAAADAvYwcQ/m3f/9+7d+/X1evXtWsWbNUr149tW3b1tZhAfcsCqgAAABs4OT5K2rq4yoXZwddzLomSbKzk1ycHXTi/FWL+jqcmqkn2/gpbtiDupaXr7/F7VJOXr4ae7toy3/SJUluVRxVzclB47o01rgujQu9vqqTg4Ibeqipj6sOnLxgnQkCAErFx8fHrHa5ublycOAjPQAAAAAAKB45hvJv5cqVio2NlYODg1q0aKFPP/2U9xK4DfzrAQAAsIE1+0+rWW03RXdvosmr/i1JGv3ofbIzGPTtwTNF2v9nandJUqOX1xU5l/Bruv76sL/quVdRr/nbdfZyjh5t7KWaVStp06HrfaVfzNbTcbuKvPbDYQ8q32jUy6v+reSMy9acIgCgFDZu3GhWO3t7+zKOBAAAAAAA3MvIMdw5MTExiomJqTDjAuUVBVQAAAA28E7CET3bMUB/aeOn2jUqKzfPqNAmXrqam6dp64tuiFXJwe6mfXVs7PnfNvYa16Wx8vKN6tSslk6cv6LUC9dXs8q+lq//nLmoWf1aaOOhM7qSnaeu/6+WJOnfJy/o050pZTBLAIClwsLCbB0CAAAAAAAoB8gxAIBlKKACAACwkZ5zt+nj4W3V/r7rBVCnL2Tp6Y92KedavkX9NPVxlXS9yKpXi9qm49WcHPSXNn7afewPSVJmVq6u5ORpVMeGqlrJXkn/XXFqX8oftz8ZAAAAAAAAAAAA4B5FARUAAICNHD9/VR1mJpjVtv6kr2967i8LfzCrj8yr1/TXYrbxAwAAAAAAAAAAACqym+8FAwAAAAAAAAAAAAAAAADlHAVUAAAAAAAAAAAAAAAAACosCqgAAAAAAAAAAAAAAAAAVFgUUAEAAAAAAAAAAAAAAACosCigAgAAAACgHIuLi5PBYFBycrLV+z558qR69eolNzc3GQwGDRs2zOJ2gwYNksFgMP0kJCRYPc47LSYmRgaDwdZh3LbyMg8AAAAAAMoDg8GgmJgYW4cBlFsUUAEAAAAAcJvOnz+vYcOGqUaNGnJzc9OAAQOUlpZWpF1OTo6MRqMNIiwbUVFR+uGHH/T3v/9dS5cu1YgRIyxuN2rUKC1dulTR0dF3Kuy7Qnx8vN58880KMy4AAAAAVHS5ubl67bXX1KVLF7m6ut70S0RGo1HvvvuumjdvrsqVK8vLy0t9+vTRpUuXCrW7F3IMFe0zaEWbL1DeONg6AAAAAABA+RW4ONDWIejA0ANlPkZ4eLj27NmjyZMny9HRUdOnT1f37t21c+dO2dvbKzs7W88884w+//xzValSRbGxsXrxxRfLPK6ylpCQoEGDBpU4l1u1Cw4OVnBwsBISEvT666+XVah31Msvv6xJkybdsk18fLwSEhIUGRl5Z4IqxbjmzAMAAAAA7oTykF+4fPmyXn31Vfn7+yswMFCJiYnFtouOjta0adPUr18/jR49WpcuXdL27dt19epVVatW7Z7KMdjqs6+tVLT5AuUNBVQAAAAAANyGjRs3asuWLYqLi9PQoUMlSc2aNVOvXr20YsUK9e/fX7NmzdKWLVu0ePFinTlzRhMnTlS7du3Utm1bG0d/e9LT01W9enWrtSsvHBwc5OBw76dcyss8AAAAAOBu4OLiopSUFPn6+mr58uXFFlAdPnxYM2fOVHR0tP7xj3+Yjo8ZM8b0uLzmGADA1tjCDwAAAACA27BmzRo5OTlpwIABpmPdu3eXu7u7Vq9eLUlKTEzU2LFjNXDgQEVGRqpHjx7avn37bY996NAhPfbYY/Ly8lLVqlV1//33KyYmpti2aWlpCg8Pl4uLiwICAvTBBx8UOh8XFyeDwaDk5ORCx+vXr69hw4YVaWcwGGQ0GhUbG2t6Xpp2lkhPT1dERIS8vb3l7OysoKAgrV271uJ+6tSpo+eee+6m51988UV5e3sXOmYwGBQTE6P4+HgFBgbK2dlZAQEBhcZv2LChaY4Gg6HYvgvOLV68WMeOHSvUPi4urkzma+m4Jc0jOTlZBoNB0dHR8vDwULNmzZSYmKiWLVvK3d1d77zzTpnNAwAAAADuVfb29vL19b1lm88++0yOjo6aPHmyJBXZtk8qmxxDwWf4nTt33jJ3IEkHDx5Ujx495OLiIhcXF/Xs2VOHDx8u1MaSz6CW2Lp1q7p06SI3Nze5ubmpY8eO+uabbyyOz9IcSEnXpSw+62/evFlBQUFydnZW8+bNrZJHAnBrfI0QAAAAAIDbcODAATVq1EjOzs6mY3Z2dgoMDNSBA9eX92/UqJGWLVumLl266MyZM9q6dauefvppU/tdu3apdu3aqlOnjtnj5uTkqHv37srJyVFUVJRq1qypX3/9VatXry62iGrIkCHq1KmTpk+fro8++kjDhw9Xq1atFBQUZNF827dvr6VLl0qSBg8erPDwcD3++OOSpICAAIvbmSszM1MhISFKT0/X6NGj5eXlpRUrVqhPnz769ttv1bFjR7P7atOmjfbu3XvT83v27FGbNm2KHN+5c6fmzp2riIgI+fv7a9++fYWSrbNmzdLFixe1cuVKrVq1qti+C67JwoULdejQIc2ZM8d0Ljg4uEzma8m45s5Dur762ksvvaSXXnpJoaGhmjhxovbt26dx48Zp+PDhcnR0tPo8AAAAAKA8+/HHHxUYGKjVq1crMjJS6enpqlu3rmbMmKGBAwdKKpscQ4GScgdpaWnq0KGD6Us1kjR79mx16NBBv/zyizw8PCRZ9hnUXGvWrFF4eLgaNmyoCRMmyMvLSwkJCVq4cKG6dOliUXzWvi7W/qx/6NAh9ejRQ/7+/po2bZqOHTumJ554olSxAzAfBVQAAAAAANyG1NRU1a1bV5IUFham9PR07dq1S15eXjp48KAkafLkyercubOaNm0q6XrirVWrVpoxY4aWLFkiT09PzZw506Lk5qFDh3Ts2DG9//77Gj58uOn4tWvXim3fu3dvzZw50/S4Xr16+uqrrywuoGrQoIEaNGgg6XphVPPmzTVo0KBStzPXzJkzlZSUpL179+r++++XJI0cOVItW7ZUbGysRYU4bdu21Wuvvaa8vDzZ29vrwoULkiQ3Nzfl5+fr559/1qRJk4q8bsOGDdq9e7datWplOpaXl2d6/Nhjj0mSfv/995sWHhVcg2+//VYpKSk3vSbWnK8l45o7D+n6FhJPPvmkNmzYoKSkJMXGxurHH3/UmjVrdOTIETVp0sTq8wAAAACA8uzkyZO6dOmSRo4cqVdeeUX16tXT22+/raeeekqNGzdWUFBQmeQYCpSUO1iwYIEyMjKUmJiohx56SJIUEhKikJAQLViwQK+++qokyz6DmiMvL0/PP/+8AgICtHv3blWrVk2S9Mwzz+j06dOmdubGZ6mSrou1P+vPmDFD+fn5+u6770wrZFepUkWvv/56qeIHYB6Lt/DLzc3Va6+9pi5dusjV1VUGg0EJCQmF2uzatUtPP/20GjZsqCpVqqhRo0YaP368Ll68WKS/8+fPa9iwYapRo4bc3Nw0YMAApaWllXpCAAAAAADcSdnZ2apUqZKk61ubnThxQrm5uXJyclJWVpYkydPTU7t379aOHTv02muvKS0tTWFhYcrKylJ8fLw2b96s1q1bWzRu1apVJUk7duxQTk6O6biDQ/HflQoPDzc99vX1lYeHh06cOGHRmLa0cuVKPfjgg/L29lZGRoYyMjJ07tw5BQcHKzExsVAhU0natGmjK1eumJbwDwsLU+fOnSVJ//nPf3Tp0qViV6Dq3LlzoeIp6foWDGXBmvMtK15eXpIkd3d30+OaNWtKup7vke6NeQAAAADA3eLKlStKTk7WtGnTNH78ePXv319ff/21qlWrZirgKYscQ4GScgcJCQlq0KCBqThJkh555BH5+/sXqRmwpj179iglJUWjR482FU8V8PHxKfP4rJVTMfczckJCgtq3b28qnpKkp556qtTxAzCPxStQXb58Wa+++qr8/f0VGBioxMTEIm1mzZqlxMRE/eUvf1GjRo106NAhzZ8/X999951+/PHHQsnc8PBw7dmzR5MnT5ajo6OmT5+u7t27a+fOnWWWhAQAAAAAwFqcnJxMBUw//fST8vLyVLVqVWVnZ5u29UtNTdWUKVO0YcMGde3aVa+88op+++03RUZGatq0aXrhhRc0bdo0i8Zt2LChIiIitHDhQq1cuVIPP/ywOnXqpKefflo1atQo0v7GpJt0/ZuLNxZe3e2OHDmi7OxseXp6Fns+MzOz2HkX58EHH5SdnZ327t0rX19fHTp0yNTH3r17ZTAY9OCDDxZ5XZMmTUo/AQtZc75lpSC/4+joWOixJNO9dS/MAwAAAADuFgVf0Hr88cdNx6pVq6bg4GDt379fUtnkGAqUlDs4ffq0/Pz8irzOz89PJ0+eLNWY5jh69KgkmVbdupmyis9aORVzPyOfOnWqyIrNxc0LgHVZXEDl4uKilJQU+fr6avny5cUWUI0ZM0Yff/xxoUIpPz8/RUZGavXq1aZf+Bs3btSWLVsUFxenoUOHSpKaNWumXr16acWKFerfv39p5wUAAAAAwB3h7e2tM2fOSFKhb0GmpaWZEmyVK1dWaGio5s6dK2dnZ/3666969NFHFRsbKx8fH0VFRalFixYaOHCgRWO/9957GjFihNavX6/169dr3Lhxev/99/XTTz+ZircK2NlZvAi1JN01KwQZDAZ17dpV48aNK/b8n7+BeisuLi5q0qSJ9u7dq5o1a6pdu3YyGo3aunWr9u7dq0aNGql69epFXlfcsbJizfnagtFolHTvzwMAAAAA7iRPT08dPny4SIFNzZo1tWfPHklll2OQSp87KC9ulgOx1nUx9zPyn3M6AO4Miwuo7O3t5evre8s2bdu2LXIsLCxMkvTrr7+ajq1Zs0ZOTk4aMGCA6Vj37t3l7u6u1atXU0AFAAAAALjrBQYGauHChcrKyjIluPLz83XgwAF169ZNkkxb1hf45ptvFBoaqkmTJkm6/g3JVatWlSq5GRQUpKCgIEVHR2v27NkaO3asNm3apJ49e1rUT8G3XK9cuWI6lp+fr7S0NItjKo2C8a9du1bs+QYNGujq1aum/MLtatOmjfbu3SsHBwd16tRJ0vUl8vfu3Vvs9n3WZjAYbnne2vM1d1xrK6t5AAAAAEB51KxZM23btk2pqamqU6eO6Xh6erpq164tqWxzDCXx8fFRSkpKkePHjh2Tv79/kePW+gxa0PfBgwdNn+FvJ76yyoFY67O+n59fkS0Ci5sXAOu6YyWk6enpkgrvQXrgwAE1atSoUAWlnZ2dAgMDdeDAgZv2lZ2drczMzEI/AAAAAADYQq9evZSdna1ly5aZjq1bt05nz55V7969i32NnZ2dsrOzTc+zsrIsTipmZmYWKTYqSAbeuCK0uQoSswXfaJWk1atX37Ft/urWrStJ+v3334s9Hx4erm3bthW7Evbx48ctHq9t27b66aeftHnzZnXq1ElhYWH67rvvtG/fvmK/GGZtLi4uysjIuGnBmLXna+641lZW8zAH+SMAAAAA95qCL2J9+umnpmNnz57Vjh071Lp162JfY40cg7k6duyopKQkff/996Zj27ZtU3JycpEt5yTrfQZ94IEH5Ovrq7lz5+rixYuFzt1Y9GRufGWVA7HWZ/1OnTpp69atSk1NNR375JNPbis2ACWzPKNaSu+8846qVatWKHmcmppqSpCGhYUpPT1du3btkpeXlw4ePHjTvt544w3FxsaWecwAAAAAAJSkc+fOCgkJ0ejRo3Xq1Ck5Ojpq2rRpatmypZ544oliX9OtWzdFRUUpMjJSPj4+mjVrlhYtWmTRuN99951Gjx6tfv36qXHjxjp79qzmz58vPz8/BQcHWzyPdu3aycPDQ1FRUTp+/LiuXLmiZcuWyd3d3eK+SsPPz09t2rTRa6+9pvz8fLm6uqp169Zq0qSJJGnChAlavny5wsLCNGLECDVt2lQnTpzQpk2b5OrqqnXr1lk0Xps2bZSZmakjR47ogQcekMFgUHJysv74449SrUC1f/9+7d+/3/RYkj7++GNJ15fg79u3b6H2wcHBmj9/viIiItS3b19VqlRJgYGBpiSutedr7riWzqMkZTUPc5A/AgAAAHC3eeutt/THH3/ol19+kSQtXbpU27dvV/Xq1fX888+rT58+euCBBxQdHa20tDT5+fnp/fffV15enmmFqT+zRo7BXKNGjdLbb7+tvn37KjIyUpI0Z84ceXl5adSoUUXal/QZ1Fz29vZ6++23FR4ertatW2vo0KHy8vLS9u3bdfnyZX3xxRcWxVdWORBrfdZ/8cUXtXDhQoWGhmrEiBFKTk7WZ599dluxASjZHSmg+te//qV//etfmjt3bqFfOtnZ2abl8ZKTk3X+/Hnl5ubKyclJWVlZN+1v8uTJioqKMj3PzMwscVtBAAAAAMCdd2DozVcXLi8MBoPi4+MVGRmp6dOnKz8/X926ddO8efNuuhJUQECAPv30U40fP16XLl3S+PHjCy2/b44WLVooLCxMq1at0unTp1WjRg2FhIRo6tSpcnFxsXgeTk5OWrNmjZ599llNnTpVzZs317Jly/T4449b3Fdpffrpp/rb3/6mqKgoZWdna86cOaYCKldXV+3YsUNTpkzR8uXLlZaWplq1aqldu3aKiIiweKzmzZurcuXKat++vezt7SVd/6bq2rVr1aJFC4v7W7lyZZFincGDB0uS6tWrV6TwqH///tq9e7c+/vhjxcXFyWg06qOPPtKwYcPKZL7mjmvpPEpSVvMwB/kjAAAAoPwoL/mFf/7znzp27Jjp+Ycffijp+uet559/XnZ2dlq3bp3GjRunDz/8UJcvX1arVq20YcMG3XfffcX2aY0cg7m8vLy0ZcsWjR07Vv/4xz8kSSEhIZo9e7Y8PDyKtC/pM6glevfurU2bNmnq1KmaNm2aJKlVq1aKjo62OL6yyoFY67O+v7+/1q5dqzFjxmjixIlq3LixVq5cqYcffvi24gNwawaj0Wgs7YuXL1+ufv36afPmzcUuySdd/7biww8/rG7duulf//pXoeUCmzZtqrp162rjxo26dOmS8vLyTHu2JiQk6MyZM2bFkZmZKTc3N124cEGurq6lnQ4AlFr9SV/bOgQAAACbOBzTSUePHpW/v3+h7dkB4HZlZWXd8veLpfkg8kcAAADA3auk//4HAKA45vz9MDcnVKYrUJ0+fVq9evVS06ZNtWTJkiJ7rXp7e5uKpKpVq2Y6npaWJm9v77IMDQAAAAAAAAAAAAAAAADKroDq0qVL6tmzpxwdHfXVV1+pcuXKRdoEBgZq4cKFysrKMlWC5efn68CBA+rWrVtZhQYAAAAAwF0pNTXVrHZ86QgAAAAAANzK3Z5juNvjA1DxlEkB1bVr1/R///d/On78uBITE+Xl5VVsu169emn+/PlatmyZhg4dKklat26dzp49q969e5dFaAAAAAAA3LV8fHzMapebmysHhzJdVBoAAAAAANzD7vYcw90eH4CKp1S/ad566y398ccf+uWXXyRJS5cu1fbt21W9enU9//zzGjt2rDZs2KDRo0frxx9/1I8//mh6bUBAgB566CFJUufOnRUSEqLRo0fr1KlTcnR01LRp09SyZUs98cQTVpgeAAAAAAD3jo0bN5rVzt7evowjAQAAAAAA97K7Pcdwt8cHoOIpVQHVP//5Tx07dsz0/MMPP5Qk1atXT88//7x+/vlnSdL8+fOLvHbo0KGmAiqDwaD4+HhFRkZq+vTpys/PV7du3TRv3jyqSAEAAAAAFU5YWJitQwAAAAAAAOXA3Z5juNvjA1DxlKpKKTk5+ZbnExISzO6rZs2aWrJkSWnCAAAAAAAAAAAAAAAAAIDbYmfrAAAAAAAAAAAAAAAAAADAViigAgAAAAAAAAAAAAAAAFBhUUAFAAAAAAAAAAAAAAAAoMKigAoAAAAAAAAAAAAAAABAhUUBFQAAAAAAAAAAAAAAAIAKiwIqAAAAAAAAAAAAAAAAABUWBVQAAAAAAFQQMTExMhgMtg6jkLi4OBkMBiUnJ9s6lGLd7fEBAAAAAGBNpckdGAwGxcTEmJ4PGjRIBoPB9JOQkGDdIAGgDDjYOgAAAAAAQPl1qElTW4egpocPlWn/cXFx+utf/1rkeIcOHYokCHNycuTo6GjVIqb4+HglJycrMjLSan2WB1wXAAAAACg/KkJ+QZI2bNigefPm6aefftLZs2dVp04d9ejRQzExMXJ3dy/UtixyDNYyatQodevWTYcOHdLrr79u63AAwCysQAUAAAAAgBXMmTNHS5cuNf289NJLpnPZ2dkaMmSIqlWrpho1amju3LlWGzc+Pl5vvvmmWW1ffvllXb161Wpj380suS4AAAAAANwNfv75Zzk6Ouq5557T22+/rcGDB+vzzz9XSEiIsrKyJJVtjkGyTu4gODhYgwYNUufOna0UFQCUPVagAgAAAADACvr27av69esXe27WrFnasmWLFi9erDNnzmjixIlq166d2rZte0djdHBwkIMDqQAAAAAAAO5GEyZMKHLsgQceUJ8+ffTVV1/p//7v/8o8x0DuAEBFxQpUAAAAAABYgdFoVGZmpoxGY5FziYmJGjt2rAYOHKjIyEj16NFD27dvv63xDAaDDAaDFi9erGPHjpmeGwwGxcXFFWrbsGHDQuf/LDk5WQaDQdHR0fLw8FCzZs2UmJioli1byt3dXe+8806h9unp6YqIiJC3t7ecnZ0VFBSktWvX3tZ8Dh8+rEceeUSVK1dW06ZNtXLlykLnz507p3Hjxql58+ZycXGRq6urwsLClJiYWOrrIklbt25Vly5d5ObmJjc3N3Xs2FHffPNNkXZpaWkKDw+Xi4uLAgIC9MEHHxRpc+jQIT322GPy8vJS1apVdf/99ysmJqbY+ZY0rrnzjYuLk8Fg0M6dO0uMDwAAAABw7/Hx8ZF0/XOpVDY5Bqnk3EGBzZs3KygoSM7OzmrevPltj10WOQYAKA0KqAAAAAAAsIIWLVqYimGeffZZXblyxXSuUaNGWrZsmQ4fPqwtW7Zo69ataty4sen8rl27dPLkSYvGK9gqMCQkRB4eHoW2D2zfvn2htrNmzdLSpUsVHh5+yz43btyol156ScnJyQoNDdVjjz2mhx9+WOPGjVNubq4kKTMzUyEhIVqxYoVGjhyp2bNnq0aNGurTp48SEhIsmsONBg8erCZNmmjGjBmqVq2a+vfvrx07dpjOJyUl6YMPPlCHDh00Z84cTZkyRSdOnFCnTp10+PDhUl2XNWvWKDQ0VCkpKZowYYL++c9/qk6dOlq4cGGR+IYMGaLatWtr+vTpqlmzpoYPH669e/eazufk5Kh79+7atWuXoqKiNGfOHHXt2lWrV68u0pc545o7X3PjAwAAAADcOy5cuKAzZ85o+/btev7552UwGBQcHCypbHIMknm5g0OHDqlHjx7KysrStGnT1KlTJz3xxBOWT/C/yirHAAClwdp7AAAAAADchqpVqyoiIkLt27eXo6Oj1q5dq3fffVdHjx7V+vXrJUmTJ09W586d1bRpU0nXi11atWqlGTNmaMmSJfL09NTMmTNVp04ds8cdNGiQJOnbb79VSkqK6XlxHnvsMUnS77//rlWrVt203ZgxY/Tkk09qw4YNSkpKUmxsrH788UetWbNGR44cUZMmTTRz5kwlJSVp7969uv/++yVJI0eOVMuWLRUbG6uOHTuaPYcb9e7dW4sWLZIkDR06VH5+fnrjjTf01VdfSZIaN26slJQUubi4mF7Tr18/1a9fXx9++KFmzJhh0XXJy8vT888/r4CAAO3evVvVqlWTJD3zzDM6ffp0sfHNnDnT9LhevXr66quvFBQUJOl6EvnYsWN6//33NXz4cNPrrl27VqpxzZ2vufEBAAAAAO4dXbt21Y8//ihJqlGjhhYsWKCWLVtKKpscg2Re7mDGjBnKz8/Xd999J29vb0lSlSpV9Prrr5dmmmWWYwCA0qCACgAAAACA29CvXz/169fP9Lx///7y8PDQrFmztHXrVrVv316enp7avXu3du7cqe+++047duxQWFiYBg4cqPj4eDVs2NCGM/gfLy8vSZK7u7suXbokSapZs6Yk6fz585KklStX6sEHH5S3t7cyMjJMrw0ODtZHH32kvLw82dvbWzz2gAEDTI9dXV3VvXt3ff3116ZjNxYSXbt2TRcuXFCVKlXk4eGho0ePWjzenj17lJKSovnz55uKmAoUbI9woxu/gevr6ysPDw+dOHHCdKxq1aqSpB07dmjIkCGqVKmSJMnBoXDqxdxxLZ1vSfEBAAAAAO4d8+fPV0ZGhn7++Wd9+eWXql27tumcLXMMCQkJat++val4SpKeeuqpUhdQlVWOAQBKgy38AAAAAACwsmeffVaStGXLFklSamqqnnvuOT355JM6fvy4XnnlFU2aNElz5sxR8+bNNWnSJFuGa1JQ7OPo6FjosXR9izpJOnLkiBITE+Xp6Vno57333lNOTo4yMzNLNXbdunWLPL948aIuXrwoScrPz9fcuXN13333ydnZWR4eHvL09FR6erqysrIsHq+gCKngG7sluTE5LF3/hm3BNZGkhg0bKiIiQnFxcfL09FSPHj00a9YsU+GZpeNaOt+S4gMAAAAA3DsefPBBde/eXZMmTdI///lPhYeHa9u2bZJsm2M4depUkc/vfn5+pe6vrHIMAFAarEAFAAAAAICVFXwztKB4pnLlygoNDdXcuXPl7OysX3/9VY8++qhiY2Pl4+OjqKgotWjRQgMHDrRl2LdkNBolSQaDQV27dtW4ceOKbffnVZVuh8FgkJOTkyRp+vTpio6O1lNPPaWpU6fK3d1dkjRw4EBTbGXJzq7k76C99957GjFihNavX6/169dr3Lhxev/99/XTTz/J2dnZovEsna858QEAAAAA7j0PP/ywatWqpUWLFikkJMSmOQZLP9uW5E7mGACgJBRQAQAAAABgZcePH5d0fVl9SXJzcyu0Rd0333yj0NBQ07dCT58+rVWrVpUquWkwGKwQsfkaNGigq1evKiwszKr9njhxQv/v//2/Qs+9vb1NW+EtW7ZM7du318cff2xqk5ubqz/++KPY/kq6Lv7+/pKkgwcPqlOnTrcZ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BQcHV4lNTk7Wjz/+qLS0NG3YsOGmfW7btk0zZ87UzJkz1adPH02bNk0HDx7U1KlTNX78eDk7O6ukpEQhISEqKipSdHS0jEaj1q9fr2effVbbt29XaGio1XOwZR6FhYXq1auXpdBLkubPn69evXrpq6++kpeXl03jSteL3yIjI9W6dWu9/vrrMhqNysjIUEpKivr161ercUePHq2+fftq7ty5Wr58ucaPH6+uXbsqKChI7u7uMplMSk9P15w5c6qct2HDBvXt21cPP/ywJNXqOu/du1cLFy5UVFSU/P39dfDgQeXl5dl0nYF7DQVUAAAAAAAAAAAAAADYWX5+vpo3by5JMplMKioq0r59+2Q0GnXkyBFJ0owZMxQWFqb27dtLul5k07VrV7399ttauXKlvL29NW/ePJsKqEaOHClJ2r59u06fPm35XpMhQ4ZIkr755ptfLaCaPHmyXnzxRW3dulW5ublKTEzUl19+qU2bNunEiRNq166d5s2bp9zcXB04cEAdO3aUJL300kvq0qWLEhMTbS6gsnYeS5cuVXFxsbKysvTkk09KkkJCQhQSEqKlS5fqD3/4g03jlpeX65VXXlFAQICys7PVuHFjSdKECRN07ty5Wo87ePBgzZs3z/K5ZcuW+uc//6mgoCBJ0vPPP69x48bpm2++UevWrSVJX3/9tY4cOaLJkydb+qnNdd66dauys7PVtWvXKvOUbHtegHsJW/gBAAAAAAAAAAAAAGBnZrNZDRo0kHR9K7yzZ8/q6tWrcnFxUWlpqSTJ29tb2dnZ2rNnj958800VFhbKZDKptLRU6enp+vzzz9WtWzd7TkOSZDQaJUmenp6Wz02bNpUkXbhwQZKUlpamJ554Qj4+PiouLlZxcbG+//57BQcHKysry1KwU9cyMjLUqlUrSxGTJD399NPy9/dXRkaGzf3t379fp0+fVnR0tKV46gZfX99ajxsZGWn53KJFC3l5eens2bOWtiFDhsjJyalKIduGDRvk6OiooUOHWtpqc53DwsKqFE9JkqOj460vBnAPYwUqAAAAAAAAAAAAAADszMXFRWVlZZKkQ4cOqby8XI0aNZLZbLZs65efn6/Zs2dr69at6t+/v9544w19/fXXiomJUVJSkl599VUlJSXZcxqSJCen66UIzs7OVT5LsszxxIkTMpvN8vb2rrGPkpISNWnSpM5z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ri5nnnlmevbsmWeeeSZTp07dJESVJJ///Odzwgkn5OSTT85VV12VUaNG5cknn8yAAQMa+zT35wxsPQJUAAAAAAAAAFBkS5YsSd++fZMkI0aMyPLlyzN79uxUVFTk6aefTpJMmDAhhx12WAYPHpwk+cpXvpJ99903P/rRj3Lddddlxx13zI9//OMWBai+/OUvJ0nuvvvuvPTSS43Xm/O5z30uSfL888+/Y7DnjDPOyAknnJA777wz8+bNy6RJk/LII49k2rRpeeGFF/LhD384P/7xjzNv3rw88cQT2WuvvZIk3/jGNzJ06NBMmjSpxQGq5q7jyiuvzIoVKzJr1qx8/OMfT5IMHz48w4cPz5VXXpnvfOc7LZp37ty5WbBgQX72s5/llFNOaWxft27dZvufeuqpmTRpUpJkzJgxGThwYC699NJcfvnljX2a+3MGth5H+AEAAAAAAABAkdXW1qZTp05JNhyFt2jRoqxduzZlZWVZs2ZNkmTHHXfMY489locffjjf+973smzZsowYMSJr1qzJrbfemvvuuy/7779/MZeRJKmoqEiS9OrVq/F1z549kySrVq1Kktx888054IADUllZmRUrVmTFihV59dVXM2zYsMyaNSvr169vldpmzpyZ3XffvTE8lSSf/OQnM2DAgMycObPF43Xp0iVJ8vDDD6eurq6xvWPHze9nc/zxxze+3m233fLRj340999/f4vnBbYuASoAAAAAAAAAKLKysrLGAM6cOXMyb968dOnSJbW1tY3H+i1ZsiSnn356TjjhhCxcuDDf/va3c/755+fSSy/N3nvvnfPPP7+YS2i0MTxUWlra5HWSxjW+8MILmTVrVnbccccmX1dffXXq6upSU1PTKrW98sor6d+//ybt/fv3z8svv9zi8fbYY4+MHTs2U6ZMyY477pgjjjgiF198cWNQ7O/169evyXXfvn23aF5g63KEHwAAAAAAAAAUWWVlZZYuXZok2X777Rvbly1blsrKyiRJ586dc8ghh+Syyy5LeXl5nnnmmXz605/OpEmT0qdPn5x55pnZZ599muxy1NY0NDQkSQqFQj7zmc/k7LPP3my///0zaOuuvvrqnHrqqbnjjjtyxx135Oyzz87PfvazzJkzpzH89k427jwGFI8AFQAAAAAAAAAUWVVVVa655pqsWbOmMXRTX1+f6urqjBw5MknSvXv3HHfccY3vueuuu3LIIYc07jz1yiuv5JZbbtmiAFWhUNgKq2i+3XffPW+99VZGjBixVcd9t3X06dMnL7300ibtCxYsyIABA7Z43v322y/77bdfLrjgglxyySU566yzcs899+TII49s0m/hwoX58Ic/3Hi9aNGiTXalaomN4at169ZtlX7QXjnCDwAAAAAAAACKbPTo0amtrc0NN9zQ2DZ9+vSsXLkyRx111GbfU1JSktra2sbrNWvWbHEQqmvXrlmxYsX7FrAZM2ZMHnzwwcyaNWuTewsXLtzicd9tHQcffHDmzZuX3//+941tDz74YObPn5+DDz64xfPV1NRsMtfGINbG4wv/t1//+teNr+fPn59HH300Bx10UIvn3ahv375Jkueff36r9IP2yg5UAAAAAAAAAFBkhx12WIYPH55x48Zl8eLFKS0tzeTJkzN06NAcc8wxm33PyJEjc+aZZ2b8+PHp06dPLr744vz85z/fovmHDRuWK664ImPHjs3RRx+dTp06paqqKrvsskuS5Mknn8yTTz7Z+DpJrr/++iQbjts7+uijWzTfueeem9/+9rcZMWJETj311AwePDiLFi3KPffck27dumX69Omtso7TTjstP/3pT3P00Udn/PjxSZJLL700FRUVOe2001o837333ptx48bli1/8Yvbcc8+sXLkyV1xxRfr3759hw4Zt0v8//uM/8vrrr6dfv3658sorU1ZWlnHjxjXeb+nPuX///vnoRz+a733ve6mvr0+3bt2y//77N9nlqiX9oL0SoAIAAAAAAACgzTrrhv8udgnvi0KhkFtvvTXjx4/PRRddlPr6+owcOTKXX375ZncySpKBAwfmV7/6Vc4555y8/vrrOeecc5oc8dcSxx57bB577LFcf/31mTJlShoaGvKLX/wiJ598cpLk5ptvzqRJk5q858QTT0yS7Lrrri0OUHXr1i0PP/xwvvvd7+a3v/1tli1blp122ikHHnhgxo4du0VraM46Kioqcv/99+ess87KD37wgyTJ8OHDc8kll6R3794tnm+fffbJiBEjcsstt+SVV15Jjx49Mnz48Hz/+99P165dN+l/44035vTTT89zzz2XIUOGZPr06U2O8NuSn/OvfvWrfO1rX8uZZ56Z2traXHrppZsNRjW3H7RHhYaGhoZiF/Fe1dTUpHv37lm9enW6detW7HKAdmi3839X7BIAAIpi/uQji10C0E619HmQ50cAANB2rVmzJi+++GIGDBiQ8vLyYpcDrWLixImZNGlSPgARDWgzmvPnR3OfCZW0VpEAAAAAAAAAAABtnSP8AAAAAAAAAOADZMmSJc3qV1lZ2cqVAGwbBKgAAAAAAAAA4AOkT58+zeq3du3adOwoNgDwvv0mPPvss3PxxRfn9NNPz09+8pPG9lWrVuWMM87Ibbfdlvr6+owcOTJXXHFFKioq3q/SAAAAAAAAAOADY8aMGc3q16FDh1auhI0mTpyYiRMnFrsM4G28LwGqefPm5ZprrtnsvTFjxuTxxx/PhAkTUlpamosuuiijRo3Ko48+6pc1AAAAAAAAALTQiBEjil0CwDal5P2Y5Nxzz83/+T//Z5P2GTNm5P77789PfvKTXHDBBTnnnHNy7bXX5oknnshNN930fpQGAAAAAAAAAAC0Y60eoHrooYdy55135sILL9zk3rRp01JWVpbjjjuusW3UqFHp1atXpk6d2tqlAQAAAAAAAAAA7VyrHuHX0NCQM888M2eccUYqKio2uV9dXZ1BgwalvLy8sa2kpCRVVVWprq5+23Fra2tTW1vbeF1TU7N1CwcAAABgm+b5EQAAAADN1ao7UP3yl7/MvHnzcvbZZ2/2/pIlS7LTTjsl2XAG6z777JO6urpUVFRkyZIlbzvuD3/4w3Tv3r3xq1+/fq1SPwAAAADbJs+PAAAAAGiuVgtQvfXWW7ngggsyYcKEdOvWbbN9amtr06lTpyTJ/Pnzs2jRoqxduzZlZWVZs2bN2449YcKErF69uvFr4cKFrbIGAAAAALZNnh8BAAAA0FytdoTfxRdfnIaGhpx++ulv26esrCx1dXVJkjlz5mT9+vXp0qVLamtrmxzrt7n3lZWVbfWaAQAAAPhg8PwIAAAAgOZqlQDV6tWrc9FFF+W8887LihUrmtx74403smjRouy0006prKzM0qVLkyTbb799Y59ly5alsrKyNUoDAAAAAAAAAABo1CpH+K1atSqvv/56vv3tb6dfv36NX0kyZcqU9OvXL3/6059SVVWVZ599tslxffX19amurk5VVVVrlAYAAAAAAAAAvAcTJ05MoVAodhltWqFQyMSJE4tdBtBMrbID1U477ZRp06Zt0n7UUUflyCOPzDe+8Y186EMfyujRo3PFFVfkhhtuyEknnZQkmT59elauXJmjjjqqNUoDAAAAAAAAYBuy6PwHi11C+k4e/r7Ms2rVqpxxxhm57bbbUl9fn5EjR+aKK65IRUVFk351dXUpLS3dqiGmW2+9NfPnz8/48eO32pjF8EFZB/D+apUAVefOnTN69OjN3tttt90a7x122GEZPnx4xo0bl8WLF6e0tDSTJ0/O0KFDc8wxx7RGaQAAAAAAAADQJo0ZMyaPP/54JkyYkNLS0lx00UUZNWpUHn300XTo0CG1tbX5+te/nv/3//5ftttuu0yaNCn/8i//slXmvvXWWzNz5sxmBY++9a1v5fzzz98q825tLVkHwEatEqBqrkKhkFtvvTXjx4/PRRdd1Jigvfzyy9OxY1FLAwAAAAAAAID3zYwZM3L//fdnypQpjSc4DRkyJKNHj85NN92UY489NhdffHHuv//+XHvttVm6dGnOO++8HHjggfnYxz72vtbasWNHf6cPfKCUvJ+TNTQ05Cc/+UmTtp49e+a6667LX//619TU1OQ3v/lNKisr38+yAAAAAAAAAKCopk2blrKyshx33HGNbaNGjUqvXr0yderUJMmsWbNy1lln5fjjj8/48eNzxBFH5KGHHnpP8xYKhRQKhVx77bVZsGBB43WhUMiUKVOa9N1jjz2a3P978+fPT6FQyAUXXJDevXtnyJAhmTVrVoYOHZpevXrlqquuatJ/+fLlGTt2bCorK1NeXp799tsvt99+e6uv4+mnn84RRxyRrl27pmvXrjnyyCPzl7/8ZYvmTZL77rsv++23X8rLy7P33nu/7WfSkvU+8MADOfzww9O9e/d07949Bx98cO66664WraMln8fEiRNTKBQya9as7LPPPikvL89HPvKRt11LoVDIxIkTc+utt6aqqirl5eUZOHBgk/U0d71z587N5z73uVRUVKRLly7Za6+9MnHixC3uB1tCJBQAAAAAAAAAiqy6ujqDBg1KeXl5Y1tJSUmqqqpSXV2dJBk0aFBuuOGGHH744Vm6dGkeeOCBfPWrX23sP3v27Oy8887ZZZddmj3vf/3XfyVJrrnmmsydOzeXXnpp471hw4Y16XvxxRfntddey80335xbbrnlbcecMWNGLrzwwlx44YU55JBDct555+WPf/xjzj777JxyyikpRsKdmgAAJ5pJREFULS1NTU1Nhg8fnuXLl2fcuHGpqKjITTfdlM9+9rO5++67c/DBBzd7DS1Zx7Jly3LQQQc1BouS5JJLLslBBx2Up556Kr17927RvHPnzs0RRxyRAQMGZPLkyVmwYEGOOeaYTfq1ZL3Tpk3LmDFjsscee+Tcc89NRUVFZs6cmWuuuSaHH354i9fRnM9jo89//vM54YQTcvLJJ+eqq67KqFGj8uSTT2bAgAGbrOnRRx/NZZddlrFjx2bAgAH54x//mPnz57dovXV1dRk1alTq6upy5plnpmfPnnnmmWcyderUJuGo5vaDLSVABQAAAAAAAABFtmTJkvTt2zdJMmLEiCxfvjyzZ89ORUVFnn766STJhAkTcthhh2Xw4MFJkq985SvZd99986Mf/SjXXXdddtxxx/z4xz9uUYDqy1/+cpLk7rvvzksvvdR4vTmf+9znkiTPP//8OwaozjjjjJxwwgm58847M2/evEyaNCmPPPJIpk2blhdeeCEf/vCH8+Mf/zjz5s3LE088kb322itJ8o1vfCNDhw7NpEmTWhygau46rrzyyqxYsSKzZs3Kxz/+8STJ8OHDM3z48Fx55ZX5zne+06J5f/SjH6W+vj733ntv42lb2223Xf71X/+1Sb/mrnf9+vX553/+5wwcODCPPfZYtt9++yTJ17/+9bzyyitbtI7mfB4bnXrqqZk0aVKSZMyYMRk4cGAuvfTSXH755Zus/c4778xjjz2Wfffdt7Ft/fr1LVrv3Llzs2DBgvzsZz/LKaec0jjOunXrmszV3H6wpd7XI/wAAAAAAAAAgE3V1tamU6dOSTYcvbZo0aKsXbs2ZWVlWbNmTZJkxx13zGOPPZaHH3443/ve97Js2bKMGDEia9asya233pr77rsv+++/fzGXkSSpqKhIkvTq1avxdc+ePZMkq1atSpLcfPPNOeCAA1JZWZkVK1ZkxYoVefXVVzNs2LDMmjWrMYiztc2cOTO77757Y+goST75yU9mwIABmTlz5haN96lPfaoxPJUk//iP/7hJv+au9/HHH89LL72UcePGNYanNurTp88WraM5n8dGxx9/fOPr3XbbLR/96Edz//33b3bthx12WJPwVJJ06NChRevt0qVLkuThhx9OXV1d4zgdOzbdD6i5/WBL+S8JAAAAAAAAAIqsrKysMRgyZ86crF+/Pl26dEltbW3jsX5LlizJd7/73dx55535zGc+k29/+9t57rnnMn78+EyePDnf/OY3M3ny5GIuI8nfQi2lpaVNXidpXOMLL7yQ2tra7Ljjjpsdo6amJj169Njqtb3yyivp37//Ju39+/fPyy+/3OLxFi9evMluWZsbv7nrffHFF5OkcZext9OSdTTn89ioX79+Ta779u2b++67b7M1/O+dq/5ec9e7xx57ZOzYsbnmmmty88035xOf+EQOPfTQfPWrX23y+Te3H2wpASoAAAAAAAAAKLLKysosXbo0SZrsPLRs2bLG3Y06d+6cQw45JJdddlnKy8vzzDPP5NOf/nQmTZqUPn365Mwzz8w+++zTZBehtqahoSFJUigU8pnPfCZnn332Zvv9/e5LbdXGcNu7aavr3fh5vJONO6P9vR122OFt39OS9V599dU59dRTc8cdd+SOO+7I2WefnZ/97GeZM2dOk59vc/vBlhCgAgAAAAAAAIAiq6qqyjXXXJM1a9Y0hkHq6+tTXV2dkSNHJkm6d++e4447rvE9d911Vw455JCcf/75STbsSnTLLbdsUYCqUChshVU03+6775633norI0aM2Krjvts6+vTpk5deemmT9gULFmTAgAEtnq9///5ZtGhRk7bNjd/c9W6s4emnn86hhx76tv229jo2WrhwYZOdpRYtWrTJrlTN0dLPd7/99st+++2XCy64IJdccknOOuus3HPPPTnyyCO3qB+0VEmxCwAAAAAAAACA9m706NGpra3NDTfc0Ng2ffr0rFy5MkcdddRm31NSUpLa2trG6zVr1mxxEKpr165ZsWJF1q1bt0Xvb6kxY8bkwQcfzKxZsza5t3Dhwi0e993WcfDBB2fevHn5/e9/39j24IMPZv78+Zscxdcchx56aB544IEsWbKkse2Xv/zlJv2au96PfOQj6devXy677LK89tprTfotW7as1dax0a9//evG1/Pnz8+jjz6agw46qMXjNHe9NTU1m3xWGwNgG48bbEk/2FL+KwIAAAAAAACAIjvssMMyfPjwjBs3LosXL05paWkmT56coUOH5phjjtnse0aOHJkzzzwz48ePT58+fXLxxRfn5z//+RbNP2zYsFxxxRUZO3Zsjj766HTq1ClVVVXZZZddkiRPPvlknnzyycbXSXL99dcn2XAc29FHH92i+c4999z89re/zYgRI3Lqqadm8ODBWbRoUe65555069Yt06dPb5V1nHbaafnpT3+ao48+OuPHj0+SXHrppamoqMhpp53W4vn+5V/+Jddcc00OOeSQnHrqqZk/f36TEFJL19uhQ4f89Kc/zZgxY7L//vvnpJNOSkVFRR566KG88cYbufHGG1tlHRv9x3/8R15//fX069cvV155ZcrKyjJu3LgWj9Pc9d57770ZN25cvvjFL2bPPffMypUrc8UVV6R///4ZNmxY43jN7QdbSoAKAAAAAAAAgDar7+ThxS7hfVEoFHLrrbdm/Pjxueiii1JfX5+RI0fm8ssvf9sddgYOHJhf/epXOeecc/L666/nnHPOaXLEX0sce+yxeeyxx3L99ddnypQpaWhoyC9+8YucfPLJSZKbb745kyZNavKeE088MUmy6667tjhA1a1btzz88MP57ne/m9/+9rdZtmxZdtpppxx44IEZO3bsFq2hOeuoqKjI/fffn7POOis/+MEPkiTDhw/PJZdckt69e7d4vgEDBuT222/PGWeckfPOOy977rlnbr755nziE5/Y4vUeddRRueeee/L9738/kydPTpLsu+++ueCCCxr7bO11bHTjjTfm9NNPz3PPPZchQ4Zk+vTpW3SEX3PXu88++2TEiBG55ZZb8sorr6RHjx4ZPnx4vv/976dr164t7gdbqtDQ0NBQ7CLeq5qamnTv3j2rV69Ot27dil0O0A7tdv7vil0CAEBRzJ98ZLFLANqplj4P8vwIAADarjVr1uTFF1/MgAEDUl5eXuxyoF2aOHFiJk2alA9AhIR2pDl/fjT3mVBJaxUJAAAAAAAAAADQ1jnCDwAAAAAAAAA+QJYsWdKsfpWVla1cCcC2QYAKAAAAAAAAAD5A+vTp06x+a9euTceOYgMAfhMCAAAAAAAAwAfIjBkzmtWvQ4cOrVwJ24qJEydm4sSJxS4DikaACgAAAAAAAAA+QEaMGFHsEgC2KSXFLgAAAAAAAAAAGhoail0CANuQrfnnhgAVAAAAAAAAAEWz8Ri5tWvXFrkSALYl69atS5J07PjeD+AToAIAAAAAAACgaEpLS1NWVpbVq1fbhQqAZqupqUmHDh0ag7jvxXuPYAEAAAAAAADAe9C7d++8/PLLWbRoUbp3757S0tIUCoVilwVAG9TQ0JA33ngjNTU16dOnz1b580KACgAAAAAAAICi6tatW5JkxYoVefnll4tcDQBtXaFQyA477JDu3btvlfEEqAAAAAAAAAAoum7duqVbt25Zu3Zt1q9fX+xyAGjDSktLt8rRfRsJUAEAAAAAAADQZpSWlqa0tLTYZQDQjpQUuwAAAAAAAAAAAIBiEaACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADaLQEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN1qlQDV7Nmz89WvfjV77LFHtttuuwwaNCjnnHNOXnvttSb9Vq1alZNPPjk9evRI9+7dc9xxx2XZsmWtURIAAAAAAAAAAMAmOrbGoBdffHFmzZqVL33pSxk0aFDmzp2bK664Ivfee28eeeSRdOy4YdoxY8bk8ccfz4QJE1JaWpqLLrooo0aNyqOPPpoOHTq0RmkAAAAAAAAAAACNWiVAdcYZZ+T6669vDEolSf/+/TN+/PhMnTo1n//85zNjxozcf//9mTJlSk466aQkyZAhQzJ69OjcdNNNOfbYY1ujNAAAAAAAAAAAgEatcoTfxz72sSbhqSQZMWJEkuSZZ55JkkybNi1lZWU57rjjGvuMGjUqvXr1ytSpU1ujLAAAAAAAAAAAgCZaZQeqzVm+fHmSpE+fPkmS6urqDBo0KOXl5Y19SkpKUlVVlerq6nccq7a2NrW1tY3XNTU1rVAxAAAAANsqz48AAAAAaK5W2YFqc6666qpsv/32Oeqoo5IkS5YsyU477ZRkw+5U++yzT+rq6lJRUZElS5a841g//OEP071798avfv36tXr9AAAAAGw7PD8CAAAAoLnelwDVb37zm/zmN7/JD37wg/Tq1SvJhn8F2KlTpyTJ/Pnzs2jRoqxduzZlZWVZs2bNO443YcKErF69uvFr4cKFrb4GAAAAALYdnh8BAAAA0FytfoTfk08+ma997Wv5whe+kHHjxjW2l5WVpa6uLkkyZ86crF+/Pl26dEltbW2TY/02p6ysLGVlZa1aNwAAAADbLs+PAAAAAGiuVg1QvfLKKxk9enQGDx6c6667LoVCofFeZWVlli5dmiTZfvvtG9uXLVuWysrK1iwLAAAAAAAAAAAgSSse4ff666/nyCOPTGlpaf77v/87nTt3bnK/qqoqzz77bJPj+urr61NdXZ2qqqrWKgsAAAAAAAAAAKBRqwSo1q1bly984QtZuHBh7rjjjlRUVGzSZ/To0amtrc0NN9zQ2DZ9+vSsXLkyRx11VGuUBQAAAAAAAAAA0ESrHOF31lln5c4778y4cePyyCOP5JFHHmm8N3DgwHz84x/PYYcdluHDh2fcuHFZvHhxSktLM3ny5AwdOjTHHHNMa5QFAAAAAAAAAADQRKsEqP70pz8lSa644opN7p100kn5+Mc/nkKhkFtvvTXjx4/PRRddlPr6+owcOTKXX355OnZslbIAAAAAAAAAAACaaJWk0syZM5vVr2fPnrnuuutaowQAAAAAAAAAAIB3VVLsAgAAAAAAAAAAAIpFgAoAAAAAAAAAAGi3BKgAAAAAAAAAAIB2S4AKAAAAAAAAAABotzoWuwAAAAAAAPigu+fegcUuAdjGHPLp55Mk9963Rw4+6M8pKSnN/Q8ckIM+9URje0vHeurpM/OhPS5IaWm3lJSUpaGhoclYh3z6+RQKhSxe/Nu8+eaS9Oi5X3r1HLZJP4CWOvSQF4pdAsA7EqACAAAAAIBWtvNpnYpdArCtmbvh286ndcr6u5anoVu3VI4vJE/8rb2lY3U45o68uN0DKZSUpPdp/5ReX/1qGhoa/jbW//R7/djLsn7FiixLknPP2bQfQEv9pdgFALwzASoAAAAAAABoo/r89CdJkpKysgy45eb3NFZ51V4pH/IP6XHC8em0226N7YXttkvDm282Xm/32aPSe/TodBo4MPVvvfWe5gQA2BYIUAEAAAAAQCs7doLH8UDLzKmvT4cOHdLt05/OlKenZMGiBZnw0QkpFAqpr6/P8ReUZX3D+sb+T37lySTJ3tftvclYs9fVpry0PP1u+HU6lnTMnfPvzPCSftkuSUNDQ8ae2yWrauvy6Lo16VzaOX3PPTdPLH0i0//4bznrI2elY5KGNOS4CaVpSMP79BMAPkiqi10AwLsoKXYBAAAAAAAAQFMzX56ZJCkUCjl5yMn5zoHfSVmHsiRJSUlJDu53cJP+hUIhhUJhs2N9c+Y3kyQdCh1SX1+fEf1HpHPHzhvmmT8zq2pXJUneXLdhF6qGhobss+M+mfDRCSnr+D9zFkryqb6f2qprBABoKwSoAAAAAAAAoI254ZkbGl8XCoWUFJr+td5u3XZr9lhzV87Nq6+/utmxfjb3Z03mbGjYsMNUSaFkk0DW8L7Dmz0nAMC2RIAKAAAAAAAA2pjfL/595iybk3X161K3vi519XVZW782C19bmCRZ8daKZo917chrs75kfd5a91bW1a9LsiFI9dbat9Kva7/GfiN3G5l19evy19q/5q11b6U+9SkUCvn94t8nSXbvvvtWXCEAQNshQAUAAAAAAABt0On3nJ7p86entr42a9evzX0L78tzq57LG2vfyMxFM5s9zr0L7033su4p71iejiUds6p2VX4373d5auVTmTx8cgb3HNzYr76hPt06dUtpSWleqnkp//74v+fn1T9PkvQo79EaywQAKLqOxS4AAAAAAAAA2FRNXU0ufOjCxuvP7PqZ/NvB/5YfPvLDrK5d3aRv1bVVbzvOZU9cls/s9pn069ov3//D9xuPB+zcsXPu/eK9OXmvk3PeA+flsicuy7I3l+WCj12Qq+dcnWkvTEtll8p85+PfSU1tTTqVdGqdhQIAFJkAFQAAAAAAALRxg3oMyqRPTMpd8+/Kr/7yqxa/f+36tUmSuxfc3dj21rq3Mmf5nAzqMaix7cZnbsw/9PqHnDb0tJw29LTUN9Tn+qevz+Beg9O9U/f3vhAAgDZIgAoAAAAAAADasN6de+cnh/wk81bPywUPXbBFY6yqXdXk+0Y1tTUZ0mtI4/W6hnX51sPfyuV/vDx9t++bxW8szpI3lmT656fnxdUvbvkiAADasJJiFwAAAAAAAABsXueOnfPTQ3+adQ3r8s/3/HNq19du0Tgv/PWFJBvCWP9bj/IeWf7m8k36L3tzWZ5Y9kSWvLEkfbfvm75d+6Z6RfUWzQ0A0NYJUAEAAAAAAEAb1KHQIZccfEkqu1TmGzO+kVfXvPqO/acePTVTj5662XsPv/xwkuSIAUc0tnUv656hFUPz1Mqn3nHc04eennX16zL9xektXAEAwLbBEX4AAAAAAADQBp29/9n55C6fzC/n/jJ777h39t5x78Z7C19bmD8t/1OT/gO6D3jbse5beF+eWvFUvrnfN9OzvGeWvLEkx3zomHQodMh/Vv9nY7+du+ycH3zyB7lv4X15a91bOaT/IfnkLp/MNU9ek/k187f6GgEA2gIBKgAAAAAAAGiD9uy5Z5LkHwf/4yb3bnv+tk0CVO+kIQ35p7v/KWftf1bG7DEmnUs75y8r/5JTZ5yal157qbHf62tfz1vr3sopVadku9LtsmD1gvzf3//f3Pjsje99QQAAbZQAFQAAAAAAtLLqF196904Af+8/Rrztrc/9z1cTE7snSarf9l0vJX/5SuPVPkl+sbluz4xufDkoyXf+5wsA4IOqpNgFAAAAAAAAAAAAFIsAFQAAAAAAAAAA0G4JUAEAAAAAAAAAAO2WABUAAAAAAAAAANBuCVABAAAAAAAAAADtlgAVAAAAAAAAAADQbnUsdgEAAAAAAADA29j/q8kBX0t6DkzqXk8WzU5uOiWpe6P5Y5R0TD55RrLrsKTv/klZt2TKkcn8h5r2G3ho8rFTk8qqZLueSc0ryXN3JTN/mLy1auuuCwCgDRGgAgAAAAAAgLbo0O8mw89MnroleeSapFOXpP/Hk47lLQtQdeqSHPKtZNX8ZOnTSf8DN9+vcq+kfm0y++fJ68uS7rskB3w92f2g5OpPJetqt8qyAADaGgEqAAAAAAAAaGt6fyj5xDeTB/4tufd7f2v/w5UtH6v2teSSIUnNy8mQz719gOrhyzZtWzwnOeGGZNDI5OnbWj43AMA2oKTYBQAAAAAAAAB/Z68vJOvXJg9dsuG6U5ctH6uhfkN4aku8vnTD9y47bvn8AABtnB2oAAAAAAAAoK3pu3+y7Olkz1HJyMkbAkyrFyUzvpP8+abWnbusW9KxLOk1MDn8+xsCWAsfad05AQCKSIAKAAAAAAAA2pqufZJO2yejL03u/3GyemFywCnJMT9PVj6fvPKn1pv7xJuTvgdseP3WquR3ZyVLqltvPgCAIhOgAgAAAAAAgLamdLukx64bwkuzf76h7bm7krP+kgz7ZnLT11pv7tvPTbbrmVRWJXsekbz2SuvNBQDQBghQAQAAAAAAQFuzvm7D97lT/9ZW90ay8NFkp39o3bkXP7Hh+/N3JwtmJf9nejLlyOSl37fuvAAARVJS7AIAAAAAAACAv/Pmig3f31jRtP2tVUmXHd+/OhY+kryxLNnvK+/fnAAA7zMBKgAAAAAAAGhrlj+z4fv2OzVt3673+3+kXodOyfYV7++cAADvIwEqAAAAAAAAaGuev3vD96ov/q2tc4+k/8eSxXM27f/Pszd8vRc77Lpp28BDku16JSuefW9jAwC0YR2LXQAAAAAAAADwd565PVn8x+TQ72w4sm/1wuQjJyWFDslDl2zav/egdx7vo19PyrsnOw7ecL33l5L+ByZrVieP/mxD20nTkldfSJ6/J6mtSSoGJx85OXnz1eQPV23V5QEAtCUCVAAAAAAAANDWNDQk1x+THP79ZN8vJ522S155Mrn+88mr81o+3rBxTXeY2u/EDd//uuBvAarZP08+fGTyyfFJWbcNRwX++eZk5g+T1Yve85IAANoqASoAAAAAAABoi95cmdz6T83rO7H7O9//973ffYxZl2/4AgBoZ0qKXQAAAAAAAAAAAECxCFABAAAAAAAAAADtlgAVAAAAAAAAAADQbglQAQAAAAAAAAAA7ZYAFQAAAAAAAAAA0G4JUAEAAAAAAAAAAO2WABUAAAAAAAAAANBudSx2AQAAAAAA8EG325pfFbsEAICimV/sAgDehR2oAAAAAAAAAACAdkuACgAAAAAAAAAAaLcEqAAAAAAAAAAAgHZLgAoAAAAAAAAAAGi3BKgAAAAAAAAAAIB2S4AKAAAAAAAAAABotwSoAAAAAAAAAACAdkuACgAAAAAAAAAAaLc6FrsAAAAAAAAAoKmHzvt0+vbYbrP3HnxueU78z0ebPdYXPtI3//bFfTZp/8O8lfnSNX9ovP7Uh3rn5E8MyJA+3dJju9IsqVmT+55Znn+/+9n89c21LV8EAMA2QoAKAAAAAAAA2pj/O+3pbNep6V/l9e3ZOWcfvmceem7FFo75VF59429BqBWv1za5P7hPt6xbX5/rfj8/K16vy847lOfEA3fNJwb2yugrHkrtuvotmhcAoK0ToAIAAAAAAIA25q6nl27S9s1D90h9fUOm/mnxFo+5aNVbb3v/6gfmbdJW/fLq/OdJB+SQD1dk+p+XbNG8AABtXUmxCwAAAAAAAADe3dFDd8nsBa/mldVrtniM7ctatr/CspoNu1T12r5si+cEAGjr7EAFAAAAAAAAbdzQfjtk9x23z38+9OIWjzH9X4ana3lpXluzNrfNWZzv/+7prFm76bF8Xcs6pqy0JLv16pILjxyc+vqGPLFg1XspHwCgTROgAgAAAAAAgDZuzL67pG5dfX5X/UqL3/tm3br86pEFeeTFV7NufUM+/eEd8+UDd02/Hp1z0i9mb9L/uq99NPv275Ek+eubdfn2bX/O06/UvOc1AAC0VQJUAAAAAAAA0IZ1LClk9N598uBzy/PXN9e2+P23Vy/J7dVLGq9/V/1KXn1jbcZ+avd8dEDPPPriq036f3fqU+m5XacM7tMthw3ZKUtrtvzIQACAbUFJsQsAAAAAAAAA3t7Be+6YXtuX5bY5i7famNf/YUGS5GMDem5y78lFqzPz2eW56v4X8oPb5+bqE/fPAbv12GpzAwC0NQJUAAAAAAAA0IaN2bdv3qhdlxlPL91qY27cVap759J37Pf4glVZ8XptvnRA/602NwBAWyNABQAAAAAAAG1U17KOOXRwRe6euzRvrV2/1cbdeYfOSZJX36h7176lHUrSe/tOW21uAIC2RoAKAAAAAAAA2qgj9u6T8tIO73p83z1nHpR7zjxos/d6bLfpLlMnD9stSfLgcysa2/r26LxJv+Ef6p2eXTrlheVvtKBqAIBtS8diFwAAAAAAAABs3uf33SWvvlGXB55d/o79BlZs/7b3bvzGsPz55dV5anFN1qxdn+Ef6p3D/6EyNz2xKNUvr27s9+uvH5gXV7yRB55bntfWrMueO3XN8R/tn1Vv1OX/e/jFrbYmAIC2RoAKAAAAAAAA2qBdduicA3brmV8/+lLW1Tds8Th3PbUkh/9DZQ4dXJGyjh2ycNWbuWj6X3L1Ay806fdff1iQw4fslG8cNDBdyztm6era/PeTi3PpjGezePWa97ocAIA2S4AKAAAAAAAA2qCX//pWdr/g9mb13e38373tvR/d+Ux+dOcz7zrGNQ/MyzUPzGt2fQAAHxQlxS4AAAAAAAAAAACgWASoAAAAAAAAAACAdkuACgAAAAAAAAAAaLc6FrsAAAAAAAAAYFP777pDfj324+lYUkiSrK9vyNjrHsu9zyxvtbG25pwAANsKO1ABAAAAAABAG3TjN4alY0khq95cmxWv16ZDSSH/efIBKd+CLRKaO9bWnBMAYFtR9ADVqlWrcvLJJ6dHjx7p3r17jjvuuCxbtqzYZQEAAAAAAEDR/OLkA1IoFPLC8tez3/dm5IAf3JM/zFuZQqGQ337jE60y1tacEwBgW1L0ANWYMWNy00035Zxzzsm3vvWt3HPPPRk1alTWr19f7NIAAAAAAACgKA7cvWcaGhpy4n8+2th24i8eSUNDQz7cp1urjLU15wQA2JYUdbPNGTNm5P7778+UKVNy0kknJUmGDBmS0aNH56abbsqxxx5bzPIAAAAAAACgKMpKOyRJXlm9prFt3bqkIUmHkkKrjLU15wQA2JYUdQeqadOmpaysLMcdd1xj26hRo9KrV69MnTq1iJUBAAAAAABA8RSyIbiUJPN+eERe/OER6dWlY+rrG97pbe9prK05JwDAtqSoO1BVV1dn0KBBKS8vb2wrKSlJVVVVqqur3/Z9tbW1qa2tbbxevXp1kqSmpqb1igV4B/W1bxa7BACAovD/YUCxbPz909Cw+b/M8/wIaGs8PwK2SMOG3x8b937q2qG+MeDU4t8rzR1ra84J8D/8vxhQLO/2DGmjQsO79WhFgwcPTt++fTNjxoyMGDEiy5cvz+zZs3PiiSdm5syZWbp06WbfN3HixEyaNOl9rhYAAACAtmbhwoXp27fvJu2eHwEA27r6+vo0NDSkQ4cOGTJkSLp06ZLZs2dn7dq16dChQ0pKmn/QTHPH2ppzAgC0JW/3DGmjogaodt999wwePDi/+93vsscee2TVqlV56aWX8k//9E+57bbbGv9l4N/7+39BWF9fn1dffTW9evVKoeD8ZQCg/aipqUm/fv2ycOHCdOvWrdjlAAC8bxoaGvLaa69l55133uxf5Hl+BABs67p27Zokee2115rV/nZqamqy8847p1AovOtYW2tOAIC24t2eIW1U1CP8ysrKUldXlySZM2dO1q9fny5duqS2trbJsX6be19ZWVmTth122KE1SwUAaNO6desmQAUAtDvdu3d/23ueHwEAHxRv98ynJc+C1qxZk86dOzd7rK0xJwBAW/FOz5A2Kuo+m5WVlY3H9G2//faNBS9btiyVlZXFLA0AAAAAAAA+EB544AG7cAIAvIOiBqiqqqry7LPPZs2aNY1t9fX1qa6uTlVVVRErAwAAAAAAgA+GUaNGpaGhodhlAAC0WUUNUI0ePTq1tbW54YYbGtumT5+elStX5qijjipiZQAA24aysrJ897vf3eR4GgAAAABI/vb8qK6urtilAAC0WYWGIsbNGxoactBBB2XOnDmZMGFCSktLM3ny5PTr1y+zZ89Ox44di1UaAAAAAAAAAADQDhQ1QJUkr776asaPH5+pU6emvr4+I0eOzOWXX57KyspilgUAAAAAAAAAALQDRQ9QAQAAAAAAAAAAFEtJsQsAAAAAAAAAAAAoFgEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANqtjsUuAACAd9fQ0JCbbropU6dOTXV1dZYsWZI1a9akvLw8lZWVqaqqymc/+9l8/vOfT0mJjDwAAABAe+P5EQDAlis0NDQ0FLsIAADe3vLly3PEEUfk8ccfT69evVJVVZWKioqUlZWltrY2y5YtS3V1dVauXJn99tsvt99+eyoqKopdNgAAAADvE8+PAADeGwEqAIA27ktf+lLuueeeXHvttRk1alQKhULWrVuXtWvXpnPnzkk2/AvD22+/PSeffHJGjBiRX//610WuGgAAAID3i+dHAADvjf05AQDauDvuuCPnn39+jjjiiBQKhSTJ/vvvn1133TWvvfZakqRQKOTII4/Meeedl+nTpxezXAAAAADeZ54fAQC8Nx2LXQAAAO+spKQk69ata9LWu3fvvPHGG+nQoUOT9nXr1qWkREYeAAAAoD3x/AgA4L0RoAIAaOM++9nP5l//9V+zyy675Nhjj02nTp1y9913N+lTV1eXG264IZMnT87RRx9dnEIBAAAAKArPjwAA3ptCQ0NDQ7GLAADg7f31r3/N0UcfnQceeCDl5eUZNGhQdtppp3Tq1Cl1dXVZunRpnn322axZsybDhw/Pbbfdlh122KHYZQMAAADwPvH8CADgvRGgAgDYRsyYMSPTpk3Ln//85yxZsiS1tbUpKytLZWVlqqqqMnr06Bx22GHFLhMAAACAIvH8CABgywhQAQAAAAAAAAAA7VZJsQsAAAAAAAAAAAAoFgEqAAAAAAAAAACg3RKgAgAAAAAAAAAA2i0BKgAAAAAAAAAAoN0SoAIAAAAAAAAAANotASoAAAAAAAAAAKDdEqACAAAAAAAAAADarf8funS9GASCzjgAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "appals.get_app_info(disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + "if comp_appid:\n", + " comp_app=Application_Run(comp_appid,basedir=comp_base_dir)\n", + " output=app.compare_app(rapp=comp_app,show_metric=emonmetric,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + " display(HTML(output))" + ] + }, + { + "cell_type": "markdown", + "id": "572607be", + "metadata": { + "papermill": { + "duration": 0.019224, + "end_time": "2024-12-06T05:56:57.140390", + "exception": false, + "start_time": "2024-12-06T05:56:57.121166", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Config compare" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "8d703114", + "execution_count": 22, + "id": "0b4f3632", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:31:52.348015Z", - "iopub.status.busy": "2024-12-02T15:31:52.347758Z", - "iopub.status.idle": "2024-12-02T15:31:54.312505Z", - "shell.execute_reply": "2024-12-02T15:31:54.312032Z" + "iopub.execute_input": "2024-12-06T05:56:57.179356Z", + "iopub.status.busy": "2024-12-06T05:56:57.179070Z", + "iopub.status.idle": "2024-12-06T05:56:58.328465Z", + "shell.execute_reply": "2024-12-06T05:56:58.327997Z" }, "papermill": { - "duration": 1.978758, - "end_time": "2024-12-02T15:31:54.314515", + "duration": 1.170805, + "end_time": "2024-12-06T05:56:58.330214", "exception": false, - "start_time": "2024-12-02T15:31:52.335757", + "start_time": "2024-12-06T05:56:57.159409", "status": "completed" }, - "scrolled": true, "tags": [] }, "outputs": [ @@ -2134,112 +4491,274 @@ " \n", " \n", " \n", - " 0\n", + " 0851_0048\n", + " 0851_0029\n", + " comp\n", " \n", " \n", " \n", " \n", - " 40%_time of scan and filter\n", - " 6.95\n", + " callSite.short\n", + " collect at /tmp/ipykernel_265482/1936321720.py:117\n", + " collect at /tmp/ipykernel_234307/1936321720.py:117\n", + " False\n", " \n", " \n", - " 35%_time of project\n", - " 6.02\n", + " spark.app.submitTime\n", + " 1733464301669\n", + " 1733457038427\n", + " False\n", " \n", " \n", - " 21%_not_counted\n", - " 3.55\n", + " spark.executor.extraClassPath\n", + " file:///data0/home/sparkuser/jars/6600a164407ae0e4f5ea5b33dc4b902f23a27730/gluten-velox-bundle-spark3.3_2.12-centos_7_x86_64-1.3.0-snapshot.jar\n", + " \n", + " False\n", " \n", " \n", - " 3%_idle\n", - " 0.54\n", + " spark.executor.extraJavaOptions\n", + " -xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/home/sparkuser/logs/java/hs_err_pid%p.log\n", + " -xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/data0/home/sparkuser/logs/java/hs_err_pid%p.log\n", + " False\n", " \n", " \n", - " 0%_time of input iterator\n", - " 0.06\n", + " spark.executor.memory\n", + " 10944m\n", + " 29184m\n", + " False\n", " \n", " \n", - " 0%_time of aggregation\n", - " 0.03\n", + " spark.gluten.memory.conservative.task.offHeap.size.in.bytes\n", + " 10041163776\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to append / split batches\n", - " 0.00\n", + " spark.gluten.memory.dynamic.offHeap.sizing.enabled\n", + " false\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time of rowConstruction\n", - " 0.00\n", + " spark.gluten.memory.offHeap.size.in.bytes\n", + " 80329310208\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to split\n", - " 0.00\n", + " spark.gluten.memory.overAcquiredMemoryRatio\n", + " 0\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to deserialize\n", - " 0.00\n", + " spark.gluten.memory.task.offHeap.size.in.bytes\n", + " 20082327552\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time of sort\n", - " 0.00\n", + " spark.gluten.memoryOverhead.size.in.bytes\n", + " 1073741824\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time of extraction\n", - " 0.00\n", + " spark.gluten.numTaskSlotsPerExecutor\n", + " 4\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_shuffle write time\n", - " 0.00\n", + " spark.gluten.sql.columnar.backend.lib\n", + " velox\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to compress\n", - " 0.00\n", + " spark.gluten.sql.columnar.coalesce.batches\n", + " true\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to spill\n", - " 0.00\n", + " spark.gluten.sql.columnar.forceshuffledhashjoin\n", + " true\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to decompress\n", - " 0.00\n", + " spark.gluten.sql.columnar.maxBatchSize\n", + " 4096\n", + " NaN\n", + " False\n", " \n", " \n", - " 0%_time to convert\n", - " 0.00\n", + " spark.gluten.sql.columnar.shuffle.codec\n", + " lz4\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.gluten.sql.columnar.shuffle.codecBackend\n", + " \n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.gluten.sql.session.timeZone.default\n", + " etc/utc\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.memory.offHeap.size\n", + " 80329310208\n", + " 58368m\n", + " False\n", + " \n", + " \n", + " spark.plugins\n", + " org.apache.gluten.glutenplugin\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.repl.class.outputDir\n", + " /tmp/tmpypqh85b0\n", + " /tmp/tmpynceqaxd\n", + " False\n", + " \n", + " \n", + " spark.repl.class.uri\n", + " spark://sr213:40521/classes\n", + " spark://sr213:34951/classes\n", + " False\n", + " \n", + " \n", + " spark.shuffle.manager\n", + " org.apache.spark.shuffle.sort.columnarshufflemanager\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.sql.adaptive.customCostEvaluatorClass\n", + " org.apache.spark.sql.execution.adaptive.glutencostevaluator\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.sql.extensions\n", + " org.apache.gluten.extension.glutensessionextensions\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.sql.files.maxPartitionBytes\n", + " 4g\n", + " NaN\n", + " False\n", + " \n", + " \n", + " spark.sql.shuffle.partitions\n", + " 32\n", + " 64\n", + " False\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " 0\n", - "40%_time of scan and filter 6.95\n", - "35%_time of project 6.02\n", - "21%_not_counted 3.55\n", - " 3%_idle 0.54\n", - " 0%_time of input iterator 0.06\n", - " 0%_time of aggregation 0.03\n", - " 0%_time to append / split batches 0.00\n", - " 0%_time of rowConstruction 0.00\n", - " 0%_time to split 0.00\n", - " 0%_time to deserialize 0.00\n", - " 0%_time of sort 0.00\n", - " 0%_time of extraction 0.00\n", - " 0%_shuffle write time 0.00\n", - " 0%_time to compress 0.00\n", - " 0%_time to spill 0.00\n", - " 0%_time to decompress 0.00\n", - " 0%_time to convert 0.00" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACUYAAAKyCAYAAAAT/5YnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gU1/s28HvpHRREQSn2rmDvYuy9G2uwRU3UWKKxJdbkq8Yk9miiUeyaGDHW2FGxoGInYgcLdjoidd4/eJnfDmwvNO/Pde3Fsnvm7JnZ2ZmzZ595jkwQBAFERERERERERERERERERERERERFiEl+N4CIiIiIiIiIiIiIiIiIiIiIiMjQGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVUgMTGxkImkym9+fn5Gey1hg4dKtYbEBBgsHo/FhEREeL28/b2zu/mEBEREREREREREYCJEyeqHGMNCgrSqr5ly5aprC+/x1avX7+usn1Dhw412Gv5+fnpvB2JSHsBAQFG+SwTkXLy51AiKjoYGEVERHkiNTUVISEhWLp0Kfr27YsyZcpoPSglH5Cmy03Ra6Snp+PKlStYuXIlRowYgUaNGqFUqVKwtLSEjY0NPD090a1bN6xduxaJiYlq2ygIAm7duoXff/8dY8aMQfPmzVG6dGlYWVnBysoK7u7uaN++PX766Se8e/dOq20YFRWF3bt3Y/LkyWjcuDEsLS11CpycO3euVtutXr16Kut7/fo1AgMDMXPmTHTp0gVVqlSBvb09zM3N4ezsjLp162L8+PEIDQ3VuI1v377Fpk2bMGTIENSuXRvFihWDubk5ihcvjtq1a2PcuHG4evWqxvXFx8fjzz//xMiRI1GvXj04OzvD3Nwcjo6OqFq1KkaMGKHVgJ62+96BAwc0qjc6Oho//fQT2rRpI+6HdnZ2KF++PPr164fdu3cjPT1dbT3yA5Wa3KZMmaJR+wy1DxpTdHQ0lixZgoYNG6JEiRKwtrZG+fLlMXjwYJ0Gbd+/f481a9agZcuWcHNzg5WVFby9vdGrVy/s27dP6/rS09OxZcsWtG/fHmXKlIGlpSXKlCmDDh06YOvWrcjIyNC4royMDFy/fh2//vorhgwZgvLlyxeowXljuXv3Lr7++mtUr14dDg4OcHBwQI0aNTBlyhTcu3cvv5tHRDrYtWuX0S4IISIi0kXHjh0/ir41ERmHscYHb9y4gR9++AGdOnWCt7c37OzsYGlpCTc3N7Rt2xZLlixBTEyMEdeMqOCLj4/H0aNHMW/ePLRv3x5OTk5aB7rIB6TpciP6mBhqjFqfzxz76qQJs/xuABH9H0tLS4wdO1by2PPnz7F37978aVAREBERgbJlywIAvLy8EBERkb8N+kitWbMGkydPxocPH/K1HaVKlcr1WFBQENq2bat0madPn+Lp06fYv38/5s6di3Xr1qFr165Kyz98+BC1atVS+vyLFy/w4sULHD16FPPnz8fSpUsxYsQItW339vZGZGSk2nL5oVevXjh37pzC56KjoxEdHY2rV69i1apVGDBgANasWQNHR0el9Q0dOhTbt29HWlparudiYmIQExODmzdvYvXq1Rg0aBB+/fVXODg4KK1v1qxZWL58OZKSknI9Fx8fj/j4eISHh2PDhg1o27YtNm/erHBfMbbAwECMGDEi1wBWamoqHj16hEePHuGvv/5CnTp1sGvXLlSoUCFP21eQ98FsZ8+eRf/+/REVFSV5PHv7bdu2DaNHj8bKlSthbm6utr6wsDD06dMH4eHhkscjIyMRGRmJwMBA9OjRA5s2bVK5D2Z79uwZ+vXrhwsXLkgef/78OZ4/f44jR47gt99+w65du+Du7q6yrv3792PgwIEaBWwWJb/++ismT56MlJQUyeNhYWEICwvD6tWrsXz5cowaNSqfWkgFEfuDBVt8fDwmTZqU380gIirUAgICMGzYMACAv78/fxjQ059//ol///03v5tBemjevHmui4oCAwNzfVfUlI+PT64x2xMnTuT6rphfSpQokat94eHhOHHiRD61iAw9Pvjff/9h4MCBuHHjhsLnX758iZcvX+L48eNYsGABVqxYwexCeYzn4oJhyJAh2L59OzIzM/OtDSVLlsy31/7YyAehCYKQjy35eBWUMer8+D2HCh8GRhEVINbW1li1apXksaCgIAZGUaH36tUrgwRF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3h7v3r3DiRMncOrUKVy+fBn3799HdHQ0ZDKZOP7WsWNH+Pv7w9nZOV/aaSgFfXzQGIzRH7SyssLRo0excuVKbNu2DXfv3oVMJoO3tzd69uyJsWPHomTJkjh8+HAerKF6hjgXFwb69gcLm6SkJPz111/i/4pmDylKjDk2Yww7duxAz549sW3bNly7dk08hxYllStXRkhICP79918EBgYiODgYL168QHx8POzt7eHp6QkfHx+0bt0anTp1gouLS343WW/y3/dq1KgBX1/ffGwNFRWcSo8+OvLpT5VNt6eN/JqajIiIiKgokJ9iwNjTGRAR0cepIE9PR0SkiKGmxCEiIiIiIiKg8KZsICIiIiIiIiIiIiIiIiIiIiIiUoKBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERY5MEAQhvxuhTGZmJqKiomBvbw+ZTJbfzSEiKrLGjh2LHTt2GKy+adOmYdq0aQarj4gKPx8fHzx58sRg9e3btw/NmjUzWH1ERESUv/idRD9PnjyBj4+PQeuMjo42aH1ERERERERERIYkCAISEhLg7u4OExPleaEKdGDUs2fP4OHhkd/NICIiIiIiIiIiIiIiIiIiIiKiAubp06coU6aM0ufN8rAtWrO3tweQtRIODg753BoiIiKi/LNyaN/8bgIRERERERERERUA4wP+yu8mEBEREeW7+Ph4eHh4iLFFyhTowKjs6fMcHBwYGEVEREQfNSfXj2cqGCIiIiIiIiIiUo6/mRERERH9n+zYImWUT7JHRERERERERERERERERERERERUSBXojFFERERElOWToLH53QQiIiIiIiIiIioQ7uR3A4iIiIgKDWaMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkmOV3A4iIiIhIvX4z2G0jIiIiIiIiIiLgVn43gIiIiKgQYcYoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTlaB0alpaVhwYIFaNeuHRwcHCCTyRAUFJSrnCAIWLt2LWrVqgVra2u4urqiW7duSExMNES7iYiIiIiIiIiIiIiIiIiIiIiIlNI6MCopKQmzZ8/GgwcPULNmTaXlZs6ciS+++AJVqlTBihUrMGPGDJibmyM5OVmvBhMREREREREREREREREREREREaljpu0C9vb2ePLkCTw8PLB7926cP38+V5nw8HAsWbIEM2fOxA8//CA+PmnSJP1aS0REREREREREREREREREREREpAGtM0aZmprCw8NDZZkdO3bA3NwcM2bMAABOn0dERERERERERERERERERERERHlK68AoTYSEhKBmzZrYt28fXF1dYW9vDw8PD+zYscMYL0dERERERERERERERERERERERCRhlMCo58+f482bNxgzZgymTp2KXbt2oVy5chg0aBCuXr2qdLmUlBTEx8dLbkRERERERERERERERERERERERNoySmDU+/fvERERgUWLFmHq1Kno168fDh48CDs7OyxZskTpcgsXLoSjo6N4UzdlHxERERERERERERERERERERERkSJGCYyysLAAAPTq1Ut8zM7ODk2aNMHNmzeVLjdjxgzExcWJt6dPnxqjeUREREREREREREREREREREREVMQZJTCqRIkSkr/ZihcvjtevXytdztLSEg4ODpIbERERERERERERERERERERERGRtowSGFWtWjUAwMuXLyWPv3nzBu7u7sZ4SSIiIiIiIiIiIiIiIiIiIiIiIpFRAqM6dOgAANi+fbv42Lt373Du3DnUq1fPGC9JREREREREREREREREREREREQkMtNloVWrViE2NhZhYWEAgC1btiA4OBhOTk4YN24cunXrhrp162LmzJl4/fo1PD09sW7dOmRkZGD69OkGXQEiIiIiIiIiIiIiIiIiIiIiIqKcZIIgCNou5O3tjcjIyFyPe3l5ISIiAkDWtHlTpkzBgQMHkJSUBF9fXyxcuBB+fn4av058fDwcHR0RFxcHBwcHbZtJREREVGTU3FQzv5tAREREREREREQFwC3/W/ndBCIiIqJ8p2lMkU4Zo7KDn1QpUaIENm3apEv1REREREREREREREREREREREREejHJ7wYQEREREREREREREREREREREREZGgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihwGRhERERERERERERERERERERERUZHDwCgiIiIiIiIiIiIiIiIiIiIiIipyGBhFRERERERERERERERERERERERFDgOjiIiIiIiIiIiIiIiIiIiIiIioyGFgFBERERERERERERERERERERERFTkMjCIiIiIiIiIiIiIiIiIiIiIioiKHgVFERERERERERERERERERERERFTkMDCKiIiIiIiIiIiIiIiIiIiIiIiKHAZGERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRw8AoIiIiIiIiIiIiIiIiIiIiIiIqchgYRURERERERERERERERERERERERQ4Do4iIiIiIiIiIiIiIiIiIiIiIqMhhYBQRERERERERERERERERERERERU5DIwiIiIiIiIiIiIiIiIiIiIiIqIih4FRRERERERERERERERERERERERU5DAwioiIiIiIiIiIiIiIiIiIiIiIihyz/G4AEREREREREREREREREVFRkZGRgbS0tPxuBhERUaFiZmYGU1NTyGQyw9Zr0NqIiIiIiIiIiIiIiIiIiD5CgiDg5cuXiI2Nze+mEBERFUqmpqZwdXWFo6OjwQKkGBhFRERERERERERERERERKSn7KAoV1dX2NjYGDzjBRERUVElCALS09MRHx+PFy9eIDk5GW5ubgapm4FRRERERERERERERERERER6yMjIEIOinJ2d87s5REREhZK9vT0sLS3x9u1buLq6wtTUVO86TQzQLiIiIiIiIiIiIiIiIiKij1ZaWhoAwMbGJp9bQkREVLjZ2tpCEATx3KovBkYRERERERERERERERERERkAp88jIiLSj6HPpQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYRERERERERERERERER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IiIiIiIiIiIiIiIiKvR27tyZ300gIqIChlPpERERERERERERERERERERERFRkcPAKCIiIiIiIiIiIiIiIiIiIiIiKnIYGEVEREREREREREREREREREREREUOA6OIiIiIiIiIiIiIiIiIiIiIiKjIYWAUEREREREREREREREREREREREVOQyMIiIiIiIiIiIiIiIiIiIiIiKiIoeBUUREREREREREREREREREREREVOQwMIqIiIiIiIiIiIiIiIiIiIiIiIocBkYREREREREREREREREREREREVGRY5bfDSAiIiIiIiIiIiIiIiIiKtLmOuZ3C5SbG5ffLSjUZDIZWrZsiaCgoPxuilEJgoAff/wR69evR2RkJNLS0uDv74+AgID8bppRfCzvK9HHgBmjiIiIiIiIiIiIiIiIiIhIZ/fv38ewYcPg4+MDZ2dn2NjYoGrVqhg/fjyioqJylQ8KCoJMJlN4K1OmjKTshw8fMGHCBJQsWRKurq5YuHAhMjMzjbIe3t7e8Pb2Nkrdhd327dsxffp0ODo6YsqUKZgzZw569OiR380q0gICAiCTyYps8BlRXmHGKCIiIiIiIiIiIiIiIiIi0llYWBj+/vtvNG/eHE2bNoW9vT3Cw8OxZs0abNu2DefPn0eVKlVyLdeyZUv4+flJHnNwcJD8P3HiRGzevBn+/v5ITEzEd999BysrK0yaNMmYq6SxO3fuwMbGJr+bYXSHDh0CAOzfvx9ubm753Brj+1jeV6KPAQOjiIiIiIiIiIiIiIiIiIhIZ23btsW7d+9gbm4ueXzHjh0YOHAg5syZg127duVazs/PD3PnzlVab1paGjZu3IiAgAAMGDAAAFClShX8+uuvBSYwSlHAV1H04sULAPgogqKAj+d9JfoYcCo9IiIiIiIiIiIiIiIiIiLSma2tba6gKADo3LkzgKyMUrpISEhAamoqqlWrJj5WvXp1/D/27jysymr///9rOwGK4oAiTkAOoGYOUV/HxKFySnHWtETt5PmYJWoDOQGV4XByQFPLAUTNShNNRc0BMEtxKGccSKE8mZUDyKQy/P7wt/dxCyhsQJSej+vysr3utdb9vu+9OFzX8XWt9eeff1pWaDY8PDxMx/jFxcUpLi7O7Gi/7I7Wu3uMwWDIsuuVkZ+fnwwGg2bNmiUHBwc5Ojpqw4YNCgwMVKVKlVS3bl19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lbrzz9E2NjZ5Hlu5cmXVq1dPU6dO1ZIlS5SUlKSAgAC1bNnSrF9sbKzi4+PVtGlTi+s8ffq0unfvrp49e+rpp5/WunXrNG3aNDk6OuqNN94w9UtJSVH79u11/PhxdejQQS+//LKio6MVHBysHTt26KefflK1atUk3QkK+fr6SpKOHDmijRs3qlevXmrWrJlpvrv/2xLp6enq2bOnwsLCVK9ePXl5ealcuXI6evSoxo8fr169eplCRnmp3VI3b95Up06d5OTkpNdee027d+/W119/rYyMDK1du9bUz8vLSx4eHpKkuXPnSrpzbKJRxYoVszynp6entmzZosaNG2vUqFFKTEzUunXr1Lp1a/3www9q0qSJqf93332nbt26ydbWVsOHD1fp0qW1ePFi2dnZ5ev5ADyeCEYBAAAAAAAAAAAAAArcN998I0nq3r27ReMXL14sT09POTg4SJIcHBwUFBQkSYqMjNS8efO0a9cuTZs2LV/BqKioKIWFhalr166SpDfffFOurq5asWKFWTBqwYIFOn78uEaMGGF2/N+HH36oqVOn6oMPPtCCBQsk3QlGGXdVCg4O1saNG+Xp6SkvLy+L67zXvHnzFBYWpl69emndunWmIJokHT58WOXLl7eodkv98ccfevXVVzVjxgxJd45DbNSokUJDQ5WQkKAKFSpIktk7MO6ade8OVHdbsGCBtmzZosGDByskJMT0nBMnTlSTJk00btw47dy509Tf29tbGRkZ2r17t1q0aCFJeuutt8x2HwPwz8FRegAAAAAAAAAAAACAAnXp0iVNmjRJtra29w293E+nTp104sQJLVy4UEuWLNGhQ4d04MABNW/eXCNGjFCbNm0UFxenMWPG5KvWp556yhSKkqR69erJzc1N0dHRZv3Wr18vSfLx8TFrf+utt2RjY2O6/rB89tlnKlmypObOnWsWipKkp59+WlWqVDF9fli1v/fee6b/Ll26tF544QWlp6fr3LlzFs+5ePFilSxZUvPnzzd7zieeeEK9e/fW7t27Tcf1nT59WtHR0XruuedMoShJqlu3rnr37m1xDQAeX+wYBQAAAAAAAAAAAAAoMCkpKerbt6/+/vtvrVu3Ti4uLhbP5eTkpN69e2vRokVyd3dXkyZN5O/vrx49eqhEiYLZB6RBgwZZ2uzt7XXq1CmztujoaJUrV07169c3a7ez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", - "text/plain": [ - "
" + " 0851_0048 \\\n", + "callSite.short collect at /tmp/ipykernel_265482/1936321720.py:117 \n", + "spark.app.submitTime 1733464301669 \n", + "spark.executor.extraClassPath file:///data0/home/sparkuser/jars/6600a164407ae0e4f5ea5b33dc4b902f23a27730/gluten-velox-bundle-spark3.3_2.12-centos_7_x86_64-1.3.0-snapshot.jar \n", + "spark.executor.extraJavaOptions -xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/home/sparkuser/logs/java/hs_err_pid%p.log \n", + "spark.executor.memory 10944m \n", + "spark.gluten.memory.conservative.task.offHeap.size.in.bytes 10041163776 \n", + "spark.gluten.memory.dynamic.offHeap.sizing.enabled false \n", + "spark.gluten.memory.offHeap.size.in.bytes 80329310208 \n", + "spark.gluten.memory.overAcquiredMemoryRatio 0 \n", + "spark.gluten.memory.task.offHeap.size.in.bytes 20082327552 \n", + "spark.gluten.memoryOverhead.size.in.bytes 1073741824 \n", + "spark.gluten.numTaskSlotsPerExecutor 4 \n", + "spark.gluten.sql.columnar.backend.lib velox \n", + "spark.gluten.sql.columnar.coalesce.batches true \n", + "spark.gluten.sql.columnar.forceshuffledhashjoin true \n", + "spark.gluten.sql.columnar.maxBatchSize 4096 \n", + "spark.gluten.sql.columnar.shuffle.codec lz4 \n", + "spark.gluten.sql.columnar.shuffle.codecBackend \n", + "spark.gluten.sql.session.timeZone.default etc/utc \n", + "spark.memory.offHeap.size 80329310208 \n", + "spark.plugins org.apache.gluten.glutenplugin \n", + "spark.repl.class.outputDir /tmp/tmpypqh85b0 \n", + "spark.repl.class.uri spark://sr213:40521/classes \n", + "spark.shuffle.manager org.apache.spark.shuffle.sort.columnarshufflemanager \n", + "spark.sql.adaptive.customCostEvaluatorClass org.apache.spark.sql.execution.adaptive.glutencostevaluator \n", + "spark.sql.extensions org.apache.gluten.extension.glutensessionextensions \n", + "spark.sql.files.maxPartitionBytes 4g \n", + "spark.sql.shuffle.partitions 32 \n", + "\n", + " 0851_0029 \\\n", + "callSite.short collect at /tmp/ipykernel_234307/1936321720.py:117 \n", + "spark.app.submitTime 1733457038427 \n", + "spark.executor.extraClassPath \n", + "spark.executor.extraJavaOptions -xx:+ignoreunrecognizedvmoptions --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.lang.invoke=all-unnamed --add-opens=java.base/java.lang.reflect=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.net=all-unnamed --add-opens=java.base/java.nio=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.base/java.util.concurrent.atomic=all-unnamed --add-opens=java.base/sun.nio.ch=all-unnamed --add-opens=java.base/sun.nio.cs=all-unnamed --add-opens=java.base/sun.security.action=all-unnamed --add-opens=java.base/sun.util.calendar=all-unnamed --add-opens=java.security.jgss/sun.security.krb5=all-unnamed -xx:+useparalleloldgc -xx:parallelgcthreads=2 -xx:newratio=1 -xx:survivorratio=1 -xx:+usecompressedoops -verbose:gc -xx:+printgcdetails -xx:+printgctimestamps -xx:errorfile=/data0/home/sparkuser/logs/java/hs_err_pid%p.log \n", + "spark.executor.memory 29184m \n", + "spark.gluten.memory.conservative.task.offHeap.size.in.bytes NaN \n", + "spark.gluten.memory.dynamic.offHeap.sizing.enabled NaN \n", + "spark.gluten.memory.offHeap.size.in.bytes NaN \n", + "spark.gluten.memory.overAcquiredMemoryRatio NaN \n", + "spark.gluten.memory.task.offHeap.size.in.bytes NaN \n", + "spark.gluten.memoryOverhead.size.in.bytes NaN \n", + "spark.gluten.numTaskSlotsPerExecutor NaN \n", + "spark.gluten.sql.columnar.backend.lib NaN \n", + "spark.gluten.sql.columnar.coalesce.batches NaN \n", + "spark.gluten.sql.columnar.forceshuffledhashjoin NaN \n", + "spark.gluten.sql.columnar.maxBatchSize NaN \n", + "spark.gluten.sql.columnar.shuffle.codec NaN \n", + "spark.gluten.sql.columnar.shuffle.codecBackend NaN \n", + "spark.gluten.sql.session.timeZone.default NaN \n", + "spark.memory.offHeap.size 58368m \n", + "spark.plugins NaN \n", + "spark.repl.class.outputDir /tmp/tmpynceqaxd \n", + "spark.repl.class.uri spark://sr213:34951/classes \n", + "spark.shuffle.manager NaN \n", + "spark.sql.adaptive.customCostEvaluatorClass NaN \n", + "spark.sql.extensions NaN \n", + "spark.sql.files.maxPartitionBytes NaN \n", + "spark.sql.shuffle.partitions 64 \n", + "\n", + " comp \n", + "callSite.short False \n", + "spark.app.submitTime False \n", + "spark.executor.extraClassPath False \n", + "spark.executor.extraJavaOptions False \n", + "spark.executor.memory False \n", + "spark.gluten.memory.conservative.task.offHeap.size.in.bytes False \n", + "spark.gluten.memory.dynamic.offHeap.sizing.enabled False \n", + "spark.gluten.memory.offHeap.size.in.bytes False \n", + "spark.gluten.memory.overAcquiredMemoryRatio False \n", + "spark.gluten.memory.task.offHeap.size.in.bytes False \n", + "spark.gluten.memoryOverhead.size.in.bytes False \n", + "spark.gluten.numTaskSlotsPerExecutor False \n", + "spark.gluten.sql.columnar.backend.lib False \n", + "spark.gluten.sql.columnar.coalesce.batches False \n", + "spark.gluten.sql.columnar.forceshuffledhashjoin False \n", + "spark.gluten.sql.columnar.maxBatchSize False \n", + "spark.gluten.sql.columnar.shuffle.codec False \n", + "spark.gluten.sql.columnar.shuffle.codecBackend False \n", + "spark.gluten.sql.session.timeZone.default False \n", + "spark.memory.offHeap.size False \n", + "spark.plugins False \n", + "spark.repl.class.outputDir False \n", + "spark.repl.class.uri False \n", + "spark.shuffle.manager False \n", + "spark.sql.adaptive.customCostEvaluatorClass False \n", + "spark.sql.extensions False \n", + "spark.sql.files.maxPartitionBytes False \n", + "spark.sql.shuffle.partitions False " ] }, "metadata": {}, @@ -2247,130 +4766,44 @@ } ], "source": [ - "appals.show_critical_path_time_breakdown().T" - ] - }, - { - "cell_type": "markdown", - "id": "bde3cd7c", - "metadata": { - "papermill": { - "duration": 0.012768, - "end_time": "2024-12-02T15:31:54.340986", - "exception": false, - "start_time": "2024-12-02T15:31:54.328218", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "# Compare to previous run" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "888c7084", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:31:54.367369Z", - "iopub.status.busy": "2024-12-02T15:31:54.367111Z", - "iopub.status.idle": "2024-12-02T15:31:54.370128Z", - "shell.execute_reply": "2024-12-02T15:31:54.369683Z" - }, - "papermill": { - "duration": 0.017843, - "end_time": "2024-12-02T15:31:54.371339", - "exception": false, - "start_time": "2024-12-02T15:31:54.353496", - "status": "completed" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "if compare_appid:\n", - " compare_app=Application_Run(comapre_appid,basedir=compare_basedir)\n", - " output=app.compare_app(rapp=compare_app,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", - " display(HTML(output))" - ] - }, - { - "cell_type": "markdown", - "id": "bb199e20", - "metadata": { - "papermill": { - "duration": 0.012114, - "end_time": "2024-12-02T15:31:54.396409", - "exception": false, - "start_time": "2024-12-02T15:31:54.384295", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "# Config compare" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "ae5a681e", - "metadata": { - "execution": { - "iopub.execute_input": "2024-12-02T15:31:54.422666Z", - "iopub.status.busy": "2024-12-02T15:31:54.422386Z", - "iopub.status.idle": "2024-12-02T15:31:54.424818Z", - "shell.execute_reply": "2024-12-02T15:31:54.424396Z" - }, - "papermill": { - "duration": 0.01699, - "end_time": "2024-12-02T15:31:54.426008", - "exception": false, - "start_time": "2024-12-02T15:31:54.409018", - "status": "completed" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "if compare_appid:\n", - " display(comp_spark_conf(app_als, compare_app_als))" + "if comp_appid:\n", + " comp_appals=comp_app.analysis['app']['als']\n", + " display(comp_spark_conf(appals, comp_appals))" ] }, { "cell_type": "markdown", - "id": "6118d3af", + "id": "20b5f6f2", "metadata": { "papermill": { - "duration": 0.012438, - "end_time": "2024-12-02T15:31:54.451132", + "duration": 0.020157, + "end_time": "2024-12-06T05:56:58.371233", "exception": false, - "start_time": "2024-12-02T15:31:54.438694", + "start_time": "2024-12-06T05:56:58.351076", "status": "completed" }, "tags": [] }, "source": [ - "# convert to HTML" + "# Convert to HTML" ] }, { "cell_type": "code", - "execution_count": 22, - "id": "902ebd2c", + "execution_count": 23, + "id": "bd866a20", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:31:54.477825Z", - "iopub.status.busy": "2024-12-02T15:31:54.477584Z", - "iopub.status.idle": "2024-12-02T15:31:54.480969Z", - "shell.execute_reply": "2024-12-02T15:31:54.480577Z" + "iopub.execute_input": "2024-12-06T05:56:58.412619Z", + "iopub.status.busy": "2024-12-06T05:56:58.412337Z", + "iopub.status.idle": "2024-12-06T05:56:58.416007Z", + "shell.execute_reply": "2024-12-06T05:56:58.415586Z" }, "papermill": { - "duration": 0.018124, - "end_time": "2024-12-02T15:31:54.482237", + "duration": 0.025916, + "end_time": "2024-12-06T05:56:58.417156", "exception": false, - "start_time": "2024-12-02T15:31:54.464113", + "start_time": "2024-12-06T05:56:58.391240", "status": "completed" }, "tags": [] @@ -2396,20 +4829,20 @@ }, { "cell_type": "code", - "execution_count": 23, - "id": "1f55d7ac", + "execution_count": 24, + "id": "83323888", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:31:54.509184Z", - "iopub.status.busy": "2024-12-02T15:31:54.508952Z", - "iopub.status.idle": "2024-12-02T15:31:54.511234Z", - "shell.execute_reply": "2024-12-02T15:31:54.510830Z" + "iopub.execute_input": "2024-12-06T05:56:58.459405Z", + "iopub.status.busy": "2024-12-06T05:56:58.459137Z", + "iopub.status.idle": "2024-12-06T05:56:58.461591Z", + "shell.execute_reply": "2024-12-06T05:56:58.461165Z" }, "papermill": { - "duration": 0.016976, - "end_time": "2024-12-02T15:31:54.512431", + "duration": 0.024889, + "end_time": "2024-12-06T05:56:58.462703", "exception": false, - "start_time": "2024-12-02T15:31:54.495455", + "start_time": "2024-12-06T05:56:58.437814", "status": "completed" }, "tags": [] @@ -2421,20 +4854,20 @@ }, { "cell_type": "code", - "execution_count": 24, - "id": "45249902", + "execution_count": 25, + "id": "98b1ba3b", "metadata": { "execution": { - "iopub.execute_input": "2024-12-02T15:31:54.539435Z", - "iopub.status.busy": "2024-12-02T15:31:54.539198Z", - "iopub.status.idle": "2024-12-02T15:31:54.541484Z", - "shell.execute_reply": "2024-12-02T15:31:54.541077Z" + "iopub.execute_input": "2024-12-06T05:56:58.505858Z", + "iopub.status.busy": "2024-12-06T05:56:58.505587Z", + "iopub.status.idle": "2024-12-06T05:56:58.508041Z", + "shell.execute_reply": "2024-12-06T05:56:58.507614Z" }, "papermill": { - "duration": 0.01708, - "end_time": "2024-12-02T15:31:54.542686", + "duration": 0.024884, + "end_time": "2024-12-06T05:56:58.509167", "exception": false, - "start_time": "2024-12-02T15:31:54.525606", + "start_time": "2024-12-06T05:56:58.484283", "status": "completed" }, "tags": [] @@ -2477,24 +4910,25 @@ }, "papermill": { "default_parameters": {}, - "duration": 132.778369, - "end_time": "2024-12-02T15:31:57.173789", + "duration": 207.873445, + "end_time": "2024-12-06T05:57:01.150405", "environment_variables": {}, "exception": null, - "input_path": "2024_12_02_152940_tpch_gluten_application_1733153225851_0001.ipynb", - "output_path": "2024_12_02_152940_tpch_gluten_application_1733153225851_0001.nbconvert.ipynb", + "input_path": "2024_12_06_055328_tpch_gluten_application_1733153225851_0048.ipynb", + "output_path": "2024_12_06_055328_tpch_gluten_application_1733153225851_0048.nbconvert.ipynb", "parameters": { - "appid": "application_1733153225851_0001", - "basedir": "sr213", - "compare_appid": "", - "compare_basedir": "", - "compare_name": "", + "appid": "application_1733153225851_0048", + "base_dir": "sr213", + "comp_appid": "application_1733153225851_0029", + "comp_base_dir": "sr213", + "comp_name": "vanilla", "disk": "nvme0n1", "name": "tpch_gluten", "nic": "enp61s0f0", + "proxy": "http://10.239.44.250:8080", "tz": "Etc/GMT+0" }, - "start_time": "2024-12-02T15:29:44.395420", + "start_time": "2024-12-06T05:53:33.276960", "version": "2.6.0" }, "toc": { diff --git a/tools/workload/benchmark_velox/tpc_workload.ipynb b/tools/workload/benchmark_velox/tpc_workload.ipynb index b9b147619d9a..15aba310b002 100644 --- a/tools/workload/benchmark_velox/tpc_workload.ipynb +++ b/tools/workload/benchmark_velox/tpc_workload.ipynb @@ -44,9 +44,18 @@ "# Proxy used to connect to server for perf analysis.\n", "proxy=''\n", "\n", + "# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable.\n", + "# Supported emon events on platform can be verified via `emon -i emon.list`\n", + "emon_list: '/home/sparkuser/ipython/emon_srf.list'\n", + "\n", "# Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set.\n", "analyze_perf=True\n", "\n", + "# Specify app info to compare for perf analysis\n", + "comp_appid: ''\n", + "comp_base_dir: ''\n", + "comp_name: ''\n", + "\n", "# Select workload. Can be either 'tpch' or 'tpcds'.\n", "workload='tpch'\n", "\n", @@ -238,7 +247,7 @@ "metadata": {}, "outputs": [], "source": [ - "test_tpc.start_monitor(clients)" + "test_tpc.start_monitor(clients, emon_list=emon_list)" ] }, { @@ -266,7 +275,7 @@ "outputs": [], "source": [ "if analyze_perf:\n", - " test_tpc.run_perf_analysis(disk_dev, nic_dev, proxy)" + " test_tpc.run_perf_analysis(disk_dev, nic_dev, proxy, comp_appid, comp_base_dir, comp_name)" ] }, { From c4493e86e0991ac2c678b3374fab5b16b93da7cd Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Fri, 6 Dec 2024 09:54:10 +0000 Subject: [PATCH 08/12] fix --- .../native_sql_initialize.ipynb | 10 +- .../sample/trace_result_tpch_q1.json | 1148 ++++++++++------- .../benchmark_velox/tpc_workload.ipynb | 2 +- 3 files changed, 689 insertions(+), 471 deletions(-) diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index 2e63640c40b7..d3cf1f9ca984 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -387,10 +387,7 @@ " !mkdir -p {prof}\n", "\n", " killsar(clients)\n", - " killnumactl(clients) \n", - " \n", - " with open(f\"{prof}/starttime\",\"w\") as f:\n", - " f.write(\"{:d}\".format(int(time.time()*1000)))\n", + " killnumactl(clients)\n", " \n", " for l in clients:\n", " prof_client=os.path.join(prof, l)\n", @@ -405,7 +402,10 @@ " \n", " if sc is not None:\n", " sc.stop()\n", - " \n", + "\n", + " with open(f\"{prof}/starttime\",\"w\") as f:\n", + " f.write(\"{:d}\".format(int(time.time()*1000)))\n", + "\n", " if hdfs_event_dir != '':\n", " !hadoop fs -copyToLocal {hdfs_event_dir}/{appid} {prof}/app.log\n", " elif local_event_dir != '':\n", diff --git a/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json b/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json index 4099df0c4ada..8f13dcbf8cc9 100644 --- a/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json +++ b/tools/workload/benchmark_velox/sample/trace_result_tpch_q1.json @@ -3,515 +3,733 @@ "traceEvents": [ {"name": "process_name", "ph": "M", "pid": 100300, "tid": 0, "args": {"name": "sr217.3"}}, -{"tid": 100300, "ts": -29221, "dur": 1658, "pid": 100300, "ph": "X", "name": "stg0", "args": {"job id": 0, "stage id": 0, "tskid": 0, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -31061, "dur": 1687, "pid": 100300, "ph": "X", "name": "stg0", "args": {"job id": 0, "stage id": 0, "tskid": 0, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"name": "process_name", "ph": "M", "pid": 100100, "tid": 0, "args": {"name": "sr217.1"}}, +{"tid": 100100, "ts": -27468, "dur": 1597, "pid": 100100, "ph": "X", "name": "stg1", "args": {"job id": 1, "stage id": 1, "tskid": 1, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, {"name": "process_name", "ph": "M", "pid": 100200, "tid": 0, "args": {"name": "sr217.2"}}, -{"tid": 100200, "ts": -25482, "dur": 1673, "pid": 100200, "ph": "X", "name": "stg1", "args": {"job id": 1, "stage id": 1, "tskid": 1, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100300, "ts": -23725, "dur": 44, "pid": 100300, "ph": "X", "name": "stg2", "args": {"job id": 2, "stage id": 2, "tskid": 2, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100200, "ts": -25774, "dur": 1571, "pid": 100200, "ph": "X", "name": "stg2", "args": {"job id": 2, "stage id": 2, "tskid": 2, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -24113, "dur": 57, "pid": 100300, "ph": "X", "name": "stg3", "args": {"job id": 3, "stage id": 3, "tskid": 3, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -23974, "dur": 31, "pid": 100300, "ph": "X", "name": "stg4", "args": {"job id": 4, "stage id": 4, "tskid": 4, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100200, "ts": -23861, "dur": 65, "pid": 100200, "ph": "X", "name": "stg5", "args": {"job id": 5, "stage id": 5, "tskid": 5, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -23721, "dur": 32, "pid": 100300, "ph": "X", "name": "stg6", "args": {"job id": 6, "stage id": 6, "tskid": 6, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -23618, "dur": 29, "pid": 100300, "ph": "X", "name": "stg7", "args": {"job id": 7, "stage id": 7, "tskid": 7, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, {"name": "process_name", "ph": "M", "pid": 100400, "tid": 0, "args": {"name": "sr217.4"}}, -{"tid": 100400, "ts": -23602, "dur": 1568, "pid": 100400, "ph": "X", "name": "stg3", "args": {"job id": 3, "stage id": 3, "tskid": 3, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100400, "ts": -21959, "dur": 45, "pid": 100400, "ph": "X", "name": "stg4", "args": {"job id": 4, "stage id": 4, "tskid": 4, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100300, "ts": -21844, "dur": 33, "pid": 100300, "ph": "X", "name": "stg5", "args": {"job id": 5, "stage id": 5, "tskid": 5, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"name": "process_name", "ph": "M", "pid": 100100, "tid": 0, "args": {"name": "sr217.1"}}, -{"tid": 100100, "ts": -21745, "dur": 1580, "pid": 100100, "ph": "X", "name": "stg6", "args": {"job id": 6, "stage id": 6, "tskid": 6, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100400, "ts": -20094, "dur": 34, "pid": 100400, "ph": "X", "name": "stg7", "args": {"job id": 7, "stage id": 7, "tskid": 7, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100303, "ts": -18980, "dur": 13476, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 20, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100302, "ts": -18981, "dur": 13530, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 16, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100300, "ts": -18985, "dur": 13603, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 8, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100402, "ts": -18981, "dur": 13669, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 19, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100400, "ts": -18982, "dur": 13677, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 11, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100301, "ts": -18982, "dur": 13895, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 12, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100401, "ts": -18982, "dur": 13916, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 15, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100103, "ts": -18980, "dur": 13937, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 22, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100203, "ts": -18980, "dur": 14105, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 21, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100403, "ts": -18980, "dur": 14143, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 23, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100202, "ts": -18981, "dur": 14411, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 17, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100100, "ts": -18982, "dur": 14459, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 10, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100102, "ts": -18981, "dur": 14535, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 18, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100201, "ts": -18982, "dur": 14582, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 13, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100101, "ts": -18982, "dur": 14586, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 14, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100200, "ts": -18982, "dur": 14613, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 9, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100300, "ts": -3986, "dur": 735, "pid": 100300, "ph": "X", "name": "stg10", "args": {"job id": 9, "stage id": 10, "tskid": 24, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100400, "ts": -3214, "dur": 980, "pid": 100400, "ph": "X", "name": "stg12", "args": {"job id": 10, "stage id": 12, "tskid": 25, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid": 100300, "ts": -2089, "dur": 115, "pid": 100300, "ph": "X", "name": "stg15", "args": {"job id": 11, "stage id": 15, "tskid": 26, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, -{"tid":38,"ts":-2088,"dur":114,"pid":99999,"ph":"X","name":"stg15","args":{"taskid":26,"exec_id":3,"host":"sr217"}}, -{"tid":38,"ts":-3213,"dur":979,"pid":99999,"ph":"X","name":"stg12","args":{"taskid":25,"exec_id":4,"host":"sr217"}}, -{"tid":38,"ts":-3985,"dur":734,"pid":99999,"ph":"X","name":"stg10","args":{"taskid":24,"exec_id":3,"host":"sr217"}}, -{"tid":38,"ts":-18981,"dur":14612,"pid":99999,"ph":"X","name":"stg8","args":{"taskid":9,"exec_id":2,"host":"sr217"}}, -{"tid":38,"ts":-20093,"dur":33,"pid":99999,"ph":"X","name":"stg7","args":{"taskid":7,"exec_id":4,"host":"sr217"}}, -{"tid":38,"ts":-21744,"dur":1579,"pid":99999,"ph":"X","name":"stg6","args":{"taskid":6,"exec_id":1,"host":"sr217"}}, -{"tid":38,"ts":-21843,"dur":32,"pid":99999,"ph":"X","name":"stg5","args":{"taskid":5,"exec_id":3,"host":"sr217"}}, -{"tid":38,"ts":-21958,"dur":44,"pid":99999,"ph":"X","name":"stg4","args":{"taskid":4,"exec_id":4,"host":"sr217"}}, -{"tid":38,"ts":-23601,"dur":1567,"pid":99999,"ph":"X","name":"stg3","args":{"taskid":3,"exec_id":4,"host":"sr217"}}, -{"tid":38,"ts":-23724,"dur":43,"pid":99999,"ph":"X","name":"stg2","args":{"taskid":2,"exec_id":3,"host":"sr217"}}, -{"tid":38,"ts":-25481,"dur":1672,"pid":99999,"ph":"X","name":"stg1","args":{"taskid":1,"exec_id":2,"host":"sr217"}}, -{"tid":38,"ts":-29220,"dur":1657,"pid":99999,"ph":"X","name":"stg0","args":{"taskid":0,"exec_id":3,"host":"sr217"}}, -{"tid":38,"ts":-29221,"dur":9161,"pid":99999,"ph":"X","name":"qry0"}, -{"tid":38,"ts":-18985,"dur":17011,"pid":99999,"ph":"X","name":"qry1"}, -{"tid":38,"ts":-18981,"dur":7473,"pid":99999,"ph":"X","name":"time of scan and filter"}, -{"tid":38,"ts":-11507,"dur":6477,"pid":99999,"ph":"X","name":"time of project"}, -{"tid":38,"ts":-5029,"dur":32,"pid":99999,"ph":"X","name":"time of aggregation"}, -{"tid":38,"ts":-3985,"dur":20,"pid":99999,"ph":"X","name":"time of input iterator"}, -{"tid":38,"ts":-3213,"dur":20,"pid":99999,"ph":"X","name":"time of input iterator"}, -{"tid":38,"ts":-2088,"dur":4,"pid":99999,"ph":"X","name":"time of input iterator"}, +{"tid": 100100, "ts": -22404, "dur": 12869, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 11, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100300, "ts": -22407, "dur": 13451, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 8, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100202, "ts": -22403, "dur": 13720, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 17, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100203, "ts": -22402, "dur": 13765, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 21, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100102, "ts": -22402, "dur": 13781, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 23, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100301, "ts": -22404, "dur": 13794, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 12, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100101, "ts": -22403, "dur": 13803, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 15, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100302, "ts": -22403, "dur": 13833, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 16, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100303, "ts": -22402, "dur": 13839, "pid": 100300, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 20, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100103, "ts": -22402, "dur": 13840, "pid": 100100, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 19, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100200, "ts": -22404, "dur": 13859, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 13, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100201, "ts": -22404, "dur": 13918, "pid": 100200, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 9, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100403, "ts": -22402, "dur": 14580, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 22, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100402, "ts": -22403, "dur": 14654, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 14, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100401, "ts": -22403, "dur": 14895, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 18, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100400, "ts": -22404, "dur": 14898, "pid": 100400, "ph": "X", "name": "stg8", "args": {"job id": 8, "stage id": 8, "tskid": 10, "input": 315.73, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100100, "ts": -7099, "dur": 758, "pid": 100100, "ph": "X", "name": "stg10", "args": {"job id": 9, "stage id": 10, "tskid": 24, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100100, "ts": -6305, "dur": 407, "pid": 100100, "ph": "X", "name": "stg12", "args": {"job id": 10, "stage id": 12, "tskid": 25, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.03, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid": 100100, "ts": -5749, "dur": 75, "pid": 100100, "ph": "X", "name": "stg15", "args": {"job id": 11, "stage id": 15, "tskid": 26, "input": 0.0, "spill": 0.0, "Shuffle Read Metrics": "", "|---Local Read": 0.0, "|---Remote Read": 0.0, "Shuffle Write Metrics": "", "|---Write": 0.0}}, +{"tid":38,"ts":-31060,"dur":1686,"pid":99999,"ph":"X","name":"stg0","args":{"taskid":0,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-27467,"dur":1596,"pid":99999,"ph":"X","name":"stg1","args":{"taskid":1,"exec_id":1,"host":"sr217"}}, +{"tid":38,"ts":-25773,"dur":1570,"pid":99999,"ph":"X","name":"stg2","args":{"taskid":2,"exec_id":2,"host":"sr217"}}, +{"tid":38,"ts":-24112,"dur":56,"pid":99999,"ph":"X","name":"stg3","args":{"taskid":3,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-23973,"dur":30,"pid":99999,"ph":"X","name":"stg4","args":{"taskid":4,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-23860,"dur":64,"pid":99999,"ph":"X","name":"stg5","args":{"taskid":5,"exec_id":2,"host":"sr217"}}, +{"tid":38,"ts":-23720,"dur":31,"pid":99999,"ph":"X","name":"stg6","args":{"taskid":6,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-23617,"dur":28,"pid":99999,"ph":"X","name":"stg7","args":{"taskid":7,"exec_id":3,"host":"sr217"}}, +{"tid":38,"ts":-22403,"dur":14897,"pid":99999,"ph":"X","name":"stg8","args":{"taskid":10,"exec_id":4,"host":"sr217"}}, +{"tid":38,"ts":-7098,"dur":757,"pid":99999,"ph":"X","name":"stg10","args":{"taskid":24,"exec_id":1,"host":"sr217"}}, +{"tid":38,"ts":-6304,"dur":406,"pid":99999,"ph":"X","name":"stg12","args":{"taskid":25,"exec_id":1,"host":"sr217"}}, +{"tid":38,"ts":-5748,"dur":74,"pid":99999,"ph":"X","name":"stg15","args":{"taskid":26,"exec_id":1,"host":"sr217"}}, +{"tid":38,"ts":-31061,"dur":7472,"pid":99999,"ph":"X","name":"qry0"}, +{"tid":38,"ts":-22407,"dur":16733,"pid":99999,"ph":"X","name":"qry1"}, +{"tid":38,"ts":-22403,"dur":7405,"pid":99999,"ph":"X","name":"time of scan and filter"}, +{"tid":38,"ts":-14997,"dur":5659,"pid":99999,"ph":"X","name":"time of project"}, +{"tid":38,"ts":-9337,"dur":30,"pid":99999,"ph":"X","name":"time of aggregation"}, +{"tid":38,"ts":-7098,"dur":22,"pid":99999,"ph":"X","name":"time of input iterator"}, +{"tid":38,"ts":-6304,"dur":17,"pid":99999,"ph":"X","name":"time of input iterator"}, {"name": "process_name", "ph": "M", "pid": 99999, "tid": 0, "args": {"name": "critical path"}}, {"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, -{"tid":0,"ts":-30931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":2,"system":1,"iowait":0}}, -{"tid":0,"ts":-29931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":0,"system":0,"iowait":0}}, -{"tid":0,"ts":-28931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":14,"system":0,"iowait":0}}, -{"tid":0,"ts":-27931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":4,"system":0,"iowait":0}}, -{"tid":0,"ts":-26931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":1,"system":0,"iowait":0}}, -{"tid":0,"ts":-25931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":3,"system":0,"iowait":0}}, -{"tid":0,"ts":-24931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":14,"system":0,"iowait":0}}, -{"tid":0,"ts":-23931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":9,"system":0,"iowait":0}}, -{"tid":0,"ts":-22931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, -{"tid":0,"ts":-21931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":10,"system":0,"iowait":0}}, -{"tid":0,"ts":-20931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, -{"tid":0,"ts":-19931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":1,"system":0,"iowait":0}}, -{"tid":0,"ts":-18931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":53,"system":6,"iowait":1}}, -{"tid":0,"ts":-17931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":8,"iowait":0}}, -{"tid":0,"ts":-16931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":68,"system":10,"iowait":4}}, -{"tid":0,"ts":-15931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":83,"system":8,"iowait":0}}, -{"tid":0,"ts":-14931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":84,"system":6,"iowait":0}}, -{"tid":0,"ts":-13931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":80,"system":8,"iowait":1}}, -{"tid":0,"ts":-12931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":9,"iowait":1}}, -{"tid":0,"ts":-11931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":9,"iowait":1}}, -{"tid":0,"ts":-10931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":82,"system":8,"iowait":0}}, -{"tid":0,"ts":-9931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":79,"system":8,"iowait":1}}, -{"tid":0,"ts":-8931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":83,"system":7,"iowait":0}}, -{"tid":0,"ts":-7931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":80,"system":9,"iowait":0}}, -{"tid":0,"ts":-6931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":79,"system":8,"iowait":0}}, -{"tid":0,"ts":-5931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":73,"system":8,"iowait":0}}, -{"tid":0,"ts":-4931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":32,"system":3,"iowait":0}}, -{"tid":0,"ts":-3931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":11,"system":0,"iowait":0}}, -{"tid":0,"ts":-2931,"pid":0,"ph":"C","name":"all cpu%","args":{"user":13,"system":0,"iowait":0}}, +{"tid":0,"ts":-32621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":3,"system":1,"iowait":0}}, +{"tid":0,"ts":-31621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":0,"system":0,"iowait":0}}, +{"tid":0,"ts":-30621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":9,"system":0,"iowait":0}}, +{"tid":0,"ts":-29621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":11,"system":0,"iowait":0}}, +{"tid":0,"ts":-28621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":0,"system":0,"iowait":0}}, +{"tid":0,"ts":-27621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":1,"system":0,"iowait":0}}, +{"tid":0,"ts":-26621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":15,"system":0,"iowait":0}}, +{"tid":0,"ts":-25621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":9,"system":0,"iowait":0}}, +{"tid":0,"ts":-24621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":15,"system":0,"iowait":0}}, +{"tid":0,"ts":-23621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":6,"system":0,"iowait":0}}, +{"tid":0,"ts":-22621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":4,"system":0,"iowait":0}}, +{"tid":0,"ts":-21621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":63,"system":9,"iowait":1}}, +{"tid":0,"ts":-20621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":82,"system":6,"iowait":0}}, +{"tid":0,"ts":-19621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":75,"system":8,"iowait":0}}, +{"tid":0,"ts":-18621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":77,"system":7,"iowait":0}}, +{"tid":0,"ts":-17621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":77,"system":8,"iowait":1}}, +{"tid":0,"ts":-16621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":72,"system":9,"iowait":1}}, +{"tid":0,"ts":-15621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":76,"system":8,"iowait":1}}, +{"tid":0,"ts":-14621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":76,"system":8,"iowait":0}}, +{"tid":0,"ts":-13621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":82,"system":7,"iowait":0}}, +{"tid":0,"ts":-12621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":78,"system":8,"iowait":0}}, +{"tid":0,"ts":-11621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":76,"system":7,"iowait":0}}, +{"tid":0,"ts":-10621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":79,"system":8,"iowait":1}}, +{"tid":0,"ts":-9621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":71,"system":10,"iowait":1}}, +{"tid":0,"ts":-8621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":65,"system":6,"iowait":0}}, +{"tid":0,"ts":-7621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":15,"system":2,"iowait":0}}, +{"tid":0,"ts":-6621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":12,"system":0,"iowait":0}}, +{"tid":0,"ts":-5621,"pid":0,"ph":"C","name":"all cpu%","args":{"user":11,"system":0,"iowait":0}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 0, "args": {"sort_index ": 0}}, {"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, -{"tid":3,"ts":-30931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-29931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-28931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":3,"ts":-27931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-26931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-25931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":3,"ts":-24931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-23931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":3,"ts":-22931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-21931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":3,"ts":-20931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-19931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":0}}, -{"tid":3,"ts":-18931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":391,"write":0}}, -{"tid":3,"ts":-17931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":144,"write":718}}, -{"tid":3,"ts":-16931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":489,"write":297}}, -{"tid":3,"ts":-15931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":419,"write":0}}, -{"tid":3,"ts":-14931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":202,"write":0}}, -{"tid":3,"ts":-13931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":427,"write":0}}, -{"tid":3,"ts":-12931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":486,"write":0}}, -{"tid":3,"ts":-11931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":478,"write":0}}, -{"tid":3,"ts":-10931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":469,"write":0}}, -{"tid":3,"ts":-9931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":438,"write":0}}, -{"tid":3,"ts":-8931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":359,"write":0}}, -{"tid":3,"ts":-7931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":442,"write":0}}, -{"tid":3,"ts":-6931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":438,"write":0}}, -{"tid":3,"ts":-5931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":343,"write":0}}, -{"tid":3,"ts":-4931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":68,"write":0}}, -{"tid":3,"ts":-3931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":3,"ts":-2931,"pid":0,"ph":"C","name":"disk b/w","args":{"read":1,"write":1}}, -{"tid":4,"ts":-30931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, -{"tid":4,"ts":-29931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, -{"tid":4,"ts":-28931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-27931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-26931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, -{"tid":4,"ts":-25931,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, -{"tid":4,"ts":-24931,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, -{"tid":4,"ts":-23931,"pid":0,"ph":"C","name":"disk%","args":{"%util":4.0}}, -{"tid":4,"ts":-22931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-21931,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, -{"tid":4,"ts":-20931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-19931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-18931,"pid":0,"ph":"C","name":"disk%","args":{"%util":29.0}}, -{"tid":4,"ts":-17931,"pid":0,"ph":"C","name":"disk%","args":{"%util":95.0}}, -{"tid":4,"ts":-16931,"pid":0,"ph":"C","name":"disk%","args":{"%util":74.0}}, -{"tid":4,"ts":-15931,"pid":0,"ph":"C","name":"disk%","args":{"%util":55.0}}, -{"tid":4,"ts":-14931,"pid":0,"ph":"C","name":"disk%","args":{"%util":45.0}}, -{"tid":4,"ts":-13931,"pid":0,"ph":"C","name":"disk%","args":{"%util":42.0}}, -{"tid":4,"ts":-12931,"pid":0,"ph":"C","name":"disk%","args":{"%util":58.0}}, -{"tid":4,"ts":-11931,"pid":0,"ph":"C","name":"disk%","args":{"%util":61.0}}, -{"tid":4,"ts":-10931,"pid":0,"ph":"C","name":"disk%","args":{"%util":72.0}}, -{"tid":4,"ts":-9931,"pid":0,"ph":"C","name":"disk%","args":{"%util":68.0}}, -{"tid":4,"ts":-8931,"pid":0,"ph":"C","name":"disk%","args":{"%util":65.0}}, -{"tid":4,"ts":-7931,"pid":0,"ph":"C","name":"disk%","args":{"%util":66.0}}, -{"tid":4,"ts":-6931,"pid":0,"ph":"C","name":"disk%","args":{"%util":61.0}}, -{"tid":4,"ts":-5931,"pid":0,"ph":"C","name":"disk%","args":{"%util":65.0}}, -{"tid":4,"ts":-4931,"pid":0,"ph":"C","name":"disk%","args":{"%util":23.0}}, -{"tid":4,"ts":-3931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":4,"ts":-2931,"pid":0,"ph":"C","name":"disk%","args":{"%util":1.0}}, -{"tid":5,"ts":-30931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, -{"tid":5,"ts":-29931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, -{"tid":5,"ts":-28931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":98.62}}, -{"tid":5,"ts":-27931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":53.2}}, -{"tid":5,"ts":-26931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, -{"tid":5,"ts":-25931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":102.56}}, -{"tid":5,"ts":-24931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":85.33}}, -{"tid":5,"ts":-23931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":76.11}}, -{"tid":5,"ts":-22931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":65.75}}, -{"tid":5,"ts":-21931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":75.09}}, -{"tid":5,"ts":-20931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":73.71}}, -{"tid":5,"ts":-19931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":65.75}}, -{"tid":5,"ts":-18931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.39}}, -{"tid":5,"ts":-17931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":114.09}}, -{"tid":5,"ts":-16931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":96.23}}, -{"tid":5,"ts":-15931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.41}}, -{"tid":5,"ts":-14931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.05}}, -{"tid":5,"ts":-13931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.07}}, -{"tid":5,"ts":-12931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.58}}, -{"tid":5,"ts":-11931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.72}}, -{"tid":5,"ts":-10931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.49}}, -{"tid":5,"ts":-9931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.53}}, -{"tid":5,"ts":-8931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.51}}, -{"tid":5,"ts":-7931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.79}}, -{"tid":5,"ts":-6931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.81}}, -{"tid":5,"ts":-5931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":82.71}}, -{"tid":5,"ts":-4931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":80.16}}, -{"tid":5,"ts":-3931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":101.14}}, -{"tid":5,"ts":-2931,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":101.14}}, -{"tid":6,"ts":-30931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-29931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-28931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":6,"ts":-27931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-26931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-25931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":6,"ts":-24931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-23931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":6,"ts":-22931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-21931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":6,"ts":-20931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-19931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, -{"tid":6,"ts":-18931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.64}}, -{"tid":6,"ts":-17931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":56.58}}, -{"tid":6,"ts":-16931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":152.6}}, -{"tid":6,"ts":-15931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.3}}, -{"tid":6,"ts":-14931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":1.76}}, -{"tid":6,"ts":-13931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":6.88}}, -{"tid":6,"ts":-12931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.88}}, -{"tid":6,"ts":-11931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.02}}, -{"tid":6,"ts":-10931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.54}}, -{"tid":6,"ts":-9931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.96}}, -{"tid":6,"ts":-8931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.26}}, -{"tid":6,"ts":-7931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.72}}, -{"tid":6,"ts":-6931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.58}}, -{"tid":6,"ts":-5931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.26}}, -{"tid":6,"ts":-4931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.6}}, -{"tid":6,"ts":-3931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":6,"ts":-2931,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.02}}, -{"tid":7,"ts":-30931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, -{"tid":7,"ts":-29931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, -{"tid":7,"ts":-28931,"pid":0,"ph":"C","name":"await","args":{"await":0.23}}, -{"tid":7,"ts":-27931,"pid":0,"ph":"C","name":"await","args":{"await":0.15}}, -{"tid":7,"ts":-26931,"pid":0,"ph":"C","name":"await","args":{"await":0.33}}, -{"tid":7,"ts":-25931,"pid":0,"ph":"C","name":"await","args":{"await":0.16}}, -{"tid":7,"ts":-24931,"pid":0,"ph":"C","name":"await","args":{"await":0.33}}, -{"tid":7,"ts":-23931,"pid":0,"ph":"C","name":"await","args":{"await":0.22}}, -{"tid":7,"ts":-22931,"pid":0,"ph":"C","name":"await","args":{"await":0.25}}, -{"tid":7,"ts":-21931,"pid":0,"ph":"C","name":"await","args":{"await":0.2}}, -{"tid":7,"ts":-20931,"pid":0,"ph":"C","name":"await","args":{"await":0.21}}, -{"tid":7,"ts":-19931,"pid":0,"ph":"C","name":"await","args":{"await":0.31}}, -{"tid":7,"ts":-18931,"pid":0,"ph":"C","name":"await","args":{"await":0.59}}, -{"tid":7,"ts":-17931,"pid":0,"ph":"C","name":"await","args":{"await":3.65}}, -{"tid":7,"ts":-16931,"pid":0,"ph":"C","name":"await","args":{"await":9.11}}, -{"tid":7,"ts":-15931,"pid":0,"ph":"C","name":"await","args":{"await":0.42}}, -{"tid":7,"ts":-14931,"pid":0,"ph":"C","name":"await","args":{"await":0.35}}, -{"tid":7,"ts":-13931,"pid":0,"ph":"C","name":"await","args":{"await":0.66}}, -{"tid":7,"ts":-12931,"pid":0,"ph":"C","name":"await","args":{"await":0.49}}, -{"tid":7,"ts":-11931,"pid":0,"ph":"C","name":"await","args":{"await":0.43}}, -{"tid":7,"ts":-10931,"pid":0,"ph":"C","name":"await","args":{"await":0.4}}, -{"tid":7,"ts":-9931,"pid":0,"ph":"C","name":"await","args":{"await":0.37}}, -{"tid":7,"ts":-8931,"pid":0,"ph":"C","name":"await","args":{"await":0.37}}, -{"tid":7,"ts":-7931,"pid":0,"ph":"C","name":"await","args":{"await":0.44}}, -{"tid":7,"ts":-6931,"pid":0,"ph":"C","name":"await","args":{"await":0.43}}, -{"tid":7,"ts":-5931,"pid":0,"ph":"C","name":"await","args":{"await":0.38}}, -{"tid":7,"ts":-4931,"pid":0,"ph":"C","name":"await","args":{"await":0.34}}, -{"tid":7,"ts":-3931,"pid":0,"ph":"C","name":"await","args":{"await":0.24}}, -{"tid":7,"ts":-2931,"pid":0,"ph":"C","name":"await","args":{"await":0.29}}, +{"tid":3,"ts":-32621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-31621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-30621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":1}}, +{"tid":3,"ts":-29621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-28621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-27621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":145}}, +{"tid":3,"ts":-26621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":20}}, +{"tid":3,"ts":-25621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":1}}, +{"tid":3,"ts":-24621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-23621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-22621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":3,"ts":-21621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":370,"write":1}}, +{"tid":3,"ts":-20621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":286,"write":0}}, +{"tid":3,"ts":-19621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":361,"write":0}}, +{"tid":3,"ts":-18621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":379,"write":0}}, +{"tid":3,"ts":-17621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":395,"write":0}}, +{"tid":3,"ts":-16621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":481,"write":0}}, +{"tid":3,"ts":-15621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":480,"write":0}}, +{"tid":3,"ts":-14621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":455,"write":0}}, +{"tid":3,"ts":-13621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":369,"write":0}}, +{"tid":3,"ts":-12621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":424,"write":0}}, +{"tid":3,"ts":-11621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":350,"write":0}}, +{"tid":3,"ts":-10621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":422,"write":0}}, +{"tid":3,"ts":-9621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":432,"write":0}}, +{"tid":3,"ts":-8621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":242,"write":0}}, +{"tid":3,"ts":-7621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":93,"write":0}}, +{"tid":3,"ts":-6621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":1}}, +{"tid":3,"ts":-5621,"pid":0,"ph":"C","name":"disk b/w","args":{"read":0,"write":0}}, +{"tid":4,"ts":-32621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-31621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-30621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-29621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-28621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-27621,"pid":0,"ph":"C","name":"disk%","args":{"%util":12.0}}, +{"tid":4,"ts":-26621,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, +{"tid":4,"ts":-25621,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, +{"tid":4,"ts":-24621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-23621,"pid":0,"ph":"C","name":"disk%","args":{"%util":2.0}}, +{"tid":4,"ts":-22621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-21621,"pid":0,"ph":"C","name":"disk%","args":{"%util":46.0}}, +{"tid":4,"ts":-20621,"pid":0,"ph":"C","name":"disk%","args":{"%util":36.0}}, +{"tid":4,"ts":-19621,"pid":0,"ph":"C","name":"disk%","args":{"%util":63.0}}, +{"tid":4,"ts":-18621,"pid":0,"ph":"C","name":"disk%","args":{"%util":68.0}}, +{"tid":4,"ts":-17621,"pid":0,"ph":"C","name":"disk%","args":{"%util":61.0}}, +{"tid":4,"ts":-16621,"pid":0,"ph":"C","name":"disk%","args":{"%util":70.0}}, +{"tid":4,"ts":-15621,"pid":0,"ph":"C","name":"disk%","args":{"%util":62.0}}, +{"tid":4,"ts":-14621,"pid":0,"ph":"C","name":"disk%","args":{"%util":63.0}}, +{"tid":4,"ts":-13621,"pid":0,"ph":"C","name":"disk%","args":{"%util":66.0}}, +{"tid":4,"ts":-12621,"pid":0,"ph":"C","name":"disk%","args":{"%util":71.0}}, +{"tid":4,"ts":-11621,"pid":0,"ph":"C","name":"disk%","args":{"%util":57.0}}, +{"tid":4,"ts":-10621,"pid":0,"ph":"C","name":"disk%","args":{"%util":62.0}}, +{"tid":4,"ts":-9621,"pid":0,"ph":"C","name":"disk%","args":{"%util":66.0}}, +{"tid":4,"ts":-8621,"pid":0,"ph":"C","name":"disk%","args":{"%util":57.0}}, +{"tid":4,"ts":-7621,"pid":0,"ph":"C","name":"disk%","args":{"%util":24.0}}, +{"tid":4,"ts":-6621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":4,"ts":-5621,"pid":0,"ph":"C","name":"disk%","args":{"%util":0.0}}, +{"tid":5,"ts":-32621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":0.0}}, +{"tid":5,"ts":-31621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":0.0}}, +{"tid":5,"ts":-30621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":110.29}}, +{"tid":5,"ts":-29621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":5.6}}, +{"tid":5,"ts":-28621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":0.0}}, +{"tid":5,"ts":-27621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":122.54}}, +{"tid":5,"ts":-26621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":121.44}}, +{"tid":5,"ts":-25621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":81.45}}, +{"tid":5,"ts":-24621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":4.0}}, +{"tid":5,"ts":-23621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":9.33}}, +{"tid":5,"ts":-22621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":0.0}}, +{"tid":5,"ts":-21621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.6}}, +{"tid":5,"ts":-20621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.2}}, +{"tid":5,"ts":-19621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.47}}, +{"tid":5,"ts":-18621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.91}}, +{"tid":5,"ts":-17621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.76}}, +{"tid":5,"ts":-16621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.67}}, +{"tid":5,"ts":-15621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.78}}, +{"tid":5,"ts":-14621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.63}}, +{"tid":5,"ts":-13621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.24}}, +{"tid":5,"ts":-12621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.0}}, +{"tid":5,"ts":-11621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":82.73}}, +{"tid":5,"ts":-10621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":84.27}}, +{"tid":5,"ts":-9621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":83.42}}, +{"tid":5,"ts":-8621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":82.29}}, +{"tid":5,"ts":-7621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":82.07}}, +{"tid":5,"ts":-6621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":122.22}}, +{"tid":5,"ts":-5621,"pid":0,"ph":"C","name":"req size","args":{"avgrq-sz":0.0}}, +{"tid":6,"ts":-32621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-31621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-30621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-29621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-28621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-27621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":1.02}}, +{"tid":6,"ts":-26621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.3}}, +{"tid":6,"ts":-25621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-24621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-23621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-22621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-21621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.9}}, +{"tid":6,"ts":-20621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.22}}, +{"tid":6,"ts":-19621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.6}}, +{"tid":6,"ts":-18621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.12}}, +{"tid":6,"ts":-17621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.62}}, +{"tid":6,"ts":-16621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.32}}, +{"tid":6,"ts":-15621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.4}}, +{"tid":6,"ts":-14621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.86}}, +{"tid":6,"ts":-13621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.7}}, +{"tid":6,"ts":-12621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":4.32}}, +{"tid":6,"ts":-11621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":3.98}}, +{"tid":6,"ts":-10621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.38}}, +{"tid":6,"ts":-9621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":5.08}}, +{"tid":6,"ts":-8621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":2.28}}, +{"tid":6,"ts":-7621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.94}}, +{"tid":6,"ts":-6621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":6,"ts":-5621,"pid":0,"ph":"C","name":"queue size","args":{"avgqu-sz":0.0}}, +{"tid":7,"ts":-32621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, +{"tid":7,"ts":-31621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, +{"tid":7,"ts":-30621,"pid":0,"ph":"C","name":"await","args":{"await":0.21}}, +{"tid":7,"ts":-29621,"pid":0,"ph":"C","name":"await","args":{"await":0.2}}, +{"tid":7,"ts":-28621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, +{"tid":7,"ts":-27621,"pid":0,"ph":"C","name":"await","args":{"await":0.42}}, +{"tid":7,"ts":-26621,"pid":0,"ph":"C","name":"await","args":{"await":0.86}}, +{"tid":7,"ts":-25621,"pid":0,"ph":"C","name":"await","args":{"await":0.23}}, +{"tid":7,"ts":-24621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, +{"tid":7,"ts":-23621,"pid":0,"ph":"C","name":"await","args":{"await":0.1}}, +{"tid":7,"ts":-22621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, +{"tid":7,"ts":-21621,"pid":0,"ph":"C","name":"await","args":{"await":0.54}}, +{"tid":7,"ts":-20621,"pid":0,"ph":"C","name":"await","args":{"await":0.45}}, +{"tid":7,"ts":-19621,"pid":0,"ph":"C","name":"await","args":{"await":0.41}}, +{"tid":7,"ts":-18621,"pid":0,"ph":"C","name":"await","args":{"await":0.45}}, +{"tid":7,"ts":-17621,"pid":0,"ph":"C","name":"await","args":{"await":0.48}}, +{"tid":7,"ts":-16621,"pid":0,"ph":"C","name":"await","args":{"await":0.45}}, +{"tid":7,"ts":-15621,"pid":0,"ph":"C","name":"await","args":{"await":0.46}}, +{"tid":7,"ts":-14621,"pid":0,"ph":"C","name":"await","args":{"await":0.44}}, +{"tid":7,"ts":-13621,"pid":0,"ph":"C","name":"await","args":{"await":0.41}}, +{"tid":7,"ts":-12621,"pid":0,"ph":"C","name":"await","args":{"await":0.42}}, +{"tid":7,"ts":-11621,"pid":0,"ph":"C","name":"await","args":{"await":0.46}}, +{"tid":7,"ts":-10621,"pid":0,"ph":"C","name":"await","args":{"await":0.52}}, +{"tid":7,"ts":-9621,"pid":0,"ph":"C","name":"await","args":{"await":0.48}}, +{"tid":7,"ts":-8621,"pid":0,"ph":"C","name":"await","args":{"await":0.38}}, +{"tid":7,"ts":-7621,"pid":0,"ph":"C","name":"await","args":{"await":0.41}}, +{"tid":7,"ts":-6621,"pid":0,"ph":"C","name":"await","args":{"await":0.22}}, +{"tid":7,"ts":-5621,"pid":0,"ph":"C","name":"await","args":{"await":0.0}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 3, "args": {"sort_index ": 3}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 4, "args": {"sort_index ": 4}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 5, "args": {"sort_index ": 5}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 6, "args": {"sort_index ": 6}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 7, "args": {"sort_index ": 7}}, {"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, -{"tid":1,"ts":-30931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-29931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-28931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-27931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-26931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-25931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-24931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-23931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-22931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-21931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-20931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-19931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":2}}, -{"tid":1,"ts":-18931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-17931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-16931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-15931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-14931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-13931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":3}}, -{"tid":1,"ts":-12931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-11931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-10931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-9931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-8931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-7931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-6931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-5931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-4931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-3931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":1,"ts":-2931,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":3}}, -{"tid":2,"ts":-30931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-29931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-28931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-27931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-26931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-25931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-24931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-23931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-22931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-21931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-20931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-19931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-18931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-17931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-16931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-15931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-14931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-13931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, -{"tid":2,"ts":-12931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-11931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-10931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-9931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-8931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-7931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-6931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-5931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-4931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-3931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, -{"tid":2,"ts":-2931,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":1,"ts":-32621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-31621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-30621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-29621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-28621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-27621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-26621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-25621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-24621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-23621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-22621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-21621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-20621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-19621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-18621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-17621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":0,"buffered":0,"used":8}}, +{"tid":1,"ts":-16621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-15621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-14621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-13621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-12621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-11621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-10621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-9621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-8621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-7621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-6621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":1,"ts":-5621,"pid":0,"ph":"C","name":"mem % ","args":{"cached":1,"buffered":0,"used":8}}, +{"tid":2,"ts":-32621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-31621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-30621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-29621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-28621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-27621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-26621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-25621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-24621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-23621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-22621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-21621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-20621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-19621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-18621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-17621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":0,"dirty":0}}, +{"tid":2,"ts":-16621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-15621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-14621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-13621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-12621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-11621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-10621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-9621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-8621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-7621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-6621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, +{"tid":2,"ts":-5621,"pid":0,"ph":"C","name":"pagecache % ","args":{"clean":1,"dirty":0}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 1, "args": {"sort_index ": 1}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 2, "args": {"sort_index ": 2}}, {"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, -{"tid":10,"ts":-30931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-29931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-28931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-27931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-26931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-25931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-24931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-23931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-22931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-21931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-20931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-19931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-18931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":516,"txmb/s":516}}, -{"tid":10,"ts":-17931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":621,"txmb/s":621}}, -{"tid":10,"ts":-16931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":843,"txmb/s":843}}, -{"tid":10,"ts":-15931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":719,"txmb/s":719}}, -{"tid":10,"ts":-14931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":454,"txmb/s":454}}, -{"tid":10,"ts":-13931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":792,"txmb/s":792}}, -{"tid":10,"ts":-12931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":873,"txmb/s":873}}, -{"tid":10,"ts":-11931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":909,"txmb/s":909}}, -{"tid":10,"ts":-10931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":868,"txmb/s":868}}, -{"tid":10,"ts":-9931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":876,"txmb/s":876}}, -{"tid":10,"ts":-8931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":735,"txmb/s":735}}, -{"tid":10,"ts":-7931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":843,"txmb/s":843}}, -{"tid":10,"ts":-6931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":848,"txmb/s":848}}, -{"tid":10,"ts":-5931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":780,"txmb/s":780}}, -{"tid":10,"ts":-4931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":210,"txmb/s":210}}, -{"tid":10,"ts":-3931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, -{"tid":10,"ts":-2931,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-32621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-31621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-30621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-29621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-28621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-27621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-26621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-25621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-24621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-23621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-22621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-21621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":706,"txmb/s":706}}, +{"tid":10,"ts":-20621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":455,"txmb/s":455}}, +{"tid":10,"ts":-19621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":790,"txmb/s":790}}, +{"tid":10,"ts":-18621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":699,"txmb/s":699}}, +{"tid":10,"ts":-17621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":754,"txmb/s":754}}, +{"tid":10,"ts":-16621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":814,"txmb/s":814}}, +{"tid":10,"ts":-15621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":833,"txmb/s":833}}, +{"tid":10,"ts":-14621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":772,"txmb/s":772}}, +{"tid":10,"ts":-13621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":664,"txmb/s":664}}, +{"tid":10,"ts":-12621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":827,"txmb/s":827}}, +{"tid":10,"ts":-11621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":661,"txmb/s":661}}, +{"tid":10,"ts":-10621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":755,"txmb/s":755}}, +{"tid":10,"ts":-9621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":850,"txmb/s":850}}, +{"tid":10,"ts":-8621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":583,"txmb/s":583}}, +{"tid":10,"ts":-7621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":185,"txmb/s":185}}, +{"tid":10,"ts":-6621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, +{"tid":10,"ts":-5621,"pid":0,"ph":"C","name":"lo ","args":{"rxmb/s":0,"txmb/s":0}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 8, "args": {"sort_index ": 8}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 9, "args": {"sort_index ": 9}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 10, "args": {"sort_index ": 10}}, {"name": "process_name", "ph": "M", "pid": 0, "tid": 0, "args": {"name": " sr217"}}, -{"tid":11,"ts":-30931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-29931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":39}}, -{"tid":11,"ts":-28931,"pid":0,"ph":"C","name":"page inout","args":{"in":2,"out":1}}, -{"tid":11,"ts":-27931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-26931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-25931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, -{"tid":11,"ts":-24931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-23931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, -{"tid":11,"ts":-22931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-21931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, -{"tid":11,"ts":-20931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-19931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":0}}, -{"tid":11,"ts":-18931,"pid":0,"ph":"C","name":"page inout","args":{"in":392,"out":0}}, -{"tid":11,"ts":-17931,"pid":0,"ph":"C","name":"page inout","args":{"in":145,"out":745}}, -{"tid":11,"ts":-16931,"pid":0,"ph":"C","name":"page inout","args":{"in":489,"out":270}}, -{"tid":11,"ts":-15931,"pid":0,"ph":"C","name":"page inout","args":{"in":419,"out":0}}, -{"tid":11,"ts":-14931,"pid":0,"ph":"C","name":"page inout","args":{"in":202,"out":0}}, -{"tid":11,"ts":-13931,"pid":0,"ph":"C","name":"page inout","args":{"in":427,"out":0}}, -{"tid":11,"ts":-12931,"pid":0,"ph":"C","name":"page inout","args":{"in":486,"out":0}}, -{"tid":11,"ts":-11931,"pid":0,"ph":"C","name":"page inout","args":{"in":478,"out":0}}, -{"tid":11,"ts":-10931,"pid":0,"ph":"C","name":"page inout","args":{"in":469,"out":0}}, -{"tid":11,"ts":-9931,"pid":0,"ph":"C","name":"page inout","args":{"in":437,"out":0}}, -{"tid":11,"ts":-8931,"pid":0,"ph":"C","name":"page inout","args":{"in":360,"out":0}}, -{"tid":11,"ts":-7931,"pid":0,"ph":"C","name":"page inout","args":{"in":441,"out":0}}, -{"tid":11,"ts":-6931,"pid":0,"ph":"C","name":"page inout","args":{"in":438,"out":0}}, -{"tid":11,"ts":-5931,"pid":0,"ph":"C","name":"page inout","args":{"in":343,"out":0}}, -{"tid":11,"ts":-4931,"pid":0,"ph":"C","name":"page inout","args":{"in":68,"out":0}}, -{"tid":11,"ts":-3931,"pid":0,"ph":"C","name":"page inout","args":{"in":2,"out":3}}, -{"tid":11,"ts":-2931,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, -{"tid":12,"ts":-30931,"pid":0,"ph":"C","name":"faults","args":{"major":1,"minor":23980}}, -{"tid":12,"ts":-29931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":2538}}, -{"tid":12,"ts":-28931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":61704}}, -{"tid":12,"ts":-27931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":6771}}, -{"tid":12,"ts":-26931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":1435}}, -{"tid":12,"ts":-25931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":15931}}, -{"tid":12,"ts":-24931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":49910}}, -{"tid":12,"ts":-23931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":14816}}, -{"tid":12,"ts":-22931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":50900}}, -{"tid":12,"ts":-21931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":15503}}, -{"tid":12,"ts":-20931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":43315}}, -{"tid":12,"ts":-19931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":484}}, -{"tid":12,"ts":-18931,"pid":0,"ph":"C","name":"faults","args":{"major":1,"minor":153303}}, -{"tid":12,"ts":-17931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":154535}}, -{"tid":12,"ts":-16931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":203874}}, -{"tid":12,"ts":-15931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":190509}}, -{"tid":12,"ts":-14931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":146313}}, -{"tid":12,"ts":-13931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":164929}}, -{"tid":12,"ts":-12931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":215345}}, -{"tid":12,"ts":-11931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":217906}}, -{"tid":12,"ts":-10931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":192812}}, -{"tid":12,"ts":-9931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":209257}}, -{"tid":12,"ts":-8931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":194076}}, -{"tid":12,"ts":-7931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":216745}}, -{"tid":12,"ts":-6931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":206316}}, -{"tid":12,"ts":-5931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":266467}}, -{"tid":12,"ts":-4931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":60599}}, -{"tid":12,"ts":-3931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":41092}}, -{"tid":12,"ts":-2931,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":46108}}, -{"tid":13,"ts":-30931,"pid":0,"ph":"C","name":"page free","args":{"free":73}}, -{"tid":13,"ts":-29931,"pid":0,"ph":"C","name":"page free","args":{"free":2}}, -{"tid":13,"ts":-28931,"pid":0,"ph":"C","name":"page free","args":{"free":45}}, -{"tid":13,"ts":-27931,"pid":0,"ph":"C","name":"page free","args":{"free":5}}, -{"tid":13,"ts":-26931,"pid":0,"ph":"C","name":"page free","args":{"free":5}}, -{"tid":13,"ts":-25931,"pid":0,"ph":"C","name":"page free","args":{"free":29}}, -{"tid":13,"ts":-24931,"pid":0,"ph":"C","name":"page free","args":{"free":50}}, -{"tid":13,"ts":-23931,"pid":0,"ph":"C","name":"page free","args":{"free":6}}, -{"tid":13,"ts":-22931,"pid":0,"ph":"C","name":"page free","args":{"free":20}}, -{"tid":13,"ts":-21931,"pid":0,"ph":"C","name":"page free","args":{"free":29}}, -{"tid":13,"ts":-20931,"pid":0,"ph":"C","name":"page free","args":{"free":23}}, -{"tid":13,"ts":-19931,"pid":0,"ph":"C","name":"page free","args":{"free":13}}, -{"tid":13,"ts":-18931,"pid":0,"ph":"C","name":"page free","args":{"free":64}}, -{"tid":13,"ts":-17931,"pid":0,"ph":"C","name":"page free","args":{"free":340}}, -{"tid":13,"ts":-16931,"pid":0,"ph":"C","name":"page free","args":{"free":529}}, -{"tid":13,"ts":-15931,"pid":0,"ph":"C","name":"page free","args":{"free":695}}, -{"tid":13,"ts":-14931,"pid":0,"ph":"C","name":"page free","args":{"free":592}}, -{"tid":13,"ts":-13931,"pid":0,"ph":"C","name":"page free","args":{"free":491}}, -{"tid":13,"ts":-12931,"pid":0,"ph":"C","name":"page free","args":{"free":619}}, -{"tid":13,"ts":-11931,"pid":0,"ph":"C","name":"page free","args":{"free":675}}, -{"tid":13,"ts":-10931,"pid":0,"ph":"C","name":"page free","args":{"free":694}}, -{"tid":13,"ts":-9931,"pid":0,"ph":"C","name":"page free","args":{"free":710}}, -{"tid":13,"ts":-8931,"pid":0,"ph":"C","name":"page free","args":{"free":660}}, -{"tid":13,"ts":-7931,"pid":0,"ph":"C","name":"page free","args":{"free":639}}, -{"tid":13,"ts":-6931,"pid":0,"ph":"C","name":"page free","args":{"free":642}}, -{"tid":13,"ts":-5931,"pid":0,"ph":"C","name":"page free","args":{"free":692}}, -{"tid":13,"ts":-4931,"pid":0,"ph":"C","name":"page free","args":{"free":332}}, -{"tid":13,"ts":-3931,"pid":0,"ph":"C","name":"page free","args":{"free":20}}, -{"tid":13,"ts":-2931,"pid":0,"ph":"C","name":"page free","args":{"free":71}}, -{"tid":14,"ts":-30931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-29931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-28931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-27931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-26931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-25931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-24931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-23931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-22931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-21931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-20931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-19931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-18931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-17931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-16931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-15931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-14931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-13931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-12931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-11931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-10931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-9931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-8931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-7931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-6931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-5931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-4931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-3931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":14,"ts":-2931,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, -{"tid":15,"ts":-30931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-29931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-28931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-27931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-26931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-25931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-24931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-23931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-22931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-21931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-20931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-19931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-18931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-17931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-16931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-15931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-14931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-13931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-12931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-11931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-10931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-9931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-8931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-7931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-6931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-5931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-4931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-3931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, -{"tid":15,"ts":-2931,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":11,"ts":-32621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-31621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-30621,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":11,"ts":-29621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-28621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-27621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":147}}, +{"tid":11,"ts":-26621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":18}}, +{"tid":11,"ts":-25621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":1}}, +{"tid":11,"ts":-24621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-23621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-22621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":11,"ts":-21621,"pid":0,"ph":"C","name":"page inout","args":{"in":372,"out":1}}, +{"tid":11,"ts":-20621,"pid":0,"ph":"C","name":"page inout","args":{"in":286,"out":0}}, +{"tid":11,"ts":-19621,"pid":0,"ph":"C","name":"page inout","args":{"in":361,"out":0}}, +{"tid":11,"ts":-18621,"pid":0,"ph":"C","name":"page inout","args":{"in":380,"out":0}}, +{"tid":11,"ts":-17621,"pid":0,"ph":"C","name":"page inout","args":{"in":395,"out":0}}, +{"tid":11,"ts":-16621,"pid":0,"ph":"C","name":"page inout","args":{"in":481,"out":0}}, +{"tid":11,"ts":-15621,"pid":0,"ph":"C","name":"page inout","args":{"in":480,"out":0}}, +{"tid":11,"ts":-14621,"pid":0,"ph":"C","name":"page inout","args":{"in":455,"out":0}}, +{"tid":11,"ts":-13621,"pid":0,"ph":"C","name":"page inout","args":{"in":368,"out":0}}, +{"tid":11,"ts":-12621,"pid":0,"ph":"C","name":"page inout","args":{"in":425,"out":0}}, +{"tid":11,"ts":-11621,"pid":0,"ph":"C","name":"page inout","args":{"in":349,"out":0}}, +{"tid":11,"ts":-10621,"pid":0,"ph":"C","name":"page inout","args":{"in":423,"out":4}}, +{"tid":11,"ts":-9621,"pid":0,"ph":"C","name":"page inout","args":{"in":432,"out":0}}, +{"tid":11,"ts":-8621,"pid":0,"ph":"C","name":"page inout","args":{"in":243,"out":0}}, +{"tid":11,"ts":-7621,"pid":0,"ph":"C","name":"page inout","args":{"in":93,"out":0}}, +{"tid":11,"ts":-6621,"pid":0,"ph":"C","name":"page inout","args":{"in":1,"out":1}}, +{"tid":11,"ts":-5621,"pid":0,"ph":"C","name":"page inout","args":{"in":0,"out":0}}, +{"tid":12,"ts":-32621,"pid":0,"ph":"C","name":"faults","args":{"major":2,"minor":33933}}, +{"tid":12,"ts":-31621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":1179}}, +{"tid":12,"ts":-30621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":28787}}, +{"tid":12,"ts":-29621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":36517}}, +{"tid":12,"ts":-28621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":33}}, +{"tid":12,"ts":-27621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":3541}}, +{"tid":12,"ts":-26621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":43671}}, +{"tid":12,"ts":-25621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":31959}}, +{"tid":12,"ts":-24621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":51531}}, +{"tid":12,"ts":-23621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":3219}}, +{"tid":12,"ts":-22621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":17512}}, +{"tid":12,"ts":-21621,"pid":0,"ph":"C","name":"faults","args":{"major":3,"minor":204372}}, +{"tid":12,"ts":-20621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":183095}}, +{"tid":12,"ts":-19621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":185291}}, +{"tid":12,"ts":-18621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":173714}}, +{"tid":12,"ts":-17621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":179721}}, +{"tid":12,"ts":-16621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":200236}}, +{"tid":12,"ts":-15621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":196506}}, +{"tid":12,"ts":-14621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":193349}}, +{"tid":12,"ts":-13621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":175987}}, +{"tid":12,"ts":-12621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":194874}}, +{"tid":12,"ts":-11621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":220312}}, +{"tid":12,"ts":-10621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":196065}}, +{"tid":12,"ts":-9621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":238086}}, +{"tid":12,"ts":-8621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":141636}}, +{"tid":12,"ts":-7621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":52420}}, +{"tid":12,"ts":-6621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":34141}}, +{"tid":12,"ts":-5621,"pid":0,"ph":"C","name":"faults","args":{"major":0,"minor":38677}}, +{"tid":13,"ts":-32621,"pid":0,"ph":"C","name":"page free","args":{"free":103}}, +{"tid":13,"ts":-31621,"pid":0,"ph":"C","name":"page free","args":{"free":5}}, +{"tid":13,"ts":-30621,"pid":0,"ph":"C","name":"page free","args":{"free":24}}, +{"tid":13,"ts":-29621,"pid":0,"ph":"C","name":"page free","args":{"free":22}}, +{"tid":13,"ts":-28621,"pid":0,"ph":"C","name":"page free","args":{"free":0}}, +{"tid":13,"ts":-27621,"pid":0,"ph":"C","name":"page free","args":{"free":3}}, +{"tid":13,"ts":-26621,"pid":0,"ph":"C","name":"page free","args":{"free":19}}, +{"tid":13,"ts":-25621,"pid":0,"ph":"C","name":"page free","args":{"free":20}}, +{"tid":13,"ts":-24621,"pid":0,"ph":"C","name":"page free","args":{"free":17}}, +{"tid":13,"ts":-23621,"pid":0,"ph":"C","name":"page free","args":{"free":4}}, +{"tid":13,"ts":-22621,"pid":0,"ph":"C","name":"page free","args":{"free":16}}, +{"tid":13,"ts":-21621,"pid":0,"ph":"C","name":"page free","args":{"free":125}}, +{"tid":13,"ts":-20621,"pid":0,"ph":"C","name":"page free","args":{"free":577}}, +{"tid":13,"ts":-19621,"pid":0,"ph":"C","name":"page free","args":{"free":455}}, +{"tid":13,"ts":-18621,"pid":0,"ph":"C","name":"page free","args":{"free":600}}, +{"tid":13,"ts":-17621,"pid":0,"ph":"C","name":"page free","args":{"free":610}}, +{"tid":13,"ts":-16621,"pid":0,"ph":"C","name":"page free","args":{"free":615}}, +{"tid":13,"ts":-15621,"pid":0,"ph":"C","name":"page free","args":{"free":664}}, +{"tid":13,"ts":-14621,"pid":0,"ph":"C","name":"page free","args":{"free":681}}, +{"tid":13,"ts":-13621,"pid":0,"ph":"C","name":"page free","args":{"free":693}}, +{"tid":13,"ts":-12621,"pid":0,"ph":"C","name":"page free","args":{"free":591}}, +{"tid":13,"ts":-11621,"pid":0,"ph":"C","name":"page free","args":{"free":724}}, +{"tid":13,"ts":-10621,"pid":0,"ph":"C","name":"page free","args":{"free":550}}, +{"tid":13,"ts":-9621,"pid":0,"ph":"C","name":"page free","args":{"free":676}}, +{"tid":13,"ts":-8621,"pid":0,"ph":"C","name":"page free","args":{"free":608}}, +{"tid":13,"ts":-7621,"pid":0,"ph":"C","name":"page free","args":{"free":238}}, +{"tid":13,"ts":-6621,"pid":0,"ph":"C","name":"page free","args":{"free":16}}, +{"tid":13,"ts":-5621,"pid":0,"ph":"C","name":"page free","args":{"free":72}}, +{"tid":14,"ts":-32621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-31621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-30621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-29621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-28621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-27621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-26621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-25621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-24621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-23621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-22621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-21621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-20621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-19621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-18621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-17621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-16621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-15621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-14621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-13621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-12621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-11621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-10621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-9621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-8621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-7621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-6621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":14,"ts":-5621,"pid":0,"ph":"C","name":"scan","args":{"kernel":0,"app":0}}, +{"tid":15,"ts":-32621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-31621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-30621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-29621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-28621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-27621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-26621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-25621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-24621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-23621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-22621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-21621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-20621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-19621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-18621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-17621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-16621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-15621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-14621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-13621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-12621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-11621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-10621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-9621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-8621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-7621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-6621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, +{"tid":15,"ts":-5621,"pid":0,"ph":"C","name":"vmeff","args":{"steal":0}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 11, "args": {"sort_index ": 11}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 12, "args": {"sort_index ": 12}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 13, "args": {"sort_index ": 13}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 14, "args": {"sort_index ": 14}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 15, "args": {"sort_index ": 15}}, {"name": "thread_sort_index", "ph": "M", "pid": 0, "tid": 16, "args": {"sort_index ": 16}}, +{"name": "process_name", "ph": "M", "pid": 200, "tid": 0, "args": {"name": " sr217"}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-31494,"args":{"cpu%":0.002}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-30993,"args":{"cpu%":0.016}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-30493,"args":{"cpu%":0.109}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-29993,"args":{"cpu%":0.204}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-29492,"args":{"cpu%":0.094}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-28992,"args":{"cpu%":0.041}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-28492,"args":{"cpu%":0.002}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-27991,"args":{"cpu%":0.003}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-27491,"args":{"cpu%":0.002}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-26991,"args":{"cpu%":0.124}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-26490,"args":{"cpu%":0.207}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-25990,"args":{"cpu%":0.118}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-25490,"args":{"cpu%":0.1}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-24989,"args":{"cpu%":0.238}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-24489,"args":{"cpu%":0.11}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-23989,"args":{"cpu%":0.08}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-23488,"args":{"cpu%":0.079}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-22988,"args":{"cpu%":0.024}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-22487,"args":{"cpu%":0.004}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-21987,"args":{"cpu%":0.622}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-21486,"args":{"cpu%":0.743}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-20986,"args":{"cpu%":0.874}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-20483,"args":{"cpu%":0.923}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-19982,"args":{"cpu%":0.766}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-19481,"args":{"cpu%":0.905}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-18981,"args":{"cpu%":0.825}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-18478,"args":{"cpu%":0.879}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-17978,"args":{"cpu%":0.817}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-17478,"args":{"cpu%":0.88}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-16978,"args":{"cpu%":0.918}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-16474,"args":{"cpu%":0.761}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-15970,"args":{"cpu%":0.976}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-15470,"args":{"cpu%":0.778}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-14970,"args":{"cpu%":0.951}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-14470,"args":{"cpu%":0.791}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-13967,"args":{"cpu%":0.871}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-13466,"args":{"cpu%":0.92}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-12962,"args":{"cpu%":0.854}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-12462,"args":{"cpu%":0.901}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-11958,"args":{"cpu%":0.87}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-11458,"args":{"cpu%":0.814}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-10957,"args":{"cpu%":0.763}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-10455,"args":{"cpu%":0.968}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-9955,"args":{"cpu%":0.85}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-9455,"args":{"cpu%":0.808}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-8955,"args":{"cpu%":0.925}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-8454,"args":{"cpu%":0.695}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-7954,"args":{"cpu%":0.271}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-7454,"args":{"cpu%":0.172}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-6954,"args":{"cpu%":0.076}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-6453,"args":{"cpu%":0.165}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-5953,"args":{"cpu%":0.22}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-5453,"args":{"cpu%":0.049}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-4952,"args":{"cpu%":0.039}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-4452,"args":{"cpu%":0.031}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-3952,"args":{"cpu%":0.052}}, +{"tid":0,"pid":200,"ph":"C","name":"emon_cpuutil","ts":-3451,"args":{"cpu%":0.014}}, +{"name": "thread_sort_index", "ph": "M", "pid": 200, "tid": 0, "args": {"sort_index ": 0}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-31494,"args":{"cpu freq":1122.022}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-30993,"args":{"cpu freq":3033.677}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-30493,"args":{"cpu freq":3508.924}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-29993,"args":{"cpu freq":3515.352}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-29492,"args":{"cpu freq":3589.997}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-28992,"args":{"cpu freq":3398.001}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-28492,"args":{"cpu freq":1037.172}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-27991,"args":{"cpu freq":1522.233}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-27491,"args":{"cpu freq":1110.629}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-26991,"args":{"cpu freq":3439.97}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-26490,"args":{"cpu freq":3517.706}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-25990,"args":{"cpu freq":3562.049}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-25490,"args":{"cpu freq":3501.094}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-24989,"args":{"cpu freq":3509.15}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-24489,"args":{"cpu freq":3560.159}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-23989,"args":{"cpu freq":3468.823}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-23488,"args":{"cpu freq":3356.638}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-22988,"args":{"cpu freq":3419.732}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-22487,"args":{"cpu freq":2024.62}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-21987,"args":{"cpu freq":3498.653}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-21486,"args":{"cpu freq":3498.151}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-20986,"args":{"cpu freq":3499.992}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-20483,"args":{"cpu freq":3499.984}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-19982,"args":{"cpu freq":3499.983}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-19481,"args":{"cpu freq":3499.968}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-18981,"args":{"cpu freq":3499.985}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-18478,"args":{"cpu freq":3499.993}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-17978,"args":{"cpu freq":3500.826}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-17478,"args":{"cpu freq":3499.993}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-16978,"args":{"cpu freq":3500.214}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-16474,"args":{"cpu freq":3500.358}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-15970,"args":{"cpu freq":3499.978}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-15470,"args":{"cpu freq":3500.043}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-14970,"args":{"cpu freq":3500.0}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-14470,"args":{"cpu freq":3500.373}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-13967,"args":{"cpu freq":3500.41}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-13466,"args":{"cpu freq":3500.001}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-12962,"args":{"cpu freq":3501.714}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-12462,"args":{"cpu freq":3499.993}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-11958,"args":{"cpu freq":3499.988}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-11458,"args":{"cpu freq":3503.604}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-10957,"args":{"cpu freq":3500.361}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-10455,"args":{"cpu freq":3499.997}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-9955,"args":{"cpu freq":3499.984}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-9455,"args":{"cpu freq":3502.008}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-8955,"args":{"cpu freq":3499.99}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-8454,"args":{"cpu freq":3496.716}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-7954,"args":{"cpu freq":3372.393}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-7454,"args":{"cpu freq":3310.015}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-6954,"args":{"cpu freq":3473.571}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-6453,"args":{"cpu freq":3518.602}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-5953,"args":{"cpu freq":3502.595}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-5453,"args":{"cpu freq":3394.338}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-4952,"args":{"cpu freq":2454.308}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-4452,"args":{"cpu freq":2206.093}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-3952,"args":{"cpu freq":2782.395}}, +{"tid":1,"pid":200,"ph":"C","name":"emon_cpufreq","ts":-3451,"args":{"cpu freq":3144.67}}, +{"name": "thread_sort_index", "ph": "M", "pid": 200, "tid": 1, "args": {"sort_index ": 1}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-31494,"args":{"pathlength":0.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-30993,"args":{"pathlength":1.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-30493,"args":{"pathlength":6.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-29993,"args":{"pathlength":13.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-29492,"args":{"pathlength":6.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-28992,"args":{"pathlength":2.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-28492,"args":{"pathlength":0.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-27991,"args":{"pathlength":0.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-27491,"args":{"pathlength":0.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-26991,"args":{"pathlength":7.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-26490,"args":{"pathlength":13.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-25990,"args":{"pathlength":8.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-25490,"args":{"pathlength":6.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-24989,"args":{"pathlength":14.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-24489,"args":{"pathlength":8.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-23989,"args":{"pathlength":5.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-23488,"args":{"pathlength":4.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-22988,"args":{"pathlength":2.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-22487,"args":{"pathlength":0.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-21987,"args":{"pathlength":30.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-21486,"args":{"pathlength":31.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-20986,"args":{"pathlength":60.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-20483,"args":{"pathlength":68.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-19982,"args":{"pathlength":50.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-19481,"args":{"pathlength":66.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-18981,"args":{"pathlength":57.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-18478,"args":{"pathlength":68.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-17978,"args":{"pathlength":64.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-17478,"args":{"pathlength":66.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-16978,"args":{"pathlength":69.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-16474,"args":{"pathlength":55.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-15970,"args":{"pathlength":79.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-15470,"args":{"pathlength":53.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-14970,"args":{"pathlength":78.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-14470,"args":{"pathlength":60.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-13967,"args":{"pathlength":67.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-13466,"args":{"pathlength":70.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-12962,"args":{"pathlength":63.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-12462,"args":{"pathlength":71.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-11958,"args":{"pathlength":67.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-11458,"args":{"pathlength":71.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-10957,"args":{"pathlength":48.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-10455,"args":{"pathlength":78.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-9955,"args":{"pathlength":58.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-9455,"args":{"pathlength":65.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-8955,"args":{"pathlength":69.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-8454,"args":{"pathlength":54.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-7954,"args":{"pathlength":32.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-7454,"args":{"pathlength":18.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-6954,"args":{"pathlength":5.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-6453,"args":{"pathlength":11.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-5953,"args":{"pathlength":14.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-5453,"args":{"pathlength":3.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-4952,"args":{"pathlength":2.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-4452,"args":{"pathlength":1.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-3952,"args":{"pathlength":3.0}}, +{"tid":2,"pid":200,"ph":"C","name":"emon_instr_retired","ts":-3451,"args":{"pathlength":1.0}}, +{"name": "thread_sort_index", "ph": "M", "pid": 200, "tid": 2, "args": {"sort_index ": 2}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-31494,"args":{"ipc":0.317}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-30993,"args":{"ipc":0.748}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-30493,"args":{"ipc":0.994}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-29993,"args":{"ipc":1.113}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-29492,"args":{"ipc":1.168}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-28992,"args":{"ipc":1.091}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-28492,"args":{"ipc":0.32}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-27991,"args":{"ipc":0.786}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-27491,"args":{"ipc":0.312}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-26991,"args":{"ipc":1.049}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-26490,"args":{"ipc":1.103}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-25990,"args":{"ipc":1.192}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-25490,"args":{"ipc":1.046}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-24989,"args":{"ipc":1.021}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-24489,"args":{"ipc":1.239}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-23989,"args":{"ipc":1.016}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-23488,"args":{"ipc":0.939}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-22988,"args":{"ipc":1.187}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-22487,"args":{"ipc":0.499}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-21987,"args":{"ipc":0.875}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-21486,"args":{"ipc":0.739}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-20986,"args":{"ipc":1.22}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-20483,"args":{"ipc":1.317}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-19982,"args":{"ipc":1.164}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-19481,"args":{"ipc":1.302}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-18981,"args":{"ipc":1.229}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-18478,"args":{"ipc":1.38}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-17978,"args":{"ipc":1.394}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-17478,"args":{"ipc":1.331}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-16978,"args":{"ipc":1.335}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-16474,"args":{"ipc":1.287}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-15970,"args":{"ipc":1.443}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-15470,"args":{"ipc":1.217}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-14970,"args":{"ipc":1.459}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-14470,"args":{"ipc":1.345}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-13967,"args":{"ipc":1.375}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-13466,"args":{"ipc":1.361}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-12962,"args":{"ipc":1.307}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-12462,"args":{"ipc":1.406}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-11958,"args":{"ipc":1.375}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-11458,"args":{"ipc":1.552}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-10957,"args":{"ipc":1.125}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-10455,"args":{"ipc":1.429}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-9955,"args":{"ipc":1.221}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-9455,"args":{"ipc":1.445}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-8955,"args":{"ipc":1.326}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-8454,"args":{"ipc":1.384}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-7954,"args":{"ipc":2.182}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-7454,"args":{"ipc":1.987}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-6954,"args":{"ipc":1.133}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-6453,"args":{"ipc":1.134}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-5953,"args":{"ipc":1.094}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-5453,"args":{"ipc":0.973}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-4952,"args":{"ipc":1.042}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-4452,"args":{"ipc":1.055}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-3952,"args":{"ipc":1.195}}, +{"tid":3,"pid":200,"ph":"C","name":"emon_ipc","ts":-3451,"args":{"ipc":1.375}}, +{"name": "thread_sort_index", "ph": "M", "pid": 200, "tid": 3, "args": {"sort_index ": 3}}, {"name": "process_sort_index", "ph": "M", "pid": 0, "tid": 0, "args": {"sort_index ": 0}}, {"name": "process_sort_index", "ph": "M", "pid": 100, "tid": 0, "args": {"sort_index ": 100}}, {"name": "process_sort_index", "ph": "M", "pid": 200, "tid": 0, "args": {"sort_index ": 200}}, {"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, {"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, -{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, -{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, {"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, -{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, -{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, {"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, {"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, -{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, -{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, {"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, -{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, +{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, {"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, {"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, -{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, -{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, {"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, {"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, +{"name": "process_sort_index", "ph": "M", "pid": 100400, "tid": 0, "args": {"sort_index ": 100400}}, {"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}}, -{"name": "process_sort_index", "ph": "M", "pid": 100600, "tid": 0, "args": {"sort_index ": 100600}}, -{"name": "process_sort_index", "ph": "M", "pid": 100500, "tid": 0, "args": {"sort_index ": 100500}} +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}}, +{"name": "process_sort_index", "ph": "M", "pid": 100300, "tid": 0, "args": {"sort_index ": 100300}} ], "displayTimeUnit": "ns" } \ No newline at end of file diff --git a/tools/workload/benchmark_velox/tpc_workload.ipynb b/tools/workload/benchmark_velox/tpc_workload.ipynb index 15aba310b002..bd08ff2ed534 100644 --- a/tools/workload/benchmark_velox/tpc_workload.ipynb +++ b/tools/workload/benchmark_velox/tpc_workload.ipynb @@ -46,7 +46,7 @@ "\n", "# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable.\n", "# Supported emon events on platform can be verified via `emon -i emon.list`\n", - "emon_list: '/home/sparkuser/ipython/emon_srf.list'\n", + "emon_list: '/home/sparkuser/ipython/emon.list'\n", "\n", "# Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set.\n", "analyze_perf=True\n", From ba953eb675efc63652728524a6c2e58d7d455148 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Fri, 6 Dec 2024 10:13:39 +0000 Subject: [PATCH 09/12] update --- .../benchmark_velox/sample/Trace-viewer.png | Bin 154395 -> 233759 bytes .../sample/trace_result_tpch_q1.json | 1399 +++++++++-------- 2 files changed, 720 insertions(+), 679 deletions(-) diff --git a/tools/workload/benchmark_velox/sample/Trace-viewer.png b/tools/workload/benchmark_velox/sample/Trace-viewer.png index 2e51094774826c038a85605843352b80324fef12..eef24863c9185759d59b2e3524b6b1722f68bb14 100644 GIT binary patch literal 233759 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 h35Se*wwg2G9Ti literal 154395 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 z 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 Date: Tue, 17 Dec 2024 03:36:05 +0000 Subject: [PATCH 10/12] update to support sending email --- .../analysis/perf_analysis_template.ipynb | 44 +++- .../analysis/run_perf_analysis.sh | 84 ++++++-- .../benchmark_velox/analysis/sparklog.ipynb | 188 +++++++++++++++++- .../workload/benchmark_velox/initialize.ipynb | 61 ++---- .../native_sql_initialize.ipynb | 57 +++--- .../benchmark_velox/params.yaml.template | 52 +++-- .../benchmark_velox/tpc_workload.ipynb | 64 +++--- 7 files changed, 399 insertions(+), 151 deletions(-) diff --git a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb index 28f1032b5e21..cf541517b9c9 100644 --- a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb +++ b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb @@ -23,11 +23,18 @@ "tz=''\n", "base_dir=''\n", "name=''\n", + "notebook=''\n", + "notebook_html=''\n", "proxy=''\n", + "emails=''\n", + "pr=''\n", "\n", "comp_appid=''\n", "comp_base_dir=''\n", - "comp_name=''" + "comp_name=''\n", + "\n", + "baseline_appid=''\n", + "baseline_base_dir=''" ] }, { @@ -219,7 +226,7 @@ "metadata": {}, "outputs": [], "source": [ - "appals.get_basic_state()" + "stats=appals.get_basic_state()" ] }, { @@ -240,7 +247,7 @@ }, "outputs": [], "source": [ - "app.generate_trace_view(showemon=True,show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)" + "traceview=app.generate_trace_view(showemon=True,show_metric=emonmetric,disk_prefix=disk_prefix,nic_prefix=nic_prefix)" ] }, { @@ -284,6 +291,18 @@ "appals.show_critical_path_time_breakdown().T" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if emails:\n", + " mail_list=' '.join(emails.split(','))\n", + " body,title=generate_email_body_title(appid, base_dir, name, comp_appid, comp_base_dir, comp_name, baseline_appid, baseline_base_dir, notebook, notebook_html, traceview, stats, summary, pr)\n", + " !mail -a \"Content-type: text/html; charset=utf-8\" -s \"$title\" $mail_list < $body" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -321,6 +340,25 @@ " display(comp_spark_conf(appals, comp_appals))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compare to baseline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if baseline_appid:\n", + " baseline_app=Application_Run(baseline_appid,basedir=baseline_base_dir)\n", + " output=app.compare_app(rapp=baseline_app,show_metric=emonmetric,show_queryplan_diff=False,disk_prefix=disk_prefix,nic_prefix=nic_prefix)\n", + " display(HTML(output))" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh index 23ef530b8cef..5c6cfd9d10c8 100755 --- a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh +++ b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh @@ -22,11 +22,6 @@ PAUS=$HOME/PAUS while [[ $# -gt 0 ]]; do case $1 in - --ts) - TS="$2" - shift # past argument - shift # past value - ;; --base-dir) BASEDIR="$2" shift # past argument @@ -42,6 +37,11 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + --pr) + PR="$2" + shift # past argument + shift # past value + ;; --disk) DISK="$2" shift # past argument @@ -62,6 +62,11 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + --emails) + EMAILS="$2" + shift # past argument + shift # past value + ;; --comp-appid) COMP_APPID="$2" shift # past argument @@ -77,6 +82,16 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + --baseline-appid) + BASELINE_APPID="$2" + shift # past argument + shift # past value + ;; + --baseline-base-dir) + BASELINE_BASEDIR="$2" + shift # past argument + shift # past value + ;; *) echo "Error: Unknown argument: $1" exit 1 @@ -85,7 +100,7 @@ while [[ $# -gt 0 ]]; do done # Validation: Check if any of the required variables are empty -if [[ -z "${TS+x}" || -z "${BASEDIR+x}" || -z "${NAME+x}" || -z "${APPID+x}" || -z "${DISK+x}" || -z "${NIC+x}" || -z "${SPARK_TZ+x}" ]]; then +if [[ -z "${BASEDIR+x}" || -z "${NAME+x}" || -z "${APPID+x}" || -z "${DISK+x}" || -z "${NIC+x}" || -z "${SPARK_TZ+x}" ]]; then echo "Error: One or more required arguments are missing or empty." exit 1 fi @@ -98,16 +113,16 @@ if [ ! -f "$PAUS/sparklog.ipynb" ]; then cp $SCRIPT_LOCATION/sparklog.ipynb $PAUS/ fi -mkdir -p $PAUS/$BASEDIR -cd $PAUS/$BASEDIR -mkdir -p html +workdir=$PAUS/$BASEDIR +mkdir -p $workdir +mkdir -p $workdir/html -nb_name0=${TS}_${NAME}_${APPID} +nb_name0=${NAME}_${APPID} nb_name=${nb_name0}.ipynb -cp -f $PAUS/perf_analysis_template.ipynb $nb_name -hadoop fs -mkdir -p /history -hadoop fs -cp -f /$BASEDIR/$APPID/app.log /history/$APPID +cp -f $PAUS/perf_analysis_template.ipynb $workdir/$nb_name +hdfs dfs -mkdir -p /history +hdfs dfs -ls /history/$APPID >/dev/null 2>&1 || { hdfs dfs -cp /$BASEDIR/$APPID/app.log /history/$APPID || exit 1; } EXTRA_ARGS="" if [ -v COMP_APPID ] @@ -116,18 +131,49 @@ then echo "Missing --comp-base-dir or --comp-name" exit 1 fi - hadoop fs -cp -f /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID - EXTRA_ARGS="--comp_appid $COMP_APPID --comp_base_dir $COMP_BASEDIR --comp_name $COMP_NAME" - sed -i "s/# Compare to/# Compare to $COMP_NAME/g" ${nb_name} + hdfs dfs -ls /history/$COMP_APPID >/dev/null 2>&1 || { hdfs dfs -cp /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID || exit 1; } + EXTRA_ARGS=$EXTRA_ARGS" -r comp_appid $COMP_APPID -r comp_base_dir $COMP_BASEDIR -r comp_name $COMP_NAME" + sed -i "s/# Compare to/# Compare to $COMP_NAME/g" $workdir/$nb_name +fi +if [ -v BASELINE_APPID ] +then + if [[ -z "${BASELINE_BASEDIR+x}" ]]; then + echo "Missing --baseline-base-dir" + exit 1 + fi + hdfs dfs -ls /history/$BASELINE_APPID >/dev/null 2>&1 || { hdfs dfs -cp /$BASELINE_BASEDIR/$BASELINE_APPID/app.log /history/$BASELINE_APPID || exit 1; } + EXTRA_ARGS=$EXTRA_ARGS" -r baseline_appid $BASELINE_APPID -r baseline_base_dir $BASELINE_BASEDIR" +fi + + +if [ -n "${PR}" ] +then + EXTRA_ARGS=$EXTRA_ARGS" -r pr $PR" fi if [ -n "${PROXY}" ] then - EXTRA_ARGS=$EXTRA_ARGS" --proxy $PROXY" + EXTRA_ARGS=$EXTRA_ARGS" -r proxy $PROXY" +fi + +if [ -n "${EMAILS}" ] +then + EXTRA_ARGS=$EXTRA_ARGS" -r emails $EMAILS" fi source ~/paus-env/bin/activate -python3 $SCRIPT_LOCATION/run.py --inputnb $nb_name --outputnb ${nb_name0}.nbconvert.ipynb --appid $APPID --disk $DISK --nic $NIC --tz $SPARK_TZ --base_dir $BASEDIR --name $NAME $EXTRA_ARGS +notebook_html=html/${nb_name0}.html + +papermill --cwd $workdir \ + -r appid $APPID \ + -r disk $DISK \ + -r nic $NIC \ + -r tz $SPARK_TZ \ + -r base_dir $BASEDIR \ + -r name $NAME \ + -r notebook $nb_name \ + -r notebook_html $notebook_html \ + $EXTRA_ARGS $workdir/$nb_name $workdir/$nb_name -jupyter nbconvert --to html --no-input ./${nb_name0}.nbconvert.ipynb --output html/${nb_name0}.html --template classic > /dev/null 2>&1 +jupyter nbconvert --to html --no-input $workdir/$nb_name --output $workdir/$notebook_html --template classic > /dev/null 2>&1 diff --git a/tools/workload/benchmark_velox/analysis/sparklog.ipynb b/tools/workload/benchmark_velox/analysis/sparklog.ipynb index 86165394cd0b..79713c8d1be3 100644 --- a/tools/workload/benchmark_velox/analysis/sparklog.ipynb +++ b/tools/workload/benchmark_velox/analysis/sparklog.ipynb @@ -268,8 +268,9 @@ " with open(outputfolder, 'w') as outfile: \n", " outfile.write(output)\n", " \n", - " display(HTML(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appidx}.json\"))\n", - " " + " traceview_link=f'http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{appidx}.json'\n", + " display(HTML(f\"{traceview_link}\"))\n", + " return traceview_link" ] }, { @@ -5217,9 +5218,11 @@ "\n", " with open('/home/sparkuser/trace_result/'+self.appid+'.json', 'w') as outfile: \n", " outfile.write(output)\n", - "\n", - " display(HTML(f\"http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json\"))\n", " \n", + " traceview_link=f'http://{localhost}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json'\n", + " display(HTML(f\"{traceview_link}\"))\n", + " return traceview_link\n", + "\n", " def getemonmetric(app,**kwargs):\n", " emondfs=get_emon_parquets([app.appid],app.basedir)\n", " emons=Emon_Analysis_All(emondfs)\n", @@ -5749,6 +5752,183 @@ " return pdrst.drop(columns=['rst'])" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cvt_number(n):\n", + " try:\n", + " if str(n).isdigit():\n", + " return f'{n:,}'\n", + " else:\n", + " return f'{round(float(n),2):,}'\n", + " except ValueError:\n", + " return n\n", + "\n", + "def parse_changelog(changelog):\n", + " out=[]\n", + " if fs.exists(changelog):\n", + " with fs.open(changelog) as f:\n", + " for l in f.readlines():\n", + " l = l.decode('ascii')\n", + " if l.startswith(\"commit\"):\n", + " out.append(re.sub(r\"commit +(.+)\",r\"commit \\1\",l))\n", + " elif l.startswith(\"Author\"):\n", + " out.append(re.sub(r\"Author: +([^<]+) <(.+)>\",r\"Author: \\1 <\\2> \",l))\n", + " elif l.startswith(\"Date\"):\n", + " out.append(re.sub(r\"Date: +(\\d\\d\\d\\d-\\d\\d-\\d\\d)\",r\"Author: \\1\",l))\n", + " else:\n", + " out.append(l)\n", + " else:\n", + " out.append(f'{os.path.basename(changelog)} not found!')\n", + " return out\n", + "\n", + "def generate_query_diff(name, comp_name, query_time_file, comp_query_time_file):\n", + " result = []\n", + " if fs.exists(query_time_file) and fs.exists(comp_query_time_file):\n", + " result.append(['query', name, comp_name, 'difference', 'percentage'])\n", + " \n", + " qtimes = {}\n", + " comp_qtimes = {}\n", + " with fs.open(query_time_file) as f:\n", + " qtimes = json.loads(f.read().decode('ascii'))\n", + " with fs.open(comp_query_time_file) as f:\n", + " comp_qtimes = json.loads(f.read().decode('ascii'))\n", + " \n", + " query_ids = sorted(qtimes.keys(), key=lambda x: str(len(x))+x if x[-1] != 'a' and x[-1] != 'b' else str(len(x)-1) + x)\n", + " \n", + " if len(comp_qtimes) != len(qtimes):\n", + " raise Exception('Number of queries mismatch!')\n", + " \n", + " query_ids.append('total')\n", + " qtimes['total'] = sum([float(i) for i in qtimes.values()])\n", + " comp_qtimes['total'] = sum([float(i) for i in comp_qtimes.values()])\n", + " \n", + " for q in query_ids:\n", + " t1 = qtimes.get(q)\n", + " t2 = comp_qtimes.get(q)\n", + " delta = str(\"{:.2f}\".format(float(t2) - float(t1)))\n", + " perc = str(\"{:.2f}\".format((float(t2) / float(t1)) * 100)) + '%'\n", + " result.append([q, str(t1), str(t2), delta, perc])\n", + " return result\n", + "\n", + "def append_summary(appid, base_dir, name, comp_appid, comp_base_dir, comp_name, baseline_appid, baseline_base_dir, statsall, output):\n", + " with open(output,\"a\") as linkfile:\n", + "\n", + " difftable=''' \n", + " '''\n", + " for k,v in statsall.items():\n", + " difftable+=f'''\n", + " \n", + " \n", + " \n", + " '''\n", + " difftable+='''\n", + " \n", + "
{k}{cvt_number(v)}
\\n'''\n", + " linkfile.write(difftable)\n", + " linkfile.write(\"\\n

\\n\")\n", + " \n", + " linkfile.write(\"\\n gluten gitlog in last 2 days
\\n\")\n", + " out=parse_changelog(os.path.join('/', base_dir, appid, 'changelog_gluten'))\n", + " linkfile.write(\"
\".join(out))\n", + " linkfile.write(\"\\n

\\n\")\n", + " \n", + " linkfile.write(\"\\n velox gitlog in last 2 days
\\n\")\n", + " out=parse_changelog(os.path.join('/', base_dir, appid, 'changelog_velox'))\n", + " linkfile.write(\"
\".join(out))\n", + " linkfile.write(\"\\n

\\n\")\n", + " \n", + " linkfile.write('''
\\n''')\n", + " \n", + " def append_query_diff(their_appid, their_base_dir, their_name):\n", + " query_diff=generate_query_diff(name, their_name, os.path.join('/', base_dir, appid, 'query_time.json'), os.path.join('/', their_base_dir, their_appid, 'query_time.json'))\n", + " if query_diff:\n", + " difftable='''\n", + " \n", + " '''\n", + " for l in query_diff:\n", + " difftable+='''\n", + " '''\n", + " base=0\n", + " pr=0\n", + " if re.match(r\"[0-9.]+\",l[1]):\n", + " base=float(l[1])\n", + " l[1]=\"{:.2f}\".format(base)\n", + " if re.match(r\"[0-9.]+\",l[2]):\n", + " pr=float(l[2])\n", + " l[2]=\"{:.2f}\".format(pr)\n", + "\n", + " for d in l:\n", + " color='#000000'\n", + " if base > pr:\n", + " color='#6F9915'\n", + " elif base < pr:\n", + " color='#F92663'\n", + " difftable += f'''\n", + " '''\n", + "\n", + " difftable+='''\n", + " '''\n", + "\n", + " difftable+='''\n", + " \n", + "
{d}
'''\n", + " linkfile.write(difftable)\n", + " linkfile.write(\"\\n

\\n\")\n", + " # return percentage\n", + " return query_diff[-1][-1]\n", + " return ''\n", + "\n", + " baseline_perc = ''\n", + " if comp_appid:\n", + " append_query_diff(comp_appid, comp_base_dir, comp_name)\n", + " if baseline_appid:\n", + " baseline_perc = append_query_diff(baseline_appid, baseline_base_dir, 'Vanilla Spark')\n", + "\n", + " linkfile.write(\"
\")\n", + " \n", + " return baseline_perc" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_email_body_title(appid, base_dir, name, comp_appid, comp_base_dir, comp_name, baseline_appid, baseline_base_dir, notebook, notebook_html, traceview, stats, summary, pr=''):\n", + " statsall=collections.OrderedDict()\n", + " for k,v in stats.items():\n", + " statsall[k]=v\n", + " for k,v in summary.to_dict()[appals.appid].items():\n", + " statsall[k]=v\n", + " \n", + " pr_link=''\n", + " if pr:\n", + " pr_link=f'https://github.com/apche/incubator-gluten/pull/{pr}'\n", + " title=!wget --quiet -O - $pr_link | sed -n -e 's!.*\\(.*\\).*!\\1!p'\n", + " pr_link=f'pr link: {title[0]}
'\n", + " \n", + " output=f'/tmp/{appid}.html'\n", + " with open(output, 'w+') as f:\n", + " f.writelines(f'''\n", + "\n", + "history event: http://{local_ip}:18080/tmp/sparkEventLog/{appid}/jobs/
\n", + "notebook: http://{local_ip}:8889/notebooks/{base_dir}/{notebook}
\n", + "notebook html: http://{local_ip}:8889/view/{base_dir}/{notebook_html}
\n", + "traceview: {traceview}
\n", + "{pr_link}\n", + "

''')\n", + " baseline_perc = append_summary(appid, base_dir, name, comp_appid, comp_base_dir, comp_name, baseline_appid, baseline_base_dir, statsall, output)\n", + " \n", + " title_prefix = f\"[ {datetime.now().strftime('%m_%d_%Y')} ]\" if not pr else f\"[ PR {pr} ]\"\n", + " title = f'{title_prefix} {name} {appid} {baseline_perc}'\n", + " return output,title" + ] + }, { "cell_type": "markdown", "metadata": { diff --git a/tools/workload/benchmark_velox/initialize.ipynb b/tools/workload/benchmark_velox/initialize.ipynb index 968f2dbe5534..f7962c90017f 100644 --- a/tools/workload/benchmark_velox/initialize.ipynb +++ b/tools/workload/benchmark_velox/initialize.ipynb @@ -23,7 +23,7 @@ "```bash\n", "apt update\n", "\n", - "apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex linux-tools-common linux-tools-generic linux-tools-`uname -r`\n", + "apt install -y sudo locales wget tar tzdata git ccache cmake ninja-build build-essential llvm-11-dev clang-11 libiberty-dev libdwarf-dev libre2-dev libz-dev libssl-dev libboost-all-dev libcurl4-openssl-dev openjdk-8-jdk maven vim pip sysstat gcc-9 libjemalloc-dev nvme-cli curl zip unzip bison flex linux-tools-common linux-tools-generic linux-tools-`uname -r` mailutils\n", "\n", "python3 -m pip install notebook==6.5.2\n", "python3 -m pip install jupyter_server==1.23.4\n", @@ -2182,35 +2182,8 @@ }, "outputs": [], "source": [ - "!sudo docker pull apache/gluten:vcpkg-centos-7" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [ - "import os\n", - "http_proxy=os.getenv('http_proxy')\n", - "https_proxy=os.getenv('https_proxy')\n", - "\n", - "container=!sudo docker run -e http_proxy={http_proxy} -e https_proxy={https_proxy} -itd apache/gluten:vcpkg-centos-7\n", - "containerid = container[0]\n", - "containerid" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hidden": true - }, - "outputs": [], - "source": [ - "!sudo docker exec {containerid} bash -c \"cd /opt && git clone https://github.com/apache/incubator-gluten.git gluten\"" + "%cd ~\n", + "!git clone https://github.com/apache/incubator-gluten.git gluten" ] }, { @@ -2221,7 +2194,7 @@ }, "outputs": [], "source": [ - "!sudo docker exec {containerid} bash -c \"cd /opt && source /opt/rh/devtoolset-9/enable && cd gluten && ./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --enable_hdfs=ON > build.log\"" + "!sudo docker pull apache/gluten:vcpkg-centos-7" ] }, { @@ -2232,10 +2205,7 @@ }, "outputs": [], "source": [ - "import os\n", - "if os.path.exists(f'/home/{user}/.m2/settings.xml'):\n", - " !sudo docker exec {containerid} bash -c \"mkdir -p ~/.m2\"\n", - " !sudo docker cp /home/{user}/.m2/settings.xml {containerid}:/root/.m2/settings.xml" + "%cd ~/gluten" ] }, { @@ -2246,7 +2216,9 @@ }, "outputs": [], "source": [ - "!sudo docker exec {containerid} bash -c \"cd /opt/gluten && mvn clean package -DskipTests -Pspark-3.3 -Pbackends-velox\"" + "!sed -i 's/3.2//' ./dev/buildbundle-veloxbe.sh\n", + "!sed -i 's/3.4//' ./dev/buildbundle-veloxbe.sh\n", + "!sed -i 's/3.5//' ./dev/buildbundle-veloxbe.sh" ] }, { @@ -2257,7 +2229,16 @@ }, "outputs": [], "source": [ - "!sudo docker cp {containerid}:/opt/gluten/package/target/gluten-velox-bundle-spark3.3_2.12-centos_7_x86_64-1.3.0-SNAPSHOT.jar ~/" + "!sudo docker run --rm \\\n", + " -v /home/{user}/gluten:/root/gluten \\\n", + " -v /home/{user}/.cache/vcpkg:/root/.cache/vcpkg \\\n", + " -v /home/{user}/.m2:/root/.m2 \\\n", + " -v /home/{user}/.ccache:/root/.ccache \\\n", + " -e http_proxy \\\n", + " -e https_proxy \\\n", + " --workdir /root/gluten \\\n", + " apache/gluten:vcpkg-centos-7 \\\n", + " ./dev/package-vcpkg.sh" ] }, { @@ -2268,8 +2249,8 @@ }, "outputs": [], "source": [ - "for l in clients:\n", - " !scp ~/gluten-velox-bundle-spark3.3_2.12-centos_7_x86_64-1.3.0-SNAPSHOT.jar {l}:~/" + "for l in hclients:\n", + " !scp ~/gluten/package/target/gluten-velox-bundle-spark3.3*.jar {l}:~/" ] }, { @@ -2879,6 +2860,7 @@ { "cell_type": "markdown", "metadata": { + "heading_collapsed": true, "hidden": true }, "source": [ @@ -2964,6 +2946,7 @@ { "cell_type": "markdown", "metadata": { + "heading_collapsed": true, "hidden": true }, "source": [ diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index d3cf1f9ca984..b3e369a91979 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -287,6 +287,7 @@ "import socket\n", "import os\n", "import sys\n", + "import json\n", "\n", "def upload_profile(server, base_dir, appid):\n", " local_profile_dir = os.path.join(home, 'profile')\n", @@ -377,9 +378,8 @@ " !ssh $hbm_l \"while :; do echo \\$(numactl -H | grep '$hbm_numa_nodes' | grep 'size' | awk '{ print \\$4 }' | awk '{ s += \\$1 } END { print s }'), \\$(numactl -H | grep '$hbm_numa_nodes' | grep 'free' | awk '{ print \\$4 }' | awk '{ s += \\$1 } END { print s }') | ts '%Y-%m-%d %H:%M:%S,' >> $hbm_prof/$hbm_l/numactl.csv; sleep 1; done >/dev/null 2>&1 &\"\n", " else:\n", " print(\"Missing argument: hbm_nodes. e.g. hbm_nodes = list(range(8,16))\")\n", - " return prof\n", "\n", - "def stopmonitor(clients, sc, appid, collect_emon, **kwargs):\n", + "def stopmonitor(clients, sc, appid, result, collect_emon, **kwargs):\n", " %cd ~\n", " \n", " local_profile_dir=os.path.join(home, 'profile')\n", @@ -402,9 +402,15 @@ " \n", " if sc is not None:\n", " sc.stop()\n", - "\n", + " \n", + " !git --git-dir=\"{gluten_home}/.git\" log --format=\"commit %H%nAuthor: %an <%ae>%nDate: %cs%n %n %s %n\" --since=`date --date='2 days ago' +'%m/%d/%Y'` > {prof}/changelog_gluten\n", + " !git --git-dir=\"{gluten_home}/ep/build-velox/build/velox_ep/.git\" log --format=\"commit %H%nAuthor: %an <%ae>%nDate: %cs%n %n %s %n\" --since=`date --date='2 days ago' +'%m/%d/%Y'` > {prof}/changelog_velox\n", + " \n", " with open(f\"{prof}/starttime\",\"w\") as f:\n", " f.write(\"{:d}\".format(int(time.time()*1000)))\n", + " \n", + " with open(f'{prof}/query_time.json', 'w') as f:\n", + " json.dump(result, f)\n", "\n", " if hdfs_event_dir != '':\n", " !hadoop fs -copyToLocal {hdfs_event_dir}/{appid} {prof}/app.log\n", @@ -798,6 +804,7 @@ " self.spark = spark\n", " self.sc = spark.sparkSession.sparkContext\n", " self.appid = self.sc.applicationId\n", + " self.app_name = self.sc.appName\n", " self.run_gluten = run_gluten\n", " self.workload = workload\n", " self.table_dir = table_dir\n", @@ -826,30 +833,28 @@ " def stop_monitor(self, clients, **kw):\n", " if self.stopped:\n", " return\n", - " stopmonitor(clients, self.sc, self.appid, self.collect_emon, **kw)\n", + " stopmonitor(clients, self.sc, self.appid, self.result, self.collect_emon, **kw)\n", + "\n", " if self.server:\n", " output_nb = f'{self.nb_name[:-6]}-{self.appid}.ipynb'\n", " if output_nb.startswith(cwd):\n", " output_nb = os.path.relpath(output_nb, home)\n", " self.finished_nb = f\"http://{localhost}:8888/tree/{output_nb}\"\n", + " upload_profile(self.server, self.base_dir, self.appid)\n", + "\n", " self.stopped = True\n", "\n", - " def run_perf_analysis(self, disk_dev, nic_dev, proxy, comp_appid, comp_base_dir, comp_name):\n", + " def run_perf_analysis(self, disk_dev, nic_dev, proxy, emails):\n", " if not self.server:\n", " return\n", "\n", - " upload_profile(self.server, self.base_dir, self.appid)\n", - "\n", - " ts=time.strftime(\"%Y_%m_%d_%H%M%S\")\n", - " name=f'{self.workload}_gluten' if self.run_gluten else f'{self.workload}_vanilla'\n", " run_script=f'{gluten_home}/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh'\n", " \n", " disk=','.join(disk_dev)\n", " nic=','.join(nic_dev)\n", "\n", - " command =' '.join(['bash', run_script, '--ts', ts, '--base-dir', self.base_dir, '--name', name, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\"])\n", - " if comp_appid:\n", - " command += f' --comp-appid {comp_appid} --comp-base-dir {comp_base_dir} --comp-name {comp_name}'\n", + " appname='_'.join(self.app_name.split(' '))\n", + " command =' '.join(['bash', run_script, '--base-dir', self.base_dir, '--name', appname, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\", '--emails', ','.join(emails) if emails else \"''\"])\n", " print(command)\n", "\n", " # Block if running on local cluster.\n", @@ -858,7 +863,7 @@ " else:\n", " !ssh {self.server} \"{command} > /dev/null 2>&1 &\"\n", "\n", - " self.perf_html=f'http://{self.server}:8889/view/{self.base_dir}/html/{ts}_{name}_{self.appid}.html'\n", + " self.perf_html=f'http://{self.server}:8889/view/{self.base_dir}/html/{appname}_{self.appid}.html'\n", " display(HTML(f'{self.perf_html}'))\n", " \n", " def load_table(self, table):\n", @@ -1026,7 +1031,7 @@ " if run_gluten:\n", " offheap_ratio = gluten_offheap_ratio\n", " else:\n", - " offheap_ratio = vanilla_offheap_ratio\n", + " offheap_ratio = spark_offheap_ratio\n", " driver_memory = convert_to_bytes('20g')\n", " executor_memory_overhead = convert_to_bytes('1g')\n", " \n", @@ -1154,7 +1159,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Vanilla Spark" + "## Spark" ] }, { @@ -1163,10 +1168,10 @@ "metadata": {}, "outputs": [], "source": [ - "def vanilla_tpch_conf_overwrite(conf):\n", + "def spark_tpch_conf_overwrite(conf):\n", " return conf\n", "\n", - "def vanilla_tpcds_conf_overwrite(conf):\n", + "def spark_tpcds_conf_overwrite(conf):\n", " conf.set('spark.sql.optimizer.runtime.bloomFilter.applicationSideScanSizeThreshold', '0')\\\n", " .set('spark.sql.optimizer.runtime.bloomFilter.enabled', 'true')\n", " return conf" @@ -1178,7 +1183,7 @@ "metadata": {}, "outputs": [], "source": [ - "def create_cntx_vanilla(executors_per_node, cores_per_executor, task_per_core, memory_per_node, extra_jars, app_name='', master='yarn', conf_overwrite=None):\n", + "def create_cntx_spark(executors_per_node, cores_per_executor, task_per_core, memory_per_node, extra_jars, app_name='', master='yarn', conf_overwrite=None):\n", " conf = default_conf(executors_per_node, cores_per_executor, task_per_core, memory_per_node, extra_jars, app_name, master, run_gluten=False)\n", " conf.set(\"spark.sql.execution.arrow.maxRecordsPerBatch\",20480)\\\n", " .set(\"spark.sql.parquet.columnarReaderBatchSize\",20480)\\\n", @@ -1257,12 +1262,12 @@ "\n", " if workload.lower() == 'tpch':\n", " if not app_name:\n", - " app_name = 'tpch_power'\n", + " app_name = f\"tpch_spark{''.join(spark_version.split('.'))}\"\n", " tabledir = tpch_tabledir\n", " is_tpch_workload=True\n", " elif workload.lower() == 'tpcds':\n", " if not app_name:\n", - " app_name = 'tpcds_power'\n", + " app_name = f\"tpcds_spark{''.join(spark_version.split('.'))}\"\n", " tabledir = tpcds_tabledir\n", " is_tpcds_workload=True\n", " else:\n", @@ -1304,14 +1309,14 @@ " task_per_core = gluten_tpcds_task_per_core\n", " workload_conf_overwrite = gluten_tpcds_conf_overwrite\n", " else:\n", - " app_name = ' '.join(['vanilla', app_name, lastgit[:6]])\n", - " create_cntx_func=create_cntx_vanilla\n", + " app_name = ' '.join(['spark', app_name, lastgit[:6]])\n", + " create_cntx_func=create_cntx_spark\n", " if is_tpch_workload:\n", - " task_per_core = vanilla_tpch_task_per_core\n", - " workload_conf_overwrite = vanilla_tpch_conf_overwrite\n", + " task_per_core = spark_tpch_task_per_core\n", + " workload_conf_overwrite = spark_tpch_conf_overwrite\n", " elif is_tpcds_workload:\n", - " task_per_core = vanilla_tpcds_task_per_core\n", - " workload_conf_overwrite = vanilla_tpcds_conf_overwrite\n", + " task_per_core = spark_tpcds_task_per_core\n", + " workload_conf_overwrite = spark_tpcds_conf_overwrite\n", " \n", " conf_overwrite = lambda conf: app_conf_overwrite(workload_conf_overwrite(conf))\n", " \n", diff --git a/tools/workload/benchmark_velox/params.yaml.template b/tools/workload/benchmark_velox/params.yaml.template index bdb604cfef97..73e02b728f7b 100644 --- a/tools/workload/benchmark_velox/params.yaml.template +++ b/tools/workload/benchmark_velox/params.yaml.template @@ -20,31 +20,10 @@ disk_dev: nic_dev: - ens787f0 -# Hostname or IP to server for perf analysis. Able to connect via ssh. -server: '' - -# Specify the directory on perf analysis server. Usually a codename for this run. -base_dir: emr - -# Proxy used to connect to server for perf analysis. -proxy: '' - -# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable. -# Supported emon events on platform can be verified via `emon -i emon.list` -emon_list: /home/sparkuser/ipython/emon.list - -# Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set. -analyze_perf: True - -# Specify app info to compare for perf analysis -comp_appid: '' -comp_base_dir: '' -comp_name: '' - # Select workload. Can be either 'tpch' or 'tpcds'. workload: tpch -# Run with gluten. If False, run vanilla Spark. +# Run with gluten. If False, run Spark. run_gluten: True # TPC tables @@ -57,20 +36,20 @@ cores_per_executor: 8 gluten_tpch_task_per_core: 2 gluten_tpcds_task_per_core: 2 -vanilla_tpch_task_per_core: 4 -vanilla_tpcds_task_per_core: 4 +spark_tpch_task_per_core: 4 +spark_tpcds_task_per_core: 4 # Physical memory on each worker node. memory_per_node: 1000g -# Offheap ratio. 0 to disable offheap for vanilla Spark. +# Offheap ratio. 0 to disable offheap for Spark. # onheap:offheap = 1:2 -vanilla_offheap_ratio: 2.0 +spark_offheap_ratio: 2.0 # onheap:offheap = 1:7 gluten_offheap_ratio: 7.0 # spark.io.compression.codec -vanilla_codec: lz4 +spark_codec: lz4 # spark.gluten.sql.columnar.shuffle.codec gluten_codec: lz4 # spark.gluten.sql.columnar.shuffle.codecBackend @@ -78,3 +57,22 @@ gluten_codec_backend: '' # spark.gluten.sql.columnar.maxBatchSize max_batch_size: 4096 +# Hostname or IP to server for perf analysis. Able to connect via ssh. +server: '' + +# Specify the directory on perf analysis server. Usually a codename for this run. +base_dir: test + +# Proxy used to connect to server for perf analysis. +proxy: '' + +# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable. +# Supported emon events on platform can be verified via `emon -i emon.list` +emon_list: /home/sparkuser/ipython/emon.list + +# Whether to run perf analysis scripts. Only takes effect if server is set. +analyze_perf: True + +# List of email to receive perf analysis results. +emails: + - diff --git a/tools/workload/benchmark_velox/tpc_workload.ipynb b/tools/workload/benchmark_velox/tpc_workload.ipynb index bd08ff2ed534..c0232d1d52f6 100644 --- a/tools/workload/benchmark_velox/tpc_workload.ipynb +++ b/tools/workload/benchmark_velox/tpc_workload.ipynb @@ -35,31 +35,10 @@ "# List of network devices. e.g. ['ens787f0']\n", "nic_dev=[]\n", "\n", - "# Hostname or IP to server for perf analysis. Able to connect via ssh.\n", - "server=''\n", - "\n", - "# Specify the directory on perf analysis server. Usually a codename for this run.\n", - "base_dir=''\n", - "\n", - "# Proxy used to connect to server for perf analysis.\n", - "proxy=''\n", - "\n", - "# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable.\n", - "# Supported emon events on platform can be verified via `emon -i emon.list`\n", - "emon_list: '/home/sparkuser/ipython/emon.list'\n", - "\n", - "# Whether to upload profile to perf analysis server and run perf analysis scripts. Only takes effect if server is set.\n", - "analyze_perf=True\n", - "\n", - "# Specify app info to compare for perf analysis\n", - "comp_appid: ''\n", - "comp_base_dir: ''\n", - "comp_name: ''\n", - "\n", "# Select workload. Can be either 'tpch' or 'tpcds'.\n", "workload='tpch'\n", "\n", - "# Run with gluten. If False, run vanilla Spark.\n", + "# Run with gluten. If False, run Spark.\n", "run_gluten=True\n", "\n", "# TPC tables\n", @@ -68,30 +47,49 @@ "\n", "# Parallelism\n", "executors_per_node=32\n", - "cores_per_executor=8\n", + "cores_per_executor=7\n", "\n", "gluten_tpch_task_per_core=2\n", "gluten_tpcds_task_per_core=4\n", - "vanilla_tpch_task_per_core=8\n", - "vanilla_tpcds_task_per_core=8\n", + "spark_tpch_task_per_core=8\n", + "spark_tpcds_task_per_core=8\n", "\n", "# Physical memory on each worker node.\n", "memory_per_node='1000g'\n", "\n", - "# Offheap ratio. 0 to disable offheap for vanilla Spark.\n", + "# Offheap ratio. 0 to disable offheap for Spark.\n", "# onheap:offheap = 1:2\n", - "vanilla_offheap_ratio=2.0\n", + "spark_offheap_ratio=2.0\n", "# onheap:offheap = 1:7\n", "gluten_offheap_ratio=7.0\n", "\n", "# spark.io.compression.codec\n", - "vanilla_codec='lz4'\n", + "spark_codec='lz4'\n", "# spark.gluten.sql.columnar.shuffle.codec\n", "gluten_codec='lz4'\n", "# spark.gluten.sql.columnar.shuffle.codecBackend\n", "gluten_codec_backend=''\n", "# spark.gluten.sql.columnar.maxBatchSize\n", - "max_batch_size=4096" + "max_batch_size=4096\n", + "\n", + "# Hostname or IP to server for perf analysis. Able to connect via ssh.\n", + "server=''\n", + "\n", + "# Specify the directory on perf analysis server. Usually a codename for this run.\n", + "base_dir=''\n", + "\n", + "# Proxy used to connect to server for perf analysis.\n", + "proxy=''\n", + "\n", + "# Emon event file for `emon -i`. Set to emptry string '' if emon is unavailable.\n", + "# Supported emon events on platform can be verified via `emon -i emon.list`\n", + "emon_list=''\n", + "\n", + "# Whether to run perf analysis scripts. Only takes effect if server is set.\n", + "analyze_perf=False\n", + "\n", + "# List of email to receive perf analysis results.\n", + "emails = []" ] }, { @@ -185,8 +183,8 @@ " pass\n", " return conf\n", "\n", - "def vanilla_conf_overwrite(conf):\n", - " conf.set('spark.io.compression.codec', vanilla_codec)\\\n", + "def spark_conf_overwrite(conf):\n", + " conf.set('spark.io.compression.codec', spark_codec)\\\n", " .set('spark.executorEnv.LD_LIBRARY_PATH',f\"{os.getenv('HADOOP_HOME')}/lib/native/\") \\\n", " .set('spark.yarn.appMasterEnv.LD_LIBRARY_PATH',f\"{os.getenv('HADOOP_HOME')}/lib/native/\") \\\n", "\n", @@ -199,7 +197,7 @@ "def app_conf_overwrite(conf):\n", " if run_gluten:\n", " return gluten_conf_overwrite(conf)\n", - " return vanilla_conf_overwrite(conf)" + " return spark_conf_overwrite(conf)" ] }, { @@ -275,7 +273,7 @@ "outputs": [], "source": [ "if analyze_perf:\n", - " test_tpc.run_perf_analysis(disk_dev, nic_dev, proxy, comp_appid, comp_base_dir, comp_name)" + " test_tpc.run_perf_analysis(disk_dev, nic_dev, proxy, emails)" ] }, { From 8a52634155f4cb90b0752b2dd70098de94bf0730 Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Tue, 17 Dec 2024 14:39:27 +0000 Subject: [PATCH 11/12] remove unused --- .../workload/benchmark_velox/analysis/run.py | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 tools/workload/benchmark_velox/analysis/run.py diff --git a/tools/workload/benchmark_velox/analysis/run.py b/tools/workload/benchmark_velox/analysis/run.py deleted file mode 100644 index 7dedb1210201..000000000000 --- a/tools/workload/benchmark_velox/analysis/run.py +++ /dev/null @@ -1,26 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import fire -import papermill as pm - -def exec(inputnb, outputnb, appid, disk, nic, tz, base_dir, name, comp_appid='', comp_base_dir='', comp_name='', proxy=''): - return pm.execute_notebook( - inputnb, - outputnb, - parameters=dict(appid=appid,disk=disk,nic=nic,tz=tz,base_dir=base_dir,name=name,comp_appid=comp_appid,comp_base_dir=comp_base_dir,comp_name=comp_name,proxy=proxy)) - -if __name__ == '__main__': - fire.Fire(exec) From 4a38a7a5fb3bc61eaab2a2962ffd19cf6e08883c Mon Sep 17 00:00:00 2001 From: Rong Ma Date: Wed, 18 Dec 2024 13:03:39 +0000 Subject: [PATCH 12/12] add records file for comparison --- .../analysis/perf_analysis_template.ipynb | 96 ++++++------------- .../analysis/run_perf_analysis.sh | 3 +- .../native_sql_initialize.ipynb | 87 ++++++++++++++--- 3 files changed, 102 insertions(+), 84 deletions(-) diff --git a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb index cf541517b9c9..c750e2a44fc0 100644 --- a/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb +++ b/tools/workload/benchmark_velox/analysis/perf_analysis_template.ipynb @@ -1,12 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parameters" - ] - }, { "cell_type": "code", "execution_count": null, @@ -37,21 +30,19 @@ "baseline_base_dir=''" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# start analysis cluster and run" - ] - }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "import findspark\n", - "findspark.init()" + "%%html\n", + "" ] }, { @@ -60,25 +51,30 @@ "metadata": {}, "outputs": [], "source": [ - "import os\n", - "def get_py4jzip():\n", - " spark_home=os.environ['SPARK_HOME']\n", - " py4jzip = !ls {spark_home}/python/lib/py4j*.zip\n", - " return py4jzip[0]" + "import warnings\n", + "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "code_folding": [] - }, + "metadata": {}, "outputs": [], "source": [ - "from pyspark import SparkConf, SparkContext\n", - "from pyspark.sql import SQLContext\n", + "import findspark\n", + "findspark.init()\n", + "\n", + "import os\n", "import time\n", "import sys\n", + "from pyspark import SparkConf, SparkContext\n", + "from pyspark.sql import SQLContext\n", + "\n", + "def get_py4jzip():\n", + " spark_home=os.environ['SPARK_HOME']\n", + " py4jzip = !ls {spark_home}/python/lib/py4j*.zip\n", + " return py4jzip[0]\n", + "\n", "conf = (SparkConf()\n", " .set('spark.app.name', f'perf_analysis_{appid}')\n", " .set('spark.serializer','org.apache.spark.serializer.KryoSerializer')\n", @@ -108,28 +104,6 @@ "time.sleep(10)" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%html\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Sparklog" - ] - }, { "cell_type": "code", "execution_count": null, @@ -163,16 +137,6 @@ " 'emon_ipc']" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import warnings\n", - "warnings.filterwarnings('ignore')" - ] - }, { "cell_type": "code", "execution_count": null, @@ -183,13 +147,6 @@ "nic_prefix=[f\"'{dev}'\" for dev in nic.split(',')]" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Content" - ] - }, { "cell_type": "code", "execution_count": null, @@ -198,16 +155,17 @@ }, "outputs": [], "source": [ - "display(HTML(' 5 Self app info'))\n", - "display(HTML(f\" 6 Compare to {comp_name}\"))\n", - "display(HTML(' 7 Config compare'))" + "display(HTML(' 1 App info'))\n", + "display(HTML(f\" 2 Compare to {comp_name}\"))\n", + "display(HTML(' 3 Config compare'))\n", + "display(HTML(' 4 Compare to baseline'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Self app info" + "# App info" ] }, { diff --git a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh index 5c6cfd9d10c8..af30250d4812 100755 --- a/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh +++ b/tools/workload/benchmark_velox/analysis/run_perf_analysis.sh @@ -120,6 +120,7 @@ mkdir -p $workdir/html nb_name0=${NAME}_${APPID} nb_name=${nb_name0}.ipynb +# Upload eventlog cp -f $PAUS/perf_analysis_template.ipynb $workdir/$nb_name hdfs dfs -mkdir -p /history hdfs dfs -ls /history/$APPID >/dev/null 2>&1 || { hdfs dfs -cp /$BASEDIR/$APPID/app.log /history/$APPID || exit 1; } @@ -133,7 +134,7 @@ then fi hdfs dfs -ls /history/$COMP_APPID >/dev/null 2>&1 || { hdfs dfs -cp /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID || exit 1; } EXTRA_ARGS=$EXTRA_ARGS" -r comp_appid $COMP_APPID -r comp_base_dir $COMP_BASEDIR -r comp_name $COMP_NAME" - sed -i "s/# Compare to/# Compare to $COMP_NAME/g" $workdir/$nb_name + sed -i "s/# Compare to\"/# Compare to $COMP_NAME\"/g" $workdir/$nb_name fi if [ -v BASELINE_APPID ] then diff --git a/tools/workload/benchmark_velox/native_sql_initialize.ipynb b/tools/workload/benchmark_velox/native_sql_initialize.ipynb index b3e369a91979..0772232d70c9 100644 --- a/tools/workload/benchmark_velox/native_sql_initialize.ipynb +++ b/tools/workload/benchmark_velox/native_sql_initialize.ipynb @@ -251,7 +251,7 @@ "import spylon_kernel\n", "from collections import namedtuple\n", "from concurrent.futures import ThreadPoolExecutor\n", - "from datetime import date\n", + "from datetime import date, datetime\n", "from functools import reduce\n", "from IPython.display import display, HTML\n", "from matplotlib import rcParams\n", @@ -766,6 +766,32 @@ " return etc_gmt" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_last_run(records_file, appid=''):\n", + " if os.path.exists(records_file):\n", + " if appid:\n", + " lines=!tail -n2 $records_file\n", + " if len(lines) == 2:\n", + " # Check appid match\n", + " last_appid = lines[1].split('\\t')[1]\n", + " if last_appid != appid:\n", + " print(f'appid not match. Required {appid}. Got {last_appid}')\n", + " else:\n", + " l=lines[0].split('\\t')\n", + " return l[1],l[2],l[3]\n", + " else:\n", + " lines=!tail -n1 $records_file\n", + " if len(lines) == 1:\n", + " l=lines[0].split('\\t')\n", + " return l[1],l[2],l[3]\n", + " return None, None, None" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -800,11 +826,16 @@ " tpctables=[]\n", " tpc_query_path = ''\n", " \n", + " RECORDS_SPARK_TPCH = f\"records_spark_tpch.csv\"\n", + " RECORDS_SPARK_TPCDS = f\"records_spark_tpcds.csv\"\n", + " RECORDS_GLUTEN_TPCH = f\"records_gluten_tpch.csv\"\n", + " RECORDS_GLUTEN_TPCDS = f\"records_gluten_tpcds.csv\"\n", + " \n", " def __init__(self, spark, table_dir, run_gluten, workload, server, base_dir, nb_name, data_source = 'parquet'):\n", " self.spark = spark\n", " self.sc = spark.sparkSession.sparkContext\n", " self.appid = self.sc.applicationId\n", - " self.app_name = self.sc.appName\n", + " self.app_name = '_'.join(self.sc.appName.split(' '))\n", " self.run_gluten = run_gluten\n", " self.workload = workload\n", " self.table_dir = table_dir\n", @@ -814,6 +845,7 @@ " self.data_source = data_source\n", " self.table_loaded = False\n", " self.result = {}\n", + " self.duration = 0\n", " self.stopped = False\n", " self.collect_emon = False\n", " self.perf_html = ''\n", @@ -835,13 +867,29 @@ " return\n", " stopmonitor(clients, self.sc, self.appid, self.result, self.collect_emon, **kw)\n", "\n", + " output_nb = f'{self.nb_name[:-6]}-{self.appid}.ipynb'\n", + " \n", + " record_file = ''\n", + " if self.workload == 'tpch':\n", + " if self.run_gluten:\n", + " record_file = self.RECORDS_GLUTEN_TPCH\n", + " else:\n", + " record_file = self.RECORDS_SPARK_TPCH\n", + " else:\n", + " if self.run_gluten:\n", + " record_file = self.RECORDS_GLUTEN_TPCDS\n", + " else:\n", + " record_file = self.RECORDS_SPARK_TPCDS\n", + " record_file = os.path.join(cwd, record_file)\n", + " with open(record_file, 'a+') as f:\n", + " f.write(f'{datetime.now()}\\t{self.appid}\\t{self.base_dir}\\t{self.app_name}\\t{output_nb}\\t{self.duration}')\n", + "\n", " if self.server:\n", - " output_nb = f'{self.nb_name[:-6]}-{self.appid}.ipynb'\n", " if output_nb.startswith(cwd):\n", - " output_nb = os.path.relpath(output_nb, home)\n", + " output_nb = os.path.relpath(output_nb, cwd)\n", " self.finished_nb = f\"http://{localhost}:8888/tree/{output_nb}\"\n", " upload_profile(self.server, self.base_dir, self.appid)\n", - "\n", + " \n", " self.stopped = True\n", "\n", " def run_perf_analysis(self, disk_dev, nic_dev, proxy, emails):\n", @@ -853,8 +901,21 @@ " disk=','.join(disk_dev)\n", " nic=','.join(nic_dev)\n", "\n", - " appname='_'.join(self.app_name.split(' '))\n", - " command =' '.join(['bash', run_script, '--base-dir', self.base_dir, '--name', appname, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\", '--emails', ','.join(emails) if emails else \"''\"])\n", + " command =' '.join(['bash', run_script, '--base-dir', self.base_dir, '--name', self.app_name, '--appid', self.appid, '--disk', disk, '--nic', nic, '--tz', convert_to_etc_gmt(), '--proxy', proxy if proxy != '' else \"''\", '--emails', ','.join(emails) if emails else \"''\"])\n", + " \n", + " if self.run_gluten:\n", + " if self.workload == 'tpch':\n", + " comp_file = os.path.join(cwd, self.RECORDS_GLUTEN_TPCH)\n", + " baseline_file = os.path.join(cwd, self.RECORDS_SPARK_TPCH)\n", + " else:\n", + " comp_file = os.path.join(cwd, self.RECORDS_GLUTEN_TPCDS)\n", + " baseline_file = os.path.join(cwd, self.RECORDS_SPARK_TPCDS)\n", + " comp_appid, comp_base_dir, comp_name = get_last_run(comp_file, self.appid)\n", + " if comp_appid:\n", + " command += ' '.join(['', '--comp-appid', comp_appid, '--comp-base-dir', comp_base_dir, '--comp-name', comp_name])\n", + " baseline_appid, baseline_base_dir, _ = get_last_run(baseline_file, '')\n", + " if baseline_appid:\n", + " command += ' '.join(['', '--baseline-appid', baseline_appid, '--baseline-base-dir', baseline_base_dir])\n", " print(command)\n", "\n", " # Block if running on local cluster.\n", @@ -863,7 +924,7 @@ " else:\n", " !ssh {self.server} \"{command} > /dev/null 2>&1 &\"\n", "\n", - " self.perf_html=f'http://{self.server}:8889/view/{self.base_dir}/html/{appname}_{self.appid}.html'\n", + " self.perf_html=f'http://{self.server}:8889/view/{self.base_dir}/html/{self.app_name}_{self.appid}.html'\n", " display(HTML(f'{self.perf_html}'))\n", " \n", " def load_table(self, table):\n", @@ -902,6 +963,7 @@ " display(HTML(('Completed Query. Time(sec): {:f}'.format(duration))))\n", " \n", " self.result[query] = duration\n", + " self.duration += float(duration)\n", " if print_result:\n", " print(collect)\n", "\n", @@ -914,18 +976,15 @@ " def print_result(self):\n", " print(self.result)\n", " print()\n", - " durations = [float(i) for i in self.result.values()]\n", - " print(\"total duration:\")\n", - " print(sum(durations))\n", - " print()\n", + " print(f\"total duration:\\n{self.duration}\\n\")\n", " if self.server:\n", " print(self.finished_nb)\n", " print(f\"http://{self.server}:1088/tracing_examples/trace_viewer.html#/tracing/test_data/{self.appid}.json\")\n", " print(f\"http://{self.server}:18080/history/{self.appid}\")\n", " print(self.perf_html)\n", " print(self.appid)\n", - " for i in durations:\n", - " print(i)\n", + " for t in self.result.values():\n", + " print(t)\n", " \n", "class TestTPCH(TestTPC):\n", " tpctables = ['customer', 'lineitem', 'nation', 'orders', 'part', 'partsupp', 'region', 'supplier']\n",