Resource class overview
Use resource classes to:
-
Specify compute resource size (CPU and RAM) for running a job.
-
Optimize executors based on historical trends with resource class Insights.
-
Configure self-hosted runners for use in your
.circleci/config.yml
file. -
Specify an execution environment.
Introduction
The resource_class
configuration option has multiple uses: specifying compute resource size, optimizing executors, configuring self-hosted runners, and specifying an execution evironment.
The most common usage is to specify CPU and RAM requirements for a job by configuring the resource_class
key for an executor.
jobs:
my-job:
docker: # use the Docker executor
- image: cimg/base:2022.09 # specify a Docker image
resource_class: xlarge # specify a resource class
steps:
- run: echo "Hello World"
Executor resource classes are specified by size, for example, small
or medium
. Each size corresponds to specific CPU and RAM requirements.
For a full list of available resource class options, see the configuration reference. The resource class product page provides information on credit usage per resource class, and resource class availability for each plan type. |
When using CircleCI’s self-hosted runners, use the resource_class
key in your project configuration to specify which runner to use for a job. Self-hosted runner resource classes are assigned and configured during the installation process.
jobs:
my-job:
machine: true
resource_class: <my-namespace>/<my-runner>
steps:
- run: echo "Hello runner"
Another use of the resource_class
key is to specify an execution environment. For example, Arm is a resource class option when using the machine
executor.
jobs:
my-job:
machine:
image: ubuntu-2004:202101-01
resource_class: arm.medium
steps:
- run: uname -a
- run: echo "Hello, Arm!"
Quickstart
For config examples showing how to use the resource_class
key to specify CPU and RAM size for an execution environment, see the following sections of the configuration reference page:
To get started setting up a self-hosted runner, see the Getting started section of the Self-hosted runners overview. |
Default resource class
If a resource_class
is not explicitly declared for a job, CircleCI will use a default resource class size. Defaults are subject to change. It is best practice to specify a resource class, rather than relying on a default.
Resource class usage tools
Information about the resource classes used in your jobs can be found in the web app, or by using the API. See the sections below for details.
Find the resource class used for a job
The job details page in the web app shows the resource class used for a job.
Alternatively, use the "Get job details" endpoint to return information about a job, including the resource class used. For usage steps see the get job details how-to guide.
View resource usage per job
To view the compute resource usage for the duration of a job in the CircleCI web app:
-
Select Dashboard from the sidebar menu
-
Use the dropdown menus to select a project, and a branch
-
Expand your workflow ( )
-
Select a job by clicking on the job name
-
Select the Resources tab to view CPU and RAM usage for the duration of the job
You can use these insights to decide whether to make changes to the job’s configured resource class. You can also access resource class Insights.
Resource class Insights
Resource class Insights let you track resource utilization for your jobs. You can inspect and use this information to update your executors based on historical trends and job requirements.
To find resource class Insights:
-
Select Insights from the web app sidebar.
-
The dashboard shows Insights at the project level. To find resource class Insights you need to drill down to the job level:
-
Select a project from the drop down.
-
Select a workflow from the list.
-
Select the Jobs tab.
-
Expand a job to view the resource class Insights.
Figure 2. Resource class Insights
-
See also
-
For a full list of available resource class options, see the configuration reference.
-
For information on credit usage per resource class, and to find out resource class availability per plan type, see the resource class product page.