Skip to content

Commit 824258c

Browse files
Merge pull request #2345 from madeline-underwood/mongoDB_Azure_Cobalt
Mongo db azure cobalt_JA to sign off
2 parents 3fe7d86 + 3eddd78 commit 824258c

File tree

8 files changed

+292
-400
lines changed

8 files changed

+292
-400
lines changed

content/learning-paths/servers-and-cloud-computing/mongodb-on-azure/_index.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
---
2-
title: Run MongoDB on the Microsoft Azure Cobalt 100 processors
3-
4-
draft: true
5-
cascade:
6-
draft: true
2+
title: Run MongoDB on Arm-based Azure Cobalt 100 instances
73

84
minutes_to_complete: 30
95

10-
who_is_this_for: This Learning Path is designed for software developers looking to migrate their MongoDB workloads to Arm-based platforms, specifically on the Microsoft Azure Cobalt 100 processors.
6+
who_is_this_for: This is an introductory topic for software developers who want to migrate MongoDB workloads to Arm-based platforms, with a focus on Microsoft Azure Cobalt 100 Arm64 instances.
117

128
learning_objectives:
13-
- Provision an Azure Arm64 Cobalt 100 based virtual machine using Azure console, with Ubuntu Pro 24.04 LTS as the base image.
14-
- Deploy MongoDB on an Azure Cobalt 100 based virtual machine.
15-
- Perform MongoDB baseline testing and benchmarking on the Arm64 virtual machine.
9+
- Provision an Arm64-based Cobalt 100 virtual machine in Azure using Ubuntu Pro 24.04 LTS
10+
- Deploy MongoDB on the Cobalt 100 instance
11+
- Run baseline tests and performance benchmarks on MongoDB in the Arm64 environment
1612

1713
prerequisites:
18-
- A [Microsoft Azure](https://azure.microsoft.com/) account with access to Cobalt 100 based instances (Dpsv6).
19-
- Familiarity with the [MongoDB architecture](https://www.mongodb.com/) and deployment practices on Arm64 platforms.
14+
- A [Microsoft Azure](https://azure.microsoft.com/) account with access to Cobalt 100 (Dpsv6) instances
15+
- Familiarity with the [MongoDB architecture](https://www.mongodb.com/) and deployment practices on Arm64 platforms
2016

2117
author: Pareena Verma
2218

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "Overview"
2+
title: "What are Cobalt 100 and MongoDB?"
33

44
weight: 2
55

@@ -8,13 +8,12 @@ layout: "learningpathall"
88

99
## Cobalt 100 Arm-based processor
1010

11-
Azure’s Cobalt 100 is built on Microsoft's first-generation, in-house Arm-based processor: the Cobalt 100. Designed entirely by Microsoft and based on Arm’s Neoverse N2 architecture, this 64-bit CPU delivers improved performance and energy efficiency across a broad spectrum of cloud-native, scale-out Linux workloads. These include web and application servers, data analytics, open-source databases, caching systems, and more. Running at 3.4 GHz, the Cobalt 100 processor allocates a dedicated physical core for each vCPU, ensuring consistent and predictable performance.
11+
Azure’s Cobalt 100 is Microsofts first-generation Arm-based processor. Built on the Arm Neoverse N2 architecture, the 64-bit CPU improves performance and energy efficiency for a wide range of cloud-native, scale-out Linux workloads. These include web and application servers, data analytics, open-source databases, caching systems, and more. Running at 3.4 GHz, the Cobalt 100 processor allocates a dedicated physical core for each vCPU to ensure consistent, predictable performance.
1212

13-
To learn more about Cobalt 100, refer to the blog [Announcing the preview of new Azure virtual machine based on the Azure Cobalt 100 processor](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353).
13+
See the [Azure Cobalt 100 announcement blog](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353) to find out more.
1414

1515
## MongoDB
16-
MongoDB is a popular open-source NoSQL database designed for high performance, scalability, and flexibility.
1716

18-
It stores data in JSON-like BSON documents, making it ideal for modern applications that require dynamic, schema-less data structures.
17+
MongoDB is an open-source NoSQL database known for high performance, scalability, and flexibility. It stores data in JSON-like BSON documents, making it ideal for applications that need dynamic, schema-less data structures. Developers commonly use MongoDB for web, mobile, IoT, and real-time analytics workloads.
1918

20-
MongoDB is widely used for web, mobile, IoT, and real-time analytics workloads. Learn more from the [MongoDB official website](https://www.mongodb.com/) and its [official documentation](https://www.mongodb.com/docs/).
19+
To find out more, see the [MongoDB website](https://www.mongodb.com/) and the [MongoDB documentation](https://www.mongodb.com/docs/).

content/learning-paths/servers-and-cloud-computing/mongodb-on-azure/baseline-testing.md

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,25 @@ weight: 5
66
layout: learningpathall
77
---
88

9+
## Overview
910

10-
### Baseline testing of MongoDB
11-
In this section you will perform baseline testing by verifying MongoDB is running, logging into the shell, executing a few test queries, and monitoring live performance. This ensures the database is functioning correctly before starting any benchmarks.
11+
Use this section to validate your **MongoDB** setup on an **Azure Cobalt 100 (Arm64)** VM running **Ubuntu 24.04 LTS**. You will check service health, run a quick storage baseline with **fio**, validate CRUD operations with **mongosh**, and do light query, index, and concurrency checks before larger benchmarks.
1212

13-
1. Verify Installation & Service Health
13+
{{% notice Note %}}
14+
For this exercise, `mongod` runs locally and **access control is disabled** by default. Keep the server bound to `127.0.0.1` until you configure users and authentication.
15+
{{% /notice %}}
16+
17+
## Verify MongoDB installation and service health (Azure Cobalt 100 Arm64)
1418

1519
```console
1620
ps -ef | grep mongod
1721
mongod --version
1822
netstat -tulnp | grep 27017
1923
```
20-
An explanation of what each command is doing:
21-
- **ps -ef | grep mongod** – Checks if the MongoDB server process is running.
22-
- **mongod --version** – Shows the version of MongoDB installed.
23-
- **netstat -tulnp | grep 27017** – Checks if MongoDB is listening for connections on its default port 27017.
24+
What each command does:
25+
- **ps -ef | grep mongod** checks if the MongoDB server process is running
26+
- **mongod --version** shows the installed MongoDB version
27+
- **netstat -tulnp | grep 27017** confirms MongoDB is listening on the default port **27017**
2428

2529
You should see output similar to:
2630

@@ -47,9 +51,9 @@ Build Info: {
4751
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 4288/mongod
4852
```
4953

50-
2. Storage and Health Check
54+
## Run a storage baseline with fio (random read IOPS on Ubuntu 24.04)
5155

52-
To perform a storage and health check, run the command below. This command checks how fast your storage can randomly read small 4KB chunks from a 100 MB file for 30 seconds, using one job, followed by a summary report:
56+
This reads random **4 KB** blocks from a **100 MB** file for **30 seconds** with one job and prints a summary.
5357

5458
```console
5559
fio --name=baseline --rw=randread --bs=4k --size=100M --numjobs=1 --time_based --runtime=30 --group_reporting
@@ -70,7 +74,7 @@ baseline: (groupid=0, jobs=1): err= 0: pid=3753: Mon Sep 1 10:25:07 2025
7074
| 30.00th=[ 190], 40.00th=[ 229], 50.00th=[ 243], 60.00th=[ 253],
7175
| 70.00th=[ 269], 80.00th=[ 289], 90.00th=[ 318], 95.00th=[ 330],
7276
| 99.00th=[ 416], 99.50th=[ 490], 99.90th=[ 799], 99.95th=[ 1106],
73-
| 99.99th=[ 3884]
77+
| 99.99th=[ 3884]
7478
bw ( KiB/s): min=14536, max=19512, per=100.00%, avg=17046.10, stdev=1359.69, samples=59
7579
iops : min= 3634, max= 4878, avg=4261.53, stdev=339.92, samples=59
7680
lat (usec) : 100=1.27%, 250=56.61%, 500=41.65%, 750=0.34%, 1000=0.06%
@@ -88,22 +92,24 @@ Run status group 0 (all jobs):
8892
Disk stats (read/write):
8993
sda: ios=127195/29, sectors=1017560/552, merge=0/15, ticks=29133/8, in_queue=29151, util=96.37%
9094
```
91-
The output shows how fast it read data (**16.6 MB/s**) and how many reads it did per second (**~4255 IOPS**), which tells you how responsive your storage is for random reads.
95+
Interpretation:
96+
- **16.6 MB/s** is the measured read bandwidth for **4 KB** random reads.
97+
- **~4255 IOPS** indicates random read responsiveness.
9298

93-
3. Connectivity and CRUD Sanity Check
99+
## Connectivity and CRUD sanity check
94100

95101
To verify that the MongoDB server is reachable you will perform a connectivity check. You will run a sanity test of core database functionality and permissions, refered to as CRUD:
96102

97-
C - Create: Insert a new record/document into the database.
98-
R - Read: Query the database to retrieve data.
99-
U - Update: Modify an existing record.
100-
D - Delete: Remove a record.
103+
- C - Create: insert a new record/document into the database
104+
- R - Read: query the database to retrieve data
105+
- U - Update: modify an existing record
106+
- D - Delete: remove a record
101107

102108
```console
103109
mongosh --host localhost --port 27017
104110
```
105111

106-
Inside shell:
112+
Inside the shell:
107113

108114
```javascript
109115
use baselineDB
@@ -113,7 +119,11 @@ db.testCollection.updateOne({ name: "baseline-check" }, { $set: { value: 2 } })
113119
db.testCollection.deleteOne({ name: "baseline-check" })
114120
exit
115121
```
116-
These commands create a test record, read it, update its value, and then delete it a simple way to check if MongoDB’s basic **add, read, update, and delete** operations are working.
122+
What these commands do:
123+
- Create a test document.
124+
- Read it.
125+
- Update its value.
126+
- Delete it.
117127

118128
You should see output similar to:
119129

@@ -147,30 +157,31 @@ baselineDB> db.testCollection.deleteOne({ name: "baseline-check" })
147157
{ acknowledged: true, deletedCount: 1 }
148158
```
149159

150-
4. Basic Query Performance Test
160+
## Run a basic query performance test (count filter)
151161

152-
You will now perform a lightweight query performance check:
162+
Run a lightweight query performance check.
153163

154164
```console
155165
mongosh --eval '
156166
db = db.getSiblingDB("baselineDB");
157167
for (let i=0; i<1000; i++) { db.perf.insertOne({index:i, value:Math.random()}) };
158168
var start = new Date();
159-
db.perf.find({ value: { $gt: 0.5 } }).count();
169+
db.perf.countDocuments({ value: { $gt: 0.5 } });
160170
print("Query Time (ms):", new Date() - start);
161171
'
162172
```
163-
The command connected to MongoDB, switched to the `baselineDB` database, inserted 1,000 documents into the perf collection, and then measured the execution time for counting documents where value > 0.5. The final output displayed the query execution time in milliseconds.
173+
This connects to MongoDB, selects the `baselineDB` database, inserts **1,000** documents into the `perf` collection, and measures the time to count documents where `value > 0.5`.
164174

165-
You should see the Query Time output similar to:
175+
You should see output similar to:
166176

167177
```output
168178
Query Time (ms): 2
169179
```
170180

171-
5. Index Creation Speed Test
181+
## Measure index creation time in MongoDB
182+
183+
Measure how long MongoDB takes to create an index on a collection.
172184

173-
You will now run a performance sanity check that measures how long MongoDB takes to create an index on a given collection:
174185
```console
175186
mongosh --eval '
176187
db = db.getSiblingDB("baselineDB");
@@ -179,28 +190,27 @@ db.perf.createIndex({ value: 1 });
179190
print("Index Creation Time (ms):", new Date() - start);
180191
'
181192
```
182-
The test connected to MongoDB, switched to the `baselineDB` database, and created an index on the value field in the `perf` collection. The index creation process completed in 22 milliseconds, indicating relatively fast index building for the dataset size.
193+
This creates an index on the `value` field in the `perf` collection and prints the time taken.
183194

184195
You should see output similar to:
185196

186197
```output
187198
Index Creation Time (ms): 22
188199
```
189200

190-
6. Concurrency Smoke Test
201+
## Run a concurrency smoke test with parallel mongosh sessions
191202

192-
You will now verify that MongoDB can handle concurrent client connections and inserts without errors:
203+
Verify that MongoDB can handle concurrent client connections and inserts.
193204

194205
```console
195206
for i in {1..5}; do
196207
mongosh --eval 'use baselineDB; db.concurrent.insertMany([...Array(1000).keys()].map(k => ({ test: k, ts: new Date() })))' &
197208
done
198209
wait
199210
```
200-
This command runs five MongoDB insert jobs at the same time, each adding 1,000 new records to the `baselineDB.concurrent` collection.
201-
It is a quick way to test how MongoDB handles multiple users writing data at once.
211+
This runs five parallel MongoDB shell sessions, each inserting **1,000** documents into the `baselineDB.concurrent` collection.
202212

203-
You should see an output similar to:
213+
You should see output similar to:
204214

205215
```output
206216
[1] 3818
@@ -220,8 +230,8 @@ switched to db baselineDB;
220230
[5]+ Done mongosh --eval 'use baselineDB; db.concurrent.insertMany([...Array(1000).keys()].map(k => ({ test: k, ts: new Date() })))'
221231
```
222232

223-
Five parallel MongoDB shell sessions were executed, each inserting 1,000 test documents into the baselineDB.concurrent collection. All sessions completed successfully, confirming that concurrent data insertion works as expected.
233+
All sessions completed successfully, confirming that concurrent inserts work as expected.
224234

225-
With these tests you have confirmed that MongoDB is installed successfully and is functioning as expected on the Azure Cobalt 100 (Arm64) environment.
235+
## Next steps
226236

227-
You are now ready to perform further benchmarking for MongoDB.
237+
With these checks complete, proceed to the MongoDB benchmarking section to run workload‑focused tests on the **Azure Cobalt 100 Arm64** instance.

0 commit comments

Comments
 (0)