class Aws::ComputeOptimizer::Types::InstanceRecommendation

Describes an Amazon EC2 instance recommendation.

@!attribute [rw] instance_arn

The Amazon Resource Name (ARN) of the current instance.
@return [String]

@!attribute [rw] account_id

The Amazon Web Services account ID of the instance.
@return [String]

@!attribute [rw] instance_name

The name of the current instance.
@return [String]

@!attribute [rw] current_instance_type

The instance type of the current instance.
@return [String]

@!attribute [rw] finding

The finding classification of the instance.

Findings for instances include:

* <b> <code>Underprovisioned</code> </b>—An instance is considered
  under-provisioned when at least one specification of your
  instance, such as CPU, memory, or network, does not meet the
  performance requirements of your workload. Under-provisioned
  instances may lead to poor application performance.

* <b> <code>Overprovisioned</code> </b>—An instance is considered
  over-provisioned when at least one specification of your instance,
  such as CPU, memory, or network, can be sized down while still
  meeting the performance requirements of your workload, and no
  specification is under-provisioned. Over-provisioned instances may
  lead to unnecessary infrastructure cost.

* <b> <code>Optimized</code> </b>—An instance is considered
  optimized when all specifications of your instance, such as CPU,
  memory, and network, meet the performance requirements of your
  workload and is not over provisioned. For optimized resources,
  Compute Optimizer might recommend a new generation instance type.
@return [String]

@!attribute [rw] finding_reason_codes

The reason for the finding classification of the instance.

Finding reason codes for instances include:

* <b> <code>CPUOverprovisioned</code> </b> — The instance’s CPU
  configuration can be sized down while still meeting the
  performance requirements of your workload. This is identified by
  analyzing the `CPUUtilization` metric of the current instance
  during the look-back period.

* <b> <code>CPUUnderprovisioned</code> </b> — The instance’s CPU
  configuration doesn't meet the performance requirements of your
  workload and there is an alternative instance type that provides
  better CPU performance. This is identified by analyzing the
  `CPUUtilization` metric of the current instance during the
  look-back period.

* <b> <code>MemoryOverprovisioned</code> </b> — The instance’s
  memory configuration can be sized down while still meeting the
  performance requirements of your workload. This is identified by
  analyzing the memory utilization metric of the current instance
  during the look-back period.

* <b> <code>MemoryUnderprovisioned</code> </b> — The instance’s
  memory configuration doesn't meet the performance requirements of
  your workload and there is an alternative instance type that
  provides better memory performance. This is identified by
  analyzing the memory utilization metric of the current instance
  during the look-back period.

  <note markdown="1"> Memory utilization is analyzed only for resources that have the
  unified CloudWatch agent installed on them. For more information,
  see [Enabling memory utilization with the Amazon CloudWatch
  Agent][1] in the *Compute Optimizer User Guide*. On Linux
  instances, Compute Optimizer analyses the `mem_used_percent`
  metric in the `CWAgent` namespace, or the legacy
  `MemoryUtilization` metric in the `System/Linux` namespace. On
  Windows instances, Compute Optimizer analyses the `Memory %
  Committed Bytes In Use` metric in the `CWAgent` namespace.

   </note>

* <b> <code>EBSThroughputOverprovisioned</code> </b> — The
  instance’s EBS throughput configuration can be sized down while
  still meeting the performance requirements of your workload. This
  is identified by analyzing the `VolumeReadOps` and
  `VolumeWriteOps` metrics of EBS volumes attached to the current
  instance during the look-back period.

* <b> <code>EBSThroughputUnderprovisioned</code> </b> — The
  instance’s EBS throughput configuration doesn't meet the
  performance requirements of your workload and there is an
  alternative instance type that provides better EBS throughput
  performance. This is identified by analyzing the `VolumeReadOps`
  and `VolumeWriteOps` metrics of EBS volumes attached to the
  current instance during the look-back period.

* <b> <code>EBSIOPSOverprovisioned</code> </b> — The instance’s EBS
  IOPS configuration can be sized down while still meeting the
  performance requirements of your workload. This is identified by
  analyzing the `VolumeReadBytes` and `VolumeWriteBytes` metric of
  EBS volumes attached to the current instance during the look-back
  period.

* <b> <code>EBSIOPSUnderprovisioned</code> </b> — The instance’s EBS
  IOPS configuration doesn't meet the performance requirements of
  your workload and there is an alternative instance type that
  provides better EBS IOPS performance. This is identified by
  analyzing the `VolumeReadBytes` and `VolumeWriteBytes` metric of
  EBS volumes attached to the current instance during the look-back
  period.

* <b> <code>NetworkBandwidthOverprovisioned</code> </b> — The
  instance’s network bandwidth configuration can be sized down while
  still meeting the performance requirements of your workload. This
  is identified by analyzing the `NetworkIn` and `NetworkOut`
  metrics of the current instance during the look-back period.

* <b> <code>NetworkBandwidthUnderprovisioned</code> </b> — The
  instance’s network bandwidth configuration doesn't meet the
  performance requirements of your workload and there is an
  alternative instance type that provides better network bandwidth
  performance. This is identified by analyzing the `NetworkIn` and
  `NetworkOut` metrics of the current instance during the look-back
  period. This finding reason happens when the `NetworkIn` or
  `NetworkOut` performance of an instance is impacted.

* <b> <code>NetworkPPSOverprovisioned</code> </b> — The instance’s
  network PPS (packets per second) configuration can be sized down
  while still meeting the performance requirements of your workload.
  This is identified by analyzing the `NetworkPacketsIn` and
  `NetworkPacketsIn` metrics of the current instance during the
  look-back period.

* <b> <code>NetworkPPSUnderprovisioned</code> </b> — The instance’s
  network PPS (packets per second) configuration doesn't meet the
  performance requirements of your workload and there is an
  alternative instance type that provides better network PPS
  performance. This is identified by analyzing the
  `NetworkPacketsIn` and `NetworkPacketsIn` metrics of the current
  instance during the look-back period.

* <b> <code>DiskIOPSOverprovisioned</code> </b> — The instance’s
  disk IOPS configuration can be sized down while still meeting the
  performance requirements of your workload. This is identified by
  analyzing the `DiskReadOps` and `DiskWriteOps` metrics of the
  current instance during the look-back period.

* <b> <code>DiskIOPSUnderprovisioned</code> </b> — The instance’s
  disk IOPS configuration doesn't meet the performance requirements
  of your workload and there is an alternative instance type that
  provides better disk IOPS performance. This is identified by
  analyzing the `DiskReadOps` and `DiskWriteOps` metrics of the
  current instance during the look-back period.

* <b> <code>DiskThroughputOverprovisioned</code> </b> — The
  instance’s disk throughput configuration can be sized down while
  still meeting the performance requirements of your workload. This
  is identified by analyzing the `DiskReadBytes` and
  `DiskWriteBytes` metrics of the current instance during the
  look-back period.

* <b> <code>DiskThroughputUnderprovisioned</code> </b> — The
  instance’s disk throughput configuration doesn't meet the
  performance requirements of your workload and there is an
  alternative instance type that provides better disk throughput
  performance. This is identified by analyzing the `DiskReadBytes`
  and `DiskWriteBytes` metrics of the current instance during the
  look-back period.

<note markdown="1"> For more information about instance metrics, see [List the available
CloudWatch metrics for your instances][2] in the *Amazon Elastic
Compute Cloud User Guide*. For more information about EBS volume
metrics, see [Amazon CloudWatch metrics for Amazon EBS][3] in the
*Amazon Elastic Compute Cloud User Guide*.

 </note>

[1]: https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent
[2]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
[3]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html
@return [Array<String>]

@!attribute [rw] utilization_metrics

An array of objects that describe the utilization metrics of the
instance.
@return [Array<Types::UtilizationMetric>]

@!attribute [rw] look_back_period_in_days

The number of days for which utilization metrics were analyzed for
the instance.
@return [Float]

@!attribute [rw] recommendation_options

An array of objects that describe the recommendation options for the
instance.
@return [Array<Types::InstanceRecommendationOption>]

@!attribute [rw] recommendation_sources

An array of objects that describe the source resource of the
recommendation.
@return [Array<Types::RecommendationSource>]

@!attribute [rw] last_refresh_timestamp

The timestamp of when the instance recommendation was last
refreshed.
@return [Time]

@see docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/InstanceRecommendation AWS API Documentation

Constants

SENSITIVE