# Copyright (c) 2012 Flowerfire, Inc. All Rights Reserved. slurm = { plugin_version = "1.0" info.1.manufacturer = "SchedMD" info.1.device = "SLURM" info.1.version.1 = "" # 2012-11-05 - 1.0 - MSG - Initial creation # The name of the log format log.format.format_label = "SLURM Log Format" log.miscellaneous.log_data_type = "generic" log.miscellaneous.log_format_type = "other" # sacct command line options # sacct -P --allocations --format=Account,CPUTimeRAW,Eligible,End,JobName,JobID,NCPUS,NNodes,Partition,QOS,Start,State,Submit,Timelimit,User # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "^Account[|]CPUTimeRAW[|]Eligible[|]" # Use pipe as the field separator log.format.field_separator = "|" # Log fields log.fields = { date = "" time = "" account.index = 1 cputimeraw.index = 2 eligible.index = 3 end.index = 4 jobname.index = 5 jobid.index = 6 ncpus.index = 7 nnodes.index = 8 partition.index = 9 qos.index = 10 start.index = 11 submit.index = 12 timelimit.index = 13 user.index = 14 wait_time = 15 # This is a derived field by customer request # start - submit = wait time } # log.fields # Log Parsing Filters log.parsing_filters.parse = ` # if (state ne 'COMPLETED') then "reject"; if (matches_regular_expression(start, '^([0-9-]*)T([0-9:]*)$')) then ( date = $1; time = $2; ); # Compute wait_time end = date_time_to_epoc((normalize_date(substr(end, 0, 10), 'auto')) . ' ' . normalize_time(substr(end, 11), 'auto')); eligible = date_time_to_epoc((normalize_date(substr(eligible, 0, 10), 'auto')) . ' ' . normalize_time(substr(eligible, 11), 'auto')); start = date_time_to_epoc((normalize_date(substr(start, 0, 10), 'auto')) . ' ' . normalize_time(substr(start, 11), 'auto')); submit = date_time_to_epoc((normalize_date(substr(submit, 0, 10), 'auto')) . ' ' . normalize_time(substr(submit, 11), 'auto')); wait_time = start - eligible; ` # Log Filters log.filters = { # Reject lines where state is not "COMPLETED" # reject_incomplete = { # label = "Reject incomplete jobs" # comment = "This filter rejects lines where the state is not 'COMPLETED'" # value = `if (state ne 'COMPLETED') then "reject";` # } # reject_incomplete # reject_incomplete = { # label = "Reject incomplete jobs" # comment = "This filter rejects lines where the state is not 'COMPLETED'" # value = `if !(contains(current_log_line(), 'COMPLETED')) then "reject";` # } # reject_incomplete mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'events = 1;' } # mark_entry } # log.filters # Database fields database.fields = { date_time = "" day_of_week = "" hour_of_day = "" account = "" eligible = "" end = "" jobid = "" jobname = "" partition = "" qos = "" start = "" submit = "" timelimit = "" user = "" } # database.fields database.numerical_fields = { events = { label = "$lang_stats.field_labels.jobs" default = true requires_log_field = false entries_field = true } # events cputimeraw = { # type = "int" # integer_bits = 64 display_format_type = "duration_compact" } # cputimeraw ncpus = { type = "float" display_format_type = "two_digit_fixed" # type = "int" # integer_bits = 64 # display_format_type = "integer" aggregation_method = "average" average_denominator_field = "events" } # ncpus nnodes = { type = "float" display_format_type = "two_digit_fixed" # type = "int" # integer_bits = 64 # display_format_type = "integer" aggregation_method = "average" average_denominator_field = "events" } # nnodes wait_time = { # type = "int" # integer_bits = 64 display_format_type = "duration_compact" } # wait_time } # database.numerical_fields statistics.report_fields = { eligible = { database_field = "eligible" display_format_type = "epoc_to_date_time" label = "{=capitalize(expand(lang_stats.field_labels.eligible))=}" } # eligible end = { database_field = "end" display_format_type = "epoc_to_date_time" label = "{=capitalize(expand(lang_stats.field_labels.end))=}" } # end start = { database_field = "start" display_format_type = "epoc_to_date_time" label = "{=capitalize(expand(lang_stats.field_labels.start))=}" } # start submit = { database_field = "submit" display_format_type = "epoc_to_date_time" label = "{=capitalize(expand(lang_stats.field_labels.submit))=}" } # submit } # statistics.report_fields create_profile_wizard_options = { manual_reports_menu = true report_groups = { overview.type = "overview" date_time_group = "" single_page_summary = true account = { report_elements = { 0 = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.account)))=}" show_graphs = "true" show_table = "true" sort_by = "cputimeraw" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" columns = { 0.report_field = "account" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # account user = { report_elements = { 0 = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.user)))=}" show_graphs = "true" show_table = "true" sort_by = "cputimeraw" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" columns = { 0.report_field = "user" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # user account_utilization_by_user = { label = "Account Utilization by User" report_elements = { 0 = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.account)))=}" show_graphs = "true" show_table = "true" sort_by = "cputimeraw" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" pivot_table = { show_pivot_table = "true" report_field = "user" } # pivot_table columns = { 0.report_field = "account" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # account_utilization_by_user partition = { report_elements = { 0 = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.partition)))=}" show_graphs = "true" show_table = "true" sort_by = "cputimeraw" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" columns = { 0.report_field = "partition" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # partition qos = { label = "{=capitalize(expand(lang_stats.field_labels.qos))=}" report_elements = { 0 = { show_graphs = "true" show_table = "true" sort_by = "cputimeraw" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" columns = { 0.report_field = "qos" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # qos timelimit = { report_elements = { 0 = { label = "{=capitalize(pluralize(expand(lang_stats.field_labels.timelimit)))=}" show_graphs = "true" show_table = "true" sort_by = "events" sort_direction = "descending" number_of_rows = "20" graphs.graph_type = "pie" columns = { 0.report_field = "timelimit" 1 = { report_field = "cputimeraw" show_percent_column = true show_bar_column = true show_graph = true } # 1 2 = { report_field = "events" show_percent_column = true show_bar_column = true show_graph = true } # 2 3.report_field = "ncpus" 4.report_field = "nnodes" 5.report_field = "wait_time" } # columns } # 0 } # report_elements } # timelimit log_detail = { sort_by = "jobid" sort_direction = "ascending" number_of_rows = "50" columns = { 0.report_field = "jobid" 1.report_field = "jobname" 2.report_field = "user" 3.report_field = "account" 4.report_field = "nnodes" 5.report_field = "ncpus" 6.report_field = "partition" 7.report_field = "qos" 8.report_field = "cputimeraw" 9.report_field = "timelimit" 10.report_field = "submit" 11.report_field = "eligible" 12.report_field = "start" 13.report_field = "end" 14.report_field = "wait_time" } # columns } # log_detail } # report_groups } # create_profile_wizard_options } # slurm