<?xml version="1.0" encoding="UTF-8"?>
<!---->
<!--################################################################################       -->
<!--# Redfish Schema:  ProcessorMetrics  v1.0.0-->
<!--#                                                                                      -->
<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
<!--# available at http://www.dmtf.org/standards/redfish                                   -->
<!--# Copyright 2014-2018 DMTF.                                                            -->
<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
<!--################################################################################       -->
<!---->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Measures.V1.xml">
    <edmx:Include Namespace="Org.OData.Measures.V1" Alias="Measures"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
    <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
    <edmx:Include Namespace="Validation.v1_0_0" Alias="Validation"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
    <edmx:Include Namespace="Resource.v1_0_0"/>
  </edmx:Reference>

  <edmx:DataServices>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="ProcessorMetrics">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>

      <EntityType Name="ProcessorMetrics" BaseType="Resource.v1_0_0.Resource" Abstract="true">
        <Annotation Term="OData.Description" String="ProcessorMetrics contains usage and health statistics for a Processor (all Cores)."/>
        <Annotation Term="OData.LongDescription" String="This resource shall be used to represent the Processor Metrics for a single Processor in a Redfish implementation."/>
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record>
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record>
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record>
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Redfish.Uris">
          <Collection>
            <String>/redfish/v1/Systems/{ComputerSystemId}/Processors/{ProcessorId}/ProcessorMetrics</String>
            <String>/redfish/v1/Systems/{ComputerSystemId}/Processors/{ProcessorId}/SubProcessors/{ProcessorId2}/ProcessorMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Processors/{ProcessorId}/ProcessorMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Processors/{ProcessorId}/SubProcessors/{ProcessorId2}/ProcessorMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Processors/{ProcessorId}/ProcessorMetrics</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Processors/{ProcessorId}/SubProcessors/{ProcessorId2}/ProcessorMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Processors/{ProcessorId}/ProcessorMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Processors/{ProcessorId}/SubProcessors/{ProcessorId2}/ProcessorMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Processors/{ProcessorId}/ProcessorMetrics</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Processors/{ProcessorId}/SubProcessors/{ProcessorId2}/ProcessorMetrics</String>
          </Collection>
        </Annotation>
      </EntityType>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="ProcessorMetrics.v1_0_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="2018.3"/>

      <EntityType Name="ProcessorMetrics" BaseType="ProcessorMetrics.ProcessorMetrics">
        <Property Name="BandwidthPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The CPU bandwidth as a percentage."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be CPU utilization of the processor as a percentage."/>
          <Annotation Term="Validation.Minimum" Int="0"/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
        <Property Name="AverageFrequencyMHz" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The average frequency of the processor."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be average frequency across all enabled cores in the processor in MHz."/>
          <Annotation Term="Measures.Unit" String="MHz"/>
        </Property>
        <Property Name="ThrottlingCelsius" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The CPU margin to throttle (temperature offset in degree Celsius)."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the CPU margin to throttle based on an offset between the maximum temperature in which the processor can operate, and the processor's current temperature."/>
          <Annotation Term="Measures.Unit" String="Cel"/>
        </Property>
        <Property Name="TemperatureCelsius" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The temperature of the processor."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the temperature of the processor in Celsius."/>
          <Annotation Term="Measures.Unit" String="Cel"/>
        </Property>
        <Property Name="ConsumedPowerWatt" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The power consumed by the processor."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the power consumed by the processor in Watts."/>
          <Annotation Term="Measures.Unit" String="W"/>
        </Property>
        <Property Name="FrequencyRatio" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The frequency relative to the nominal processor frequency ratio."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the frequency relative to the nominal processor frequency ratio of this processor."/>
        </Property>
        <Property Name="Cache" Type="Collection(ProcessorMetrics.v1_0_0.CacheMetrics)">
          <Annotation Term="OData.Description" String="The processor cache metrics."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain properties that describe this processor's cache."/>
        </Property>
        <Property Name="LocalMemoryBandwidthBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The local memory bandwidth usage in bytes."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the local memory bandwidth usage of this processor in bytes."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="RemoteMemoryBandwidthBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The remote memory bandwidth usage in bytes."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the remote memory bandwidth usage of this processor in bytes."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="KernelPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The percentage of time spent in kernel mode."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be total percentage of time the processor has spent in kernel mode."/>
          <Annotation Term="Validation.Minimum" Int="0"/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
        <Property Name="UserPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The percentage of time spent in user mode."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be total percentage of time the processor has spent in user mode."/>
          <Annotation Term="Validation.Minimum" Int="0"/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
        <Property Name="CoreMetrics" Type="Collection(ProcessorMetrics.v1_0_0.CoreMetrics)">
          <Annotation Term="OData.Description" String="The processor core metrics."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain properties that describe the cores of this processor."/>
        </Property>
        <Property Name="Actions" Type="ProcessorMetrics.v1_0_0.Actions" Nullable="false">
          <Annotation Term="OData.Description" String="The available actions for this resource."/>
          <Annotation Term="OData.LongDescription" String="The Actions property shall contain the available actions for this resource."/>
        </Property>
      </EntityType>

      <ComplexType Name="CoreMetrics">
        <Annotation Term="OData.Description" String="The processor core metrics."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain properties that describe the cores of a processor."/>
        <Property Name="CoreId" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The processor core identifier."/>
          <Annotation Term="OData.LongDescription" String="This property shall be the processor core identifier."/>
        </Property>
        <Property Name="InstructionsPerCycle" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The number of instructions per clock cycle of this core."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of instructions per clock cycle of this core in the processor."/>
        </Property>
        <Property Name="UnhaltedCycles" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The unhalted cycles count of this core."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of unhalted cycles of this core in the processor."/>
        </Property>
        <Property Name="MemoryStallCount" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The number of stalled cycles due to memory operations."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of stalled cycles due to memory operations of this core in the processor."/>
        </Property>
        <Property Name="IOStallCount" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The number of stalled cycles due to I/O operations."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of stalled cycles due to I/O operations of this core in the processor."/>
        </Property>
        <Property Name="CoreCache" Type="Collection(ProcessorMetrics.v1_0_0.CacheMetrics)">
          <Annotation Term="OData.Description" String="The cache metrics of this core in the processor."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain properties that describe the cache metrics of this core in the processor."/>
        </Property>
        <Property Name="CStateResidency" Type="Collection(ProcessorMetrics.v1_0_0.CStateResidency)">
          <Annotation Term="OData.Description" String="The C-state residency of this core in the processor."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain properties that describe the C-state residency of this core in the processor."/>
        </Property>
      </ComplexType>

      <ComplexType Name="CacheMetrics">
        <Annotation Term="OData.Description" String="The processor core metrics."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain properties that describe cache metrics of a processor or core."/>
        <Property Name="Level" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The cache level."/>
          <Annotation Term="OData.LongDescription" String="This property shall be the level of the cache in the processor or core."/>
        </Property>
        <Property Name="CacheMiss" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The number of cache line misses in millions."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of cache line misses of the processor or core in millions."/>
        </Property>
        <Property Name="HitRatio" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The cache line hit ratio."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the cache hit ratio of the processor or core."/>
        </Property>
        <Property Name="CacheMissesPerInstruction" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The number of cache misses per instruction."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the number of cache misses per instruction of the processor or core."/>
        </Property>
        <Property Name="OccupancyBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The total cache level occupancy in bytes."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the total cache occupancy of the processor or core in bytes."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="OccupancyPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The total cache occupancy percentage."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the total cache occupancy percentage of the processor or core."/>
          <Annotation Term="Validation.Minimum" Int="0"/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
      </ComplexType>

      <ComplexType Name="CStateResidency">
        <Annotation Term="OData.Description" String="The C-state residency of the processor."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain properties which describe the C-state residency of the processor or core."/>
        <Property Name="Level" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The level of C-state, e.g. C0, C1, C2."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the level of C-state."/>
        </Property>
        <Property Name="ResidencyPercent" Type="Edm.Decimal">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The percentage of time that the processor or core has spent in this particular level of C-state."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be the percentage of time that the processor or core has spent in this particular level of C-state."/>
          <Annotation Term="Validation.Minimum" Int="0"/>
          <Annotation Term="Measures.Unit" String="%"/>
        </Property>
      </ComplexType>

      <ComplexType Name="Actions">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="The available actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
        <Property Name="Oem" Type="ProcessorMetrics.v1_0_0.OemActions" Nullable="false">
          <Annotation Term="OData.Description" String="This property contains the available OEM specific actions for this resource."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain any additional OEM actions for this resource."/>
        </Property>
      </ComplexType>

      <ComplexType Name="OemActions">
        <Annotation Term="OData.AdditionalProperties" Bool="true"/>
        <Annotation Term="OData.Description" String="The available OEM specific actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain any additional OEM actions for this resource."/>
      </ComplexType>
    </Schema>

  </edmx:DataServices>
</edmx:Edmx>
