Stay organized with collections
Save and categorize content based on your preferences.
Learn how to specify the number of CPUs to allocate for each
Knative serving container instance. By default,
Knative serving does not specify a minimum or maximum number of
CPUs. Instead, your services are limited by the amount of resources available.
Learn more about CPU resources in the
container runtime contract.
Setting and updating CPU allocation
Any configuration change leads to the
creation of a new revision. Subsequent revisions will also automatically get
this configuration setting unless you make explicit updates to change it.
You can set CPU allocation using the Google Cloud console,
the Google Cloud CLI, or a YAML file when you deploy a new
service or update an existing service and
deploy a revision:
Console
Go to Knative serving in the Google Cloud console:
Click Create Service if you are configuring a
new service you are deploying to. If you are configuring an
existing service, click on the service, then click
Edit & Deploy New Revision.
Under Advanced settings, click Container.
Select the desired CPU allocation from the dropdown
list. You can select numbers in
Kubernetes CPU units.
For example, specify 1 for 1 CPU, 400m for 0.4 CPU, and so
forth.
Click Next to continue to the next section.
In the Configure how this service is triggered section,
select which connectivity you would like to use to invoke the service.
Click Create to deploy the image to Knative serving and wait
for the deployment to finish.
Command line
For existing services, set the number of CPUs to allocate by
running the gcloud run services update command with the
--cpu
parameter:
gcloudrunservicesupdateSERVICE--cpuCPU
Replace:
SERVICE with the name of your service.
CPU with the desired CPU allocation. Specify a
value in
Kubernetes CPU units.
For example, specify 1 for 1 CPU, 400m for 0.4 CPU, and so forth.
For new services, set the number of CPUs to allocate by running
the gcloud run deploy command with the
--cpu
parameter:
gcloudrundeploySERVICE--image=IMAGE_URL--cpuCPU
Replace:
SERVICE with the name of your service.
IMAGE_URL with a reference to the container image, for
example, gcr.io/cloudrun/hello.
CPU with the desired CPU allocation. Specify a
value in
Kubernetes CPU units.
For example, specify 1 for 1 CPU, 400m for 0.4 CPU, and so forth.
YAML
You can download the configuration of an existing service into a
YAML file with the gcloud run services describe command by using the
--format=export flag.
You can then modify that YAML file and deploy
those changes with the gcloud run services replace command.
You must ensure that you modify only the specified attributes.
Download the configuration of your service into a file named
service.yaml on local workspace:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Configuring CPU allocation\n\nLearn how to specify the number of CPUs to allocate for each\nKnative serving container instance. By default,\nKnative serving does not specify a minimum or maximum number of\nCPUs. Instead, your services are limited by the amount of resources available.\nLearn more about CPU resources in the\n[container runtime contract](/kubernetes-engine/enterprise/knative-serving/docs/reference/container-contract).\n\nSetting and updating CPU allocation\n-----------------------------------\n\nAny configuration change leads to the\ncreation of a new revision. Subsequent revisions will also automatically get\nthis configuration setting unless you make explicit updates to change it.\n\nYou can set CPU allocation using the Google Cloud console,\nthe Google Cloud CLI, or a YAML file when you deploy a new\n[service](/kubernetes-engine/enterprise/knative-serving/docs/deploying#service) or update an existing service and\ndeploy a [revision](/kubernetes-engine/enterprise/knative-serving/docs/deploying#revision): \n\n### Console\n\n\n1. Go to Knative serving in the Google Cloud console:\n\n [Go to Knative serving](https://console.cloud.google.com/kubernetes/run)\n2. Click **Create Service** if you are configuring a\n new service you are deploying to. If you are configuring an\n existing service, click on the service, then click\n **Edit \\& Deploy New Revision**.\n\n3. Under *Advanced settings* , click **Container**.\n\n4. Select the desired CPU allocation from the dropdown\n list. You can select numbers in\n [Kubernetes CPU units](https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-units).\n For example, specify `1` for 1 CPU, `400m` for 0.4 CPU, and so\n forth.\n\n5. Click **Next** to continue to the next section.\n\n6. In the **Configure how this service is triggered** section,\n select which connectivity you would like to use to invoke the service.\n\n7. Click **Create** to deploy the image to Knative serving and wait\n for the deployment to finish.\n\n### Command line\n\n- For existing services, set the number of CPUs to allocate by\n running the `gcloud run services update` command with the\n [`--cpu`](/sdk/gcloud/reference/run/services/update#--cpu)\n parameter:\n\n ```bash\n gcloud run services update SERVICE --cpu CPU\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eCPU\u003c/var\u003e with the desired CPU allocation. Specify a value in [Kubernetes CPU units](https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-units). For example, specify `1` for 1 CPU, `400m` for 0.4 CPU, and so forth.\n- For new services, set the number of CPUs to allocate by running\n the `gcloud run deploy` command with the\n [`--cpu`](/sdk/gcloud/reference/run/deploy#--cpu)\n parameter:\n\n ```bash\n gcloud run deploy SERVICE --image=IMAGE_URL --cpu CPU\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eIMAGE_URL\u003c/var\u003e with a reference to the container image, for example, `gcr.io/cloudrun/hello`.\n - \u003cvar translate=\"no\"\u003eCPU\u003c/var\u003e with the desired CPU allocation. Specify a value in [Kubernetes CPU units](https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-units). For example, specify `1` for 1 CPU, `400m` for 0.4 CPU, and so forth.\n\n### YAML\n\n| **Caution:** Deploying configuration changes using YAML files replaces the configuration of your existing services. Since a YAML file completely overwrites all configurations, you should avoid using multiple methods to modify your services. For example, do not use YAML files in conjunction with the Google Cloud console or `gcloud` commands.\n\nYou can download the configuration of an existing service into a\nYAML file with the `gcloud run services describe` command by using the\n[`--format=export`](/sdk/gcloud/reference/run/services/describe) flag.\nYou can then modify that YAML file and deploy\nthose changes with the `gcloud run services replace` command.\nYou must ensure that you modify only the specified attributes.\n\n1. Download the configuration of your service into a file named\n `service.yaml` on local workspace:\n\n ```bash\n gcloud run services describe SERVICE --format export \u003e service.yaml\n ```\n\n Replace \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your\n Knative serving service.\n2. In your local file, update the `cpu` attribute:\n\n ```yaml\n apiVersion: serving.knative.dev/v1\n kind: Service\n metadata:\n name: SERVICE\n spec:\n template:\n spec:\n containers:\n - image: IMAGE\n resources:\n limits:\n cpu: CPU\n ```\n\n Replace\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your Knative serving service\n - \u003cvar translate=\"no\"\u003eIMAGE\u003c/var\u003e with the URL of your container image.\n - \u003cvar translate=\"no\"\u003eCPU\u003c/var\u003e with the desired CPU value. Specify a value in [Kubernetes CPU units](https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-units). For example, specify `1` for 1 CPU, `400m` for 0.4 CPU, and so forth.\n3. Replace the service with its new configuration using the following command:\n\n ```bash\n gcloud run services replace service.yaml\n ```"]]