Component Types template
Component types are defined using a YAML manifest with the following structure:
# General section
name: function_branin
description: A component type for the branin analytical function
# Parameters section
parameters:
- name: x1
domain:
type: real
domain: [-5.0, 10.0]
defaultValue: -5.0
decimals: 3
operators:
FileConfigurator:
confTemplate: "${value}"
- name: x2
domain:
type: real
domain: [0.0, 15.0]
defaultValue: 0.0
- name: x3
domain:
type: categorical
categories: [cat1,cat2,cat3]
operators:
LinuxConfigurator:
echo:
file: /sys/class/block/nvme0n1/queue/scheduler
# Metrics section
metrics:
- name: function_value
and properties for the general section:
name
string
should match the following regexp:
^[a-zA-Z][a-zA-Z0-9_]*$
that is only letters, number and underscores, no initial number of underscore
Notice: this should not match the name of another component
Yes
The name of the component.
description
string
Yes
A description to characterize the component.
componentType
string
notice: this should match the name of an existing component-type
Yes
The name of the component-type that defines the type of the component.
properties
object
No
General custom properties of the component. These properties can be defined freely and usually have the purpose to expose information useful for configuring the component.
The parameter section describes the relationship between the component type and already defined parameters with the following properties:
name
string
It should match the name of an existing parameter.
Yes
-
The name of the parameter that should be related to the component-type
domain->type
string
{real, integer, categorical}
Yes
-
The type of domain to be set for the parameter in relationship with the component-type
domain->domain
array of numbers
The numbers should be either all integers or real numbers(do not omit the " . ") depending on domain->type
.
The size of the array must be 2.
No
-
The bounds to be used to define the domain of the parameter. These bounds are inclusive
domain->categories
array of strings
No
-
The possible categories that the parameter could possess
defaultValue
string, integer, real
The value must be included in the domain, for real and integer types and must be a value included in the categories
Yes
-
The default value of the parameter
decimals
integer
[0-255]
No
5
The number of decimal digits rendered for this parameter
operators
object
Yes
-
Specify what operators can be used to apply the parameter
The metric section describes the relationship between the component type and already defined metrics with the following properties:
name
string
It should match the name of an existing metric
Yes
The name of the metric that should be related to the component type
Notice that component type definitions are shared across all the workspaces on the same Akamas installation, and require an account with administrative privileges to manage them.
Examples
Example of a component for the Cassandra component type:
name: Cassandra
description: The Cassandra NoSQL database version 3
parameters:
- name: cassandra_compactionStrategy
domain:
type: categorical
categories: [A, B]
defaultValue: A
metrics:
- name: total_rate
- name: read_rate
- name: write_rate
- name: read_response_time_avg
- name: read_response_time_p90
- name: read_response_time_p99
- name: read_response_time_max
- name: write_response_time_avg
- name: write_response_time_p90
- name: write_response_time_p99
- name: write_response_time_max
Example of a component for the Linux operating component type:
name: Linux OS
description: A component type for the Linux Operating System
parameters:
#CPU Related
- name: os_cpuSchedMinGranularity
domain:
type: integer
domain: [300000, 30000000]
defaultValue: 3000000
- name: os_cpuSchedWakeupGranularity
domain:
type: integer
domain: [400000, 40000000]
defaultValue: 4000000
- name: osCpu.schedMigrationCost
domain:
type: integer
domain: [100000, 5000000]
defaultValue: 500000
- name: os_CPUSchedChildRunsFirst
domain:
type: integer
domain: [0, 1]
defaultValue: 0
- name: os_CPUSchedLatency
domain:
type: integer
domain: [2400000, 240000000]
defaultValue: 24000000
- name: os_CPUSchedAutogroupEnabled
domain:
type: integer
domain: [0, 1]
defaultValue: 1
- name: os_CPUSchedNrMigrate
domain:
type: integer
domain: [3, 320]
defaultValue: 32
#Memory Related
- name: os_MemorySwappiness
domain:
type: integer
domain: [0, 100]
defaultValue: 60
- name: os_MemoryVmVfsCachePressure
domain:
type: integer
domain: [10, 100]
defaultValue: 100
- name: os_MemoryVmMinFree
domain:
type: integer
domain: [10240, 1024000]
defaultValue: 67584
- name: os_MemoryVmDirtyRatio
domain:
type: integer
domain: [1, 99]
defaultValue: 10
- name: os_MemoryTransparentHugepageEnabled
domain:
type: categorical
categories: ['True', 'False']
defaultValue: 'True'
- name: os_MemoryTransparentHugepageDefrag
domain:
type: categorical
categories: ['True', 'False']
defaultValue: 'True'
- name: os_MemorySwap
domain:
type: categorical
categories: ['True', 'False']
defaultValue: 'True'
- name: os_MemoryVmDirtyExpire
domain:
type: integer
domain: [300, 30000]
defaultValue: 3000
- name: os_MemoryVmDirtyWriteback
domain:
type: integer
domain: [50, 5000]
defaultValue: 500
metrics:
- name: cpu_num
- name: cpu_util
- name: mem_util
- name: load_avg
- name: swapins
- name: swapouts
- name: disk_iops_writes
- name: disk_iops_reads
- name: disk_iops_total
- name: disk_await_worst
- name: proc_blocked
- name: context_switch
- name: tcp_retrans
- name: tcp_tozerowin
- name: net_band_rx_bits
- name: net_band_tx_bits
- name: network_in_byte_rate
- name: network_out_byte_rate
- name: mem_fault_minor
- name: mem_fault_major
- name: mem_active_file
- name: mem_active_anon
- name: mem_inactive_file
- name: mem_inactive_anon
Last updated
Was this helpful?