Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

PAT

Performance Analysis Tool (PAT) is a flexible performance profiling framework designed for Linux operating system. It gathers system level performance metrics including CPU, Disk and Network as well as detailed software hot methods. It generates a pdf and a Microsoft Excel file at the end to provide an instant visual representation of the data. PAT can be configured for a single machine, a subset of a cluster or an entire cluster of machines. User also can customize the metrics being collected. PAT can be used for workload characterization, performance study and software optimization.

Figure 1: CPU chart


Figure 2: Disk chart


Figure 3: Network chart


Figure 4: Perf module

Requirements

  • Python version 3.8 or higher
  • Ansible version 2.11.0 or higher
  • Ansible Galaxy role and collections
ansible-galaxy install zyluo.pat
ansible-galaxy collection install ansible.posix
ansible-galaxy collection install community.general

Role Variables

NameDefault ValueDescription
WORKER_SCRIPT_DIR/tmp/PATFolder where PAT scripts are stored on the worker (absolute path)
WORKER_TMP_DIR/tmp/PAT_TMPFolder where PAT data will be stored on the worker (absolute path)
CMD_SCRIPTsleep 30Replace this value with either the path to a script or the actual command line that launches the job.
PRE_EXEC_DELAY0Delays before running the job, while the system is monitored
POST_EXEC_DELAY0Delays after running the job, while the system is monitored
SAMPLE_RATE1Interval to collect metric from the system under test in seconds, please set this number to 3-5 seconds to avoid data overload for long running jobs
INSTRUMENTScpustat memstat netstat iostat vmstat jvms perfList of instruments to be used in the analysis. Available instruments: cpustat memstat netstat iostat vmstat jvms perf

Example Playbook

  • Create playbook directory
mkdir PAT
cd PAT
  • Configure PAT variables in site.yml playbook
---
- name: Monitor system performance and usage activity for all hostshosts: allvars_files:
- ~/.ansible/roles/zyluo.pat/vars/config.ymlroles:
- role: zyluo.patvars:
SAMPLE_RATE: 3INSTRUMENTS: "cpustat memstat"CMD_PATH: sleep 30
  • List worker nodes in a inventory file. Find other parameters to customize your ssh connection in the official document
hostname01hostname02hostname03[all:vars]ansible_ssh_user=usernameansible_ssh_private_key_file=/path/to/private_key
  • Run playbook
ansible-playbook -i inventory site.yml
  • Once the job is done, all the data is collected and copied to the results directory, under the [JOB_ID] folder.

License

BSD 3-clause License

Author Information

For questions regardng tool contact

Appendix

A. ARCHITECTURE OVERVIEW:

  • Collecting data phase is run completely on the server.
  • In postprocess phase modular approach is being used to increase scalability.
  • Each node in the cluster is mapped to a node object.
  • The node object holds separate objects for each of the metrics (such as DISK, NETWORK, CPU, PERF) that were measured using PAT. These objects contain actual raw data in an internal data structure [Figure 5].
  • Modules for DISK, NETWORK, CPU and PERF have been implemented.

Figure 5: PAT Post-Processing architecture

B. TROUBLESHOOTING ISSUES:

/usr/lib64/python2.7/site-packages/matplotlib/init.py:1005: UserWarning: This call to matplotlib.use() has no effect because the the backend has already been chosen; matplotlib.use() must be called before pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.

pip install --upgrade numpy scipy matplotlib will upgrade Python libraries and solve the error

C. CONFIGURATION:

config.xml is the file where you make all postprocess configuration changes. Below instructions are dedicated to that file.

  • Before you modify anything in configuration file, make sure your data are stored in directories (each data node in separate directory). Most likely your data are in a format of <hostname>:<port>
  • Make changes in config.xml file that suit your needs. Between the tag <source></source> specify the path to the directory that contains PAT data. By default it is a directory where your <hostname>:<port> data are located (for most cases this will be an instruments directory in your PAT-RESULT folder. In this case the path will be of the form /foo/bar/instruments/).
  • You may eliminate node(s) if you do not want to do any calculations on that node(s). To do that between the tag <exclude-node></exclude-node> specify the name of the node(s) that you want to discard. The exclude-node entry should match the value under 'hostname' in files within the node-name directory. This node will be excluded while computing averages across all nodes. Otherwise further actions are not required. If you wish to do calculations on all nodes then leave everything in default settings.
  • You are also able to turn on or off detailed graphs and averaged graphs by modifying the config.xml file. By default only averaged graphs will be printed and excel file will contain all 4 metric outputs.
  • During runtime a different config.xml file can be given as a command line argument to the pat-post-process script. It will override the default config.xml file.

D. OUTPUT:

  • Postprocess data will be located at the same path that was entered in the tag <source></source>. Copy the entire results directory to a Windows machine, navigate to the instruments directory and then open the provided spreadsheet. In Excel 2010 and above press Ctrl+q to launch the macros that will import all the data, draw tables and plot graphs.
  • Output can be customized by editing the config.xml file. The pdf and excel contains only the data specified in the config.xml file.
  • The output consists of 2 files – a pdf file that gives a visual representation of data, and an excel file that contains RAW data along with macros to draw the relevant charts.

About

Performance Analysis Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages