Optimizing Your Containers - Details Tab

Optimizing Your Containers - Details Tab

#380640

The Kubernetes Container Optimization Details report displays detailed information for the selected container (row) from the source page:

  1. On the Summary tab click the "Container Manifests" link > then click the Details tab
  2. From the Data tab click any of the count hyperlinks > then click the Details tab.

To learn more watch the video,

Note: Containers that do not have adequate information for recommendation analysis are not included on the Details tab.

This dashboard consists of:

Page Navigation

Click the Back () button, in the top-right corner of the page, to return to the parent dashboard. Do not use the browser's Back button for navigation within Densify. You will be logged out of your session. See Navigating Densify for other features of the Densify user interface.

Exporting Tabular Data

You can export the content from this tab to .XLSX format. See Exporting Report Data for details.

Reviewing the Container Details Page

Running Total Summary

A summary of the running totals is displayed in the upper right corner of the page.

The information icon, on the Surplus CPU Request/Surplus Memory Request and Net Savings values indicates that these values do not include containers with requests set to "Unspecified". See Optimizing Your Containers

Data Controls

Watch the video for an overview of the data management features:

You can use the following options for managing and viewing your data more effectively.

Icon

Description


Allows you to search for any type of data in the displayed columns. i.e. for a pod or container name. Typically, you will search for items in the first column, but you can search for a value in the other columns.

Click the icon and enter your search string. All matching rows are displayed in the table. You must enter a string of alpha-numeric characters. Wildcard characters are not supported.

If the data is on multiple pages (i.e. 1 of 5), all pages are searched for the matching string.

Click this icon to export the content of the currently displayed table to .CSV format.


Click this icon to configure the table to display only the columns of interest. The default settings are re-applied when you navigate away from this page.

Columns required to identify the container cannot be excluded. i.e. Cluster, namespace.

If there are more than 50 rows in this table, multiple pages will be indicated here. Click the right/left arrows to move to the next/previous page of a multi-page report.

You will see a vertical scroll bar since all 50 rows cannot be displayed.

Sorting Tabular Data

By default the table is sorted by cluster name. You can sort the content of this table using any of the available columns, by clicking the column header.

  1. Click the column header to sort the table, in ascending order, using the content of the selected table as the sort key.
  2. Click the column header again, to sort the table, in descending order, again using the content of the selected column as the sort key.
  3. Click the column header a third time to clear the sort and return to the default, sorted by Cluster.

An up/down arrow is displayed in the column header to indicate the column is being used to sort the content of the table.

Sorting is not persistent between pages, tabs or login sessions.

Tabular Report

When the page is initially loaded, this table is sorted alphabetically, by Cluster name, Namespace, Controller/Pod and then Container Name.

The content of the table as well as the totals at the bottom reflect the settings in both the Recommendation Filter and the Container Filter.

Table: Container Details Tabular Columns

Component/Column Name

Description

Cluster

The parent cluster containing the pods.

Namespace

The namespace associated with the container. This allows you to logically group your pods.

Controller Type

The controller type that monitors and maintains the state of your cluster. This can be one of DaemonSet, Deployment, ReplicaSet, ReplicationController, StatefulSet, etc.

# of Containers

This is the current number of containers running in the selected cluster/namespace/pod combination.

The total number of containers is listed at the bottom of the column. This value is used to calculate totals for Requested and Limits for current and recommended CPU and memory values.

This total is also listed in the running total at the top of the page.

Controller/Pod

This is the name of the controller or pod. You can have one or more containers per pod.

Container Name

This is the name of the container.

Optimization Type

Identifies the overall result of the optimization analysis.

Values are colour-coded and the possible colours are listed in Container Optimization Types, below.

Current CPU Request (mCores)

Current Memory Request (MB)

The current, the recommended and the surplus requested CPU | Memory values for this container are displayed in these columns.

The surplus is the difference between the current and the recommended values. If the current value is unspecified, then the surplus value will be negative (i.e. 0 - recommended value).

The total, listed at the bottom of the Request and Limit columns for both CPU and Memory, is calculated as (Current CPU Request * Current Count). This formula is also used for CPU Limit and Memory Limit.

The total, listed at the bottom of the Surplus columns for both CPU and Memory, is calculated as (Current - Recommended).

For containers where the Current CPU value is unspecified a dash (-) is displayed in the main table and '0' is displayed in the "Total" row.

Recommended CPU Request (mCores)

Recommended Memory Request (MB)

Surplus CPU Request (mCores)

Surplus Memory Request (MB)

Current CPU Limit (mCores)

Current Memory Limit(MB)

The current, the recommended and the surplus CPU | Memory limit values for this container are displayed in these columns.

The surplus is the difference between the current and the recommended values. If the current value is unspecified, then the surplus value will be negative (i.e. 0 - recommended value).

The total, listed at the bottom of the Limit columns for both CPU and Memory, is calculated as (Current CPU Limit* Current Count). This formula is also used for CPU Request, and Memory requests.

The total, listed at the bottom of the Surplus columns for both CPU and Memory, is calculated as (Current - Recommended).

For containers where the Current CPU value is unspecified a dash (-) is displayed in the main table and '0' is displayed in the "Total" row.

Recommended CPU Limit (mCores)

Recommended Memory Limit (MB)

Surplus CPU Limit (mCores)

Surplus Memory Limit (MB)

Net Savings ($/month)

If the recommendations are implemented, the net savings indicated here can be achieved.

This value is calculated as the current estimated cost minus the estimated cost of the recommended instances.

Predicted Uptime (%)

When using pay-per-use pricing models, Densify needs to know the amount of time each container has been running to accurately estimate future costs.

The predicted uptime (%) for an instance or container, is based on the percentage of hours CPU utilization data is present in the historical interval, as specified in the policy settings.

Predicted uptime %, for new instances or containers, that started mid-way through the historical interval, is calculated from the time/date that the instance was started as opposed to the beginning of the interval, resulting in more accurate predictions for future usage.

# of Nodes

This is the number of nodes used by this container.

You can hover over the cell to see the list of all node name(s) in which this container(s) reside(s).

Totals

Shown in bold at the bottom of the table, the totals for each column for all the records in the filtered tabular report.

The total, listed at the bottom of the Request and Limit columns for both CPU and Memory, is calculated as (Current CPU Request * Current Count). This formula is also used for CPU Limit, Memory Request and Memory Limit.

The total, listed at the bottom of the Surplus columns for both CPU and Memory, is calculated as: (Current - Recommended).

If the value of any row is unspecified, then that value is treated as "0" when summing the values for the total.

Note: The following details are not included in this report: Disk Allocations (Current | Recommended), Individual Disk Partitions at Risk, Disk Usage and Parent.

Container Optimization Types

Densify container recommendations are categorized into optimization types, which are based on recommended sizing for the CPU Request, CPU Limit, Memory Request, and Memory Limit settings. See the table below for a description of each container optimization type.

Table: Container Optimization Type Summary

Optimization Type

Description

Just Right

This container manifest or task definition is optimally configured for the workload. There are no resizing recommendations.

Upsize

Densify recommends increasing one or more of CPU Request, CPU Limit, Memory Request, or Memory Limit settings. An "Upsize" optimization type has no recommendations to decrease any container CPU or memory request or limit settings.

For example, Densify assigns an "Upsize" optimization type if a container manifest or task definition has the following aggregate optimization recommendations:

  • Increasing CPU Request setting;
  • Keeping CPU Limit and Memory Limit at the same setting;
  • Setting a Memory Request from an unspecified value.

Downsize

Densify recommends decreasing one or more of CPU Request, CPU Limit, Memory Request, or Memory Limit settings. A "Downsize" optimization type does not have any size increase recommendations for any request or limit settings.

For example, Densify assigns a "Downsize" optimization types for the following aggregate recommendations:

  • Decreasing CPU Request and/or CPU Limit settings;
  • Keeping Memory Request and Memory Limit at the same setting.

Resize

Densify recommends resizing at least two of CPU Request, CPU Limit, Memory Request, or Memory Limit settings. For the "Resize" optimization type, there is at least one increase recommendation and at least one decrease recommendation.

For example, Densify assigns a "Resize" optimization type if a container has the following recommendations:

  • Increasing CPU Request setting;
  • Keeping CPU Limit at the current setting;
  • Sizing Memory Request from an unspecified value;
  • Decreasing Memory Limit from it's current value.

Size from Unspecified

Sizing recommendations are made without current CPU Request, CPU Limit, Memory Request, and Memory Limit values. For "Size from Unspecified" optimization type, there is at least one sizing recommendation from an unspecified setting and no decreasing or increasing size recommendations for any container request or limit settings.

For example, Densify assigns a "Size from Unspecified" optimization type if a container has the following recommendations:

  • Sizing CPU Request and CPU Limit settings;
  • Keeping Memory Request and Memory Limit at the same settings.

No Data

There is insufficient data to recommend changes to CPU Request, CPU Limit, Memory Request, or Memory Limit values.

Reviewing the Resource Utilization Metrics Charts

Clicking on any row in the tabular report, in the upper pane, shows the Resource Utilization Metrics tab, in the lower pane. The workload charts on this tab show the current and the recommended settings if the proposed recommendations are applied:

  • CPU Utilization in mCores (Current and Recommended Settings)
  • Memory Utilization in MB (Current and Recommended Settings)
  • Disk I/O
  • Restarts
  • ASG Scaling (in-service instances)

If the optimization type of the selected container is "Just Right", then only 2 charts (CPU and memory current utilization) are displayed.

Note: If no metrics are available, then the corresponding charts are not displayed.

These workload charts show hourly min/max and sustained activity for the selected system. If necessary use the left/right arrows to scroll though the workload charts.

Workload charts display current sustained activity in blue, while sustained activity on the recommended request settings chart is shown in green. The minimum and maximum utilization values are shown as vertical lines above and below the coloured block. The median is indicated as a black line within the coloured block. The average is indicated in, in brackets in the subtitle of the chart.

The Y-axis is scaled dynamically to match the range of data. The yellow line indicating the request setting is shown and the setting of the Y-axis scale also accounts for the request setting. The pink line indicates the limit. If the request and the limit are the same, the dashed yellow/pink line indicates the value. The units of the workload are also shown on the Y-axis.

To learn more watch the video,

Understanding the Quartiles in the Resource Utilization Charts

To learn more watch the following video:

In charts, workload data for each system is shown in four different bars (two yellow and two red), called quartiles, to show minimum, average, sustained and peak values. When used in the analysis, quartiles provide a good representation of system activity because the weighted scoring for sustained and peak activity produces a more accurate assessment of workload utilization patterns and requirements.

Quartiles are calculated in the following manner:

  • Workload activity is collected every five minutes, which totals 12 times per hour.
  • The 12 values are then re-ordered in descending order and separated into equal sample sizes (quartiles), with each quartile having three values. Each quartile represents 25% of operational time.
  • The bottom of the first quartile shows the minimum value, the next quartile shows average values, the top of the third quartile shows the sustained value and the top of the fourth quartile shows the peak value.