Reporting Properties
Schema
The directory where the report template schema are stored.
schema=WEB-INF/schema/
Stylesheets
The directory where the report templates stylesheets are stored.
stylesheets=WEB-INF/stylesheets/
ReportTemplates
The directory where the report templates are stored.
report-templates=WEB-INF/report-templates/
TextFileOverlay
The database table which stores the overrides the schema, stylesheets or report templates.
table.overlay=TextFileOverlay
PlotEntry
The report chart can plot PlotEntry. The List of PlotEntry which can be plotted is defined by the property 'PlotEntry.list'.
PlotEntry.list=RawAUs,AUs,Residency,WaitTime
A PlotEntry defines what value is to be plotted and how that value should be mapped onto a period of time. Though these parameters can be specified in the report template defining a PlotEntry using configuration parameters allows these settings to be re-used in multiple templates and to be presented as a list of options.
The example above states that there are four properties which can be plotted 'RawAUs', 'AUs','Residency','WaitTime'.
For each of these PlotEntries several properties can be specified. They are defined as PlotEntry.<plot-entry-name>.<property-name>. There are 11 PotEntry properties which can be specified: 'description','plot', 'start', 'end', 'reduction', 'label', 'scale', 'cutoff', 'ratescale', 'timescale' and 'timeunit' . The 'WaitTime' PlotEntry 'plot' Property would be 'PlotEntry.WaitTime.plot'. They are described in detail below.
Description
Descriptive text for this plot entry used when presenting a list of properties to plot. This defaults to the same as the name of the PlotEntry.
Plot
Below is the 'WaitTime' PlotEntry 'plot' Property. This defines the numerical AccountingProperty that should be plotted on the graph. This can be either a single AccountingProperty or a PropExrpression.
PlotEntry.WaitTime.plot=CPUWait
In this example we are using the 'CPUWait' AccountingProperty which is the product of the number of CPUs used and the number of milliseconds the job waited in the queue before being started. If this property is not specified then the system will look for an AccountingProperty with the same name as the PlotEntry.
Plot label
This is the default label used to label the quantity being plotted.
PlotEntry.WaitTime.label=CPU*Wait/sec
Plot Scale
This is scale factor applied to the plot. For example to convert between different units. The same effect can be obtained by using a PropExpression to scale the property.
PlotEntry.WaitTime.scale=0.001
In the above example we are converting from milliseconds to seconds.
Plot Range
These are the names of Date values AccountingProperty that define the period of time that the accounting record should be mapped to. If only the 'end' property is defined then the record is mapped to that single point in time. If both 'start' and 'end' are defined then the numerical value is spread evenly across the time period. If no 'end' property is specified then 'CompletedTimestamp' is used by default.
PlotEntry.WaitTime.start=SubmittedTimestamp PlotEntry.WaitTime.end=StartedTimestamp
In the above example as the AccountingProperty relates to (and is proportional to) job wait times we plot the value across the time period when the job was waiting. Note that for efficient plot generation there should be a database index for each of the Date AccountingProperty s that are used in this way. Plots will be generated more quickly if you only specify the 'end' AccountingProperty but may be less informative especially when looking at plots over short periods of time.
PlotEntry.Residency.cutoff=180000000
When both a 'start' and an 'end' property are specified but you know in advance that difference between these two values will never be greater than a certain period of time you can improve the performance of plot generation by specifying this as a cutoff value. Cutoff values are always in units of milliseconds. This optimisation becomes particularly important when the database table contains a very large number of records.
Rate Scale Plots
A Rate Scale Plot only makes sense when the value being plotted is proportional to the extent of the period, i.e. both ends of the plot range are specified.
PlotEntry.WaitTime.ratescale=true
If this is set to true then each value in the plot is divided by the number of milliseconds in each plot period in order to convert the plot value to a rate.
This property only applies when the PlotEntry is plotted as a TimeChart.
PlotEntry.WaitTime.ratescale.scale=1000
This is a scaling factor that is applied as part of the ratescale transformation. In this example we are removing the conversion from milliseconds to seconds so that the ratescaled plot shows the number of waiting CPUs.
PlotEntry.WaitTime.ratescale.label=CPU
This is the label to be used for the rate-scaled plot.
Reduction
This specifies the reduction operation used to combine records that map to the plot period. This can be one of SUM,MIN,MAX,AVG.
Cumulative Plots
A Cumulative Plot is one where the values are added to previous values and accumulate. This would be useful to show how a Project used up a budget, for example.
PlotEntry.TotalWall.Plot=Wall PlotEntry.TotalWall.Label=Total Wall Clock Time PlotEntry.TotalWall.cumulative=true
GroupEntry
Most charts allow you to group the plot values together into sets, for example you may plot the Wall time for the machine but group it by project to show how much usage there is per project. The types of grouping that can be used are defined using a 'MapperEntry'. The list of MapperEntries supported is defined by the property 'MapperEntry.list'
GroupEntry.list=Project, UserName, MachineName, GroupName, Queue, Account
Above is an example where there are 6 GroupEntries defined: 'UserName', 'MachineName', 'GroupName', 'Queue', 'Account'.
For each of these GroupEntries several properties can be specified. They are defined as GroupEntry.<mapper-entry-name>.<property-name>.
GroupEntry.Project.group
Above is the 'Project' GroupEntry 'group' Property. There are 2 GroupEntry properties which can be specified: 'group' and 'labeller'. They are described in detail below.
GroupEntry.Project.group=ProjectID
This is the AccountingProperty or PropExpression used to divide the records into different sets. If this is not defined then the system will look for and AccountingProperty with the same name as the GroupEntry. This is sufficient for most cases so it is often possible to just specify the required AccountingProperty name in the GroupEntry.list
GroupEntry.Project.labeller=uk.ac.hpcx.model.accounting.ProjectLabeller
By default the various sets will be labeled using the value of the 'group' AccountingProperty. Optionally it is also possible to define a Labeler class that converts these values into the label string. If multiple AccountingProperty values are mapped to the same label then they will be plotted as a single set. This property gives the name of a java class that implements the uk.ac.ed.epcc.safe.accounting.Labeller interface. If the 'group' property is a RefernenceProperty a defaul labeller will be used that takes the name of the referenced object.