Summary Banner Container Filter Total Number of Containers Optimzation Summary Container Details Cluster Breakdown Namespace breakdown

Optimizing Your Containers

Optimizing Your Containers

#380520

Overview

Containers enable applications to be abstracted from their infrastructure. The container packages an application so that it can be deployed consistently regardless of its environment. Containers can also be stacked and run on less infrastructure than required for traditional VMs.

To learn more watch the video,

Densify's workload sizing and stacking capabilities enable it to learn the utilization patterns of your containers and their pods and determine the optimal request and limit values to ensure that pods get their required resources, while enabling the containers to run at higher utilization.

When working with these reports, keep in mind that a request is the amount of CPU or memory resources that the system will guarantee for the container. Kubernetes will use this value to decide on which node to place the pod. A limit is the maximum amount of resources that Kubernetes will allow the container to use. If the node is not resource constrained, Kubernetes may allow the container to exceed the limit. These are OS configuration settings, not configurable through Densify.

Use the Containers menu to review and optimize your container instances. This menu item is only displayed when you have collected and loaded container utilization data. Contact your Cloud Advisor for details.

The data on this dashboard is displayed on four tabs:

  • Summary—Provides an overview of your container environment.
  • Cluster Breakdown—Provides a breakdown by cluster showing current and recommended requests and limits for both CPU and memory.
  • Namespace Breakdown—Provides a breakdown by namespace showing current and recommended requests and limits for both CPU and memory.
  • Details—Provides a list of each container in the environment with details of requests and limits for both CPU and memory and the proposed optimization recommendation. See Container Optimization Type Summary for descriptions of the various Optimization Type recommendations and workload charts.

Three sections provide a visual overview of your environments.

Note: Containers with "Optimization Type=No Data" are filtered out from all of the reports on all Container tabs.

Using the Container Filter

You can apply various filters to customize the scope of containers you are reviewing. See Using Container Filters.

Note: When you export the content of a report with applied filters, the filtered set of systems is exported for the Cluster Breakdown, Namespace Breakdown. The functionality will be extended to the Details tab in a future release.

Collecting Container Utilization Data

Refer to Data Collection for Containers for details on collecting utilization data.

Exporting Tabular Data

You can export the content from the Cluster Breakdown, Namespace Breakdown and Details tabs to see the full set of data.  Data can be export to XLSX format. Some tabular reports may support PDF format, but not all, due to sizing limitations.

Click the Export to Excel () icon to export the tabular data. See Exporting Report Data for details.

Reviewing the Summary Tab

The summary overview provides a number of charts and tables to show you potential savings in your container environments.

Summary Banner

Key metrics are displayed in a banner at the top of the report.

Table: Summary Banner

Column

Description

Estimated Monthly Savings

This is estimated monthly savings for the selected environment. If you have created and applied filters, the totals, displayed in this summary, reflect the defined filters.

The cost savings estimate is calculated by converting the CPU and Memory reduction into hardware savings based on the cost of the surplus CPU cores and MB of memory.

The cost per core and per GB of memory is configurable. Contact your Cloud Advisor for details. .

CPU Request Surplus (Cores) and Percentage

This is the aggregated total CPU | Memory Request Surplus in mCores or GB. The values are also shown as a percentage.

This is calculated as (Current CPU or Memory Request - Recommended CPU or Memory Request) * Current Count) of the filtered list.

The percentage is calculated as (Surplus/Current value)*100.

Containers with unspecified CPU | Memory Requests are excluded from these metrics.

Surplus and Surplus% can be a 0 or positive values.

The asterisk (*), on these values as well as on the % Impact Summary bar chart, indicates that these values do not include containers with requests set to "Unspecified". Since these containers are sized based on availability of resources, it is not meaningful to compare them to containers with defined request and limit settings. The last column in the Resource Allocation Summary table provides a summary of the containers with Unspecified Settings.

Memory Request Surplus (GB) and Percentage

The cost per core and per GB of memory is configurable. Contact your Cloud Advisor foe details.

Total Number of Containers

This table shows you the total number of containers within the analyzed environments. Inventory is then broken down by clusters, namespaces and pods.

In the inventory section, the total count for clusters, namespaces and pods are listed. The count for Clusters and Namespaces are provided as links. Click the value to navigate to the Cluster Breakdown tab or the Namespace Breakdown tab.

ReplicaSets are counted as a single item even if they are not running. The CPU Request | Limit and Memory Request | Limit values (0) are displayed on the Details tab, but are not include when rolled up to the Cluster Breakdown tab or the Namespace Breakdown tab nor any reports in the Summary tab.

The Manifest summary lists the total number of manifests for containers that are managed by a replication controller and how many are not managed via the controller (i.e. standalone pods). Click the value to navigate to the Details tab.

A footnote at the very bottom, shows you the number of containers that have been analyzed out of the total number of containers in your environment.

Optimization Summary

This pie chart shows the breakdown of container manifest recommendations by Optimization Type: upsize, downsize, resize, size from unspecified. See Container Optimization Type Summary for descriptions of the various recommendation types.

The line chart at the bottom, of this section shows the number of container manifests that are sized correctly over time. The axis scales based on the amount of data up to the maximum of 6 months. If you hover over any data point in the graph a popup indicates the percentage of systems that are "Just Right" and the date. As you apply the recommendations, the number of right-sized container manifests should increase over time.

% Impact Summary

This bar chart shows the potential percentage improvement in container resource allocations when the Densify recommendations have been actioned.

The table at the bottom shows the current settings and the recommended settings for both CPU and memory. Values are aggregated to show the total increase or decrease of required resources. In this table, the values are converted automatically to the next larger or smaller unit, so that values are easy to read:

  • MB > GB > TB > PB (each step is divided by 1,024);
  • mCores > Cores> KCores > MCores (each step is divided 1,000).

Reviewing the Cluster Breakdown

Running Total Summary

A summary of the running totals is displayed in the upper right corner at the top of each of the following pages Cluster Breakdown tab, Namespace Breakdown tab and the Details tab.

The Information icon, on these values indicates that these values do not include containers with requests set to "Unspecified". In this case, 'unspecified" means there are no request or limit values specified in the container manifest file for CPU and/or memory.

Since these containers ("Unspecified") are sized based on availability of resources, it is not meaningful to compare them to containers that do have defined request and limit settings.

If you have created and applied filters, the totals, displayed in this summary, reflect the defined filters.

This bar is not displayed if no data is available due to filter settings or lack of collected data.

This block of information contains the following details:

Table: Running Total Summary

Column

Description

Clusters

This is the number of unique clusters within the filtered selection.

Namespaces

This is the number of unique namespaces in the clusters that are within the filtered selection.

The value is the number of unique clusters/namespace combinations within the filtered selection. A namespace with the same name can appear in more than one cluster.

Pods

This is the number of unique pods within the filtered selection.

The displayed value is the number of unique (clusters/namespaces/pod combinations). multiplied by the Current Count. If Current Count is 0, then a value of 1 is used as the multiplier.

Containers

This is the number of unique containers based on the filtered selection.

Since there can be more than one container within a pod and each container is listed in a separate row within the tabular report, this count is based on unique cluster/namespace/pod/container combinations.

The displayed value is the number of unique (cluster/namespace/pod/container combinations) multiplied by the Current Count. If Current Count is 0, then a value of 1 is used as the multiplier.

CPU Request Surplus (mCore)

This is the aggregated total CPU Request Surplus.

This value is calculated as (Current CPU Request - Recommended CPU Request) * Current Count) of the filtered records.

Containers with unspecified CPU Requests, i.e. Current Value is null, are excluded. Surplus and Surplus% can be a 0 or positive values. The value displayed here may alos be created than the value displayed in table. See the note below.

A tooltip on this box, indicates that only containers with specified CPU settings are included in this total.

CPU Request Surplus (%)

This is the aggregated total CPU Request Surplus reported as a percentage.

This is calculated as (Surplus/Current value)*100.

Memory Request (MB)

This is the aggregated total Memory Request Surplus.

This is calculated as (Current Memory Request - Recommended Memory Request) * Current Count) of the filtered records.

Containers with unspecified CPU Memory Requests, i.e. Current Value is null, are excluded. Surplus and Surplus% can be a 0 or positive values.

Memory Request Surplus (%)

This is the aggregated total Memory Request Surplus reported as a percentage.

This is calculated as (Surplus/Current value)*100.

A tooltip on this box, indicates that only containers with specified memory settings are included in this total.

Note: When comparing the summary bar values and the tabular content you may see that the value in the column, CPU Request (mCores) > Surplus is lower than the Summary bar > CPU Request Surplus value. This may be the case if the CPU or memory request value is not specified in the container manifest. Densify considers the value to be 0 in the calculation, and as a result, the surplus for the containers with unspecified values will have a negative surplus value, so the Surplus in the table is always smaller or equal to the Surplus on the Summary bar, which does not include containers with unspecified request and/or limits.

Cluster Breakdown Report

The Cluster Breakdown tab lists all of the clusters discovered in your environment. A single row for each cluster is provided with the following details:

Table: Cluster Breakdown Report

Column

Description

Cluster

This is the cluster name.

Namespaces

This is the number of namespaces within the named cluster.

Pods

This is the number of pods within the named cluster.

Containers

This is the number of containers within the named cluster. You can have multiple containers per pod and multiple pods per namespace.

CPU Request (mCore)

These columns provide the Current and Recommended allocation, as well as the surplus, if any. The surplus is calculated as (Current value minus Recommended value). If the value is negative, this indicates a shortage.

These results only include resources with specified requests and limits. In both the CPU Request | Limit and Memory Request | Limit Current columns, if the current value is unspecified, then the current value is shown as "0".

The Recommended column is colour-coded if there is a corresponding upsize or downsize recommendation.

CPU Limit (mCore)

Memory Request (MB)

Memory Limit (MB)

Container Manifest

This is the number of manifests that reference this container.

Table: Recommendation Colour-Coding

Setting Optimization Type

Description

Upsize

The recommended setting is greater than the current setting.

e.g. CPU | Memory Request | Limit current value < CPU | Memory Request | Limit recommended value.

Downsize

The recommended setting is less than the current setting.

e.g. CPU | Memory Request | Limit current value > CPU | Memory Request | Limit recommended value.

Namespace Breakdown

The Namespace Breakdown tab lists all of the namespaces within a cluster. The report is sorted in alphabetic order by Cluster Name and then Namespace.

Note: The ability to sort by other columns will be available in the next release.

The number of rows shown in this report corresponds to the Cluster Breakdown report > Namespace column. When the content of this report increases beyond the full height of the screen, a scroll-bar is displayed on the right side of the page.

A single row for each namespace is provided with the following details:

Column

Description

Cluster

This is the name of the parent cluster. The cluster name may be the same for many namespaces, since you can have multiple namespaces in a single cluster.

Namespace

This is the name of the namespaces.

Pods

This is the number of pods within the namespace.

Containers

This is the number of containers within the namespace.

CPU Request (mCore)

These columns provide the Current and Recommended allocation, as well as the surplus, if any. The surplus is calculated as (Current value-Recommended value). If the value is negative, this indicates a shortage.

These results only include resources with specified requests and limits. In both the CPU Request | Limit and Memory Request | Limit > Current columns, if the current value is unspecified, then "0" is shown as the current value.

CPU Limit (mCore)

CPU Surplus (mCore)

Memory Request (MB)

Memory Limit (MB)

Memory Surplus (MB)

Container Manifest

This is the number of manifests that reference this container.

Page Navigation

When there are more rows than can be displayed in a single page, pagination links are displayed in the upper left corner of the page. Click the link to move to the next page. Use these page links to navigate between pages of the report.

To return to the parent page, use the Back () button in the top-right corner of the page. Do not use the browser's Back button for navigation within Densify as this exits Densify.

Details Tab

The Details tab lists all of the manifests with their container counts, both their current and recommended CPU/memory requests and limits. The optimization type is listed and colour-coded for easy review. See Understanding the Container Optimization Details Report.

When you are working with containers that are in ReplicaSets but are not running. (i.e. with Current Size=0), the Current Count of these containers is shown as 0. In this tab, the CPU Request | Limit and Memory Request | Limit values are displayed, but are not include when aggregated/rolled up to the Cluster Breakdown tab or the Namespace Breakdown tab nor any reports in the Summary tab.

Note: Currently, when you export the contents of Details tab, the resulting Excel extract may not exactly match the counts displayed on the dashboard. This page is still under development. Please contact your Cloud Advisor for details.

Automating Densify's Recommendation

Densify provides an automation strategy that allows container optimization to be initiated from the source files rather than from an external orchestration solution. Densify provides a set of APIs and integration modules to enable automation. Contact your Cloud Advisor for details.

To learn more watch the video,