-
Notifications
You must be signed in to change notification settings - Fork 1
System Workload Description
Andre Merzky edited this page Oct 22, 2013
·
1 revision
This System Workload Description is an expansion of the [[Workload Description]], tailored towards modeling purposes. As such, it does not contain details which are only relevant for actual workload execution (executable, arguments, environment...), but focuses on the resource requirements and runtime dependencies of the components. Also, several parameters are now required in order to fully specify the workload to be mapped to the infrastructure.
This spec uses the EBNF notation.
#
# Characters
#
LETTER = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m"
| "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" ;
DIGIT = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "-" ;
SYMBOL = "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">" | "'" | '"' | "="
| "|" | "." | "," | ";" | ":" | "_" | "-" | "+" | "&" | "*" | "%"
| "@" | "!" | "?" | "~" | "`" | "#" | "$" | "^" ;
WHITESPACE = " " ;
#
# Positive and negative numbers
#
NUMBER = DIGIT, { DIGIT } ;
#
# Free text strings
#
STRING = "'", { LETTER | DIGIT | SYMBOL | WHITESPACE }, "'" ;
#
# Unique identifiers for objects
#
IDENTIFIER = LETTER, {LETTER | DIGIT | "_" | "-" } ;
#
# pre-defined keys
#
COMP_ARCH = 'ARCHITECTURE'
COMP_LOAD = 'FLOPs'
MEM_FREQ = 'MEMORY_IO_FREQUENCY'
MEM_CHUNK = 'MEMORY_IO_CHUNKSIZE'
MEM_SIZE = 'MEMORY_SIZE_MAX'
IO_FREQ = 'DISK_IO_FREQUENCY'
IO_CHUNK = 'DISK_IO_CHUNKSIZE'
IO_SIZE = 'DISK_SIZE_MAX'
NET_IN_FREQ = 'NETWORK_INPUT_FREQUENCY'
NET_IN_CHUNK = 'NETWORK_INPUT_CHUNKSIZE'
NET_OUT_FREQ = 'NETWORK_OUTPUT_FREQUENCY'
NET_OUT_CHUNK = 'NETWORK_OUTPUT_CHUNKSIZE'
#
# pre-defined values
#
ANY = '*'
#
# ordering dependencies
#
REL_TYPE = { 'CONCURRENT' # Start ONE and TWO concurrently
| 'SEQUENTIAL_START' # Start TWO when ONE is started
| 'SEQUENTIAL_END' # Start TWO when ONE is finished
| 'NONE' # Startup sequence is irrelevant
} ;
#
# Components
#
COMP_ID = IDENTIFIER ;
COMP_ARCH = STRING | ANY ;
COMP_LOAD = NUMBER | ANY ;
MEM_FREQ = NUMBER | ANY ;
MEM_CHUNK = NUMBER | ANY ;
MEM_SIZE = NUMBER | ANY ;
IO_FREQ = NUMBER | ANY ;
IO_CHUNK = NUMBER | ANY ;
IO_SIZE = NUMBER | ANY ;
NET_IN_FREQ = NUMBER | ANY ;
NET_IN_CHUNK = NUMBER | ANY ;
NET_OUT_FREQ = NUMBER | ANY ;
NET_OUT_CHUNK = NUMBER | ANY ;
COMPONENT = COMP_ID,
COMP_ARCH, COMP_LOAD,
MEM_FREQ, MEM_CHUNK, MEM_SIZE,
IO_FREQ, IO_CHUNK, IO_SIZE
NET_IN_FREQ, NET_IN_CHUNK,
NET_OUT_FREQ, NET_OUT_CHUNK
#
# Relations between components -- directed edge
#
COMP_1 = COMP_ID ; # source, from, etc.
COMP_2 = COMP_ID ; # dest, to, etc.
REL_TYPE = RELATION_TYPE ;
RELATION = COMP_1, COMP_2, REL_TYPE
#
# Workload description
#
WORKLOAD_DESCRIPTION = { COMPONENT } , { RELATION } ;