At Couchbase we take performance very seriously, and with the launch of our new product, Couchbase Autonomous Operator 1.0, we wanted to make sure it’s Enterprise-grade and production ready for customers.

In this blog post we will discuss the detailed performance results from running YCSB Performance Benchmark tests on Couchbase Server 5.5 using the Autonomous Operator to deploy on Kubernetes platform. One of the big concerns for Enterprises planning to run database on Kubernetes is ‘performance’ .

This document gives a quick comparison of two workloads, namely YCSB A & E with Couchbase Server 5.5 on Kubernetes vs bare metal.

YCSB Workload A: This workload has a mix of 50/50 reads and writes. An application example is a session store recording recent actions.

Workload E: Short ranges: In this workload, short ranges of records are queried, instead of individual records. Application example: threaded conversations, where each scan is for the posts in a given thread (assumed to be clustered by thread id).

In general, we observed no significant performance degradation in running Couchbase Cluster on Kubernetes, Workload A had on par performance compared to bare metal and Workload E had approximately less than 10% degradation.

Setup:

For the setup, Couchbase was installed using the Operator deployment as stated below. For more details on the setup, please refer here

./bin/ycsb run couchbase2-Pworkloads/workloada-pcouchbase.password=password-pcouchbase.host=10.44.0.2-pcouchbase.bucket=default-pcouchbase.upsert=true-pcouchbase.epoll=true-pcouchbase.boost=48-pcouchbase.persistTo=0-pcouchbase.replicateTo=0-pcouchbase.sslMode=none-pwriteallfields=true-precordcount=10000000-threads50-poperationcount=1000000000-pmaxexecutiontime=600-pexportfile=ycsb_workloadA_22vCPU.log

./bin/ycsb run couchbase2-Pworkloads/workloade-pcouchbase.password=password-pcouchbase.host=10.44.0.2-pcouchbase.bucket=default-pcouchbase.upsert=true-pcouchbase.epoll=true-pcouchbase.boost=48-pcouchbase.persistTo=0-pcouchbase.replicateTo=0-pcouchbase.sslMode=none-pwriteallfields=true-precordcount=10000000-threads50-poperationcount=1000000000-pmaxexecutiontime=600-pexportfile=ycsb_workloadE_22vCPU.log

Env

Direct setup

Kubernetes pod resources

Test

Bare metal

Kubernetes

Delta

Env 1

22 vCPU, 48 GB RAM

(cpu cores and RAM available are set on OS core level)

Limit to:

cpu: 22000m = ~22vCPU

mem: 48GB

All pods are on dedicated nodes

WorkloadE

95/5 scan/insert

Throughput: 15,823 req/sec

CPU usage avg: 85% of all 22 cores

Throughput: 14,281 req/sec

CPU usage avg: 87% of the cpu quota

– 9.7%

Env 2

16 vCPU, 48 GB RAM

(cpu cores and RAM available are set on OS core level)

Limit to:

cpu: 16000m = ~16vCPU

mem: 48GB

All pods are on dedicated nodes

WorkloadE

95/5 scan/insert

Throughput: 13,014 req/sec

CPU usage avg: 91% of all 16 cores

Throughput: 12,579 req/sec

CPU usage avg: 100% of the cpu quota

– 3.3%

Conclusions:

Couchbase Server 5.5 is production ready to be deployed on Kubernetes with the Autonomous Operator. Performance of Couchbase Server 5.5 on Kubernetes comparable to running on bare metal. There is little performance penalty in running Couchbase Server on Kubernetes platform. Looking at the results Workload A had on par performance compared to bare metal and Workload E had approximately less than 10% degradation.

Raju Suravarjjala is a Senior Director of Quality Engineering at Couchbase. He is well versed in managing teams of various sizes and specializes in testing distributed systems. He has around 20 years of industry experience working with various technology companies like Gupta SQLBase, Zaplet, Plumtree, BEA Systems, and Oracle. He holds a master's degree in computer science from University of Louisiana at Lafayette and earned his bachelor's in mechanical engineering from Jawaharlal Nehru Technological University, India.