[234] | 1 | <?xml version="1.0" encoding="UTF-8"?> |
---|
| 2 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" |
---|
| 3 | elementFormDefault="qualified" attributeFormDefault="unqualified"> |
---|
[293] | 4 | |
---|
[315] | 5 | <xs:complexType name="pluginType"> |
---|
[293] | 6 | <xs:annotation> |
---|
[325] | 7 | <xs:documentation>Base plugin type. |
---|
| 8 | Plugins allow a researcher to configure and adapt the simulation framework to his/her experiment |
---|
| 9 | starting from modeling job performance, through method of calculating energy estimation up to implementation of scheduling policies |
---|
| 10 | Name of the plugin specifies the JAVA class that implements dedicated interface.</xs:documentation> |
---|
[293] | 11 | </xs:annotation> |
---|
| 12 | <xs:sequence> |
---|
[296] | 13 | <xs:element name="name" type="xs:string"></xs:element> |
---|
[299] | 14 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[293] | 15 | </xs:sequence> |
---|
| 16 | </xs:complexType> |
---|
[234] | 17 | |
---|
[315] | 18 | <xs:complexType name="timeEstimationPluginType"> |
---|
| 19 | <xs:annotation> |
---|
[325] | 20 | <xs:documentation>TimeEstimationPlugin derived from Plugin. |
---|
| 21 | Time estimation plugin provides means to include specific application performance models during simulations |
---|
| 22 | and allows researchers to introduce specific ways of calculating task execution time.</xs:documentation> |
---|
[315] | 23 | </xs:annotation> |
---|
| 24 | <xs:complexContent> |
---|
[325] | 25 | <xs:restriction base="pluginType"> |
---|
| 26 | <xs:sequence> |
---|
| 27 | <xs:element name="name" type="xs:string" default="ExecTimeEstimationPlugin"></xs:element> |
---|
| 28 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
| 29 | </xs:sequence> |
---|
| 30 | </xs:restriction> |
---|
[315] | 31 | </xs:complexContent> |
---|
| 32 | </xs:complexType> |
---|
[303] | 33 | |
---|
[296] | 34 | <xs:complexType name="resourceType"> |
---|
| 35 | <xs:annotation> |
---|
[325] | 36 | <xs:documentation>Base resource type. |
---|
| 37 | It allows to define simulation entities like computing resources, devices, schedulers. |
---|
| 38 | Attributes: class - determines the component of the architecture i.e rack, processor, memory, storage etc. |
---|
| 39 | type - type of resource; for instance, continuous for memory, bandwidth, etc. and discrete for processors |
---|
| 40 | name - unique resource identifier, if not specified it will be generated by the simulator in the following manner: class + "_" + subsequent_natural_number |
---|
| 41 | </xs:documentation> |
---|
[296] | 42 | </xs:annotation> |
---|
[299] | 43 | <xs:sequence> |
---|
[315] | 44 | <xs:element name="description" type="xs:string" minOccurs="0"></xs:element> |
---|
[299] | 45 | </xs:sequence> |
---|
[315] | 46 | <xs:attribute name="class" type="xs:string" use="required"/> |
---|
| 47 | <xs:attribute name="type" type="xs:string" use="optional"/> |
---|
[325] | 48 | <xs:attribute name="name" type="xs:ID" use="optional"/> |
---|
[293] | 49 | </xs:complexType> |
---|
| 50 | |
---|
[298] | 51 | <xs:complexType name="computingResourceType"> |
---|
[293] | 52 | <xs:annotation> |
---|
[325] | 53 | <xs:documentation> ComputingResource derived from Resource |
---|
| 54 | Computing resource specifies resources that are able to perform computing operations. |
---|
| 55 | From the simulator point of view computing resource is everything that is/contains processing element. |
---|
| 56 | Hence, all entities like core, processor, computing node, as well as those which aggregate them (like shelf, rack, container etc.) |
---|
| 57 | should be define using this type. This way of description provides flexibility in defining system architecture |
---|
| 58 | and allows to build hierarchy of resources that corresponds to real world. |
---|
| 59 | Attributes: groupId - allows to group resources of the given class in the logical structures that can be used during binding them with schedulers |
---|
| 60 | count - defines number of resources of the given class</xs:documentation> |
---|
[293] | 61 | </xs:annotation> |
---|
| 62 | <xs:complexContent> |
---|
[296] | 63 | <xs:extension base="resourceType"> |
---|
[315] | 64 | <xs:sequence> |
---|
| 65 | <xs:choice> |
---|
| 66 | <xs:sequence> |
---|
| 67 | <xs:element name="resourceUnit" type="resourceUnitType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
| 68 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
| 69 | <xs:element name="energyEstimationPlugin" type="energyEstimationPluginType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[317] | 70 | <xs:element name="profile" type="profileType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[325] | 71 | <xs:element name="location" type="locationType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
| 72 | <xs:element name="computingResource" type="computingResourceType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[315] | 73 | </xs:sequence> |
---|
[325] | 74 | <xs:sequence> |
---|
| 75 | <xs:element name="templateId" type="xs:IDREF"/> |
---|
| 76 | <xs:element name="location" type="locationType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
| 77 | </xs:sequence> |
---|
[315] | 78 | </xs:choice> |
---|
| 79 | </xs:sequence> |
---|
[299] | 80 | <xs:attribute name="groupId" type="xs:integer" use="optional"/> |
---|
[298] | 81 | <xs:attribute name="count" type="xs:integer" use="optional"/> |
---|
[293] | 82 | </xs:extension> |
---|
| 83 | </xs:complexContent> |
---|
| 84 | </xs:complexType> |
---|
| 85 | |
---|
[298] | 86 | <xs:complexType name="computingResourceTemplateType"> |
---|
[293] | 87 | <xs:annotation> |
---|
[325] | 88 | <xs:documentation>ComputingResourceTemplate derived from Resource. |
---|
| 89 | It allows to define model of computing resource component that may constitute other computing resources |
---|
| 90 | Computing resource templates can be then referred in computing resource definition</xs:documentation> |
---|
[293] | 91 | </xs:annotation> |
---|
| 92 | <xs:complexContent> |
---|
[298] | 93 | <xs:extension base="resourceType"> |
---|
| 94 | <xs:sequence> |
---|
[299] | 95 | <xs:element name="resourceUnit" type="resourceUnitType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[312] | 96 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[298] | 97 | <xs:element name="energyEstimationPlugin" type="energyEstimationPluginType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[317] | 98 | <xs:element name="profile" type="profileType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[325] | 99 | <xs:element name="computingResource" type="computingResourceType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[293] | 100 | </xs:sequence> |
---|
| 101 | </xs:extension> |
---|
| 102 | </xs:complexContent> |
---|
| 103 | </xs:complexType> |
---|
| 104 | |
---|
| 105 | <xs:complexType name="schedulerType"> |
---|
| 106 | <xs:annotation> |
---|
[325] | 107 | <xs:documentation>Scheduler derived from Resource. |
---|
| 108 | It allows to model scheduling entity responsible for managing resources.</xs:documentation> |
---|
[293] | 109 | </xs:annotation> |
---|
| 110 | <xs:complexContent> |
---|
[296] | 111 | <xs:extension base="resourceType"> |
---|
| 112 | <xs:sequence> |
---|
[293] | 113 | <xs:element name="schedulingPlugin" type="schedulingPluginType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[299] | 114 | <xs:choice minOccurs="1" maxOccurs="unbounded"> |
---|
[293] | 115 | <xs:element name="scheduler" type="schedulerType"></xs:element> |
---|
[325] | 116 | <xs:element name="managedComputingResources" type="managedComputingResourcesType"></xs:element> |
---|
[293] | 117 | </xs:choice> |
---|
[299] | 118 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[293] | 119 | </xs:sequence> |
---|
| 120 | </xs:extension> |
---|
| 121 | </xs:complexContent> |
---|
| 122 | </xs:complexType> |
---|
| 123 | |
---|
| 124 | <xs:complexType name="schedulingPluginType"> |
---|
| 125 | <xs:annotation> |
---|
[325] | 126 | <xs:documentation>SchedulingPlugin derived from Plugin. Scheduling plugins allow plugging scheduling algorithms into the simulated environment. |
---|
| 127 | Elements: frequency - is used to enable scheduling periodically; it specifies the time interval (in seconds by default) between subsequent scheduling invocations |
---|
| 128 | </xs:documentation> |
---|
[293] | 129 | </xs:annotation> |
---|
[315] | 130 | <xs:complexContent> |
---|
| 131 | <xs:extension base="pluginType"> |
---|
| 132 | <xs:sequence> |
---|
[325] | 133 | <xs:element name="frequency" type="valueWithUnitType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[315] | 134 | </xs:sequence> |
---|
| 135 | </xs:extension> |
---|
| 136 | </xs:complexContent> |
---|
[293] | 137 | </xs:complexType> |
---|
| 138 | |
---|
[296] | 139 | <xs:complexType name="resourceUnitType"> |
---|
[293] | 140 | <xs:annotation> |
---|
[325] | 141 | <xs:documentation>Resource unit is used to define non-computing resource like memory, storage etc |
---|
| 142 | Elements: amount - represents concrete amount (values) of specific resource unit</xs:documentation> |
---|
[293] | 143 | </xs:annotation> |
---|
| 144 | <xs:complexContent> |
---|
[296] | 145 | <xs:extension base="resourceType"> |
---|
| 146 | <xs:sequence> |
---|
[325] | 147 | <xs:element name="amount" type="valueWithUnitType"/> |
---|
[317] | 148 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[296] | 149 | </xs:sequence> |
---|
[293] | 150 | </xs:extension> |
---|
| 151 | </xs:complexContent> |
---|
| 152 | </xs:complexType> |
---|
[325] | 153 | |
---|
| 154 | <xs:complexType name="valueWithUnitType"> |
---|
| 155 | <xs:annotation> |
---|
| 156 | <xs:documentation>ValueWitUnit derived from double. Allows to provide units in which a given value is expressed |
---|
| 157 | Attributes: unit - indicate appropriate units, for instance: seconds, watts, bytes etc. </xs:documentation> |
---|
| 158 | </xs:annotation> |
---|
| 159 | <xs:simpleContent> |
---|
| 160 | <xs:extension base="xs:double"> |
---|
| 161 | <xs:attribute name="unit" type="xs:string" use="optional"/> |
---|
| 162 | </xs:extension> |
---|
| 163 | </xs:simpleContent> |
---|
| 164 | </xs:complexType> |
---|
[293] | 165 | |
---|
[325] | 166 | <xs:complexType name="managedComputingResourcesType"> |
---|
[293] | 167 | <xs:annotation> |
---|
[325] | 168 | <xs:documentation>ManagedComputingResource type specifies controlled (by scheduler) computing resources. |
---|
| 169 | They can be provided either by listing their names or listing the group ids for which they belong |
---|
| 170 | Attributes: include - specifies whether scheduler shoud be built on top of given resources or shoud also incude them. |
---|
| 171 | In other words, false (default) value indicates that scheduler maaner only subcomponents of the listed resources; |
---|
| 172 | true value determines that also listed resources will be under the control of the defined scheduler</xs:documentation> |
---|
[293] | 173 | </xs:annotation> |
---|
[325] | 174 | <xs:choice> |
---|
| 175 | <xs:sequence> |
---|
| 176 | <xs:element name="resourceName" type="xs:string" minOccurs="1" maxOccurs="unbounded"></xs:element> |
---|
| 177 | </xs:sequence> |
---|
| 178 | <xs:sequence> |
---|
| 179 | <xs:element name="resourceGroupId" type="xs:string" minOccurs="1" maxOccurs="unbounded"></xs:element> |
---|
| 180 | </xs:sequence> |
---|
| 181 | </xs:choice> |
---|
[310] | 182 | <xs:attribute name="include" type="xs:boolean" default="false"/> |
---|
[293] | 183 | </xs:complexType> |
---|
[234] | 184 | |
---|
[293] | 185 | <xs:complexType name="energyEstimationPluginType"> |
---|
[234] | 186 | <xs:annotation> |
---|
[325] | 187 | <xs:documentation>EnergyEstimationPlugin derived from Plugin. |
---|
| 188 | Energy estimation plugin is used to customize estimation of energy consumptions of the given computing resource |
---|
[332] | 189 | to specific applications and hardware. It has access to the detailed resource description including power and air throughput profiles |
---|
| 190 | and application characteristics running on a given resource</xs:documentation> |
---|
[293] | 191 | </xs:annotation> |
---|
[315] | 192 | <xs:complexContent> |
---|
| 193 | <xs:extension base="pluginType"/> |
---|
| 194 | </xs:complexContent> |
---|
[293] | 195 | </xs:complexType> |
---|
| 196 | |
---|
[317] | 197 | <xs:complexType name="profileType"> |
---|
[293] | 198 | <xs:annotation> |
---|
[325] | 199 | <xs:documentation>Profile acts as a container for resource profiles: power and air throughput</xs:documentation> |
---|
[293] | 200 | </xs:annotation> |
---|
| 201 | <xs:sequence> |
---|
[317] | 202 | <xs:element name="powerProfile" type="powerProfileType" minOccurs="0"></xs:element> |
---|
| 203 | <xs:element name="airThroughputProfile" type="airThroughputProfileType" minOccurs="0"></xs:element> |
---|
[293] | 204 | </xs:sequence> |
---|
| 205 | </xs:complexType> |
---|
| 206 | |
---|
[317] | 207 | <xs:complexType name="powerProfileType"> |
---|
[296] | 208 | <xs:annotation> |
---|
[325] | 209 | <xs:documentation>Power profile allows powerState and other power-related paremters definition</xs:documentation> |
---|
[296] | 210 | </xs:annotation> |
---|
[282] | 211 | <xs:sequence> |
---|
[317] | 212 | <xs:element name="powerStates" type="powerStatesType" minOccurs="0"></xs:element> |
---|
| 213 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[282] | 214 | </xs:sequence> |
---|
| 215 | </xs:complexType> |
---|
[234] | 216 | |
---|
[282] | 217 | <xs:complexType name="powerStatesType"> |
---|
[296] | 218 | <xs:annotation> |
---|
[338] | 219 | <xs:documentation>PowerState type act as a container for power states. It contains energy-related characteristcs of the computing resource</xs:documentation> |
---|
[296] | 220 | </xs:annotation> |
---|
[325] | 221 | <xs:sequence> |
---|
| 222 | <xs:element name="powerState" type="powerStateType" minOccurs="1" maxOccurs="unbounded"></xs:element> |
---|
[296] | 223 | </xs:sequence> |
---|
[282] | 224 | </xs:complexType> |
---|
| 225 | |
---|
| 226 | <xs:complexType name="powerStateType"> |
---|
[296] | 227 | <xs:annotation> |
---|
[325] | 228 | <xs:documentation>Power state defines availabe (for computing resource) power states. |
---|
| 229 | Elements: name - denotes name of the given power state |
---|
| 230 | powerUsage - defines power consumption in the given state |
---|
| 231 | transition - specifies possible power states transitions form the given power state</xs:documentation> |
---|
[296] | 232 | </xs:annotation> |
---|
[282] | 233 | <xs:sequence> |
---|
| 234 | <xs:element name="name" type="xs:string"></xs:element> |
---|
[325] | 235 | <xs:element name="powerUsage" type="valueWithUnitType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
| 236 | <xs:element name="transition" type="powerStatesTransitionType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[319] | 237 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[282] | 238 | </xs:sequence> |
---|
| 239 | </xs:complexType> |
---|
| 240 | |
---|
[325] | 241 | <xs:complexType name="powerStatesTransitionType"> |
---|
[296] | 242 | <xs:annotation> |
---|
[325] | 243 | <xs:documentation>Description of power states transtition |
---|
| 244 | Elements: to - denotes name of target power state |
---|
| 245 | powerUsage - defines transition cost in the form of power consumption |
---|
| 246 | time - specifies transition time</xs:documentation> |
---|
[296] | 247 | </xs:annotation> |
---|
[282] | 248 | <xs:sequence> |
---|
[293] | 249 | <xs:element name="to" type="xs:string"></xs:element> |
---|
[325] | 250 | <xs:element name="powerUsage" type="valueWithUnitType"></xs:element> |
---|
| 251 | <xs:element name="time" type="valueWithUnitType"></xs:element> |
---|
[319] | 252 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[282] | 253 | </xs:sequence> |
---|
| 254 | </xs:complexType> |
---|
| 255 | |
---|
[317] | 256 | <xs:complexType name="airThroughputProfileType"> |
---|
[312] | 257 | <xs:annotation> |
---|
[325] | 258 | <xs:documentation>AirThrouhputProfile type acts as a container for air throughput states</xs:documentation> |
---|
[312] | 259 | </xs:annotation> |
---|
[325] | 260 | <xs:sequence> |
---|
| 261 | <xs:element name="airThroughputState" type="airThroughputStateType" minOccurs="1" maxOccurs="unbounded"></xs:element> |
---|
[315] | 262 | </xs:sequence> |
---|
| 263 | </xs:complexType> |
---|
| 264 | |
---|
[319] | 265 | <xs:complexType name="airThroughputStateType"> |
---|
[315] | 266 | <xs:annotation> |
---|
[325] | 267 | <xs:documentation>Air througput state provides means to define air flow level. |
---|
| 268 | It can represent, for instance, a fan working state</xs:documentation> |
---|
[315] | 269 | </xs:annotation> |
---|
[312] | 270 | <xs:sequence> |
---|
[317] | 271 | <xs:element name="name" type="xs:string"></xs:element> |
---|
[327] | 272 | <xs:element name="value" type="valueWithUnitType"></xs:element> |
---|
[325] | 273 | <xs:element name="powerUsage" type="valueWithUnitType" minOccurs="0"></xs:element> |
---|
[319] | 274 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[312] | 275 | </xs:sequence> |
---|
| 276 | </xs:complexType> |
---|
| 277 | |
---|
[293] | 278 | <xs:complexType name="locationType"> |
---|
[282] | 279 | <xs:annotation> |
---|
[325] | 280 | <xs:documentation>The location type describes placement of the computing resource in the 3D coordinate system</xs:documentation> |
---|
[282] | 281 | </xs:annotation> |
---|
| 282 | <xs:sequence> |
---|
[328] | 283 | <xs:element name="horizontal" type="xs:long"/> |
---|
[293] | 284 | <xs:element name="vertical" type="xs:long"/> |
---|
| 285 | <xs:element name="depth" type="xs:long"/> |
---|
[319] | 286 | <xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element> |
---|
[282] | 287 | </xs:sequence> |
---|
| 288 | </xs:complexType> |
---|
[296] | 289 | |
---|
[299] | 290 | <xs:complexType name="parameterType"> |
---|
[282] | 291 | <xs:annotation> |
---|
[325] | 292 | <xs:documentation>Parameter of resource. Allows to define additional resource paramters. |
---|
| 293 | Contains a list of parameter values or a list of key-value pairs. |
---|
| 294 | Attribute : name - denotes paramter name</xs:documentation> |
---|
[282] | 295 | </xs:annotation> |
---|
[317] | 296 | <xs:choice> |
---|
[312] | 297 | <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> |
---|
[325] | 298 | <xs:sequence> |
---|
| 299 | <xs:element name="property" minOccurs="0" maxOccurs="unbounded"> |
---|
| 300 | <xs:complexType> |
---|
| 301 | <xs:annotation> |
---|
| 302 | <xs:documentation>Property of paramter. Allows to define additional properties of parameter as a list of values. |
---|
| 303 | Attribute : name - denotes property name</xs:documentation> |
---|
| 304 | </xs:annotation> |
---|
| 305 | <xs:sequence> |
---|
| 306 | <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> |
---|
| 307 | </xs:sequence> |
---|
| 308 | <xs:attribute name="name" type="xs:string" use="required"/> |
---|
| 309 | </xs:complexType> |
---|
| 310 | </xs:element> |
---|
[317] | 311 | </xs:sequence> |
---|
| 312 | </xs:choice> |
---|
[296] | 313 | <xs:attribute name="name" type="xs:string" use="required"/> |
---|
[282] | 314 | </xs:complexType> |
---|
| 315 | |
---|
[234] | 316 | <xs:element name="environment"> |
---|
| 317 | <xs:annotation> |
---|
[293] | 318 | <xs:documentation>Schema describing simulation environment</xs:documentation> |
---|
[234] | 319 | </xs:annotation> |
---|
| 320 | <xs:complexType> |
---|
| 321 | <xs:sequence> |
---|
[299] | 322 | <xs:element name="description" type="xs:string" minOccurs="0" ></xs:element> |
---|
[325] | 323 | <xs:element name="timeEstimationPlugin" type="timeEstimationPluginType" minOccurs="0" maxOccurs="1"></xs:element> |
---|
[234] | 324 | <xs:element name="resources"> |
---|
| 325 | <xs:annotation> |
---|
| 326 | <xs:documentation>Description of resources</xs:documentation> |
---|
| 327 | </xs:annotation> |
---|
| 328 | <xs:complexType> |
---|
| 329 | <xs:sequence> |
---|
[327] | 330 | <xs:element name="description" type="xs:string" minOccurs="0" ></xs:element> |
---|
[293] | 331 | <xs:element name="computingResource" type="computingResourceType" maxOccurs="unbounded"/> |
---|
[296] | 332 | <xs:element name="scheduler" type="schedulerType" maxOccurs="unbounded"/> |
---|
[234] | 333 | </xs:sequence> |
---|
| 334 | </xs:complexType> |
---|
| 335 | </xs:element> |
---|
[293] | 336 | <xs:element name="templates" minOccurs="0"> |
---|
| 337 | <xs:annotation> |
---|
[325] | 338 | <xs:documentation>Definition of computing resource templates that can/will be used in resource description section </xs:documentation> |
---|
[293] | 339 | </xs:annotation> |
---|
| 340 | <xs:complexType> |
---|
[325] | 341 | <xs:sequence> |
---|
[328] | 342 | <xs:element name="description" type="xs:string" minOccurs="0" ></xs:element> |
---|
[325] | 343 | <xs:element name="computingResourceTemplate" type="computingResourceTemplateType" maxOccurs="unbounded"/> |
---|
[293] | 344 | </xs:sequence> |
---|
| 345 | </xs:complexType> |
---|
| 346 | </xs:element> |
---|
[234] | 347 | </xs:sequence> |
---|
| 348 | </xs:complexType> |
---|
| 349 | </xs:element> |
---|
| 350 | |
---|
| 351 | </xs:schema> |
---|