System Resource Requirements
Although resource requirements will largely depend on the size and resource demands of your Couchbase deployment, there are some minimum and recommended specifications that you should follow.
CPU Requirements
Couchbase Server can run on x86 and ARM processors (including Apple Silicon processors). This section explains the minimum requirements for of these platforms.
x86 Processors
deprecation notice
The use of older x86 processors that do not implement the Advanced Vector Extensions 2 (AVX2) instruction set are deprecated in Couchbase Server 7.6.x. Future versions will require processors that have AVX2 support. This requirements is only for x86 processors—ARM processors have a separate set of vector instructions. The earliest processors that support AVX2 instructions include:
Processors from these or later generations will be required to run Couchbase Server in the future. On Linux, you can tell if your processor has the AVX2 instructions by executing the following command:
If the command returns the text |
Couchbase Server has the following requirements when running on x86 processors.
Minimum Specifications* | Recommended Specifications** | |||
---|---|---|---|---|
CPU |
2 GHz dual-core x86_64 CPU supporting SSE4.2 |
3 GHz quad-core x86_64 CPU supporting SSE4.2 and above 3 GHz six core x86_64 CPU supporting SSE4.2 when using Cross Datacenter Replication (XDCR) and Views |
||
RAM |
4 GiB (physical) |
16 GiB (physical) and above |
||
Storage (disk space) |
8 GiB (block-based; HDD, SSD, EBS, iSCSI) Network file systems such as CIFS and NFS are not supported. |
16 GiB and above (SSD) Network file systems such as CIFS and NFS are not supported. |
||
|
ARM Processors
Couchbase Server has the following requirements when running on ARM-based platforms.
Minimum Specifications* | Recommended Specifications** | |||
---|---|---|---|---|
CPU |
2 Ghz dual core 64bit ARM v8 CPU |
2.5 Ghz quad core 64bit ARM v8 CPU |
||
RAM |
4 GiB (physical) |
16 GiB (physical) and above |
||
Storage (disk space) |
8 GiB (block-based; HDD, SSD, EBS, iSCSI) Network file systems such as CIFS and NFS are not supported. |
16 GiB and above (SSD) Network file systems such as CIFS and NFS are not supported. |
||
|
||||
CPU |
2 GHz quad-core x86_64 CPU supporting SSE4.2 |
3 GHz sixteen-core x86_64 CPU supporting SSE4.2 and above |
||
RAM |
8 GiB (physical) |
16 GiB (physical) and above |
||
Storage (disk space) |
8 GiB (block-based; HDD, SSD, EBS, iSCSI) Network file systems such as CIFS and NFS are not supported. |
16 GiB and above (SSD) Network file systems such as CIFS and NFS are not supported. |
*You can reduce the CPU and RAM resources below the Minimum Specifications for development and testing purposes. Resources can be as low as 1 GB of free RAM beyond operating system requirements, and a single CPU core. However, you must adhere to the Minimum Specifications for production._
**The Recommended Specifications do not take into account your intended workload. You should follow the sizing guidelines when determining system specifications for your Couchbase Server deployment.
Clock Source on Linux
The Query Service relies on the Linux operating system’s monotonic clock when profiling and managing network timeouts.
The Linux kernel uses a clock source to track elapsed time, handle scheduling and timers, and to get the current time. It can use one of several possible sources, such as Time Stamp Counter (TSC), the XEN build into the Xen virtualization framework, and others. See Clock sources, Clock events, sched_clock() and delay timers for more information about clock sources. Which source the kernel uses depends on the hardware clock capabilities and Linux configuration settings.
Some virtualization environments, such as older AWS EC2 clusters, use the XEN clock source. This source can cause performance issues because reading it requires an expensive system call to the hypervisor. In some cases, a XEN clock source has used up to 25% of CPU time when timers are in heavy use.
The TSC clock source incurs little CPU cost because it’s a CPU instruction instead of a kernel or hypervisor call. If your platform has a reliable and invariant implementation of TSC, use it as the clock source. Consult the documentation for your platform for more information about its TSC implementation.
Use the following command to see which clock source Linux is using:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
You can change the clock source to TSC by running the following command as root:
echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource
Verify the current setting of the clock source, read the current_clocksource
again:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
The output should read tsc
.