From e4db596f1af7a7b508f36ffea79a778c34f6ea2d Mon Sep 17 00:00:00 2001 From: Doug Anson Date: Tue, 18 Nov 2025 11:43:27 -0600 Subject: [PATCH 1/2] rust on GCP LP review updates --- .../rust-on-gcp/_index.md | 4 +++ .../rust-on-gcp/baseline.md | 6 +++++ .../rust-on-gcp/benchmarking.md | 23 ++++++++---------- .../rust-on-gcp/images/gcp-shell.png | Bin 0 -> 22858 bytes .../rust-on-gcp/images/gcp-ssh.png | Bin 0 -> 12784 bytes .../rust-on-gcp/instance.md | 14 ++++++++++- 6 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 content/learning-paths/servers-and-cloud-computing/rust-on-gcp/images/gcp-shell.png create mode 100644 content/learning-paths/servers-and-cloud-computing/rust-on-gcp/images/gcp-ssh.png diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/_index.md b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/_index.md index 5c3fe89ca4..65a5bf5a4f 100644 --- a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/_index.md @@ -1,6 +1,10 @@ --- title: Deploy Rust on Google Cloud C4A (Arm-based Axion VMs) +draft: true +cascade: + draft: true + minutes_to_complete: 30 who_is_this_for: This learning path is intended for software developers deploying and optimizing Rust workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors. diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/baseline.md b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/baseline.md index 8c43e5328f..31bbe747ae 100644 --- a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/baseline.md +++ b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/baseline.md @@ -17,6 +17,12 @@ rustc --version cargo --version ``` +You should see an output similar to: +```output +rustc 1.91.0 (f8297e351 2025-10-28) +cargo 1.91.0 (ea2d97820 2025-10-10) +``` + ### Create a Sample Rust Program Create and build a simple “Hello, World” application to ensure everything is functioning properly: diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/benchmarking.md b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/benchmarking.md index 9af710801a..978f28b73a 100644 --- a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/benchmarking.md +++ b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/benchmarking.md @@ -18,6 +18,12 @@ rustc --version cargo --version ``` +You should see an output similar to: +```output +rustc 1.91.0 (f8297e351 2025-10-28) +cargo 1.91.0 (ea2d97820 2025-10-10) +``` + ### Create a New Rust Project Create a new Rust project for benchmarking: @@ -26,7 +32,7 @@ cargo new rust-benchmark cd rust-benchmark ``` ### Add Criterion Benchmarking Dependency -**Criterion** is the officially recommended benchmarking crate for Rust. Add it to your project by editing the `Cargo.toml` file located inside your project root directory (for example, rust-benchmark/Cargo.toml): +**Criterion** is the officially recommended benchmarking crate for Rust. Add it to your project by editing the `Cargo.toml` file located inside your project root directory using your favorite editor (location example: rust-benchmark/Cargo.toml). Replace your "[dependencies]" tag within your file with this content, then save the file: ```toml [dependencies] @@ -39,11 +45,11 @@ harness = false This enables Criterion for high-precision benchmarking. ### Create the Benchmark File -Create a new benchmark file inside the `benches/` directory: +Create a new benchmark file inside the `benches/` directory using your favorite editor ("edit" used in the example below): ```console mkdir benches -vi benches/my_benchmark.rs +edit benches/my_benchmark.rs ``` Benchmark files in this directory are automatically detected by Cargo. @@ -96,22 +102,13 @@ Found 1 outliers among 100 measurements (1.00%) - **Plotting Backend:** Used `plotters` since Gnuplot was not found. - The results show **consistent performance** with only slight variation across 100 measurements. -### Benchmark summary on x86_64 -To compare the benchmark results, the following results were collected by running the same benchmark on a `x86 - c4-standard-4` (4 vCPUs, 15 GB Memory) x86_64 VM in GCP, running SUSE: - -| **Benchmark** | **Average Time (µs)** | **Min (µs)** | **Max (µs)** | **Outliers (%)** | **Remarks** | -|--------------------|----------------------:|--------------:|--------------:|-----------------:|----------------------------------| -| **fibonacci 20** | 19.152 | 19.100 | 19.205 | 6.00% | Minor outliers, stable overall. | - -### Benchmark summary on Arm64 +### Benchmark summary Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE): | **Benchmark** | **Average Time (µs)** | **Min (µs)** | **Max (µs)** | **Outliers (%)** | **Remarks** | |--------------------|----------------------:|--------------:|--------------:|-----------------:|----------------------------------| | **fibonacci 20** | 12.028 | 12.026 | 12.030 | 1.00% | Very stable performance, minimal variation. | -### Rust benchmarking comparison on Arm64 and x86_64 - - The **Fibonacci (n=20)** benchmark demonstrated **consistent performance** with minimal deviation. - **Average execution time** was around **12.028 µs**, indicating efficient CPU computation on **Arm64**. - Only **1% outliers** were detected, showing **high stability** and **repeatability** of results. diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/images/gcp-shell.png b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/images/gcp-shell.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2fc3d1b5db2c50cbb421407798bb8938c7cf61 GIT binary patch literal 22858 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 NK?-2`BH3rJ{})%EuaN)% literal 0 HcmV?d00001 diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md index 2b93bc950d..a8a819d241 100644 --- a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md +++ b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md @@ -26,6 +26,18 @@ To create a virtual machine based on the C4A instance type: ![Create a Google Axion C4A Arm virtual machine in the Google Cloud Console with c4a-standard-4 selected alt-text#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console") -- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. Pick the preferred version for your Operating System. Ensure you select the **Arm image** variant. Click **Select**. + +- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. +- If using use **SUSE Linux Enterprise Server**. Select "Pay As You Go" for the license type. +- Once appropriately selected, please Click **Select**. - Under **Networking**, enable **Allow HTTP traffic**. - Click **Create** to launch the instance. +- Once created, you should see a "SSH" option to the right in your list of VM instances. Click on this to launch a SSH shell into your VM instance: + +![Invoke a SSH session via your browser alt-text#center](images/gcp-ssh.png "Invoke a SSH session into your running VM instance") + +- A window from your browser should come up and you should now see a shell into your VM instance: + +![Terminal Shell in your VM instance alt-text#center](images/gcp-shell.png "Terminal shell in your VM instance") + +Next, let's install puppet! \ No newline at end of file From 02a51d5f937817c914c505a0ced0e6961ca68e88 Mon Sep 17 00:00:00 2001 From: Doug Anson Date: Tue, 18 Nov 2025 13:07:08 -0600 Subject: [PATCH 2/2] minor fix to GCP VM install --- .../servers-and-cloud-computing/rust-on-gcp/instance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md index a8a819d241..f531adfdd6 100644 --- a/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md +++ b/content/learning-paths/servers-and-cloud-computing/rust-on-gcp/instance.md @@ -40,4 +40,4 @@ To create a virtual machine based on the C4A instance type: ![Terminal Shell in your VM instance alt-text#center](images/gcp-shell.png "Terminal shell in your VM instance") -Next, let's install puppet! \ No newline at end of file +Next, let's install rust! \ No newline at end of file