This section guides you through benchmarking Couchbase performance on a GCP SUSE Arm64 VM using the official cbc-pillowfight tool from Couchbase C SDK. It involves installing dependencies, building the SDK, verifying the setup, and running the benchmark test.
Before compiling the Couchbase SDK, install all the required development tools and libraries:
sudo zypper install -y gcc gcc-c++ cmake make git openssl-devel libevent-devel cyrus-sasl-devel java
To get the benchmarking tools, download the official Couchbase C SDK source code. This SDK provides both the cbc command-line client and the cbc-pillowfight benchmarking utility.
First, move to your home directory and clone the repository:
cd ~
git clone https://github.com/couchbase/libcouchbase.git
cd libcouchbase
Next, build and install the SDK:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
This process compiles the SDK and installs the binaries to /usr/local/bin. You can now use cbc and cbc-pillowfight for benchmarking Couchbase performance on your Arm64 VM. cbc-pillowfight is a Couchbase command-line benchmarking tool that simulates a workload by performing concurrent read and write operations on a bucket to test Couchbase cluster performance.
Now clone the official Couchbase C SDK repository from GitHub. This SDK includes benchmarking tools such as cbc and cbc-pillowfight:
cd ~
git clone https://github.com/couchbase/libcouchbase.git
cd libcouchbase
To build and install, use the following:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
After installing the Couchbase C SDK, you need to update the dynamic linker configuration so your system can locate the Couchbase libraries. Add the library path to the linker configuration file:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libcouchbase.conf
Next, refresh the linker cache to apply the changes:
sudo ldconfig
This step ensures that applications can find and use the Couchbase libraries installed on your Arm64 VM. After installation, tell the system where to find the Couchbase libraries:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libcouchbase.conf
Then refresh the linker cache to make the libraries available system-wide:
sudo ldconfig
After installation, the tools such as cbc and cbc-pillowfight should be available in /usr/local/bin.
Verify this with:
cbc version
cbc-pillowfight --help
For the cbc version command, you should see an output similar to:
cbc:
Runtime: Version=3.3.18, Changeset=a8e17873d167ec75338a358e54cec3994612d260
Headers: Version=3.3.18, Changeset=a8e17873d167ec75338a358e54cec3994612d260
Build Timestamp: 2025-11-06 04:36:42
CMake Build Type: Release
Default plugin directory: /usr/local/lib64/libcouchbase
IO: Default=libevent, Current=libevent, Accessible=libevent,select
SSL Runtime: OpenSSL 1.1.1l-fips 24 Aug 2021 SUSE release 150500.17.40.1
SSL Headers: OpenSSL 1.1.1l-fips 24 Aug 2021 SUSE release SUSE_OPENSSL_RELEASE
HAVE_PKCS5_PBKDF2_HMAC: yes
Snappy: 1.1.8
Tracing: SUPPORTED
System: Linux-6.4.0-150600.23.73-default; aarch64
CC: GNU 7.5.0; -fno-strict-aliasing -ggdb3 -pthread
CXX: GNU 7.5.0; -fno-strict-aliasing -ggdb3 -pthread
For the cbc-pillowfight --help command, you should see the help menu for cbc-pillowfight displayed. The output is similar to:
cbc-pillowfight - Simulate workload for Couchbase buckets
Usage: cbc-pillowfight [options]
Options:
-U <connstr> Connection string to Couchbase bucket
-u <username> Couchbase admin username
-P <password> Couchbase admin password
-I <num> Number of items (documents)
-B <num> Batch size for operations
-t <num> Number of concurrent threads
-c <num> Number of operation cycles
--help Show this help message and exit
Once Couchbase Server is running and you’ve created a bucket (for example, benchmark), you’re ready to test performance. Run the following command, replacing password with your Couchbase Administrator password:
cbc-pillowfight -U couchbase://127.0.0.1/benchmark \
-u Administrator -P password -I 10000 -B 1000 -t 5 -c 500
You should see an output similar to:
Running. Press Ctrl-C to terminate...
Thread 0 has finished populating.
Thread 1 has finished populating.
Thread 2 has finished populating.
Thread 3 has finished populating.
Thread 4 has finished populating.
While the benchmark is running, open the Couchbase web console in your browser by entering the following address, replacing <your-vm-ip> with your VM’s IP address:
http://<your-vm-ip>:8091
Select Dashboard, then Buckets, and choose the benchmark bucket. Here, you can observe live performance metrics, including:
cbc-pillowfight.Monitoring these metrics helps you validate Couchbase performance and resource utilization on your Arm64 VM.
Monitor Benchmark Log
The following table summarizes the benchmark results from running cbc-pillowfight on a c4a-standard-4 (4 vCPU, 16 GB memory) Arm64 VM in Google Cloud Platform (GCP) with SUSE Linux:
| Name | Items | Resident | Ops/sec | RAM Used / Quota | Disk Used |
|---|---|---|---|---|---|
| benchmark | 10,000 | 100% | 227,981.1 | 36.8 MiB / 1 GiB | 26.7 MiB |
The key takeaways here are:
You can use these results as a baseline for further tuning or to compare with other VM sizes and configurations.