From bd88b933e6884620850f1b834142fa4fb889b0c6 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Mon, 25 Mar 2024 15:26:06 +0000 Subject: [PATCH 1/5] Update 1k requirements Introduce recommended memory size of 16GB --- .../reference_architectures/10k_users.md | 2 +- .../reference_architectures/1k_users.md | 13 +++++++-- .../reference_architectures/2k_users.md | 6 ++-- .../reference_architectures/3k_users.md | 2 +- .../reference_architectures/index.md | 12 ++++---- doc/install/requirements.md | 29 +++++-------------- 6 files changed, 29 insertions(+), 35 deletions(-) diff --git a/doc/administration/reference_architectures/10k_users.md b/doc/administration/reference_architectures/10k_users.md index d112c6174bf578..e6c80d75978d4e 100644 --- a/doc/administration/reference_architectures/10k_users.md +++ b/doc/administration/reference_architectures/10k_users.md @@ -40,7 +40,7 @@ specifically the [Before you start](index.md#before-you-start) and [Deciding whi | Sidekiq7 | 4 | 4 vCPU, 15 GB memory | `n1-standard-4` | `m5.xlarge` | `D4s v3` | | GitLab Rails7 | 3 | 32 vCPU, 28.8 GB memory | `n1-highcpu-32` | `c5.9xlarge` | `F32s v2` | | Monitoring node | 1 | 4 vCPU, 3.6 GB memory | `n1-highcpu-4` | `c5.xlarge` | `F4s v2` | -| Object storage 4 | - | - | - | - | - | +| Object storage4 | - | - | - | - | - | **Footnotes:** diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index af324966583649..2cea7a8750b9c6 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -23,9 +23,16 @@ For a full list of reference architectures, see > can follow a [modified hybrid reference architecture](#cloud-native-hybrid-reference-architecture-with-helm-charts). > - **Unsure which Reference Architecture to use?** [Go to this guide for more info](index.md#deciding-which-architecture-to-use). -| Users | Configuration | GCP | AWS | Azure | -|--------------|-------------------------|----------------|--------------|----------| -| Up to 1,000 or 20 RPS | 8 vCPU, 7.2 GB memory | `n1-highcpu-8` | `c5.2xlarge` | `F8s v2` | +| Users | Configuration | GCP | AWS | Azure | +|--------------|----------------------|----------------|--------------|----------| +| Up to 1,000 or 20 RPS | 8 vCPU, 16 GB memory | `n1-standard-8`1 | `c5.2xlarge` | `F8s v2` | + +**Footnotes:** + + + +1. For GCP, the closest and equivalent standard machine type has been selected that matches the recommended requirement of 8 vCPU and 16 GB of RAM. A [custom machine type](https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type) can also be used if desired. + ```plantuml @startuml 1k diff --git a/doc/administration/reference_architectures/2k_users.md b/doc/administration/reference_architectures/2k_users.md index c08972a9c7a11b..d9bee40a2b5b6e 100644 --- a/doc/administration/reference_architectures/2k_users.md +++ b/doc/administration/reference_architectures/2k_users.md @@ -1134,10 +1134,10 @@ services where applicable): | Service | Nodes | Configuration | GCP | AWS | |-----------------------------|-------|------------------------|-----------------|-------------| -| PostgreSQL 1 | 1 | 2 vCPU, 7.5 GB memory | `n1-standard-2` | `m5.large` | -| Redis 2 | 1 | 1 vCPU, 3.75 GB memory | `n1-standard-1` | `m5.large` | +| PostgreSQL1 | 1 | 2 vCPU, 7.5 GB memory | `n1-standard-2` | `m5.large` | +| Redis2 | 1 | 1 vCPU, 3.75 GB memory | `n1-standard-1` | `m5.large` | | Gitaly | 1 | 4 vCPU, 15 GB memory | `n1-standard-4` | `m5.xlarge` | -| Object storage 3 | - | - | - | - | +| Object storage3 | - | - | - | - | **Footnotes:** diff --git a/doc/administration/reference_architectures/3k_users.md b/doc/administration/reference_architectures/3k_users.md index 7b7b1469fd3357..6b094f64502b81 100644 --- a/doc/administration/reference_architectures/3k_users.md +++ b/doc/administration/reference_architectures/3k_users.md @@ -39,7 +39,7 @@ For a full list of reference architectures, see | Sidekiq7 | 2 | 4 vCPU, 15 GB memory | `n1-standard-4` | `m5.xlarge` | `D2s v3` | | GitLab Rails7 | 3 | 8 vCPU, 7.2 GB memory | `n1-highcpu-8` | `c5.2xlarge` | `F8s v2` | | Monitoring node | 1 | 2 vCPU, 1.8 GB memory | `n1-highcpu-2` | `c5.large` | `F2s v2` | -| Object storage 4 | - | - | - | - | - | +| Object storage4 | - | - | - | - | - | **Footnotes:** diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index c5874651cd75dd..18f660160506ee 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -208,12 +208,14 @@ Before implementing a reference architecture, refer to the following requirement ### Supported CPUs -These reference architectures were built and tested on Google Cloud Platform (GCP) using the -[Intel Xeon E5 v3 (Haswell)](https://cloud.google.com/compute/docs/cpu-platforms) -CPU platform as the lowest common denominator baseline ([Sysbench benchmark](https://gitlab.com/gitlab-org/quality/performance/-/wikis/Reference-Architectures/GCP-CPU-Benchmarks)). -Newer, similarly-sized CPUs are supported and may have improved performance as a result. +The reference architectures are built and tested across various cloud providers, primarily GCP and AWS, with +CPU targets being the lowest common denominator to ensure the widest range of compatibility - The [`n1` series](https://cloud.google.com/compute/docs/general-purpose-machines#n1_machines) for GCP and the [`m5` series](https://aws.amazon.com/ec2/instance-types/) for AWS. -ARM CPUs are supported for Linux package environments as well as for any [Cloud Provider services](#cloud-provider-services) where applicable. +Depending on other requirements such as memory or network bandwidth as well as cloud provider availability, different machine types are used accordingly throughout the architectures, but it is expected that the target CPUs above should perform well. + +It's supported for you to select a newer machine type series if desired and may have improved performance as a result. + +Additionally, ARM CPUs are supported for Linux package environments as well as for any [Cloud Provider services](#cloud-provider-services) where applicable. NOTE: Any "burstable" instance types are not recommended due to inconsistent performance. diff --git a/doc/install/requirements.md b/doc/install/requirements.md index 24ad60560a73e4..3ed146746915a9 100644 --- a/doc/install/requirements.md +++ b/doc/install/requirements.md @@ -38,37 +38,22 @@ NOTE: CPU requirements are dependent on the number of users and expected workload. Your exact needs may be more, depending on your workload. Your workload is influenced by factors such as - but not limited to - how active your users are, how much automation you use, mirroring, and repository/change size. -The following is the recommended minimum CPU hardware guidance for a handful of example GitLab user base sizes. +Refer below for CPU recommendations depending on user count / load: -- **4 cores** is the **recommended** minimum number of cores and supports up to 500 users -- 8 cores supports up to 1000 users -- More users? Consult the [reference architectures page](../administration/reference_architectures/index.md) +- Up to 1000 users - 8 vCPU +- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) ### Memory Memory requirements are dependent on the number of users and expected workload. Your exact needs may be more, depending on your workload. Your workload is influenced by factors such as - but not limited to - how active your users are, how much automation you use, mirroring, and repository/change size. -The following is the recommended minimum Memory hardware guidance for a handful of example GitLab user base sizes. +Refer below for Memory recommendations depending on user count / load: -- **4 GB RAM** is the **required** minimum memory size and supports up to 500 users -- 8 GB RAM supports up to 1000 users -- More users? Consult the [reference architectures page](../administration/reference_architectures/index.md) - -For smaller installations, you should: - -- Have at least 2 GB of swap on your server, even if you have enough available RAM. Having swap helps to reduce the chance of - errors occurring if your available memory changes. -- Configure the kernel's swappiness setting to a low value like `10` to make the most of your RAM while still having the swap available when needed. - -For larger installations that follow our reference architectures, you [shouldn't configure swap](../administration/reference_architectures/index.md#no-swap). +- Up to 1000 users - 8 GB (Minimum), 16 GB (Recommended) +- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) NOTE: -Although excessive swapping is undesired and degrades performance, it is an -extremely important last resort against out-of-memory conditions. During -unexpected system load, such as OS updates or other services on the same host, -peak memory load spikes could be much higher than average. Having plenty of swap -helps avoid the Linux OOM killer unsafely terminating a potentially critical -process, such as PostgreSQL, which can have disastrous consequences. +GitLab may run in a [memory constrained environments](https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) if required in certain circumstances, but this is not recommended. ## Database -- GitLab From bf4f0aaa4f685b454350d2ce19c31856f1cdcf13 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Mon, 15 Apr 2024 10:36:39 +0100 Subject: [PATCH 2/5] Further tweaks --- doc/administration/reference_architectures/1k_users.md | 2 +- doc/install/requirements.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/administration/reference_architectures/1k_users.md b/doc/administration/reference_architectures/1k_users.md index 2cea7a8750b9c6..4d29024076c852 100644 --- a/doc/administration/reference_architectures/1k_users.md +++ b/doc/administration/reference_architectures/1k_users.md @@ -25,7 +25,7 @@ For a full list of reference architectures, see | Users | Configuration | GCP | AWS | Azure | |--------------|----------------------|----------------|--------------|----------| -| Up to 1,000 or 20 RPS | 8 vCPU, 16 GB memory | `n1-standard-8`1 | `c5.2xlarge` | `F8s v2` | +| Up to 1,000 or 20 RPS | 8 vCPU, 16 GB memory | `n1-standard-8`1 | `c5.2xlarge` | `F8s v2` | **Footnotes:** diff --git a/doc/install/requirements.md b/doc/install/requirements.md index 3ed146746915a9..41ed81dc9c5165 100644 --- a/doc/install/requirements.md +++ b/doc/install/requirements.md @@ -40,7 +40,7 @@ CPU requirements are dependent on the number of users and expected workload. You Refer below for CPU recommendations depending on user count / load: -- Up to 1000 users - 8 vCPU +- Up to 20 Requests per Second (RPS) or 1000 users - 8 vCPU - More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) ### Memory @@ -49,7 +49,7 @@ Memory requirements are dependent on the number of users and expected workload. Refer below for Memory recommendations depending on user count / load: -- Up to 1000 users - 8 GB (Minimum), 16 GB (Recommended) +- Up to 20 Requests per Second (RPS) or 1000 users - 8 GB (Minimum), 16 GB (Recommended) - More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) NOTE: -- GitLab From e42ca544bda708eb2cc3783ce7f2f7bb160b85be Mon Sep 17 00:00:00 2001 From: Grant Young Date: Mon, 15 Apr 2024 10:50:53 +0100 Subject: [PATCH 3/5] Add update history entries --- doc/administration/reference_architectures/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 18f660160506ee..6f446a86fb08dc 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -760,6 +760,8 @@ You can find a full history of changes [on the GitLab project](https://gitlab.co **2024:** +- [2024-04](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149528): Updated 20 RPS / 1,000 User architecture specs to follow recommended memory target of 16 GB. +- [2024-04](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148313): Updated Reference Architecture titles to include RPS for further clarity and to help right sizing. - [2024-02](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145436): Updated recommended sizings for Load Balancer nodes if deployed on VMs. Also added notes on network bandwidth considerations. - [2024-02](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/143539): Remove the Sidekiq Max Concurrency setting in examples as this is deprecated and no longer required to be set explicitly. - [2024-02](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/143539): Adjusted the Sidekiq recommendations on 2k to disable Sidekiq on Rails nodes and updated architecture diagram. -- GitLab From c39ff156ab6bcc8e7b2525ae437f0e1595e62f01 Mon Sep 17 00:00:00 2001 From: Grant Young Date: Thu, 25 Apr 2024 16:24:17 +0000 Subject: [PATCH 4/5] Apply 3 suggestion(s) to 2 file(s) Co-authored-by: Achilleas Pipinellis --- doc/administration/reference_architectures/index.md | 7 +++++-- doc/install/requirements.md | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/administration/reference_architectures/index.md b/doc/administration/reference_architectures/index.md index 6f446a86fb08dc..94192e275a6444 100644 --- a/doc/administration/reference_architectures/index.md +++ b/doc/administration/reference_architectures/index.md @@ -209,11 +209,14 @@ Before implementing a reference architecture, refer to the following requirement ### Supported CPUs The reference architectures are built and tested across various cloud providers, primarily GCP and AWS, with -CPU targets being the lowest common denominator to ensure the widest range of compatibility - The [`n1` series](https://cloud.google.com/compute/docs/general-purpose-machines#n1_machines) for GCP and the [`m5` series](https://aws.amazon.com/ec2/instance-types/) for AWS. +CPU targets being the lowest common denominator to ensure the widest range of compatibility: + +- The [`n1` series](https://cloud.google.com/compute/docs/general-purpose-machines#n1_machines) for GCP. +- The [`m5` series](https://aws.amazon.com/ec2/instance-types/) for AWS. Depending on other requirements such as memory or network bandwidth as well as cloud provider availability, different machine types are used accordingly throughout the architectures, but it is expected that the target CPUs above should perform well. -It's supported for you to select a newer machine type series if desired and may have improved performance as a result. +If you want, you can select a newer machine type series and have improved performance as a result. Additionally, ARM CPUs are supported for Linux package environments as well as for any [Cloud Provider services](#cloud-provider-services) where applicable. diff --git a/doc/install/requirements.md b/doc/install/requirements.md index 41ed81dc9c5165..988d0c014ae947 100644 --- a/doc/install/requirements.md +++ b/doc/install/requirements.md @@ -53,7 +53,7 @@ Refer below for Memory recommendations depending on user count / load: - More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) NOTE: -GitLab may run in a [memory constrained environments](https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) if required in certain circumstances, but this is not recommended. +While not recommended, GitLab may run in a [memory constrained environment](https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) in certain circumstances. ## Database -- GitLab From ab5afcf517dcea21852d6b0b6aa43b14a157e619 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Thu, 25 Apr 2024 17:08:05 +0000 Subject: [PATCH 5/5] Apply 3 suggestion(s) to 1 file(s) --- doc/install/requirements.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/install/requirements.md b/doc/install/requirements.md index 988d0c014ae947..d3c9e948ff9839 100644 --- a/doc/install/requirements.md +++ b/doc/install/requirements.md @@ -40,8 +40,8 @@ CPU requirements are dependent on the number of users and expected workload. You Refer below for CPU recommendations depending on user count / load: -- Up to 20 Requests per Second (RPS) or 1000 users - 8 vCPU -- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) +- Up to 20 Requests per Second (RPS) or 1000 users - 8 vCPU. +- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md). ### Memory @@ -49,11 +49,11 @@ Memory requirements are dependent on the number of users and expected workload. Refer below for Memory recommendations depending on user count / load: -- Up to 20 Requests per Second (RPS) or 1000 users - 8 GB (Minimum), 16 GB (Recommended) -- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md) +- Up to 20 Requests per Second (RPS) or 1000 users - 8 GB (Minimum), 16 GB (Recommended). +- More users or load? Consult the [reference architectures page](../administration/reference_architectures/index.md). NOTE: -While not recommended, GitLab may run in a [memory constrained environment](https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) in certain circumstances. +While not recommended, in certain circumstances GitLab may run in a [memory constrained environment](https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html). ## Database -- GitLab