blob: c0587d7115099a8742a1890dae458c6456e43513 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Calculating Che resource requirements :: Eclipse Che Documentation</title>
<link rel="canonical" href="https://www.eclipse.org/che/docs/che-7/administration-guide/calculating-che-resource-requirements/">
<meta name="keywords" content="administration-guide, calculating-che-resource-requirements">
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../_/css/site.css">
<link rel="stylesheet" href="../../../_/css/extra.css">
<link rel="stylesheet" href="../../../_/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="icon" href="../../../favicon.ico" type="image/x-icon">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-37306001-2"></script>
<script>function gtag(){dataLayer.push(arguments)};window.dataLayer=window.dataLayer||[];gtag('js',new Date());gtag('config','UA-37306001-2')</script>
<script>var uiRootPath = '../../../_'</script>
</head>
<body class="article">
<header class="header" role="banner">
<nav class="navbar">
<div class="navbar-brand">
<div class="navbar-item">
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
<img src="../../../_/img/icon-eclipse-che.svg" class="navbar-logo" alt="Eclipse Che logo">
<a href="https://www.eclipse.org/che/docs">Eclipse Che Documentation</a>
</div>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<div class="navbar-item hide-for-print">
<script async src="https://cse.google.com/cse.js?cx=002898025167115630151:gnr5edrg2eo"></script>
<div class="gcse-searchbox" enableAutoComplete="true"></div>
</div>
<a class="navbar-item" href="https://www.eclipse.org/che/docs">Home</a>
<a class="navbar-item" href="https://che.eclipse.org/">Blog</a>
<a class="navbar-item" href="https://github.com/eclipse/che">Source Code</a>
</div>
</div>
</nav>
<div class="gcse-searchresults"></div>
</header><div class="body">
<div class="nav-container" data-component="che-7" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../overview/introduction-to-eclipse-che/">Introduction to Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../overview/che-architecture/">Che architecture</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../hosted-che/hosted-che/">Eclipse Che hosted by Red Hat</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">End-user Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/navigating-che/">Navigating Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/navigating-che-using-the-dashboard/">Navigating Che: dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-certificates-to-browsers/">Importing certificates to browsers</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/accessing-che-from-openshift-developer-perspective/">Navigating Che from OpenShift Developer Perspective</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/che-theia-ide-basics/">Che-Theia IDE basics</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/defining-custom-commands-for-che-theia/">Defining custom commands for Che-Theia</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/version-control/">Version Control</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/che-theia-troubleshooting/">Che-Theia Troubleshooting</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/differences-in-how-che-theia-webview-works-on-a-single-host-mode-comparing-to-a-multi-host-mode/">Differences in how Che-Theia Webview works on a single-host mode comparing to a multi-host mode</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/workspaces-overview/">Using developer workspaces</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-code-sample/">Creating a workspace from code sample</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-remote-devfile/">Creating a workspace from a remote devfile using the dashboard</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-from-local-devfile-using-chectl/">Creating a workspace from local devfile using chectl</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/creating-a-workspace-by-importing-the-source-code-of-a-project/">Creating a workspace by importing the source code of a project</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/configuring-a-workspace-with-dashboard/">Configuring a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/running-a-workspace-with-dashboard/">Running a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/importing-kubernetes-applications-into-a-workspace/">Importing Kubernetes applications into a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/remotely-accessing-workspaces/">Remotely accessing workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/mounting-a-secret-as-a-file-or-an-environment-variable-into-a-workspace-container/">Mounting a secret as a file or an environment variable into a workspace container</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authenticating-on-scm-server-with-a-personal-access-token/">Authenticating on SCM Server with a personal access token</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/authoring-devfiles/">Authoring devfiles</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authoring-devfiles-version-1/">Authoring devfiles version 1</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/authoring-devfiles-version-2/">Authoring devfiles version 2</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/customizing-developer-environments/">Customizing developer environments</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/what-is-a-che-theia-plug-in/">What is a Che-Theia plug-in</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-a-vs-code-extension-to-a-workspace/">Adding a VS Code extension to a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-a-vs-code-extension-to-the-che-plugin-registry/">Adding a VS Code extension to the Che plug-ins registry</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/publishing-metadata-for-a-vs-code-extension/">Publishing a VS Code extension</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/testing-a-visual-studio-code-extension-in-che/">Testing a VS Code extension in Che</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-alternative-ides-in-che/">Using alternative IDEs in Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/support-for-jetbrains-ides/">JetBrains IDEs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-community-edition/">Using IntelliJ Idea Community Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-intellij-idea-ultimate-edition/">Using IntelliJ Idea Ultimate Edition</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/configuring-an-existing-workspace-to-use-intellij-idea/">Configuring an existing workspace to use IntelliJ IDEA</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/using-jetbrains-webstorm/">Using WebStorm</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../end-user-guide/provisioning-jetbrains-activation-code-for-offline-use/">Provisioning activation code for offline use</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../end-user-guide/support-for-theia-based-ides/">Theia-based IDEs</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/adding-tools-to-che-after-creating-a-workspace/">Adding tools to Che after creating a workspace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-private-container-registries/">Using private container registries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/using-artifact-repositories-in-a-restricted-environment/">Using artifact repositories in a restricted environment</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-maven-artifact-repositories/">Using Maven artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-gradle-artifact-repositories/">Using Gradle artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-python-artifact-repositories/">Using Python artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-go-artifact-repositories/">Using Go artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-nuget-artifact-repositories/">Using NuGet artifact repositories</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/using-npm-artifact-repositories/">Using npm artifact repositories</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../end-user-guide/troubleshooting-che/">Troubleshooting Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/viewing-che-workspaces-logs/">Viewing Che workspaces logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/investigating-failures-at-a-workspace-start-using-the-verbose-mode/">Troubleshooting workspace start failures</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-slow-workspaces/">Troubleshooting slow workspaces</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../end-user-guide/troubleshooting-network-problems/">Troubleshooting network problems</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Installation Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../installation-guide/supported-platforms/">Supported platforms</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../installation-guide/configuring-the-che-installation/">Configuring the Che installation</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/installing-che/">Installing Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/installing-che-in-cloud/">Installing Che in cloud</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-openshift-4-using-operatorhub/">Installing Che on OpenShift 4 using OperatorHub</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-openshift-4-using-cli/">Installing Che on OpenShift 4 using CLI</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-openshift-3-using-the-operator/">Installing Che on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-kubespray/">Installing Che on Kubespray</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-aws/">Installing Che on AWS</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-google-cloud-platform/">Installing Che on Google Cloud</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-microsoft-azure/">Installing Che on Microsoft Azure</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/installing-che-locally/">Installing Che locally</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-codeready-containers/">Installing Che on CodeReady Containers</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-docker-desktop/">Installing Che on Docker Desktop</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-minikube/">Installing Che on Minikube</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-minishift/">Installing Che on Minishift</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../installation-guide/installing-che-on-kind/">Installing Che on Kind</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/using-the-chectl-management-tool/">Using the chectl management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/installing-che-in-a-restricted-environment/">Installing Che in restricted environment</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/advanced-configuration/">Advanced configuration</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/advanced-configuration-options-for-the-che-server-component/">Advanced configuration options for Che server</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-namespace-strategies/">Configuring workspace target namespace</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-storage-strategies/">Configuring storage strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-storage-types/">Configuring storage types</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-the-number-of-workspaces-that-a-user-can-run/">Configuring the number of workspaces that a user can run</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-the-number-of-workspaces-that-a-user-can-create/">Configuring the number of workspaces that a user can create</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-workspace-exposure-strategies/">Configuring workspace exposure strategies</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-workspaces-nodeselector/">Configuring workspaces nodeSelector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-che-hostname/">Configuring Che hostname</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-ingresses/">Configuring Kubernetes Ingress</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/configuring-routes/">Configuring OpenShift Route</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/deploying-che-with-support-for-git-repositories-with-self-signed-certificates/">Deploying Che with support for Git repositories with self-signed certificates</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/installing-che-using-storage-classes/">Installing Che using storage classes</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/importing-untrusted-tls-certificates/">Importing untrusted TLS certificates to Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/switching-between-external-and-internal-communication/">Switching between external and internal ways in inter-component communication</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/setting-up-the-keycloak-che-username-readonly-theme-for-the-eclipse-che-login-page/">Setting up the Keycloak che-username-readonly theme for the Eclipse Che login page</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/mounting-a-secret-as-a-file-or-an-environment-variable-into-a-container/">Mounting a Secret or a ConfigMap as a file or an environment variable into a Eclipse&#160;Che container</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/enabling-dev-workspace-engine/">Enabling Dev Workspace engine</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/upgrading-che/">Upgrading Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/upgrading-che-using-operatorhub/">Upgrading Che using OperatorHub</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/upgrading-che-using-the-cli-management-tool/">Upgrading Che using the CLI management tool</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/upgrading-che-using-the-cli-management-tool-in-restricted-environment/">Upgrading Che in restricted environment</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/upgrading-che-namespace-strategies-other-than-per-user/">Updating Che namespace strategies other than 'per user'</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../installation-guide/uninstalling-che/">Uninstalling Che</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/uninstalling-che-after-operatorhub-installation-using-openshift-web-console/">Using the OpenShift web console</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/uninstalling-che-after-operatorhub-installation-using-openshift-cli/">Using OpenShift CLI</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../installation-guide/uninstalling-che-after-chectl-installation/">Using chectl</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Administration Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../che-architecture-overview/">Che architecture</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../che-workspace-controller/">Che workspace controller</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../che-workspaces-architecture/">Che workspaces architecture</a>
</li>
</ul>
</li>
<li class="nav-item is-current-page" data-depth="1">
<a class="nav-link" href="./">Calculating Che resource requirements</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../customizing-the-registries/">Customizing the registries</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../building-custom-registry-images/">Building custom registry images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../running-custom-registries/">Running custom registries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../retrieving-che-logs/">Retrieving Che logs</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-server-logging/">Configuring server logging</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../viewing-kubernetes-events/">Accessing Kubernetes events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../viewing-operator-events/">Viewing the Operator events on OpenShift</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../viewing-che-server-logs/">Viewing Che server logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../viewing-external-service-logs/">Viewing external service logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../viewing-plug-in-broker-logs/">Viewing Plug-in broker logs</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../collecting-logs-using-chectl/">Collecting logs using chectl</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../monitoring-che/">Monitoring Che</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../tracing-che/">Tracing Che</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../backup-and-disaster-recovery/">Backup and disaster recovery</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../external-database-setup/">External database setup</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../persistent-volumes-backups/">Persistent Volumes backups</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../caching-images-for-faster-workspace-start/">Caching images for faster workspace start</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../defining-the-list-of-images-to-pull/">Defining the list of images</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../defining-the-memory-parameters-for-the-image-puller/">Defining the memory settings</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-image-puller-using-che-operator/">Installing using the Che Operator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-image-puller-on-kubernetes-using-the-image-puller-operator/">Installing using the Kubernetes Image Puller Operator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-image-puller-on-openshift-using-operatorhub/">Installing on OpenShift 4</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-image-puller-on-openshift-using-openshift-templates/">Installing on OpenShift 3</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../installing-image-puller-on-kubernetes-using-helm/">Installing using Helm</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../managing-identities-and-authorizations/">Managing identities and authorizations</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../authenticating-users/">Authenticating users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../authorizing-users/">Authorizing users</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-authorization/">Configuring authorization</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuring-openshift-oauth/">Configuring OpenShift OAuth</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../removing-user-data/">Removing user data</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Contributor Guide</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/branding-che-theia/">Branding Che-Theia</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/developing-che-theia-plug-ins/">Developing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/testing-che-theia-plug-ins/">Testing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/publishing-che-theia-plug-ins/">Publishing Che-Theia plug-ins</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-language/">Adding support for a new language</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../contributor-guide/adding-support-for-a-new-debugger/">Adding support for a new debugger</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../contributor-guide/che-extensibility-reference/">Che extensibility reference</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-extension-points/">Che extension points</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/che-theia-plug-in-api/">Che-Theia plug-in API</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/debug-adapter-protocol/">Debug Adapter Protocol</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../contributor-guide/language-server-protocol/">Language Server Protocol</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<button class="nav-item-toggle"></button>
<span class="nav-text">Extensions</span>
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../extensions/eclipse-che4z/">Eclipse Che4z</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/openshift-connector-overview/">OpenShift Connector</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/features-of-openshift-connector/">Features of OpenShift Connector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/installing-openshift-connector-in-che/">Installing OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/authenticating-with-openshift-connector-from-che/">Authenticating with OpenShift Connector from Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-components-with-openshift-connector-in-che/">Creating Components with OpenShift Connector in Eclipse Che</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/connecting-source-code-from-github-to-a-openshift-component-using-openshift-connector/">Connecting source code from GitHub to a OpenShift Component</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../extensions/telemetry/">Telemetry</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/creating-a-telemetry-plugin/">Creating A Telemetry Plugin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../extensions/the-woopra-telemetry-plugin/">The Woopra Telemetry Plugin</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../extensions/java-lombok/">Java Lombok</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../glossary/che-glossary/">Che glossary</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Documentation</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<a class="title" href="../../overview/introduction-to-eclipse-che/">Documentation</a>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../../overview/introduction-to-eclipse-che/">master</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../overview/introduction-to-eclipse-che/" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../overview/introduction-to-eclipse-che/">Documentation</a></li>
<li>Administration Guide</li>
<li><a href="./">Calculating Che resource requirements</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/eclipse/che-docs/edit/master/modules/administration-guide/pages/calculating-che-resource-requirements.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Calculating Che resource requirements</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This section describes how to calculate resources, such as memory and CPU, required to run Eclipse&#160;Che.</p>
</div>
<div class="paragraph">
<p>Both the Che central controller and user workspaces consist of a set of containers. Those containers contribute to the resources consumption in terms of CPU and RAM limits and requests.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="controller-requirements_che"><a class="anchor" href="#controller-requirements_che"></a>Controller requirements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Workspace Controller consists of a set of five services running in five distinct containers. The following table presents the default resource requirements of each of these services.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 1. ControllerServices</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 16.6666%;">
<col style="width: 16.6668%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Pod</th>
<th class="tableblock halign-left valign-top">Container name</th>
<th class="tableblock halign-left valign-top">Default memory limit</th>
<th class="tableblock halign-left valign-top">Default memory request</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Che Server and Dashboard</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">che</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 GiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">PostgreSQL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>postgres</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 GiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Keycloak</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>keycloak</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2 GiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Devfile registry</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che-devfile-registry</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">256 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Plug-in registry</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che-plugin-registry</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">256 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16 MiB</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>These default values are sufficient when the Che Workspace Controller manages a small amount of Che workspaces. For larger deployments, increase the memory limit. See the <a href="../../installation-guide/advanced-configuration-options-for-the-che-server-component/" class="page">Advanced configuration options for the Che server component</a> article for instructions on how to override the default requests and limits. For example, the Eclipse Che hosted by Red Hat that runs on <a href="https://workspaces.openshift.com" class="bare">https://workspaces.openshift.com</a> uses 1 GB of memory.</p>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="../che-workspace-controller/" class="page">Understanding Che workspace controller</a>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="workspaces-requirements_che"><a class="anchor" href="#workspaces-requirements_che"></a>Workspaces requirements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes how to calculate the resources required for a workspace. It is the sum of the resources required for each component of this workspace.</p>
</div>
<div class="paragraph">
<p>These examples demonstrate the necessity of a proper calculation:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>A workspace with ten active plug-ins requires more resources than the same workspace with fewer plug-ins.</p>
</li>
<li>
<p>A standard Java workspace requires more resources than a standard Node.js workspace because running builds, tests, and application debugging requires more resources.</p>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Identify the workspace components explicitly specified in the <code>components</code> section of the <a href="../../end-user-guide/authoring-devfiles-version-2/" class="page">Authoring devfiles version 2</a>.</p>
</li>
<li>
<p>Identify the implicit workspace components:</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Che implicitly loads the default <code>cheEditor</code>: <code>che-theia</code>, and the <code>chePlugin</code> that allows commands execution: <code>che-machine-exec-plugin</code>. To change the default editor, add a <code>cheEditor</code> component section in the devfile.</p>
</li>
<li>
<p>When Che is running in multiuser mode, it loads the <code>JWT Proxy</code> component. The JWT Proxy is responsible for the authentication and authorization of the external communications of the workspace components.</p>
</li>
</ol>
</div>
</li>
<li>
<p>Calculate the requirements for each component:</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Default values:</p>
<div class="paragraph">
<p>The following table presents the default requirements for all workspace components. It also presents the corresponding Che server property to modify the defaults cluster-wide.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 2. Default requirements of workspace components by type</caption>
<colgroup>
<col style="width: 42.8571%;">
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2858%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Component types</th>
<th class="tableblock halign-left valign-top">Che server property</th>
<th class="tableblock halign-left valign-top">Default memory limit</th>
<th class="tableblock halign-left valign-top">Default memory request</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>chePlugin</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che.workspace.sidecar.default_memory_limit_mb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">64 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cheEditor</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che.workspace.sidecar.default_memory_limit_mb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">64 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>kubernetes</code>, <code>openshift</code>, <code>dockerimage</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che.workspace.default_memory_limit_mb</code>, <code>che.workspace.default_memory_request_mb</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 Gi</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">200 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>JWT Proxy</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>che.server.secure_exposer.jwtproxy.memory_limit</code>, <code>che.server.secure_exposer.jwtproxy.memory_request</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">15 MiB</p></td>
</tr>
</tbody>
</table>
</li>
<li>
<p>Custom requirements for <code>chePlugins</code> and <code>cheEditors</code> components:</p>
<div class="olist lowerroman">
<ol class="lowerroman" type="i">
<li>
<p>Custom memory limit and request:</p>
<div class="paragraph">
<p>If present, the <code>memoryLimit</code> and <code>memoryRequest</code> attributes of the <code>containers</code> section of the <code>meta.yaml</code> file define the memory limit of the <code>chePlugins</code> or <code>cheEditors</code> components. Che automatically sets the memory request to match the memory limit in case it is not specified explicitly.</p>
</div>
<div class="exampleblock">
<div class="title">Example 1. The <code>chePlugin</code> <code>che-incubator/typescript/latest</code></div>
<div class="content">
<div class="listingblock">
<div class="title"><code>meta.yaml</code> spec section:</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml">spec:
containers:
- image: docker.io/eclipse/che-remote-plugin-node:next
name: vscode-typescript
memoryLimit: 512Mi
memoryRequest: 256Mi</code></pre>
</div>
</div>
<div class="paragraph">
<p>This results in a container with the following memory limit and request:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Memory limit</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Memory request</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">256 MiB</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<div class="title">How to find the <code>meta.yaml</code> file of <code>chePlugin</code></div>
<p>Community plug-ins are available in the <a href="https://github.com/eclipse-che/che-plugin-registry">Che plug-ins registry repository</a> in folder <code>v3/plugins/${organization}/${name}/${version}/</code>.</p>
</div>
<div class="paragraph">
<p>For non-community or customized plug-ins, the <code>meta.yaml</code> files are available on the local Kubernetes or OpenShift cluster at <code>${pluginRegistryEndpoint}/v3/plugins/${organization}/${name}/${version}/meta.yaml</code>.</p>
</div>
<div class="paragraph">
<p>For example, on a local Minikube cluster, the URL for the <code>che-incubator/typescript/latest meta.yaml</code> is <code>http://plugin-registry-che.192.168.64.78.nip.io/v3/plugins/che-incubator/typescript/latest/meta.yaml</code>.</p>
</div>
</td>
</tr>
</table>
</div>
</li>
<li>
<p>Custom CPU limit and request:</p>
<div class="paragraph">
<p>Che does not set CPU limits and requests by default. However, it is possible to configure CPU limits
for the <code>chePlugin</code> and <code>cheEditor</code> types in the <code>meta.yaml</code> file or in the devfile in the same way as it done for memory limits.</p>
</div>
<div class="exampleblock">
<div class="title">Example 2. The <code>chePlugin</code> <code>che-incubator/typescript/latest</code></div>
<div class="content">
<div class="listingblock">
<div class="title"><code>meta.yaml</code> spec section:</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml">spec:
containers:
- image: docker.io/eclipse/che-remote-plugin-node:next
name: vscode-typescript
cpuLimit: 2000m
cpuRequest: 500m</code></pre>
</div>
</div>
<div class="paragraph">
<p>It results in a container with the following CPU limit and request:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPU limit</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2 cores</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">CPU request</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0.5 cores</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
</ol>
</div>
</li>
</ol>
</div>
</li>
</ol>
</div>
<div class="paragraph">
<p>To set CPU limits and requests globally, use the following dedicated environment variables:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CPU Limit</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__LIMIT__CORES</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CPU Request</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CHE_WORKSPACE_SIDECAR_DEFAULT__CPU__REQUEST__CORES</code></p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>See also <a href="../../installation-guide/advanced-configuration-options-for-the-che-server-component/" class="page">Advanced configuration options for the Che server component</a>.</p>
</div>
<div class="paragraph">
<p>Note that the <code>LimitRange</code> object of the Kubernetes namespace or OpenShift project may specify defaults for CPU limits and requests set by cluster administrators. To prevent start errors due to resources overrun, limits on application or workspace levels must comply with those settings.</p>
</div>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Custom requirements for <code>dockerimage</code> components</p>
<div class="paragraph">
<p>If present, the <code>memoryLimit</code> and <code>memoryRequest</code> attributes of the devfile define the memory limit of a <code>dockerimage</code> container. Che automatically sets the memory request to match the memory limit in case it is not specified explicitly.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml"> - alias: maven
type: dockerimage
image: eclipse/maven-jdk8:latest
memoryLimit: 1536M</code></pre>
</div>
</div>
</li>
<li>
<p>Custom requirements for <code>kubernetes</code> or <code>openshift</code> components:</p>
<div class="paragraph">
<p>The referenced manifest may define the memory requirements and limits.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Add all previously calculated requirements.</p>
</li>
</ol>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="../che-workspaces-architecture/" class="page">Understanding Che workspaces architecture</a>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="a-workspace-example_che"><a class="anchor" href="#a-workspace-example_che"></a>A workspace example</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes a Che workspace example.</p>
</div>
<div class="paragraph">
<p>The following devfile defines the Che workspace:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml">apiVersion: 1.0.0
metadata:
generateName: guestbook-nodejs-sample-
projects:
- name: guestbook-nodejs-sample
source:
type: git
location: "https://github.com/l0rd/nodejs-sample"
components:
- type: chePlugin
id: che-incubator/typescript/latest
- type: kubernetes
alias: guestbook-frontend
reference: https://raw.githubusercontent.com/l0rd/nodejs-sample/master/kubernetes-manifests/guestbook-frontend.deployment.yaml
mountSources: true
entrypoints:
- command: ['sleep']
args: ['infinity']</code></pre>
</div>
</div>
<div class="paragraph">
<p>This table provides the memory requirements for each workspace component:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 3. Total workspace memory requirement and limit</caption>
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 50%;">
<col style="width: 16.6666%;">
<col style="width: 16.6668%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Pod</th>
<th class="tableblock halign-left valign-top">Container name</th>
<th class="tableblock halign-left valign-top">Default memory limit</th>
<th class="tableblock halign-left valign-top">Default memory request</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">theia-ide (default <code>cheEditor</code>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">machine-exec (default <code>chePlugin</code>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vscode-typescript (<code>chePlugin</code>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Workspace</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">frontend (<code>kubernetes</code>)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 GiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">JWT Proxy</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">verifier</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">128 MiB</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top" colspan="2"><p class="tableblock"><strong>Total</strong></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>2.25 GiB</strong></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>1.75 GiB</strong></p></td>
</tr>
</tbody>
</table>
<div class="ulist">
<ul>
<li>
<p>The <code>theia-ide</code> and <code>machine-exec</code> components are implicitly added to the workspace, even when not included in the devfile.</p>
</li>
<li>
<p>The resources required by <code>machine-exec</code> are the default for <code>chePlugin</code>.</p>
</li>
<li>
<p>The resources for <code>theia-ide</code> are specifically set in the <code>cheEditor</code> <code>meta.yaml</code> to <strong>512 MiB</strong> as <code>memoryLimit</code>.</p>
</li>
<li>
<p>The Typescript VS Code extension has also overridden the default memory limits. In its <code>meta.yaml</code> file, the limits are explicitly specified to <strong>512 MiB</strong>.</p>
</li>
<li>
<p>Che is applying the defaults for the <code>kubernetes</code> component type: a memory limit of <strong>1 GiB</strong> and a memory request of <strong>512 MiB</strong>. This is because the <code>kubernetes</code> component references a <code>Deployment</code> manifest that has a container specification with no resource limits or requests.</p>
</li>
<li>
<p>The JWT container requires <strong>128 MiB</strong> of memory.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Adding all together results in <strong>1.75 GiB</strong> of memory requests with a <strong>2.25 GiB</strong> limit.</p>
</div>
<div class="ulist">
<div class="title">Additional resources</div>
<ul>
<li>
<p><a href="../che-architecture-overview/" class="page">Che architecture overview</a></p>
</li>
<li>
<p><a href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/">Kubernetes compute resources management documentation</a></p>
</li>
<li>
<p><a href="../../installation-guide/configuring-the-che-installation/" class="page">Configuring the Che installation</a></p>
</li>
<li>
<p><a href="../../installation-guide/advanced-configuration-options-for-the-che-server-component/" class="page">Advanced configuration options for the Che server component</a></p>
</li>
<li>
<p><a href="../../end-user-guide/authoring-devfiles-version-2/" class="page">Authoring devfiles version 2</a></p>
</li>
<li>
<p><a href="../authenticating-users/" class="page">Authenticating users</a></p>
</li>
<li>
<p><a href="https://github.com/eclipse-che/che-plugin-registry">Che plug-ins registry repository</a></p>
</li>
</ul>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<div><a href="https://www.eclipse.org" target="_blank">Eclipse Foundation</a> |
<a href="https://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> |
<a href="https://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> |
<a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">Eclipse Public License</a> |
<a href="https://www.eclipse.org/legal" target="_blank">Legal Resources</a></div>
</footer>
<script src="../../../_/js/site.js"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>