diff --git a/11.0/analytics.md b/11.0/analytics.md
new file mode 100644
index 00000000..80fc81f4
--- /dev/null
+++ b/11.0/analytics.md
@@ -0,0 +1,123 @@
+---
+title: Customizing Help Text for Efficiency Analytics
+---
+
+This document describes how to customize the help text displayed when viewing the analytics in the Efficiency Tab and remove any analytics that are not pertinent to your center.
+These instructions are intended for a system administrator of an Open XDMoD instance. Information about the use of the efficiency tab can be found in the user manual which is available from the "Help" menu on the top right of the XDMoD portal.
+## Efficiency Analytics
+
+The efficiency analytics are shown when you first navigate to the efficiency tab. With each analytic,
+there is associated text explaining what the analytic is, what is considered inefficient in regard to the analytic, and
+supporting text giving suggestions of how to improve efficiency regarding a specific analytic.
+
+As of the 10.0 release, there are six analytics. These are CPU Usage, GPU Usage, Memory Usage, Homogeneity, Wall Time Accuracy, and Short Jobs. When you first navigate to the efficiency tab, you will see cards each representing an analytic. Each card includes a brief description of the analytic as well as a scatter plot that allows you to visualize how users rank in each analytic (see Figure 1 below).
+
+
+
+Upon clicking on one of the analytic cards, a user will be shown a larger view of the scatter plot that they can interact with by filtering or drilling down. In this view, more text is presented to give more information about the specific analytic and how efficiency may be improved for that analytic. Figure 2 below shows this view for CPU Usage. In this image, you can see the help text at the top of the image above the scatter plot. The associated help text shown in this view can be customized as needed for different centers.
+
+
+
+You may want to customize this text to provide more focused feedback for users at your center or provide links to help text as appropriate. To do so, please follow the directions provided below.
+
+**These instructions only apply to Open XDMoD 10.0. For later versions please refer to the documentation for that release.**
+
+To customize text for an analytic you need to edit the `/etc/xdmod/efficiency_analytics.json` configuration file. For example, to edit the help text for the CPU Usage scatter plot you would edit the html that is under "documentation" in lines 28-37. To edit the help text for the CPU Usage histogram, you would edit the html that is under "histogramHelpText" in lines 46-55. The lines to edit for each are shown below.
+```json
+28 "documentation": [
+39 "
",
+30 "
What is this analytic?
",
+31 "
The chart below shows the percentage of time that the CPU cores were idle compared to overall usage. Each point on the plot shows the data for the jobs for a particular user.
",
+32 "
Why is this analytic important?
",
+33 "
Making sure jobs use the right number of CPU cores helps ensure that the compute resources are used efficiently.
",
+34 "
How do I improve future jobs?
",
+35 "
For typical compute intensive jobs, the overall CPU usage should be > 90 % (i.e. CPU core idle < 10 %). Consider requesting fewer CPU cores for future jobs, or adjust the configuration settings of the software to make use of all the cores that have been requested.
The chart below shows the percentage of time that the CPU cores were idle compared to overall usage.
",
+50 "
Why is this analytic important?
",
+51 "
Making sure jobs use the right number of CPU cores helps ensure that the compute resources are used efficiently.
",
+52 "
How do I improve future jobs?
",
+53 "
For typical compute intensive jobs, the overall CPU usage should be > 90 % (i.e. CPU core idle < 10 %). Consider requesting fewer CPU cores for future jobs, or adjust the configuration settings of the software to make use of all the cores that have been requested.
",
+54 "
"
+55 ]
+```
+
+For editing help text for other analytics, the process is the same, but you need to change the "documentation" that corresponds to that specific analytic. Not all analytics include alternative help text for the histogram view. If you want to include this text, add in the histogramHelpText section under the histogram json for the analytic that you are interested in changing. If you want to exclude this text, remove the histogramHelpText section from the histogram json for that specific analytic.
+
+In addition to editing the help text, you can also remove an analytic if it is not pertinent to your center. To do this, you need to remove the analytic from the `/etc/xdmod/efficiency_analytics.json` configuration file. For example, to remove GPU Usage from showing in the XDMoD interface, you would remove lines 58-109 from this file. The lines to remove are shown below.
+
+**As of Open XDMoD 11.0, the histogram configuration setting `rotate` is deprecated. Please update any custom analytic configurations you may have.**
+
+```json
+58 {
+59 "analytic": "GPU Usage",
+60 "description": "How busy were the GPU cores for GPU jobs?",
+61 "title": "GPU Usage",
+62 "field": "avg_percent_gpu_active",
+63 "statistics": [
+64 "avg_percent_gpu_active",
+65 "gpu_time"
+66 ],
+67 "statisticLabels": [
+68 "Avg GPU % Active: Weighted by GPU Hour",
+69 "GPU Hours: Total"
+70 ],
+71 "statisticDescription": [
+72 "
Avg GPU active: weighted by gpu-hour: The average GPU usage % weighted by gpu hours, over all jobs that were executing.
GPU Hours: Total The total GPU time in hours for all jobs that were executing during the time period. The GPU time is calculated as the number of allocated GPU devices multiplied by the wall time of the job.
The chart below shows the percentage of time that the GPUs were busy compared to overall usage. Each point on the plot shows the GPU jobs for a particular user.
"
+84 "
Why is this analytic important?
",
+85 "
Making sure jobs use the right number of GPUs helps ensure that the compute resources are used efficiently.
",
+86 "
How do I improve future jobs?
",
+87 "
Try to ensure that the number of GPUs requested matches the number required. If a code is not using all GPUs adjust the configuration settings of the software to make use of all the requested GPUs or consider requesting fewer GPUs in future jobs. If you have jobs with 0% GPU usage, double check that the code is compiled correctly to make use of the GPUs and is not defaulting to CPU-only calculations.
The chart below shows the percentage of time that the GPUs were busy compared to overall usage.
",
+102 "
Why is this analytic important?
",
+103 "
Making sure jobs use the right number of GPUs helps ensure that the compute resources are used efficiently.
",
+104 "
How do I improve future jobs?
",
+105 "
Try to ensure that the number of GPUs requested matches the number required. If a code is not using all GPUs adjust the configuration settings of the software to make use of all the requested GPUs or consider requesting fewer GPUs in future jobs. If you have jobs with 0% GPU usage, double check that the code is compiled correctly to make use of the GPUs and is not defaulting to CPU-only calculations.
",
+106 "
"
+107 ]
+108 }
+109 },
+```
+
+Figure 3 below shows an example of what the updated efficiency tab interface would look like if you were to remove GPU Usage.
+
+
diff --git a/11.0/customization.md b/11.0/customization.md
new file mode 100644
index 00000000..779f0010
--- /dev/null
+++ b/11.0/customization.md
@@ -0,0 +1,219 @@
+---
+title: Customization
+---
+
+This document describes some advanced customizations for the Job Performance module.
+
+**The automated upgrade scripts do not have any support for preserving
+customizations. Any changes made to the underlying Open XDMoD source code
+will likely be overwritten when the software is upgraded.**
+
+## Job Analytics
+
+The job analytics panel shows selected job performance metrics in color
+coded plots across the top of the job tab in the Job Viewer. The value of
+each metric in the panel is normalized so a value near 1 means a favourable
+value and a value near 0 indicates an unfavourable value.
+
+There are five default analytics. These are the CPU Usage,
+Homogeneity, CPU Balance, Memory Efficiency, and Walltime Accuracy, see Figure 1
+below. If the CPU Usage metric is unavailable then the analytics toolbar is not displayed.
+If any of the other metrics are unavailable then an error message is displayed.
+
+
+
+A common reason why an analytic is unavailable is that the underlying data was not collected
+when the job was running. For example, the homogeneity analytic uses the L1D load count and
+CPU clock tick counter hardware counter data. If the hardware counter data were not configured
+to be collected or the hardware does not support a L1D load counter then the homogeneity
+metric will be unavailable. An example of the display in this case is shown in Figure 2.
+
+
+
+If an analytic will always be unavailable (for example, due to the absence of
+hardware support), then the Open XDMoD instance can be customized to never show it.
+
+**This customization will not be preserved if the Open XDMoD software is updated.**
+
+**These instructions only apply to Open XDMoD {{ page.sw_version }}. For other
+versions please refer to the documentation for that release.**
+
+To remove an analytic you need to edit `/usr/share/xdmod/etl/js/config/supremm/etl.schema.js`
+and remove the code associated with the analytic. For example to remove the homogeneity
+analytic you would remove (or comment out) lines 2716–2732. The lines to remove are shown below.
+```js
+2716 homogeneity: {
+2717 name: 'Homogeneity',
+2718 formula: '(1.0 - (1.0 / (1.0 + 1000.0 * jf.catastrophe)))',
+2719 withError: {
+2720 name: 'homogeneity_error',
+2721 column: 'catastrophe',
+2722 tableAlias: 'je'
+2723 },
+2724 unit: 'ratio',
+2725 per: 'job',
+2726 visibility: 'public',
+2727 comments: 'A measure of how uniform the L1D load rate is over the lifetime of the job. ' +
+2728 'Jobs with a low homogeneity value (~0) should be investigated to check if there ' +
+2729 'has been a catastrophic failure during the job',
+2730 batchExport: true,
+2731 dtype: 'analysis'
+2732 },
+```
+
+After editing the file, run:
+```
+# node /usr/share/xdmod/etl/js/etl.cli.js -i
+```
+
+To change the order in which the analytics appear in the toolbar, edit the
+`metricOrder` variable in `/usr/share/xdmod/html/gui/js/modules/job_viewer/JobPanel.js`.
+
+## Application Identification
+
+The Application dimension in the SUPREMM realm allows filtering and grouping
+by the community software application that was run by each job. In the default
+configuration, the software application is inferred at job ingest time by
+comparing the paths to the executables with a list of known community applications.
+
+This list of applications is maintained in the `share` directory (whose location depends on how you installed XDMoD, e.g., `/usr/share/xdmod`, `/opt/xdmod/share`) under `etl/js/config/supremm/application.json`.
+The `application.json` file contains an ordered list of community applications and
+a corresponding set of regular expressions that are tested against the
+executable (i.e., the executable path with the leading directory components removed). If an executable matches, then the job is assigned the corresponding
+application. The applications are processed in the order they appear in the file, and the match with the highest
+priority (i.e., that appears first in the file) is used. If no match is found, then the application is assigned
+to 'uncategorized'. If no executable path information is available, then the
+application is assigned 'NA'.
+
+An example entry in the file is shown below:
+
+```json
+ {
+ "name": "gransim",
+ "license_type": "permissive",
+ "science_area": "Biology",
+ "url": "http://malthus.micro.med.umich.edu/lab/",
+ "execmatch": [
+ "^gr$",
+ "^gr-co$",
+ "^gr-co-[0-9]{4}$",
+ "^gr-[0-9]{4}-[23]d-co$"
+ ]
+ }
+```
+
+In this example the 'gransim' application has four different regular expressions
+that are tested against the executable.
+
+| Field | Type | Description |
+| ----- | ---- | ----------- |
+| `name` | [String] | The name of the application — this must be unique. |
+| `license_type` | `permissive` \| `proprietary` | Information about the software license. If the software has a license that restricts publishing of performance data, then set this field to proprietary; otherwise, permissive should be used. The application names for proprietary licensed code do not appear in the XDMoD portal. |
+| `science_area` | [String] | The science area of the application. This information is stored in the XDMoD data warehouse, but is not displayed in the portal. |
+| `url` | [String] | The website of the application. This information is stored in the XDMoD data warehouse, but is not displayed in the portal. It is intended to assist developers in disambiguating software applications that have similar names. |
+| `execmatch` | OPTIONAL LIST | Optional list of regular expressions that will be checked against the executable (i.e., the executable path with the leading directory components removed). |
+| `pathmatch` | OPTIONAL LIST | Optional list of regular expressions that will be checked against the executable path. |
+| `hints` | deprecated | Deprecated, do not use. |
+
+
+### Customizing the application lookup
+
+#### Modifying regular expressions
+
+The `execmatch` and/or `pathmatch` fields in the application mapping are
+read and processed at ingest time (when the job data is loaded from mongodb
+into the XDMoD data warehouse). The application lookup regular expressions
+can be edited to suit your environment. Edits to the regular expressions
+will impact jobs that are ingested after the file is changed and will
+not change the data for jobs that are already loaded into XDMoD.
+
+#### Adding new applications
+
+New application definitions should be added at the end of the file. Once
+the new definition has been added, then the database dimension tables
+must be updated as follows (Note: depending on how you installed XDMoD, `/usr/share/xdmod` should be replaced with `/opt/xdmod/share` or the correct path to the `share` directory, and `/etc/xdmod` should be replaced with `/opt/xdmod/etc` or the correct path to the `etc` directory).
+
+First update the SQL definition file for the application tables:
+```
+# cd /usr/share/xdmod/etl/js
+# node etl.cli.js -o > /etc/xdmod/etl/etl_sql.d/supremm/application.sql
+```
+Then use the `mysql` command line client to update the database with the new table contents:
+```
+# mysql < /etc/xdmod/etl/etl_sql.d/supremm/application.sql
+```
+The new application definitions will impact jobs that are ingested after the file
+is changed and will not change the data for jobs that are already loaded into XDMoD.
+
+#### Updating application category for existing jobs
+
+If you want to back-populate the data for jobs that were previously ingested into
+XDMoD then you can either (1) reset the database and re-ingest all jobs, or (2) you can
+ run an SQL update statement to update the application for existing jobs.
+Running an SQL update statement will typically be faster.
+
+Instructions for resetting and re-ingesting data are in [Section 4 of the data
+mapping extending guide](extending.md#4-re-ingest-data-into-xdmod).
+
+Instructions for running the SQL update statement are below. **Always make sure to create a backup of the SQL database before running
+SQL updates.**
+
+For example, if you had updated the `application.json` with the following 'new'
+application:
+```json
+ {
+ "name": "NEXMD",
+ "license_type": "permissive",
+ "science_area": "Molecular Dynamics",
+ "url": "https://github.com/lanl/NEXMD",
+ "execmatch": [
+ "^nexmd.exe$"
+ ]
+ }
+```
+You could use the following SQL statements to update historical jobs
+that were previously uncategorized and had an executable of `nexmd.exe`:
+
+```sql
+LOCK TABLES `modw_supremm`.`application` AS a READ, `modw_supremm`.`job` AS j WRITE, `modw_supremm`.`executable` AS e WRITE;
+
+UPDATE `modw_supremm`.`job` j, `modw_supremm`.`executable` e, `modw_supremm`.`application` a
+SET j.`application_id` = a.`id`, e.`application_id` = a.`id`
+WHERE j.`executable_id` = e.`id` AND e.`application_id` = 0
+ AND e.`binary` = 'nexmd.exe' AND a.`name` = 'NEXMD';
+
+UNLOCK TABLES;
+```
+If you have an application regex that matches the executable path (`pathmatch`), then
+the SQL `WHERE` condition should use the `e.exec` column.
+
+After updating the tables, run the `aggregate_supremm.sh` script to reaggregate the data. The script will automatically detect which time periods need to be
+reaggregated. The amount of time the script will take to run depends on the number of time periods
+that need to be reaggregated. It is recommended to run the script in a `screen` or `tmux` session and
+to include the `-d` debug flag so that you can monitor the progress:
+```
+# aggregate_supremm.sh -d
+```
+
+### Notes
+
+Don't remove any existing entries from `application.json` — it will cause the database primary
+keys to change and necessitate a complete deletion and reingestion of
+all data. If there is an existing job entry that you don't want to match,
+then remove the regular expression definitions that cause
+the false positive matches (if no regular expressions are defined
+then the application will never be matched).
+
+If you do edit `application.json`, you will need to re-apply those edits every time
+you upgrade the XDMoD software. When it comes time to upgrade:
+1. Back up your edits to `application.json`.
+1. Install the new version of XDMoD but don't run `xdmod-upgrade` yet.
+1. Re-apply your edits to `application.json`, but make sure any applications you previously added appear *before* any new applications that were added by the installation. Otherwise, if the relative order of applications is different, then it would cause the database primary keys to change and would necessitate a complete deletion and reingestion of all data.
+1. After you have re-applied your edits, run the `etl.cli.js -o` command mentioned earlier.
+1. Finally, run the `xdmod-upgrade` command.
diff --git a/11.0/extending.md b/11.0/extending.md
new file mode 100644
index 00000000..0c8cedcb
--- /dev/null
+++ b/11.0/extending.md
@@ -0,0 +1,247 @@
+---
+title: Advanced Usage
+---
+
+This document describes how to modify the configuration files to show data from
+different datasources than the default. This is only necessary if the
+default dataset mapping does not provide the required functionality.
+Instructions for configuring the default mapping are provided
+in the [supremm_resources.json documentation.](supremm-configuration.html#supremm_resourcesjson)
+
+If a custom dataset mapping file is used then it must be maintained and
+may need to be modified when the XDMoD software is upgraded.
+
+This document only describes instructions for PCP and Prometheus-based datasources. However,
+the same techniques describe here can be used to generate data mappings for
+other datasources such as [tacc_stats](https://github.com/TACC/tacc_stats) that is used in the [ACCESS version of XDMoD](https://xdmod.access-ci.org).
+
+## Background
+
+The overall architecture is described in [Architecture](supremm-architecture.md) section. This section
+goes into more detail about the ingestion data flow.
+
+A schematic of the data flow is shown in Figure [1](#mongo-to-xdmod-dfd) below.
+The job summarization software writes job information to a MongoDB instance.
+There are two documents per job: a document containing the summary statistics for
+a job such as the CPU usage and accounting information and a document that contains
+the timeseries data for a subset of job metrics. The timeseries document is used
+as the data source for the timeseries plots in the XDMoD job viewer.
+The summary statistics document
+is read at ingest time by the `etl.cluster.js` script (which is executed in the `aggregate_supremm.sh` script) to load data into
+the XDMoD MySQL-based datawarehouse. The `etl.cluster.js` loads
+a dataset mapping module that defines how
+data are copied from the summary statistics document to the datawarehouse. The default dataset mapping module file is
+`supremm.js`. The previous default mapping `pcp.js` has been deprecated, however resources already configured with the 'pcp'
+dataset mapping will still function normally.
+
+XDMoD supports using a different dataset mapping file for each
+HPC resource. The dataset mapping file to use for a given resource is configured
+in the `datasetmap` parameter in the [supremm_resources.json](supremm-configuration.html#supremm_resourcesjson)
+file. The dataset mapping is a written in javascript and supports
+arbitrary javascript functions to transform the job data.
+
+
+
+_Figure 1. Flow of information from job summary documents in MongoDB to the XDMoD datawarehouse._
+
+## Example
+
+The following example shows how to modify the dataset mapping file to support
+reading job data from the job summary document that is different from the
+default.
+
+In this example we describe how to extend the dataset mapping to map data
+from the lustre llite statistics to the Filesystem I/O statistics in XDMoD.
+The default mapping file reads nfs filesystem metrics based on the configuration
+settings in the [supremm_resources.json](supremm-configuration.html#supremm_resourcesjson) file. This example
+shows how to override this so the metrics are instead gathered from the lustre metrics.
+
+The steps to configure the software are as follows:
+1. Create a new dataset map.
+1. Configure XDMoD to use the new dataset map.
+1. Test the new dataset map.
+1. Re-ingest the job data into XDMoD.
+
+
+### 1. Create a new dataset mapping
+
+A new dataset mapping file should be created in `/usr/share/xdmod/etl/js/config/supremm/dataset_maps`. In this
+example, the new mapping file will be called `custom.js`. The file name should follow the Node.js
+module naming convention. The source of the new mapping file is shown below:
+```js
+// load the default mapping module
+var supremm = require('./supremm.js');
+
+// load the library that contains helper functions
+var map_helpers = require('../map_helpers.js');
+
+module.exports = function (config) {
+
+ // create a new copy of the default map
+ var supremm_map = new supremm(config);
+
+ // override the mapping attributes for netdir home and util:
+
+ // The second argument should be set to the name of the
+ // filesystem as it appears in the job level summary ----┐
+ // ▾
+ supremm_map.attributes.netdir_home_read = map_helpers.device('lustre', '/home', 'read_bytes-total');
+ supremm_map.attributes.netdir_home_write = map_helpers.device('lustre', '/home', 'write_bytes-total');
+
+ supremm_map.attributes.netdir_util_read = map_helpers.device('lustre', '/util', 'read_bytes-total');
+ supremm_map.attributes.netdir_util_write = map_helpers.device('lustre', '/util', 'write_bytes-total');
+
+ // can add more overrides here....
+
+ return supremm_map;
+}
+```
+This loads the default mapping and selectively overrides fields.
+
+### 2. Configure XDMoD to use the new map.
+
+The [supremm_resources.json](supremm-configuration.html#supremm_resourcesjson) file defines
+the dataset map to use for each resource. For the purpose of this example, we assume that
+the resource name is `wopr`. The configuration setting would then look similar to:
+```json
+{
+ "resources": [
+ {
+ "resource": "wopr",
+ "resource_id": 1,
+ "enabled": true,
+ "datasetmap": "custom",
+ "hardware": {
+ "gpfs": "gpfs0",
+ "network": [
+ "em1",
+ "eno1"
+ ]
+ }
+ ...
+```
+
+### 3. Testing the new mapping
+
+XDMoD does not require tests exist for a dataset mapping, however it is
+highly recommended to create at least one test case since it significantly
+helps with debugging problems in the mapping. If you do not wish to create test
+cases then this step can be skipped.
+
+The XDMoD software has a test mode that can be used to verify the dataset
+mapping. The test mode requires one or more input files each of which must
+contain a job summary document in json format. Each input file must have a corresponding
+output json file that contains the expected results. The test harness has
+a mechanism to generate the output file. The generated output file must
+be manually verified for the test to be meaningful.
+
+Steps to run the tests:
+
+1) Generate a json input file by exporting a job record from the MongoDB database in json format.
+The [mongoexport](https://docs.mongodb.com/manual/reference/program/mongoexport/) command can
+be used to export documents in json format. Note that newer versions of mongoexport output
+the data in an 'extended' json format. The test input files should be in the mongodb
+relaxed json format (see the [MongoDB json documentation](https://docs.mongodb.com/manual/reference/mongodb-extended-json/) for
+full details. Briefly, if the output file contains data similar to:
+```js
+ "acct": {
+ "local_job_id" : NumberLong(4014453)
+ }
+```
+or
+```json
+ "acct": {
+ "local_job_id" : {
+ "$numberLong": "4014453"
+ }
+ }
+```
+these should be edited to use a plain json number field
+```json
+ "acct": {
+ "local_job_id" : 4014453
+ }
+```
+
+2) Copy the input file to the `/usr/share/xdmod/etl/js/config/supremm/tests/[RESOURCE]/input`
+directory where `[RESOURCE]` is the name of the resource with the new
+mapping file as it appears in `supremm_resources.json`. The name of the file should
+match the document identifier from MongoDB (i.e. the `_id` field).
+
+ For example, if the input file was for job id 8291026 (mongo `_id` = 8291026-1518721536)
+on the `wopr` resource then the file would be called `/usr/share/xdmod/etl/js/config/supremm/tests/wopr/input/8291026-1518721536.json`
+
+3) Create the expected output file. The easiest way to create the output file is to create an empty json
+document in the output directory: `/usr/share/xdmod/etl/js/config/supremm/tests/[RESOURCE]/expected`.
+For example the output file corresponding to the example input file above would be
+`/usr/share/xdmod/etl/js/config/supremm/tests/wopr/expected/8291026-1518721536.json`
+with contents:
+
+```json
+{}
+```
+Then edit the file `/usr/share/xdmod/etl/js/lib/etl_profile.js` and change the
+line:
+```js
+ var regenerateOnFail = false;
+```
+to
+```js
+ var regenerateOnFail = true;
+```
+Then run the following:
+```bash
+$ cd /usr/share/xdmod/etl/js
+$ node etl.cli.js -t -d
+```
+This will generate a large number of error log messages since the expected
+results file is empty. But since the `regenerateOnFail` variable is set to true it
+will overwrite the expected result file with the new data. Manually
+check the file to confirm that the data are correct. In this example, there
+should be values in the file for the various `netdir` metrics added in the
+new custom mapping:
+```json
+{
+ "netdir_home_read": {
+ "value": 1235,
+ "error": 0
+ },
+ "netdir_home_write": {
+ "value": 1235,
+ "error": 0
+ },
+ "netdir_util_read": {
+ "value": 136192137,
+ "error": 0
+ },
+ "netdir_util_write": {
+ "value": 0,
+ "error": 0
+ }
+}
+```
+The `/usr/share/xdmod/etl/js/lib/etl_profile.js` should be edited again to revert the
+change to the `regenerateOnFail` variable.
+
+4) Finally re-run the test harness again and confirm that the tests pass:
+```bash
+$ cd /usr/share/xdmod/etl/js
+$ node etl.cli.js -t -d
+```
+```bash
+2020-03-10T18:12:42.401Z - info: Regression Testing...
+2020-03-10T18:12:42.513Z - info: Regression test of "8291026-1518721536.json" passed
+```
+
+### 4. Re-ingest data into XDMoD
+
+Reset the job ingest status for all jobs:
+
+```bash
+$ /usr/lib64/xdmod/xdmod-supremm-admin --action reset --resource [RESOURCE] -d
+```
+
+Run the ingest and aggregation script:
+```bash
+$ aggregate_supremm.sh
+```
diff --git a/11.0/jobefficiency.md b/11.0/jobefficiency.md
new file mode 100644
index 00000000..224a1be2
--- /dev/null
+++ b/11.0/jobefficiency.md
@@ -0,0 +1,98 @@
+
+The Job Efficiency Dashboard shows job information broken down by the categorized
+efficiency. The categorization algorithm is implemented in SQL and runs during the
+data aggregation step. The algorithm may be customized by editing the definition
+file
+```
+/etc/xdmod/etl/etl_macros.d/jobefficiency/job_categorization.sql
+```
+
+If the definition file is modified then any new jobs will be categorized using the updated
+algorithm. It does not automatically re-categorize existing jobs.
+
+The contents of the file must be valid SQL fragment. The SQL itself is used in a
+`SELECT` statement. An example of the default algorithm is shown below:
+```sql
+-- ----------------------------------------------------------------------------
+-- Classify a job based on the performance statistics
+-- ----------------------------------------------------------------------------
+CASE
+ WHEN cpu_user IS NULL THEN
+ -1
+ WHEN cpu_user < 0.1 AND COALESCE(max_memory, 1.0) < 0.5 THEN
+ 2
+ ELSE
+ 1
+END
+```
+The output must be one of three values:
+- `-1` if the algorithm is unable to categorize the job
+- `1` to mark the job as efficient
+- `2` to mark the job as inefficient
+
+The SQL query can use any value from the job performance fact table `modw_suprem`.`job`
+The documentation for each column in the table is provided in the `COMMENT` field
+in the table definition. The comment field can be viewed using the following
+statement in the `mysql` command line client:
+```mysql
+SHOW FULL COLUMNS FROM `modw_supremm`.`job`;
+```
+Not all performance metrics will be present for all jobs. If a column in the
+database is nullable then a null value is used to indicate that the corresponding
+metric was not present.
+
+## Examples
+
+The example below shows how to categorize jobs solely based on the CPU User metric.
+The example will mark jobs with CPU User less than 20% as inefficient.
+
+```sql
+-- ----------------------------------------------------------------------------
+-- Categorize jobs based only on the value of CPU User with a threshold
+-- of 20% (i.e. a ratio of 0.2)
+-- ----------------------------------------------------------------------------
+CASE
+ WHEN cpu_user IS NULL THEN
+ -1
+ WHEN cpu_user < 0.2 THEN
+ 2
+ ELSE
+ 1
+END
+```
+
+The example below shows how to use different criteria based on the other accounting
+information about the job. In this case, if the job ran on a partition with a name
+ that starts with 'gpu' then the job's efficiency
+is determined based on the GPU usage. Otherwise the CPU usage is used. In both cases
+a 10% (ratio of 0.1) threshold is used. The job's partition (also known as the queue)
+is stored as text in the `queue_id` column.
+```sql
+CASE
+ WHEN
+ queue_id LIKE 'gpu%'
+ THEN
+ CASE
+ WHEN gpu0_nv_utilization IS NULL THEN - 1
+ WHEN gpu0_nv_utilization < 0.1 THEN 1
+ ELSE 2
+ END
+ ELSE
+ CASE
+ WHEN cpu_user IS NULL THEN - 1
+ WHEN cpu_user < 0.1 THEN 1
+ ELSE 2
+ END
+END
+```
+
+# Reprocessing existing jobs.
+
+If the sql definition is updated then all new jobs will be categoried with the
+new definition. Existing data that has already been ingested into Open XDMoD
+will not automatically be reprocessed. All jobs can be reprocessed by running
+the following command:
+```bash
+/usr/share/xdmod/tools/etl/etl_overseer.php --last-modified-start-date 2000-01-01 -p jobefficiency.aggregation -p jobefficiency.joblist
+```
+This will reaggregate all job efficiency data.
diff --git a/11.0/supremm-architecture.md b/11.0/supremm-architecture.md
new file mode 100644
index 00000000..f0c054ed
--- /dev/null
+++ b/11.0/supremm-architecture.md
@@ -0,0 +1,47 @@
+
+Job performance data in XDMoD is obtained from collection software running on
+the compute nodes of the HPC resource. The software architecture comprises three major components.
+
+* Software that runs directly on HPC compute nodes and periodically collects performance information.
+* Job summarization software that uses the node-level performance data to generate job-level data.
+* An XDMoD module that enables the job-level information to be viewed and analysed in XDMoD.
+
+The job-level summary records are stored in a MongoDB document database.
+
+The Job Performance (SUPReMM) module in XDMoD may be extended to support multiple
+different data collection packages. The XDMoD team recommends
+using either Performance Co-Pilot (PCP) or Prometheus as the data source for new software installs. This document assumes that either
+PCP or Prometheus is used as the data source. For more information about other data
+sources please contact the development team via the mailing list or email
+(contact details on the [main overview page](http://open.xdmod.org)).
+
+A simplified high-level overview of the SUPReMM dataflow is shown in Figure 1.
+below. This diagram shows the principal features of the collection and
+processing architecture. The data aggregation and display components present in
+Open XDMoD are not shown.
+
+![Dataflow diagram for SUPReMM]({{ site.baseurl }}/assets/images/SUPReMM_DFD_generic.svg "SUPReMM data flow diagram")
+*Figure 1. SUPReMM data flow diagram*
+
+The data collection software running on the compute nodes provides the node-level
+performance metrics. This guide provides instructions for using either
+Performance Co-Pilot (PCP) or Prometheus as the data collection software. Metric
+data is configured to be logged every 30 seconds (and optionally also at the
+start and end of each compute job via hooks in the job prolog and epilog scripts).
+
+The node-level performance data is stored in a central location for subsequent
+processing by the summarization software. For PCP, the data are stored as
+PCP archive files on a shared filesystem. For Prometheus, the data are
+are stored in Prometheus's timeseries database.
+
+The accounting logs from the resource manager (such as Slurm SGE, PBS, LSF, etc) are ingested into the XDMoD datawarehouse.
+These accounting logs include information about the start and end times of each compute job
+as well as the compute nodes that were assigned to the job.
+
+The summarization software runs periodically via cron. The software uses the
+accounting information from the XDMoD datawarehouse and the information from the data
+collection software to generate a job-level summary for each HPC job. These job-level
+summaries are stored in a MongoDB document database.
+
+The summarized job data is then ingested into the XDMoD datawarehouse for display
+in the web-based user interface and analysis using XDMoD's Data analytic tools.
diff --git a/11.0/supremm-bootstrap.md b/11.0/supremm-bootstrap.md
new file mode 100644
index 00000000..a22c7ff1
--- /dev/null
+++ b/11.0/supremm-bootstrap.md
@@ -0,0 +1,258 @@
+
+The Job Performance data workflow is run as a series of batch processing
+scripts executed periodically via cron.
+
+Before setting up the batch processing workflow, we highly recommend manually
+running the various scripts in debug mode.
+
+All data processing scripts and commands should be run under an unprivileged
+user account. For a typical installation the `xdmod` user account is recommended
+since this will have the necessary access permissions to the XDMoD configuration
+files.
+
+## Prerequisites
+
+The following software components should have been installed and configured:
+
+1. Performance collection software running on compute nodes (PCP or Prometheus)
+1. XDMoD with the Job Performance (SUPReMM) module
+1. MongoDB
+1. Job Summarization software
+
+The following data should be present:
+
+1. XDMoD should have accounting data in the Jobs realm
+1. PCP archives that contain metrics collected from compute nodes that ran jobs present in XDMoD
+
+ **OR**
+
+ A Prometheus server that scrapes metrics from compute nodes that ran jobs present in XDMoD
+
+## Manual run
+
+The following steps should be performed in order:
+
+1. Ingest job accounting data into XDMoD
+1. Run the PCP archive indexer script (For resources configured with PCP)
+1. Run the job summarization script
+1. [Optional] Ingest the job batch scripts
+1. Run the XDMoD ingest and aggregation script
+1. Verify data in the XDMoD UI
+
+### 1. Ingest job accounting data into XDMoD
+
+Ensure that there is job accounting data in XDMoD that covers the time period of the data collection software.
+For example you can check the 'Number of Jobs Ended' metric in the Usage tab of the XDMoD UI
+and confirm that there are jobs for the same time period as the performance data.
+
+### 2. Run the PCP archive indexer script (PCP resources)
+
+**Note: If a resource is configured for Prometheus, then continue to the next step.** Running the
+archive indexer script on a Prometheus configured resource will not produce any output and will not
+affect the dataflow for a resource configured with Prometheus.
+
+The archive indexer script scans the PCP archive directory, parses each PCP
+archive and stores the archive metadata in the XDMoD datawarehouse. This index
+is then used by the job summarization script to efficiently obtain the list of
+archives for each job.
+
+The archive indexer script uses the archive file path to estimate the
+create time of each archive. The script will only process
+archives created in the previous 3 days by default. The first time the archive
+indexer is run, specify the "-a" flag to get it to processes all archives. It
+is also recommended to specify the debug output flag -d so that you can see
+that it is processing the files:
+
+ $ indexarchives.py -a -d
+
+A typical output of the script would be:
+
+ 2018-09-06T11:56:30.066 [DEBUG] Using config file /etc/supremm/config.json
+ 2018-09-06T11:56:30.068 [INFO] archive indexer starting
+ 2018-09-06T11:56:31.433 [INFO] Processed 1 of 1649 (hosttime 0.00125503540039, listdirtime 0.0011420249939, yieldtime 0.0) total 0.00125503540039 estimated completion 2018-09-06 11:56:33.501839
+ 2018-09-06T11:56:31.514 [DEBUG] processed archive /data/pcp-archives/hostname1.example.com/2018/09/04/20180904.00.10.index (fileio 0.067507982254, dbacins 9.67979431152e-05)
+ 2018-09-06T11:56:31.596 [DEBUG] processed archive /data/pcp-archives/hostname1.example.com/2018/09/05/20180905.00.10.index (fileio 0.0788278579712, dbacins 3.19480895996e-05)
+ 2018-09-06T11:56:31.652 [DEBUG] processed archive /data/pcp-archives/hostname1.example.com/2018/09/06/20180906.00.10.index (fileio 0.0517160892487, dbacins 3.09944152832e-05)
+ ...
+
+Verify that the output lists the PCP archives that you expect.
+
+If you see message similar to:
+
+ 2018-08-21T05:56:27.426 [DEBUG] Ignoring archive for host "login-a" because there are no jobs in the XDMoD datawarehouse that ran on this host.
+
+This means that the PCP archives for this host were skipped and will not be
+used for job summarization. If you see the hostname for a compute node that
+should have run jobs then the likely cause is that the job data was not ingested
+into XDMoD. Go back ingest the job data and then rerun the `indexarchives.py -a` command again.
+
+### 3. Run the summarization script:
+
+The summarization script is responsible for generating the job level summary records
+and inserting them in the MongoDB instance. The script reads the job information
+from the XDMoD datawarehouse and processes it according to the configured data source. The default
+behavior of the script is to process all jobs in the XDMoD datawarehouse that
+have not previously been summarized. If there are no data for
+a job then a summary record is still created, but, of course, there will
+be no performance metric information in the record.
+
+ $ summarize_jobs.py -d
+
+You should see log messages indicating that the jobs are being processed. You
+can hit CTRL-C to stop the process. The jobs that have been summarized by the
+script will be marked as processed in the database and the summaries should end
+up in MongoDB. Check to see that the summaries are in MongoDB by, for example, using
+the MongoDB command line client to query the database:
+
+ $ mongo [MONGO CONNECTION URI]
+ > var cols = db.getCollectionNames();
+ > for(var i=0; i < cols.length; i++) {
+ print(cols[i], db[cols[i]].count())
+ }
+
+### 4. [Optional] Run the job batch script ingest
+
+Job batch scripts are displayed in the "Job Script" tab in the "Job Viewer" in
+XDMoD. This tab is only displayed if the job script is available and the absence
+of the jobs scripts does not impact the rest of the interface.
+
+The `ingest_jobscripts.py` script parses the filesystem, reads each job script file
+and loads the contents into the XDMoD datawarehouse.
+If you have the batch scripts for each HPC job available, they are ingested as
+follows
+
+ $ ingest_jobscripts.py -a -d
+
+The `ingest_jobscripts.py` has similar commandline configuration as the `indexarchives.py`. The path
+is parsed to obtain the start time of the job and only the last 3 days worth of
+jobs are ingested by default.
+
+
+### 5. Run the XDMoD ingest and aggregation script
+
+Once there are job summary data in MongoDB it is ingested and aggregated into
+XDMoD by running the following command as the `xdmod` user on the XDMoD host:
+
+ $ aggregate_supremm.sh -d
+
+This script runs three separate commands. First the job summary data is ingested
+from MongoDB to the XDMoD datawarehouse. Then a script parses the job accounting
+data and records which jobs shared compute nodes. Then the data are aggregated
+to be displayed in the XDMoD UI.
+
+The ingestion and aggregation software automatically processes all job summaries
+that have not previously been processed. The shared jobs calculation by default
+processes jobs that ran over the previous three days. If there are jobs
+that shared compute nodes that are older than this three day window then
+run the shared jobs script with the `-a` flag to process all jobs in the database:
+
+ $ /usr/lib64/xdmod/supremm_sharedjobs.php -a -d
+ $ aggregate_supremm.sh -d
+
+This commands should be run as the `xdmod` user on the XDMoD host.
+It is not necessary to run the `supremm_sharedjobs.php` with the `-a` flag every
+time, only on initial ingest if there are older jobs.
+
+### 6. Check Open XDMoD Portal
+
+After the XDMoD ingest and aggregation script has completed successfully
+you should log in to the portal and confirm that the data are present.
+
+The Job Performance data is displayed in the 'SUPREMM' realm in XDMoD. There are
+access controls enabled on the data as follows:
+
+- Accounts with 'User' role may only see job performance data for jobs that they ran;
+- Accounts with 'Principal Investigator' role may only see job performance data for
+ their jobs and the job that they were PI on;
+- Accounts with 'Center Staff' and 'Center Director' role may see all jobs.
+
+You should login using an account that has either 'Center Staff' or 'Center Director'
+role and confirm that there is an additional tab visible named "Job Viewer". In addition to the new
+tab, the "SUPREMM" realm should be visible in the "Usage" and "Metric
+Explorer" tabs.
+
+If there were jobs in the database then there should be data for the 'Number of Jobs Ended' metric.
+If there were valid metrics then you should see data for the 'Avg CPU %: User metric'.
+
+**Note that the admin user that was created in the Open XDMoD has a 'User' role
+mapped to the 'Unknown' user by default.**{:.note} This means that all plots of
+SUPREMM realm data will show "No data available for the criteria specified" and
+no jobs will be able to be viewed in the "Job Viewer" tab. The 'Center Director'
+role may be added to the admin user account via the Internal Dashboard.
+
+
+# Troubleshooting
+
+The administrator internal dashboard has a 'SUPReMM Dataflow' tab that shows the data flow information
+for each configured resource. The internal dashboard is available using the "Dashboard"
+button on the top toolbar in the XDMoD UI for user accounts that have the 'Manager' role.
+An example of the dataflow diagram is shown in Figure 1. below. **Note: The admin dashboard currently only
+displays information for resources configured with PCP.**{:.note}
+
+
+
+*Figure 1. Example screenshot of the dataflow diagram in the XDMoD internal dashboard. The dataflow
+diagram displays detailed statistics on the data stored at various
+points in the processing workflow.*
+
+The data flow page shows information for each configured HPC resource separately.
+Use the dropdown on the top left to select each resource and check that the
+statistics reported in each of the blocks are as expected.
+
+### PCP archive files
+
+The 'node count' metric should match the number of distinct compute nodes with PCP data
+stored on the filesystem.
+The 'node level archives' metric should match the number of node level archives. If these
+do not match up then rerun the `indexarchives.py` script following the instructions
+in [Step 2.](supremm-bootstrap.md#2-run-the-pcp-archive-indexer-script)
+
+### Job summary documents
+
+The 'total' metric indicates the total number of job summaries stored in the MongoDB instance. These
+are generated by the `summarize_jobs.py` script described in
+[Step 3.](supremm-bootstrap.md#3-run-the-summarization-script)
+The 'processed' count indicates the number of jobs that have been successfully ingested
+into the XDMoD datawarehouse. If the 'pending' count is non-zero (and the processed
+job count is non-zero) then the job data needs to be ingested into XDMoD following the instructions
+in [Step 5.](supremm-bootstrap.md#5-run-the-xdmod-ingest-and-aggregation-script)
+
+### SUPREMM job records in Open XDMoD datawarehouse
+
+The 'total' metric indicates the total number of job records ingested into XDMoD from MongoDB. If
+this value is less than the number of jobs in MongoDB then the job data needs to be ingested
+into XDMoD following the instructions
+in [Step 5.](supremm-bootstrap.md#5-run-the-xdmod-ingest-and-aggregation-script)
+
+# Advanced troubleshooting
+
+The recommended strategy for advanced troubleshooting is to identify an HPC job that
+- Has accounting data present in the XDMoD datawarehouse
+- Has raw performance data for the compute nodes on which the job ran
+- Had a wall time long enough for multiple data points to be recorded. For example if you have setup a 30 second collection period, then choose a job that ran for at least ten minutes.
+
+The information about this job should be manually traced though each step in the dataflow. The
+`xdmod-supremm-jobinfo` script provides low-level debug information about a given job
+by directly querying the XDMoD datawarehouse and MongoDB.
+
+ /usr/lib64/xdmod/xdmod-supremm-jobinfo -r RESOURCE -j JOBID
+
+An example output of this script for a job that has all data present and correct is shown below:
+
+ $ ./xdmod-supremm-jobinfo -r resourcename -j 8038957
+ Job 8038957 (end time 2018-01-01 16:40:50)
+ Host list (1 hosts):
+ "compute-15-33"
+ Archive list:
+ Host "compute-d15-33"
+ "/data/pcp-logs/compute-d15-33/2018/01/01/20180101.00.10"
+ "/data/pcp-logs/compute-d15-33/2018/01/01/job-8038957-begin-20180101.03.46.33"
+ "/data/pcp-logs/compute-d15-33/2018/01/01/job-8038957-end-20180101.16.40.50"
+
+
+ Data from modw_supremm:
+ 13 8038957 1514842850
+ Summary in mongo: _id, summarization, procDump, process_memory, infiniband, cpuperf, gpfs, cpu, network, cores, nfs, uncperf, memory, load1, acct, catastrophe, block, nodememory, processed
+ Summary in mongo: _id, lnet, memused, cpuuser, ib_lnet, version, nfs, simdins, process_mem_usage, hosts, membw, memused_minus_diskcache, block
+
+**Note: Resources configured with Prometheus do not have archives associated with them.**{:.note}
diff --git a/11.0/supremm-compute-pcp.md b/11.0/supremm-compute-pcp.md
new file mode 100644
index 00000000..0bbac249
--- /dev/null
+++ b/11.0/supremm-compute-pcp.md
@@ -0,0 +1,207 @@
+**These instructions only apply to resources that will use PCP software. Configuration instructions for Prometheus are [here](supremm-compute-prometheus.html).**
+
+This section gives example configuration settings for Performance Co-Pilot (PCP) running on the compute nodes
+of an HPC cluster. These configuration guidelines are based on the PCP data collection setup
+at CCR Buffalo, which uses PCP version 4.3.2 that is supplied with Centos 7.
+
+Note that the PCP version 5.3.7 supplied with Rocky 8 does not support using date
+variables in the pmlogger output path. The template pmlogger control file
+is not suitable for use with PCP 5.
+
+## Prerequisites
+
+PCP should be installed on every compute node as described in the [install section](supremm-install-pcp.md).
+
+## Configuration
+
+After the PCP software has been installed on each compute node it should be configured so that
+data are collected:
+
+* At the start of every job
+* 10, 20 and 30 seconds after job start
+* Periodically during the job (recommended 30 seconds)
+* At the end of every job
+
+The archive data for each node needs to be readable by the job summarization software
+process. We recommend that the archive data is stored on a shared filesystem such as a parallel filesystem
+or network attached storage.
+
+In order to constrain the number of files in a given directory,
+we recommend storing the archives in a directory structure
+that includes the hostname and the date in different subdirectories. The recommended
+directory path is:
+
+ [YYYY]/[MM]/[HOSTNAME]/[YYYY-MM-DD]
+
+Where YYYY is the 4 digit year, MM 2 digit month, DD is the 2 digit day of the month
+and HOSTNAME is the hostname of the compute node. The two main reasons for storing
+the data in this way are (1) to minimize the number of files per directory and
+(2) to reduce the I/O of the summarization software's indexing script. The
+indexing script is designed to run daily and scans the filesystem for new PCP
+archives. The script is able to exclude old directories from processing based
+on the timestamp. This reduces the amount of I/O since only candidate
+directories are scanned.
+
+In previous versions of the summarization software the recommended path
+was:
+
+ [HOSTNAME]/[YYYY]/[MM]/[DD]
+
+this directory structure is still supported by the indexing script and may
+still be used. The reason for changing the recommendation is that the new directory
+structure limits the total number of files under a given directory. This
+helps reduce the runtime of backup software. If the filesystem I/O performance with
+ the existing directory structure is not an issue then there is no need to change to the new one.
+
+The archive indexing also supports the path structure where all the
+PCP archives for a host are under the hostname directory:
+
+ [HOSTNAME]
+
+The disadvantage of this directory structure is that the number of files in the
+hostname directory can become very large. If you do use this structure it is
+recommended to create a script that is run periodically to remove or otherwise
+archive older PCP files to limit the number of files in each hostname
+directory. Large numbers of files in the log output directory will likely cause
+poor performance of the PCP logging software and the summarization software.
+
+
+Configuration Templates
+-----------------------
+
+The [Job Summarization software][] includes template files that can be used to
+configure PCP collection on the compute nodes (if using PCP version 4). The package itself should not
+be installed on the compute nodes, however you may wish to install it
+on a test node in order to obtain the PCP configuration file templates.
+Alternatively, the scripts may be extracted directly from the source tar file or
+from the [github repository][].
+
+The PCP configuration templates are applicable to PCP version 4.3.2 that is
+supplied with Centos 7 and may need to be modified to work with more recent versions
+of the PCP software. The template logger control files should not
+be used with PCP version 5 because this version does not support using
+date substitutions in the logger pathname.
+
+
+The template files must be edited before use.
+
+These templates are available:
+------------------------------
+#### /usr/share/supremm/templates/pcp-4.3.x/pmlogger/control
+
+This template file **must** be edited to specify the path to the directory
+where the PCP archives are to be saved.
+
+The path `PCP_LOG_DIR/pmlogger` should be changed to the path where the PCP archives are to be saved.
+
+The edited template should be saved in the `/etc/pcp/pmlogger` directory and any existing files under
+`/etc/pcp/pmlogger/control.d` must be removed to ensure that there is only one primary logger
+configured.
+
+Note that the string `LOCALHOSTNAME` in the file is expanded by the pcp logger software to the hostname
+of the compute node running the logger.
+
+The template includes the following directive that disables the compression behavior so that the
+archive files do not get compressed while the summarization software is
+processing them:
+
+```
+$PCP_COMPRESSAFTER=never
+```
+
+The template also specifies the `-T24h10m`` option to the pmlogger process to ensure new log files
+are created every day.
+
+#### /usr/share/supremm/templates/pcp-4.3.x/pmlogger/pmlogger-supremm.config
+* Moved to /etc/pcp/pmlogger
+* Can be updated to change metrics logged or frequency
+ * You may wish to reduce logging frequency from the default 30 seconds until confirming impact on your system and storage utilization
+
+#### /usr/share/supremm/templates/slurm/slurm-prolog
+
+This is a template perl script that **must** be edited. The string `//supremm/pmlogger` must be
+changed to match the directory where the PCP archives are to be saved.
+This script will run data collection at job start time and three additional samples
+at ten second intervals. This script should be merged into your existing prologue script.
+This script is designed for and tested with the [Slurm][] resource manager.
+
+#### /usr/share/supremm/templates/slurm/slurm-epilog
+
+This is a template perl script that **must** be edited. The string `//supremm/pmlogger` must be
+changed to match the directory where the PCP archives are to be saved.
+This script will run data collection at job end. This script should be merged into your existing epilogue script.
+This script is designed for and tested with the [Slurm][] resource manager.
+
+#### /usr/share/supremm/templates/pcp-4.3.x/hotproc/hotproc.conf
+* Moved to /var/lib/pcp/pmdas/proc
+
+This configuration file sets the parameters for process logging into the pcp
+archives. It prevents the logging of system processes, unless they consume
+significant resources. This will reduce disk usage by the pcp archives.
+
+Enable logging modules (PMDAs)
+-----------------------------
+By default, in order to be lightweight, PCP does not enable all logging modules (PMDAs)
+They may be enabled by creating a ".NeedInstall" file in the PMDA directory. The presence
+of this file causes the PCP framework
+to enable the PMDA on next restart (`systemctl restart pmcd`).
+
+The PMDAs that should be enabled will depend on the architecture of your cluster. For
+example, if you have a Lustre filesystem then enable the Lustre PMDA, if you mount
+filesystems over NFS then enable the nfsclient PMDA.
+
+
+
+ $ touch /var/lib/pcp/pmdas/nvidia/.NeedInstall
+ $ touch /var/lib/pcp/pmdas/gpfs/.NeedInstall
+ $ touch /var/lib/pcp/pmdas/nfsclient/.NeedInstall
+ $ touch /var/lib/pcp/pmdas/perfevent/.NeedInstall
+ $ touch /var/lib/pcp/pmdas/mic/.NeedInstall
+ $ touch /var/lib/pcp/pmdas/libvirt/.NeedInstall
+
+Configure Global Process Capture
+--------------------------------
+
+By default, PCP does not allow the capture of process information for all users. XDMoD
+can display process information only if the pcp user is permitted to log this
+information from each compute host. See the relevant documentation in `man pmdaproc`.
+To enable this, you must add the `-A` flag to the `pmdaproc` line
+in `/etc/pcp/pmcd/pmcd.conf` like so:
+
+ proc 3 pipe binary /var/lib/pcp/pmdas/proc/pmdaproc -A
+
+Disable daily archive rollup
+--------------------------------
+
+PCP supports automatically compressing archives after they are created
+to save disk space. The summarization software can read both compressed
+and uncompressed archives. However there is a potential race
+condition with the archive compression running at the same time as the
+job summarization software runs. At CCR we disable the compression with
+the following directive set in the pmlogger control file `/etc/pmlogger/control`
+
+```
+$PCP_COMPRESSAFTER=never
+```
+
+
+Restart PMCD
+--------------------------------
+
+After making configuration changes to the PMDAs, you will need to restart the pmcd
+service. On a systemd enabled system, this can be done with:
+
+ $ systemctl restart pmcd pmlogger
+
+Archive management notes
+------------------------
+
+Once the job summarization software has generated a record for a job then the PCP archives
+are no longer required and could be deleted to save disk space. Jobs are summarized after
+the job accounting information has been ingested into XDMoD and this happens after
+they complete. So the minimum amount of time to keep archives is the maximum permissable
+HPC job wall time plus the latency between a job ending and it appearing in XDMoD.
+
+[Job Summarization software]: supremm-processing-install.md
+[Slurm]: https://www.schedmd.com/
+[github repository]: https://github.com/ubccr/supremm/tree/master/config/templates
diff --git a/11.0/supremm-compute-prometheus.md b/11.0/supremm-compute-prometheus.md
new file mode 100644
index 00000000..50ace54c
--- /dev/null
+++ b/11.0/supremm-compute-prometheus.md
@@ -0,0 +1,87 @@
+**These instructions only apply to resources that will use Prometheus software. Configuration instructions for PCP are [here](supremm-compute-pcp.html).**
+
+This section gives example configuration settings for Prometheus
+running on the compute nodes of an HPC cluster. These configuration
+guidelines are based on the Prometheus collection setup at CCR Buffalo.
+
+Prerequisites
+-------------
+
+The recommended exporters should be installed on every
+compute node as described in the [install section](supremm-install-prometheus.html).
+
+Configuration
+-------------
+
+After the exporters have been installed on each compute node,
+Prometheus should be configured to scrape the endpoints provided by the exporters.
+The following basic Prometheus configuration is the recommended
+configuration for use with the summarization software.
+
+**prometheus.yml**
+
+ global:
+ scrape_interval: 30s
+ scrape_timeout: 30s
+
+ scrape_configs:
+ - file_sd_configs:
+ - files:
+ - "/etc/prometheus/file_sd/targets.json"
+ job_name: compute
+ relabel_configs:
+ - regex: ([^.]+)..*
+ replacement: $1
+ source_labels:
+ - __address__
+ target_label: host
+
+### Scrape Interval
+
+The `scrape_interval` configuration sets the frequency at which Prometheus
+scrapes metrics exposed by the exporters. It is recommended for Prometheus to
+scrape exporters every 30 seconds, but this can vary depending on the number of nodes
+being monitored and storage limitations.
+
+### File-Based Service Discovery
+
+Prometheus can be configured to automatically monitor or stop monitoring nodes
+as they become available or unavailable. This is managed by the `file_sd_configs`
+configuration. This configuration allows Prometheus to dynamically scrape nodes as
+they become available without having to restart the Prometheus server. Prometheus
+listens for changes to the files configured under `files` and automatically
+scrapes those configured targets. An example `targets.json` is below:
+
+**targets.json**
+
+ [
+ {
+ "targets": [
+ "cpn-01:9100",
+ "cpn-01:9306",
+ "cpn-02:9100",
+ "cpn-02:9306",
+ ...
+ ],
+ "labels": {
+ "cluster": "resource_name",
+ "environment": "production",
+ "role": "compute"
+ }
+ }
+ ]
+
+One advantage to using file-based service discovery is that Prometheus can be
+configured to add pre-defined labels to metrics scraped from groups of targets.
+This can be set up across multiple clusters or environments like in the example.
+More information about Prometheus's file-based service discovery can be found [here](https://prometheus.io/docs/guides/file-sd/).
+
+### Relabeling
+
+Prometheus can edit labels attached to metrics as they are scraped.
+The relabeling configured under `relabel_configs` in `prometheus.yml` above converts the fqdn
+returned by the default \_\_address\_\_ label into just the hostname labeled as "host".
+
+**NOTE: The summarization software's default `prometheus/mapping.json` expects the
+"\_\_address\_\_" to be relabeled as "host". The name of the target relabel must match the name
+defined in the "params" section of the prometheus mapping file.**
diff --git a/11.0/supremm-configuration.md b/11.0/supremm-configuration.md
new file mode 100644
index 00000000..0ee92cdc
--- /dev/null
+++ b/11.0/supremm-configuration.md
@@ -0,0 +1,245 @@
+This guide explains how to configure the Job Performance (SUPReMM) XDMoD module.
+
+## Prerequisites
+
+Ensure that [Open XDMoD](http://open.xdmod.org) is installed and configured
+correctly and the [shredder](http://open.xdmod.org/shredder.html) and
+[ingestor](http://open.xdmod.org/ingestor.html) scripts have been run
+successfully before configuring the SUPReMM module. **Do not begin the
+configuration steps until the accounting data is loaded into XDMoD**.
+
+Double check that that the `timezone` and `shared_jobs` configuration settings
+in the `resources.json` configuration file are correct for the resources that have performance data. These settings are
+documented in the [main configuration guide](https://open.xdmod.org/{% if page.version %}{{page.version}}/{% endif %}configuration.html#resourcesjson)
+The `timezone` setting determines the timezone of time data displayed in the XDMoD Job Viewer tab. The
+`shared_jobs` setting determines whether the accounting data will be processed to check
+for jobs that share compute nodes.
+
+## Configuration
+
+The Job Performance (SUPReMM) XDMoD module adds an additional main menu item
+to the XDMoD interactive setup software. Run the script as follows:
+
+ # xdmod-setup
+
+and select the 'SUPReMM' option in the main menu. The `xdmod-setup` script usage is described below.
+
+The next step after configuring in the XDMoD module is to install and configure the [job summarization software](supremm-processing-install.md).
+
+The `xdmod-setup` script
+------------------------
+
+`xdmod-setup` is an interactive setup script for XDMoD. After installing the xdmod-supremm module, there will be an
+additional option titled "SUPReMM" in the main menu. Select that option to show the SUPReMM
+module configuration menu. The options in the menu are listed below:
+
+### Setup database
+
+This option creates the necessary SUPReMM-module specific database schemas
+and tables in the XDMoD datawarehouse. You will
+need to provide the credentials for your MySQL root user, or another
+user that has privileges to create databases. Two database schemas will be
+created, `modw_etl` and `modw_supremm`. The database user that is
+specified in your `portal_settings.ini` will be granted access to these
+databases.
+
+The script also prompts for the location of the document database that
+contains the job summary data. I.e. the MongoDB instance. Enter the uri
+in the standard MongoDB connection string format (see the [mongo documentation][] for
+the syntax). **You must specify the database name in the connection URI.** If
+the database is not specified then the MongoDB driver defaults to the 'test'
+database, which will not contain the job summary data. The default database name is 'supremm'
+so, for example, if you have installed the MongoDB on the same server as XDMoD then you would use
+the following uri:
+
+ mongodb://localhost:27017/supremm
+
+The script also runs the `acl-config` command that is used to update the access controls in
+XDMoD. If you prefer to run this command manually use the following command
+
+ # acl-config
+
+The `acl-config` command is documented in the [XDMoD command reference][commands].
+
+### Configure resources
+
+The setup script automatically detects the existing resources in the XDMoD datawarehouse and lists them.
+If no "Edit resource" options show in the list then quit the setup and complete the steps listed in the
+[shredder][] and [ingestor][] guides before re-running the setup script.
+
+By default all the resources are disabled. You must select the "Edit
+resource" option for each resource that you wish to configure to appear in the
+SUPReMM realm and follow the prompt to enable the resource and set the correct
+options. The "Dataset mapping" should be set to 'pcp' if processing job summaries
+generated from PCP data and 'prometheus' if processing job summaries generated
+from Prometheus data.
+
+SUPReMM configuration files
+---------------------------
+
+The SUPReMM module configuration files are located in the `etc` directory of
+the installation prefix or `/etc/xdmod` for the RPM distribution.
+
+### supremm_resources.json
+
+Defines all of the resources that have Job Performance data that will be ingested and
+displayed in XDMoD. Each object in the array represents the configuration for a
+single resource. All resources listed in this file must also have entries in
+the `resources.json` and `resource_specs.json` main configuration files
+(described in the [main configuration guide](http://open.xdmod.org/configuration.html)).
+
+```json
+{
+ "resources": [
+ {
+ "resource": "resource1",
+ "resource_id": 1,
+ "enabled": true,
+ "datasetmap": "supremm",
+ "hardware": {
+ "gpfs": "gpfs0",
+ "network": [
+ "em1",
+ "eno1"
+ ],
+ "mounts": {
+ "projects": "/projects",
+ "home": "/user",
+ "util": "/util"
+ }
+ }
+ }
+ ]
+}
+```
+
+The value of the `resource` parameter should be identical to the `resource`
+parameter in the `resources.json` main configuration file.
+
+The value of the `resource_id` must be the id of the resource in the XDMoD
+datawarehouse. This value is obtained automatically by the interactive setup
+script. It can be manually obtained by running the following SQL query:
+
+```sql
+mysql> SELECT id FROM `modw`.`resourcefact` WHERE code = "%resource%";
+```
+
+where `%resource%` should be replaced with the `resource` parameter from the
+`resources.json` main configuration file.
+
+The `datasetmap` option allows the ingestion of Job Performance data from different
+data sources. Currently PCP and Prometheus are the only supported data sources.
+
+The `hardware` property is used by the dataset mapping code to process
+metrics that have device-specific names. There are configurable mappings
+for Ethernet network devices, GPFS devices and mounted NFS filesystems.
+The XDMoD statistics for each mapping setting is displayed in the table below.
+
+
+
+The mapping allows multiple modes of operation. The mapping software
+can compute the sum of all the statistics collected from the devices.
+It can also be given a list of device names in priority order and will
+use the statistics from the first device that is found. This feature
+is particularly useful for heterogeneous clusters.
+The list below describes the appropriate value to set in the configuration
+file for a given scenario.
+
+- Specify the name of the device as reported by the O/S on the compute nodes.
+- Specify an empty string if the device is absent or you do not wish the
+ data to appear in XDMoD.
+- Specify the string `all` if you would like the metric in XDMoD to be the
+ sum of all of the detected devices on the compute nodes.
+- Specify a list of device names. The mapping software will use the first device
+ name in the list that is present in the summary statistics for each job.
+
+
+#### Examples
+
+An example hardware configuration setting is shown below:
+```json
+ "hardware": {
+ "gpfs": "gpfs0.example.edu",
+ "network": [
+ "em1",
+ "eno1"
+ ],
+ "mounts": {
+ "projects": "/projects",
+ "home": "/user",
+ "util": "/util"
+ }
+ }
+```
+In this example the mapping would work as follows:
+- The various XDMoD GPFS parallel filesystem statistics would be based on the GPFS filesystem `gpfs0.example.edu` mounted on the compute nodes.
+- The various XDMoD Ethernet statistics would be based on the data read from and written to the `em1` device on compute nodes that had an `em1` Ethernet device and `eno1` for compute
+nodes that did not have an `em1` device but did have an `eno1` device.
+- The XDMoD `projects` filesystem statistics would be from the statistics collected from the NFS filesystem mounted at `/projects` on the compute nodes.
+- The XDMoD `home` filesystem statistics would be from the statistics collected from the NFS filesystem mounted at `/user` on the compute nodes.
+- The XDMoD `util` filesystem statistics would be from the statistics collected from the NFS filesystem mounted at `/util` on the compute nodes.
+
+```json
+ "hardware": {
+ "gpfs": "all",
+ "network": "eth1"
+ }
+```
+In this example the mapping would work as follows:
+- The various XDMoD GPFS parallel filesystem statistics would be based on sum of the statistics for all of the mounted GPFS filesystems.
+- The various XDMoD Ethernet statistics would be based on the data read from and written to the `eth1` device on compute nodes.
+- No data would be stored in XDMoD for NFS filesystems.
+
+
+### portal_settings.d/supremm.ini
+
+Contains the configuration settings to allow XDMoD to connect to the job summary document
+database. The only supported db_engine is MongoDB.
+
+```ini
+[jobsummarydb]
+
+db_engine = "MongoDB"
+uri = "mongodb://localhost:27017/supremm"
+db = "supremm"
+```
+
+The uri syntax is described in the [mongo documentation][]. **You must specify
+the database name in the connection URI.** If the database is not specified then
+the MongoDB driver defaults to the 'test' database, which will not contain the
+job summary data.
+
+Advanced Configuration Options
+---------------------------
+
+The resource configuration file `supremm_resources.json` has optional advanced
+configuration settings for each resource.
+
+The `$.resources[*].collection` option overrides the collection name in the
+MongoDB. This option can be used to set a non default collection name.
+
+The `$.resources[*].db` option specifies the name of the section in the
+portal_settings file that contains the database configuration settings. This
+setting can be used to support an XDMoD instance ingesting data from multiple
+MongoDB databases.
+
+
+
+[mongo documentation]: https://docs.mongodb.org/manual/reference/connection-string/
+[commands]: http://open.xdmod.org/commands.html
+[shredder]: shredder.md
+[ingestor]: ingestor.md
+[notices]: supremm-notices.md
diff --git a/11.0/supremm-data-collection.md b/11.0/supremm-data-collection.md
new file mode 100644
index 00000000..236abc7f
--- /dev/null
+++ b/11.0/supremm-data-collection.md
@@ -0,0 +1,18 @@
+The performance data realm in XDMoD relies on performance
+data collected from the compute nodes on a computational
+resource. The performance data collection software
+should typically beinstalled on every compute node on a
+resource.
+
+The data collectors that can currently be used with Open XDMoD are Performance Co-Pilot (PCP) and Prometheus.
+Only **one** data collector should be installed on the compute nodes.
+
+PCP Installation
+----------------
+
+[PCP Installation Guide](supremm-install-pcp.html)
+
+Prometheus Installation
+-----------------------
+
+[Prometheus Installation Guide](supremm-install-prometheus.html)
diff --git a/11.0/supremm-data-config.md b/11.0/supremm-data-config.md
new file mode 100644
index 00000000..4e2ac052
--- /dev/null
+++ b/11.0/supremm-data-config.md
@@ -0,0 +1,13 @@
+The data collectors running on the compute nodes should be configured
+to collect metrics on a regular frequency. It is recommended to
+configure either PCP or Prometheus on a 30 second collection interval.
+
+PCP Configuration
+-----------------
+
+[PCP Configuration Instructions](supremm-compute-pcp.html)
+
+Prometheus Configuration
+------------------------
+
+[Prometheus Configuration Instructions](supremm-compute-prometheus.html)
diff --git a/11.0/supremm-data-use.md b/11.0/supremm-data-use.md
new file mode 100644
index 00000000..fdc16540
--- /dev/null
+++ b/11.0/supremm-data-use.md
@@ -0,0 +1,12 @@
+Before running the summarization software, first check to make
+sure the data collection software is being properly collected.
+
+PCP
+---
+
+[PCP Instructions](supremm-pcp-use.html)
+
+Prometheus
+----------
+
+[Prometheus Instructions](supremm-prometheus-use.html)
diff --git a/11.0/supremm-databases.md b/11.0/supremm-databases.md
new file mode 100644
index 00000000..c661a0eb
--- /dev/null
+++ b/11.0/supremm-databases.md
@@ -0,0 +1,16 @@
+---
+title: SUPReMM Database Guide
+---
+
+The SUPReMM package installs two additional database schemas.
+
+### modw_supremm
+
+This schema contains the job-level information that has been ingested
+into Open XDMoD.
+
+### modw_etl
+
+This schema contains a table that stores the results of each ingest of
+SUPReMM data. These log data can be used for debugging and performance
+analysis of the ingest process.
diff --git a/11.0/supremm-developer.md b/11.0/supremm-developer.md
new file mode 100644
index 00000000..9ab620cc
--- /dev/null
+++ b/11.0/supremm-developer.md
@@ -0,0 +1,32 @@
+---
+title: Developers Guide
+---
+
+The SUPReMM architecture comprises three major components.
+
+* Software that runs directly on HPC compute nodes and periodically collects performance information.
+* Software that uses the node-level performance data to generate job-level data.
+* An Open XDMoD module that enables the job-level information to be viewed and analysed.
+
+The Open XDMoD module is designed to support the ingestion and display of job-level performance data
+from a variety of sources including [PCP](http://pcp.io), [Prometheus](https://prometheus.io/), Cray RUR, and [tacc_stats](https://github.com/TACC/tacc_stats).
+The recommended data collection software is either PCP or Prometheus. The supported job summarization software is listed below.
+
+### Open XDMoD
+
+The Open XDMoD core software and the Open XDMoD SUPReMM module source code are hosted on github.
+- [Open XDMoD core](https://github.com/ubccr/xdmod)
+- [Open XDMoD SUPReMM module](https://github.com/ubccr/xdmod-supremm)
+
+### Summarization Software
+
+The job-level summarization software is available on GitHub.
+- [Job Summarization](https://github.com/ubccr/supremm)
+
+### PCP Software
+
+- [PCP community page](http://pcp.io/community.html)
+
+### Prometheus
+
+- [Prometheus community page](https://prometheus.io/community/)
diff --git a/11.0/supremm-ingestor.md b/11.0/supremm-ingestor.md
new file mode 100644
index 00000000..124fe918
--- /dev/null
+++ b/11.0/supremm-ingestor.md
@@ -0,0 +1,67 @@
+---
+title: Ingest data
+---
+
+The job-level data is typically processed daily, with the various scripts run as cron jobs. The workflow is described below:
+
+1. Accounting data are ingested into Open XDMoD using the `xdmod-shredder` and `xdmod-ingestor` commands.
+1. The job summarization software runs. This software generates job-level summaries by combining the accounting data (retrieved from Open XDMoD) with the node-level performance data (collected on the compute nodes).
+1. The job-level summaries are ingested into Open XMDoD and the data aggregated.
+
+The `xdmod-shredder` and `xdmod-ingestor` commands are part of the core Open XDMoD software and are documented in the [Shredder](http://open.xdmod.org/shredder.html) and [Ingestor](http://open.xdmod.org/ingestor.html) guides.
+
+## Prerequisites
+
+Before setting up the batch processing workflow, we highly recommend manually running the various scripts in debug mode following
+the instructions on the [Inital Ingest Setup](supremm-bootstrap.md) page.
+
+Deploy SUPReMM in Production
+--------------------------------
+
+Enable the following script to run everyday via a cron job. It should be executed
+after the Open XDMoD daily update process is expected to finish.
+
+ $ /usr/bin/supremm_update
+
+This script calls `indexarchives.py` and `summarize_jobs.py` in turn while providing a
+locking mechanisms so that processes do not conflict with each other. This script (and
+all data processing commands) should be run under an unprivileged user account.
+Typically the `xdmod` user account is used.
+
+The job-level summaries are ingested into Open XDMoD with the following command that
+must be run by the `xdmod` user:
+
+ $ aggregate_supremm.sh
+
+Cron Configuration
+------------------
+
+An example cron configuration file is shown below to illustrate a typical
+setup. The actual content of the cron file will depend on whether or not the
+summarization software is installed on a different host than the Open XDMoD
+package. The amount of time taken to run the various scripts depends on many
+factors mainly the number and size of HPC jobs and the IO bandwidth of the host
+that runs the scripts.
+
+ # Shred and ingest accounting data
+ 0 1 * * * xdmod /usr/bin/xdmod-slurm-helper -q -r resource-name && /usr/bin/xdmod-ingestor -q
+
+ # Create job level summaries
+ 0 2 * * * xdmod /usr/bin/supremm_update
+
+ # Ingest job level sumamries into XDMoD and run aggregation
+ 0 4 * * * xdmod /usr/bin/aggregate_supremm.sh
+
+By default, the `aggregate_supremm.sh` runs an SQL `ANALYSE TABLE` command after the
+aggregation. This helps the load performance of plots in the XDMoD portal.
+When there are large amounts of data in the SUPREMM realm (10s or 100s of millions of jobs)
+ the `ANALYSE TABLE` step can take a long time to run. The `-a` option to the
+script is used to selectively disable the analyse step. For large databases
+the analyse tables step need only be run weekly. This reduces the aggregation
+time without adversely impacting overall portal load performance.
+
+The following `crontab` configuration could be used to run the analyse table step
+once a week.
+
+ 0 4 * * 1-6 xdmod /usr/bin/aggregate_supremm.sh -a false
+ 0 4 * * 0 xdmod /usr/bin/aggregate_supremm.sh
diff --git a/11.0/supremm-install-overview.md b/11.0/supremm-install-overview.md
new file mode 100644
index 00000000..9b848bcd
--- /dev/null
+++ b/11.0/supremm-install-overview.md
@@ -0,0 +1,155 @@
+This page gives an overview of the steps to install
+the various software components needed to enable Job Performance
+data in XDMoD. Instructions for upgrading the software from are available
+on the [upgrade page](supremm-upgrade-overview.md)
+
+Prerequisites
+----------------
+
+The Job Performance (SUPReMM) XDMoD module should be installed on an existing XDMoD
+instance. The XDMoD instance must have job accounting data shredded and
+ingested and present in the UI. Do not begin the install procedure until the
+accounting data is loaded into XDMoD. See the [main XDMoD
+documentation](https://open.xdmod.org) for instructions on installing and
+configuring XDMoD.
+
+Overview
+----------
+
+The steps to install and configure the software are as follows:
+
+1. Install performance data collection software on the compute nodes. Choose
+ either Performance Co-Pilot (PCP) or Prometheus.
+
+ [Instructions for Performance Co-Pilot](supremm-install-pcp.html)
+
+ **OR**
+
+ [Instuctions for Prometheus](supremm-install-prometheus.html)
+1. Install [MongoDB document database](supremm-mongo.html) to store job-level performance data.
+1. Install and configure the [Job Performance module](supremm-install.html) on an existing XDMoD instance.
+1. Install and configure the [Job Summarization](supremm-processing-install.html) software.
+1. Run the [Job Summarization and Data Ingestion](supremm-ingestor.html) processes.
+
+It is important that the various software components are installed and configured in the
+order listed. For example, if the XDMoD module is not installed and configured then the summarization software
+will not be able to access the tables in XDMoD datawarehouse that are needed.
+
+Software Compatibility
+----------------------
+
+The Job Performance (SUPReMM) XDMoD module version number must be
+identical to the version of the base XDMoD install. The versions of the
+summarization software and PCP software for a given XDMoD version are listed
+below.
+
+### Open XDMoD {{ page.sw_version }}
+
+Centos 7 Operating System
+
+
+
+
+
Package
Recommended Version
Compatible Version(s)
+
+
+
+
+
Job Summarization
1.4.1
1.4.1, 1.2.x, 1.1.x
+
+
+
PCP
4.1.0 or 4.3.2
4.x
+
+
+
+
+
+Rocky 8 Operating System
+
+
+
+
+
Package
Recommended Version
Compatible Version(s)
+
+
+
+
+
Job Summarization
{{ page.summ_sw_version }}
2.0.0
+
+
+
PCP
5.3.7
5.3.x
+
+
+
+
+
+The SUPReMM software has been tested with MongoDB versions 3.4.15, 4.4, and 6.0. We expect
+that the software is compatible with any supported release version of MongoDB.
+
+The summarization software is tested against the PCP versions shipped with Centos
+7.6, Centos 7.7, and Rocky 8.
+
+System Requirements
+---------------------
+
+The detailed list of software packages for each subsystem is listed in the
+respective system requirements pages.
+
+### Hardware requirements
+
+The XDMoD Job Performance (SUPReMM) module must be installed on an existing, functional XDMoD instance.
+
+Compute node data collection software must be installed on the existing HPC compute nodes:
+- If using PCP then the Performance Metrics Collector Daemon (pmcd) and various Performance Metrics Domain Agents (PMDAs)
+should be installed on the compute nodes.
+- If using Prometheus then Prometheus exporters should be installed on the compute nodes.
+
+If using Prometheus as the data collection software then a main Prometheus server must be setup.
+For small installations this may be installed on the same server as the XDMoD instance. However, for
+best performance, it is recommended that a dedicated server is used to store the Prometheus time series data.
+
+The Job summarization software and Mongo database may be installed on the same server as the XDMoD instance. However, for
+best performance, it is recommended that a dedicated server is used to host
+the Mongo database. This server can also be used to run the Job summarization software.
+
+We do not recommend installing databases or webservers on any HPC compute nodes.
+
+### Storage requirements
+
+The amount of data storage depends on the amount of historical data that is desired to be stored.
+
+The following estimates are based on using the default configuration:
+
+ * PCP data: 70 MB per node per day (stored as files on the network filesystem)
+ * Prometheus data: 8.7 MB per node per day (stored in Prometheus's timeseries database)
+ * Job level summary records: 36 KB per job (stored in MongoDB)
+ * XDMoD datawarehouse: 2 KB per job (stored in MySQL)
+
+These estimates were obtained from the average storage usage for the SUPReMM
+system installed on the HPC resource at CCR Buffalo. The actual quantity of
+data storage required depends on many factors including the rate of job
+creation and which metrics are collected.
+
+### Typical install locations
+
+**PCP:**
+* **HPC Compute Nodes** have the PCP data collection software installed on
+ them. The collection software is configured to collect metrics from the nodes
+ periodically and whenever an HPC job starts or ends. The
+ data are logged to shared storage such as a parallel filesystem or a network attached storage device.
+
+**Prometheus:**
+* **HPC Compute Nodes** have the Prometheus exporters installed on them. These exporters expose
+ information about the compute nodes that are scraped by Prometheus over the network.
+* **Dedicated Prometheus server** scrapes the exporters running on the compute nodes. The Prometheus
+ instance is configured to scrape metrics from these exporters on a configured interval. The data
+ are logged to Prometheus's internal timeseries database.
+
+**Both:**
+* **Dedicated web server** has the XDMoD software and Job Performance (SUPReMM) XDMoD module installed.
+* **Dedicated MySQL server** hosts a MySQL instance containing the XDMoD datawarehouse.
+* **Dedicated SUPReMM server** has the SUPReMM job summarization
+ software and MongoDB document database installed. This server requires either read
+ access to the node-level PCP archives generated on the compute nodes or to an instance of Prometheus that
+ is monitoring the compute nodes. Access to the Open XDMoD datawarehouse MySQL database from this server
+ is also necessary.
diff --git a/11.0/supremm-install-pcp.md b/11.0/supremm-install-pcp.md
new file mode 100644
index 00000000..702fd84f
--- /dev/null
+++ b/11.0/supremm-install-pcp.md
@@ -0,0 +1,75 @@
+**These instructions only apply to resources that will use PCP software. Installation instructions for Prometheus are [here](supremm-install-prometheus.md).**
+
+The PCP software should be installed on each compute node and configured so
+that data are collected:
+
+* At the start of every job
+* 10, 20 and 30 seconds after job start
+* Periodically during the job (recommended 30 seconds)
+* At the end of every job
+
+The archive data for each node are stored on a shared filesystem for
+subsequent processing by the job summarization software.
+
+Install the PCP data collector on the compute nodes
+-------------------------------------------
+
+The PCP software has been included in the official CentOS packages since CentOS 7.6. Builds
+for other distributions (and earlier versions) are available from the
+[official PCP dowload page](https://pcp.io/download.html),
+
+The CentOS RPM packages of the summarization software (versions <= 1.4.1) are tested against the version of PCP
+that is provided with CentOS 7 (This is PCP version 4.3.2 as of CentOS 7.8). The Rocky RPM packages
+of the summarization software (versions >= 2.0.0) are tested against the version of PCP that is provided with
+Rocky 8 (PCP version 5.3.7).
+
+For an RPM based install on CentOS 7, the following command will install PCP with
+all of the associated PMDAS (monitoring plugins) that have been tested with the
+summarization software:
+
+ # yum install pcp \
+ pcp-manager \
+ pcp-conf \
+ pcp-libs \
+ python-pcp \
+ perl-PCP-PMDA \
+ pcp-system-tools \
+ pcp-pmda-gpfs \
+ pcp-pmda-lustre \
+ pcp-pmda-infiniband \
+ pcp-pmda-mic \
+ pcp-pmda-nvidia-gpu \
+ pcp-pmda-nfsclient \
+ pcp-pmda-perfevent \
+ pcp-pmda-json
+
+For an RPM based install on Rocky 8, the following command will install PCP with
+all of the associated PMDAs that have been tested with the summarization software:
+
+ # dnf install pcp \
+ pcp-conf \
+ pcp-libs \
+ python3-pcp \
+ perl-PCP-PMDA \
+ pcp-system-tools \
+ pcp-pmda-gpfs \
+ pcp-pmda-lustre \
+ pcp-pmda-infiniband \
+ pcp-pmda-mic \
+ pcp-pmda-nvidia-gpu \
+ pcp-pmda-nfsclient \
+ pcp-pmda-perfevent \
+ pcp-pmda-json
+
+For a source code install follow the instructions on the [official PCP site](https://pcp.io/docs/installation.html).
+
+Note that the node that runs the summarization software does not need to have all of the
+PCP data collection components installed. It only requires the python pcp libraries.
+
+Compatibility notes
+-------------------
+
+The summarization software is tested on CentOS 7 and Rocky 8 with the package versions of
+PCP that are supplied with CentOS 7 and Rocky 8 (PCP versions 4.3.2 and 5.3.7 respectively).
+In general any version of PCP will work as long as the summarization software is built against
+the same or newer version of PCP as the version installed on the compute nodes.
diff --git a/11.0/supremm-install-prometheus.md b/11.0/supremm-install-prometheus.md
new file mode 100644
index 00000000..10179579
--- /dev/null
+++ b/11.0/supremm-install-prometheus.md
@@ -0,0 +1,110 @@
+**These instructions only apply to resources that will use Prometheus. Installation instructions for PCP software are [here](supremm-install-pcp.html).**
+
+Prometheus exporters should be installed on each compute node and configured so
+that metrics are scraped periodically during the job (recommended 30 seconds)
+
+Data for each node are scraped by Prometheus and stored in Prometheus's
+timeseries database for subsequent processing by the job summarization software.
+
+Install Prometheus
+------------------
+
+The official installation instructions for Prometheus are [here](https://prometheus.io/docs/prometheus/latest/installation/).
+The summarization software has been tested against Prometheus 2.3.0. Other versions are available from the
+[official Prometheus download page](https://prometheus.io/download/).
+
+For a source code install follow the instructions on the [official Prometheus repo](https://github.com/prometheus/prometheus).
+
+Install the exporters on the compute nodes
+-------------------------------------------
+
+The summarization software utilizes metrics from the following exporters:
+* [Node Exporter](https://github.com/prometheus/node_exporter)
+* [Cgroup Exporter](https://github.com/treydock/cgroup_exporter)
+* [IPMI Exporter](https://github.com/prometheus-community/ipmi_exporter)
+* [DCGM Exporter](https://github.com/NVIDIA/dcgm-exporter)
+
+After installation, it is recommended to configure the exporters as services managed
+by systemd. An example configuration for an exporter service file running under the
+`prometheus` user is as follows:
+
+**/usr/lib/systemd/system/example\_exporter.service**
+
+ [Unit]
+ Description=EXAMPLE_EXPORTER
+ After=network.target
+
+ [Service]
+ EnvironmentFile=-/etc/default/EXAMPLE_EXPORTER
+ User=prometheus
+ ExecStart=/usr/bin/ $EXAMPLE_EXPORTER_OPTS
+ Restart=on-failure
+ RestartSec=5s
+
+ [Install]
+ WantedBy=multi-user.target
+
+**/etc/default/example\_exporter**
+
+ EXAMPLE_EXPORTER_OPTS='--flag1 --flag2'
+
+The following flags are disabled by default for the exporters and must be enabled for some plugins. Append the following flags to the corresponding exporter environment files:
+
+**Node Exporter** (`/etc/default/node_exporter`)
+
+ NODE_EXPORTER_OPS=`--collector.cpu.info`
+
+**CGroup Exporter** (`/etc/default/cgroup_exporter`)
+
+ CGROUP_EXPORTER_OPTS="--config.paths=/slurm --collect.proc"
+
+If the CGroup Exporter is not running as the root user, then run the following command to ensure the user running
+the exporter can read everything under procfs:
+
+ setcap cap_sys_ptrace=eip /usr/bin/cgroup_exporter
+
+The summarization software will still function without these flags enabled, however some plugins will not run without it set.
+
+Verify Exporter Installation
+----------------------------
+
+Metrics are exposed under the `/metrics` endpoint for each exporter. Ensure each exporter is properly exporting metrics with `curl`
+like the following example for the Node Exporter:
+
+ $ curl http://localhost:9100/metrics
+ # HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
+ # TYPE go_gc_duration_seconds summary
+ go_gc_duration_seconds{quantile="0"} 2.6369e-05
+ go_gc_duration_seconds{quantile="0.25"} 5.1473e-05
+ go_gc_duration_seconds{quantile="0.5"} 5.5654e-05
+ go_gc_duration_seconds{quantile="0.75"} 5.8111e-05
+ go_gc_duration_seconds{quantile="1"} 0.000120961
+ go_gc_duration_seconds_sum 148.050290784
+ go_gc_duration_seconds_count 840389
+ # HELP go_goroutines Number of goroutines that currently exist.
+ # TYPE go_goroutines gauge
+ go_goroutines 8
+ # HELP go_info Information about the Go environment.
+ # TYPE go_info gauge
+ go_info{version="go1.16.7"} 1
+
+The default ports for each exporter are:
+
+* Node Exporter: 9100
+* CGroup Exporter: 9306
+* IPMI Exporter: 9290
+* DCGM Exporter: 9400
+
+Note that the node that runs the summarization software does not need to have Prometheus or the exporters installed.
+
+Compatibility notes
+-------------------
+
+Version {{ page.summ_sw_version }} of the summarization software is tested on Rocky 8 with the following software versions:
+* Prometheus: [v2.3.0](https://github.com/prometheus/prometheus/releases/tag/v2.30.0)
+* Node Exporter: [v1.2.1](https://github.com/prometheus/node_exporter/releases/tag/v1.2.1)
+* IPMI Exporter: [v1.4.0](https://github.com/prometheus-community/ipmi_exporter/releases/tag/v1.4.0)
+* DCGM Exporter: [v2.3.1](https://github.com/NVIDIA/dcgm-exporter/releases/tag/2.3.5-2.6.5)
+* CGroup Exporter: [v0.7.0](https://github.com/treydock/cgroup_exporter/releases/tag/v0.7.0)
+
+Newer versions of these software might be compatible with the summarization software but have not been fully tested.
diff --git a/11.0/supremm-install.md b/11.0/supremm-install.md
new file mode 100644
index 00000000..8a5d641c
--- /dev/null
+++ b/11.0/supremm-install.md
@@ -0,0 +1,60 @@
+The Job Performance (SUPReMM) XDMoD module should be installed on an existing XDMoD
+instance. The XDMoD instance must have job accounting data shredded and
+ingested and present in the UI. **Do not begin the configuration steps until the
+accounting data is loaded into XDMoD**. See the [main XDMoD
+documentation](https://open.xdmod.org) for instructions on installing and
+configuring XDMoD.
+
+If you have a previous version of the SUPReMM module installed, then
+follow the instructions in the [Upgrade Guide](supremm-upgrade.html).
+
+RPM Installation
+----------------
+
+RPM packages for CentOS 7 and Rocky 8 are [available for download](https://github.com/ubccr/xdmod-supremm/releases/latest).
+
+**CentOS 7**
+
+ # yum install xdmod-supremm-{{ page.sw_version }}-1.0.el7.noarch.rpm
+
+**Rocky 8**
+
+ # dnf install xdmod-supremm-{{ page.sw_version }}-1.0.el8.noarch.rpm
+
+Source Installation
+-------------------
+
+The Job Performance (SUPReMM) XDMoD module requires all of the software for XDMoD and
+the following additional packages:
+
+- [PHP MongoClient][]
+- [nodejs][] 16.13.2
+
+[nodejs]: https://nodejs.org
+[PHP MongoClient]: http://php.net/manual/en/class.mongoclient.php
+
+ $ tar zxvf xdmod-supremm-{{ page.sw_version }}.tar.gz
+ $ cd xdmod-supremm-{{ page.sw_version }}
+ # ./install -prefix=/opt/xdmod
+
+**NOTE**: The installation prefix must be the same as your existing Open
+XDMoD installation. These instructions assume you have already installed
+Open XDMoD in `/opt/xdmod`.
+
+Additional Notes
+----------------
+
+### SELinux
+
+**NOTE**: The webserver is not able to communicate with MongoDB with the
+default CentOS SELinux security policy. The following command allows the
+webserver to communicate over network:
+
+ # setsebool -P httpd_can_network_connect 1
+
+Configure SUPReMM module
+------------------------
+
+After installing the XDMoD module it must be configured following the
+instructions in the [Job Performance (SUPReMM) XDMoD Module Configuration Guide](supremm-configuration.html).
+
diff --git a/11.0/supremm-jobscript.md b/11.0/supremm-jobscript.md
new file mode 100644
index 00000000..0de402b7
--- /dev/null
+++ b/11.0/supremm-jobscript.md
@@ -0,0 +1,33 @@
+The job viewer tab in Open XDMoD is able to show the job batch script along
+with the other job information. The job batch scripts are stored in the
+database using the `ingest_jobscripts.py` process. The `ingest_jobscripts.py` tool is
+packaged with the [Job Summarization software](supremm-processing-install.md).
+
+The ingestion of job batch scripts is an optional feature. It is _not_ required for Open XDMoD
+to display job performance information.
+
+The mechanism for extracting the job batch script is resource manager specific. Consult the
+documentation for your resource manager software for information about
+how to enable logging of the job batch script.
+
+## Source data schema
+
+In order to ingest the job batch script data into Open XDMoD the job batch scripts must be stored in files. There
+must be one file per job and the job batch scripts for a given day should be stored in a
+datestamp named directory:
+```
+[BASEPATH]/YYYYMMDD/JOBID.savescript
+```
+where `YYYY` is the four digit year, `MM` two digit month, `DD` two digit day
+and `JOBID` is the identifier for the job from the resource manager.
+The date can refer to either the submit day, start day or end day of the job
+but must be the same for all jobs for a resource. The configuration
+settings for the path name and the datestamp meaning are described in the [configuration guide](supremm-processing-configuration.md).
+
+The files are stored in datestamped directories because:
+1. Storing the files by date limits the number of files per directory.
+1. The datestamp is also used along with the job identifier to locate
+the accounting record for the job. The datestamp is used because job identifiers
+provided by a resource manager are typically not globally unique.
+1. The datestamp is used to limit the number of files to scan each time the
+`ingest_jobscripts.py` process runs.
diff --git a/11.0/supremm-mongo.md b/11.0/supremm-mongo.md
new file mode 100644
index 00000000..a58e45e4
--- /dev/null
+++ b/11.0/supremm-mongo.md
@@ -0,0 +1,7 @@
+A MongoDB server must be installed and enabled. We recommend that the software
+is installed on a dedicated server, however it may be installed on the same
+server as the XDMoD instance.
+
+Please refer to the official [MongoDB installation manual](https://docs.mongodb.org/manual/installation/) for instructions on how to install MongoDB.
+
+The MongoDB node.js driver used in the Job Performance (SUPREMM) XDMoD module is compatible with MongoDB 2.6, 3.0, 3.2, 3.4, 4.4, and 6.0. The software has been tested against MongoDB versions 3.4, 4.4, and 6.0.
diff --git a/11.0/supremm-notices.md b/11.0/supremm-notices.md
new file mode 100644
index 00000000..bae92bc4
--- /dev/null
+++ b/11.0/supremm-notices.md
@@ -0,0 +1,18 @@
+The Job Performance (SUPReMM) module for Open XDMoD makes use of several other open source
+software libraries.
+
+## Open Source Licenses
+
+The following libraries are licensed using [OSI-approved licenses][osi]. These software products are free for commercial use.
+
+### Included Libraries
+
+The following libraries are included with the SUPReMM modules.
+
+- [composer/installers](https://composer.github.io/installers), which is
+ available under the [MIT License][mit].
+- [jsPlumb Community edition](https://github.com/jsplumb/community-edition), which is available under the
+ [MIT License][mit].
+
+[osi]: http://opensource.org/licenses
+[mit]: http://en.wikipedia.org/wiki/MIT_License
diff --git a/11.0/supremm-overview.md b/11.0/supremm-overview.md
new file mode 100644
index 00000000..5905a632
--- /dev/null
+++ b/11.0/supremm-overview.md
@@ -0,0 +1,17 @@
+---
+redirect_from:
+ - "/11.0/"
+---
+
+This documentation is intended to be used by system administrators to install and configure
+the generation and display of Job Performance data in XDMoD. If you are an end user looking for
+help using XDMoD, the starting point is the 'Help' button on right hand side of the top toolbar
+in the web interface.
+
+If you are intending to do a fresh install of the software then the starting point is
+to review the [Software licensing information](supremm-notices.md), read the
+[Architecture guide](supremm-architecture.md) and the [Install overview](supremm-install-overview.md).
+
+The [Upgrade Overview](supremm-upgrade-overview.md) is the starting point for an upgrade of an
+existing instance.
+
diff --git a/11.0/supremm-pcp-use.md b/11.0/supremm-pcp-use.md
new file mode 100644
index 00000000..6613880e
--- /dev/null
+++ b/11.0/supremm-pcp-use.md
@@ -0,0 +1,72 @@
+**These instructions only apply to resources that will use PCP software. Usage instructions for Prometheus are [here](supremm-prometheus-use.html).**
+
+The following describes how to check the PCP data collection.
+
+## Prerequisites
+
+The PCP software should have been [installed on the compute nodes](supremm-install-pcp.md)
+and [configured](supremm-compute-pcp.md) using the supplied templates.
+
+Start PCP
+---------
+ # systemctl enable pmcd pmlogger
+ # systemctl start pmcd pmlogger
+
+Check for Errors
+----------------
+It may take several seconds for all the PMDAs to start up
+
+ $ cat /var/log/pcp/pmcd/*.log
+ $ cat //supremm/pmlogger/`hostname`/Y/M/D/pmlogger.log
+
+Check for Running processes
+---------------------------
+* Ensure the pmcd, pmlogger and any pmda processes you enabled are running
+
+
+
+ $ ps -ef | grep -i pcp
+ pcp 37221 1 0 Sep22 ? 00:00:03 /usr/libexec/pcp/bin/pmcd
+ root 37223 37221 0 Sep22 ? 00:00:00 /var/lib/pcp/pmdas/root/pmdaroot
+ root 37224 37221 0 Sep22 ? 00:11:43 /var/lib/pcp/pmdas/proc/pmdaproc -A
+ root 37225 37221 0 Sep22 ? 00:00:00 /var/lib/pcp/pmdas/xfs/pmdaxfs -d 11
+ root 37226 37221 0 Sep22 ? 00:00:13 /var/lib/pcp/pmdas/linux/pmdalinux
+ pcp 37227 37221 0 Sep22 ? 00:00:03 /var/lib/pcp/pmdas/logger/pmdalogger /var/lib/pcp/config/logger/logger.conf
+ pcp 37228 37221 0 Sep22 ? 00:00:30 /var/lib/pcp/pmdas/perfevent/pmdaperfevent -d 127
+ pcp 42945 1 0 00:10 ? 00:00:00 pmlogger -r -m pmlogger_daily -P -l pmlogger.log -c /etc/pcp/pmlogger/pmlogger-config.ubccr 20150924.00.10
+
+Check that daily archives are being created
+-------------------------------------
+It may take several seconds to minutes for the log to accumulate data depending on your logging frequency
+
+ $ cd //supremm/pmlogger/`hostname`/Y/M/D
+ $ ls
+ 20150924.14.16-00.0
+ 20150924.14.16-00.index
+ 20150924.14.16-00.meta
+
+ $ pmdumplog -a 20150924.14.16-00
+
+Ensure that the archives have the metrics you expect.
+
+Check that job start and end archives are being created
+-------------------------------------
+
+If you configured data collection in the job prologue and epilogue then check that
+that these archives are created correctly.
+
+ $ cd //supremm/pmlogger/`hostname`/Y/M/D
+ $ ls job*
+ job-4588146-begin-20180915.09.29.16.0
+ job-4588146-begin-20180915.09.29.16.index
+ job-4588146-begin-20180915.09.29.16.meta
+ job-4588146-end-20180915.11.57.38.0
+ job-4588146-end-20180915.11.57.38.index
+ job-4588146-end-20180915.11.57.38.meta
+
+ $ pmdumplog -a job-4588146-begin-20180915.09.29.16
+ ...
+
+ $ pmdumplog -a job-4588146-end-20180915.11.57.38
+ ...
+
diff --git a/11.0/supremm-processing-configuration.md b/11.0/supremm-processing-configuration.md
new file mode 100644
index 00000000..b334eebb
--- /dev/null
+++ b/11.0/supremm-processing-configuration.md
@@ -0,0 +1,335 @@
+
+This guide explains how to configure the Job Summarization software.
+
+## Prerequisites
+
+The Job Performance (SUPReMM) XDMoD module must be [installed](supremm-install.md) and [configured](supremm-configuration.md)
+before configuring the Job Summarization software.
+
+Setup Script
+------------
+
+The Job Summarization software includes a setup script to help you configure your
+installation. The script will prompt for information needed to configure the
+software and update the configuration files and databases. If you have
+modified your configuration files manually, be sure to make backups before
+running this command:
+
+ # supremm-setup
+
+The setup script needs to be run as a user that has write access to the
+configuration files. You may either specify a writable path name when prompted
+(and then manually copy the generated configuration files) or run the script as
+the root user.
+
+The setup script has an interactive ncurses-based menu-driven interface. A description of
+the main menu options is below:
+
+### Create configuration file
+
+This section prompts for the configuration settings for the XDMoD datawarehouse
+and the MongoDB database. The script will automatically detect the resources
+from the XDMoD datawarehouse and prompt for the settings for each of them.
+
+### Create database tables
+
+This section will create the database tables that are needed for the job summarization software.
+
+The default connection settings are read from the configuration file (but can
+be overridden). It is necessary to supply username and password of a
+database user account that has CREATE privileges on the XDMoD modw_supremm database.
+
+### Initialize MongoDB Database
+
+This section will add required data to the MongoDB database.
+
+The default connection settings are read from the configuration file (but can
+be overridden).
+
+Configuration Guide
+-------------------
+
+The SUPReMM job summarization software is configured using a json-style format
+file that uses json syntax but permits line-based comments (lines starting with
+`//` are ignored by the parser).
+
+This file is stored in `/etc/supremm/config.json` for RPM based installs or
+under `[PREFIX]/etc/supremm/config.json` for source code installs, where
+`[PREFIX]` is the path that was passed to the install script.
+
+The paths shown in this configuration guide show the default values for
+RPM-based installs. For source code installs you will need to adjust the paths
+in the examples to match the installed location of the package.
+
+The top level properties are listed in the table below:
+
+
+
+
+
Setting
Description
+
+
+
+
+
summary
Contains configuration settings for the summarize_jobs.py script.
+
+
+
resources
Contains details about the compute resources.
+
+
+
datawarehouse
Contains configuration to access XDMoD's database.
+
+
+
outputdatabase
Contains configuration settings for the database used to store the job summary data.
+
+
+
xdmodroot
This optional setting defines the path to the XDMoD configuration directory. This
+is only used if the summarization software runs on the same machine as the XDMoD software is installed. If present
+then the software will read the XDMoD database configuration directly from the XDMoD portal settings file. This
+obviates the need to redundantly specify database settings.
Path to a directory that is used
+to store temporary files. The summary script will try to create the directory if is does not exist.
+The default value is to use a path under /dev/shm because this is
+the typical location of a tmpfs filesystem. The summarization software performance
+is typically improved by using tmpfs for temporary files but this is not required.
+
subdir_out_format
%r/%j
Specifies the path under
+the archive_out_dir to be used for temporary files during the summarization of each job.
+Different subdirectories should used for each job because jobs are processed in parallel.
+The format string includes the following substitutions: %r is replaced by the resource name
+and %j the job identifier. Additionally any valid format specifiers to the strftime function
+are permitted. The strftime function is called with
+the end time of the job.
+
+
+
+
+
+Resource settings
+-----------------
+The "my_cluster_name" string and value of the `resource_id` field should be set to
+the same values as the `code` and `id` columns in the Open XDMoD
+modw.resourcefact table in the datawarehouse.
+
+
+```json
+{
+ ...
+ "resources": {
+ "my_cluster_name": {
+ "enabled": true,
+ "resource_id": 1,
+ "batch_system": "XDMoD",
+ "hostname_mode": "hostname",
+ "pcp_log_dir": "/data/pcp-logs/my_cluster_name",
+ "batchscript": {
+ "path": "/data/jobscripts/my_cluster_name",
+ "timestamp_mode": "start"
+ }
+ }
+ }
+}
+```
+
+The various settings are described in the table below:
+
+
+
+
Setting
Allowed values
Description
+
+
+
+
+
enabled
true | false
If set to false then this resource will be ignored by the software
+
+
+
resource_id
[integer]
The value from the id column in the modw.resourcefact table in the XDMoD database
+
+
+
batch_system
XDMoD
Sets the module used to obtain job accounting information. This should be set to XDMoD
+
+
+
hostname_mode
hostname | fqdn
Determines how compute node names as reported by the resource manager are compared
+with the node name information from the PCP archives.
+ If the resource manager reports just the hostname for compute nodes in the accounting logs then
+this value should be set to hostname. If the resource manager reports
+full domain names in the accounting logs then this value should be set to
+fqdn (see also the host_name_ext setting below).
+Typically, the Slurm resource manager reports just the hostname in the accounting logs.
+
+
+
host_name_ext
[domain name]
If the hostname_mode is fqdn and the host_name_ext is specified then the string will
+be appended to the node name from the PCP archives if it is absent. This is used to workaround misconfigured /etc/hosts files on the compute
+nodes that result in only the hostname information begin recorded in the PCP achive metadata.
+This setting is ignored if the hostname_mode is set to hostname and may be omitted in this case.
+
+
+
datasource
[pcp or prometheus]
Data collection software used to monitor the resource.
+
+
+
pcp_log_dir
[filesystem path]
Path to the PCP log files for the resource.
+
+
+
prom_host
[hostname]
Hostname for the Prometheus server monitoring the resource.
+
+
+
prom_user
[username]
Username for basic authentication to the Prometheus server.
+
+
+
prom_password
[password]
Password for basic authentication to the Prometheus server.
+
+
+
batchscript.path
[filesystem path]
Path to the batch script files. The batch scripts must be stored following
+the naming convention described in the job script documentation. Set this to an empty string if the
+batch script files are not saved.
+
+
+
batchscript.timestamp_mode
start | submit | end | none
How to interpret the
+directory timestamp names for the batch scripts. start means that the directory name corresponds
+to the job start time, submit the job submit time, end the job end time and none the timestamp
+should not be included in the job lookup.
+
+
+
+
+
+Database authentication settings
+--------------------------------
+
+The configuration file supports two different mechanisms to specify the access
+credentials for the Open XDMoD datawarehouse. **Choose one of these options.** Either:
+1. Specify the path to the Open XDMoD install location (and the code will use the Open XDMoD configuration directly) or
+2. Specify the location and access credentials directly.
+
+If the summarization software is installed on the same machine as Open XDMoD then (1) is the recommended option. Otherwise use option (2).
+
+### Option (1) XDMoD path specification ###
+
+If the summarization software is installed on the same machine as Open XDMoD
+then ensure the `config.json` has the following settings:
+
+```json
+{
+ ...
+ "xdmodroot": "/etc/xdmod",
+ "datawarehouse": {
+ "include": "xdmod://datawarehouse"
+ },
+}
+```
+
+Where xdmodroot should be set to the location of the xdmod configuration
+directory, typically `/etc/xdmod` for RPM based installs. Note that the user
+account that runs the summarization scripts will need to have read permission
+on the xdmod configuration files. For an RPM based install, the `xdmod` user
+account has the correct permission.
+
+### Option (2) Direct DB credentials ###
+
+If the summarization software is installed on a dedicated machine (separate
+from the Open XDMoD server), then the XDMoD datawarehouse location and access credentials
+should be specified as follows:
+
+Create a file called `.supremm.my.cnf` in the home directory of the user that
+will run the job summarization software. This file must include the username
+and password to the Open XDMoD datawarehouse mysql server:
+
+```ini
+[client]
+user=[USERNAME]
+password=[PASSWORD]
+```
+
+ensure the "datawarehouse" section of the `config.json` file has settings like
+the following, where *XDMOD\_DATABASE\_FILL\_ME\_IN* should be set to the hostname of
+the XDMoD database server.
+
+```json
+{
+ ...
+ "datawarehouse": {
+ "db_engine": "MySQLDB",
+ "host": "XDMOD_DATABASE_FILL_ME_IN",
+ "defaultsfile": "~/.supremm.my.cnf"
+ },
+}
+```
+
+MongoDB settings
+----------------
+
+If you used _Option (1) XDMoD path specification_ in the datawarehouse configuration then
+use the following configuration settings:
+
+```json
+{
+ ...
+ "outputdatabase": {
+ "include": "xdmod://jobsummarydb"
+ }
+}
+```
+
+Otherwise the MongoDB settings can be specified directly as follows:
+The `outputdatabase`.`uri` should be set to the uri of the MongoDB server that
+will be used to store the job level summary documents. The uri syntax is
+described in the [MongoDB documentation][]. You must specify the database name in
+the connection uri string in addition to specifying it in the `dbname` field
+
+```json
+{
+ ...
+ "outputdatabase": {
+ "type": "mongodb",
+ "uri": "mongodb://localhost:27017/supremm",
+ "dbname": "supremm"
+ },
+}
+```
+
+[MongoDB documentation]: https://docs.mongodb.org/manual/reference/connection-string/
+
+
+Setup the Database
+-------------------
+
+The summarization software uses relational database tables to keep track of
+which jobs have been summarized, when and which version of the software was
+used. These tables are added to the `modw_supremm` schema that was created when
+the Open XDMoD SUPReMM module was installed. The database creation script is
+located in the `/usr/share/supremm/setup` directory and should be run on the
+XDMoD datawarehouse DB instance.
+
+ $ mysql -u root -p < [PATH TO PYTHON SITE PACKAGES]/supremm/assets/modw_supremm.sql
+
+Where `[PATH TO PYTHON SITE PACKAGES]` is the path to the python site packages install directory
+(`/usr/lib64/python2.7` for a Centos 7 RPM install and `/usr/lib64/python3.6/site-packages`
+for Rocky 8 RPM install).
+
+Setup MongoDB
+-----------
+
+ $ mongo [MONGO CONNECTION URI] [PATH TO PYTHON SITE PACKAGES]/supremm/assets/mongo_setup.js
+
+where [MONGO CONNECTION URI] is the uri of the MongoDB database.
diff --git a/11.0/supremm-processing-install.md b/11.0/supremm-processing-install.md
new file mode 100644
index 00000000..6023e278
--- /dev/null
+++ b/11.0/supremm-processing-install.md
@@ -0,0 +1,63 @@
+
+The Job Summarization software should be installed on a server that has
+access to the MySQL server for the XDMoD Datawarehouse, either the PCP archives
+on disk OR the Prometheus server, and the MongoDB instance.
+
+## Prerequisites
+
+The Job Performance (SUPReMM) XDMoD module must be installed and configured
+before configuring the Job Summarization software. See [the XDMoD module install guide](supremm-install.md) for instructions
+on this.
+
+A MongoDB database instance must be installed and running. See the [MongoDB install guide](supremm-mongo) for instructions.
+
+## RPM Installation
+
+** Centos 7 **
+
+The RPM package has dependencies that are available in the [EPEL](http://fedoraproject.org/wiki/EPEL)
+repository. This repository can be added with this command:
+
+ # yum install epel-release
+
+It also requires the PCP python libraries, which are included in CentOS (since version 7.6).
+
+An RPM package for Centos 7 is [available for download](https://github.com/ubccr/supremm/releases/latest)
+
+ # yum install supremm-1.4.1-1.el7.x86_64.rpm
+
+**Rocky 8**
+
+The RPM package has dependencies that are available in the [EPEL](http://fedoraproject.org/wiki/EPEL)
+repository. This repository can be added with this command:
+
+ # dnf install epel-release
+
+It also requires the PCP python libraries, which are included in Rocky 8.
+
+An RPM package for Rocky 8 is [available for download](https://github.com/ubccr/supremm/releases/latest).
+
+ # dnf install supremm-{{ page.summ_sw_version }}-1.el8.x86_64.rpm
+
+## Source Installation
+
+The Job summarization software is written in python and uses [python setuptools](https://setuptools.readthedocs.io/en/latest/)
+for package creation. The 1.4 release depends on python 2.7 and the 2.0 release
+uses python 3.6. Source code installs are tested in a [conda environment](https://conda.io/docs/user-guide/install/download.html)
+and setup as follows.
+
+ $ conda create -n supremm python=[PYTHON VERSION] cython numpy scipy
+ $ source activate supremm
+
+where `[PYTHON VERSION]` should be set to 2.7 if using the 1.4 release or 3.6 if using the 2.0 release.
+
+The software is installed as follows:
+
+ $ tar xf supremm-{{ page.summ_sw_version }}.tar.gz
+ $ cd supremm-{{ page.summ_sw_version }}
+ $ python setup.py install
+
+
+# Configure Job summarization software
+
+After installing the Job summarization software it must be configured following the instructions in the [configuration guide](supremm-processing-configuration.md).
diff --git a/11.0/supremm-processing-upgrade.md b/11.0/supremm-processing-upgrade.md
new file mode 100644
index 00000000..e0cf28fd
--- /dev/null
+++ b/11.0/supremm-processing-upgrade.md
@@ -0,0 +1,36 @@
+---
+title: Job Summarization Upgrade Guide
+---
+
+Check the [software compatibilty tables](supremm-install-overview.md#software-compatibility)
+to determine which version of software to upgrade.
+
+## Prerequisites
+
+All periodic cron scripts should be disabled before upgrading the software.
+
+## Upgrade Software
+
+The upgrade procedure involves installing the new software package.
+
+### RPM upgrade Centos 7
+
+An RPM is provided for Centos 7 and is compiled against
+the version of PCP that ships with the distribution (PCP version 4.3.2).
+
+ # yum install supremm-1.4.1-1.el7.x86_64.rpm
+
+### RPM upgrade Rocky 8
+
+An RPM is provided for Rocky 8 and is compiled against
+the version of PCP that ships with the distribution (PCP version 5.3.7).
+
+ # dnf install supremm-{{ page.summ_sw_version }}-1.el8.x86_64.rpm
+
+### Source code upgrade
+
+ $ source activate supremm
+ $ tar xf supremm-{{ page.summ_sw_version }}.tar.gz
+ $ cd supremm-{{ page.summ_sw_version }}
+ $ python setup.py install
+
diff --git a/11.0/supremm-prometheus-use.md b/11.0/supremm-prometheus-use.md
new file mode 100644
index 00000000..bf5c833c
--- /dev/null
+++ b/11.0/supremm-prometheus-use.md
@@ -0,0 +1,86 @@
+**These instructions only apply to resources that will use Prometheus. Usage instructions for PCP be found [here](supremm-pcp-use.html).**
+
+The following describes how to query Prometheus and verify
+that metrics are being scraped properly.
+
+Prerequisites
+-------------
+Prometheus and the necessary exporters should be [installed](supremm-install-prometheus.html)
+and [configured](supremm-compute-prometheus.html) before continuing.
+
+Start Prometheus
+----------------
+
+ # systemctl enable prometheus
+ # systemctl start prometheus
+
+Check the status of the Prometheus Server
+-----------------------------------------
+The following query checks for the build info of a Prometheus server
+running on localhost port 9090 (default).
+
+ # curl http://localhost:9090/api/v1/status/buildinfo | jq
+ {
+ "status": "success",
+ "data": {
+ "version": "2.30.0",
+ "revision": "37468d88dce85ac507f3fb7864c7d1c078e3e27d",
+ "branch": "HEAD",
+ "buildUser": "user@host",
+ "buildDate": "20210914-09:49:24",
+ "goVersion": "go1.17.1"
+ }
+ }
+
+If this query does not work, refer back to the installation
+and configuration sections for more information.
+
+Check that targets are being scraped
+------------------------------------
+The following query checks for a metric being scraped by Prometheus.
+Depending on the number of nodes being scraped, this query may produce a lot of output.
+
+ # curl http://localhost:9090/api/v1/query?query=node_cpu_seconds_total | jq
+ {
+ "status": "success",
+ "data": {
+ "resultType": "vector",
+ "result": [
+ {
+ "metric": {
+ "__name__": "node_cpu_seconds_total",
+ "cluster": "prom",
+ "cpu": "0",
+ "environment": "dev",
+ "host": "cpn-01",
+ "instance": "cpn-01:9100",
+ "job": "compute",
+ "mode": "idle",
+ "role": "compute"
+ },
+ "value": [
+ 1694008748.671,
+ "42106739.42"
+ ]
+ },
+ {
+ "metric": {
+ "__name__": "node_cpu_seconds_total",
+ "cluster": "prom",
+ "cpu": "0",
+ "environment": "dev",
+ "host": "cpn-01",
+ "instance": "cpn-01:9100",
+ "job": "compute",
+ "mode": "iowait",
+ "role": "compute"
+ },
+ "value": [
+ 1694008748.671,
+ "40038.05"
+ ]
+ }
+ ...
+ ]
+ }
+ }
diff --git a/11.0/supremm-upgrade-overview.md b/11.0/supremm-upgrade-overview.md
new file mode 100644
index 00000000..10318c25
--- /dev/null
+++ b/11.0/supremm-upgrade-overview.md
@@ -0,0 +1,24 @@
+---
+title: SUPReMM Upgrade overview
+---
+
+This page describes the steps necessary to upgrade an existing XDMoD instance that
+already has Job Performance data. See the [install overview](supremm-install-overview.md) page
+for instructions for a fresh install.
+
+## Prerequisites
+
+Upgrades to a new version are only supported from the version that directly
+precedes it. If you need to upgrade from an older version you must upgrade
+through all the intermediate versions or perform a clean installation.
+
+Check the [software compatibilty tables](supremm-install-overview.md#software-compatibility)
+for the recommended versions of the various components.
+
+General Upgrade Notes
+---------------------
+
+We recommend upgrading the software components in the following order:
+1. [Open XDMoD](supremm-upgrade.md)
+1. [Job Summarization](supremm-processing-upgrade.md)
+1. Data Collection
diff --git a/11.0/supremm-upgrade.md b/11.0/supremm-upgrade.md
new file mode 100644
index 00000000..dc0359b7
--- /dev/null
+++ b/11.0/supremm-upgrade.md
@@ -0,0 +1,36 @@
+---
+title: SUPReMM Open XDMoD module Upgrade Guide
+---
+
+General Upgrade Notes
+---------------------
+
+The Job Performance (SUPReMM) XDMoD module should be upgraded at the same time as the main XDMoD
+software. The upgrade procedure is documented on the [XDMoD upgrade
+page](https://open.xdmod.org/upgrade.html). Downloads of RPMs and source
+packages for the Job Performance (SUPReMM) XDMoD module are available from
+[GitHub][github-latest-release]. The ingestion and aggregation
+script `aggregate_supremm.sh` **must** be run after the XDMoD software has been
+upgraded.
+
+Note that if you edited the `application.json` file you will need to re-apply
+these edits every time you upgrade as noted on [this page](customization.md).
+
+11.0.0 Upgrade Notes
+--------------------
+
+### Configuration File Changes
+
+The upgrade script will update the following configuration files:
+
+- `application.json` to add the MOM6, ROMS, NEXMD, Libra, DFTB+, and CDO
+ applications.
+- `efficiency_analytics.json` to remove the deprecated `rotate` setting and to
+ update the Short Job Count analytic to use a new `short_job_count` statistic.
+
+### Database Changes
+
+The upgrade script will add rows to the `modw_supremm.application` table for
+the MOM6, ROMS, NEXMD, Libra, DFTB+, and CDO applications.
+
+[github-latest-release]: https://github.com/ubccr/xdmod-supremm/releases/latest
diff --git a/_config.yml b/_config.yml
index c2973f51..40a647f5 100644
--- a/_config.yml
+++ b/_config.yml
@@ -26,16 +26,27 @@ url: "http://supremm.xdmod.org" # the base hostname & protocol for your site
github_username: ubccr
github_url: https://github.com/ubccr/xdmod-supremm
xdmod_module_name: Job Performance (SUPReMM)
-latest_version: "10.5"
-latest_sw_version: "10.5.0"
+latest_version: "11.0"
+latest_sw_version: "11.0.0"
version_list:
+ - "11.0"
- "10.5"
unsupported_version_list:
- "10.0"
- "9.5"
- - "9.0"
defaults:
+ -
+ scope:
+ path: "11.0"
+ type: "pages"
+ values:
+ layout: "page"
+ version: "11.0"
+ sw_version: "11.0.0"
+ summ_sw_version: "2.0.0"
+ style: "effervescence"
+ tocversion: "v10_5toc"
-
scope:
path: "10.5"
diff --git a/update.sh b/update.sh
index a5353948..cfd40321 100755
--- a/update.sh
+++ b/update.sh
@@ -3,7 +3,7 @@
set -e
-branches="xdmod10.5 xdmod10.0"
+branches="xdmod11.0 xdmod10.5 xdmod10.0"
latest="xdmod10.5"
SED=sed