-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DOC-923 Update tasks to compute units for resource allocation #207
base: main
Are you sure you want to change the base?
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,22 @@ | ||
= Manage Pipeline Resources on BYOC and Dedicated Clusters | ||
= Manage Pipeline Resources | ||
:description: Learn how to set an initial resource limit for a standard data pipeline (excluding Ollama AI components) and how to manually scale the pipeline’s resources to improve performance. | ||
:page-aliases: develop:connect/configuration/scale-pipelines.adoc | ||
|
||
{description} | ||
|
||
== Prerequisites | ||
|
||
- A running xref:get-started:cluster-types/byoc/index.adoc[BYOC] (not BYOVPC) or xref:get-started:cluster-types/dedicated/create-dedicated-cloud-cluster.adoc[Dedicated cluster] | ||
- A running xref:get-started:cluster-types/byoc/index.adoc[BYOC] (not BYOVPC) or xref:get-started:cluster-types/dedicated/create-dedicated-cloud-cluster.adoc[Dedicated], xref:get-started:cluster-types/serverless-pro.adoc[Serverless Pro], or xref:get-started:cluster-types/serverless.adoc[Serverless Standard] cluster. | ||
- An estimate of the throughput of your data pipeline. You can get some basic statistics by running your data pipeline locally using the xref:redpanda-connect:components:processors/benchmark.adoc[`benchmark` processor]. | ||
|
||
=== Understanding tasks | ||
=== Understanding compute units | ||
|
||
A task is a unit of computation that allocates a specific amount of CPU and memory to a data pipeline to handle message throughput. By default, each pipeline is allocated one task, which includes 0.1 CPU (100 milliCPU or `100m`) and 400 MB (`400M`) of memory, and provides a message throughput of approximately 1 MB/sec. You can allocate up to a maximum of 18 tasks per pipeline. | ||
A compute unit allocates a specific amount of server resources (CPU and memory) to a data pipeline to handle message throughput. By default, each pipeline is allocated one compute unit, which includes 0.1 CPU (100 milliCPU or `100m`) and 400 MB (`400M`) of memory, and provides a message throughput of up to 1 MB/sec. | ||
|
||
Server resources are charged at an hourly rate in compute unit hours and you can allocate up to a maximum of 18 compute units per pipeline. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we can say that the maximum number of compute units varies by provider, it's no longer 18 after we did some tests. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jrkinley - should we state the compute unit limit per provider or remove all mention of an upper limit? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @nicolaferraro wouldn't it be easier to set the same limit across all providers? and take the lowest one of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @asimms41 I'd caveat "up to 1MB/s" as every pipeline can and probably will be wildly different. See my description here: What-is-a-Compute-Unit? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are currently increasing the maximum pipeline size, so that twice and 4 times as large pipelines will be able to run. The compute units for the larger pipelines are:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I find it strange for the limits to be different. What was so different in testing to warrant a 200 millicore difference between providers? Will all pipelines this large run on the 8-core instance sizes? i.e. we're not planning to use 4-core instance sizes for the 33-36 compute unit pipelines? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes, we provision 4-core and 8-core instances in addition to the initial 2-core ones, so that we don't waste too much There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we agreed with Nicola to go with the unified numbers across providers, which are:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that makes sense. Thanks @tomasz-sadura @nicolaferraro. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated max to 15 until limits for larger pipelines are configurable. |
||
|
||
|=== | ||
| Number of Tasks | CPU | Memory | ||
| Number of compute units | CPU | Memory | ||
|
||
| 1 | ||
| 0.1 CPU (`100m`) | ||
|
@@ -90,11 +92,11 @@ A task is a unit of computation that allocates a specific amount of CPU and memo | |
|
||
|=== | ||
|
||
NOTE: For pipelines with embedded Ollama AI components, one GPU task is automatically allocated to the pipeline, which is equivalent to 30 tasks or 3.0 CPU (`3000m`) and 12 GB of memory (`12000M`). | ||
NOTE: For pipelines with embedded Ollama AI components, one GPU is automatically allocated to the pipeline, which is equivalent to 30 compute units, or 3.0 CPU (`3000m`) and 12 GB of memory (`12000M`). | ||
|
||
=== Set an initial resource limit | ||
|
||
When you create a data pipeline, you can allocate a fixed amount of compute resources to it using tasks. | ||
When you create a data pipeline, you can allocate a fixed amount of server resources to it using compute units. | ||
|
||
[NOTE] | ||
==== | ||
|
@@ -109,12 +111,12 @@ To set an initial resource limit: | |
. Select the **Redpanda Connect** tab. | ||
. Click **Create pipeline**. | ||
. Enter details for your pipeline, including a short name and description. | ||
. In the **Tasks** box, leave the default **1** task to experiment with pipelines that create low message volumes. For higher throughputs, you can allocate up to a maximum of 18 tasks. | ||
. In the **Compute units** box, leave the default **1** compute unit to experiment with pipelines that create low message volumes. For higher throughputs, you can allocate up to a maximum of 18 compute units. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See above for the max There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated max to 15 until limits for larger pipelines are configurable. |
||
. Add your pipeline configuration and click **Create** to run it. | ||
|
||
=== Scale resources | ||
|
||
View the compute resources allocated to a data pipeline, and manually scale those resources to improve performance or decrease resource consumption. | ||
View the server resources allocated to a data pipeline, and manually scale those resources to improve performance or decrease resource consumption. | ||
|
||
To view resources already allocated to a data pipeline: | ||
|
||
|
@@ -127,8 +129,8 @@ Cloud UI:: | |
. Go to the cluster where the pipeline is set up. | ||
. On the **Connect** page, select your pipeline and look at the value for **Resources**. | ||
+ | ||
* CPU resources are displayed first, in milliCPU. For example, `1` task is `100m` or 0.1 CPU. | ||
* Memory is displayed next in megabytes. For example, `1` task is `400M` or 400 MB. | ||
* CPU resources are displayed first, in milliCPU. For example, `1` compute unit is `100m` or 0.1 CPU. | ||
* Memory is displayed next in megabytes. For example, `1` compute unit is `400M` or 400 MB. | ||
|
||
-- | ||
Data Plane API:: | ||
asimms41 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
@@ -137,8 +139,8 @@ Data Plane API:: | |
. xref:manage:api/cloud-api-quickstart.adoc#try-the-cloud-api[Authenticate and get the base URL] for the Data Plane API. | ||
. Make a request to xref:api:ROOT:cloud-dataplane-api.adoc#get-/v1alpha2/redpanda-connect/pipelines[`GET /v1alpha2/redpanda-connect/pipelines`], which lists details of all pipelines on your cluster by ID. | ||
+ | ||
* Memory (`memory_shares`) is displayed in megabytes. For example, `1` task is `400M` or 400 MB. | ||
* CPU resources (`cpu_shares`) are displayed milliCPU. For example, `1` task is `100m` or 0.1 CPU. | ||
* Memory (`memory_shares`) is displayed in megabytes. For example, `1` compute unit is `400M` or 400 MB. | ||
* CPU resources (`cpu_shares`) are displayed milliCPU. For example, `1` compute unit is `100m` or 0.1 CPU. | ||
|
||
-- | ||
===== | ||
|
@@ -153,7 +155,7 @@ Cloud UI:: | |
. Log in to https://cloud.redpanda.com[Redpanda Cloud^]. | ||
. Go to the cluster where the pipeline is set up. | ||
. On the **Connect** page, select your pipeline and click **Edit**. | ||
. In the **Tasks** box, update the number of tasks. One task provides a message throughput of approximately 1 MB/sec. For higher throughputs, you can allocate up to a maximum of 18 tasks per pipeline. | ||
. In the **Compute units** box, update the number of compute units. One compute unit provides a message throughput of approximately 1 MB/sec. For higher throughputs, you can allocate up to a maximum of 18 compute units per pipeline. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I can't see the updates to the UI yet in our prod or integration. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See above for max. Will make sure the UI is up to date There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Updated max to 15 as in thread below until limits for larger pipelines are configurable. Although I could add up to 90 tasks through the UI? |
||
. Click **Update** to apply your changes. The specified resources are available immediately. | ||
|
||
-- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From our production env it looks like you can now scale pipeline resources for all cluster types.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think serverless still keeps the value at 1, but the constraint will likely be removed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried both Serverless types in our test environments and they both seemed to scale (in terms of tasks/compute units). I guess I just need to know what you are going to release.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nicolaferraro any reason why we cannot remove this restriction and allow Serverless user to configure up to
16
compute units (i.e. 1.6 cores and one instance)?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've assumed that Serverless (Standard and Pro) will allow pipeline scaling.