diff --git a/.github/workflows/resize-images.yml b/.github/workflows/resize-images.yml new file mode 100644 index 0000000000..514a53fc67 --- /dev/null +++ b/.github/workflows/resize-images.yml @@ -0,0 +1,57 @@ +name: Resize Images +# A weekly run to resize images that changed in the last week + +on: + schedule: + - cron: "0 9 * * 1" # every Monday at 09:00 UTC + workflow_dispatch: + +jobs: + resize-images: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch full history to compare with last week + + - name: Get changed image files from last week + id: changed-files + run: | + # Find all image files that changed since last Monday + CHANGED_IMAGES=$(git log --since="7 days ago" --name-only --pretty="" \ + -- '*.jpg' '*.jpeg' '*.png' '*.JPG' '*.JPEG' '*.PNG' | sort -u | tr '\n' ' ') + + echo "changed_images=$CHANGED_IMAGES" >> $GITHUB_OUTPUT + echo "Changed images: $CHANGED_IMAGES" + + # Set a flag if any images were changed + if [ -n "$CHANGED_IMAGES" ]; then + echo "has_changes=true" >> $GITHUB_OUTPUT + else + echo "has_changes=false" >> $GITHUB_OUTPUT + fi + + - name: Install ImageMagick + run: sudo apt-get update && sudo apt-get install -y imagemagick + + - name: Run tools/resize_images.sh on changed files + if: steps.changed-files.outputs.has_changes == 'true' + run: | + # Pass the changed image files to the resize script + bash tools/resize_images.sh ${{ steps.changed-files.outputs.changed_images }} + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 + if: steps.changed-files.outputs.has_changes == 'true' && success() + with: + commit-message: Resize images changed in the last week + title: Resize images changed in the last week + body: | + Resize images that were modified in the last week (Monday to Monday) + + Changed files: ${{ steps.changed-files.outputs.changed_images }} + + Triggered by workflow run ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + Auto-generated by create-pull-request: https://github.com/peter-evans/create-pull-request + branch: resize-images + base: main diff --git a/assets/css/content.css b/assets/css/content.css index 8bac14910f..78d1e34861 100644 --- a/assets/css/content.css +++ b/assets/css/content.css @@ -62,13 +62,14 @@ html[theme="dark"] div.markdown-content-div > div.code-tabpane { --ads-horizontal-tabs-tab-content-background-color: var(--arm-color-surface); } - +/* div.markdown-content-div > table { - width: max-content; /* No full-length tables unless there is a reason */ + width: max-content; margin-top: 16px; margin-left: 16px; margin-bottom: 24px; } +*/ html[theme="light"] div.markdown-content-div > table tbody { background-color: var(--arm-white); } html[theme="dark"] div.markdown-content-div > table tbody { background-color: var(--arm-color-base); } diff --git a/assets/css/cross-page.css b/assets/css/cross-page.css index e0b3eab2b1..9356ec8191 100644 --- a/assets/css/cross-page.css +++ b/assets/css/cross-page.css @@ -368,6 +368,7 @@ html[theme="dark"] .minhang-mist-text { .table-wrapper-for-overflow { width: 100%; overflow-x: auto; + margin-top: 24px; } diff --git a/content/install-guides/_images/aperf.png b/content/install-guides/_images/aperf.png deleted file mode 100644 index a0f9a40761..0000000000 Binary files a/content/install-guides/_images/aperf.png and /dev/null differ diff --git a/content/install-guides/_images/aperf.webp b/content/install-guides/_images/aperf.webp new file mode 100644 index 0000000000..85f67ed286 Binary files /dev/null and b/content/install-guides/_images/aperf.webp differ diff --git a/content/install-guides/_images/aperf0.png b/content/install-guides/_images/aperf0.png deleted file mode 100644 index 8429c073f3..0000000000 Binary files a/content/install-guides/_images/aperf0.png and /dev/null differ diff --git a/content/install-guides/_images/aperf0.webp b/content/install-guides/_images/aperf0.webp new file mode 100644 index 0000000000..4db30ede31 Binary files /dev/null and b/content/install-guides/_images/aperf0.webp differ diff --git a/content/install-guides/_images/arduino_rp2040_boards.png b/content/install-guides/_images/arduino_rp2040_boards.png deleted file mode 100644 index ad41e7d49a..0000000000 Binary files a/content/install-guides/_images/arduino_rp2040_boards.png and /dev/null differ diff --git a/content/install-guides/_images/arduino_rp2040_boards.webp b/content/install-guides/_images/arduino_rp2040_boards.webp new file mode 100644 index 0000000000..53b2e831d1 Binary files /dev/null and b/content/install-guides/_images/arduino_rp2040_boards.webp differ diff --git a/content/install-guides/_images/wperf-vs-extension-sampling-preview.png b/content/install-guides/_images/wperf-vs-extension-sampling-preview.png deleted file mode 100644 index c87931ca08..0000000000 Binary files a/content/install-guides/_images/wperf-vs-extension-sampling-preview.png and /dev/null differ diff --git a/content/install-guides/_images/wperf-vs-extension-sampling-preview.webp b/content/install-guides/_images/wperf-vs-extension-sampling-preview.webp new file mode 100644 index 0000000000..b8b8cf8ac3 Binary files /dev/null and b/content/install-guides/_images/wperf-vs-extension-sampling-preview.webp differ diff --git a/content/install-guides/_images/xfce4.png b/content/install-guides/_images/xfce4.png deleted file mode 100644 index d512b1e4b7..0000000000 Binary files a/content/install-guides/_images/xfce4.png and /dev/null differ diff --git a/content/install-guides/_images/xfce4.webp b/content/install-guides/_images/xfce4.webp new file mode 100644 index 0000000000..4720e55129 Binary files /dev/null and b/content/install-guides/_images/xfce4.webp differ diff --git a/content/install-guides/aperf.md b/content/install-guides/aperf.md index 0ead65808e..9ad8337985 100644 --- a/content/install-guides/aperf.md +++ b/content/install-guides/aperf.md @@ -114,7 +114,7 @@ There are a number of tabs on the left side showing the collected data. You can browse the data and see what has been collected. -![APerf #center](/install-guides/_images/aperf0.png) +![APerf #center](/install-guides/_images/aperf0.webp) {{% notice Note %}} The Kernel Config and Sysctl Data tabs are blank unless you click No. @@ -142,7 +142,7 @@ Open the `index.html` file in the `compare/` directory to see the 2 runs side by A screenshot is shown below: -![APerf #center](/install-guides/_images/aperf.png) +![APerf #center](/install-guides/_images/aperf.webp) ### How do I use an HTTP server to view reports? diff --git a/content/install-guides/arduino-pico.md b/content/install-guides/arduino-pico.md index 0d342a8942..5fe9633bde 100644 --- a/content/install-guides/arduino-pico.md +++ b/content/install-guides/arduino-pico.md @@ -40,7 +40,7 @@ From the menu select `Tools -> Board -> Boards Manager`. When the `Boards Manager` opens search for `pico` and the `Arduino Mbed OS RP2040 Boards` will be displayed. Click the `Install` button to add it to the Arduino IDE. -![Arduino Board Manager](/install-guides/_images/arduino_rp2040_boards.png) +![Arduino Board Manager](/install-guides/_images/arduino_rp2040_boards.webp) ### How do I set up the Raspberry Pi Pico W? diff --git a/content/install-guides/vnc.md b/content/install-guides/vnc.md index ab59f55abe..05623d7fac 100644 --- a/content/install-guides/vnc.md +++ b/content/install-guides/vnc.md @@ -152,4 +152,4 @@ You will be prompted for the password you created earlier with `vncpasswd`. A remote Linux desktop should appear on your local computer. When you are finished, close the VNC client first and then exit the SSH connection. -![Linux desktop #center](/install-guides/_images/xfce4.png) +![Linux desktop #center](/install-guides/_images/xfce4.webp) diff --git a/content/install-guides/windows-perf-vs-extension.md b/content/install-guides/windows-perf-vs-extension.md index 2f1e9d57b2..ca8b71264d 100644 --- a/content/install-guides/windows-perf-vs-extension.md +++ b/content/install-guides/windows-perf-vs-extension.md @@ -109,7 +109,7 @@ The WindowsPerf extension is composed of several key features, each designed to The sampling interface is shown below: -![Sampling preview #center](/install-guides/_images/wperf-vs-extension-sampling-preview.png) +![Sampling preview #center](/install-guides/_images/wperf-vs-extension-sampling-preview.webp) * Counting Settings UI: Build a `wperf stat` command from scratch using the configuration interface, then view the output in VS Code or open it with Windows Performance Analyzer (WPA). The interface to configure counting is shown below: diff --git a/content/learning-paths/automotive/openadkit1_container/4_run_openadkit.md b/content/learning-paths/automotive/openadkit1_container/4_run_openadkit.md index 6ad1904a0f..8fdd2f9247 100644 --- a/content/learning-paths/automotive/openadkit1_container/4_run_openadkit.md +++ b/content/learning-paths/automotive/openadkit1_container/4_run_openadkit.md @@ -150,7 +150,7 @@ Once the script starts successfully, you will see a similar output to the image You can use your browser to monitor the simulation data in real-time. -![img1 alt-text#center](vnc_address.png "Figure 1: Execute run.sh") +![img1 alt-text#center](vnc_address.webp "Figure 1: Execute run.sh") Now you can use the browser to access visualization. In this example the URL is http://34.244.98.151:6080/vnc.html diff --git a/content/learning-paths/automotive/openadkit1_container/vnc_address.png b/content/learning-paths/automotive/openadkit1_container/vnc_address.png deleted file mode 100644 index 9e31a4b4ea..0000000000 Binary files a/content/learning-paths/automotive/openadkit1_container/vnc_address.png and /dev/null differ diff --git a/content/learning-paths/automotive/openadkit1_container/vnc_address.webp b/content/learning-paths/automotive/openadkit1_container/vnc_address.webp new file mode 100644 index 0000000000..1d77d617a3 Binary files /dev/null and b/content/learning-paths/automotive/openadkit1_container/vnc_address.webp differ diff --git a/content/learning-paths/cross-platform/floating-point-behavior/differences.png b/content/learning-paths/cross-platform/floating-point-behavior/differences.png deleted file mode 100644 index bd996f34a0..0000000000 Binary files a/content/learning-paths/cross-platform/floating-point-behavior/differences.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/floating-point-behavior/differences.webp b/content/learning-paths/cross-platform/floating-point-behavior/differences.webp new file mode 100644 index 0000000000..6f53a43ff7 Binary files /dev/null and b/content/learning-paths/cross-platform/floating-point-behavior/differences.webp differ diff --git a/content/learning-paths/cross-platform/floating-point-behavior/how-to-2.md b/content/learning-paths/cross-platform/floating-point-behavior/how-to-2.md index 9b8e425bed..72fc2dd02c 100644 --- a/content/learning-paths/cross-platform/floating-point-behavior/how-to-2.md +++ b/content/learning-paths/cross-platform/floating-point-behavior/how-to-2.md @@ -91,7 +91,7 @@ Run the program on both systems: For easy comparison, the image below shows the x86 output (left) and Arm output (right). The highlighted lines show the difference in output: -![differences](./differences.png) +![differences](./differences.webp) As you can see, there are several cases where different behavior is observed in these undefined scenarios. For example, when trying to convert a signed number to an unsigned number or dealing with out-of-bounds values. diff --git a/content/learning-paths/cross-platform/gitlab/1-gitlab-runner.md b/content/learning-paths/cross-platform/gitlab/1-gitlab-runner.md index 35bd669030..39415c8045 100644 --- a/content/learning-paths/cross-platform/gitlab/1-gitlab-runner.md +++ b/content/learning-paths/cross-platform/gitlab/1-gitlab-runner.md @@ -26,7 +26,7 @@ Create a repository in your GitLab account by clicking the "+" sign on top-left After you create the repository, navigate to `Settings->CI/CD` in the left-hand pane. Expand the `Runners` section and under `Project Runners`, select `New Project Runner`. -![arm64-runner #center](_images/create-gitlab-runner.png) +![arm64-runner #center](_images/create-gitlab-runner.webp) Use `Tags` to specify the jobs that can be executed on the runner. In the `Tags` field, enter `arm64`. In `Runner description` enter `google-axion-arm64-runner` and click the `Create Runner` button @@ -69,7 +69,7 @@ Runner registered successfully. Feel free to start it, but if it's running alrea You should see the newly registered runner in the Runners section of the GitLab console as shown below. -![registered-runner #center](_images/registered-runner.png) +![registered-runner #center](_images/registered-runner.webp) To create an `amd64` GitLab runner, follow the same steps as above, except for the `Download binaries` section. Change the download url to `https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64` diff --git a/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.png b/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.png deleted file mode 100644 index 9d8e3d3036..0000000000 Binary files a/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.webp b/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.webp new file mode 100644 index 0000000000..c70edf335a Binary files /dev/null and b/content/learning-paths/cross-platform/gitlab/_images/create-gitlab-runner.webp differ diff --git a/content/learning-paths/cross-platform/gitlab/_images/registered-runner.png b/content/learning-paths/cross-platform/gitlab/_images/registered-runner.png deleted file mode 100644 index 35d3971929..0000000000 Binary files a/content/learning-paths/cross-platform/gitlab/_images/registered-runner.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/gitlab/_images/registered-runner.webp b/content/learning-paths/cross-platform/gitlab/_images/registered-runner.webp new file mode 100644 index 0000000000..385105daec Binary files /dev/null and b/content/learning-paths/cross-platform/gitlab/_images/registered-runner.webp differ diff --git a/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.jpg b/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.jpg deleted file mode 100644 index 23873970cb..0000000000 Binary files a/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.jpg and /dev/null differ diff --git a/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.webp b/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.webp new file mode 100644 index 0000000000..69c2aeaf04 Binary files /dev/null and b/content/learning-paths/cross-platform/kleidiai-explainer/neural-node-pic.webp differ diff --git a/content/learning-paths/cross-platform/kleidiai-explainer/page1.md b/content/learning-paths/cross-platform/kleidiai-explainer/page1.md index 4d7b66de16..37d0006556 100644 --- a/content/learning-paths/cross-platform/kleidiai-explainer/page1.md +++ b/content/learning-paths/cross-platform/kleidiai-explainer/page1.md @@ -27,7 +27,7 @@ During inference, such as when trying to generate the next *token* or *word* wit For example, in the image below, *z1* is calculated as a dot product of connected *x*s and *w*s from the previous layer. A matrix multiplication operation can therefore efficiently calculate all *z* values in Layer 0. -![Neural Network example#center](neural-node-pic.jpg "Zoomed-in neural network node.") +![Neural Network example#center](neural-node-pic.webp "Zoomed-in neural network node.") In addition to *weights*, each neuron in a neural network is assigned a *bias*. These weights and biases are learned during training, and make up a model's parameters. For example, in the Llama 3 model with 8 billion parameters, the model has around 8 billion individual weights and biases that embody what the model learned during training. Generally speaking, the higher the number of parameters a model has, the more information it can retain from its training, which increases its performance capability. For more information about Llama 3 view its [Hugging Face model card](https://huggingface.co/meta-llama/Meta-Llama-3-8B). diff --git a/content/learning-paths/cross-platform/mca-godbolt/mca_on_godbolt.md b/content/learning-paths/cross-platform/mca-godbolt/mca_on_godbolt.md index 94b6dae02d..a0b72c7c65 100644 --- a/content/learning-paths/cross-platform/mca-godbolt/mca_on_godbolt.md +++ b/content/learning-paths/cross-platform/mca-godbolt/mca_on_godbolt.md @@ -17,7 +17,7 @@ To access Compiler Explorer, open a browser and go to https://godbolt.org. This leads you to the page shown below in Figure 1. Your view might be slightly different. -![godbolt open alt-text#center](open.png "Figure 1. Compiler Explorer") +![godbolt open alt-text#center](open.webp "Figure 1. Compiler Explorer") The left side of the page contains the source code. In Figure 1, the language is set to C++, but you can click on the programming language to select a different language for the source code. diff --git a/content/learning-paths/cross-platform/mca-godbolt/open.png b/content/learning-paths/cross-platform/mca-godbolt/open.png deleted file mode 100644 index 2e4eb41dbb..0000000000 Binary files a/content/learning-paths/cross-platform/mca-godbolt/open.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/mca-godbolt/open.webp b/content/learning-paths/cross-platform/mca-godbolt/open.webp new file mode 100644 index 0000000000..ba7c48c0fd Binary files /dev/null and b/content/learning-paths/cross-platform/mca-godbolt/open.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/datasets-and-training.md b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/datasets-and-training.md index 472c31b5fa..a2bea92158 100644 --- a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/datasets-and-training.md +++ b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/datasets-and-training.md @@ -72,7 +72,7 @@ Make sure to replace 'x' with the version number of Python that you have install After running the code, you will see output similar to Figure 5: -![image alt-text#center](figures/01.png "Figure 5. Output") +![image alt-text#center](figures/01.webp "Figure 5. Output") ## Train the Model @@ -134,7 +134,7 @@ for t in range(epochs): After running the code, you see the following output showing the training progress, as displayed in Figure 2. -![image alt-text#center](figures/02.png "Figure 2. Output 2") +![image alt-text#center](figures/02.webp "Figure 2. Output 2") Once the training is complete, you see output similar to: diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.png deleted file mode 100644 index bc0c2cbffe..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.webp new file mode 100644 index 0000000000..21dd818b68 Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/01.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.png deleted file mode 100644 index 54eacae4e1..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.webp new file mode 100644 index 0000000000..5851a121ad Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/02.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.png deleted file mode 100644 index 2dea1eff2c..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.webp new file mode 100644 index 0000000000..992558d204 Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/03.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.png deleted file mode 100644 index 9fd24961b7..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.webp new file mode 100644 index 0000000000..129bc6d4f8 Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/1.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.png deleted file mode 100644 index 881080cdf0..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.webp new file mode 100644 index 0000000000..3fb8dd15a4 Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/2.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.png b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.png deleted file mode 100644 index 14c3ede70e..0000000000 Binary files a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.png and /dev/null differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.webp b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.webp new file mode 100644 index 0000000000..07d24cb868 Binary files /dev/null and b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/figures/4.webp differ diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/inference.md b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/inference.md index d5589fc6f9..cf63daa725 100644 --- a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/inference.md +++ b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/inference.md @@ -108,7 +108,7 @@ This code demonstrates how to use a saved PyTorch model for inference and visual After running the code, you should see results similar to the following figure: -![image](figures/03.png "Figure 6. Results Displayed") +![image](figures/03.webp "Figure 6. Results Displayed") ### What have you learned? diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/intro.md b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/intro.md index d613fed42d..164e7b605f 100644 --- a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/intro.md +++ b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/intro.md @@ -117,7 +117,7 @@ To ensure everything is set up correctly, follow these next steps: 4. Select the Python kernel you created earlier, `pytorch-env`. To do so, click **Kernels** in the top right-hand corner. Then, click **Jupyter Kernel...**, and you will see the Python kernel as shown below: -![img1 alt-text#center](figures/1.png "Figure 1: Python kernel.") +![img1 alt-text#center](figures/1.webp "Figure 1: Python kernel.") 5. In your Jupyter notebook, run the following code to verify PyTorch is working correctly: @@ -127,6 +127,6 @@ print(torch.__version__) ``` It will look as follows: -![img2 alt-text#center](figures/2.png "Figure 2: Jupyter Notebook.") +![img2 alt-text#center](figures/2.webp "Figure 2: Jupyter Notebook.") Now you have set up your development environment, you can move on to creating a PyTorch model. diff --git a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/model.md b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/model.md index ca1f6b7380..667cd8f7dc 100644 --- a/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/model.md +++ b/content/learning-paths/cross-platform/pytorch-digit-classification-arch-training/model.md @@ -94,7 +94,7 @@ summary(model, (1, 28, 28)) After running the notebook, you will see the output as shown in Figure 4: -![img4 alt-text#center](figures/4.png "Figure 4: Notebook Output.") +![img4 alt-text#center](figures/4.webp "Figure 4: Notebook Output.") You will see a detailed summary of the NeuralNetwork model's architecture, including the following information: diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.png deleted file mode 100644 index 4153c7ba00..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.webp new file mode 100644 index 0000000000..b654878a73 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/complete.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.png deleted file mode 100644 index 81ec6e9113..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.webp new file mode 100644 index 0000000000..92a882421f Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/output.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.png deleted file mode 100644 index 080b7fa51f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.webp new file mode 100644 index 0000000000..5848be3a66 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pico_on_breadboard.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.png deleted file mode 100644 index 2f578d9c4f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.webp new file mode 100644 index 0000000000..0cec4bde5a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_1.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.png deleted file mode 100644 index 4153c7ba00..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.webp new file mode 100644 index 0000000000..b654878a73 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/piezo_2.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.png deleted file mode 100644 index 1ae7b907a1..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.webp new file mode 100644 index 0000000000..28046af1e4 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_1.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.png deleted file mode 100644 index d06974ed8f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.webp new file mode 100644 index 0000000000..35ce8230ca Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_2.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.png b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.png deleted file mode 100644 index 13d1adcdd6..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.webp b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.webp new file mode 100644 index 0000000000..160637d7ed Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/_images/pir_sensor_3.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/arduino_sketch.md b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/arduino_sketch.md index cf6e3997e6..4a33856078 100644 --- a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/arduino_sketch.md +++ b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/arduino_sketch.md @@ -246,7 +246,7 @@ If successful, you should see the LED on your board light up. If you wave your h You can further check that your code is running properly by opening the `Serial Monitor` from the `Tools` menu of the Arduino IDE. There you should see all of the output messages, including count of detected motion events, coming from your sketch. -![Debug output](_images/output.png) +![Debug output](_images/output.webp) Congratulations! You have successfully programmed your microcontroller and built a working, if simple, smart device. diff --git a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/raspberrypi_pico.md b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/raspberrypi_pico.md index 1f9fcc82b2..9ce571da90 100644 --- a/content/learning-paths/embedded-and-microcontrollers/arduino-pico/raspberrypi_pico.md +++ b/content/learning-paths/embedded-and-microcontrollers/arduino-pico/raspberrypi_pico.md @@ -39,25 +39,25 @@ If you're not familiar with a breadboard, the image above shows you how all of t ### Step 1: Seat your Raspberry Pi -![RaspberryPi Pico](_images/pico_on_breadboard.png) +![RaspberryPi Pico](_images/pico_on_breadboard.webp) Seat your Raspberry Pi Pico on the breadboard so that its rows of pins sit on either side of the center divider. Make sure that it's firmly pressed all the way down but be careful not to bend any of the pins. ### Step 2: PIR ground -![PIR ground](_images/pir_sensor_1.png) +![PIR ground](_images/pir_sensor_1.webp) Using a black jumper wire, connect the ground pin of your PIR sensor to pin #38 on your Pico. This pin is a ground voltage pin on the Pico. ### Step 3: PIR input voltage -![PIR voltage](_images/pir_sensor_2.png) +![PIR voltage](_images/pir_sensor_2.webp) Using a red wire, connect the input voltage pin of your PIR sensor to pin #36 on your Pico. This pin is a 3.3 volt pin on the Pico and will supply power to your PIR sensor. ### Step 4: PIR data -![PIR data](_images/pir_sensor_3.png) +![PIR data](_images/pir_sensor_3.webp) The last step to connecting the PIR sensor is to connect the middle data pin to pin #34 on your Pico. This is a GPIO pin that you can use to either read or write data. @@ -65,13 +65,13 @@ Note that this is GPIO #28, even though it's physical pin #34. Physical pin numb ### Step 5: Buzzer ground -![Buzzer ground](_images/piezo_1.png) +![Buzzer ground](_images/piezo_1.webp) Next, it's time to connect the buzzer. Start by connecting the buzzer's ground pin to pin #23 on your Pico. This is another ground pin that is build into your board. ### Step 6: Buzzer input -![Buzzer input](_images/piezo_2.png) +![Buzzer input](_images/piezo_2.webp) Then, connect the buzzer's input pin to pin #25 on your Pico. This is another GPIO pin, this time GPIO #19. diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure3.png b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure3.png deleted file mode 100644 index 5a8d8a9436..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure5.png b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure5.png deleted file mode 100644 index 2b1d48d865..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/Figure5.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.png b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.png deleted file mode 100644 index 5a8d8a9436..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.webp b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.webp new file mode 100644 index 0000000000..864092b23d Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure3.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.png b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.png deleted file mode 100644 index 2b1d48d865..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.webp b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.webp new file mode 100644 index 0000000000..92eb070e1e Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/avh_ppocr/figure5.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/connect-and-set-up-arduino.md b/content/learning-paths/embedded-and-microcontrollers/edge/connect-and-set-up-arduino.md index f9bb54bc0e..1ccc697c5c 100644 --- a/content/learning-paths/embedded-and-microcontrollers/edge/connect-and-set-up-arduino.md +++ b/content/learning-paths/embedded-and-microcontrollers/edge/connect-and-set-up-arduino.md @@ -37,7 +37,7 @@ You will need the following components: - **Anode (long leg) of the LED** → connect to **GPIO pin D2** through a 220 Ω resistor - **Cathode (short leg)** → connect to **GND** -![Diagram showing the physical breadboard circuit connecting an LED to GPIO D2 and GND on the Arduino Nano RP2040 alt-text#center](images/led_connection.png) +![Diagram showing the physical breadboard circuit connecting an LED to GPIO D2 and GND on the Arduino Nano RP2040 alt-text#center](images/led_connection.webp) ![Schematic diagram showing the LED connected between GPIO D2 and GND with a 220 Ω resistor in series alt-text#center](images/led_connection_schematic.png) diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/1.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/1.png deleted file mode 100644 index 395465d841..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/1.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/1.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/1.webp new file mode 100644 index 0000000000..bedc8f87cc Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/1.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/10.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/10.png deleted file mode 100644 index c29ce5ddf1..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/10.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/10.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/10.webp new file mode 100644 index 0000000000..dc8052df83 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/10.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/11.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/11.png deleted file mode 100644 index 289c9cb116..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/11.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/11.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/11.webp new file mode 100644 index 0000000000..9c7dce4832 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/11.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/12.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/12.png deleted file mode 100644 index 07f4ea140b..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/12.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/12.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/12.webp new file mode 100644 index 0000000000..04b8f9acff Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/12.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/13.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/13.png deleted file mode 100644 index 6f9e54834d..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/13.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/13.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/13.webp new file mode 100644 index 0000000000..a0ce35d447 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/13.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/16.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/16.png deleted file mode 100644 index 4cfefaad0e..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/16.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/16.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/16.webp new file mode 100644 index 0000000000..92d06eb0c9 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/16.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/17.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/17.png deleted file mode 100644 index ad4e26d2fa..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/17.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/17.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/17.webp new file mode 100644 index 0000000000..d2c45b38a6 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/17.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/2.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/2.png deleted file mode 100644 index c479b6f9a8..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/2.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/2.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/2.webp new file mode 100644 index 0000000000..079b1759fa Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/2.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/3.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/3.png deleted file mode 100644 index b2a545c191..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/3.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/3.webp new file mode 100644 index 0000000000..4428422c34 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/3.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.png deleted file mode 100644 index 27b9b0a623..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.webp new file mode 100644 index 0000000000..5f1554f555 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/3b.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/4.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/4.png deleted file mode 100644 index 199fb6331b..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/4.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/4.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/4.webp new file mode 100644 index 0000000000..468e2f6b4e Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/4.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/5.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/5.png deleted file mode 100644 index 73534bfedd..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/5.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/5.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/5.webp new file mode 100644 index 0000000000..d033ae66ff Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/5.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/6.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/6.png deleted file mode 100644 index 9a846b8cc6..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/6.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/6.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/6.webp new file mode 100644 index 0000000000..70d6aa169d Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/6.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/7.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/7.png deleted file mode 100644 index 9f18570ac9..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/7.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/7.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/7.webp new file mode 100644 index 0000000000..ad28e297fc Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/7.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/8.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/8.png deleted file mode 100644 index 11b278ed2f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/8.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/8.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/8.webp new file mode 100644 index 0000000000..96bf1c45bd Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/8.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/9.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/9.png deleted file mode 100644 index af4a34ef1e..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/9.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/9.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/9.webp new file mode 100644 index 0000000000..e7026ce4ed Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/9.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.png b/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.png deleted file mode 100644 index ad88957013..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.webp b/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.webp new file mode 100644 index 0000000000..c6a77e8091 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge/images/led_connection.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge/software-edge-impulse.md b/content/learning-paths/embedded-and-microcontrollers/edge/software-edge-impulse.md index e091998f92..c18d63ef36 100644 --- a/content/learning-paths/embedded-and-microcontrollers/edge/software-edge-impulse.md +++ b/content/learning-paths/embedded-and-microcontrollers/edge/software-edge-impulse.md @@ -48,7 +48,7 @@ In the following sections, you'll walk through each key page on the Edge Impulse -![Screenshot of the Edge Impulse home page showing the main navigation and project dashboard alt-text#center](images/1.png "Home page of Edge Impulse website") +![Screenshot of the Edge Impulse home page showing the main navigation and project dashboard alt-text#center](images/1.webp "Home page of Edge Impulse website") ## Create a new project @@ -59,7 +59,7 @@ For example, if you're building a keyword-spotting model, you might name it `Wak You'll also need to select the appropriate **project type** and **project settings**, as shown in the screenshot below. -![Screenshot showing the new project creation page in Edge Impulse, with fields for project name, type, and target device alt-text#center](images/3.png "New project setup") +![Screenshot showing the new project creation page in Edge Impulse, with fields for project name, type, and target device alt-text#center](images/3.webp "New project setup") ## Configure the target device @@ -69,7 +69,7 @@ You can find the full specifications for the Arduino Nano RP2040 Connect on [Ard Follow the settings shown in the screenshot to complete the configuration. -![Screenshot showing the Edge Impulse device configuration page with Arduino Nano RP2040 Connect selected alt-text#center](images/4.png "Configure Arduino Nano RP2040") +![Screenshot showing the Edge Impulse device configuration page with Arduino Nano RP2040 Connect selected alt-text#center](images/4.webp "Configure Arduino Nano RP2040") ## Add the dataset @@ -84,14 +84,14 @@ git clone https://github.com/e-dudzi/Learning-Path.git The repository contains a `Dataset.zip` file with the dataset used in this project. Extract the contents to your local machine. For convenience, the dataset is already split into **training** and **testing** sets. -![Screenshot showing the Edge Impulse interface with the Add existing data panel open, used to upload pre-recorded datasets alt-text#center](images/6.png "Adding existing data") +![Screenshot showing the Edge Impulse interface with the Add existing data panel open, used to upload pre-recorded datasets alt-text#center](images/6.webp "Adding existing data") {{% notice Note %}} Do not check the green highlighted area during upload. The dataset already includes metadata. Enabling that option may result in much slower upload times and is unnecessary for this project. {{% /notice %}} -![Screenshot showing the Data acquisition tab in Edge Impulse with uploaded samples organized by label alt-text#center](images/7.png "Dataset overview") +![Screenshot showing the Data acquisition tab in Edge Impulse with uploaded samples organized by label alt-text#center](images/7.webp "Dataset overview") ## Dataset uploaded successfully @@ -106,7 +106,7 @@ This dataset is consists of four labels: - unknown {{% /notice %}} -![Screenshot showing the Impulse design interface in Edge Impulse with input, processing, and learning blocks configured alt-text#center](images/8.png "Dataset overview") +![Screenshot showing the Impulse design interface in Edge Impulse with input, processing, and learning blocks configured alt-text#center](images/8.webp "Dataset overview") ## Create the impulse @@ -117,7 +117,7 @@ Click **Create impulse** in the menu and configure it as shown in the screenshot After configuring the impulse, make sure to **save your changes**. -![example image alt-text#center](images/9.png "Create Impulse") +![example image alt-text#center](images/9.webp "Create Impulse") ## Configure the MFCC block @@ -129,7 +129,7 @@ Set the parameters exactly as shown in the screenshot. These settings determine These defaults are chosen for this Learning Path, but you can experiment with different values once you're more familiar with Edge Impulse. -![Screenshot showing the MFCC configuration page in Edge Impulse with time and frequency parameters set for feature extraction alt-text#center](images/10.png "MFCC block configuration") +![Screenshot showing the MFCC configuration page in Edge Impulse with time and frequency parameters set for feature extraction alt-text#center](images/10.webp "MFCC block configuration") {{< notice Note >}} The green-highlighted section on the MFCC configuration page provides an estimate of how the model will perform on the target device. This includes memory usage (RAM and flash) and latency, helping ensure the model fits within hardware constraints. @@ -141,7 +141,7 @@ After saving the MFCC parameters, the next step is to generate features from you When complete, you'll see a **2D feature plot** that shows how the data is distributed across the four labels: `on`, `off`, `noise`, and `unknown`. This helps visually confirm whether the classes are distinct and learnable. -![Screenshot showing the feature explorer in Edge Impulse with a 2D visualization of four labeled audio classes alt-text#center](images/12.png "Feature explorer") +![Screenshot showing the feature explorer in Edge Impulse with a 2D visualization of four labeled audio classes alt-text#center](images/12.webp "Feature explorer") ## Set up the classifier @@ -153,7 +153,7 @@ For this Learning Path, use a learning rate of `0.002` even though the screensho Once all parameters are set, click **Save and train** to begin training your model. -![Screenshot showing the classifier configuration screen in Edge Impulse with neural network settings for audio classification alt-text#center](images/13.png) +![Screenshot showing the classifier configuration screen in Edge Impulse with neural network settings for audio classification alt-text#center](images/13.webp) ## Review model performance @@ -189,7 +189,7 @@ To run the trained model on your Arduino Nano RP2040 Connect, export it as an Ar The model will be downloaded as a `.zip` file, which you can import into the Arduino IDE. -![Screenshot showing the Edge Impulse deployment page with Arduino library export selected alt-text#center](images/16.png) +![Screenshot showing the Edge Impulse deployment page with Arduino library export selected alt-text#center](images/16.webp) ## Next steps diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.png deleted file mode 100644 index 88194a9eff..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.webp new file mode 100644 index 0000000000..ca1e151b5e Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_4.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.png deleted file mode 100644 index f58708de55..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.webp new file mode 100644 index 0000000000..26693b7162 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_clone_5.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.png deleted file mode 100644 index 17321622af..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.webp new file mode 100644 index 0000000000..60c1e6ea94 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_1.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.png deleted file mode 100644 index 6c55ff1858..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.webp new file mode 100644 index 0000000000..73135f94b0 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_2.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.png deleted file mode 100644 index b4a6929c7f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.webp new file mode 100644 index 0000000000..84f5866974 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_key_3.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.png deleted file mode 100644 index 2fd938a1fc..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.webp new file mode 100644 index 0000000000..12771561f9 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_2.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.png deleted file mode 100644 index 79149e96fa..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.webp new file mode 100644 index 0000000000..7b4ef231ce Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_3.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.png deleted file mode 100644 index b172b542cf..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.webp new file mode 100644 index 0000000000..9e291fb98a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_4.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.png deleted file mode 100644 index fbb1ae4345..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.webp new file mode 100644 index 0000000000..163f06b720 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_5.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.png deleted file mode 100644 index 12cf5812e7..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.webp new file mode 100644 index 0000000000..76b368b22c Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/ei_project_6.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.png b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.png deleted file mode 100644 index c8e0f39d60..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.webp b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.webp new file mode 100644 index 0000000000..0334ce584a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/edge_impulse_greengrass/images/iam_ter_update.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/2setup.md b/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/2setup.md index fcbdfb58c3..4a57b23819 100644 --- a/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/2setup.md +++ b/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/2setup.md @@ -37,7 +37,7 @@ If you are unsure of how to insert the ribbon into the connector [watch the vide You can use a USB camera instead for object detection, but the instructions below assume a MIPI CSI-2 camera. {{% /notice %}} -![image of the ribbon inserted into the connector](./cam0connector.jpg) +![image of the ribbon inserted into the connector](./cam0connector.webp) ### Power on the Jetson Orin Nano diff --git a/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.jpg b/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.jpg deleted file mode 100644 index 1a112dec89..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.webp b/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.webp new file mode 100644 index 0000000000..2d81a0a6a1 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/jetson_object_detection/cam0connector.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/FVP.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/FVP.png deleted file mode 100644 index cb0b76090b..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/FVP.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/Select_target.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/Select_target.png deleted file mode 100644 index e428b7aa14..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/Select_target.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.png deleted file mode 100644 index 233082b6b1..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.webp b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.webp new file mode 100644 index 0000000000..48e4f5652a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/armds_ide.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.png deleted file mode 100644 index a67841fbb9..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.webp b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.webp new file mode 100644 index 0000000000..8e5c97a234 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/debug_config.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.png deleted file mode 100644 index cb0b76090b..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.webp b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.webp new file mode 100644 index 0000000000..022762710f Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/fvp.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.png b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.png deleted file mode 100644 index e428b7aa14..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.webp b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.webp new file mode 100644 index 0000000000..d5bc388013 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/linux-on-fvp/select_target.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/4-smart-home-assistant.md b/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/4-smart-home-assistant.md index c3c4d58508..3ec24fd82c 100644 --- a/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/4-smart-home-assistant.md +++ b/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/4-smart-home-assistant.md @@ -35,7 +35,7 @@ In the previous section, you configured a LED on GPIO pin 17. The smart home ass The code uses gpiozero with lgpio backend for Raspberry Pi 5 compatibility. You can use compatible output devices such as LEDs, relays, or small loads connected to these GPIO pins to represent actual smart home devices. All pin assignments are optimized for the Raspberry Pi 5's GPIO layout. {{% /notice %}} -![Raspberry Pi 5 connected to a breadboard with LEDs, push button, and sensor module alt-text#center](hardware.jpeg "Setup that includes a blue LED (mapped to Living Room Light on GPIO 17), a red LED, push button, and a sensor module.") +![Raspberry Pi 5 connected to a breadboard with LEDs, push button, and sensor module alt-text#center](hardware.webp "Setup that includes a blue LED (mapped to Living Room Light on GPIO 17), a red LED, push button, and a sensor module.") This setup illustrates a simulated smart home with controllable devices. diff --git a/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.jpeg b/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.jpeg deleted file mode 100644 index a29737018a..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.jpeg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.webp b/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.webp new file mode 100644 index 0000000000..f2de92a53a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/raspberry-pi-smart-home/hardware.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/1_Overview.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/1_overview.md similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/1_Overview.md rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/1_overview.md diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/2_build_kernel_image.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/2_build_kernel_image.md new file mode 100644 index 0000000000..79efa9bd44 --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/2_build_kernel_image.md @@ -0,0 +1,98 @@ +--- +title: Build Linux image +weight: 3 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Install packages + +``` +sudo apt update +sudo apt install -y which sed make binutils build-essential diffutils gcc g++ bash patch gzip \ +bzip2 perl tar cpio unzip rsync file bc findutils gawk libncurses-dev python-is-python3 \ +gcc-arm-none-eabi +``` + +## Build a debuggable kernel image + +For this learning path you will be using [Buildroot](https://github.com/buildroot/buildroot) to build a Linux image for Raspberry Pi 3B+ with a debuggable Linux kernel. You will profile Linux kernel modules built out-of-tree and Linux device drivers built in the Linux source code tree. + +1. Clone the Buildroot Repository and initialize the build system with the default configurations. + +```bash +git clone https://github.com/buildroot/buildroot.git +cd buildroot +export BUILDROOT_HOME=$(pwd) +make raspberrypi3_64_defconfig +``` +{{% notice Using a different board %}} +If you're not using a Raspberry Pi 3 for this Learning Path, change the `raspberrypi3_64_defconfig` to the option that matches your hardware in `$(BUILDROOT_HOME)/configs` +{{% /notice %}} + +2. You will use `menuconfig` to configure the setup. Invoke it with the following command: + +``` +make menuconfig +``` + +![Menuconfig UI for Buildroot configuration](./images/menuconfig.png) + +Change Buildroot configurations to enable debugging symbols and SSH access. + +```plaintext +Build options ---> + [*] build packages with debugging symbols + gcc debug level (debug level 3) + [*] build packages with runtime debugging info + gcc optimization level (optimize for debugging) ---> + +System configuration ---> + [*] Enable root login with password + (****) Root password # Choose root password here + +Kernel ---> + Linux Kernel Tools ---> + [*] perf + +Target packages ---> + Networking applications ---> + [*] openssh + [*] server + [*] key utilities +``` + +You might also need to change your default `sshd_config` file according to your network settings. To do that, you need to modify System configuration→ Root filesystem overlay directories to add a directory that contains your modified `sshd_config` file. + +3. By default the Linux kernel images are stripped. You will need to make the image debuggable as you'll be using it later. + +Invoke `linux-menuconfig` and uncheck the option as shown. + +```bash +make linux-menuconfig +``` + +```plaintext +Kernel hacking ---> + -*- Kernel debugging + Compile-time checks and compiler options ---> + Debug information (Rely on the toolchain's implicit default DWARF version) + [ ] Reduce debugging information # un-check +``` + +4. Now you can build the Linux image and flash it to the the SD card to run it on the Raspberry Pi. + +```bash +make -j$(nproc) +``` + +It will take some time to build the Linux image. When it completes, the output will be in `$BUILDROOT_HOME/output/images/sdcard.img`: + +```bash +ls $BUILDROOT_HOME/output/images/ | grep sdcard.img +``` + +For details on flashing the SD card image, see [this helpful article](https://www.ev3dev.org/docs/tutorials/writing-sd-card-image-ubuntu-disk-image-writer/). + +Now that you have a target running Linux with a debuggable kernel image, you can start writing your kernel module that you want to profile. diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/3_oot_module.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/3_oot_module.md new file mode 100644 index 0000000000..578a52f9b4 --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/3_oot_module.md @@ -0,0 +1,257 @@ +--- +title: Build out-of-tree kernel module +weight: 4 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Creating the Linux Kernel Module + +You will now create an example Linux kernel module (Character device) that demonstrates a cache miss issue caused by traversing a 2D array in column-major order. This access pattern is not cache-friendly, as it skips over most of the neighboring elements in memory during each iteration. + +To build the Linux kernel module, start by creating a new directory, for example `example_module`. Inside this directory, add two files: `mychardrv.c` and `Makefile`. + +**Makefile** + +```makefile +obj-m += mychardrv.o +BUILDROOT_OUT := $(BUILDROOT_HOME)/output # Change this to your buildroot output directory +KDIR := $(BUILDROOT_OUT)/build/linux-custom +CROSS_COMPILE := $(BUILDROOT_OUT)/host/bin/aarch64-buildroot-linux-gnu- +ARCH := arm64 + +all: + $(MAKE) -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules + +clean: + $(MAKE) -C $(KDIR) M=$(PWD) clean +``` + +{{% notice Note %}} +Change **BUILDROOT_OUT** to the correct buildroot output directory on your host machine. +{{% /notice %}} + +**mychardrv.c** + +```c +// SPDX-License-Identifier: GPL-2.0 +#include "linux/printk.h" +#include +#include +#include +#include + +// Using fixed major and minor numbers just for demonstration purposes. +// Major number 42 is for demo/sample uses according to +// https://www.kernel.org/doc/Documentation/admin-guide/devices.txt +#define MAJOR_VERSION_NUM 42 +#define MINOR_VERSION_NUM 0 +#define MODULE_NAME "mychardrv" +#define MAX_INPUT_LEN 64 + +static struct cdev my_char_dev; + +/** + * @brief Traverse a 2D matrix and calculate the sum of its elements. + * + * @size: The size of the matrix (number of rows and columns). + * + * This function allocates a 2D matrix of integers, initializes it with the sum + * of its indices, and then calculates the sum of its elements by accessing them + * in a cache-unfriendly column-major order. + * + * Return: 0 on success, or -ENOMEM if memory allocation fails. + */ +int char_dev_cache_traverse(long size) { + int i, j; + long sum = 0; + + int **matrix; + + // Allocate rows + matrix = kmalloc_array(size, sizeof(int *), GFP_KERNEL); + if (!matrix) + return -ENOMEM; + + // Allocate columns and initialize matrix + for (i = 0; i < size; i++) { + matrix[i] = kmalloc_array(size, sizeof(int), GFP_KERNEL); + if (!matrix[i]) { + for (int n = 0; n < i; n++) { + kfree(matrix[n]); + } + kfree(matrix); + return -ENOMEM; + } + + for (j = 0; j < size; j++) + matrix[i][j] = i + j; + } + + // Access in cache-UNFRIENDLY column-major order + for (j = 0; j < size; j++) { + for (i = 0; i < size; i++) { + sum += matrix[i][j]; + } + } + + pr_info("Sum: %ld\n", sum); + + // Free memory + for (i = 0; i < size; i++) + kfree(matrix[i]); + kfree(matrix); + + return 0; +} + +/** + * @brief Gets the size of the list to be created from user space. + * + */ +static ssize_t char_dev_write(struct file *file, const char *buff, + size_t length, loff_t *offset) { + (void)file; + (void)offset; + + ssize_t ret = 0; + char *kbuf; + long size_value; + + // Allocate kernel buffer + kbuf = kmalloc(MAX_INPUT_LEN, GFP_KERNEL); + if (!kbuf) + return -ENOMEM; + + // copy data from user space to kernel space + if (copy_from_user(kbuf, buff, length)) { + ret = -EFAULT; + goto out; + } + kbuf[length] = '\0'; + + // Convert string to long (Base 10) + ret = kstrtol(kbuf, 10, &size_value); + if (ret) + goto out; + + // Call cache traversal function + ret = char_dev_cache_traverse(size_value); + if (ret) + goto out; + + ret = length; + +out: + kfree(kbuf); + return ret; +} + +static int char_dev_open(struct inode *node, struct file *file) { + (void)file; + pr_info("%s is open - Major(%d) Minor(%d)\n", MODULE_NAME, + MAJOR(node->i_rdev), MINOR(node->i_rdev)); + return 0; +} + +static int char_dev_release(struct inode *node, struct file *file) { + (void)file; + pr_info("%s is released - Major(%d) Minor(%d)\n", MODULE_NAME, + MAJOR(node->i_rdev), MINOR(node->i_rdev)); + return 0; +} + +// File operations structure +static const struct file_operations dev_fops = {.owner = THIS_MODULE, + .open = char_dev_open, + .release = char_dev_release, + .write = char_dev_write}; + +static int __init char_dev_init(void) { + int ret; + // Allocate Major number + ret = register_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1, + MODULE_NAME); + if (ret < 0) + return ret; + + // Initialize cdev structure and add it to kernel + cdev_init(&my_char_dev, &dev_fops); + ret = cdev_add(&my_char_dev, MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); + + if (ret < 0) { + unregister_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); + return ret; + } + + return ret; +} + +static void __exit char_dev_exit(void) { + cdev_del(&my_char_dev); + unregister_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); +} + +module_init(char_dev_init); +module_exit(char_dev_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Yahya Abouelseoud"); +MODULE_DESCRIPTION("A simple char driver with cache misses issue"); +``` + +The module above receives the size of a 2D array as a string through the `char_dev_write()` function, converts it to an integer, and passes it to the `char_dev_cache_traverse()` function. This function then creates the 2D array, initializes it with simple data, traverses it in a column-major (cache-unfriendly) order, computes the sum of its elements, and prints the result to the kernel log. The cache-unfriendly aspects allows you to inspect a bottleneck using Streamline in the next section. + +## Building and Running the Kernel Module + +1. To compile the kernel module, run make inside the example_module directory. This will generate the output file `mychardrv.ko`. + +2. Transfer the .ko file to the target using scp command and then insert it using insmod command. After inserting the module, you create a character device node using mknod command. Finally, you can test the module by writing a size value (e.g., 10000) to the device file and measuring the time taken for the operation using the `time` command. + + ```bash + scp mychardrv.ko root@:/root/ + ``` + + {{% notice Note %}} + Replace \ with your target's IP address + {{% /notice %}} + +3. SSH onto your target device: + + ```bash + ssh root@ + ``` + +4. Execute the following commads on the target to run the module: + ```bash + insmod /root/mychardrv.ko + mknod /dev/mychardrv c 42 0 + ``` + + {{% notice Note %}} + 42 and 0 are the major and minor number specified in the module code above + {{% /notice %}} + +4. To verify that the module is active, run `dmesg` and the output should match the below: + + ```bash + dmesg + ``` + + ```output + [12381.654983] mychardrv is open - Major(42) Minor(0) + ``` + +5. To make sure it's working as expected you can use the following command: + + ```bash { output_lines = "2-4" } + time echo '10000' > /dev/mychardrv + # real 0m 38.04s + # user 0m 0.00s + # sys 0m 38.03s + ``` + + The command above passes 10000 to the module, which specifies the size of the 2D array to be created and traversed. The **echo** command takes a long time to complete (around 38 seconds) due to the cache-unfriendly traversal implemented in the `char_dev_cache_traverse()` function. + +With the kernel module built, the next step is to profile it using Arm Streamline. You will use it to capture runtime behavior, highlight performance bottlenecks, and help identifying issues such as the cache-unfriendly traversal in your module. diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/4_sl_profile_oot.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/4_sl_profile_oot.md new file mode 100644 index 0000000000..d10aa1d78f --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/4_sl_profile_oot.md @@ -0,0 +1,103 @@ +--- +title: Profile out-of-tree kernel module +weight: 5 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Use Streamline to profile an out-of-tree kernel module + +Arm Streamline is a tool that uses sampling to measure system performance. Instead of recording every single event (like instrumentation does, which can slow things down), it takes snapshots of hardware counters and system registers at regular intervals. This gives a statistical view of how the system runs, while keeping the overhead small. + +Streamline tracks performance metrics such as CPU usage, execution cycles, memory access, cache hits and misses, and GPU activity. By putting this information together, it helps developers see how their code is using the hardware. Captured data is presented on a timeline, so you can see how performance changes as your program runs. This makes it easier to notice patterns, find bottlenecks, and link performance issues to specific parts of your application. + +For more details about Streamline and its features, refer to the [Streamline user guide](https://developer.arm.com/documentation/101816/latest/Getting-started-with-Streamline/Introduction-to-Streamline). + +### Download Streamline + +Streamline is included with Arm Performance Studio, which you can download and use for free. Download it by following the link below. + +[Arm Performance Studio downloads](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Studio#Downloads). + +For step-by-step guidance on setting up Streamline on your host machine, follow the installation instructions provided in [Streamline installation guide](https://developer.arm.com/documentation/101816/latest/Getting-started-with-Streamline/Install-Streamline). + +### Pushing Gator to the Target and Making a Capture + +Once Streamline is installed on the host machine, you can capture trace data of our Linux kernel module. On Linux, the binaries will be installed where you extracted the package. + +1. To communicate with the target, Streamline requires a daemon, called **gatord**, to be installed and running on the target. gatord must be running before you can capture trace data. There are two pre-built gatord binaries available in Streamline's install directory, one for *Armv7 (AArch32)* and one for *Armv8 or later(AArch64)*. Push **gatord** to the target device using **scp**. + + ```bash + scp /streamline/bin/linux/arm64/gatord root@:/root/gatord + ``` + +{{% notice Note %}} +If you are using an AArch32 target, use `arm` instead of `arm64`. +{{% /notice%}} + + +2. Run gator on the target to start system-wide capture mode. + + ```bash + /root/gatord -S yes -a + ``` + + ![Gator command#center](./images/img01_gator_cmd.png) + +3. Open Streamline and choose *TCP mode*. + +4. Enter your target hostname or IP address. +![Streamline TCP settings#center](./images/img02_streamline_tcp.png) + +5. Click on *Select counters* to open the counter configuration dialogue. + +6. Add `L1 data Cache: Refill` and `L1 Data Cache: Access` and enable Event-Based Sampling (EBS) for both of them as shown in the screenshot and click *Save*. + + {{% notice Further reading %}} + To learn more about counters and how to configure them please refer to [counter configuration guide](https://developer.arm.com/documentation/101816/latest/Capture-a-Streamline-profile/Counter-Configuration) + + To learn more about EBS, please refer to [Streamline user guide](https://developer.arm.com/documentation/101816/9-7/Capture-a-Streamline-profile/Counter-Configuration/Setting-up-event-based-sampling) + {{% /notice %}} + + ![Counter configuration#center](./images/img03_counter_config.png) + +7. In the Command section, add the same shell command you used earlier to test our Linux module. + + ```bash + sh -c "echo 10000 > /dev/mychardrv" + ``` + + ![Streamline command#center](./images/img04_streamline_cmd.png) + +8. In the Capture settings dialog, select Add image, add the absolut path of your kernel module file `mychardrv.ko` and click Save. +![Capture settings#center](./images/img05_capture_settings.png) + +9. Start the capture and enter a name and location for the capture file. Streamline will start collecting data and the charts will show activity being captured from the target. +![Streamline timeline#center](./images/img06_streamline_timeline.png) + +### Analyze the capture and inspect the code + +Once the capture is stopped, Streamline automatically analyzes the collected data and provides insights to help identify performance issues and bottlenecks. This section describes how to view these insights, starting with locating the functions related to our kernel module and narrowing down to the exact lines of code that may be responsible for the performance problems. + +1. Open the *Functions tab*. In the counters list, select one of the counters you selected earlier in the counter configuration dialog, as shown: + +![Counter selection#center](./images/img07_select_datasource.png) + +2. In the Functions tab, observe that the function `char_dev_cache_traverse()` has the highest L1 Cache refill rate, which is expected. + Also notice the Image name on the right, which is our module file name `mychardrv.ko`: + +![Functions tab#center](./images/img08_Functions_Tab.png) + +3. To view the call path of this function, right click on the function name and choose *Select in Call Paths*. + +4. You can now see the exact function that called `char_dev_cache_traverse()`. In the Locations column, notice that the function calls started in the userspace (`echo` command) and terminated in the kernel space module `mychardrv.ko`: +![Call paths tab#center](./images/img09_callpaths_tab.png) + +5. Since you compiled the kernel module with debug info, you will be able to see the exact code lines that are causing these cache misses. + To do so, double-click on the function name and the *Code tab* opens. This view shows you how much each code line contributed to the cache misses and in bottom half of the code view, you can also see the disassembly of these lines with the counter values of each assembly instruction: +![Code tab#center](./images/img10_code_tab.png) + +{{% notice Note %}} +You may need to configure path prefix substitution in the Code tab to view the source code correctly. For details on how to set this up and for more information about code analysis, please refer to [Streamline user guide](https://developer.arm.com/documentation/101816/latest/Analyze-your-capture/Analyze-your-code?lang=en) +{{% /notice %}} \ No newline at end of file diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/5_intree_kernel_driver.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/5_intree_kernel_driver.md new file mode 100644 index 0000000000..93d3713813 --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/5_intree_kernel_driver.md @@ -0,0 +1,66 @@ +--- +title: Build in-tree kernel driver +weight: 6 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Build an in-tree Linux kernel driver + +Now that you have learned how to build and profile an out-of-tree kernel module, you will move on to building a driver statically into the Linux kernel. You will then profile it by adding the kernel’s `vmlinux` file as an image in Streamline’s capture settings, rather than the kernel object itself. This allows you to view function calls and call paths as before, and also inspect specific sections of the kernel code that may be contributing to performance issues. + +### Creating an in-tree simple character device driver + +Use the same example character driver you used earlier `mychardrv`. This time, you will be statically linking it to the kernel. + +1. Go to your kernel source directory, in our case, it's located in Buildroot's output directory in `$(BUILDROOT_HOME)/output/build/linux-custom`. + +2. Copy the `mychardrv.c` file created earlier to `drivers/char` directory. + + ```bash + cd drivers/char + cp ./mychardrv.c + ``` + +3. Add the following configuration to the bottom of the `Kconfig` file to make the kernel configuration system aware of the the new driver you just added. + + ```plaintext + config MYCHAR_DRIVER + tristate "My Character Driver" + default y + help + A simple character device driver for testing. + endmenu + ``` + +4. You also need to modify the `Makefile` in the current directory to make it build the object file for `mychardrv.c`. Add the following line to it: + + ```Makefile + obj-$(CONFIG_MYCHAR_DRIVER) += mychardrv.o + ``` + +### Rebuild and Run the Linux Image + +You can rebuild the Linux image simply by running the **make** command in your Buildroot directory. This rebuilds the Linux kernel including our new device driver and produce a debuggable `vmlinux` ELF file. + +```bash +cd $(BUILDROOT_HOME) +make -j$(nproc) +``` + +To verify that our driver was compiled into the kernel, you can run the following command: + +```bash +find $(BUILDROOT_HOME) -iname "mychardrv.o" +``` + +This should return the full path of the object file produced from compiling our character device driver. + +Now you can flash the new `sdcard.img` file produced to your target's SD card. + +{{% notice %}} +To learn how to flash the sdcard.img file to your SD card, you can look at [this helpful article](https://www.ev3dev.org/docs/tutorials/writing-sd-card-image-ubuntu-disk-image-writer/). +{{% /notice %}} + +This time your driver will be automatically loaded when Linux is booted. diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/6_sl_profile_intree.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/6_sl_profile_intree.md new file mode 100644 index 0000000000..4481bd3b50 --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/6_sl_profile_intree.md @@ -0,0 +1,29 @@ +--- +title: Profile in-tree kernel driver +weight: 7 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Use Streamline to profile an in-tree kernel driver + +Profiling in-tree drivers follows almost the same process as profiling an out-of-tree kernel module. The steps include: + +1. Transferring `gator` to the target device using scp. + +2. Launching Streamline, selecting TCP view, and entering the target’s IP or hostname. + +3. Setting up counters and enabling Event-Based Sampling (EBS). + +The main difference is that, instead of adding the kernel module’s object file as the capture image in Capture settings, you use the Linux ELF file (vmlinux) generated by Buildroot. + +![Vmlinux capture settings#center](./images/img11_vmlinux_capture_settings.png) + +After clicking Save in Capture settings dialog, you can start the capture and analyze it as you did before. +![Vmlinux function tab#center](./images/img12_vmlinux_function_tab.png) + +Since you used `vmlinux` image, you can view the driver functions as well as all other kernel functions that were sampled during the capture. + +You can also view the full Call path of any sampled function within the kernel. +![Vmlinux call paths tab#center](./images/img13_vmlinux_callpaths_tab.png) diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/7_sl_spe.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/7_sl_spe.md new file mode 100644 index 0000000000..7671ee25c8 --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/7_sl_spe.md @@ -0,0 +1,28 @@ +--- +title: Using Streamline with Statistical Profiling Extension +weight: 8 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Using the Statistical Profiling Extension (SPE) for better analysis + +With periodic sampling, Streamline collects CPU performance data using hardware counters and software interrupts. Hardware counters only give totals, so you can’t see which exact instructions caused the events. At best, you can link the counts to a broad section of code. This makes it harder to pinpoint problems. Sampling the Program Counter (PC) or call stack is also limited, since software timers handle both sampling and unwinding. + +The Statistical Profiling Extension (SPE) removes these limits. It samples the PC in hardware, directly inside the CPU pipeline. This adds almost no overhead, so the sampling rate can be much higher. SPE also records extra details about each sampled instruction, giving a much clearer view of how the code runs. For more details on SPE and how it works in Streamline see [this blog post](https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/introduction-to-statistical-profiling-support-in-streamline). + +To find out if your target supports SPE, see [Streamline user guide](https://developer.arm.com/documentation/101816/9-7/Capture-a-Streamline-profile/Counter-Configuration/Configure-SPE-counters). + +### Profiling Kernel Module Using SPE + +To profile both in-tree and out-of-tree kernel modules, you can use the same setup steps as before. The only change is to add “Arm Statistical Profiling Extension” to the Events to Collect list in the Counter Configuration dialog. +![SPE counter selection#center](./images/img14_spe_select_counters.png) + +After saving the counter configurations, Click Start capture to begin data collection, then wait for Streamline to analyze results. + +To view SPE counter values, Select SPE in the data source drop-down in the Call paths, Functions, or Code view. + +As shown in the image, SPE provides much more data about the profiled code than Event-Based Sampling (EBS), which provides us with deep insights into the CPU performance bottlenecks with very low overhead. It's also possible to view or hide columns from the table in Call paths or Functions views by menu-clicking on the table header and choosing from the list of columns. + +![SPE function tab#center](./images/img15_spe_function_tab.gif) diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/8_summary.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/8_summary.md new file mode 100644 index 0000000000..22f46c211b --- /dev/null +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/8_summary.md @@ -0,0 +1,12 @@ +--- +title: Summary +weight: 9 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- +## Summary + +In this learning path, you learned how to build and profile Linux kernel modules step by step. You started with an out-of-tree character driver that had a cache performance issue and then used Arm Streamline to spot where the problem was. Later, you tried the same idea with an in-tree driver and saw how profiling works with the full kernel. Although the example problem was simple, the same methods apply to complex, real-world drivers and scenarios. + +The key takeaway is that profiling isn’t just about making code faster—it’s about understanding how your code talks to the hardware. Streamline gives us a clear picture of what’s happening inside the CPU so you can write better, more efficient drivers. By learning to identify bottlenecks, you will be more confident in fixing them and avoiding common mistakes in kernel programming. diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/_index.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/_index.md similarity index 99% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/_index.md rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/_index.md index 56f917249c..866f9098c4 100644 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/_index.md +++ b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/_index.md @@ -28,7 +28,6 @@ skilllevels: Advanced subjects: Performance and Architecture armips: - Cortex-A - - Neoverse tools_software_languages: - Arm Streamline - Arm Performance Studio diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/_next-steps.md b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/_next-steps.md similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/_next-steps.md rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/_next-steps.md diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img01_gator_cmd.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img01_gator_cmd.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img01_gator_cmd.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img01_gator_cmd.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img02_streamline_tcp.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img02_streamline_tcp.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img02_streamline_tcp.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img02_streamline_tcp.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img03_counter_config.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img03_counter_config.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img03_counter_config.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img03_counter_config.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img04_streamline_cmd.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img04_streamline_cmd.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img04_streamline_cmd.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img04_streamline_cmd.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img05_capture_settings.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img05_capture_settings.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img05_capture_settings.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img05_capture_settings.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img06_streamline_timeline.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img06_streamline_timeline.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img06_streamline_timeline.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img06_streamline_timeline.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img07_select_datasource.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img07_select_datasource.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img07_select_datasource.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img07_select_datasource.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img08_Functions_Tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img08_Functions_Tab.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img08_Functions_Tab.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img08_Functions_Tab.png diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img08_functions_tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img08_functions_tab.png new file mode 100644 index 0000000000..cd23986177 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img08_functions_tab.png differ diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img09_callpaths_tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img09_callpaths_tab.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img09_callpaths_tab.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img09_callpaths_tab.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img10_code_tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img10_code_tab.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img10_code_tab.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img10_code_tab.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img11_vmlinux_capture_settings.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img11_vmlinux_capture_settings.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img11_vmlinux_capture_settings.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img11_vmlinux_capture_settings.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img12_vmlinux_function_tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img12_vmlinux_function_tab.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img12_vmlinux_function_tab.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img12_vmlinux_function_tab.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img13_vmlinux_callpaths_tab.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img13_vmlinux_callpaths_tab.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img13_vmlinux_callpaths_tab.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img13_vmlinux_callpaths_tab.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img14_spe_select_counters.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img14_spe_select_counters.png similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img14_spe_select_counters.png rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img14_spe_select_counters.png diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img15_spe_function_tab.gif b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img15_spe_function_tab.gif similarity index 100% rename from content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/images/img15_spe_function_tab.gif rename to content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/img15_spe_function_tab.gif diff --git a/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/menuconfig.png b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/menuconfig.png new file mode 100644 index 0000000000..75f13205bc Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/images/menuconfig.png differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.jpg b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.jpg deleted file mode 100644 index 55cabc5217..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.webp b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.webp new file mode 100644 index 0000000000..39dfe475a4 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/assembled.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card-plate-assembly.md b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card-plate-assembly.md index 978108db15..4c996df002 100644 --- a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card-plate-assembly.md +++ b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card-plate-assembly.md @@ -21,8 +21,8 @@ Follow the steps below to add single board computers to the rack: 5. Insert card and plate into a bay slot -![card plate back](./card01.jpg) +![card plate back](./card01.webp) -![card plate top](./card02.jpg) +![card plate top](./card02.webp) -![finished assembly](./assembled.jpg) +![finished assembly](./assembled.webp) diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.jpg b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.jpg deleted file mode 100644 index 7491e87b1b..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.webp b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.webp new file mode 100644 index 0000000000..9e44dae90a Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card01.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.jpg b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.jpg deleted file mode 100644 index 3abc2ae323..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.webp b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.webp new file mode 100644 index 0000000000..b8c8ca1447 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/card02.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/print-parts.md b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/print-parts.md index 613862af61..c658152768 100644 --- a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/print-parts.md +++ b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/print-parts.md @@ -43,6 +43,6 @@ You can experiment with the quality settings. The parts are not complex shapes, 5. Slice and export G-code using your slicing software 6. Print -![STL files in slicing software](./slicer.png) +![STL files in slicing software](./slicer.webp) -![Parts after printing](./printed.jpg) \ No newline at end of file +![Parts after printing](./printed.webp) \ No newline at end of file diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.jpg b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.jpg deleted file mode 100644 index a2052e868a..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.webp b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.webp new file mode 100644 index 0000000000..c0a3a5fa24 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/printed.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.png b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.png deleted file mode 100644 index 5d6794060f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.webp b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.webp new file mode 100644 index 0000000000..d949eb7312 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/universal-sbc-chassis/slicer.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/3-executorch-workflow.md b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/3-executorch-workflow.md index 6ae810e4b0..4862f6cc9d 100644 --- a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/3-executorch-workflow.md +++ b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/3-executorch-workflow.md @@ -44,7 +44,7 @@ The diagram below summarizes the ExecuTorch workflow from model export to deploy This three-step workflow ensures your TinyML models are performance-tuned and hardware-aware before deployment—even without access to physical silicon. -![Diagram showing the three-step ExecuTorch workflow from model export to deployment#center](./how-executorch-works-high-level.png "The three-step ExecuTorch workflow from model export to deployment") +![Diagram showing the three-step ExecuTorch workflow from model export to deployment#center](./how-executorch-works-high-level.webp "The three-step ExecuTorch workflow from model export to deployment") ## What's next? diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/7-configure-fvp-gui.md b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/7-configure-fvp-gui.md index 66e462500e..257198342c 100644 --- a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/7-configure-fvp-gui.md +++ b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/7-configure-fvp-gui.md @@ -70,7 +70,7 @@ Now run the Mobilenet V2 computer vision model, using [executorch/examples/arm/r Observe that the FVP loads the model file, compiles the PyTorch model to ExecuTorch `.pte` format and then shows an instruction count in the top right of the GUI: -![Terminal and FVP output#center](./terminal_and_fvp_output.jpg "Terminal and FVP output") +![Terminal and FVP output#center](./terminal_and_fvp_output.webp "Terminal and FVP output") {{% notice Note %}} diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.png b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.png deleted file mode 100644 index 58b7369d5f..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.png and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.webp b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.webp new file mode 100644 index 0000000000..f773f543ec Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/how-executorch-works-high-level.webp differ diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.jpg b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.jpg deleted file mode 100644 index 7c6cde8116..0000000000 Binary files a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.jpg and /dev/null differ diff --git a/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.webp b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.webp new file mode 100644 index 0000000000..2a4a276fb9 Binary files /dev/null and b/content/learning-paths/embedded-and-microcontrollers/visualizing-ethos-u-performance/terminal_and_fvp_output.webp differ diff --git a/content/learning-paths/iot/avh_balena/2setup.md b/content/learning-paths/iot/avh_balena/2setup.md index c5d95bf9bd..56668223eb 100644 --- a/content/learning-paths/iot/avh_balena/2setup.md +++ b/content/learning-paths/iot/avh_balena/2setup.md @@ -20,7 +20,7 @@ Create a new fleet and name it `AVH-Testing`. Add a device to your fleet. Navigate to the `Devices` section of your fleet and click on the `Add Device` button. This will open a dialog to create a custom device image. -![Add Device dialog window](add_device.png) +![Add Device dialog window](add_device.webp) You can use the Raspberry Pi 4 device on Arm Virtual Hardware (AVH) as the new device. diff --git a/content/learning-paths/iot/avh_balena/3install.md b/content/learning-paths/iot/avh_balena/3install.md index 0b13a0c9fc..dafeb2af9d 100644 --- a/content/learning-paths/iot/avh_balena/3install.md +++ b/content/learning-paths/iot/avh_balena/3install.md @@ -16,7 +16,7 @@ On the next screen you will be asked to configure your device by choosing the fi Use the `Upload your own firmwware` on the right side to drag or browse for the file `balenaos_rpi4b.zip`. -![upload custom firmware screen](upload_firmware.png) +![upload custom firmware screen](upload_firmware.webp) Uploading the file takes some time. @@ -28,7 +28,7 @@ You do not need to set any advanced boot options. Wait for the device to be created. It is ready to use when you see the ready message: -![device ready](device_ready.png) +![device ready](device_ready.webp) ## Verify your device is ready diff --git a/content/learning-paths/iot/avh_balena/4deploy.md b/content/learning-paths/iot/avh_balena/4deploy.md index fd61cda207..5c2431463c 100644 --- a/content/learning-paths/iot/avh_balena/4deploy.md +++ b/content/learning-paths/iot/avh_balena/4deploy.md @@ -18,7 +18,7 @@ Open Balena Hub in a new tab by clicking on the Balena Hub button on the top rig On the Balena Hub, click `Apps` in the top navigation bar, then search for `balena-app`. This is a pre-built dashboard backed by Grafana and served by Nginx. -![balena-app page](balena_hub_app.png) +![balena-app page](balena_hub_app.webp) Click on the app to open the details page. @@ -38,7 +38,7 @@ If you have more than one device in your fleet, this process will deploy the sel Once the deployment is finished, click on your device in Balena Cloud dashboard to open up the device page. You will see that the Grafana and Nginx services have been deployed to and are running on your device. -![balena app running](balena_app_running.png) +![balena app running](balena_app_running.webp) You will also be able to see the system logs from your device, and optionally get access to the device's terminal from this Balena Cloud screen. @@ -50,10 +50,10 @@ Toggle the `Public Device URL` switch to the `On` position. A link will appear next to the switch, click on it to open the newly created public URL. -![balena-app login](balena_app_login.png) +![balena-app login](balena_app_login.webp) This will open the `balena-app` on your device in your browser. You will be presented with a log in screen, use the default username `admin` and password `admin` to log in. You will be prompted to set a new password for the `admin` user before continuing. -![balena-app dashboard](balena_app_dashboard.png) +![balena-app dashboard](balena_app_dashboard.webp) You now see the Grafana dashboard monitoring your Balena OS installation on this device, including the containers running Grafana and Nginx. diff --git a/content/learning-paths/iot/avh_balena/add_device.png b/content/learning-paths/iot/avh_balena/add_device.png deleted file mode 100644 index 1f551be03d..0000000000 Binary files a/content/learning-paths/iot/avh_balena/add_device.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/add_device.webp b/content/learning-paths/iot/avh_balena/add_device.webp new file mode 100644 index 0000000000..6ede194bc6 Binary files /dev/null and b/content/learning-paths/iot/avh_balena/add_device.webp differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_dashboard.png b/content/learning-paths/iot/avh_balena/balena_app_dashboard.png deleted file mode 100644 index a273d123ba..0000000000 Binary files a/content/learning-paths/iot/avh_balena/balena_app_dashboard.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_dashboard.webp b/content/learning-paths/iot/avh_balena/balena_app_dashboard.webp new file mode 100644 index 0000000000..76168df256 Binary files /dev/null and b/content/learning-paths/iot/avh_balena/balena_app_dashboard.webp differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_login.png b/content/learning-paths/iot/avh_balena/balena_app_login.png deleted file mode 100644 index 062a0e9021..0000000000 Binary files a/content/learning-paths/iot/avh_balena/balena_app_login.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_login.webp b/content/learning-paths/iot/avh_balena/balena_app_login.webp new file mode 100644 index 0000000000..ffd0bf03bf Binary files /dev/null and b/content/learning-paths/iot/avh_balena/balena_app_login.webp differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_running.png b/content/learning-paths/iot/avh_balena/balena_app_running.png deleted file mode 100644 index b7676f5030..0000000000 Binary files a/content/learning-paths/iot/avh_balena/balena_app_running.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/balena_app_running.webp b/content/learning-paths/iot/avh_balena/balena_app_running.webp new file mode 100644 index 0000000000..fdda3d814d Binary files /dev/null and b/content/learning-paths/iot/avh_balena/balena_app_running.webp differ diff --git a/content/learning-paths/iot/avh_balena/balena_hub_app.png b/content/learning-paths/iot/avh_balena/balena_hub_app.png deleted file mode 100644 index e4c39b3e95..0000000000 Binary files a/content/learning-paths/iot/avh_balena/balena_hub_app.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/balena_hub_app.webp b/content/learning-paths/iot/avh_balena/balena_hub_app.webp new file mode 100644 index 0000000000..07111068b8 Binary files /dev/null and b/content/learning-paths/iot/avh_balena/balena_hub_app.webp differ diff --git a/content/learning-paths/iot/avh_balena/device_ready.png b/content/learning-paths/iot/avh_balena/device_ready.png deleted file mode 100644 index 537f426e43..0000000000 Binary files a/content/learning-paths/iot/avh_balena/device_ready.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/device_ready.webp b/content/learning-paths/iot/avh_balena/device_ready.webp new file mode 100644 index 0000000000..5fbdf91ec5 Binary files /dev/null and b/content/learning-paths/iot/avh_balena/device_ready.webp differ diff --git a/content/learning-paths/iot/avh_balena/upload_firmware.png b/content/learning-paths/iot/avh_balena/upload_firmware.png deleted file mode 100644 index cd2480ba67..0000000000 Binary files a/content/learning-paths/iot/avh_balena/upload_firmware.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_balena/upload_firmware.webp b/content/learning-paths/iot/avh_balena/upload_firmware.webp new file mode 100644 index 0000000000..92ee57a64f Binary files /dev/null and b/content/learning-paths/iot/avh_balena/upload_firmware.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/2setup.md b/content/learning-paths/iot/avh_greengrass/2setup.md index f293407968..7b5d10d05f 100644 --- a/content/learning-paths/iot/avh_greengrass/2setup.md +++ b/content/learning-paths/iot/avh_greengrass/2setup.md @@ -30,7 +30,7 @@ You will be presented with a list of devices to choose from. Select Raspberry Pi 4 from the list of devices and proceed to the configure dialog. -![create device](./create_device.png) +![create device](./create_device.webp) AWS IoT Greengrass Core runs on Ubuntu Server and Raspberry Pi OS. @@ -42,7 +42,7 @@ You do not need to set any advanced boot options. Wait for the device to be created. -![device ready](device_ready.png) +![device ready](device_ready.webp) When it is ready, log in with the default username `pi` and password `raspberry`. diff --git a/content/learning-paths/iot/avh_greengrass/3deploy.md b/content/learning-paths/iot/avh_greengrass/3deploy.md index 5b9977e83f..f265e72312 100644 --- a/content/learning-paths/iot/avh_greengrass/3deploy.md +++ b/content/learning-paths/iot/avh_greengrass/3deploy.md @@ -24,7 +24,7 @@ For the `Deployment target` select `Thing group`. For the `Target name` select the `MyGreengrassCoreGroup` that was created when you installed AWS IoT Greengrass. -![create deployment screen](gg_create_deployment.png) +![create deployment screen](gg_create_deployment.webp) The next step is to select which components should be in your deployment. @@ -32,7 +32,7 @@ As an example, you can deploy the AWS Greengrass CLI (which is different from th In the Public Components section, search for `CLI` and then select `aws.greengrass.Cli` from the list. -![select components screen](gg_select_components.png) +![select components screen](gg_select_components.webp) There is no configuration needed for the AWS Greengrass CLI component, so you can skip the next screens until you get to the `Review` step. @@ -42,11 +42,11 @@ Verify your component selection and deployment target and click the `Deploy` but After deploying you will be redirected to your `AVH-Testing` deployment page. -![deployment overview](gg_deployment_overview.png) +![deployment overview](gg_deployment_overview.webp) After a moment you should see that the deployment to your `MyGreengrassCore` device was successful. -![device components](gg_device_components.png) +![device components](gg_device_components.webp) Clicking the device will show you a list of installed and running components. @@ -81,6 +81,6 @@ You should see a similar help message printed. This is the first revision of your deployment. In the future, you can add components, remove the Greengrass CLI component, and change configurations by simply revising your `AVH-Testing` deployment. - ![revise a deployment](gg_revise_deployment.png) + ![revise a deployment](gg_revise_deployment.webp) When you create a new revision of your deployment, the new components and configurations are automatically deployed to every device in your deployment simultaneously. \ No newline at end of file diff --git a/content/learning-paths/iot/avh_greengrass/create_device.png b/content/learning-paths/iot/avh_greengrass/create_device.png deleted file mode 100644 index 213992d321..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/create_device.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/create_device.webp b/content/learning-paths/iot/avh_greengrass/create_device.webp new file mode 100644 index 0000000000..916c47176f Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/create_device.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/device_ready.png b/content/learning-paths/iot/avh_greengrass/device_ready.png deleted file mode 100644 index 03217f5c57..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/device_ready.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/device_ready.webp b/content/learning-paths/iot/avh_greengrass/device_ready.webp new file mode 100644 index 0000000000..099faff536 Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/device_ready.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_create_deployment.png b/content/learning-paths/iot/avh_greengrass/gg_create_deployment.png deleted file mode 100644 index cfd2189669..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/gg_create_deployment.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_create_deployment.webp b/content/learning-paths/iot/avh_greengrass/gg_create_deployment.webp new file mode 100644 index 0000000000..54039a7b5f Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/gg_create_deployment.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.png b/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.png deleted file mode 100644 index 8928b842bc..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.webp b/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.webp new file mode 100644 index 0000000000..6f9484b839 Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/gg_deployment_overview.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_device_components.png b/content/learning-paths/iot/avh_greengrass/gg_device_components.png deleted file mode 100644 index f0ecb736d1..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/gg_device_components.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_device_components.webp b/content/learning-paths/iot/avh_greengrass/gg_device_components.webp new file mode 100644 index 0000000000..54a911a2f8 Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/gg_device_components.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.png b/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.png deleted file mode 100644 index 1e96ff3b45..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.webp b/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.webp new file mode 100644 index 0000000000..bfd912bc3b Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/gg_revise_deployment.webp differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_select_components.png b/content/learning-paths/iot/avh_greengrass/gg_select_components.png deleted file mode 100644 index e2f5c4af29..0000000000 Binary files a/content/learning-paths/iot/avh_greengrass/gg_select_components.png and /dev/null differ diff --git a/content/learning-paths/iot/avh_greengrass/gg_select_components.webp b/content/learning-paths/iot/avh_greengrass/gg_select_components.webp new file mode 100644 index 0000000000..00832a63a7 Binary files /dev/null and b/content/learning-paths/iot/avh_greengrass/gg_select_components.webp differ diff --git a/content/learning-paths/iot/azure-iot/aggregation.md b/content/learning-paths/iot/azure-iot/aggregation.md index 5100186304..f2e76d0435 100644 --- a/content/learning-paths/iot/azure-iot/aggregation.md +++ b/content/learning-paths/iot/azure-iot/aggregation.md @@ -161,7 +161,7 @@ func start ``` Once running, observe the HTTP trigger endpoint, which should appear similar to the following: -![img36 alt-text#center](figures/36.png) +![img36 alt-text#center](figures/36.webp) Next, start the simulator to stream sensor data and open the HTTP trigger endpoint URL in your web browser. You will see the calculated average temperature displayed: ![img37 alt-text#center](figures/37.png) @@ -177,7 +177,7 @@ Now that your Azure Function is fully tested and ready, it's time to deploy it t ![img39 alt-text#center](figures/39.png) 3. Wait for the deployment to complete. This process typically takes a few moments. Once deployed, your Azure Function is hosted in Azure and ready for use. 4. Open the Azure Portal, and go to your function app (in this example, "IoTTemperatureAlertFunc"). You will see the deployed functions: -![img40 alt-text#center](figures/40.png) +![img40 alt-text#center](figures/40.webp) ## Configure Function App Settings You have just deployed the functions to Azure. Previously, when testing the functions locally, you used the `local.settings.json` file to store the Cosmos DB connection string. However, this local configuration file is not deployed to Azure. Therefore, you need to update the corresponding settings directly within the Azure portal. @@ -190,7 +190,7 @@ Follow these steps to configure the Cosmos DB connection string 3. Click the **+ Add** button. 4. Enter the name you used in your code (such as "armiotcosmosdb_DOCUMENTDB"). 5. Paste the Cosmos DB connection string into the Value field: -![img41 alt-text#center](figures/41.png) +![img41 alt-text#center](figures/41.webp) 6. Click **Apply** to add the setting. 7. Click **Apply** at the bottom to apply changes. Then, confirm to save changes @@ -199,7 +199,7 @@ Once you've configured the connection string, test your deployed Azure Function 1. Return to the Overview page of your Azure Function App. 2. Click on your HTTP-triggered function (GetAverageTemperature). 3. Click Get function URL and copy the displayed URL (under default): -![img42 alt-text#center](figures/42.png) +![img42 alt-text#center](figures/42.webp) 4. Open this URL in your web browser. 5. Start your IoT simulator to begin streaming telemetry data to Cosmos DB. 6. Refresh or access the function URL again, and you should see the calculated average temperature displayed: diff --git a/content/learning-paths/iot/azure-iot/device_registration.md b/content/learning-paths/iot/azure-iot/device_registration.md index 7e3fcdaca9..b812331919 100644 --- a/content/learning-paths/iot/azure-iot/device_registration.md +++ b/content/learning-paths/iot/azure-iot/device_registration.md @@ -169,15 +169,15 @@ To connect the Python application you developed earlier to Azure IoT Hub, follow 1. Register a Device on Azure IoT Hub: * Open the Azure Portal, go to your IoT Hub, and click **Devices** under **Device management**: -![img6 alt-text#center](figures/06.png) +![img6 alt-text#center](figures/06.webp) * Click **Add Device**, enter a device ID (for example, "arm64Device01"), and leave the authentication type as **Symmetric key**: -![img7 alt-text#center](figures/07.png) +![img7 alt-text#center](figures/07.webp) * Click **Save**. 2. Next, you’ll need to retrieve the connection string to integrate your Python application with Azure IoT Hub. * From the device list, select your newly-created device, "arm64Device01". * Copy the **Primary connection string** from the device details page. You’ll need this connection string to authenticate your Python application when connecting and streaming telemetry data. -![img8 alt-text#center](figures/08.png) +![img8 alt-text#center](figures/08.webp) Ensure this connection string is stored securely, as it provides authentication credentials for your device. diff --git a/content/learning-paths/iot/azure-iot/figures/02.png b/content/learning-paths/iot/azure-iot/figures/02.png deleted file mode 100644 index 9be7f5d23f..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/02.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/02.webp b/content/learning-paths/iot/azure-iot/figures/02.webp new file mode 100644 index 0000000000..051d674d54 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/02.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/05.png b/content/learning-paths/iot/azure-iot/figures/05.png deleted file mode 100644 index 26b59136da..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/05.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/05.webp b/content/learning-paths/iot/azure-iot/figures/05.webp new file mode 100644 index 0000000000..97be45976f Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/05.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/06.png b/content/learning-paths/iot/azure-iot/figures/06.png deleted file mode 100644 index e2cb00bbb9..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/06.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/06.webp b/content/learning-paths/iot/azure-iot/figures/06.webp new file mode 100644 index 0000000000..89b6c6279f Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/06.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/07.png b/content/learning-paths/iot/azure-iot/figures/07.png deleted file mode 100644 index b7723dcfc9..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/07.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/07.webp b/content/learning-paths/iot/azure-iot/figures/07.webp new file mode 100644 index 0000000000..93e653420d Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/07.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/08.png b/content/learning-paths/iot/azure-iot/figures/08.png deleted file mode 100644 index 3d84949c63..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/08.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/08.webp b/content/learning-paths/iot/azure-iot/figures/08.webp new file mode 100644 index 0000000000..fa63c568b8 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/08.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/09.png b/content/learning-paths/iot/azure-iot/figures/09.png deleted file mode 100644 index 554f0c6e34..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/09.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/09.webp b/content/learning-paths/iot/azure-iot/figures/09.webp new file mode 100644 index 0000000000..b5e70b8714 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/09.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/12.png b/content/learning-paths/iot/azure-iot/figures/12.png deleted file mode 100644 index de66df9318..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/12.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/12.webp b/content/learning-paths/iot/azure-iot/figures/12.webp new file mode 100644 index 0000000000..865e0d4838 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/12.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/13.png b/content/learning-paths/iot/azure-iot/figures/13.png deleted file mode 100644 index e1f51e4f42..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/13.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/13.webp b/content/learning-paths/iot/azure-iot/figures/13.webp new file mode 100644 index 0000000000..b6e30199de Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/13.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/14.png b/content/learning-paths/iot/azure-iot/figures/14.png deleted file mode 100644 index e8ef07b354..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/14.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/14.webp b/content/learning-paths/iot/azure-iot/figures/14.webp new file mode 100644 index 0000000000..4b24f2cb10 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/14.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/16.png b/content/learning-paths/iot/azure-iot/figures/16.png deleted file mode 100644 index bd98921c51..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/16.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/16.webp b/content/learning-paths/iot/azure-iot/figures/16.webp new file mode 100644 index 0000000000..0dd53b7479 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/16.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/17.png b/content/learning-paths/iot/azure-iot/figures/17.png deleted file mode 100644 index 4df5c42524..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/17.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/17.webp b/content/learning-paths/iot/azure-iot/figures/17.webp new file mode 100644 index 0000000000..33d9c027e4 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/17.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/18.png b/content/learning-paths/iot/azure-iot/figures/18.png deleted file mode 100644 index 9078556baa..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/18.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/18.webp b/content/learning-paths/iot/azure-iot/figures/18.webp new file mode 100644 index 0000000000..5e569289a8 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/18.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/19.png b/content/learning-paths/iot/azure-iot/figures/19.png deleted file mode 100644 index e7edd6d92f..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/19.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/19.webp b/content/learning-paths/iot/azure-iot/figures/19.webp new file mode 100644 index 0000000000..aab7f7cc4b Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/19.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/20.png b/content/learning-paths/iot/azure-iot/figures/20.png deleted file mode 100644 index 00d2fb6a29..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/20.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/20.webp b/content/learning-paths/iot/azure-iot/figures/20.webp new file mode 100644 index 0000000000..dbdae80ea0 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/20.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/21.png b/content/learning-paths/iot/azure-iot/figures/21.png deleted file mode 100644 index d5b05befc7..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/21.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/21.webp b/content/learning-paths/iot/azure-iot/figures/21.webp new file mode 100644 index 0000000000..e37faeb6c2 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/21.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/22.png b/content/learning-paths/iot/azure-iot/figures/22.png deleted file mode 100644 index c30cbecd4b..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/22.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/22.webp b/content/learning-paths/iot/azure-iot/figures/22.webp new file mode 100644 index 0000000000..39a021c5b8 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/22.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/23.png b/content/learning-paths/iot/azure-iot/figures/23.png deleted file mode 100644 index be7c334707..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/23.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/23.webp b/content/learning-paths/iot/azure-iot/figures/23.webp new file mode 100644 index 0000000000..6a58f92783 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/23.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/24.png b/content/learning-paths/iot/azure-iot/figures/24.png deleted file mode 100644 index 8bfaffd4cc..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/24.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/24.webp b/content/learning-paths/iot/azure-iot/figures/24.webp new file mode 100644 index 0000000000..8fac5e4e5d Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/24.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/25.png b/content/learning-paths/iot/azure-iot/figures/25.png deleted file mode 100644 index d591132b4b..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/25.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/25.webp b/content/learning-paths/iot/azure-iot/figures/25.webp new file mode 100644 index 0000000000..1b87ecb4e0 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/25.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/26.png b/content/learning-paths/iot/azure-iot/figures/26.png deleted file mode 100644 index 291e58ab3f..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/26.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/26.webp b/content/learning-paths/iot/azure-iot/figures/26.webp new file mode 100644 index 0000000000..29eb4c5298 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/26.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/27.png b/content/learning-paths/iot/azure-iot/figures/27.png deleted file mode 100644 index 35ac504298..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/27.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/27.webp b/content/learning-paths/iot/azure-iot/figures/27.webp new file mode 100644 index 0000000000..88381034a2 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/27.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/29.png b/content/learning-paths/iot/azure-iot/figures/29.png deleted file mode 100644 index 3879728434..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/29.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/29.webp b/content/learning-paths/iot/azure-iot/figures/29.webp new file mode 100644 index 0000000000..7f1108277d Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/29.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/30.png b/content/learning-paths/iot/azure-iot/figures/30.png deleted file mode 100644 index c5777a8cc5..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/30.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/30.webp b/content/learning-paths/iot/azure-iot/figures/30.webp new file mode 100644 index 0000000000..ce88b3b7ad Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/30.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/31.png b/content/learning-paths/iot/azure-iot/figures/31.png deleted file mode 100644 index bfdd84141b..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/31.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/31.webp b/content/learning-paths/iot/azure-iot/figures/31.webp new file mode 100644 index 0000000000..fc9e528a18 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/31.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/32.png b/content/learning-paths/iot/azure-iot/figures/32.png deleted file mode 100644 index 6253ca2376..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/32.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/32.webp b/content/learning-paths/iot/azure-iot/figures/32.webp new file mode 100644 index 0000000000..c9006e6065 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/32.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/33.png b/content/learning-paths/iot/azure-iot/figures/33.png deleted file mode 100644 index 6d4c37e058..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/33.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/33.webp b/content/learning-paths/iot/azure-iot/figures/33.webp new file mode 100644 index 0000000000..3fd6ca37b9 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/33.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/34.png b/content/learning-paths/iot/azure-iot/figures/34.png deleted file mode 100644 index 7cee58606c..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/34.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/34.webp b/content/learning-paths/iot/azure-iot/figures/34.webp new file mode 100644 index 0000000000..b3993445c0 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/34.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/35.png b/content/learning-paths/iot/azure-iot/figures/35.png deleted file mode 100644 index 328f441531..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/35.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/35.webp b/content/learning-paths/iot/azure-iot/figures/35.webp new file mode 100644 index 0000000000..036290dc68 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/35.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/36.png b/content/learning-paths/iot/azure-iot/figures/36.png deleted file mode 100644 index 742f1241f9..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/36.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/36.webp b/content/learning-paths/iot/azure-iot/figures/36.webp new file mode 100644 index 0000000000..e59aa1da4d Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/36.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/40.png b/content/learning-paths/iot/azure-iot/figures/40.png deleted file mode 100644 index 86d1a6846e..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/40.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/40.webp b/content/learning-paths/iot/azure-iot/figures/40.webp new file mode 100644 index 0000000000..60c8a991d1 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/40.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/41.png b/content/learning-paths/iot/azure-iot/figures/41.png deleted file mode 100644 index 75c68f9fa1..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/41.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/41.webp b/content/learning-paths/iot/azure-iot/figures/41.webp new file mode 100644 index 0000000000..39449a07c2 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/41.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/42.png b/content/learning-paths/iot/azure-iot/figures/42.png deleted file mode 100644 index de9106e6c5..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/42.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/42.webp b/content/learning-paths/iot/azure-iot/figures/42.webp new file mode 100644 index 0000000000..6fb7ff930d Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/42.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/45.png b/content/learning-paths/iot/azure-iot/figures/45.png deleted file mode 100644 index 07dd1d9839..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/45.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/45.webp b/content/learning-paths/iot/azure-iot/figures/45.webp new file mode 100644 index 0000000000..d07a97c01e Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/45.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/47.png b/content/learning-paths/iot/azure-iot/figures/47.png deleted file mode 100644 index 1ba6ec0b4b..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/47.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/47.webp b/content/learning-paths/iot/azure-iot/figures/47.webp new file mode 100644 index 0000000000..fee940bfad Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/47.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/48.png b/content/learning-paths/iot/azure-iot/figures/48.png deleted file mode 100644 index 4ebfaaba49..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/48.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/48.webp b/content/learning-paths/iot/azure-iot/figures/48.webp new file mode 100644 index 0000000000..ba8e1e9274 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/48.webp differ diff --git a/content/learning-paths/iot/azure-iot/figures/49.png b/content/learning-paths/iot/azure-iot/figures/49.png deleted file mode 100644 index 0527909e9c..0000000000 Binary files a/content/learning-paths/iot/azure-iot/figures/49.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/figures/49.webp b/content/learning-paths/iot/azure-iot/figures/49.webp new file mode 100644 index 0000000000..834f591ea1 Binary files /dev/null and b/content/learning-paths/iot/azure-iot/figures/49.webp differ diff --git a/content/learning-paths/iot/azure-iot/image.png b/content/learning-paths/iot/azure-iot/image.png deleted file mode 100644 index dfd41ec262..0000000000 Binary files a/content/learning-paths/iot/azure-iot/image.png and /dev/null differ diff --git a/content/learning-paths/iot/azure-iot/image.webp b/content/learning-paths/iot/azure-iot/image.webp new file mode 100644 index 0000000000..6bcb5b038c Binary files /dev/null and b/content/learning-paths/iot/azure-iot/image.webp differ diff --git a/content/learning-paths/iot/azure-iot/iot-hub.md b/content/learning-paths/iot/azure-iot/iot-hub.md index 30313d6570..6480e4351d 100644 --- a/content/learning-paths/iot/azure-iot/iot-hub.md +++ b/content/learning-paths/iot/azure-iot/iot-hub.md @@ -34,7 +34,7 @@ Start by creating an Azure IoT Hub by following these steps: * In the **Search resources, services, and docs** search box, type “iot hub” and press **Enter**. * From the search results, select the IoT Hub icon, as shown below: -![img2 alt-text#center](figures/02.png "Select IoT Hub icon.") +![img2 alt-text#center](figures/02.webp "Select IoT Hub icon.") 3. Click the **Create** button: ![img3 alt-text#center](figures/03.png "Select the Create button.") @@ -63,7 +63,7 @@ Start by creating an Azure IoT Hub by following these steps: * Click **Go to resource** to open the newly-created Azure IoT Hub. 12. Check IoT Hub Overview and Details: * From the IoT Hub overview page, verify important details such as the hub name, region, status, and hostname, which you’ll use to connect devices: -![img5 alt-text#center](figures/05.png "Verify IoT Hub overview") +![img5 alt-text#center](figures/05.webp "Verify IoT Hub overview") ## Next steps Now that your Azure IoT Hub is ready, you can proceed to register and configure your IoT devices. In the next step, you’ll learn how to register an Arm64-based IoT device and start streaming data using Python and Azure IoT SDK. diff --git a/content/learning-paths/iot/azure-iot/monitoring.md b/content/learning-paths/iot/azure-iot/monitoring.md index 4da27a2687..184ead66b3 100644 --- a/content/learning-paths/iot/azure-iot/monitoring.md +++ b/content/learning-paths/iot/azure-iot/monitoring.md @@ -59,9 +59,9 @@ For Python functions on Linux-based plans, local development and deployment repr You will start by creating an Azure Function App, in which you will create an Azure Function that regularly queries temperature data from Cosmos DB. In the next step, you will add the capability to send notifications, whenever the temperature reading exceeds a predefined threshold. Proceed as follows: 1. Sign in to the Azure Portal. 2. Click **Create a resource**, type “Function App”, and select it: -![img24 alt-text#center](figures/24.png) +![img24 alt-text#center](figures/24.webp) 3. Click **Create**, then select Consumption as a hosting option: -![img25 alt-text#center](figures/25.png) +![img25 alt-text#center](figures/25.webp) 4. Provide the required details: * Subscription: Your Azure subscription. * Resource Group: Select your existing IoT resource group. @@ -72,7 +72,7 @@ You will start by creating an Azure Function App, in which you will create an Az * Operating System: Select Linux as Windows is unavailable for Python. 5. Click Review + Create, and then Create. -![img26 alt-text#center](figures/26.png) +![img26 alt-text#center](figures/26.webp) ## Install Prerequisites Before writing the code make sure you have the following tools installed: @@ -98,7 +98,7 @@ Ensure you also see a v4.x.x output, indicating compatibility with Python v2 mod Follow these steps to create an Azure Function locally using Visual Studio Code: 1. In Visual Studio Code, click View->Command Palette... 2. Type "Create Function": -![img27 alt-text#center](figures/27.png) +![img27 alt-text#center](figures/27.webp) 3. Select Azure Functions: Create Function... 4. Select folder for your new function. For example create a new folder `Arm.AzureIoT.AzureFunctions` 5. Visual Studio Code will display the wizard, which enables you to configure your function: @@ -175,7 +175,7 @@ func start You should then see the following logs, depending on the generated temperature values: -![img29 alt-text#center](figures/29.png) +![img29 alt-text#center](figures/29.webp) ## Monitoring and Notifications In this section, you will extend your existing Azure Function to send email notifications using `SendGrid` whenever the temperature exceeds the defined threshold @@ -184,23 +184,23 @@ In this section, you will extend your existing Azure Function to send email noti Follow these steps to create a SendGrid account: 1. Sign in to the Azure Portal. 2. Click “Create a resource” and search for SendGrid. -![img30 alt-text#center](figures/30.png) +![img30 alt-text#center](figures/30.webp) 3. Select Twilio SendGrid, choose the Free 100 (2022) plan, and then click Subscribe. 4. Provide the following details: * Subscription: Select your Azure subscription. * Resource group: Choose your existing IoT project resource group. * Name: Enter a descriptive name (e.g., iot-alerts-sendgrid). -![img31 alt-text#center](figures/31.png) +![img31 alt-text#center](figures/31.webp) 5. Click Review + subscribe and then Subscribe. 6. On the next screen, click Configure account now: -![img32 alt-text#center](figures/32.png) +![img32 alt-text#center](figures/32.webp) 7. Accept any permissions required by SendGrid, and then enter your details to create a sender identity: -![img33 alt-text#center](figures/33.png) +![img33 alt-text#center](figures/33.webp) 8. Fill out the required details, such as your name and email address. 9. After the sender identity is verified, click API Keys in the left menu: -![img34 alt-text#center](figures/34.png) +![img34 alt-text#center](figures/34.webp) 10. Click Create API Key. In the popup window, enter a key name (e.g., iot-api-key), and select Full Access. -![img35 alt-text#center](figures/35.png) +![img35 alt-text#center](figures/35.webp) 11. Copy the generated API key securely. You will not be able to retrieve it later. ### Configure SendGrid API Key in your Azure Function diff --git a/content/learning-paths/iot/azure-iot/portal.md b/content/learning-paths/iot/azure-iot/portal.md index 6f966985e6..26dc8215d3 100644 --- a/content/learning-paths/iot/azure-iot/portal.md +++ b/content/learning-paths/iot/azure-iot/portal.md @@ -152,21 +152,21 @@ You will now deploy the web portal you have created to Azure Blob Storage, makin 2. Create a Storage Account: * Click **Create a resource**. * Search for “Storage account”. -![img45 alt-text#center](figures/45.png) +![img45 alt-text#center](figures/45.webp) * Click **Create**. ![img46 alt-text#center](figures/46.png) 3. Provide the required details: * Subscription, resource group, and storage account name (e.g. armiotstorage). * For Primary service, choose **Azure Blob Storage** or **Azure Data Lake Storage Gen 2**. * Select **Standard performance** and **Locally-redundant storage (LRS)**. -![img47 alt-text#center](figures/47.png) +![img47 alt-text#center](figures/47.webp) * Click "Review + create", then "Create". 3. Enable Static Website Hosting: * Navigate to your newly created storage account. * Under Data management, click **Static website**. * Select **Enabled**. * Set index.html as the index document name. -![img48 alt-text#center](figures/48.png) +![img48 alt-text#center](figures/48.webp) * Click **Save**. After saving, Azure provides you with a URL like: https://.z22.web.core.windows.net/. @@ -179,7 +179,7 @@ You can upload your website files directly using the Azure Portal or via Azure S 3. Open the container named ”$web” (created automatically when enabling static websites). 4. Click **Upload** and select your three website files (index.html, main.js, styles.css), and upload them. -![img49 alt-text#center](figures/49.png) +![img49 alt-text#center](figures/49.webp) ### Verify the Deployment After uploading your files, open a browser and navigate to https://.z22.web.core.windows.net/. diff --git a/content/learning-paths/iot/azure-iot/stream-analytics-dynamo-db.md b/content/learning-paths/iot/azure-iot/stream-analytics-dynamo-db.md index b51a53b308..455cf82cef 100644 --- a/content/learning-paths/iot/azure-iot/stream-analytics-dynamo-db.md +++ b/content/learning-paths/iot/azure-iot/stream-analytics-dynamo-db.md @@ -51,11 +51,11 @@ You will now configure the stream analytics job such that the telemetry data wil Start by creating the Create Cosmos DB account and database: 1. Log in to the Azure Portal. 2. Select **Create a resource**, search for “Azure Cosmos DB”, and click **Create**: -![img14 alt-text#center](figures/14.png) +![img14 alt-text#center](figures/14.webp) ![img15 alt-text#center](figures/15.png) 3. Select Azure Cosmos DB for NoSQL, then click **Create**. -![img16 alt-text#center](figures/16.png) +![img16 alt-text#center](figures/16.webp) 4. Fill in the required details: * Subscription: select your subscription. @@ -66,7 +66,7 @@ Start by creating the Create Cosmos DB account and database: * Select serverless as capacity mode. * Apply Free Tier Discount: apply * Check Limit total account throughput. -![img17 alt-text#center](figures/17.png) +![img17 alt-text#center](figures/17.webp) 5. Click **Review + create**, then click **Create**. Once the deployment completes: @@ -75,16 +75,16 @@ Once the deployment completes: * Select an appropriate partition key (recommended: /deviceId). * Enable analytical store capability to perform near real-time analytics on your operational data, without impacting the performance of transactional workloads: Off. * Click **OK**. -![img18 alt-text#center](figures/18.png) +![img18 alt-text#center](figures/18.webp) ### Modify Stream Analytics Job Now update your query in Stream Analytics to write data from IoT Hub directly into Cosmos DB: 1. Go to `IoTStreamAnalyticsJob`. 2. Under Job topology, select **Outputs**. 3. Click **Add output**, and select **Cosmos DB**: -![img19 alt-text#center](figures/19.png) +![img19 alt-text#center](figures/19.webp) 4. In the Cosmos DB pane, type "CosmosDBOutput" for the alias name, leave other fields at their default values, and click the **Save** button: -![img20 alt-text#center](figures/20.png) +![img20 alt-text#center](figures/20.webp) ### Update Your Stream Analytics Query Now that you have the output configured, lets modify the query. To do so, select Query under Job topology. Then, modify your existing query to explicitly specify your Cosmos DB output alias: @@ -102,16 +102,16 @@ FROM IoTHubInput ``` -![img21 alt-text#center](figures/21.png) +![img21 alt-text#center](figures/21.webp) Afterwards, click **Start job**, and then **Start**: -![img22 alt-text#center](figures/22.png) +![img22 alt-text#center](figures/22.webp) ## Verify data flow in Cosmos DB To verify that your data pipeline is working correctly, first start your Python IoT simulator application `iot_simulator.py`. Ensure it's actively sending telemetry data. Next, open the Azure Portal and navigate to your Azure Cosmos DB resource. Under Data Explorer, select your database and then your container (e.g., SensorReadings). Once selected, click **Items** to view your stored data. Sensor readings streamed from your IoT device will appear on the right-hand side of the Data Explorer interface, similar to the screenshot below: -![img23 alt-text#center](figures/23.png) +![img23 alt-text#center](figures/23.webp) Azure Cosmos DB stores data as JSON documents within a NoSQL (document-based) structure, making it ideal for flexible and dynamic data, such as IoT telemetry. Each record (also called a document) is stored in a container (or collection) that doesn’t enforce a rigid schema. As a result, each document can contain different fields without requiring schema changes or migrations, which is particularly valuable when collecting data from diverse IoT devices with evolving attributes. diff --git a/content/learning-paths/iot/azure-iot/stream-analytics.md b/content/learning-paths/iot/azure-iot/stream-analytics.md index fbac8d5676..a385a6e459 100644 --- a/content/learning-paths/iot/azure-iot/stream-analytics.md +++ b/content/learning-paths/iot/azure-iot/stream-analytics.md @@ -22,7 +22,7 @@ To process and analyze the telemetry data you are streaming to Azure IoT Hub, yo 1. Sign in to the Azure Portal. 2. Click **Create a resource**, type “Stream Analytics job” into the search box, and press **Enter**. 3. From the search results, select **Stream Analytics job**, then click **Create**: -![img9 alt-text#center](figures/09.png) +![img9 alt-text#center](figures/09.webp) 4. Provide the necessary information: * Subscription: choose the Azure subscription you want to use for this job. * Resource group: select the resource group you previously created (e.g., your IoT project's resource group). @@ -54,7 +54,7 @@ After successfully creating the Stream Analytics job, you will need to configure * Encoding: Choose **UTF-8**. * Event compression type: Set this to None. -![img12 alt-text#center](figures/12.png) +![img12 alt-text#center](figures/12.webp) 5. After entering these details, carefully verify them for accuracy and completeness. Click **Save** to apply the changes and successfully link your Azure IoT Hub as the input source for your Stream Analytics job. @@ -80,7 +80,7 @@ This straightforward query selects all relevant fields (deviceId, temperature, p Before running this query, ensure your Python IoT simulator `iot_simulator.py` is actively sending telemetry data. After the simulator begins transmitting data, you can test and verify your Stream Analytics query within the Azure Portal using the built-in Test query feature. Doing this allows you to view live-streamed sensor data in real-time and confirm that your streaming pipeline is working as expected: -![img13 alt-text#center](figures/13.png) +![img13 alt-text#center](figures/13.webp) Constructing queries in Azure Stream Analytics involves using a straightforward SQL-like syntax specifically optimized for real-time stream processing. Typically, a query contains a `SELECT` statement to specify which fields from the incoming telemetry data to process, and a `FROM` statement to indicate the source stream. Queries can be expanded with advanced features such as filtering, aggregations, and temporal window functions to handle more complex scenarios. diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/2_gb10_llamacpp_gpu.md b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/2_gb10_llamacpp_gpu.md index 41b854a087..dd46ddf024 100644 --- a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/2_gb10_llamacpp_gpu.md +++ b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/2_gb10_llamacpp_gpu.md @@ -183,7 +183,7 @@ This command displays GPU utilization, memory usage, temperature, and power cons The following screenshot shows GPU utilization during TinyLlama inference on DGX Spark: -![nvtop terminal interface displaying real-time GPU metrics, including GPU utilization, memory usage, temperature, power consumption, and active processes for the NVIDIA GB10 GPU during model inference on DGX Spark. alt-text#center](nvtop.png "TinyLlama GPU Utilization") +![nvtop terminal interface displaying real-time GPU metrics, including GPU utilization, memory usage, temperature, power consumption, and active processes for the NVIDIA GB10 GPU during model inference on DGX Spark. alt-text#center](nvtop.webp "TinyLlama GPU Utilization") The nvtop interface shows: diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/3_gb10_llamacpp_cpu.md b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/3_gb10_llamacpp_cpu.md index b7c87b35ed..944f942fa2 100644 --- a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/3_gb10_llamacpp_cpu.md +++ b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/3_gb10_llamacpp_cpu.md @@ -121,7 +121,7 @@ htop ``` The following screenshot shows CPU utilization and thread activity during TinyLlama inference on DGX Spark, confirming full multi-core engagement: -![htop display showing 20 Grace CPU cores at 75-85% utilization during TinyLlama inference with OpenMP threading alt-text#center](htop.png "TinyLlama CPU utilization") +![htop display showing 20 Grace CPU cores at 75-85% utilization during TinyLlama inference with OpenMP threading alt-text#center](htop.webp "TinyLlama CPU utilization") The `htop` interface shows: diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.png b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.png deleted file mode 100644 index 0bcd461ce8..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.webp b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.webp new file mode 100644 index 0000000000..ac912b30d5 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/htop.webp differ diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.png b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.png deleted file mode 100644 index dbdb78ef15..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.webp b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.webp new file mode 100644 index 0000000000..95024cb1ea Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/dgx_spark_llamacpp/nvtop.webp differ diff --git a/content/learning-paths/laptops-and-desktops/electron/figures/02.png b/content/learning-paths/laptops-and-desktops/electron/figures/02.png deleted file mode 100644 index 34bb9bbf94..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/electron/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/electron/figures/02.webp b/content/learning-paths/laptops-and-desktops/electron/figures/02.webp new file mode 100644 index 0000000000..4ee241a633 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/electron/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/electron/figures/03.png b/content/learning-paths/laptops-and-desktops/electron/figures/03.png deleted file mode 100644 index 76f24a268d..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/electron/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/electron/figures/03.webp b/content/learning-paths/laptops-and-desktops/electron/figures/03.webp new file mode 100644 index 0000000000..cae9a63e2d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/electron/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/electron/how-to-1.md b/content/learning-paths/laptops-and-desktops/electron/how-to-1.md index 2d8c0a1377..9cc294f2d4 100644 --- a/content/learning-paths/laptops-and-desktops/electron/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/electron/how-to-1.md @@ -218,7 +218,7 @@ npm start The application window appears. Then click the Fetch data button and you will see the list of posts: -![fig2](figures/02.png) +![fig2](figures/02.webp) ## Styling an application The application works fine. However, it uses default styles and does not look very pretty. To change this you can use cascading style sheets (CSS) as per web applications. To style the application, proceed as follows: @@ -302,7 +302,7 @@ body { After the application launches, click the **Fetch data** button and you will see the following result: -![fig3](figures/03.png) +![fig3](figures/03.webp) ## Checkpoint You now have the application up and running. By default, it runs using the Arm64 architecture because we used Node.js for Arm64. To confirm this, open the Task Manager, click the Details tab and look for **electron.exe** processes: diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.png b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.png deleted file mode 100644 index e858ff7570..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.webp b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.webp new file mode 100644 index 0000000000..38b8964116 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_2.webp differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.png b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.png deleted file mode 100644 index 091bbcf465..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.webp b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.webp new file mode 100644 index 0000000000..02f0d01d7b Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_3.webp differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.png b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.png deleted file mode 100644 index 37f5ec96c4..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.webp b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.webp new file mode 100644 index 0000000000..cad4edcfe7 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_4.webp differ diff --git a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_llvm.md b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_llvm.md index 57caf69c84..162b1c194a 100644 --- a/content/learning-paths/laptops-and-desktops/llvm_putty/putty_llvm.md +++ b/content/learning-paths/laptops-and-desktops/llvm_putty/putty_llvm.md @@ -76,19 +76,19 @@ This opens up the `CMake Settings` dialog. You can now add a new configuration to build PuTTY for Arm. This configuration uses the LLVM toolchain installed by the Visual Studio Installer. -![putty_2](putty_2.png) +![putty_2](putty_2.webp) 6. Add a new configuration In `CMake Settings`, click on `+` sign to `Add a New Configuration` and select `arm64-Clang-Debug`. -![putty_3](putty_3.png) +![putty_3](putty_3.webp) 7. Change the toolset With the `arm64-Clang-Debug` configuration selected, change the `Toolset` from the drop-down menu to `clang_cl_arm64`. -![putty_4](putty_4.png) +![putty_4](putty_4.webp) 8. Generate the CMake configuration diff --git a/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.jpg b/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.jpg deleted file mode 100644 index 4ee14743d0..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.jpg and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.webp b/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.webp new file mode 100644 index 0000000000..ec71fc3ed2 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/pinebook-pro/i3.webp differ diff --git a/content/learning-paths/laptops-and-desktops/pinebook-pro/neovim.md b/content/learning-paths/laptops-and-desktops/pinebook-pro/neovim.md index ff9b3aa4f7..d0831b34f8 100644 --- a/content/learning-paths/laptops-and-desktops/pinebook-pro/neovim.md +++ b/content/learning-paths/laptops-and-desktops/pinebook-pro/neovim.md @@ -236,4 +236,4 @@ A good place to start is [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts). Neovim is a great option for the Pinebook Pro running the i3 window manager. -![i3 window manager alt-text#center](i3.jpg) +![i3 window manager alt-text#center](i3.webp) diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/create-self-hosted-runner-github.md b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/create-self-hosted-runner-github.md index fc85d4001f..d3585ba192 100644 --- a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/create-self-hosted-runner-github.md +++ b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/create-self-hosted-runner-github.md @@ -11,13 +11,13 @@ layout: "learningpathall" ## Create the Self-Hosted Runner in GitHub Go to the Actions tab, and under Management, click on Runners. If you do not see the Actions tab, navigate to Settings > Actions and select Allow all actions and reusable workflows. This will display the following window: -![img8](figures/08.png) +![img8](figures/08.webp) Then, click on the 'New runner' button, followed by 'New self-hosted runner'. In the 'Add new self-hosted runner' section, proceed as follows: * Select Linux for the operating system. * Choose ARM64 for the architecture -![img9](figures/09.png) +![img9](figures/09.webp) Next, execute the following instructions on your machine: @@ -100,6 +100,6 @@ Current runner version: '2.314.1' The runner will now be visible in the GitHub actions: -![img10](figures/10.png) +![img10](figures/10.webp) You have successfully prepared all the tools needed to run the CI/CD pipeline on the self-hosted runner. In the next step, you will test it. \ No newline at end of file diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.png deleted file mode 100644 index 68c37566d5..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.webp new file mode 100644 index 0000000000..f59bb9a951 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.png deleted file mode 100644 index 2fded24a42..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.webp new file mode 100644 index 0000000000..934b64a8a2 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.png deleted file mode 100644 index d55a2f0383..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.webp new file mode 100644 index 0000000000..3c0fc953ee Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.png deleted file mode 100644 index 5834a2ea2e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.webp new file mode 100644 index 0000000000..c8b80d5dda Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.png deleted file mode 100644 index 39b5735ab3..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.webp new file mode 100644 index 0000000000..801ed01263 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.png deleted file mode 100644 index 76f036214d..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.webp new file mode 100644 index 0000000000..f97d10f925 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.png deleted file mode 100644 index 4e1b1d5344..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.webp new file mode 100644 index 0000000000..808dab469e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/07.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.png deleted file mode 100644 index a488862a49..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.webp new file mode 100644 index 0000000000..5219f1e2d0 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.png deleted file mode 100644 index e02a541105..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.webp new file mode 100644 index 0000000000..bfddbc897e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/09.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.png deleted file mode 100644 index c6d62574be..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.webp new file mode 100644 index 0000000000..492be5940c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/10.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.png deleted file mode 100644 index 2ffd9f1c2e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.webp new file mode 100644 index 0000000000..2d2167b0bf Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/11.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.png deleted file mode 100644 index dc982d1bad..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.webp new file mode 100644 index 0000000000..8f5e0f505d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/12.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.png deleted file mode 100644 index eb14ac4995..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.webp new file mode 100644 index 0000000000..32576c44e4 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/13.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.png b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.png deleted file mode 100644 index 3b7e6d3db7..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.webp b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.webp new file mode 100644 index 0000000000..5aee8f61b4 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/figures/14.webp differ diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/how-to-2.md b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/how-to-2.md index 19899b926c..3611e2b445 100644 --- a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/how-to-2.md @@ -100,21 +100,21 @@ To run the above pipeline, you need to make modifications to the source code and This change updates the page's main header to greet Arm developers specifically. -![img11](figures/11.png) +![img11](figures/11.webp) 3. Below the file editor, find and click the Commit changes button. This action opens the Commit changes window. 4. In the Commit changes window, you have the option to add a commit message describing your changes. After reviewing your message, click Commit changes to finalize the update: -![img12](figures/12.png) +![img12](figures/12.webp) Committing these changes to the main branch will automatically trigger the CI/CD pipeline. You can monitor the progress of this pipeline under the Actions tab of your GitHub repository: -![img13](figures/13.png) +![img13](figures/13.webp) Upon completion of the second job, which builds and pushes the Docker image, you can find the updated Docker image in your Docker Hub repository. The new image will be tagged as latest and will reflect the changes made to the index.cshtml file: -![img14](figures/14.png) +![img14](figures/14.webp) This process demonstrates how code changes in your repository can seamlessly integrate with GitHub Actions to automate the build and deployment of your application, including updating Docker images in Docker Hub. diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/prepare-github-repo.md b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/prepare-github-repo.md index 424d5eab49..339bd81a8c 100644 --- a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/prepare-github-repo.md +++ b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/prepare-github-repo.md @@ -14,7 +14,7 @@ Now, you will prepare your GitHub repository as follows: 1. Go to GitHub and log in with your account credentials. 2. In the top right corner, click the + dropdown and select Import repository. -![img5](figures/05.png) +![img5](figures/05.webp) 3. In the Import your project to GitHub section: * Paste the following link https://github.com/dawidborycki/arm-lp-ci-cd-net.git into the 'Your old repository's clone URL' field. @@ -23,14 +23,14 @@ Now, you will prepare your GitHub repository as follows: After the import is complete, you will create two secrets that will store your Docker username and token. Proceed as follows 1. Go to your repository settings, and on the left, scroll down to Secrets and variables, then click Actions: -![img6](figures/06.png) +![img6](figures/06.webp) 2. Under Actions secrets and variables, click the New repository secret button. This opens the New secret window, where you should configure the secret as follows: * Name: DOCKER_USERNAME * Value: * Click the Add secret button -![img7](figures/07.png) +![img7](figures/07.webp) 3. Similarly, create another secret: * Name: DOCKER_PASSWORD diff --git a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/set-up-docker-repo.md b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/set-up-docker-repo.md index cdddbf8c5a..00a6c84c5d 100644 --- a/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/set-up-docker-repo.md +++ b/content/learning-paths/laptops-and-desktops/self_hosted_cicd_github/set-up-docker-repo.md @@ -11,21 +11,21 @@ First, create a repository on DockerHub by following these steps: 1. Log in to DockerHub, then click on *Repositories* at the top. 2. Under *Repositories*, click the *Create repository* button: -![img1](figures/01.png) +![img1](figures/01.webp) 3. In the *Create repository* window, set the repository name to sampleapp and change the repository visibility to *Private*. -![img2](figures/02.png) +![img2](figures/02.webp) 4. Click the *Create* button. This will create the repository and redirect you back to the repositories list. Note the Docker push command. It should look like: docker push /sampleapp:tagname -![img3](figures/03.png) +![img3](figures/03.webp) Now you will need to generate the access token to enable the workflow to authenticate to DockerHub. To create the access token: 1. Click on your username in the top-right corner of the Docker Hub site. 2. From the dropdown menu, select My Account, and then click the Security tab on the left: -![img4](figures/04.png) +![img4](figures/04.webp) 3. Click the New Access Token button. This opens the New Access Token window, in which: * Type ci-cd for the token name. diff --git a/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.png b/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.png deleted file mode 100644 index 4f31c8b4f5..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.webp b/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.webp new file mode 100644 index 0000000000..411cdd6932 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win11-vm-automation/images/win11arm.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-execution-4.md b/content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-execution-4.md index d0449dfd63..c053b7d3f9 100644 --- a/content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-execution-4.md +++ b/content/learning-paths/laptops-and-desktops/win11-vm-automation/vm-execution-4.md @@ -22,7 +22,7 @@ The script performs three key steps. It does the following: When the virtual machine starts you will see it on your Linux desktop: -![Screenshot showing the Windows 11 desktop running in a virtual machine on an Arm-based Linux system. The Windows Start menu and taskbar are visible, confirming successful VM launch and RDP connection. alt-text#center](./images/win11arm.png "Windows 11 Arm VM desktop") +![Screenshot showing the Windows 11 desktop running in a virtual machine on an Arm-based Linux system. The Windows Start menu and taskbar are visible, confirming successful VM launch and RDP connection. alt-text#center](./images/win11arm.webp "Windows 11 Arm VM desktop") ## What does the run script do? diff --git a/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.png b/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.png deleted file mode 100644 index 499ce84633..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.webp new file mode 100644 index 0000000000..9ab5f80516 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-1.md index 763e643ca2..9747e7cc58 100644 --- a/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-1.md @@ -25,7 +25,7 @@ The complete project code used in this learning path is hosted [here](https://gi ## Project Setup To set up the project, start by creating the dependencies (the DLLs). In this example you will use CMake in Visual Studio 2022 to create the base project for your dependencies. You can also use MS Build/Visual C++ project templates to compile to Arm64EC by adding the architecture to your build configuration. To access CMake, open Visual Studio 2022 and click Create a new project and look for CMake Project in the window that appears. -![fig1](figures/01.png) +![fig1](figures/01.webp) Then, click **Next** and set the following configurations: diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.png b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.png deleted file mode 100644 index 9de2e19301..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.webp new file mode 100644 index 0000000000..557f1f0a15 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.png b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.png deleted file mode 100644 index a761216690..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.webp new file mode 100644 index 0000000000..6d7a187bd0 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.png b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.png deleted file mode 100644 index 2cae7bfc5c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.webp new file mode 100644 index 0000000000..ebc865055f Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.png b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.png deleted file mode 100644 index d14a5969e9..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.webp b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.webp new file mode 100644 index 0000000000..5b14026f31 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_arm_qt/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_arm_qt/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_arm_qt/how-to-1.md index 66b2308216..b4faff2e39 100644 --- a/content/learning-paths/laptops-and-desktops/win_arm_qt/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_arm_qt/how-to-1.md @@ -19,19 +19,19 @@ You will need to install Qt on your Windows on Arm machine. Go to the Qt Group [ In the Qt Setup window select, as a minimum, Qt version 6.2. In this example, we use version 6.4. -![fig1](figures/01.png) +![fig1](figures/01.webp) ## Create the project After installation, open the Qt Creator, click Examples, select Qt6, and type “affine” in the search box. The list of examples should include one project: Affine Transformations. Click on it to make the source code available in Qt Creator. -![fig2](figures/02.png) +![fig2](figures/02.webp) {{% notice Note %}} If you are new to Qt Creator, consult the documentation for a quick introduction. Project files are on the left side, and double-clicking them opens them in the editor. The Run and Debug buttons are on the bottom left, or you can press F5 to run and debug your project and Ctrl + R to run it without the debugger. {{% /notice %}} Now build and run the app using default settings (F5 or Ctrl + R). After execution, the app should look like this: -![fig3](figures/03.png) +![fig3](figures/03.webp) The app continuously transforms the image of Tux (Linux's penguin character) by rotating, scaling, and shearing it. You can stop the animation by clicking Animate. It is active when the app runs inside the constructor of the XFormWidget. @@ -226,7 +226,7 @@ Now it's time to run the application using the AArch64 build. To do this, use th Start debugging by clicking on the green play icon. The application will launch: -![fig5](figures/05.png) +![fig5](figures/05.webp) Click **Run** to trigger the animation. The Tux image is transformed 10,000 times. The time needed for the transformations appears in the Application Output window at the bottom of the Qt Creator window. You must click Application Output or press Alt + 3 to view it: diff --git a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.png b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.png deleted file mode 100644 index 34f4149a9c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.webp new file mode 100644 index 0000000000..5a3566b019 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.png b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.png deleted file mode 100644 index e7b2351dc0..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.webp new file mode 100644 index 0000000000..870a73752a Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_asp_net8/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_asp_net8/how-to-2.md b/content/learning-paths/laptops-and-desktops/win_asp_net8/how-to-2.md index ef7fe63a28..078962258b 100644 --- a/content/learning-paths/laptops-and-desktops/win_asp_net8/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/win_asp_net8/how-to-2.md @@ -60,11 +60,11 @@ To test the POST method of the `IoTController` class, use curl, Postman, or Swag To access Swagger, type http://localhost:/swagger in the web browser's address bar. This URL takes you to the following screen: -![fig3](figures/03.png) +![fig3](figures/03.webp) Now, expand the **POST** section and click the **Try it out** button. The caption of this button will change to **Cancel**, and the **isActive** drop-down list becomes active. Set **isActive** to false, and then click **Execute**: -![fig4](figures/04.png) +![fig4](figures/04.webp) This action sends the **POST** request to **IoTController** and disables the emulator. All subsequent **GET** calls to the **IoTController** will return the last known sensor reading (which is the final reading generated before disabling the emulator). When you set **isActive** back to true and send the **GET** request to the web server, you will see the temperature setting update. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.png deleted file mode 100644 index bc2083dc7e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.webp new file mode 100644 index 0000000000..e1da2d7a19 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.png deleted file mode 100644 index 7ca257cd88..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.webp new file mode 100644 index 0000000000..2dda901883 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.png deleted file mode 100644 index 675782e02c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.webp new file mode 100644 index 0000000000..de7690c290 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.png deleted file mode 100644 index 49fea239c2..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.webp new file mode 100644 index 0000000000..d0e60aa12c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.png deleted file mode 100644 index 09961b5757..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.webp new file mode 100644 index 0000000000..e594051045 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.png deleted file mode 100644 index d4582a4bd7..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.webp new file mode 100644 index 0000000000..d02116857c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.png deleted file mode 100644 index 654e0e365a..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.webp new file mode 100644 index 0000000000..41b6fca40c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/07.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.png deleted file mode 100644 index 07abc28f95..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.webp new file mode 100644 index 0000000000..b3d5b1a6b3 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.png deleted file mode 100644 index 71b90601d7..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.webp new file mode 100644 index 0000000000..c849dddabe Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/figures/09.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-2.md b/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-2.md index 4605f8157a..8cc82dc2b9 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-2.md @@ -12,15 +12,15 @@ In this section, you connect the emulator to AWS IoT Core. ## Connecting the emulator Log in to the AWS Console at https://aws.amazon.com, and then search for IoT. From the list that appears, select **IoT Core**: -![fig1](figures/01.png) +![fig1](figures/01.webp) In the AWS IoT console, click **Connect one device**: -![fig2](figures/02.png) +![fig2](figures/02.webp) This will open the **Connect one device** wizard: -![fig3](figures/03.png) +![fig3](figures/03.webp) In the first step of this wizard, **Register and secure your device**, you can see the ping command, which you can use to ensure you can connect to AWS services. @@ -44,17 +44,17 @@ Note that the **a6t44uzbanvsz-ats.iot.eu-central-1.amazonaws.com** is your endpo Click the **Next** button. This takes you to the **Register and secure your device** step, in which you type **WeatherEmulator** under the **Thing** name: -![fig4](figures/04.png) +![fig4](figures/04.webp) Then, click the **Next** button, which opens the **Choose platform and SDK** window, in which you select: * **Windows** from the **Device platform operating system**. * **Node.js** from the **AWS IoT Device SDK**. -![fig5](figures/05.png) +![fig5](figures/05.webp) Afterwards, click the **Next** button, which takes you to the **Download connection kit** step, in which you click the **Download connection kit** button to get the zip with certificates and the sample code, which sends data to the AWS cloud: -![fig6](figures/06.png) +![fig6](figures/06.webp) After downloading the kit, click the **Next** button. This takes you to the **Run connection kit**, in which you click the **Continue** button. This takes you back to the AWS IoT screen. @@ -83,11 +83,11 @@ Before you can connect the device to the AWS IoT Core, you need to configure the To update the policy, under the AWS IoT console, click **Security** -> **Policies**: -![fig7](figures/07.png) +![fig7](figures/07.webp) There should be one policy, **WeatherEmulator-Policy**. Click that policy. This opens another view, in which you can see the policy details. In that view, click **Edit active version** button, which opens the Edit policy view: -![fig7](figures/08.png) +![fig7](figures/08.webp) Modify the first entry ('iot:Publish,iot:Receive,iot:PublishRetain') such that you replace the 'topic/sdk/test/js' with 'topic/*'. This will enable the application to publish and receive messages from any topic. Similarly, modify the second entry, and replace 'topicfilter/sdk/test/js' with 'topicfilter/*'. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-3.md b/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-3.md index 53ef18ebb9..708eaa4cd1 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-3.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot/how-to-3.md @@ -16,5 +16,5 @@ Under AWS IoT Core, click on **MQTT test client** under the **Test** menu. In the 'Topic Filter' field, type 'Emulators/Weather/SensorReadings', and click the **Subscribe** button. You will see the data sent by the emulator displayed: -![fig9](figures/09.png) +![fig9](figures/09.webp) diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/image.png b/content/learning-paths/laptops-and-desktops/win_aws_iot/image.png deleted file mode 100644 index 7251d9a57c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot/image.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot/image.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot/image.webp new file mode 100644 index 0000000000..fe5742b2e3 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot/image.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.png deleted file mode 100644 index 7923973200..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.webp new file mode 100644 index 0000000000..77838bd604 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.png deleted file mode 100644 index de5950792c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.webp new file mode 100644 index 0000000000..f70cd2c513 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.png deleted file mode 100644 index 291931f71b..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.webp new file mode 100644 index 0000000000..63532d33be Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.png deleted file mode 100644 index 52ae0d0e55..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.webp new file mode 100644 index 0000000000..f2c7f828d7 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.png deleted file mode 100644 index 3fec617967..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.webp new file mode 100644 index 0000000000..9717e4b396 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.png deleted file mode 100644 index 046478e36c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.webp new file mode 100644 index 0000000000..58b6a95cdc Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.png deleted file mode 100644 index a1f19baef0..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.webp new file mode 100644 index 0000000000..c2419d96b2 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/07.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.png deleted file mode 100644 index 2091dad09f..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.webp new file mode 100644 index 0000000000..a9bd064630 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/how-to-1.md index 266324449f..f4a956cc78 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_dynamodb/how-to-1.md @@ -13,11 +13,11 @@ Start by creating the rule: 1. Open AWS IoT Core, and look for *Rules* under *Message routing*: -![fig1](figures/01.png) +![fig1](figures/01.webp) 2. Click the *Create rule* button. This will opens *Create rule* view, in which you configure the rule: -![fig2](figures/02.png) +![fig2](figures/02.webp) 3. Use the *Create rule* view to configure the rule as follows. Firstly, under the rule name, type: send_message_to_dynamodb. Then, click the *Next* button. This will take you to the Configure SQL statement, where you use the following SQL query: @@ -25,25 +25,25 @@ Start by creating the rule: SELECT * FROM 'Emulators/Weather/SensorReadings' ``` -![fig3](figures/03.png) +![fig3](figures/03.webp) 4. Click the *Next* button. -![fig4](figures/04.png) +![fig4](figures/04.webp) 5. This opens the *Attach rule actions*, where under *Action 1*, select *DynamoDBv2*. This activates additional controls (see figure below): -![fig5](figures/05.png) +![fig5](figures/05.webp) 6. Click the *Create DynamoDB* table. This will open another tab, where you type *SensorReadings* for the Table name and *timestamp* for the partition key. Ensure to check *Default settings*, scroll down, and click the *Create table* button. Wait a few moments for the table to be created. Then, return to the *Create rule* view. -![fig6](figures/06.png) +![fig6](figures/06.webp) 7. In the *Create rule* view, click the *Refresh* button next to the *Choose DynamoDB* table name drop-down. Then, select the *SensorReadings* table from that drop-down. Afterward, click the *Create new role* button (located below the IAM role). This activates the *Create role* pop-up. 8. In the *Create role* pop-up window, type 'weather_station_dynamo_db', and click the *Create* button. By now, the *Attach rule* actions screen looks like this: -![fig7](figures/07.png) +![fig7](figures/07.webp) 9. Scroll down and click the *Next* button. This displays the summary screen, where you click the *Create* button. @@ -66,7 +66,7 @@ This starts the emulator, which streams data to the AWS IoT Core. The output of To ensure this data is written to the DynamoDB table, go to the AWS console, and in the search box type 'DynamoDB'. Select *DynamoDB* from the list. This takes you to the DynamoDB dashboard, where you click *Explore items* on the left. Then, check the *SensorReadings* radio button, and you see the items in the table: -![fig8](figures/08.png) +![fig8](figures/08.webp) Note that the values in the table are the same as those generated by the emulator. This ensures that you have successfully integrated AWS IoT Core with DynamoDB. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/create-rule.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/create-rule.md index 0bb4a84cc7..082479d20c 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/create-rule.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/create-rule.md @@ -14,11 +14,11 @@ Start by creating the rule: 1. Open AWS IoT Core, and look for *Rules* under *Message routing*: -![fig1](figures/01.png) +![fig1](figures/01.webp) 2. Click the *Create rule* button. This opens the *Create rule* view, in which you configure the rule: -![fig2](figures/02.png) +![fig2](figures/02.webp) 3. Use the *Create rule* view to configure the rule. Firstly, under the rule name, type: **check_temperature**. Then, click the *Next* button. This takes you to the Configure SQL statement, where you use the following SQL query: @@ -36,15 +36,15 @@ This query ensures that only temperature readings are sent to the AWS Lambda fun 6. Click the *Create a Lambda function* button. This opens another tab. Select *Author from scratch*, type **SendNotification** for the function name, select *Node.js 20.x* for the runtime, and *arm64* for the architecture: -![fig4](figures/04.png) +![fig4](figures/04.webp) 7. Scroll down, and under the *Execution role*, select *Create a new role from AWS policy templates*. This activates additional controls, where you type **sns-email-role** for the *Role name*. Then, click the drop-down list *Policy templates*, and select *Amazon SNS publish policy*: -![fig5](figures/05.png) +![fig5](figures/05.webp) 8. Click the *Create function* button. This takes you to the AWS Lambda Console, which looks as shown below: -![fig6](figures/06.png) +![fig6](figures/06.webp) 9. Keep the AWS Lambda Console open in a separate tab and go back to the *Create rule* wizard. Select *SendNotification* from the Lambda function dropdown, and ensure that the Lambda function version points to $LATEST: @@ -54,7 +54,7 @@ This query ensures that only temperature readings are sent to the AWS Lambda fun 11. Go back to AWS Lambda Console and refresh the page. You will now see that your function accepts the AWS IoT trigger: -![fig8](figures/08.png) +![fig8](figures/08.webp) This means that the AWS Lambda function you have just created has an input trigger set to AWS IoT. Specifically, the AWS Lambda function is invoked whenever a new message is sent to the 'Emulators/Weather/SensorReadings' topic. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.png deleted file mode 100644 index 5db59d3ef7..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.webp new file mode 100644 index 0000000000..43c1eedd62 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.png deleted file mode 100644 index eb88f5e7bd..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.webp new file mode 100644 index 0000000000..171fd154b7 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.png deleted file mode 100644 index da72582616..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.webp new file mode 100644 index 0000000000..aa27a1deb7 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.png deleted file mode 100644 index ea5e846bf0..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.webp new file mode 100644 index 0000000000..c8f87a9121 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.png deleted file mode 100644 index 903c3ca2ac..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.webp new file mode 100644 index 0000000000..f7eb4e34be Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.png deleted file mode 100644 index 45ce014162..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.webp new file mode 100644 index 0000000000..abb45e770e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.png deleted file mode 100644 index 040d91ff44..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.webp new file mode 100644 index 0000000000..346d0dbe47 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/09.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.png deleted file mode 100644 index 1c3bbd74e2..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.webp new file mode 100644 index 0000000000..583b55515e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/10.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.png deleted file mode 100644 index 4fd7f15ef6..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.webp new file mode 100644 index 0000000000..13c2b1500e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/11.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.png deleted file mode 100644 index 9a895d65d1..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.webp new file mode 100644 index 0000000000..19b617d926 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/12.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.png deleted file mode 100644 index af7a3aed08..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.webp new file mode 100644 index 0000000000..32209a87d4 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/13.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.png deleted file mode 100644 index 6a0e0203c1..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.webp new file mode 100644 index 0000000000..1a001a3423 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/14.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.png deleted file mode 100644 index a1ceccf7b9..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.webp new file mode 100644 index 0000000000..43d183c093 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/15.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.png deleted file mode 100644 index 451cff1109..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.webp new file mode 100644 index 0000000000..38d7706e72 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/16.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.png deleted file mode 100644 index 8b2406f02b..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.webp new file mode 100644 index 0000000000..e9d07580b6 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/17.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.png deleted file mode 100644 index 035cf170bb..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.webp new file mode 100644 index 0000000000..e20867b010 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/18.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.png deleted file mode 100644 index b4386ea9ea..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.webp new file mode 100644 index 0000000000..a79f44aadd Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/19.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.png deleted file mode 100644 index 7cd29edf06..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.webp new file mode 100644 index 0000000000..7fa39b4279 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/20.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.png deleted file mode 100644 index 80276d9406..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.webp new file mode 100644 index 0000000000..c6d460af8d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/21.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.png deleted file mode 100644 index 471376b287..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.webp new file mode 100644 index 0000000000..13f5eafa7c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/22.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.png deleted file mode 100644 index e3e44ad21c..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.webp new file mode 100644 index 0000000000..bd7dc0dacd Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/23.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.png deleted file mode 100644 index 35e60d9186..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.webp new file mode 100644 index 0000000000..796a3ec7fa Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/figures/24.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/implement-lambda.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/implement-lambda.md index aee054e155..c36dcd150c 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/implement-lambda.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda/implement-lambda.md @@ -171,7 +171,7 @@ In summary, this Lambda function creates an SNS topic and subscribes an email ad After making these changes, the Lambda code editor looks as shown below: -![fig9](figures/09.png) +![fig9](figures/09.webp) Now, click the Deploy button to apply code changes. @@ -180,7 +180,7 @@ Now, click the Deploy button to apply code changes. ### Test Events You will now create two test events to manually invoke the Lambda function. Click the Test button. This opens the Configure test event window: -![fig10](figures/10.png) +![fig10](figures/10.webp) In this window, type **temperature-normal-level** for the Event name, and then under Event JSON paste the following payload: @@ -194,7 +194,7 @@ Finally, click the *Save* button. This takes you back to the Lambda function con Click the triangle icon, in the Test button. This expands the menu, from which you select *Configure test event*: -![fig11](figures/11.png) +![fig11](figures/11.webp) This opens the *Configure test event* window, where you select *Create new event*, change the event name to **temperature-high-level**, and paste the following payload for the Event JSON: @@ -206,18 +206,18 @@ This opens the *Configure test event* window, where you select *Create new event The *Configure test event* window should looks as shown: -![fig12](figures/12.png) +![fig12](figures/12.webp) Click the *Save* button to add a new test event. This takes you back to the Lambda function console. ### Testing the function In the Lambda function console, click the triangle icon next to the Test button, and select *temperature-normal-level* event: -![fig13](figures/13.png) +![fig13](figures/13.webp) Then, click the *Test* button. The Lambda function is invoked, and you see the following execution result: -![fig14](figures/14.png) +![fig14](figures/14.webp) This means that our Lambda function does not have the necessary permissions to create the SNS topic. @@ -231,40 +231,40 @@ Specifically, you will attach the policy giving the Lambda a full access to the To modify the role, proceed as shown: 1. Go the AWS console, and type **IAM** in the search box. Then, select IAM from the list: -![fig15](figures/15.png) +![fig15](figures/15.webp) 2. This takes you to the IAM Dashboard, where you click *Roles under Access management*: -![fig16](figures/16.png) +![fig16](figures/16.webp) 3. Click the *sns-email-role*. This opens another screen, which should look like shown below: -![fig17](figures/17.png) +![fig17](figures/17.webp) 4. Click the *Add permissions* button. This activates the drop-down list, from which you select *Attach policies*. 5. In the *Attach policy to sns-email-role* view, type *SNSFull* in the search box. This filters the list of policies to display one item: *AmazonSNSFullAccess*. Check the check-box on the left of the policy name, and then click the *Add permissions* button: -![fig18](figures/18.png) +![fig18](figures/18.webp) The role has been updated. You can now go back to AWS Lambda. ### Testing the function After updating the role, the SendNotification Lambda function can create SNS topics and send emails. To test this, in the Lambda function console, select the *temperature-high-level* test event, and click the Test button. You will see that the test event was processed without an error: -![fig19](figures/19.png) +![fig19](figures/19.webp) Go to your mailbox and look for an email from AWS Notification. The first email asks you to confirm the subscription: -![fig20](figures/20.png) +![fig20](figures/20.webp) Click the *Confirm subscription* link. Then, invoke the *temperature-high-level* event one more time to see that you received an alert email. It will appear like this: -![fig21](figures/21.png) +![fig21](figures/21.webp) Now, you can start the weather station emulator you created in this [Learning Path](/learning-paths/laptops-and-desktops/win_aws_iot/). Observe the values generated by the emulator. When the temperature exceeds the threshold of 35, you will receive an email notification: -![fig22](figures/22.png) +![fig22](figures/22.webp) ## Environment Variables In the above code, you hardcoded an email, SNS topic, and temperature threshold. This means that every time those values change, you need to modify the function code and redeploy it. In practice, it is better to use environment variables. @@ -274,11 +274,11 @@ You can modify the function code to use environment variables. First, you need t Proceed as shown: 1. In the Lambda function dashboard, click the *Configuration* tab, and select *Environment variables*: -![fig23](figures/23.png) +![fig23](figures/23.webp) 2. Click the *Edit* button. This opens the *Edit environment variables* view, where you click *Add environment variable*. This activates additional controls, where you type **EMAIL** for *Key* and your email for *Value*. Click the *Add environment variable* button one more time, and add another variable with **TEMPERATURE_THRESHOLD** as *Key*, and **35** as *Value*: -![fig24](figures/24.png) +![fig24](figures/24.webp) 3. Click the *Save* button. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/create-lambda.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/create-lambda.md index db4218db18..0a611f7b91 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/create-lambda.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/create-lambda.md @@ -23,19 +23,19 @@ Go the AWS Lambda console. Then, create the function as shown below: At this point your wizard should look as per the image below: -![fig2](figures/02.png) +![fig2](figures/02.webp) Next, in the *Create function* wizard expand *Change default execution role*, and proceed as follows: 1. Select **Create a new role from AWS policy templates**. 2. Type **role-lambda-to-dynamodb** under the Role name. 3. Under *Policy templates - optional* select **Simple microservice permissions**. -![fig3](figures/03.png) +![fig3](figures/03.webp) This ensures that your AWS Lambda function has all the necessary permissions to access the items in the DynamoDB table. Finally, scroll down and click the **Create function** button. This will take you to the GetAverageTemperature function dashboard: -![fig4](figures/04.png) +![fig4](figures/04.webp) In the next step, you will use this dashboard to modify the function code. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.png deleted file mode 100644 index f81250371b..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.webp new file mode 100644 index 0000000000..f710466599 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.png deleted file mode 100644 index 5a2a36f937..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.webp new file mode 100644 index 0000000000..b5f9c46dd0 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.png deleted file mode 100644 index 149edb1cd1..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.webp new file mode 100644 index 0000000000..3e63e8f840 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.png deleted file mode 100644 index 8cf64d7d08..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.webp new file mode 100644 index 0000000000..bd65901a55 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/05.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.png deleted file mode 100644 index 34c275452f..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.webp new file mode 100644 index 0000000000..de5985a6cc Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/testing.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/testing.md index 468e032a2f..955fae5745 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/testing.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_lambda_dynamodb/testing.md @@ -12,11 +12,11 @@ To test the function, launch the IoT emulator to write some data to the DynamoDB In the `GetAverageTemperature` function dashboard click the **Deploy** button: -![fig5](figures/05.png) +![fig5](figures/05.webp) You can then click the **Test** button. This will open the *Configure test event* window, in which you type **Test** in the Event name and click the **Save** button. This will take you back to the `GetAverageTemperature` function dashboard, where you click the **Test** button again. You will see the execution status, including the average temperature value as shown below: -![fig6](figures/06.png) +![fig6](figures/06.webp) # Summary In this learning path you have implemented an AWS Lambda function that processes data stored in a DynamoDB table. You utilized AWS SDK for JavaScript v3 to interact with DynamoDB. Specifically, to create a DynamoDB Query, you constructed a DynamoDB Scan Command with a FilterExpression to retrieve records from the last N minutes. diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/add-lambda.md b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/add-lambda.md index 06a7e14c2e..8b94e6df9b 100644 --- a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/add-lambda.md +++ b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/add-lambda.md @@ -13,7 +13,7 @@ You will now use the AWS Lambda console to retrieve the AWS Lambda endpoint for 1. Go to the AWS Lambda console, and click the `GetAverageTemperature` Lambda function. 2. In the Lambda function dashboard, click the **Configuration** tab and then the **Function URL** as shown below: -![fig2](figures/02.png) +![fig2](figures/02.webp) 3. Under the Function URL, click the **Create Function URL** button. 4. In the window that appears select NONE, scroll down to Additional Settings, and check **Configure cross-origin resource sharing (CORS)**. @@ -21,7 +21,7 @@ You will now use the AWS Lambda console to retrieve the AWS Lambda endpoint for The function URL will appear as follows: -![fig3](figures/03.png) +![fig3](figures/03.webp) Copy the link, and use it to replace the YOUR_API_GATEWAY_ENDPOINT_URL placeholder in the **index.js** file as follows: diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.png deleted file mode 100644 index 31a6f49649..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.webp new file mode 100644 index 0000000000..0790c8ce2d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.png b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.png deleted file mode 100644 index a5fb521bd3..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.webp new file mode 100644 index 0000000000..8108342a5d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_aws_iot_s3/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/02.png b/content/learning-paths/laptops-and-desktops/win_cef/figures/02.png deleted file mode 100644 index 2c49159cfc..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_cef/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_cef/figures/02.webp new file mode 100644 index 0000000000..b02d5c681f Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_cef/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/03.png b/content/learning-paths/laptops-and-desktops/win_cef/figures/03.png deleted file mode 100644 index 5911c6a03d..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_cef/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_cef/figures/03.webp new file mode 100644 index 0000000000..4c8b85f94d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_cef/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/04.png b/content/learning-paths/laptops-and-desktops/win_cef/figures/04.png deleted file mode 100644 index 84dd548df8..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_cef/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_cef/figures/04.webp new file mode 100644 index 0000000000..8f91b6e50d Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_cef/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_cef/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_cef/how-to-1.md index 9850222ee7..1e32f2bb57 100644 --- a/content/learning-paths/laptops-and-desktops/win_cef/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_cef/how-to-1.md @@ -103,7 +103,7 @@ Let's run the `cefsimple` application. The binaries can be found under the `buil By default, the application renders the Google homepage: -![fig2](figures/02.png) +![fig2](figures/02.webp) ## Modify the application You will now modify the `cefsimple` application to render a custom page. This page will fetch data from `JSONPlaceholder` and display it in a table. @@ -221,7 +221,7 @@ You will now create a custom index.html file to fetch the data from the JSONPlac Re-run the application and you will see the following: -![fig3](figures/03.png) +![fig3](figures/03.webp) This example demonstrates the versatility and power of CEF applications. One of their key strengths is the ability to modify the rendered content dynamically. This means you can change what's displayed in the application, like updating the HTML or CSS, without having to rebuild the entire application each time. This feature significantly streamlines the development process, making it quicker and more efficient. @@ -296,7 +296,7 @@ button:hover { After re-running the application you will see the following: -![fig4](figures/04.png) +![fig4](figures/04.webp) ## Summary CEF is a powerful tool for integrating web browser functionalities into desktop applications, utilizing modern web technologies. You have learned how to setup a project, create a basic application, and use CMake for CEF projects. Additionally, you have explored more advanced features like fetching and displaying data from JSONPlaceholder, adding and styling HTML elements like tables and buttons through separate CSS files all on your Windows on Arm machine. diff --git a/content/learning-paths/laptops-and-desktops/win_forms/figures/01.png b/content/learning-paths/laptops-and-desktops/win_forms/figures/01.png deleted file mode 100644 index eb3d7362bd..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_forms/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_forms/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_forms/figures/01.webp new file mode 100644 index 0000000000..21eaf6bfa8 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_forms/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_forms/figures/02.png b/content/learning-paths/laptops-and-desktops/win_forms/figures/02.png deleted file mode 100644 index 994f52ee1e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_forms/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_forms/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_forms/figures/02.webp new file mode 100644 index 0000000000..ac0c335058 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_forms/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_forms/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_forms/how-to-1.md index 1363a4d065..22cf649a92 100644 --- a/content/learning-paths/laptops-and-desktops/win_forms/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_forms/how-to-1.md @@ -21,11 +21,11 @@ Before you begin, install Visual Studio 2022 with .NET Desktop Development workl ## Create the project Start by creating the project. Open Visual Studio and then click 'Create a new project'. -![fig1](figures/01.png) +![fig1](figures/01.webp) In the 'Create a new project' window, select the 'Windows Forms App' template. -![fig2](figures/02.png) +![fig2](figures/02.webp) This will open the 'Configure your new project' view, in which you should configure the project as follows (refer to the figure below): diff --git a/content/learning-paths/laptops-and-desktops/win_net/net2.png b/content/learning-paths/laptops-and-desktops/win_net/net2.png deleted file mode 100644 index 6dd195cde9..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net/net2.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net/net2.webp b/content/learning-paths/laptops-and-desktops/win_net/net2.webp new file mode 100644 index 0000000000..bdf9bcbf3e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net/net2.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net/win_net.md b/content/learning-paths/laptops-and-desktops/win_net/win_net.md index 4562424798..4895b5db69 100644 --- a/content/learning-paths/laptops-and-desktops/win_net/win_net.md +++ b/content/learning-paths/laptops-and-desktops/win_net/win_net.md @@ -27,7 +27,7 @@ To modify your existing installation of Visual Studio: 3. On the Workloads tab, click on the `.NET desktop development` checkbox and then select `Modify`. -![img2](net2.png) +![img2](net2.webp) After the installation completes, close the installer. diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/01.png b/content/learning-paths/laptops-and-desktops/win_net8/figures/01.png deleted file mode 100644 index e3086395cb..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net8/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_net8/figures/01.webp new file mode 100644 index 0000000000..593d4ed834 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net8/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/02.png b/content/learning-paths/laptops-and-desktops/win_net8/figures/02.png deleted file mode 100644 index db64244e55..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net8/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_net8/figures/02.webp new file mode 100644 index 0000000000..82ed193e81 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net8/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/03.png b/content/learning-paths/laptops-and-desktops/win_net8/figures/03.png deleted file mode 100644 index 2f2685758e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net8/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_net8/figures/03.webp new file mode 100644 index 0000000000..f9672c63d6 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net8/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/04.png b/content/learning-paths/laptops-and-desktops/win_net8/figures/04.png deleted file mode 100644 index e8b319df5f..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net8/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_net8/figures/04.webp new file mode 100644 index 0000000000..5611f6fa43 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net8/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net8/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_net8/how-to-1.md index 5c2ac50369..d7311ecc25 100644 --- a/content/learning-paths/laptops-and-desktops/win_net8/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_net8/how-to-1.md @@ -95,10 +95,10 @@ dotnet run -c Release -f net8.0 The command will build and run the performance benchmarks. The output will look as follows: -![fig1](figures/01.png) +![fig1](figures/01.webp) The output lists all available benchmarks. You can type * to run all benchmarks or type a number to select individual performance tests. In this example, let's type **483** to execute the Perf_Doubles benchmark. After a while you will see a summary of the performance test. A portion of this output is shown in the figure below: -![fig2](figures/02.png) +![fig2](figures/02.webp) By default, the table summarizes the performance test results. You can see each performance test's execution time and statistics (mean, median, minimum, maximum, and standard deviation) which gives you a comprehensive overview of code performance. diff --git a/content/learning-paths/laptops-and-desktops/win_net8/how-to-2.md b/content/learning-paths/laptops-and-desktops/win_net8/how-to-2.md index 455ecea184..aaa97d4534 100644 --- a/content/learning-paths/laptops-and-desktops/win_net8/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/win_net8/how-to-2.md @@ -32,7 +32,7 @@ dotnet run -c Release Wait a few moments for the application to execute all the benchmarks and you will then see the results of the following form: -![fig3](figures/03.png) +![fig3](figures/03.webp) You will now compare execution times to x64 architecture (emulator on arm64) by typing: @@ -42,7 +42,7 @@ dotnet run -c Release -a x64 The above command will lead to significantly longer execution times than before: -![fig4](figures/04.png) +![fig4](figures/04.webp) The operations all take more time on the emulated x64 than when you execute them natively on Arm64. On average, native execution provides about a 19% performance improvement for list sorting, 11% for matrix multiplication, and 35% for string operations. diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.png b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.png deleted file mode 100644 index ef3edf31aa..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.webp new file mode 100644 index 0000000000..aa7124ce21 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.png b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.png deleted file mode 100644 index 1aa61c9466..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.webp b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.webp new file mode 100644 index 0000000000..025847f0be Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/07.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.png b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.png deleted file mode 100644 index 587d1892ba..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.webp b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.webp new file mode 100644 index 0000000000..333a82b432 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.png b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.png deleted file mode 100644 index 44013f88ca..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.webp b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.webp new file mode 100644 index 0000000000..42e223b708 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_net_maui/figures/10.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-1.md index 27ed8b2246..442e518570 100644 --- a/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-1.md @@ -53,7 +53,7 @@ Then, accept any other license terms that appear, including the Android SDK - Li Your project should be now ready. Next, open the Solution Explorer (View -> Solution Explorer) to view the created projects: -![fig6](figures/06.png) +![fig6](figures/06.webp) ## Understanding the project structure The .NET MAUI project template is structured to enable the development of cross-platform applications using a single codebase, targeting Android, iOS, macOS, and Windows. Therefore, the project we have just created contains the following elements: @@ -66,4 +66,4 @@ The .NET MAUI project template is structured to enable the development of cross- You can now run the created application. To do so, click _Debug/Start Debugging_. The running application will look like the figure below: -![fig7](figures/07.png) +![fig7](figures/07.webp) diff --git a/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-2.md b/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-2.md index 3befe54f38..c6f77f37e6 100644 --- a/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/win_net_maui/how-to-2.md @@ -230,7 +230,7 @@ You will now build and run the application for x64 and Arm64 configurations. Pro 1. Start by creating the Arm64 configuration. To do this, click the Debug drop-down, and select Configuration Manager... as shown in the figure below: -![fig8](figures/08.png) +![fig8](figures/08.webp) 2. In the Configuration Manager, select from the Active solution platform drop-down: @@ -244,7 +244,7 @@ You will now build and run the application for x64 and Arm64 configurations. Pro ``` 6. Next, select ARM64 from the solution platform drop-down, and then click the Windows Machine button: -![fig10](figures/10.png) +![fig10](figures/10.webp) 7. The application will start after a while. Run vector calculations for various execution counts: 10, 100, 1000, and 10000 8. Repeat the same for x64. Your results from the two runs should look similar to the following figures: diff --git a/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.png b/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.png deleted file mode 100644 index 414f1a4fb0..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.webp new file mode 100644 index 0000000000..60796acb86 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_python_onnx/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_python_onnx/inference.md b/content/learning-paths/laptops-and-desktops/win_python_onnx/inference.md index ff7b72dcf0..66538d1699 100644 --- a/content/learning-paths/laptops-and-desktops/win_python_onnx/inference.md +++ b/content/learning-paths/laptops-and-desktops/win_python_onnx/inference.md @@ -30,7 +30,7 @@ py -V:3.13 .\main.py ``` The code will display a sample inference result similar to the image below: -![fig1](figures/01.png) +![fig1](figures/01.webp) Upon closing the displayed image, the script will output the computation time: ```output PS C:\Users\db\onnx> py -V:3.13 .\main.py diff --git a/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.png b/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.png deleted file mode 100644 index 6dd195cde9..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.webp b/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.webp new file mode 100644 index 0000000000..bdf9bcbf3e Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_sandbox_dot_net_cicd/net2.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.png b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.png deleted file mode 100644 index c936aa1992..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.webp new file mode 100644 index 0000000000..c17840bbad Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.png b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.png deleted file mode 100644 index d7f50c2a83..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.webp b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.webp new file mode 100644 index 0000000000..3efd7878be Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/figures/09.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/how-to-1.md index 538731b5db..92d3a4d881 100644 --- a/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_win32_dll_porting/how-to-1.md @@ -129,7 +129,7 @@ You will now create the main application which will use the above DLL. To do so, 2. Select Add -> New Project... This will open the **Add a new project** window. 3. In the **Add a new project** window, select the **Console App project** template and click the **Next** button: -![fig3](figures/03.png) +![fig3](figures/03.webp) 4. In the **Configure your new project window**, set the project name to MainApplication and click the **Create** button @@ -221,7 +221,7 @@ The project is now ready and we can launch the application for various platforms ## Running the application To launch the application, select **x64** from the platform dropdown, and then click **Local Windows Debugger**: -![fig9](figures/09.png) +![fig9](figures/09.webp) The application will launch and you will observe the execution time for the x86_64 platform: diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.png b/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.png deleted file mode 100644 index 5136f7d791..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.webp new file mode 100644 index 0000000000..46c0d519e3 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_winui3/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.png b/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.png deleted file mode 100644 index 5d536b606e..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.webp b/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.webp new file mode 100644 index 0000000000..4d127944d0 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_winui3/figures/03.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.png b/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.png deleted file mode 100644 index 952467fb06..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.webp b/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.webp new file mode 100644 index 0000000000..e07b7e0711 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_winui3/figures/04.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_winui3/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_winui3/how-to-1.md index 5d8d88f8e2..3687f01b8f 100644 --- a/content/learning-paths/laptops-and-desktops/win_winui3/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_winui3/how-to-1.md @@ -25,7 +25,7 @@ Before you begin the implementation, install Visual Studio 2022 with the followi 2. Universal Windows Platform development 3. After selecting these workloads, expand the .NET desktop development group under the Installation details and ensure that the 'Windows App SDK C# Templates' option is selected. -![fig1](figures/01.png) +![fig1](figures/01.webp) Then, click the 'Individual components' tab and check '.NET 6.0 Runtime (Long Term Support)'. @@ -34,11 +34,11 @@ Then, click the 'Individual components' tab and check '.NET 6.0 Runtime (Long Te ## Create the project Open Visual Studio and click 'Create a new project'. -![fig3](figures/03.png) +![fig3](figures/03.webp) In the next window, search for the 'Blank App, Packaged (WinUI 3 in Desktop)' template. Select this template and click the 'Next' button. -![fig4](figures/04.png) +![fig4](figures/04.webp) This action opens the 'Configure your new project' window. Here, you should: diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.png b/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.png deleted file mode 100644 index 03321acdf2..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.webp b/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.webp new file mode 100644 index 0000000000..ee3c38c2f3 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_wpf/figures/06.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.png b/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.png deleted file mode 100644 index 327279d7b6..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.webp b/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.webp new file mode 100644 index 0000000000..273d3ce463 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_wpf/figures/08.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.png b/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.png deleted file mode 100644 index 7908e6627f..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.webp b/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.webp new file mode 100644 index 0000000000..b12c220b08 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_wpf/figures/11.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_wpf/how-to-1.md index 015106fd51..3b37680a46 100644 --- a/content/learning-paths/laptops-and-desktops/win_wpf/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_wpf/how-to-1.md @@ -143,7 +143,7 @@ Before starting the UI design, install the Syncfusion.SfChart.WPF NuGet package 2. In Solution Explorer, right-click on Dependencies under the Arm64.DesktopApp.WPF project. From the context menu, select Manage NuGet Packages... to open the NuGet Package Manager. 3. In the NuGet Package Manager, search for Syncfusion Chart WPF. Then select Syncfusion.SfChart.WPF from the results and click the Install button. Refer to the figure below for guidance: -![fig6](figures/06.png) +![fig6](figures/06.webp) 4. A Preview Changes window will appear. Click the Apply button to confirm and proceed with the changes to the solution. The installation of the NuGet package will complete. diff --git a/content/learning-paths/laptops-and-desktops/win_wpf/how-to-2.md b/content/learning-paths/laptops-and-desktops/win_wpf/how-to-2.md index af83d4c117..50229b6f32 100644 --- a/content/learning-paths/laptops-and-desktops/win_wpf/how-to-2.md +++ b/content/learning-paths/laptops-and-desktops/win_wpf/how-to-2.md @@ -14,7 +14,7 @@ To prepare an application for ARM64 and x86_64 builds, proceed as follows: 1. Click the **Any CPU** drop-down menu and select Configuration Manager...: -![fig8](figures/08.png) +![fig8](figures/08.webp) 2. In the Configuration Manager, click New... from the **Active Solution Platform** drop-down menu: @@ -28,7 +28,7 @@ To prepare an application for ARM64 and x86_64 builds, proceed as follows: To build and run the application, select the **solution platform** (for example, x86_64) and then click the **Arm64.Desktop.WPF button**: -![fig11](figures/11.png) +![fig11](figures/11.webp) When the application launches, type the execution count value, e.g., 2000 and click the "Run calculations" button. The application will display the column with the label denoting the computation time. Repeat this for other execution counts: 4000, 6000, 8000 and 10000. Your results should look like the following figure: diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.png b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.png deleted file mode 100644 index eb3d7362bd..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.webp b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.webp new file mode 100644 index 0000000000..21eaf6bfa8 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/01.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.png b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.png deleted file mode 100644 index 9f54dff746..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.webp b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.webp new file mode 100644 index 0000000000..7cedd22c58 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/02.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.png b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.png deleted file mode 100644 index 5839ec9fb6..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.webp b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.webp new file mode 100644 index 0000000000..b8085c743c Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/figures/07.webp differ diff --git a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/how-to-1.md b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/how-to-1.md index 8dcfc92c55..4b30d9cb51 100644 --- a/content/learning-paths/laptops-and-desktops/win_xamarin_forms/how-to-1.md +++ b/content/learning-paths/laptops-and-desktops/win_xamarin_forms/how-to-1.md @@ -21,11 +21,11 @@ Before you begin the implementation, install Visual Studio 2022 with the followi ## Create the project Open Visual Studio and click 'Create a new project'. -![fig1](figures/01.png) +![fig1](figures/01.webp) In the next window, search for the 'Mobile App (Xamarin.Forms)' template. -![fig2](figures/02.png) +![fig2](figures/02.webp) This will open the 'Configure your new project' view, in which you should configure the project as follows (refer to the figure below): @@ -69,7 +69,7 @@ Before starting the UI design, install the `Syncfusion.SfChart.WPF` NuGet packag 2. In Solution Explorer, right-click on 'Dependencies' under the Arm64.MobileApp.XamarinForms project. From the context menu, select 'Manage NuGet Packages...' to open the NuGet Package Manager. 3. In the NuGet Package Manager, search for 'Sf chart.' Then select 'Syncfusion.SfChart.WPF' from the results and click the 'Install' button. Refer to the figure below for guidance: -![fig7](figures/07.png) +![fig7](figures/07.webp) 4. A 'Preview Changes' window will appear. Click the 'Apply' button to confirm and proceed with the changes to the solution. The installation of the NuGet package will complete. 5. Finally, in the 'License Acceptance' window that appears, click the 'I Accept' button to agree to the terms and complete the installation process. diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/SPE-settings.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/SPE-settings.png deleted file mode 100644 index be7e91b010..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/SPE-settings.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/counting-feature.md b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/counting-feature.md index 10a21a5e31..020a418e0a 100644 --- a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/counting-feature.md +++ b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/counting-feature.md @@ -50,4 +50,4 @@ You can click the `Open in WPA` button to open the collected counts in the Windo A screenshot of WPA is below: -![Open in WPA #center](./open-in-wpa.png) +![Open in WPA #center](./open-in-wpa.webp) diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.png deleted file mode 100644 index 1066c5cfef..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.webp b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.webp new file mode 100644 index 0000000000..ddbdbb8a8b Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/open-in-wpa.webp differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-feature.md b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-feature.md index d6c8b87469..f624462a9e 100644 --- a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-feature.md +++ b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-feature.md @@ -29,7 +29,7 @@ As you configure the settings, the dialog provides a real-time preview of the Wi When you are satisfied with your configurations, click `Save`. -![Sampling overview #center](./sampling-overview.png) +![Sampling overview #center](./sampling-overview.webp) ## How do I initiate sampling? @@ -51,7 +51,7 @@ Any accessible source file appears as a clickable hyperlink. Selecting it will d Based on the insights gathered from the sampling results, proceed to make any required optimizations or edits to your source code. -![Sampling results #center](./sampling-results.png) +![Sampling results #center](./sampling-results.webp) ## How do I evaluate the result after making changes? diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.png deleted file mode 100644 index 3e7299c269..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.webp b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.webp new file mode 100644 index 0000000000..8be7d7b6aa Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-overview.webp differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.png deleted file mode 100644 index 08047d4ded..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.webp b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.webp new file mode 100644 index 0000000000..efc6389046 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/sampling-results.webp differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-feature.md b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-feature.md index f7a50845d0..473dadf635 100644 --- a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-feature.md +++ b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-feature.md @@ -106,4 +106,4 @@ To do so you need to go to go to `Tools -> WindowsPerf Host Data` scroll to the All the SPE results will be prefixed by your SPE device version name (e.g. `FEAT_SPEv1p1`) {{% /notice %}} -![SPE results #center](./spe-results.png) +![SPE results #center](./spe-results.webp) diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.png deleted file mode 100644 index 89a4818255..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.webp b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.webp new file mode 100644 index 0000000000..b88dcf029f Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-results.webp differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.png b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.png deleted file mode 100644 index be7e91b010..0000000000 Binary files a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.png and /dev/null differ diff --git a/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.webp b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.webp new file mode 100644 index 0000000000..d6a898e870 Binary files /dev/null and b/content/learning-paths/laptops-and-desktops/windowsperf-vs-extension/spe-settings.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.png b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.png deleted file mode 100644 index f5205cff03..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.webp b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.webp new file mode 100644 index 0000000000..0254b013ee Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_afrc.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.png b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.png deleted file mode 100644 index d5b6412839..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.webp b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.webp new file mode 100644 index 0000000000..d59ec67c07 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/afrc/images/sponza_default.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/afrc/p1-intro.md b/content/learning-paths/mobile-graphics-and-gaming/afrc/p1-intro.md index 54a28bd1a7..c334b91d9b 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/afrc/p1-intro.md +++ b/content/learning-paths/mobile-graphics-and-gaming/afrc/p1-intro.md @@ -28,7 +28,7 @@ So much so that, to the naked eye, the compressed and uncompressed images look t   | Uncompressed | AFRC 2BPC (bits per component) | | ----------- | ----------- | -| ![Uncompressed](images/sponza_default.png) | ![AFRC 2BPC](images/sponza_afrc.png) | +| ![Uncompressed](images/sponza_default.webp) | ![AFRC 2BPC](images/sponza_afrc.webp) | More information can be found in [this blog on Arm® Immortalis™](https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/arm-immortalis-g715-developer-overview) and in [this Vulkan sample](https://github.com/KhronosGroup/Vulkan-Samples/blob/main/samples/performance/image_compression_control/README.adoc). diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/4-run.md b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/4-run.md index 277a8a2f26..6dfd397888 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/4-run.md +++ b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/4-run.md @@ -28,8 +28,8 @@ cd $HOME/ai-camera-pipelines bin/cinematic_mode resources/test_input.png test_output.png resources/depth_and_saliency_v3_2_assortedv2_w_augment_mobilenetv2_int8_only_ptq.tflite ``` -![example image alt-text#center](test_input2.png "Input image") -![example image alt-text#center](test_output2.png "Image with blur applied") +![example image alt-text#center](test_input2.webp "Input image") +![example image alt-text#center](test_output2.webp "Image with blur applied") ## Low-Light Enhancement @@ -40,8 +40,8 @@ cd $HOME/ai-camera-pipelines bin/low_light_image_enhancement resources/test_input.png test_output2_lime.png resources/HDRNetLIME_lr_coeffs_v1_1_0_mixed_low_light_perceptual_l1_loss_float32.tflite ``` -![example image alt-text#center](test_input2.png "Input image") -![example image alt-text#center](test_output2_lime.png "Image with low-light enhancement applied") +![example image alt-text#center](test_input2.webp "Input image") +![example image alt-text#center](test_output2_lime.webp "Image with low-light enhancement applied") ### Neural denoising diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.png b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.png deleted file mode 100644 index 42d323adc4..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.webp b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.webp new file mode 100644 index 0000000000..a95ff62e0c Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_input2.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.png b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.png deleted file mode 100644 index d834ce721d..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.webp b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.webp new file mode 100644 index 0000000000..9035f8a595 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.png b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.png deleted file mode 100644 index 18042cafea..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.webp b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.webp new file mode 100644 index 0000000000..3ea5a52430 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/test_output2_lime.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.png b/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.png deleted file mode 100644 index f0552e53a5..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.webp b/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.webp new file mode 100644 index 0000000000..d707713423 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ams/images/fa_analysis.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.png b/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.png deleted file mode 100644 index c493f22fe5..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.webp b/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.webp new file mode 100644 index 0000000000..712061521a Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ams/images/stop_capture.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ams/streamline.md b/content/learning-paths/mobile-graphics-and-gaming/ams/streamline.md index 790d97a0fe..e6de786905 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/ams/streamline.md +++ b/content/learning-paths/mobile-graphics-and-gaming/ams/streamline.md @@ -36,7 +36,7 @@ Optionally, you can set a preferred location to store your captures using `Windo 1. The application starts automatically on the device. Interact with the application as desired for the profiling run you wish to do. 1. When you have collected enough data, click `Stop capture`. -![Stop capture #center](images/stop_capture.png "Stop Capture") +![Stop capture #center](images/stop_capture.webp "Stop Capture") Streamline will stop capturing data, remove the daemon, and process the captured data. diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt.png b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt.png deleted file mode 100644 index d95c51389f..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt_redundant_rps.png b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt_redundant_rps.png deleted file mode 100644 index f642472ef1..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/Render_graph_egypt_redundant_rps.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/analyze.md b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/analyze.md index e7f383535a..100ca052ff 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/analyze.md +++ b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/analyze.md @@ -7,7 +7,7 @@ layout: learningpathall --- When the analysis completes, you will see Frame Advisor's `Analysis` screen. -![Frame Advisor's Analysis screen alt-text#center](fa_analysis.png "Figure 1. Frame Advisor's Analysis screen") +![Frame Advisor's Analysis screen alt-text#center](fa_analysis.webp "Figure 1. Frame Advisor's Analysis screen") 1. Captured frames are listed in the Frame hierarchy view. Here, we can see that this frame draws over 657,000 primitives using 426 draw calls within 16 render passes. diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.png b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.png deleted file mode 100644 index f0552e53a5..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.webp b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.webp new file mode 100644 index 0000000000..d707713423 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/fa_analysis.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.png b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.png deleted file mode 100644 index d95c51389f..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.webp b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.webp new file mode 100644 index 0000000000..c92c9aa72e Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.png b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.png deleted file mode 100644 index f642472ef1..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.webp b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.webp new file mode 100644 index 0000000000..edc40b4d4f Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/render_graph_egypt_redundant_rps.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.png b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.png deleted file mode 100644 index 80e41973f2..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.webp b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.webp new file mode 100644 index 0000000000..7cdd71981a Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/03.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.png b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.png deleted file mode 100644 index d098da4e1a..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.webp b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.webp new file mode 100644 index 0000000000..5dff926a31 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/04.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.png b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.png deleted file mode 100644 index 8fa7609f69..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.webp b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.webp new file mode 100644 index 0000000000..020b398ad0 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/05.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.png b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.png deleted file mode 100644 index 5993f29b22..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.webp b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.webp new file mode 100644 index 0000000000..25dbf409ea Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/07.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.png b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.png deleted file mode 100644 index a01e883efc..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.webp b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.webp new file mode 100644 index 0000000000..4e9e32a790 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_halide/Figures/08.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/android.md b/content/learning-paths/mobile-graphics-and-gaming/android_halide/android.md index 58ba9f918b..ba6eb63972 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_halide/android.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_halide/android.md @@ -41,14 +41,14 @@ Before integrating Halide into your Android application, ensure you have the nec ### Creating the project 1. Open Android Studio. 2. Select New Project > Native C++. -![img4](Figures/04.png) +![img4](Figures/04.webp) ### Configure the project 1. Set the project Name to Arm.Halide.AndroidDemo. 2. Choose Kotlin as the language. 3. Set Minimum SDK to API 24. 4. Click Next. -![img5](Figures/05.png) +![img5](Figures/05.webp) 5. Select C++17 from the C++ Standard dropdown list. ![img6](Figures/06.png) 6. Click Finish. @@ -202,7 +202,7 @@ Now, you'll define the application's User Interface, consisting of two buttons a Now you can run the app to view the UI: -![img7](Figures/07.png) +![img7](Figures/07.webp) ## Processing You will now implement the image processing code. First, pick up an image you want to process. Here we use the camera man. Then, under the Arm.Halide.AndroidDemo/src/main create assets folder, and save the image under that folder as img.png. @@ -351,7 +351,7 @@ Note that performing the grayscale conversion in Halide allows us to exploit ope The JNI integration occurs through an external method declaration, blurThresholdImage, loaded via the companion object at app startup. The native library (armhalideandroiddemo) containing this function is compiled separately and integrated into the application (native-lib.cpp). You will now need to create blurThresholdImage function. To do so, in Android Studio put the cursor above blurThresholdImage function, and then click Create JNI function for blurThresholdImage: -![img8](Figures/08.png) +![img8](Figures/08.webp) This will generate a new function in the native-lib.cpp: ```cpp diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/intro.md b/content/learning-paths/mobile-graphics-and-gaming/android_halide/intro.md index 3883ee0e7c..4670270833 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_halide/intro.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_halide/intro.md @@ -61,32 +61,29 @@ Halide can be set up using one of two main approaches: Here, you will use pre-built binaries: 1. Visit the official Halide releases [page](https://github.com/halide/Halide/releases). As of this writing, the latest Halide version is v19.0.0. 2. Download and unzip the binaries to a convenient location (e.g., /usr/local/halide on Linux/macOS or C:\halide on Windows). - 3. 3. Optionally set environment variables to simplify further usage: + 3. Optionally set environment variables to simplify further usage: ```console export HALIDE_DIR=/path/to/halide export PATH=$HALIDE_DIR/bin:$PATH ``` To proceed futher, make sure to install the following components: -1. LLVM (Halide requires LLVM to compile and execute pipelines): -* Linux (Ubuntu): -```console +1. LLVM (Halide requires LLVM to compile and execute pipelines) +2. OpenCV (for image handling in later lessons) + +Install with the commands for your OS: + +{{< tabpane code=true >}} + {{< tab header="Linux/Ubuntu" language="bash">}} sudo apt-get install llvm-19-dev libclang-19-dev clang-19 -``` -* macOS (Homebrew): -```console -brew install llvm -``` -2. OpenCV (for image handling in later lessons): -* Linux (Ubuntu): -```console sudo apt-get install libopencv-dev pkg-config -``` -* macOS (Homebrew): -```console + {{< /tab >}} + {{< tab header="macOS" language="bash">}} +brew install llvm brew install opencv pkg-config -``` - + {{< /tab >}} +{{< /tabpane >}} + Halide examples were tested with OpenCV 4.11.0 ## Your first Halide program diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_halide/processing-workflow.md b/content/learning-paths/mobile-graphics-and-gaming/android_halide/processing-workflow.md index 2a661b771d..6d7b9ec3d9 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_halide/processing-workflow.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_halide/processing-workflow.md @@ -207,7 +207,7 @@ Run the executable: ``` The output should look as in the figure below: -![img3](Figures/03.png) +![img3](Figures/03.webp) ## Parallelization and Tiling In this section, you will explore two complementary scheduling optimizations provided by Halide: Parallelization and Tiling. Both techniques help enhance performance but achieve it through different mechanisms—parallelization leverages multiple CPU cores, whereas tiling improves cache efficiency by optimizing data locality. diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/dot_product_neon.md b/content/learning-paths/mobile-graphics-and-gaming/android_neon/dot_product_neon.md index 0fe58bfab5..0bfa6a0d5e 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_neon/dot_product_neon.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_neon/dot_product_neon.md @@ -234,7 +234,7 @@ You have now added all the code to this file and can proceed to building the app By default, the Build Variant is `debug` for this project. Select `Build-> Select Build Variant...` and change the Active Build Variant to `release` as shown in the image below: -![img7](neon7.png) +![img7](neon7.webp) Now build the code. Select `Build-> Make Project`. Once the build completes, you should see output similar to what is shown below: diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/hello_neon.md b/content/learning-paths/mobile-graphics-and-gaming/android_neon/hello_neon.md index 44f35a7a46..f9e0e72a3e 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_neon/hello_neon.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_neon/hello_neon.md @@ -149,7 +149,7 @@ Build Analyzer results available 10. Run this application on an 64-bit Arm powered smartphone running Android. We ran the app on a Google Pixel 7 phone using a USB cable connected to the development machine running Android Studio. You can also pair your phone over Wi-Fi. Connect your device and select `Tools->Device Manager`. Select the `Physical` tab and your connected phone should show up on the list of devices as shown in the image below: -![img6](neon6.png) +![img6](neon6.webp) Then select `Run->Run app` or press `Shift+F10` to run the app on the connected phone. diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.png b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.png deleted file mode 100644 index 3970129006..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.webp b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.webp new file mode 100644 index 0000000000..178e7f7320 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon6.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.png b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.png deleted file mode 100644 index cdfc380dae..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.webp b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.webp new file mode 100644 index 0000000000..1a66dc0cfe Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_neon/neon7.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/create-project.md b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/create-project.md index 53f37a1b4e..5e2909bbd2 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/create-project.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/create-project.md @@ -17,7 +17,7 @@ Follow these steps to create a project and add OpenCV: 2. In the New Project window, select **Empty Views Activity**: -![img2](figures/02.png) +![img2](figures/02.webp) 3. Configure the project as follows (see figure below): - Name: **Arm64.OpenCV.Camera**. @@ -27,13 +27,13 @@ Follow these steps to create a project and add OpenCV: - Minimum SDK: **API 24**. - Build configuration language: **Kotlin DSL**. -![img3](figures/03.png) +![img3](figures/03.webp) 4. Click the **Finish** button. The project will be ready in a few moments, and Android Studio should appear as shown below: -![img4](figures/04.png) +![img4](figures/04.webp) ## Add OpenCV support To add OpenCV for Arm64, open the *build.gradle.ts (Module: app)*, and add the following line under the dependencies: @@ -44,7 +44,7 @@ implementation("org.opencv:opencv:4.10.0") Then, click the **Sync Now** link in the top pane that appears: -![img5](figures/05.png) +![img5](figures/05.webp) From here on, you can use OpenCV in your application. @@ -56,7 +56,7 @@ To initialize OpenCV and check the initialization status, follow these steps: 2. Click the highlighted icon in the top-right corner to switch to the XML view. -![img6](figures/06.png) +![img6](figures/06.webp) 3. Modify the `activity_main.xml` file as shown below: @@ -129,6 +129,6 @@ Finally, you call updateControls(), which updates the UI based on whether OpenCV ## Launch the application You can now launch the application in the simulator. To do so, use the top menu, where you click Run -> Run ‘app’. The application should start, and you should see the “OpenCV initialized” text as shown below: -![img7](figures/07.png) +![img7](figures/07.webp) You have successfully added OpenCV to the Android application. In the next step, you will extend the application to get images from the device's camera and process them in real-time. diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.png deleted file mode 100644 index 69568a16c6..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.webp new file mode 100644 index 0000000000..f7d0935dfc Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/02.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.png deleted file mode 100644 index 4f961d3b44..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.webp new file mode 100644 index 0000000000..8b71c57fd9 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/03.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.png deleted file mode 100644 index 5f5d16ccf3..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.webp new file mode 100644 index 0000000000..54618dfffb Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/04.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.png deleted file mode 100644 index 72f0173f43..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.webp new file mode 100644 index 0000000000..4ea3a739df Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/05.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.png deleted file mode 100644 index be03fd7d4a..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.webp new file mode 100644 index 0000000000..7d2f8e70e1 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/06.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.png deleted file mode 100644 index 9ca9892d89..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.webp new file mode 100644 index 0000000000..b3d8eb2394 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/figures/07.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/create-project.md b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/create-project.md index c53ac71805..0ced88b255 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/create-project.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/create-project.md @@ -20,7 +20,7 @@ Follow these steps to create a project and add OpenCV: 2. In the New Project window, select **Empty Views Activity**: -![img2](figures/02.png) +![img2](figures/02.webp) 3. Configure the project as follows (see figure below): - Name: **Arm64.OpenCV.FaceDetection**. @@ -30,7 +30,7 @@ Follow these steps to create a project and add OpenCV: - Minimum SDK: **API 24**. - Build configuration language: **Kotlin DSL**. -![img3](figures/03.png) +![img3](figures/03.webp) 4. Click the **Finish** button. @@ -51,7 +51,7 @@ You will now initialize OpenCV and prepare the application to stream frames from 1. Under the Project in the left window, double-click *app/res/layout/activity_main.xml*. This opens the view designer. 2. Click the highlighted icon in the top right corner to switch to the XML view. -![img4](figures/04.png) +![img4](figures/04.webp) 3. Modify the *activity_main.xml* as shown below: @@ -218,7 +218,7 @@ The above code also declares CameraBridgeViewBase.CvCameraViewListener2 methods: ## Launch the application You have just prepared the application to stream camera frames. You can now launch the application in the emulator. To do so, click the green 'run' button as shown here: -![click run](figures/05.png) +![click run](figures/05.webp) The application should start, and you should see the app running in an emulator. It will ask you for camera permissions. diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.png deleted file mode 100644 index 69568a16c6..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.webp new file mode 100644 index 0000000000..f7d0935dfc Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/02.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.png deleted file mode 100644 index 3291bd2aba..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.webp new file mode 100644 index 0000000000..71f269d77c Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/03.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.png deleted file mode 100644 index be03fd7d4a..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.webp new file mode 100644 index 0000000000..7d2f8e70e1 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/04.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.png deleted file mode 100644 index 7ef1ef0b66..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.webp new file mode 100644 index 0000000000..29103b0499 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/figures/05.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/create-project.md b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/create-project.md index dd95ee50be..fcc83ed050 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/create-project.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/create-project.md @@ -16,7 +16,7 @@ Start by creating a new project, and configuring it: 1. Open Android Studio on your development machine, and click the **+ New Project** icon. 2. In the **New Project** window, select **Empty Views Activity**: -![img1 alt-text#center](figures/01.png "Figure 1: Creating a new project.") +![img1 alt-text#center](figures/01.webp "Figure 1: Creating a new project.") 3. Figure 2 shows you how to configure the project: - Name: **Arm64.KleidiCV.Demo**. @@ -26,7 +26,7 @@ Start by creating a new project, and configuring it: - Minimum SDK: **API 24**. - Build configuration language: **Kotlin DSL**. -![img2 alt-text#center](figures/02.png "Figure 2: Configuring your new project.") +![img2 alt-text#center](figures/02.webp "Figure 2: Configuring your new project.") 4. Click the **Finish** button. diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.png deleted file mode 100644 index 8b89697141..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.webp new file mode 100644 index 0000000000..5ca25f16f5 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/01.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.png b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.png deleted file mode 100644 index 830cfa41a1..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.webp b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.webp new file mode 100644 index 0000000000..bbe2ebf715 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/figures/02.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.png b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.png deleted file mode 100644 index 1149c7a935..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.webp b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.webp new file mode 100644 index 0000000000..ae565cd2d8 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/02.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.png b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.png deleted file mode 100644 index 2c606b31bf..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.webp b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.webp new file mode 100644 index 0000000000..cf8db91eca Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/03.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.png b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.png deleted file mode 100644 index 47dbc16463..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.webp b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.webp new file mode 100644 index 0000000000..5c4723059b Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/05.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.png b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.png deleted file mode 100644 index e20d441156..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.webp b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.webp new file mode 100644 index 0000000000..0610629e33 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/figures/07.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part1.md b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part1.md index 9a8664e0d6..0ab2a8356a 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part1.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part1.md @@ -32,11 +32,11 @@ The process of creating and configuring this project is similar to that used for 2. Create a project using the **Native C++ Project** option in the Phone and Tablet section and click Next, as shown below: -![img2](figures/02.png) +![img2](figures/02.webp) 3. Set the application name to **ARM SVE2**, select `Kotlin` as the language, leave the Minimum SDK selection as `API 24: Android 7.0 (Nougat)`, ensure that the build configuration is set to use Kotlin DSL, and click Next, as shown below: -![img3](figures/03.png) +![img3](figures/03.webp) 4. Leave the `Toolchain Default` selection for C++ Standard and then click Finish, as shown below: @@ -44,7 +44,7 @@ The process of creating and configuring this project is similar to that used for You have just created the Android application project, which comprises a `MainActivity`. The `MainActivity` contains a single TextView control, which displays the Hello from C++ string as shown in the figure below. This string is retrieved by invoking a `stringFromJNI` function from the C++ library, implemented under the `app/cpp/native-lib.cpp` file and built using the NDK and `CMakeLists.txt`. -![img5](figures/05.png) +![img5](figures/05.webp) SVE2 support is not enabled by default. To enable it, open the `CMakeLists.txt` (under app/cpp), and modify it by adding the following target_compile_options: diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part2.md b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part2.md index c2918b3313..fe414abd82 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part2.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_sve2/part2.md @@ -201,7 +201,7 @@ This method generates three pseudo-random vectors of floats and a fourth vector ## Build and Run the code To test the code described above, you will need an Armv8-powered device (for this example, we used a Samsung Galaxy S22). Follow [these steps](https://developer.android.com/studio/run/device) to prepare your device for development. Once your phone is configured, it will appear in the drop-down list at the top of Android Studio. -![img7](figures/07.png) +![img7](figures/07.webp) Select your phone and then click the play icon. This action will build and deploy the application to your device. Next, enter the vector length, for example, 10,000, and click the **Run calculations** button. Repeat the process after selecting the "Use SVE2?" checkbox. You should observe the following results: diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/1-webgpu-fundamentals.md b/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/1-webgpu-fundamentals.md index 4ffcff0a43..df79425dfe 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/1-webgpu-fundamentals.md +++ b/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/1-webgpu-fundamentals.md @@ -24,7 +24,7 @@ WebGPU is available through web browsers using the webgpu.h header file. The high-level view of WebGPU is shown below in Figure 1: -![Figure 1: WebGPU high level view #center](images/webgpu_highlevel.png "Figure 1: WebGPU High-Level View") +![Figure 1: WebGPU high level view #center](images/webgpu_highlevel.webp "Figure 1: WebGPU High-Level View") ## What are the benefits of WebGPU? diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.png b/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.png deleted file mode 100644 index f3248888a3..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.webp b/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.webp new file mode 100644 index 0000000000..1e5cccb0d5 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/images/webgpu_highlevel.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage.png b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage.png deleted file mode 100644 index ac645476e1..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage2.png b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage2.png deleted file mode 100644 index a9aa31fc13..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/Garage2.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.png b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.png deleted file mode 100644 index ac645476e1..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.webp b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.webp new file mode 100644 index 0000000000..eecbb61cd7 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.png b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.png deleted file mode 100644 index a9aa31fc13..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.webp b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.webp new file mode 100644 index 0000000000..68b0201518 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/images/garage2.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.png b/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.png deleted file mode 100644 index 92cb171353..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.webp b/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.webp new file mode 100644 index 0000000000..5778e629a7 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/images/2/view_binding.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/6-build-android-chat-app.md b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/6-build-android-chat-app.md index e229ba48d1..50f7dd5fe0 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/6-build-android-chat-app.md +++ b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/6-build-android-chat-app.md @@ -54,13 +54,13 @@ adb push /data/local/tmp/llama/ 1. Use Android Studio's device explorer to look for the model files. -![Device Explorer](device-explorer.png "Figure 1. Android Studio Device Explorer") +![Device Explorer](device-explorer.webp "Figure 1. Android Studio Device Explorer") 2. Upload the files. If the files are not on the device, use the device explorer to copy them. -![Files Upload](device-explorer-upload.png "Figure 2. Android Studio upload files using Device Explorer") +![Files Upload](device-explorer-upload.webp "Figure 2. Android Studio upload files using Device Explorer") ## Build the Android Package Kit diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.png b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.png deleted file mode 100644 index 6302af6466..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.webp b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.webp new file mode 100644 index 0000000000..7db94cdf2c Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer-upload.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.png b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.png deleted file mode 100644 index dccf23221e..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.webp b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.webp new file mode 100644 index 0000000000..af01dea112 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/device-explorer.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/02-ue.md b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/02-ue.md index 3801d49c43..7bb5d299cf 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/02-ue.md +++ b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/02-ue.md @@ -64,7 +64,7 @@ After reopening the Unreal Engine project, ensure that the Arm ASR plugin is ena 1. Go to **Edit > Plugins**, search for **Arm ASR**, and make sure that it is checked. - ![Verify the plugin](images/verify_plugin.png "Verify the plugin") + ![Verify the plugin](images/verify_plugin.webp "Verify the plugin") ![Plugin screen](images/plugin_screen.png "Plugin screen") diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.png b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.png deleted file mode 100644 index ffe4238a09..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.webp b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.webp new file mode 100644 index 0000000000..8eeb583ea6 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/arm_asr_view.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.png b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.png deleted file mode 100644 index ab4564614d..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.webp b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.webp new file mode 100644 index 0000000000..67e500192d Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/third_person_pack_opening_screen.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.png b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.png deleted file mode 100644 index abcca0cab6..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.webp b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.webp new file mode 100644 index 0000000000..25e2207814 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/images/verify_plugin.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/1-what-is-lumen.md b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/1-what-is-lumen.md index 93a8006218..6ebb075850 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/1-what-is-lumen.md +++ b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/1-what-is-lumen.md @@ -12,8 +12,8 @@ Lumen introduces a new ray-tracing based solution that allows developers to rend You can see the improvements in the rendering quality by comparing the following two images of the same scene. The first image uses only direct lighting where details in the areas beyond the direct lighting range (such as the background) are not visible. In contrast, the second image utilizes Lumen lighting, incorporating both direct and indirect lighting. Now, you can discern many more details in the background that were previously hidden, as Lumen takes light bounces into account. -![](images/no_lumen.png "Figure 1. The scene without Lumen has only dirct lighting.") +![](images/no_lumen.webp "Figure 1. The scene without Lumen has only dirct lighting.") -![](images/lumen.png "Figure 2. The scene with Lumen has both direct and indirect lighting.") +![](images/lumen.webp "Figure 2. The scene with Lumen has both direct and indirect lighting.") Lumen supports both software and hardware ray tracing. Software ray tracing uses a simplified Lumen scene to replace actual geometries in the scene. In contrast, hardware ray tracing uses actual geometries to trace rays, resulting in better lighting quality. diff --git a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.png b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.png deleted file mode 100644 index fc2112b3e9..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.webp b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.webp new file mode 100644 index 0000000000..6b7f3c500a Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/lumen.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.png b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.png deleted file mode 100644 index 3953066c8d..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.webp b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.webp new file mode 100644 index 0000000000..14f3cefff0 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/images/no_lumen.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/2-emulation-layer.md b/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/2-emulation-layer.md index 3ea024ac64..731c7886af 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/2-emulation-layer.md +++ b/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/2-emulation-layer.md @@ -47,7 +47,7 @@ Keep the Vulkan Configurator running to enable the emulation layers during engin 1. Open Unreal Engine and create a new **Third Person** template project using the **C++** option. -![Unreal Engine project selection screen showing C++ Third Person template#center](./images/unreal_startup.png "Figure 3: Create a new C++ project in Unreal Engine.") +![Unreal Engine project selection screen showing C++ Third Person template#center](./images/unreal_startup.webp "Figure 3: Create a new C++ project in Unreal Engine.") 2. Open the project in **Visual Studio**. Build it from source through **Build** > **Build Solution** or with `Ctrl+Shift+B`. diff --git a/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.png b/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.png deleted file mode 100644 index 6d2acfdce9..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.webp b/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.webp new file mode 100644 index 0000000000..6e21c0ab81 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/nss-unreal/images/unreal_startup.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/2-preparation.md b/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/2-preparation.md index 1bf6bb834a..1e7d2bf7a0 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/2-preparation.md +++ b/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/2-preparation.md @@ -134,4 +134,4 @@ You will now deploy the sample to your Android device. Your device must already Unity will take a moment to build the Android version and then automatically deploy it to your connected Android device. Depending on your setup, the build and deployment might take several minutes. -![Running on Android#center](images/android-plain-mode.jpg "Figure 6. Sample application running on Android.") +![Running on Android#center](images/android-plain-mode.webp "Figure 6. Sample application running on Android.") diff --git a/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.jpg b/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.jpg deleted file mode 100644 index 8a1cca5277..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.jpg and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.webp b/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.webp new file mode 100644 index 0000000000..ce917c1601 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/images/android-plain-mode.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.png deleted file mode 100644 index 6a362772e0..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.webp new file mode 100644 index 0000000000..6b93ce47b9 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.png deleted file mode 100644 index 6738699ba8..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.webp new file mode 100644 index 0000000000..920baab502 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.png deleted file mode 100644 index 376c2625fd..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.webp new file mode 100644 index 0000000000..cf2b3acfdc Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.png deleted file mode 100644 index 77f6fd3c0c..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.webp new file mode 100644 index 0000000000..d5cc02b546 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.png deleted file mode 100644 index 2be8ae4b30..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.webp new file mode 100644 index 0000000000..17bc6b3d59 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.png deleted file mode 100644 index 69b10b89b8..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.webp new file mode 100644 index 0000000000..1676a1e9de Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.png deleted file mode 100644 index 91bb63c158..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.webp new file mode 100644 index 0000000000..d3d0f070b6 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.png b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.png deleted file mode 100644 index 66f602c631..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.webp b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.webp new file mode 100644 index 0000000000..a94a7bf270 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/rt06_reflections.md b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/rt06_reflections.md index d78f6e987c..71fb9f037a 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/rt06_reflections.md +++ b/content/learning-paths/mobile-graphics-and-gaming/ray_tracing/rt06_reflections.md @@ -28,14 +28,14 @@ As you can see, reflections are ideal for ray tracing. Other traditional techniq It is common to find corner cases and bugs on Screen Space Reflection at the same time. This technique is more difficult to implement, requiring more magic numbers. The main limitation of Screen Space Reflections is that they depend on the G-buffer information, so occluded objects and objects outside the view frustum cannot be reflected, causing visible artifacts that are common in current games. {{< tabpane >}} - {{< tab header="Example 1: SSR" title="Example 1: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.png">}}{{< /tab >}} - {{< tab header="Example 1: RT" title="Example 1: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.png">}}{{< /tab >}} - {{< tab header="Example 2: SSR" title="Example 2: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.png">}}{{< /tab >}} - {{< tab header="Example 2: RT" title="Example 2: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.png">}}{{< /tab >}} - {{< tab header="Example 3: SSR" title="Example 3: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.png">}}{{< /tab >}} - {{< tab header="Example 3: RT" title="Example 3: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.png">}}{{< /tab >}} - {{< tab header="Example 4: SSR" title="Example 4: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.png">}}{{< /tab >}} - {{< tab header="Example 4: RT" title="Example 4: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.png">}}{{< /tab >}} + {{< tab header="Example 1: SSR" title="Example 1: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_ssr.webp">}}{{< /tab >}} + {{< tab header="Example 1: RT" title="Example 1: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_1_rt.webp">}}{{< /tab >}} + {{< tab header="Example 2: SSR" title="Example 2: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_ssr.webp">}}{{< /tab >}} + {{< tab header="Example 2: RT" title="Example 2: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_2_rt.webp">}}{{< /tab >}} + {{< tab header="Example 3: SSR" title="Example 3: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_ssr.webp">}}{{< /tab >}} + {{< tab header="Example 3: RT" title="Example 3: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_3_rt.webp">}}{{< /tab >}} + {{< tab header="Example 4: SSR" title="Example 4: Screen space reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_ssr.webp">}}{{< /tab >}} + {{< tab header="Example 4: RT" title="Example 4: Ray tracing reflections" img_src="/learning-paths/mobile-graphics-and-gaming/ray_tracing/images/reflections_artifacts_4_rt.webp">}}{{< /tab >}} {{< /tabpane >}} ### Generating Reflection rays from the G-buffer diff --git a/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/3-converting-model.md b/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/3-converting-model.md index e1af045a54..db62d0bb1e 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/3-converting-model.md +++ b/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/3-converting-model.md @@ -18,7 +18,7 @@ The open-source model consists of three main submodules. They are described in t |AutoEncoder| Compresses audio waveforms into a latent representation for processing by the DiT model, and decompresses the output back into audio. | -![Model structure#center](./model.png) +![Model structure#center](./model.webp) In this section, you will explore two different conversion routes, to convert the submodules to [LiteRT](https://ai.google.dev/edge/litert) format. Both methods will be run using Python wrapper scripts from the examples repository. diff --git a/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.png b/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.png deleted file mode 100644 index c4545fdd91..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.webp b/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.webp new file mode 100644 index 0000000000..2423c04d6e Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/model.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/06-the-unity-project.md b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/06-the-unity-project.md index 6b3683c4cb..fe818d5ac1 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/06-the-unity-project.md +++ b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/06-the-unity-project.md @@ -32,7 +32,7 @@ From here onwards, you can ignore the "Ready to Play" version of the scene. Inst 1. To get a better look at the scene from the player's perspective, right click on _ML-Player_ and select _Align View to Selected_. This will change the scene view to the viewpoint of your player character at ground level. You will see the inside of the arena and the enemy character in the distance. - ![Align View to ML-Player](images/ml-player-aligned-view.png "Figure 2. Align View to ML-Player") + ![Align View to ML-Player](images/ml-player-aligned-view.webp "Figure 2. Align View to ML-Player") 1. Check that the Package Manager is updated and everything is correctly installed by navigating to _Window->Package Manager_. @@ -174,6 +174,6 @@ ML-Core contains various managers and controllers common to many apps and games. The entire scene is lit from a single light called "Directional Light". The light is marked as "Realtime" so it doesn't include any baked lighting. -![Environment](images/environment-mesh-light.png "Figure 12. Our world consists of a single light and a single mesh for the whole battle arena.") +![Environment](images/environment-mesh-light.webp "Figure 12. Our world consists of a single light and a single mesh for the whole battle arena.") (You could add baked lighting or more realtime lights to make the lighting more interesting, but this is outside the scope of this learning path. If you do experiment with the lighting, remember that adding extra lights and changing some options can affect performance.) diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/08-training-our-ml-agents.md b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/08-training-our-ml-agents.md index 484f87a0a9..7589fdc271 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/08-training-our-ml-agents.md +++ b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/08-training-our-ml-agents.md @@ -172,7 +172,7 @@ Go to the _Project_ tab (normally bottom left) and navigate to _Assets->#DevSumm Once the training scene is loaded, it should look similar to this: -![Training Scene](images/training-scene.png "Figure 2. Training Scene") +![Training Scene](images/training-scene.webp "Figure 2. Training Scene") ### Start the training @@ -366,7 +366,7 @@ This section describes how TensorBoard can be used to monitor the training progr 1. Now open up your browser to http://localhost:6006 (the port that was passed to the launch command), which should look similar to this: - ![TensorBoard UI](images/tensorboard-ui.png "Figure 7. TensorBoard UI") + ![TensorBoard UI](images/tensorboard-ui.webp "Figure 7. TensorBoard UI") 1. Some cards to take a note of: diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/09-optimizations.md b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/09-optimizations.md index 6b372d93c6..e40e674623 100644 --- a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/09-optimizations.md +++ b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/09-optimizations.md @@ -9,7 +9,7 @@ layout: learningpathall A few things were done to reduce the time it takes to train the ML agents to a reasonable level. -![Training Scene](images/training-scene.png "Figure 1. The Training Scene (again)") +![Training Scene](images/training-scene.webp "Figure 1. The Training Scene (again)") ### Multiple simultaneous battles diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.png b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.png deleted file mode 100644 index 2d3ff84859..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.webp b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.webp new file mode 100644 index 0000000000..ed3f65d8b9 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/environment-mesh-light.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.png b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.png deleted file mode 100644 index f12311435d..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.webp b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.webp new file mode 100644 index 0000000000..a8182d2dc2 Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/ml-player-aligned-view.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.png b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.png deleted file mode 100644 index d4037071ee..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.webp b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.webp new file mode 100644 index 0000000000..27b34598be Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/tensorboard-ui.webp differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.png b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.png deleted file mode 100644 index 0d4e2a3323..0000000000 Binary files a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.png and /dev/null differ diff --git a/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.webp b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.webp new file mode 100644 index 0000000000..43f84461bd Binary files /dev/null and b/content/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/images/training-scene.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.png b/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.png deleted file mode 100644 index f4aa3ede82..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.webp b/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.webp new file mode 100644 index 0000000000..b1fd3062ab Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/test_prompt.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.png b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.png deleted file mode 100644 index ac4899c156..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.webp b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.webp new file mode 100644 index 0000000000..6728703cd7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/azure-cobalt-vm.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.png b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.png deleted file mode 100644 index 50380430ba..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.webp b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.webp new file mode 100644 index 0000000000..51175892e0 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/github-run.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.png b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.png deleted file mode 100644 index b8102b87c9..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.webp b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.webp new file mode 100644 index 0000000000..8e9a8ccf13 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/_images/kubernetes-deployment.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/azure-cobalt.md b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/azure-cobalt.md index fec4d190bb..6d382b66ca 100644 --- a/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/azure-cobalt.md +++ b/content/learning-paths/servers-and-cloud-computing/azure-cobalt-cicd-aks/azure-cobalt.md @@ -21,7 +21,7 @@ Select `Create Azure Virtual Machine`, and fill in the details such as `Name`, a In the `Size` field, click on `See all sizes` and select the `D-Series v6` family of VMs. Select `D2psv6` from the list and create the VM. -![azure-cobalt-vm #center](_images/azure-cobalt-vm.png) +![azure-cobalt-vm #center](_images/azure-cobalt-vm.webp) {{% notice Note %}} To learn more about Arm-based VMs in Azure, refer to "Getting Started with Microsoft Azure" in [*Get started with Arm-based cloud instances*](/learning-paths/servers-and-cloud-computing/csp/azure). @@ -251,11 +251,11 @@ It has the following main steps: The next step is to trigger the pipeline manually by navigating to `Actions` tab in the GitHub repository. Select `Deploy .NET app`, and click on `Run Workflow`. You can also execute the pipeline by making a commit to the repository. Once the pipeline executes successfully, you will see the Actions output in a format similar to what is shown below: -![github-run #center](_images/github-run.png) +![github-run #center](_images/github-run.webp) You can check your kubernetes cluster and see new application pods deployed on the cluster as shown below: -![kubernetes-deployment #center](_images/kubernetes-deployment.png) +![kubernetes-deployment #center](_images/kubernetes-deployment.webp) diff --git a/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.png b/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.png deleted file mode 100644 index cc8757c740..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.webp b/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.webp new file mode 100644 index 0000000000..310d3fbb2e Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/images/log.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/validation.md b/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/validation.md index 05041e9809..7cc648e455 100644 --- a/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/validation.md +++ b/content/learning-paths/servers-and-cloud-computing/buildkite-gcp/validation.md @@ -37,7 +37,7 @@ The main steps you'll see are: - Creating the Buildx builder - Building and pushing the multi-architecture Docker image -![Screenshot of the Buildkite dashboard displaying real-time build logs, showing each pipeline step and its status for monitoring progress alt-text#center](images/log.png "Monitor the build") +![Screenshot of the Buildkite dashboard displaying real-time build logs, showing each pipeline step and its status for monitoring progress alt-text#center](images/log.webp "Monitor the build") ## Verify multi-arch image diff --git a/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.md b/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.md index 4a4b232e2b..ea33d05e96 100644 --- a/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.md +++ b/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.md @@ -32,6 +32,6 @@ The attestation verification service is hosted by Linaro, so it is not necessary Figure 1 demonstrates the software architecture that you will construct to run the attestation example. -![cca-essentials](cca-essentials.png "Figure 1: Software architecture for running attestation.") +![cca-essentials](cca-essentials.webp "Figure 1: Software architecture for running attestation.") You can now proceed to the next section to run the end-to-end attestation example with the software components and architecture as described here. diff --git a/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.png b/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.png deleted file mode 100644 index 61d0ababea..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.webp b/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.webp new file mode 100644 index 0000000000..27c1f729a5 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/cca-essentials/cca-essentials.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-trustee/cca-trustee.md b/content/learning-paths/servers-and-cloud-computing/cca-trustee/cca-trustee.md index d217544637..182b83c8eb 100644 --- a/content/learning-paths/servers-and-cloud-computing/cca-trustee/cca-trustee.md +++ b/content/learning-paths/servers-and-cloud-computing/cca-trustee/cca-trustee.md @@ -99,6 +99,6 @@ When a resource is requested, the KBS uses the attestation result to decide whet This diagram shows the software architecture you will construct to run the attestation example: -![Software architecture for running attestation alt-text#center](trustee.png "Software architecture for running attestation") +![Software architecture for running attestation alt-text#center](trustee.webp "Software architecture for running attestation") Proceed to the next section to run the end-to-end attestation example using the components and architecture described here. diff --git a/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.png b/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.png deleted file mode 100644 index 3f8d9dae13..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.webp b/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.webp new file mode 100644 index 0000000000..2837ede447 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/cca-trustee/trustee.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.png b/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.png deleted file mode 100644 index c3c6b54f3f..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.webp b/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.webp new file mode 100644 index 0000000000..a707eda1e2 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/cert-validation-and-algorithm.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/domain-and-cert.md b/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/domain-and-cert.md index fa6515caf8..1b69d6a989 100644 --- a/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/domain-and-cert.md +++ b/content/learning-paths/servers-and-cloud-computing/cca-veraison-aws/domain-and-cert.md @@ -63,7 +63,7 @@ Use the **Add another name to this certificate** button to create the secondary For the validation method, you should use **DNS validation**, which is the recommended default. You can also use the default **RSA 2048** for the certificate key algorithm as shown below. -![Certificate Validation and Key Algorithm](./cert-validation-and-algorithm.png) +![Certificate Validation and Key Algorithm](./cert-validation-and-algorithm.webp) Now click **Request** to request the certificate from the Certificate Manager. diff --git a/content/learning-paths/servers-and-cloud-computing/codebuild/codebuild.md b/content/learning-paths/servers-and-cloud-computing/codebuild/codebuild.md index 8ece25d5f7..cdb7c01548 100644 --- a/content/learning-paths/servers-and-cloud-computing/codebuild/codebuild.md +++ b/content/learning-paths/servers-and-cloud-computing/codebuild/codebuild.md @@ -72,7 +72,7 @@ The Source section is where the GitHub project information is entered. To connec After the GitHub connection is made enter the GitHub URL for the project. Enter the link to the `hello-world` project in GitHub. -![alt-text #center](images/codebuild_source.png) +![alt-text #center](images/codebuild_source.webp) The Environment section contains the information about the Docker image to use for the build. This is NOT the Docker image you are building, it is the image used to build the image. CodeBuild runs a container to build the image and you need to make sure all of the tools needed are contained in the Docker image used to run the build. This is sometimes referred to as Docker-in-Docker. diff --git a/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.png b/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.png deleted file mode 100644 index ef58f356b4..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.webp b/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.webp new file mode 100644 index 0000000000..6f75af199b Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/codebuild/images/codebuild_source.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/alibaba.md b/content/learning-paths/servers-and-cloud-computing/csp/alibaba.md index 80828d44f0..8d16b7f940 100644 --- a/content/learning-paths/servers-and-cloud-computing/csp/alibaba.md +++ b/content/learning-paths/servers-and-cloud-computing/csp/alibaba.md @@ -34,25 +34,25 @@ The easiest way to launch your instance is via the [ECS Console](https://ecs.con Navigate to `Elastic Compute Service` by search or the menu. -![alibaba #center](images/588897d0-6c77-ee64-c7aa-235cbf460426.png "Navigate to the ECS Dashboard") +![alibaba #center](images/588897d0-6c77-ee64-c7aa-235cbf460426.webp "Navigate to the ECS Dashboard") Use the `Create ECS Instance` button to get started. Select `Custom Launch` configuration. -![alibaba #center](images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.png "Create Instance") +![alibaba #center](images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.webp "Create Instance") -![alibaba #center](images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.png "Custom Launch") +![alibaba #center](images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.webp "Custom Launch") ### Select a Billing Method `Subscription`, `Pay-as-you-go`, or `Preemptible Instance` options are available. If you are experimenting initially, select `Preemptible Instance` for the lowest cost. You will be prompted for pricing options later. -![alibaba #center](images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.png "Select a Billing Method") +![alibaba #center](images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.webp "Select a Billing Method") ### Select Instance Type Using the `Type-based Selection` tab, set `Architecture` as `ARM`, and `Category` as `General Purpose`, to see the available instance types. If you already know the desired instance type, you can enter this in the filter. -![alibaba #center](images/6ccdd195-7020-b944-4eed-846edf808b2a.png "Select Instance Type") +![alibaba #center](images/6ccdd195-7020-b944-4eed-846edf808b2a.webp "Select Instance Type") ### Select OS image @@ -60,29 +60,29 @@ There are many images available on the [Alibaba Cloud Marketplace](https://marke For now, select `Ubuntu` version (e.g. `20.04 64-bit for ARM`) from the pull-down menu. -![alibaba #center](images/c0329674-b751-5aa5-09b8-f2786a338d8e.png "Select OS Image") +![alibaba #center](images/c0329674-b751-5aa5-09b8-f2786a338d8e.webp "Select OS Image") ### Other settings Other settings, such as storage size are selectable. For now, use the default selection. Click `Next` to move to `Networking`. Proceed with the default selection for `Networking`. Click `Next` to move to `System Configurations`. -![alibaba #center](images/08b7ccdd-003f-b23d-de99-471aa11eb285.png "Configure Storage Options") +![alibaba #center](images/08b7ccdd-003f-b23d-de99-471aa11eb285.webp "Configure Storage Options") -![alibaba #center](images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.png "Configure Network Options") +![alibaba #center](images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.webp "Configure Network Options") ### Set a Key Pair and other security settings To be able to access the instance (see later), you must use a [key pair](https://www.alibabacloud.com/help/en/elastic-compute-service/latest/key-pairs). If this is your first time logging in, use the `Create Key Pair` dialog to create your key. The `public-key` will be downloaded to your local machine. When created, select from the pull-down. -![alibaba #center](images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.png "Select or create a key pair") +![alibaba #center](images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.webp "Select or create a key pair") Select `Logon Credentials` and set `Logon Username` to `ecs-user` and an appropriate `password` if desired. -![alibaba #center](images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.png "Set Username and Password for logon") +![alibaba #center](images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.webp "Set Username and Password for logon") Other settings such as `Instance Name` and `Description` are free-form for appropriate personal input. Other settings can be left as default. -![alibaba #center](images/fd90820b-5ac5-6fae-831c-1505028e4393.png "Advanced Settings(Optional)") +![alibaba #center](images/fd90820b-5ac5-6fae-831c-1505028e4393.webp "Advanced Settings(Optional)") In the `Preview` stage, click `Create Instance`. After a few moments, the instance will be available for use. diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.png b/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.png deleted file mode 100644 index 2fb42e708e..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.webp new file mode 100644 index 0000000000..aaccf53ebb Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/08b7ccdd-003f-b23d-de99-471aa11eb285.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.png b/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.png deleted file mode 100644 index ca29869eab..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.webp new file mode 100644 index 0000000000..dbb2fcb70b Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/2bd139ad-a28b-8e82-8dae-c0d7e54a4ebc.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.png b/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.png deleted file mode 100644 index 40b062c636..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.webp new file mode 100644 index 0000000000..45e4c74f6b Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/588897d0-6c77-ee64-c7aa-235cbf460426.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.png b/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.png deleted file mode 100644 index d9eee56abb..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.webp new file mode 100644 index 0000000000..28de47f72a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/6ccdd195-7020-b944-4eed-846edf808b2a.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.png b/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.png deleted file mode 100644 index b07122e453..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.webp new file mode 100644 index 0000000000..60722b03a7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/8be6f704-0b04-1a19-e156-9f4b5e2f6d10.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.png b/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.png deleted file mode 100644 index ff40452b78..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.webp new file mode 100644 index 0000000000..058d5f2312 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/99554b4b-5f15-2dce-4de4-c59e26a3a90e.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.png b/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.png deleted file mode 100644 index 64b62f6e88..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.webp new file mode 100644 index 0000000000..722507a947 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/axion-series.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.png b/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.png deleted file mode 100644 index 54d1c70734..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.webp new file mode 100644 index 0000000000..e760dd71a7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/bf231337-39ba-5d61-6bbb-4c9d2c3f8d6c.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.png b/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.png deleted file mode 100644 index ed7ed6b4e4..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.webp new file mode 100644 index 0000000000..8eee7d4138 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/bf7f23d0-2afb-6a84-60aa-78dc1c27be39.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.png b/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.png deleted file mode 100644 index a471531578..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.webp new file mode 100644 index 0000000000..123322bf0f Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/c0329674-b751-5aa5-09b8-f2786a338d8e.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.png b/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.png deleted file mode 100644 index 32db4095e2..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.webp new file mode 100644 index 0000000000..c3e39b04cd Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/ee8331cb-caec-a3a1-5ded-f7eb56f3e558.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.png b/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.png deleted file mode 100644 index b31bd91741..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.webp b/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.webp new file mode 100644 index 0000000000..de19bc80b7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/csp/images/fd90820b-5ac5-6fae-831c-1505028e4393.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.png deleted file mode 100644 index 003ac21034..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.webp new file mode 100644 index 0000000000..cbc64433c5 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/01.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.png deleted file mode 100644 index 64d16d1877..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.webp new file mode 100644 index 0000000000..c0688860c0 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/02.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.png deleted file mode 100644 index 95034a4371..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.webp new file mode 100644 index 0000000000..d08bb6534c Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/03.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.png deleted file mode 100644 index bfa146dec3..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.webp new file mode 100644 index 0000000000..1f8046d460 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/04.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.png deleted file mode 100644 index 02397535a7..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.webp new file mode 100644 index 0000000000..d748ea15b8 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/05.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.png deleted file mode 100644 index cf18075d8a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.webp new file mode 100644 index 0000000000..006e0078d6 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/06.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.png deleted file mode 100644 index 71ce5d540c..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.webp new file mode 100644 index 0000000000..114e1cfc95 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/07.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.png deleted file mode 100644 index 2d4ec1a290..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.webp new file mode 100644 index 0000000000..481ce4ed09 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/08.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.png deleted file mode 100644 index 0f3b3b50b6..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.webp new file mode 100644 index 0000000000..6a0d603728 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/09.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.png deleted file mode 100644 index e2d9a1776c..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.webp new file mode 100644 index 0000000000..58f1eb0403 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/11.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.png deleted file mode 100644 index 2e45c92ed4..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.webp new file mode 100644 index 0000000000..db69318d5d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/12.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.png deleted file mode 100644 index c142447989..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.webp new file mode 100644 index 0000000000..1d0a2e271a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/13.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.png deleted file mode 100644 index cd0590ee3f..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.webp new file mode 100644 index 0000000000..5d84d868e6 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/14.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.png deleted file mode 100644 index 702b9019b2..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.webp new file mode 100644 index 0000000000..392d510b71 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/15.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.png deleted file mode 100644 index 90472d2d16..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.webp new file mode 100644 index 0000000000..b381ed4f9a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/17.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.png deleted file mode 100644 index ed5474f1e7..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.webp new file mode 100644 index 0000000000..128f92878b Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/19.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.png deleted file mode 100644 index 2f3afd47ba..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.webp new file mode 100644 index 0000000000..fd7e58f655 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/20.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.png deleted file mode 100644 index 07d076c199..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.webp new file mode 100644 index 0000000000..5aae4d2368 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/21.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.png deleted file mode 100644 index 10e87fa1f5..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.webp new file mode 100644 index 0000000000..4f47994f50 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/22.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.png deleted file mode 100644 index d74b096180..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.webp new file mode 100644 index 0000000000..f15ea00d44 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/figures/23.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-2.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-2.md index 5a4eac0aa1..6b32749448 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-2.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-2.md @@ -10,16 +10,16 @@ layout: learningpathall ### Virtual Machine Azure Resource Let's start by creating the Virtual Machine. Go to https://portal.azure.com and sign in. You will see this screen which enables you to create Azure resources: -![Azure portal#left](figures/01.png "Figure 1. A fragment of the Azure Portal") +![Azure portal#left](figures/01.webp "Figure 1. A fragment of the Azure Portal") In the search box, type **VM**, and pick the first item on the list (Virtual machines): -![Selecting Virtual Machine resource#left](figures/02.png "Figure 2. Selecting the virtual machine Azure resource") +![Selecting Virtual Machine resource#left](figures/02.webp "Figure 2. Selecting the virtual machine Azure resource") In the Virtual machines, click **+ Create** (in the top left corner), and then select **Azure virtual machine**: -![Creating Virtual Machine#left](figures/03.png "Figure 3. Creating the virtual machine") +![Creating Virtual Machine#left](figures/03.webp "Figure 3. Creating the virtual machine") This takes you to the **Create a Virtual Machine** wizard as shown below: -![Creating Virtual Machine#left](figures/04.png "Figure 4. Virtual machine wizard") +![Creating Virtual Machine#left](figures/04.webp "Figure 4. Virtual machine wizard") ### Virtual machine configuration Configure your VM with the following settings: @@ -40,7 +40,7 @@ Configure your VM with the following settings: {{% notice Note %}} This size might not be available due to quota limits. If this happens, click **Request quota link** (which is located next to the **VM size** name). This will activate a New Quota Request. Type **2** under New limit and click Submit. Wait a few minutes for the quota limits to be updated.{{% /notice %}} At this point, your configuration should look like this example: -![Creating Virtual Machine#left](figures/05.png "Figure 5. Virtual machine wizard (configured)") +![Creating Virtual Machine#left](figures/05.webp "Figure 5. Virtual machine wizard (configured)") Let's now configure other aspects of the Virtual Machine: 1. Administrator account. **Select Password**, and then populate with: @@ -49,11 +49,11 @@ Let's now configure other aspects of the Virtual Machine: * Confirm password: re-type your password 2. Inbound port rules. Keep them default: **SSH(22)** -![Creating Virtual Machine#left](figures/06.png "Figure 6. Administrator account and inbound rules of the virtual machine") +![Creating Virtual Machine#left](figures/06.webp "Figure 6. Administrator account and inbound rules of the virtual machine") Click the **Review + create** button. The Azure Portal will validate your configuration and, if all is correct, you will see a green box saying: **Validation passed**: -![Creating Virtual Machine#left](figures/07.png "Figure 7. A summary of the create virtual machine wizard") +![Creating Virtual Machine#left](figures/07.webp "Figure 7. A summary of the create virtual machine wizard") Click the Create button. The portal will now start the process of creating your VM. You will notice that, apart from the VM itself, the portal creates additional resources for you: * Public IP address (you'll need to use it to connect to the VM and then to see your application running) @@ -63,9 +63,9 @@ Click the Create button. The portal will now start the process of creating your * Virtual disk Wait a few moments for the deployment to be completed: -![Creating Virtual Machine#left](figures/08.png "Figure 8. A confirmation screen") +![Creating Virtual Machine#left](figures/08.webp "Figure 8. A confirmation screen") Finally, click the **Go to resource** button. You'll be redirected to the overview of your newly created virtual machine in Microsoft Azure: -![Creating Virtual Machine#left](figures/09.png "Figure 9. An overview of the virtual machine") +![Creating Virtual Machine#left](figures/09.webp "Figure 9. An overview of the virtual machine") Note your Public IP address (top right part of the overview). In this tutorial, this is **52.149.156.228**. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-3.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-3.md index 5c193b7a2a..1861508630 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-3.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-3.md @@ -17,10 +17,10 @@ To open the Cloud Shell, click on the Cloud Shell icon located in the top right ![Azure Cloud Shell#left](figures/10.png "Figure 10. A top right corner of the Azure Portal") This will activate a new popup window which appears at the bottom of the Azure Portal: -![Azure Cloud Shell#left](figures/11.png "Figure 11. Mounting a storage") +![Azure Cloud Shell#left](figures/11.webp "Figure 11. Mounting a storage") Click **Create storage**, and wait until the storage account is created. A Cloud Shell terminal should be ready. If it asks you for the interpreter, select **Bash**. The Cloud Shell terminal will look as follows: -![Azure Cloud Shell#left](figures/12.png "Figure 12. Cloud shell") +![Azure Cloud Shell#left](figures/12.webp "Figure 12. Cloud shell") ### Connecting to the Virtual Machine using Azure Cloud Shell You can now use the Cloud Shell to connect to the VM via SSH. To do so, type the Public IP address (remember to use the Public IP address of your virtual machine): @@ -30,6 +30,6 @@ ssh arm@52.149.156.228 ``` This will initiate the connection with the VM. The SSH will display the following message: Are you sure you want to continue connecting (yes/no/[fingerprint])? Type **yes**. Then provide your password to authenticate: -![Azure Cloud Shell#left](figures/13.png "Figure 13. Authentication") +![Azure Cloud Shell#left](figures/13.webp "Figure 13. Authentication") You now have terminal access to the VM. You can use it in the next step to install application dependencies (.NET SDK). diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-4.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-4.md index 003e3d6a8c..53d6c4905b 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-4.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-4.md @@ -61,7 +61,7 @@ dotnet run --urls "http://0.0.0.0:8080" ``` After completing this step, you will see the following output: -![Application#left](figures/14.png "Figure 14. Cloning and running the application") +![Application#left](figures/14.webp "Figure 14. Cloning and running the application") The application is ready and listening for the requests on port 8080. However, the network traffic is blocked on all ports except 22. You will need to configure the Network Security Group to enable the traffic. @@ -69,7 +69,7 @@ The application is ready and listening for the requests on port 8080. However, t To allow traffic on port 8080 for the Virtual Machine **vm-arm64**, proceed as follows: 1. In the search box of the Azure Portal, type **vm-arm64** and select this resource 2. In the **vm-arm64** screen, click the **Networking** tab on the left (it's under **Settings**). You will see the following screen: -![Application#left](figures/15.png "Figure 15. Networking tab of the virtual machine") +![Application#left](figures/15.webp "Figure 15. Networking tab of the virtual machine") In the **Networking** tab of the Virtual Machine, click the **Add inbound port rule** button (it's on the right). This will open a new popup window **Add inbound security rule**: ![Application#left](figures/16.png "Figure 16. Adding inbound port rule") @@ -88,7 +88,7 @@ Ensure the rule is configured as follows: Then, click **Add** and wait for the security rule to be applied. Once this is done, open your web browser and type the public IP address of your VM followed by 8080 port: **52.149.156.228:8080**. You'll see that the application is up and running: -![Application#left](figures/17.png "Figure 17. An application deployed to Azure virtual machine") +![Application#left](figures/17.webp "Figure 17. An application deployed to Azure virtual machine") ## Summary This part of the tutorial has shown you how to create an arm64-powered Virtual Machine in Microsoft Azure, how to connect to that VM using SSH, and how to install the tools required to build and run the .NET web application. Finally, you have learned how to configure a network security group to enable inbound traffic on port 8080. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-6.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-6.md index 2dfd90e1a0..d2119ad987 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-6.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-6.md @@ -34,7 +34,7 @@ sudo docker build -t people.webapp:v1 . ``` Then, type your password, and you will see the Docker build progress: -![command prompt#left](figures/19.png "Figure 19. Building a Docker image") +![command prompt#left](figures/19.webp "Figure 19. Building a Docker image") {{% notice Note %}} In the above example, we used the -t flag to tag the image (people.webapp:v1). Also, we used . to set the build context to the working directory. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-7.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-7.md index b450d9f57f..aa044ad6f1 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-7.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-7.md @@ -32,7 +32,7 @@ az acr create -n people -g rg-arm64 --sku Basic ``` The output of the above commands will look as shown below: -![command prompt#left](figures/20.png "Figure 20. Creating the Azure Container Registry") +![command prompt#left](figures/20.webp "Figure 20. Creating the Azure Container Registry") In the next step, we must configure the role assignment so that the current Azure user can push Docker images to the Azure Container Registry. To do so, we use the WSL terminal, in which we type: ```console @@ -46,4 +46,4 @@ az role assignment create --assignee $USER_ID --role AcrPush --scope $ACR_ID {{% notice Note %}} You’ll need to replace with the username you used. {{% /notice %}} The last command's output will look as follows: -![command prompt#left](figures/21.png "Figure 21. Creating the role assignment") +![command prompt#left](figures/21.webp "Figure 21. Creating the role assignment") diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-8.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-8.md index 82db22ed79..fb8605a381 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-8.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part1/how-to-8.md @@ -33,7 +33,7 @@ The last command does not provide any output. To ensure the local image was corr sudo docker images ``` -![command prompt#left](figures/22.png "Figure 22. Tagging a local Docker image") +![command prompt#left](figures/22.webp "Figure 22. Tagging a local Docker image") Finally, we push the image to the remote registry. We proceed as follows: @@ -58,7 +58,7 @@ az acr repository show -n people --repository people.webapp -o table ``` The output from the commands above is shown here: -![command prompt#left](figures/23.png "Figure 23. Pushing a Docker image to the Azure Container Registry") +![command prompt#left](figures/23.webp "Figure 23. Pushing a Docker image to the Azure Container Registry") ## Summary This part of the tutorial taught you how to create the container registry in Microsoft Azure and push the local Docker image to the remote repository. Along the way, you learned how to work with Azure Command Line Interface (`Azure CLI`) to create and manage resources in Azure. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.png deleted file mode 100644 index ade0996019..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.webp new file mode 100644 index 0000000000..f2eb79d663 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/02.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.png deleted file mode 100644 index ec15edee7b..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.webp new file mode 100644 index 0000000000..8d72cefaa7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/03.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.png deleted file mode 100644 index 997366560d..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.webp new file mode 100644 index 0000000000..02bfba1535 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/04.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.png deleted file mode 100644 index de07919bb2..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.webp new file mode 100644 index 0000000000..44da257748 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/05.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.png deleted file mode 100644 index 11d3a9c974..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.webp new file mode 100644 index 0000000000..143f1b1b8a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/06.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.png deleted file mode 100644 index 759a0bbc2c..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.webp new file mode 100644 index 0000000000..d976b37a25 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/07.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.png deleted file mode 100644 index 0a23967aab..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.webp new file mode 100644 index 0000000000..15deca4f00 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/08.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.png deleted file mode 100644 index f17a1f05b4..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.webp new file mode 100644 index 0000000000..75549a5f09 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/figures/12.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-1.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-1.md index 6a871f329e..bfbeb1d8a1 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-1.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-1.md @@ -28,7 +28,7 @@ The above procedure will open the Container instances, in which you click the ** At this point, the Create container instance wizard will look as shown below: -![Azure#left](figures/02.png) +![Azure#left](figures/02.webp) Then, continue with the other settings: 1. SKU: **Standard** @@ -41,11 +41,11 @@ Then, continue with the other settings: You should end up with the following configuration: -![Azure#left](figures/03.png) +![Azure#left](figures/03.webp) Now you will need to configure the port mapping. Let's click the **Next: Networking >** button, and under the Networking tab scroll down to Ports. Then, add an 8080 port for the TCP protocol: -![Azure#left](figures/04.png) +![Azure#left](figures/04.webp) This setting enables us to create the port mapping, which will map port 8080 of the container instance to the corresponding point inside the running container. @@ -53,8 +53,8 @@ This setting enables us to create the port mapping, which will map port 8080 of Finally, click the **Review + create** button. This will run the final validation of your configuration, and you will see the following screen: -![Azure#left](figures/05.png) +![Azure#left](figures/05.webp) Click the **Create** button, and wait a few moments for the resource to be created. You will then see the confirmation screen, where you click the **Go to resource** button. -![Azure#left](figures/06.png) +![Azure#left](figures/06.webp) diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-2.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-2.md index 984013e096..10659b4065 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-2.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-2.md @@ -12,10 +12,10 @@ To see that the containerized application is up and running. To check this, use ### Public IP To get the public IP address, use an Overview tab of the aspnet-sample container instance (see below). The IP is displayed under the IP address (Public). In my case, that is **20.75.152.37**. -![Azure#left](figures/07.png) +![Azure#left](figures/07.webp) Copy the IP address to the clipboard, and then open the web browser and paste this IP address followed by the 8080 port to the web browser address bar, e.g., **20.75.152.37:8080**: -![Azure#left](figures/08.png) +![Azure#left](figures/08.webp) This result shows that the Azure Container Instance uses x64 processor architecture. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-3.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-3.md index 80734edc23..4bf9f32f26 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-3.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part2/how-to-3.md @@ -47,7 +47,7 @@ You can now create another Azure Container Instance. To do this, go to the Azure 12. OS type: **Linux** 13. Size: **1 vcpu, 1.5 GiB memory, 0 gpus** (or choose any other size, if this specific size is unavailable in the Azure region you used) -![Azure#left](figures/12.png) +![Azure#left](figures/12.webp) Click the **Review + create** button. Wait for the validation to complete, and then click the **Create** button. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.png deleted file mode 100644 index 767f1caa6d..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.webp new file mode 100644 index 0000000000..839879d3ed Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/03.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.png deleted file mode 100644 index 0876a20333..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.webp new file mode 100644 index 0000000000..646b7796c4 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/04.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.png deleted file mode 100644 index 50a5e588bf..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.webp new file mode 100644 index 0000000000..ebdb1d5deb Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/05.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.png deleted file mode 100644 index 41358d0beb..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.webp new file mode 100644 index 0000000000..fb703a8b48 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/06.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.png deleted file mode 100644 index 7cb9475c32..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.webp new file mode 100644 index 0000000000..ef63725abe Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/07.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.png deleted file mode 100644 index 8e87de2d20..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.webp new file mode 100644 index 0000000000..71ddc09650 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/08.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.png deleted file mode 100644 index fde89f3d8c..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.webp new file mode 100644 index 0000000000..a1628692ac Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/10.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.png deleted file mode 100644 index f8d0b35c09..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.webp new file mode 100644 index 0000000000..eee4a5fdaa Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/11.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.png deleted file mode 100644 index 0865044485..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.webp new file mode 100644 index 0000000000..96e85cc91d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/figures/12.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-2.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-2.md index b29f722a92..84c98dd14f 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-2.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-2.md @@ -32,11 +32,11 @@ The previous step will activate the Create Kubernetes cluster wizard, which you At this point, your configuration should look as follows: -![AKS#left](figures/03.png) +![AKS#left](figures/03.webp) Click **Next: Node pools >**. This will open the Node pools tab. Under the Node pools tab, click the hyperlink **Standard DS2_v2 (change)** under the Node size column of the agent pool: -![AKS#left](figures/04.png) +![AKS#left](figures/04.webp) You will see the Update node pool wizard, in which you do the following: 1. Under the Scale method, select **Manual** @@ -45,21 +45,21 @@ You will see the Update node pool wizard, in which you do the following: 4. This will open Select a VM size screen, where you look for **D2pds_v5 VM** (the arm64-based VM you used in the first part of this learning series). 5. Click the **Select** button -![AKS#left](figures/05.png) +![AKS#left](figures/05.webp) Your Update node pool wizard should look as follows: -![AKS#left](figures/06.png) +![AKS#left](figures/06.webp) Click the **Update** button. This will take you back to the Create Kubernetes cluster wizard, where you click the **Next: Networking >** button. Under the **Networking** tab, scroll down to Network policy and select **None**. Then click the **Next: Integrations >** button. Under integrations, look for the Container registry and select **people** (or your Azure Container Registry, if you used a different name): -![AKS#left](figures/07.png) +![AKS#left](figures/07.webp) Finally, click the **Review + create** button and wait for the validation to complete. Then, click the **Create** button: -![AKS#left](figures/08.png) +![AKS#left](figures/08.webp) Wait a few moments for the cluster to be deployed, and in the confirmation screen, click the **Go to resource** button. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-3.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-3.md index 272c885615..d7e8fed76b 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-3.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-3.md @@ -34,6 +34,6 @@ kubectl get nodes The output of this command will look as shown below: -![AKS#left](figures/10.png) +![AKS#left](figures/10.webp) We have one node, which we will now use to deploy the application. diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-4.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-4.md index 357e88d1be..79531ddd7c 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-4.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part3/how-to-4.md @@ -33,7 +33,7 @@ code people_aks.yaml 4. This will open the code/text editor in Azure: -![AKS#left](figures/11.png) +![AKS#left](figures/11.webp) 5. Check line number 17. In our case, it points to the fully qualified container image name, **image: people.azurecr.io/people.webapp:v1**. This includes the container registry login server, image name, and image tag. The login server is the same one we created in part 2 of this learning path series. If you use a different name for either the container registry or the container name, update line 17 correspondingly. Then save the changes to the same file, people_aks.yml (CTRL+S), and close the editor (CTRL+Q). @@ -55,7 +55,7 @@ kubectl get svc This will display the list of services as shown below: -![AKS#left](figures/12.png) +![AKS#left](figures/12.webp) Note the IP address under the **EXTERNAL-IP** column of **people-web-appsvc**. That is the Public IP where you can find your application. In my case, that is **4.156.88.80**. By typing this IP in the web browser, you will see an application up and running: diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.png deleted file mode 100644 index 5489716984..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.webp new file mode 100644 index 0000000000..f0b384c999 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/01.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.png deleted file mode 100644 index 8bc15190ee..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.webp new file mode 100644 index 0000000000..7c85b56181 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/02.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.png deleted file mode 100644 index 74e0893699..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.webp new file mode 100644 index 0000000000..b9e0aba9f1 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/03.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.png deleted file mode 100644 index 60a748a0c0..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.webp new file mode 100644 index 0000000000..39754b1d62 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/04.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.png deleted file mode 100644 index 4612df0e5a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.webp new file mode 100644 index 0000000000..6121cd12e4 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/05.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.png deleted file mode 100644 index 547605b84e..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.webp new file mode 100644 index 0000000000..5f8f8f0063 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/06.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.png b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.png deleted file mode 100644 index 029c82bb35..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.webp b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.webp new file mode 100644 index 0000000000..d1ff2255a6 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/figures/07.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-2.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-2.md index dc5cb8a120..1ac5d91c04 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-2.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-2.md @@ -38,7 +38,7 @@ pulumi new azure-typescript The last command starts the wizard, but you first need to log in to Pulumi (see below). -![Pulumi#left](figures/01.png) +![Pulumi#left](figures/01.webp) You can use the access token or press ENTER to log in using a web browser. @@ -50,4 +50,4 @@ After you log in to Pulumi, configure the project as follows: The wizard will save this configuration and proceed to install the npm packages required by Pulumi: -![Pulumi#left](figures/02.png) +![Pulumi#left](figures/02.webp) diff --git a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-4.md b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-4.md index be157a27bd..c6bba4d6b1 100644 --- a/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-4.md +++ b/content/learning-paths/servers-and-cloud-computing/from-iot-to-the-cloud-part4/how-to-4.md @@ -63,15 +63,15 @@ pulumi up The Pulumi will analyze your index.ts file to get the list of resources to be deployed. Then, it will display the list of resources to be deployed: -![Pulumi#left](figures/03.png) +![Pulumi#left](figures/03.webp) Confirm the deployment by selecting yes and pressing enter. Then, wait a few moments for the resources to be deployed. Once the deployment is done, you will see the public IP address of your Azure Container Instance. Here, that is **4.236.196.236**. -![Pulumi#left](figures/04.png) +![Pulumi#left](figures/04.webp) Copy the IP address and supplement it by 8080. Then, type it in the address bar of your web browser. You will see the application up and running. Compare this result to what we get in part 2 of this series. -![Pulumi#left](figures/05.png) +![Pulumi#left](figures/05.webp) ## Clean up We have just deployed Azure resources using the Infrastructure as Code. The advantage of this approach is that we can now update the cloud infrastructure by modifying the index.ts and re-running the pulumi up command. It will compare the new declaration with the current state of the cloud deployment and update if needed. Also, you can use a single Pulumi command to de-provision all resources declared in the index.ts. To do so, you type: @@ -82,11 +82,11 @@ pulumi down Pulumi will ask you to confirm your choice (select yes and press enter): -![Pulumi#left](figures/06.png) +![Pulumi#left](figures/06.webp) After a few moments, you will see the delete confirmation message: -![Pulumi#left](figures/07.png) +![Pulumi#left](figures/07.webp) ## Summary You learned how to use infrastructure as code using Pulumi in this learning path. This approach is particularly beneficial as you can code cloud infrastructure as an application. Therefore, you can keep the declarations of the cloud infrastructure in the git repository and apply typical workflows you use for the application code development and deployment, like pull requests. \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/gh-copilot-simple/copilot-test.md b/content/learning-paths/servers-and-cloud-computing/gh-copilot-simple/copilot-test.md index 8b8598490e..1492731b22 100644 --- a/content/learning-paths/servers-and-cloud-computing/gh-copilot-simple/copilot-test.md +++ b/content/learning-paths/servers-and-cloud-computing/gh-copilot-simple/copilot-test.md @@ -45,7 +45,7 @@ Lastly, the chat output from your extension is printed. Here it is in VS Code: -![#Copilot output](_images/output.png) +![#Copilot output](_images/output.webp) Your GitHub Copilot Extension is now responding to chat prompts. diff --git a/content/learning-paths/servers-and-cloud-computing/golang-on-azure/baseline-testing.md b/content/learning-paths/servers-and-cloud-computing/golang-on-azure/baseline-testing.md index 45623d22e6..0d8d747aef 100644 --- a/content/learning-paths/servers-and-cloud-computing/golang-on-azure/baseline-testing.md +++ b/content/learning-paths/servers-and-cloud-computing/golang-on-azure/baseline-testing.md @@ -156,7 +156,7 @@ echo "http://$(curl -s ifconfig.me)/" Open this URL in your browser. You should see the styled HTML landing page served by your Go application. -![Go web server running on Azure Cobalt 100 Arm64 alt-text#center](images/go-web.png "Go web server running on Azure Cobalt 100 Arm64") +![Go web server running on Azure Cobalt 100 Arm64 alt-text#center](images/go-web.webp "Go web server running on Azure Cobalt 100 Arm64") ## Baseline Testing Complete diff --git a/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.png b/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.png deleted file mode 100644 index 66618480f2..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.webp b/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.webp new file mode 100644 index 0000000000..fe16a3fcac Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/golang-on-azure/images/go-web.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/1_setup.md b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/1_setup.md index 5bdd5fa0ca..3207d88cb6 100644 --- a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/1_setup.md +++ b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/1_setup.md @@ -77,9 +77,9 @@ In your browser, open: `http://${tomcat_ip}:8080/examples`. You should see the Tomcat welcome page and examples, as shown below: -![Screenshot of the Tomcat homepage showing version and welcome panel alt-text#center](./_images/lp-tomcat-homepage.png "Apache Tomcat homepage") +![Screenshot of the Tomcat homepage showing version and welcome panel alt-text#center](./_images/lp-tomcat-homepage.webp "Apache Tomcat homepage") -![Screenshot of the Tomcat examples page showing servlet and JSP demo links alt-text#center](./_images/lp-tomcat-examples.png "Apache Tomcat examples") +![Screenshot of the Tomcat examples page showing servlet and JSP demo links alt-text#center](./_images/lp-tomcat-examples.webp "Apache Tomcat examples") {{% notice Note %}}Make sure port 8080 is open in the security group of the IP address for your Arm-based Linux machine.{{% /notice%}} diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/2_async-profiler.md b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/2_async-profiler.md index cd1f236620..1d69ee7126 100644 --- a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/2_async-profiler.md +++ b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/2_async-profiler.md @@ -51,4 +51,4 @@ Alternatively, if you already know the process ID (PID): Open the generated `profile.html` file in a browser to view your Java flame graph: -![Flame graph visualization showing Java method stack traces captured using async-profile alt-text#center](_images/lp-flamegraph-async.png "Java flame graph built using async-profiler") +![Flame graph visualization showing Java method stack traces captured using async-profile alt-text#center](_images/lp-flamegraph-async.webp "Java flame graph built using async-profiler") diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/3_agent.md b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/3_agent.md index c2de6d84a4..3c82a4b783 100644 --- a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/3_agent.md +++ b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/3_agent.md @@ -69,4 +69,4 @@ sudo perf inject -j -i perf.data | perf script | stackcollapse-perf.pl | flamegr You can now launch `profile.svg` in a browser to analyse the profiling result: -![Flame graph visualization of Java method calls collected using perf and a Java agent on a Tomcat server alt-text#center](_images/lp-flamegraph-agent.png "Java flame graph built through Java agent and perf") +![Flame graph visualization of Java method calls collected using perf and a Java agent on a Tomcat server alt-text#center](_images/lp-flamegraph-agent.webp "Java flame graph built through Java agent and perf") diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.png b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.png deleted file mode 100644 index d06da3f822..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.webp b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.webp new file mode 100644 index 0000000000..737986f69a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-agent.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.png b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.png deleted file mode 100644 index d78ac14934..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.webp b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.webp new file mode 100644 index 0000000000..fdddbd9712 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-flamegraph-async.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.png b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.png deleted file mode 100644 index 2590c08f65..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.webp b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.webp new file mode 100644 index 0000000000..cc08bbcee6 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-examples.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.png b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.png deleted file mode 100644 index 56b23a733a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.webp b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.webp new file mode 100644 index 0000000000..463a244aeb Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/java-perf-flamegraph/_images/lp-tomcat-homepage.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/kafka-azure/_index.md b/content/learning-paths/servers-and-cloud-computing/kafka-azure/_index.md index f9b2845871..99685a606c 100644 --- a/content/learning-paths/servers-and-cloud-computing/kafka-azure/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/kafka-azure/_index.md @@ -7,19 +7,19 @@ cascade: minutes_to_complete: 30 -who_is_this_for: This Learning Path is designed for software developers looking to migrate their Kafka workloads from x86_64 to Arm-based platforms, specifically on the Microsoft Azure Cobalt 100 processors. +who_is_this_for: This is an advanced topic designed for software developers looking to migrate their Kafka workloads from x86_64 to Arm-based platforms, specifically on the Microsoft Azure Cobalt 100 processors. learning_objectives: - Provision an Azure Arm64 virtual machine using Azure console, with Ubuntu Pro 24.04 LTS as the base image. - Deploy Kafka on the Ubuntu virtual machine. - - Perform Kafka baseline testing and benchmarking on both x86_64 and Arm64 virtual machines. + - Perform Kafka baseline testing and benchmarking on Arm64 virtual machines. prerequisites: - A [Microsoft Azure](https://azure.microsoft.com/) account with access to Cobalt 100 based instances (Dpsv6). - Basic understanding of Linux command line. - Familiarity with the [Apache Kafka architecture](https://kafka.apache.org/) and deployment practices on Arm64 platforms. -author: Jason Andrews +author: Pareena Verma ### Tags skilllevels: Advanced @@ -31,8 +31,6 @@ armips: tools_software_languages: - Kafka - - kafka-producer-perf-test.sh - - kafka-consumer-perf-test.sh operatingsystems: - Linux diff --git a/content/learning-paths/servers-and-cloud-computing/kafka-azure/baseline.md b/content/learning-paths/servers-and-cloud-computing/kafka-azure/baseline.md index 46453417d3..e53e41266a 100644 --- a/content/learning-paths/servers-and-cloud-computing/kafka-azure/baseline.md +++ b/content/learning-paths/servers-and-cloud-computing/kafka-azure/baseline.md @@ -8,26 +8,30 @@ layout: learningpathall ## Run a Baseline test with Kafka -After installing Kafka on your Arm64 virtual machine, you can perform a simple baseline test to validate that Kafka runs correctly and produces the expected output. +After installing Apache Kafka 4.1.0 on your Azure Cobalt 100 Arm64 virtual machine, you can perform a baseline test to verify that Kafka runs correctly and that messages can be produced and consumed end-to-end. +Kafka 4.1.0 introduces KRaft mode (Kafka Raft Metadata mode), which integrates the control and data planes, eliminating the need for ZooKeeper. +This simplifies deployment, reduces latency, and provides a unified, self-managed Kafka cluster architecture. -Kafka 4.1.0 uses **KRaft**, which integrates the control and data planes, eliminating the need for a separate ZooKeeper instance. - -We need 4 terminals to complete this test. The first will start the Kafka server, the second will create a topic, and the final two will send and receive messages, respectively. +To perform this baseline test, you will use four terminal sessions: +Terminal 1: Start the Kafka broker (in KRaft mode). +Terminal 2: Create a topic. +Terminal 3: Send messages (Producer). +Terminal 4: Read messages (Consumer). ### Initial Setup: Configure & Format KRaft -**KRaft** is Kafka's new metadata protocol that integrates the responsibilities of ZooKeeper directly into Kafka, simplifying deployment and improving scalability by making the brokers self-managing. - -First, you must configure your `server.properties` file for KRaft and format the storage directory. These steps are done only once. +KRaft (Kafka Raft) replaces ZooKeeper by embedding metadata management directly into the Kafka broker. +This improves scalability, reduces external dependencies, and speeds up controller failover in distributed clusters. +Before starting Kafka in KRaft mode, configure and initialize the storage directory. These steps are required only once per broker. -**1. Edit the Configuration File**: Open your `server.properties` file. +1. Edit the Configuration File +Open the Kafka configuration file in an editor: ```console -nano /opt/kafka/config/server.properties +vi /opt/kafka/config/server.properties ``` -**2. Add/Modify KRaft Properties:** Ensure the following lines are present and correctly configured for a single-node setup. - -This configuration file sets up a single Kafka server to act as both a **controller** (managing cluster metadata) and a broker (handling data), running in **KRaft** mode. It defines the node's unique ID and specifies the local host as the sole participant in the **controller** quorum. +2. Add or Modify KRaft Properties +Ensure the following configuration entries are present for a single-node KRaft setup: ```java process.roles=controller,broker @@ -37,28 +41,41 @@ listeners=PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listeners=PLAINTEXT://localhost:9092 log.dirs=/tmp/kraft-combined-logs ``` -**3. Format the Storage Directory:** Use the `kafka-storage.sh` tool to format the metadata directory. +This configuration file sets up a single Kafka server to act as both a controller (managing cluster metadata) and a broker (handling data), running in KRaft mode. It defines the node's unique ID and specifies the local host as the sole participant in the controller quorum. + +3. Format the Storage Directory +Format the metadata storage directory using the kafka-storage.sh tool. This initializes KRaft’s internal Raft logs with a unique cluster ID. ```console bin/kafka-storage.sh format -t $(bin/kafka-storage.sh random-uuid) -c config/server.properties ``` -You should see an output similar to: +You should see output similar to: ```output Formatting metadata directory /tmp/kraft-combined-logs with metadata.version 4.1-IV1. ``` +This confirms that the Kafka storage directory has been successfully formatted and that the broker is ready to start in KRaft mode. -Now, Perform the Baseline Test +## Perform the Baseline Test +With Kafka 4.1.0 installed and configured in KRaft mode, you’re now ready to run a baseline test to verify that the Kafka broker starts correctly, topics can be created, and message flow works as expected. + +You’ll use multiple terminals for this test: +Terminal 1: Start the Kafka broker. +Terminal 2: Create and verify a topic. +Terminal 3: Send messages (Producer). +Terminal 4: Read messages (Consumer). ### Terminal 1 – Start Kafka Broker -This command starts the Kafka broker (the main server that sends and receives messages) in KRaft mode. Keep this terminal open. +Start the Kafka broker (the main server process responsible for managing topics and handling messages) in KRaft mode: ```console cd /opt/kafka bin/kafka-server-start.sh config/server.properties ``` +Keep this terminal open and running. The broker process must stay active for all subsequent commands. + ### Terminal 2 – Create a Topic -This command creates a new Kafka topic named `test-topic-kafka` (like a channel where messages will be stored and shared) with 1 partition and 1 copy (replica). +Open a new terminal window. Create a topic named test-topic-kafka, which acts as a logical channel where producers send and consumers receive messages: ```console cd /opt/kafka @@ -70,7 +87,8 @@ You should see output similar to: Created topic test-topic-kafka. ``` -- **Verify topic** +**Verify Topic Creation** +List available topics to confirm that your new topic was created successfully: ```console bin/kafka-topics.sh --list --bootstrap-server localhost:9092 @@ -81,24 +99,33 @@ You should see output similar to: __consumer_offsets test-topic-kafka ``` +Kafka is now running, and you’ve successfully created and verified a topic. +Next, you’ll use Terminal 3 to produce messages and Terminal 4 to consume messages, completing the baseline functional test on your Arm64 environment. ### Terminal 3 – Console Producer (Write Message) -This command starts the **Kafka Producer**, which lets you type and send messages into the `test-topic-kafka` topic. For example, when you type `hello from azure vm`, this message will be delivered to any Kafka consumer subscribed to that topic. +In this step, you’ll start the Kafka Producer, which publishes messages to the topic test-topic-kafka. The producer acts as the data source, sending messages to the Kafka broker. ```console cd /opt/kafka bin/kafka-console-producer.sh --topic test-topic-kafka --bootstrap-server localhost:9092 ``` -You should see an empty prompt where you can start typing. Type `hello from azure arm vm` and press **Enter**. +After running the command, you’ll see an empty prompt. This means the producer is ready to send data. +Type the following message and press Enter: + +```output +hello from azure arm vm +``` +Each line you type is sent as a message to the Kafka topic and stored on disk by the broker. ### Terminal 4 – Console Consumer (Read Message) -This command starts the **Kafka Consumer**, which listens to the `test-topic-kafka` topic and displays all messages from the beginning. +Next, open another terminal and start the Kafka Consumer, which subscribes to the same topic (test-topic-kafka) and reads messages from the beginning of the log. ```console cd /opt/kafka bin/kafka-console-consumer.sh --topic test-topic-kafka --from-beginning --bootstrap-server localhost:9092 ``` +If Kafka is working correctly, you should immediately see your message `hello from azure arm vm` displayed: -You should see your message `hello from azure arm vm` displayed in this terminal, confirming that the producer's message was successfully received. +You’ve now completed a full end-to-end Kafka validation test on your Azure Cobalt 100 Arm64 VM, verifying producer, broker, and consumer communication. Now you can proceed to benchmarking Kafka’s performance on the Azure Cobalt 100 Arm virtual machine. diff --git a/content/learning-paths/servers-and-cloud-computing/kafka-azure/benchmarking.md b/content/learning-paths/servers-and-cloud-computing/kafka-azure/benchmarking.md index 051663dc9a..dde683c1bb 100644 --- a/content/learning-paths/servers-and-cloud-computing/kafka-azure/benchmarking.md +++ b/content/learning-paths/servers-and-cloud-computing/kafka-azure/benchmarking.md @@ -6,19 +6,20 @@ weight: 6 layout: learningpathall --- -## Benchmark Kafka on Azure Cobalt 100 Arm-based instances and x86_64 instances +## Benchmark Kafka on Azure Cobalt 100 Arm-based instances -Kafka’s official performance tools (**kafka-producer-perf-test.sh** and **kafka-consumer-perf-test.sh**) let you generate test workloads, measure message throughput, and record end-to-end latency. +Apache Kafka includes official performance testing utilities that allow you to measure throughput, latency, and end-to-end efficiency of your messaging system. These tools`kafka-producer-perf-test.sh` and `kafka-consumer-perf-test.sh` are bundled with Kafka’s standard installation and are designed for realistic performance evaluation of producers and consumers. ## Steps for Kafka Benchmarking -Before starting the benchmark, ensure that the **Kafka broker** are already running in separate terminals. - -Now, open two new terminals—one for the **producer benchmark** and another for the **consumer benchmark**. +Before running the benchmarks, make sure your Kafka broker is already active in a separate terminal (as configured in the previous section). +Now open two new terminal sessions — one for running the producer benchmark and another for the consumer benchmark. ### Terminal A - Producer Benchmark -The producer benchmark measures how fast Kafka can send messages, reporting throughput and latency percentiles. +The Producer Performance Test measures how quickly Kafka can publish messages to a topic and reports key performance metrics such as throughput, average latency, and percentile latencies. + +Run the following command to simulate message production on your Azure Cobalt 100 Arm64 VM: ```console cd /opt/kafka @@ -34,10 +35,20 @@ You should see output similar to: ```output 1000000 records sent, 252589.0 records/sec (24.09 MB/sec), 850.85 ms avg latency, 1219.00 ms max latency, 851 ms 50th, 1184 ms 95th, 1210 ms 99th, 1218 ms 99.9th. ``` + +| Metric | Meaning | +| ---------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| **Records/sec** | Number of messages successfully produced per second. Higher indicates better throughput. | +| **MB/sec** | Total data throughput in megabytes per second. | +| **Avg latency** | Average time (in milliseconds) for the producer to send a message and receive acknowledgment from the broker. | +| **Max latency** | The longest single message send time recorded. | +| **50th / 95th / 99th percentiles** | Distribution of message send times. For example, 95% of messages completed under 1,184 ms in the sample output. | + ### Terminal B - Consumer benchmark -The consumer benchmark measures how fast Kafka can read messages from the topic, reporting throughput and total messages consumed. +The Consumer Performance Test measures how efficiently Kafka can read and process messages from a topic. It reports metrics such as total messages consumed, data throughput, and fetch rates, helping validate overall consumer-side performance on your Azure Cobalt 100 (Arm64) VM. +Run the following command in a new terminal: ```console cd /opt/kafka bin/kafka-consumer-perf-test.sh \ @@ -52,21 +63,21 @@ You should see output similar to: start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec 2025-09-03 06:07:13:616, 2025-09-03 06:07:17:545, 95.3674, 24.2727, 1000001, 254517.9435, 3354, 575, 165.8564, 1739132.1739 ``` - -## Benchmark Results Table Explained: - -- **Messages Processed** – Total number of messages handled during the test. -- **Records/sec** – Rate of messages sent or consumed per second. -- **MB/sec** – Data throughput in megabytes per second. -- **Avg Latency (ms)** – Average delay in sending messages (producer only). -- **Max Latency (ms)** – Longest observed delay in sending messages (producer only). -- **50th (ms)** – Median latency (half the messages were faster, half slower). -- **95th (ms)** – Latency below which 95% of messages were delivered. -- **99th (ms)** – Latency below which 99% of messages were delivered. -- **99.9th (ms)** – Latency below which 99.9% of messages were delivered. +Understanding the Metrics: + +| Metric | Description | +| --------------------------- | --------------------------------------------------------------------------------------------------------- | +| **`data.consumed.in.MB`** | Total data consumed during the benchmark. | +| **`MB.sec`** | Consumption throughput in megabytes per second. Higher values indicate better sustained read performance. | +| **`data.consumed.in.nMsg`** | Total number of messages successfully consumed. | +| **`nMsg.sec`** | Messages consumed per second (a key measure of consumer-side throughput). | +| **`fetch.time.ms`** | Time spent retrieving messages from the broker. Lower values mean faster message delivery. | +| **`fetch.nMsg.sec`** | Per-fetch message rate, useful for comparing network and I/O efficiency. | +| **`rebalance.time.ms`** | Time spent coordinating consumer group assignments before actual consumption begins. | ## Benchmark summary on Arm64: -Here is a summary of benchmark results collected on an Arm64 **D4ps_v6 Ubuntu Pro 24.04 LTS virtual machine**. +The following results summarize Kafka producer and consumer benchmark performance on an Azure Cobalt 100 (Arm64) virtual machine, specifically a D4ps_v6 instance running Ubuntu Pro 24.04 LTS. +These results validate Kafka’s stability and throughput consistency on Arm-based infrastructure. ### Consumer Performance Test | Metric | Value | Unit | |-----------------------------|-------------|---------------| @@ -80,39 +91,25 @@ Here is a summary of benchmark results collected on an Arm64 **D4ps_v6 Ubuntu Pr | Fetch Throughput (Data) | 180.9629 | MB/sec | | Fetch Throughput (Messages)| 1,897,535.10| Messages/sec | -### Producer Performance Test -| Metric | Records Sent | Records/sec | Throughput | Average Latency | Maximum Latency | 50th Percentile Latency | 95th Percentile Latency | 99th Percentile Latency | 99.9th Percentile Latency | -|--------|--------------|-------------|------------|-----------------|-----------------|-------------------------|-------------------------|-------------------------|---------------------------| -| Value | 1,000,000 | 257,532.8 | 24.56 | 816.19 | 1237.00 | 799 | 1168 | 1220 | 1231 | -| Unit | Records | Records/sec | MB/sec | ms | ms | ms | ms | ms | ms | - -## Benchmark summary on x86_64: -Here is a summary of the benchmark results collected on x86_64 **D4s_v6 Ubuntu Pro 24.04 LTS virtual machine**. -### Consumer Performance Test -| Metric | Value | Unit | -|--------------------|-------------|---------------| -| Total Time Taken | 3.811 | Seconds | -| Data Consumed | 95.3674 | MB | -| Throughput (Data) | 25.0243 | MB/sec | -| Messages Consumed | 1,000,001 | Messages | -| Throughput (Messages) | 262,398.58 | Messages/sec | -| Rebalance Time | 3271 | Milliseconds | -| Fetch Time | 540 | Milliseconds | -| Fetch Throughput (Data) | 176.6064 | MB/sec | -| Fetch Throughput (Messages) | 1,851,853.70| Messages/sec | +Interpretation: +The consumer achieved over 258,000 messages per second, equivalent to ~24.6 MB/sec, with low fetch latency. +A fetch throughput near 1.9 million messages/sec indicates efficient partition reads and network I/O handling on the Arm64 platform. +Minimal rebalance and fetch times confirm Kafka’s responsiveness under sustained workloads. ### Producer Performance Test | Metric | Records Sent | Records/sec | Throughput | Average Latency | Maximum Latency | 50th Percentile Latency | 95th Percentile Latency | 99th Percentile Latency | 99.9th Percentile Latency | |--------|--------------|-------------|------------|-----------------|-----------------|-------------------------|-------------------------|-------------------------|---------------------------| -| Value | 1,000,000 | 242,013.6 | 23.08 | 840.69 | 1351.00 | 832 | 1283 | 1330 | 1350 | +| Value | 1,000,000 | 257,532.8 | 24.56 | 816.19 | 1237.00 | 799 | 1168 | 1220 | 1231 | | Unit | Records | Records/sec | MB/sec | ms | ms | ms | ms | ms | ms | -## Benchmark comparison insights -When comparing the results on Arm64 vs x86_64 virtual machines: - +Interpretation: +The producer sustained a throughput of ~257,500 records/sec (~24.5 MB/sec) with an average latency of 816 ms. +The 95th percentile latency (1168 ms) and 99th percentile (1220 ms) show predictable network and I/O performance. +Kafka maintained consistent throughput, even under full-speed production, with no message loss or broker errors reported. -- The Kafka **consumer** achieved **25.02 MB/sec throughput**, processing ~**262K messages/sec** with fetch throughput exceeding **1.85M messages/sec**. -- The Kafka **producer** sustained **23.08 MB/sec throughput**, with an average latency of ~**841 ms** and peak latency of ~**1351 ms**. -- These results confirm stable Kafka performance on the **Azure Ubuntu Pro arm64 virtual machine**, validating its suitability for **baseline testing and benchmarking**. +### Benchmark Comparison Insights +When analyzing performance on Azure Cobalt 100 Arm64 virtual machines: + **Producer efficiency**: The producer reached ~23–25 MB/sec throughput with average latencies below 900 ms, demonstrating stable delivery rates for high-volume workloads. + **Consumer scalability**: The consumer maintained ~262K messages/sec throughput with near-linear scaling of fetch performance — exceeding 1.85M messages/sec internally. + **Performance stability**: Both producer and consumer benchmarks showed low jitter and consistent latency distribution across iterations, confirming Kafka’s predictable behavior on Arm-based VMs. -You have now benchmarked Kafka on an Azure Cobalt 100 Arm64 virtual machine and compared results with x86_64. diff --git a/content/learning-paths/servers-and-cloud-computing/kafka-azure/deploy.md b/content/learning-paths/servers-and-cloud-computing/kafka-azure/deploy.md index ac9a3ad15c..b8b7a0627c 100644 --- a/content/learning-paths/servers-and-cloud-computing/kafka-azure/deploy.md +++ b/content/learning-paths/servers-and-cloud-computing/kafka-azure/deploy.md @@ -8,20 +8,20 @@ layout: learningpathall ## Install Kafka on Azure Cobalt 100 -This section walks you through installing latest version of Apache Kafka on an Ubuntu Pro 24.04 Arm virtual machine. You’ll download Kafka, extract it into `/opt`, configure permissions, and verify the installation by checking the installed version. - -Follow the below instructions to install Kafka on Ubuntu Pro 24.04 virtual machine. +This section guides you through installing the latest version of Apache Kafka on an Ubuntu Pro 24.04 (Arm64) virtual machine running on Azure Cobalt 100. Kafka is a high-throughput, distributed event streaming platform used for real-time data pipelines and messaging applications. ### Install Java -Kafka requires Java to run. Install it by executing the following commands: +Apache Kafka runs on the Java Virtual Machine (JVM), so Java must be installed before setting up Kafka. Use the following commands to update your package index and install the default JDK: ```console sudo apt update sudo apt install -y default-jdk ``` +This installs the Java Development Kit (JDK), which includes the JVM, compiler, and standard libraries required for running Kafka services. + ### Download and Install Kafka -This sequence of commands downloads Kafka version 4.1.0 to the `/opt` directory, extracts the tarball, renames the folder to kafka for simplicity, and sets ownership so the current user can access and manage the Kafka installation. It prepares the system for running Kafka without permission issues. +Use the following commands to download and install Apache Kafka 4.1.0 in the /opt directory, extract the archive, and set appropriate permissions for your user. This prepares your system to run Kafka without requiring elevated privileges later. ```console cd /opt @@ -31,19 +31,20 @@ sudo mv kafka_2.13-4.1.0 kafka sudo chown -R $USER:$USER kafka ``` {{% notice Note %}} -Kafka [3.5.0 release announcement](https://kafka.apache.org/blog#apache_kafka_350_release_announcement) includes a significant number of new features and fixes, including improving Kafka Connect and MirrorMaker 2. They aren't Arm-specific, but can benefit all architectures, including Linux/Arm64. +Kafka [3.5.0 release announcement](https://kafka.apache.org/blog#apache_kafka_350_release_announcement) includes a significant number of new features and fixes, including improving Kafka Connect and MirrorMaker 2, benefiting both x86 and Arm architectures. The [Arm Ecosystem Dashboard](https://developer.arm.com/ecosystem-dashboard/) recommends Apache Kafka version 3.5.0 as the minimum recommended on Arm platforms. {{% /notice %}} ### Check installed Kafka version -These commands navigate to the Kafka installation directory and check the installed Kafka version, confirming that Kafka has been successfully installed and is ready for use. +After extraction, verify that Kafka was installed successfully by checking the version: + ```console cd /opt/kafka bin/kafka-topics.sh --version ``` -You should see an output similar to: +You should see output similar to: ```output 4.1.0 ``` diff --git a/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/http-scaling.md b/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/http-scaling.md index ddda708890..2df8a0375b 100644 --- a/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/http-scaling.md +++ b/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/http-scaling.md @@ -274,7 +274,7 @@ Expected behavior: You can also monitor traffic and scaling in the Kedify dashboard: -![Kedify dashboard showing request load and scaling over time alt-text#center](images/load.png "Kedify dashboard: request load and scaling over time") +![Kedify dashboard showing request load and scaling over time alt-text#center](images/load.webp "Kedify dashboard: request load and scaling over time") ## Clean up diff --git a/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.png b/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.png deleted file mode 100644 index c51d0b92dd..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.webp b/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.webp new file mode 100644 index 0000000000..079c45229a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/kedify-http-autoscaling/images/load.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.png b/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.png deleted file mode 100644 index 2afc1e5570..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.webp b/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.webp new file mode 100644 index 0000000000..ce55347b76 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama-vision/browser_output.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama-vision/conclusion.md b/content/learning-paths/servers-and-cloud-computing/llama-vision/conclusion.md index a80c5d46b5..ed7f2cdbfc 100644 --- a/content/learning-paths/servers-and-cloud-computing/llama-vision/conclusion.md +++ b/content/learning-paths/servers-and-cloud-computing/llama-vision/conclusion.md @@ -35,7 +35,7 @@ For this to work, you must ensure that the `allow-my-ip` tag is present on your Upload an image and enter your prompt in the UI to generate a response. You should see the LLM generating a response based on the prompt, using the image as context as shown below: -![browser_output](browser_output.png) +![browser_output](browser_output.webp) ## Further Interaction and Custom Applications diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/2_llama.cpp_intro.md b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/2_llama.cpp_intro.md index 75bf788463..40a8e87fd0 100644 --- a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/2_llama.cpp_intro.md +++ b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/2_llama.cpp_intro.md @@ -70,7 +70,7 @@ Most autoregressive LLMs are decoder-only models. This refers to the transformer Decoder-only models like LLaMA have become dominant for text generation because they are simpler to train at scale, can handle both understanding and generation tasks, and are more efficient for text generation. This diagram introduces the idea of Prefill and Decode stages of autoregressive LLMs: -![Diagram illustrating the two stages of autoregressive LLM inference: Prefill stage processing input tokens and Decode stage generating output tokens sequentially alt-text#center](images/llm_prefill_decode.jpg "Prefill and Decode stages") +![Diagram illustrating the two stages of autoregressive LLM inference: Prefill stage processing input tokens and Decode stage generating output tokens sequentially alt-text#center](images/llm_prefill_decode.webp "Prefill and Decode stages") The Prefill stage is shown below, and as you can see, multiple input tokens of the prompt are processed simultaneously. @@ -78,11 +78,11 @@ In the context of Large Language Models (LLMs), a *matrix* is a two-dimensional This stage mainly performs GEMM operations (General Matrix Multiply; where one matrix is multiplied by another matrix) to generate the first output token. -![Diagram showing the Prefill stage processing multiple input tokens in parallel through transformer blocks using GEMM operations alt-text#center](images/transformer_prefill.jpg "Prefill stage") +![Diagram showing the Prefill stage processing multiple input tokens in parallel through transformer blocks using GEMM operations alt-text#center](images/transformer_prefill.webp "Prefill stage") At the Decode stage, the model utilizes the [KV cache](https://huggingface.co/blog/not-lain/kv-caching) (Key-Value cache; which is stored attention information from previous tokens). This stage mainly performs GEMV operations (General Matrix-Vector multiply - where a vector is multiplied by a matrix) to generate subsequent output tokens one by one. -![Diagram showing the Decode stage generating tokens one by one using KV cache and GEMV operations alt-text#center](images/transformer_decode.jpg "Decode stage") +![Diagram showing the Decode stage generating tokens one by one using KV cache and GEMV operations alt-text#center](images/transformer_decode.webp "Decode stage") ## Summary diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/5_operator_deepdive.md b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/5_operator_deepdive.md index 4ac130aafa..dc893706f2 100644 --- a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/5_operator_deepdive.md +++ b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/5_operator_deepdive.md @@ -151,7 +151,7 @@ When moving the cursor over an annotation channel, Streamline shows: - The operator type - The shape and size of the source tensors -![Close-up screenshot of annotation channel tooltip showing tensor node details including operator type and tensor dimensions alt-text#center](images/prefill_annotation_channel_3.png "Annotation channel zoom in") +![Close-up screenshot of annotation channel tooltip showing tensor node details including operator type and tensor dimensions alt-text#center](images/prefill_annotation_channel_3.webp "Annotation channel zoom in") The example above shows a `GGML_OP_MUL_MAT` operator for the `FFN_UP` node. The source tensors have shapes [1024, 2816] and [1024, 68]. diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/6_multithread_analyze.md b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/6_multithread_analyze.md index 0d3afbc47e..dbd7390c8f 100644 --- a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/6_multithread_analyze.md +++ b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/6_multithread_analyze.md @@ -46,7 +46,7 @@ In the screenshot above, you can observe that two threads are created and they a You can also use the Annotation Channel view to analyze operator execution on a per-thread basis. Each thread generates its own annotation channel independently, allowing you to see how work is distributed across parallel execution units. -![Screenshot showing Streamline annotation channels with multiple threads executing the same tensor node simultaneously alt-text#center](images/multi_thread_annotation_channel.png "Multi-thread annotation channels") +![Screenshot showing Streamline annotation channels with multiple threads executing the same tensor node simultaneously alt-text#center](images/multi_thread_annotation_channel.webp "Multi-thread annotation channels") In the screenshot above, at the highlighted time, both threads are executing the same node. In this particular case, the node is the result_output linear layer. You can see how the workload is distributed across threads, with each thread processing a different portion of the matrix computation. This visualization helps identify load balancing issues and optimization opportunities in parallel execution. diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.jpg b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.jpg deleted file mode 100644 index 9be52a78fd..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.jpg and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.webp b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.webp new file mode 100644 index 0000000000..6fcf5f50ec Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/llm_prefill_decode.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.png b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.png deleted file mode 100644 index 2d56abda3a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.webp b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.webp new file mode 100644 index 0000000000..d9f99e502b Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/multi_thread_annotation_channel.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.png b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.png deleted file mode 100644 index 3fc7193779..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.webp b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.webp new file mode 100644 index 0000000000..52db163ef9 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/prefill_annotation_channel_3.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.jpg b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.jpg deleted file mode 100644 index 4618ca890f..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.jpg and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.webp b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.webp new file mode 100644 index 0000000000..f85e57da34 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_decode.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.jpg b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.jpg deleted file mode 100644 index f501973bb4..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.jpg and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.webp b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.webp new file mode 100644 index 0000000000..afaa4618af Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/llama_cpp_streamline/images/transformer_prefill.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.png b/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.png deleted file mode 100644 index 8d1f207bcb..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.webp b/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.webp new file mode 100644 index 0000000000..2c9774f955 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/milvus-rag/create_cluster.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/milvus-rag/offline_data_loading.md b/content/learning-paths/servers-and-cloud-computing/milvus-rag/offline_data_loading.md index 433ba8ea44..c67dbb683d 100644 --- a/content/learning-paths/servers-and-cloud-computing/milvus-rag/offline_data_loading.md +++ b/content/learning-paths/servers-and-cloud-computing/milvus-rag/offline_data_loading.md @@ -15,7 +15,7 @@ After you register, [create a cluster](https://docs.zilliz.com/docs/create-clust Now create a **Dedicated** cluster deployed in AWS using Arm-based machines to store and retrieve the vector data as shown: -![cluster](create_cluster.png) +![cluster](create_cluster.webp) When you select the **Create Cluster** Button, you should see the cluster running in your **Default Project**. diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_index.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_index.md index 41cd6a2399..e3577910c2 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_index.md @@ -1,25 +1,21 @@ --- -title: Build hybrid AKS clusters with Arm nodes and nginx - -draft: true -cascade: - draft: true +title: Build a multi-architecture Kubernetes cluster running nginx on Azure AKS minutes_to_complete: 60 -who_is_this_for: This Learning Path is for developers who want to understand nginx performance on x64 and arm64 deployments by running a hybrid Azure Kubernetes Service (AKS) cluster. +who_is_this_for: This is an introductory topic for developers who want to deploy multi-architecture Kubernetes workloads and compare nginx performance between x86 and Arm-based nodes in Azure Kubernetes Service (AKS) clusters. learning_objectives: - - Create a hybrid AKS cluster with x64 and arm64 nodes - - Deploy nginx's multi-architecture container image, pods, and services to the AKS cluster - - Smoke test nginx from each architecture in the cluster to verify proper installation - - Test the performance of each architecture in the cluster - - Apply the same process to other kubernetes workloads + - Create a hybrid AKS cluster with both x86 and Arm64 nodes + - Deploy nginx using multi-architecture container images across different node types + - Verify nginx deployment and functionality on each architecture + - Compare performance between x86 and Arm64 nginx instances + - Learn techniques for deploying multi-architecture Kubernetes workloads prerequisites: - - An [Azure account](https://azure.microsoft.com/en-us/free/). - - A local machine with [jq](https://jqlang.org/download/), [curl](https://curl.se/download.html), [wrk](https://github.com/wg/wrk), [Azure CLI](/install-guides/azure-cli/) and [kubectl](/install-guides/kubectl/) installed. + - An [Azure account](https://azure.microsoft.com/en-us/free/) + - A local machine with [`jq`](https://jqlang.org/download/), [`curl`](https://curl.se/download.html), [`wrk`](https://github.com/wg/wrk), [Azure CLI](/install-guides/azure-cli/), and [`kubectl`](/install-guides/kubectl/) installed author: - Geremy Cohen @@ -39,14 +35,16 @@ operatingsystems: tools_software_languages: - nginx - Web Server + - Azure + - Kubernetes further_reading: - resource: - title: nginx - High Performance Load Balancer, Web Server, & Reverse Proxy + title: nginx website link: https://nginx.org/ - type: documentation + type: website - resource: - title: nginx Docker Hub + title: nginx on Docker Hub link: https://hub.docker.com/_/nginx type: documentation - resource: @@ -54,7 +52,11 @@ further_reading: link: https://docs.microsoft.com/en-us/azure/aks/ type: documentation - resource: - title: Learn how to tune Nginx + title: Learn how to deploy nginx [Arm Learning Path] + link: https://learn.arm.com/learning-paths/servers-and-cloud-computing/nginx/ + type: documentation + - resource: + title: Learn how to tune nginx [Arm Learning Path] link: https://learn.arm.com/learning-paths/servers-and-cloud-computing/nginx_tune/ type: documentation diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_next-steps.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_next-steps.md new file mode 100644 index 0000000000..adccf10c38 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/_next-steps.md @@ -0,0 +1,8 @@ +--- +# ================================================================================ +# FIXED, DO NOT MODIFY THIS FILE +# ================================================================================ +weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation. +title: "Next Steps" # Always the same, html page title. +layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing. +--- \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/apply-configuration.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/apply-configuration.md index 5561d9d82c..0dff6f7bd2 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/apply-configuration.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/apply-configuration.md @@ -1,6 +1,6 @@ --- title: Monitor performance with wrk and btop -weight: 70 +weight: 9 ### FIXED, DO NOT MODIFY layout: learningpathall @@ -8,19 +8,15 @@ layout: learningpathall ## Install btop monitoring tool on nginx pods -Now that you have all your nginx deployments running across Intel and Arm architectures, you can monitor performance across each architecture using wrk to generate load and btop to monitor system performance. +Now that you have all your nginx deployments running across Intel and Arm architectures, you can monitor performance across each architecture using `wrk` to generate load and `btop` to monitor system performance. {{% notice Note %}} -This tutorial uses [wrk](https://github.com/wg/wrk) to generate load, which is readily available on apt and brew package managers. [wrk2](https://github.com/giltene/wrk2) is a modern fork of wrk with additional features. wrk was chosen for this tutorial due to its ease of installation, but if you prefer to install and use wrk2 (or other http load generators) for your testing, feel free to do so. -{{% /notice %}} - -### Install btop and apply optimized configuration +This Learning Path uses [`wrk`](https://github.com/wg/wrk) to generate HTTP load testing. You can easily install `wrk` using `apt` or `brew` package managers. -The `nginx_util.sh` script includes a `put config` command that will: +If you prefer alternatives like [`wrk2`](https://github.com/giltene/wrk2) (a modern fork with additional features) or other HTTP load generators, you can use those instead. +{{% /notice %}} -- Apply a performance-optimized nginx configuration to all pods -- Install btop monitoring tool on all pods for system monitoring -- Restart pods with the new configuration +## Install btop and apply optimized configuration Run the following command to apply the configuration updates: @@ -41,7 +37,14 @@ Installing btop on nginx-intel-deployment-6f5bff9667-zdrqc... ✅ btop installed on all pods! ``` -### Check pod restart status +The `nginx_util.sh` script includes a `put config` command that: + +- Applies a performance-optimized nginx configuration to all pods +- Installs `btop` monitoring tool on all pods for system monitoring +- Restarts pods with the new configuration + + +## Check pod restart status Check that all pods have restarted with the new configuration: @@ -52,26 +55,26 @@ kubectl get pods -n nginx You should see all pods with recent restart times. {{% notice Note %}} -Because pods are ephemeral, btop will need to be reinstalled if the pods are deleted or restarted. If you get an error saying btop is not found, rerun the `./nginx_util.sh put btop` command to reinstall it. +Because pods are ephemeral, you need to reinstall `btop` if pods restart or get deleted. If you see a "btop not found" error, run `./nginx_util.sh put btop` again to reinstall it. {{% /notice %}} -### Set up real-time performance monitoring - -You can now log in to any pod and use btop to monitor system performance. There are many variables that can affect an individual workload's performance, and btop (like top) is a great first step in understanding those variables. +## Set up real-time performance monitoring +You can now log in to any pod and monitor system performance with `btop`. Many factors can affect workload performance, and `btop` (like `top`) is an excellent starting point for understanding these metrics. {{% notice Note %}} -When performing load generation tests from your laptop, local system and network settings may interfere with proper load generation between your machine and the remote cluster services. To mitigate these issues, it's suggested to install the `nginx_util.sh` script on a [remote Azure instance](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/azure/) in the same region and zone as your K8s cluster for best results. If you aren't seeing at least 70K+ requests/s to either K8s service endpoint, switching to a better located system is advised. -{{% /notice %}} +Network performance can impact load testing accuracy when running from your local machine. If you experience low request rates (under 70,000 requests/s), consider running the test from an Azure VM in the same region as your cluster. + +You can create an [Azure VM instance](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/azure/) and install the `nginx_util.sh` script there for more reliable results.{{% /notice %}} Running two btop terminals, one for each pod, is a convenient way to view performance in real time. -To bring up btop on both Arm and Intel pods: +To bring up btop on both Arm and Intel pods, follow these steps: -1. Open two new terminal windows -2. In one terminal, run `login arm` from the nginx utility script to enter the pod -3. In the second terminal, run `login intel` from the nginx utility script to enter the pod -4. Once inside each pod, run btop to see real-time system monitoring +- Open two new terminal windows +- In one terminal, run `login arm` from the nginx utility script to enter the pod +- In the second terminal, run `login intel` from the `nginx` utility script to enter the pod +- Once inside each pod, run `btop` to see real-time system monitoring The commands are shown below. @@ -95,25 +98,28 @@ btop --utf-force You should now see something similar to the image below, with one terminal for each Arm and Intel pod running btop: -![Project Overview](images/btop_idle.png) +![Two terminal windows displaying btop system monitoring interface with CPU, memory, and process information for nginx pods running on different architectures in an idle state alt-text#center](images/btop_idle.png) -To visualize performance with btop against the Arm and Intel pods via the load balancer service endpoints, you can use the `nginx_util.sh` wrapper to generate load to both simultaneously: +To visualize performance with btop against the Arm and Intel pods using the load balancer service endpoints, you can use the `nginx_util.sh` wrapper to generate load to both simultaneously: ```bash ./nginx_util.sh wrk both ``` -This runs wrk with predefined settings (1 thread, 50 simultaneous connections) to generate load to the K8s architecture-specific endpoints. +This runs `wrk` with predefined settings (1 thread, 50 simultaneous connections) to generate load to the K8s architecture-specific endpoints. -While it runs (for a default of 30s), you can observe some performance characteristics from the btop outputs: +While it runs (for a default of 30s), you can observe some performance characteristics from the `btop` outputs: -![Project Overview](images/under_load.png) +![Two terminal windows showing btop system monitoring during load testing, comparing nginx performance between Arm and Intel architectures with CPU and memory metrics highlighted alt-text#center](images/under_load.png) -Of particular interest is memory and CPU resource usage per pod. For Intel, red marker 1 shows memory usage for the process, and red marker 2 shows total CPU usage. +You can observe several performance characteristics from the btop outputs during load testing. Pay attention to the memory and CPU resource usage for each pod: -Red markers 3 and 4 show the same metrics for Arm. +- Intel pod metrics: Memory usage (marker 1) and total CPU usage (marker 2) +- Arm pod metrics: Memory usage (marker 3) and total CPU usage (marker 4) -![Project Overview](images/mem_and_cpu.png) +These real-time metrics help you compare how each architecture handles the load and resource consumption patterns. + +![Two terminal windows showing btop system monitoring interface displaying CPU usage graphs and memory statistics while nginx pods run under load testing, comparing performance between Intel and Arm architectures with numerical markers highlighting specific CPU and memory metrics for analysis alt-text#center](images/mem_and_cpu.png) In addition to the visual metrics, the script also returns runtime results including requests per second and latencies: @@ -169,15 +175,13 @@ For example, to generate load using 500 connections across 4 threads to the Arm wrk -t4 -c500 -d300 http://20.252.73.72/ ``` -## Next Steps - -You have learned how to run a sample nginx workload on a dual-architecture (Arm and Intel) Azure Kubernetes Service. +## What you've accomplished and what's next -You learned how to generate load with the wrk utility and monitor runtime metrics with btop. +You have successfully deployed and monitored `nginx` workloads across both Arm and Intel architectures on Azure Kubernetes Service. You've learned how to generate load with `wrk`, monitor real-time performance with `btop`, and compare performance characteristics between different architectures. -Here are some ideas for further exploration: +You now have the knowledge to experiment with your own workloads on Arm-based AKS nodes to identify performance and efficiency opportunities unique to your own environments. Here are some ideas for further exploration: * What do the performance curves look like between the two architectures as a function of load? * How do larger instance types scale versus smaller ones? -You now have the knowledge to experiment with your own workloads on Arm-based AKS nodes to identify performance and efficiency opportunities unique to your own environments. +Congratulations on completing this Learning Path! You've built a solid foundation for deploying and optimizing multi-architecture Kubernetes workloads on Azure, positioning yourself to take full advantage of Arm's performance and cost benefits in your cloud infrastructure. diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/create-test-utility.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/create-test-utility.md index f3cb97605c..132f9d5a18 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/create-test-utility.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/create-test-utility.md @@ -1,33 +1,40 @@ --- title: Create the test utility -weight: 20 +weight: 4 ### FIXED, DO NOT MODIFY layout: learningpathall --- -## Test utility script +## Understand the utility script’s purpose -In this section, you'll create a utility script to test and manage your nginx services across both architectures. The script will be used throughout the Learning Path to test services, apply configurations, and access pods. +In this section, you'll create a utility script that simplifies working with your multi-architecture Kubernetes deployment. This script acts as a convenient wrapper around common kubectl and testing commands, making it easier to interact with nginx pods across different architectures. -### Script functionality +Instead of typing long kubectl commands repeatedly, you'll use this utility to quickly test services, monitor performance, and access pods on both Arm and Intel nodes. This approach saves time and reduces errors, especially when comparing behavior across architectures. -The `nginx_util.sh` script provides three main functions: +By the end of this section, you'll have a ready-to-use tool that streamlines the testing and monitoring tasks you'll perform throughout the rest of this Learning Path. -- **`curl intel|arm|multiarch`** - Test nginx services and show which pod served the request -- **`put btop`** - Install btop monitoring tool on all pods -- **`login intel|arm`** - Interactive bash access to architecture-specific pods +## Get to know the utility script +The utility script provides three main functions to help you work with your multi-architecture nginx deployment. You can use it to test services across different architectures, monitor performance, and access pods directly. + +The script provides the following key commands to interact with your nginx deployment: + +- `curl intel|arm|multiarch` tests nginx services and show which pod served the request +- `put btop` installs btop monitoring tool on all pods +- `login intel|arm` is an interactive bash access to architecture-specific pods + +These commands streamline common tasks you'll perform when working with multi-architecture deployments. The `curl` command helps you verify that requests are being properly distributed across different architectures, while the `login` command gives you direct access to pods for debugging or configuration changes. The script conveniently bundles test and logging commands into a single place, making it easy to test, troubleshoot, and view services. -### Download the utility script +## Download the utility script {{% notice Note %}} The following utility `nginx_util.sh` is provided for your convenience. -It's a wrapper for kubectl and other commands, utilizing [curl](https://curl.se/). Make sure you have curl installed before running. +It's a wrapper for `kubectl` and other commands, utilizing [curl](https://curl.se/). Make sure you have curl installed before running. -You can click on the link below to review the code before downloading. +You can review the code before downloading by visiting the [GitHub repository](https://raw.githubusercontent.com/geremyCohen/nginxOnAKS/refs/heads/main/nginx_util.sh). {{% /notice %}} Copy and paste the following commands into a terminal to download and create the `nginx_util.sh` script: @@ -37,13 +44,12 @@ curl -o nginx_util.sh https://raw.githubusercontent.com/geremyCohen/nginxOnAKS/r chmod +x nginx_util.sh ``` -In the folder you ran the curl command, you should now see the `nginx_util.sh` script. Test it by running: +In the folder you ran the `curl` command, you should now see the `nginx_util.sh` script. Test it by running: ```bash ./nginx_util.sh ``` - -The output presents the usage instructions: +The script displays its usage instructions: ```output Invalid first argument. Use 'curl', 'wrk', 'put', or 'login'. diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-arm.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-arm.md index db0c57b576..d48f546e1c 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-arm.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-arm.md @@ -1,6 +1,6 @@ --- title: Deploy nginx on Arm -weight: 50 +weight: 6 ### FIXED, DO NOT MODIFY layout: learningpathall @@ -10,9 +10,10 @@ layout: learningpathall In this section, you'll add nginx on Arm to your existing cluster, completing your multi-architecture Intel/Arm environment for comprehensive performance comparison. -When applied, the **arm_nginx.yaml** file creates the following K8s objects: - - **Deployment** (`nginx-arm-deployment`) - Pulls the multi-architecture nginx image from DockerHub, launches a pod on the Arm node, and mounts the shared ConfigMap as `/etc/nginx/nginx.conf` - - **Service** (`nginx-arm-svc`) - Load balancer targeting pods with both `app: nginx-multiarch` and `arch: arm` labels +When you apply the arm_nginx.yaml file, it creates two Kubernetes objects: + +- A deployment named `nginx-arm-deployment` that pulls the multi-architecture nginx image from DockerHub, launches a pod on the Arm node, and mounts the shared ConfigMap as `/etc/nginx/nginx.conf` +- A service called `nginx-arm-svc` that acts as a load balancer, targeting pods with both `app: nginx-multiarch` and `arch: arm` labels Copy and paste the following commands into a terminal to download and apply the Arm deployment and service: @@ -28,9 +29,9 @@ deployment.apps/nginx-arm-deployment created service/nginx-arm-svc created ``` -### Examining the deployment configuration +## Examining the deployment configuration -Taking a closer look at the `arm_nginx.yaml` deployment file, you'll see settings optimized for the Arm architecture: +Take a closer look at the `arm_nginx.yaml` deployment file and you'll see settings optimized for the Arm architecture: The `nodeSelector` value of `kubernetes.io/arch: arm64` ensures that the deployment only runs on Arm nodes, utilizing the `arm64` version of the nginx container image. @@ -48,9 +49,8 @@ The service selector uses both `app: nginx-multiarch` and `arch: arm` labels to arch: arm ``` -### Verify the deployment - -Get the status of nodes, pods and services by running: +## Verify the deployment +Get the status of nodes, pods, and services by running: ```bash kubectl get nodes,pods,svc -nnginx @@ -87,15 +87,14 @@ nginx-config 1 10m When the pods show `Running` and the service shows a valid `External IP`, you're ready to test the nginx Arm service. -### Test the nginx web service on Arm +## Test the nginx web service on Arm Run the following command to make an HTTP request to the Arm nginx service using the script you created earlier: ```bash ./nginx_util.sh curl arm ``` - -You get back the HTTP response, as well as information about which pod served it: +The response includes both the HTTP data and details about which pod handled the request: ```output Using service endpoint 48.192.64.197 for curl on arm service @@ -111,7 +110,7 @@ Served by: nginx-arm-deployment-5bf8df95db-wznff If you see similar output, you have successfully added Arm nodes to your cluster running nginx. -### Compare both architectures +## Compare both architectures Now you can test both architectures and compare their responses: @@ -120,4 +119,4 @@ Now you can test both architectures and compare their responses: ./nginx_util.sh curl arm ``` -Each command will route to its respective architecture-specific service, allowing you to compare performance and verify that your multi-architecture cluster is working correctly. +Each command routes to its respective architecture-specific service, allowing you to compare performance and verify that your multi-architecture cluster is working correctly. diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-intel.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-intel.md index f13d707d0e..e9ec0b3594 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-intel.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-intel.md @@ -1,6 +1,6 @@ --- title: Deploy nginx on Intel x86 -weight: 30 +weight: 5 ### FIXED, DO NOT MODIFY layout: learningpathall @@ -8,20 +8,17 @@ layout: learningpathall ## Deployment and service -In this section, you'll add a new namespace, deployment, and service for nginx on Intel x86. The result will be a K8s cluster running nginx accessible via the Internet through a load balancer. +In this section, you'll add a new namespace, deployment, and service for nginx on Intel x86 architecture. The result will be a K8s cluster running nginx accessible through the Internet using a load balancer. -To better understand the individual components, the configuration is split into three files: +The deployment configuration uses three separate files to organize the different components: -`namespace.yaml` - Creates a new namespace called `nginx`, which contains all your K8s nginx objects - -`nginx-configmap.yaml` - Creates a shared ConfigMap (`nginx-config`) containing performance-optimized nginx configuration used by both Intel and Arm deployments - -`intel_nginx.yaml` - Creates the following K8s objects: - - **Deployment** (`nginx-intel-deployment`) - Pulls a multi-architecture [nginx image](https://hub.docker.com/_/nginx) from DockerHub, launches a pod on the Intel node, and mounts the shared ConfigMap as `/etc/nginx/nginx.conf` - - **Service** (`nginx-intel-svc`) - Load balancer targeting pods with both `app: nginx-multiarch` and `arch: intel` labels - - -Run the following commands to download, create, and apply the namespace, ConfigMap, and Intel nginx deployment and service configuration: +- A file called `namespace.yaml` that creates a dedicated nginx namespace to contain all your Kubernetes nginx objects. +- A file called `nginx-configmap.yaml` that contains a shared ConfigMap called `nginx-config` with performance-optimized nginx settings that both Intel and Arm deployments will use. +- A file called `intel_nginx.yaml` that creates two main Kubernetes objects: + - A deployment called `nginx-intel-deployment` that pulls the multi-architecture [nginx image](https://hub.docker.com/_/nginx) from DockerHub and runs it on the Intel node + - A service called `nginx-intel-svc` that acts as a load balancer for pods labeled with both `app: nginx-multiarch` and `arch: intel`. The deployment automatically mounts the shared ConfigMap as `/etc/nginx/nginx.conf` to apply the optimized configuration. + + Run the following commands to download and apply the namespace, ConfigMap, and Intel nginx deployment configuration: ```bash curl -o namespace.yaml https://raw.githubusercontent.com/geremyCohen/nginxOnAKS/refs/heads/main/namespace.yaml @@ -44,12 +41,12 @@ deployment.apps/nginx-intel-deployment created service/nginx-intel-svc created ``` -### Examine the deployment configuration +## Examine the deployment configuration -Take a closer look at the `intel_nginx.yaml` deployment file, you'll see some settings that ensure the deployment runs on the Intel x86 node. +Take a closer look at the `intel_nginx.yaml` deployment file. You'll see some settings that ensure the deployment runs on the Intel x86 node. {{% notice Note %}} -The `amd64` architecture label represents x86_64 nodes, which can be either AMD or Intel processors. In this tutorial, we're using Intel x64 nodes. +The `amd64` architecture label represents x86_64 nodes, which can be either AMD or Intel processors. This Learning Path was tested on Intel x86 nodes. {{% /notice %}} The `nodeSelector` value is set to `kubernetes.io/arch: amd64`. This ensures that the deployment only runs on x86_64 nodes, utilizing the amd64 version of the nginx container image. @@ -84,17 +81,18 @@ Because the final goal is to run nginx on multiple architectures, the deployment ``` {{% notice Note %}} -Optionally, you can set the `default Namespace` to `nginx` to simplify future commands by removing the need to specify the `-nnginx` flag each time: +You can set nginx as your default namespace to avoid typing `-nnginx` in future commands: ```bash kubectl config set-context --current --namespace=nginx ``` {{% /notice %}} -### Verify the deployment is complete -It's time to verify everything is running as expected. +## Verify the deployment is complete + +It's now time to verify everything is running as expected. -Confirm the nodes, pods, and services are running: +Confirm that the nodes, pods, and services are running: ```bash kubectl get nodes,pods,svc -nnginx @@ -114,7 +112,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) service/nginx-intel-svc LoadBalancer 10.0.226.250 20.80.128.191 80:30080/TCP 39s ``` -You can also verify the ConfigMap was created: +You can also verify that the ConfigMap was created: ```bash kubectl get configmap -nnginx @@ -127,7 +125,7 @@ nginx-config 1 51s With the pods in a `Ready` state and the service showing a valid `External IP`, you're now ready to test the nginx Intel service. -### Test the Intel service +## Test the Intel service Run the following to make an HTTP request to the Intel nginx service: @@ -135,7 +133,7 @@ Run the following to make an HTTP request to the Intel nginx service: ./nginx_util.sh curl intel ``` -You get back the HTTP response, as well as information about which pod served it: +You can see the HTTP response along with details about which pod served the request: ```output Using service endpoint 20.3.71.69 for curl on intel service @@ -149,6 +147,6 @@ Response: Served by: nginx-intel-deployment-758584d5c6-2nhnx ``` -If you see similar output, you've successfully configured your AKS cluster with an Intel node, running an nginx deployment and service with the nginx multi-architecture container image. +If you see similar output, you've successfully configured your AKS cluster with an Intel node, running an nginx` deployment and service with the nginx multi-architecture container image. diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-multiarch.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-multiarch.md index 2f6b2695b9..c77218bad8 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-multiarch.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/deploy-multiarch.md @@ -1,6 +1,6 @@ --- -title: Deploy a nginx multiarch service -weight: 60 +title: Deploy nginx multiarch service on AKS +weight: 8 ### FIXED, DO NOT MODIFY layout: learningpathall @@ -10,7 +10,7 @@ layout: learningpathall You now have nginx running on Intel and Arm nodes with architecture-specific services. In this section, you'll create a multi-architecture service that can route to any available nginx pod regardless of architecture, providing load balancing across both architectures. -### Create the multiarch service +## Create the multiarch service The multiarch service targets all pods with the `app: nginx-multiarch` label (all nginx deployments share this label). It uses `sessionAffinity: None` to ensure requests are distributed across all available pods without stickiness, and can route to Intel or Arm pods based on availability and load balancing algorithms. @@ -57,7 +57,7 @@ nginx-multiarch-svc 10.244.0.21:80,10.244.1.1:80 47s You are ready to test the multiarch service. -### Test the nginx multiarch service +## Test the nginx multiarch service Run the following to make HTTP requests to the multiarch nginx service: @@ -89,12 +89,17 @@ Run the command multiple times to see load balancing across architectures: The responses will show requests being served by different architecture deployments (Intel or Arm), demonstrating that the multiarch service distributes the load across the available pods. -### Compare architecture-specific versus multiarch routing +## Compare architecture-specific and multiarch routing Now you can compare the behavior: -- **Architecture-specific**: `./nginx_util.sh curl intel` always routes to Intel pods -- **Architecture-specific**: `./nginx_util.sh curl arm` always routes to ARM pods -- **Multiarch**: `./nginx_util.sh curl multiarch` routes to any available pod +- The architecture-specific services provide predictable routing patterns. When you run `./nginx_util.sh curl intel`, your requests consistently reach Intel-based pods. Similarly, `./nginx_util.sh curl arm` ensures your traffic goes to Arm-based pods. -This multiarch service provides high availability and load distribution across your entire multi-architecture cluster. +- In contrast, the multiarch service distributes requests across all available pods regardless of architecture. This means `./nginx_util.sh curl multiarch` might connect you to either an Intel or Arm pod depending on current load and availability. + + +## What you've accomplished and what's next + +Excellent work! You've successfully created a multi-architecture service that intelligently distributes traffic across both Arm and Intel pods. This unified service approach provides high availability and load distribution across your entire multi-architecture cluster, giving you the flexibility to leverage the strengths of different CPU architectures within a single Kubernetes environment. + +You now have a complete multi-architecture deployment with three different service routing patterns: architecture-specific services for targeted testing, and a multiarch service for production-grade load balancing. You're ready to move on to performance monitoring and comparison. \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/overview.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/overview.md new file mode 100644 index 0000000000..8a660b11b2 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/overview.md @@ -0,0 +1,24 @@ +--- +title: Start your journey with Arm and x86 nginx workloads on a single Kubernetes cluster +weight: 2 +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Project overview + +Arm processors are transforming cloud infrastructure, offering improved performance per watt and cost efficiency for web server workloads. In this Learning Path, you'll deploy [nginx](https://nginx.org/) on both Arm and x86 architectures within a single Kubernetes cluster on Azure AKS. + +You'll create a cluster with both Arm-based and x86 nodes, which lets you deploy the same nginx workload on different architectures. This setup allows you to compare how nginx performs on each architecture and understand the practical aspects of running mixed workloads in Kubernetes. + +## Why deploy nginx on both Arm and x86 nodes in Kubernetes? + +Many developers start their Arm journey by adding Arm-based nodes to existing x86 Kubernetes clusters. + +This approach offers several advantages: + +- Gradual migration: you can leverage your existing Kubernetes expertise to add Arm nodes without disrupting current x86 workloads. +- Container compatibility: multi-architecture container images allow the same nginx deployment to run on both architectures with minimal configuration changes. +- Performance comparison: running both architectures in the same cluster provides an ideal environment for benchmarking Arm versus x86 performance under identical conditions. + +This Learning Path walks you through how to create an initial AKS environment and install nginx on x86. From there, you'll add Arm-based nodes running the same exact workload. You'll see how to run simple tests to verify functionality, and then run performance testing to better understand the performance characteristics of each architecture. \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/spin_up_aks_cluster.md b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/spin_up_aks_cluster.md index bab71b30f7..5707ef4686 100644 --- a/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/spin_up_aks_cluster.md +++ b/content/learning-paths/servers-and-cloud-computing/multiarch_nginx_on_aks/spin_up_aks_cluster.md @@ -1,42 +1,40 @@ --- -title: Create the AKS Cluster -weight: 10 +title: Create the AKS cluster +weight: 3 ### FIXED, DO NOT MODIFY layout: learningpathall --- -## Project Overview +## Set up a multi-architecture AKS cluster -Arm CPUs are widely used in web server workloads on Kubernetes (k8s). In this Learning Path, you'll learn how to deploy [nginx](https://nginx.org/) on Arm-based CPUs within a heterogeneous (x64 and arm64) K8s cluster on Azure's AKS. +In this section, you'll create a multi-architecture Azure Kubernetes Service (AKS) cluster that supports both Intel and Arm-based nodes. This setup allows you to deploy and compare workloads across different CPU architectures within the same Kubernetes environment. -### Benefits of the multi-architecture approach +You'll work through three activities: -Many developers begin their journey with Arm on K8s by adding Arm nodes to an existing x64-based cluster. This has many advantages: +* Set up authentication - you'll connect to your Azure account using the Azure CLI +* Create the cluster infrastructure - you'll build an AKS cluster with two distinct node pools (one x86 and one Arm) +* Verify connectivity - you'll confirm your cluster is running and accessible using `kubectl` -1. Since you are already familiar with K8s on x64, you can leverage that knowledge to quickly get the core components up and running. -2. Leveraging the multi-architectural container image of your existing x64 workload expedites the migration to Arm with minimal deployment modifications. -3. With both x64 and Arm workloads running in the same cluster, comparing performance across them is simplified. +This multi-architecture approach gives you the flexibility to run workloads optimized for specific CPU types while maintaining a unified Kubernetes management experience. By the end of this section, you'll have a fully functional cluster ready for deploying containerized applications. -This Learning Path explains how to create an initial AKS environment and install nginx on x64. From there, you'll add Arm-based nodes running the same exact workload. You'll see how to run simple tests to verify functionality, and then run performance testing to better understand the performance characteristics of each architecture. - -### Login to Azure using the Azure CLI +## Create the cluster and resource To begin, login to your Azure account using the Azure CLI: ```bash az login ``` +Once logged in, create the resource group and AKS cluster with two node pools: -### Create the cluster and resource - -Once logged in, create the resource group and AKS cluster with two node pools: one with Intel-based nodes (Standard_D2s_v6), and one with Arm-based (Standard_D2ps_v6) nodes. +- One with Intel-based nodes (Standard_D2s_v6) +- One with Arm-based nodes (Standard_D2ps_v6) {{% notice Note %}} -This tutorial uses the `westus2` region, which supports both Intel and Arm VM sizes. You can choose a different region if you prefer, but ensure it supports both VM types and AKS. +This Learning Path uses the `westus2` region because it supports both Intel and Arm VM sizes. You can use a different region, but make sure it supports both VM types and AKS. {{% /notice %}} -Set the environment variables as shown below and run the `az aks` commands on your command line. +Set the environment variables as shown below and run the `az aks` commands on your command line: ```bash # Set environment variables @@ -68,10 +66,9 @@ az aks nodepool add \ --node-vm-size Standard_D2ps_v6 ``` +Each command returns JSON output with status information. Look for `"provisioningState": "Succeeded"` in each response to confirm the operation completed successfully. -Each command returns JSON output. Verify that `"provisioningState": "Succeeded"` appears in each response. - -### Connect to the cluster +## Connect to the cluster Verify `kubectl` is available by running: @@ -86,33 +83,31 @@ Client Version: v1.34.1 Kustomize Version: v5.7.1 ``` -If `kubectl` is installed the version information is printed. If you don't see the version information printed refer to the [Azure CLI](/install-guides/azure-cli) and [kubectl](/install-guides/kubectl/) install guides. +If `kubectl` is installed the version information is printed. If you don't see the version information printed, refer to the [Azure CLI Install Guide](/install-guides/azure-cli) and [kubectl Install Guide](/install-guides/kubectl/). Next, set up your newly-created K8s cluster credentials using the Azure CLI: ```bash az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME ``` - -You should see: +The expected output is: ```output Merged "nginx-on-arm" as current context in /home/user/.kube/config ``` -To verify you're connected to the cluster: +Now verify you're connected to the cluster: ```bash kubectl cluster-info ``` - -A message similar to the following should be displayed: +The expected output is: ```output Kubernetes control plane is running at https://nginx-on-a-nginx-on-arm-rg-dd0bfb-eenbox6p.hcp.westus2.azmk8s.io:443 ``` -With the cluster running, verify the node pools are ready with the following command: +With the cluster running, verify the node pools are ready: ```bash kubectl get nodes -o wide @@ -127,4 +122,8 @@ aks-intel-39600573-vmss000002 Ready 6h8m v1.32.7 ``` -With all nodes showing `Ready` status, you're ready to continue to the next section. +With all nodes showing `Ready` status, you're now ready to continue to the next section. + +## What you've accomplished and what's next + +Great job! You’ve successfully created a multi-architecture AKS cluster with both Arm and x64 node pools. This is a significant milestone and you're now set up to deploy and compare workloads across architectures. Keep going to see your cluster in action! diff --git a/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/5_rdv3_modify.md b/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/5_rdv3_modify.md index cce9ab4d05..a42fcc66f6 100644 --- a/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/5_rdv3_modify.md +++ b/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/5_rdv3_modify.md @@ -78,7 +78,7 @@ export MODEL="$HOME/FVP_RD_V3_R1/models/Linux64_armv8l_GCC-9.3/FVP_RD_V3_R1" # This starts the dual-chip simulation. You’ll see additional UART consoles (for example, MCP) and can verify both application processors (AP0 and AP1) boot in a coordinated manner. -![img5 alt-text#center](rdv3r1_sim_login.jpg "RD-V3-R1 Buildroot login") +![img5 alt-text#center](rdv3r1_sim_login.webp "RD-V3-R1 Buildroot login") As before, the terminal logs are stored under `~/rdv3r1/model-scripts/rdinfra/platforms/rdv3r1/rdv3r1`. diff --git a/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.jpg b/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.jpg deleted file mode 100644 index 610e5ac73d..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.jpg and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.webp b/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.webp new file mode 100644 index 0000000000..d2146fabee Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/rdv3r1_sim_login.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/aws.md b/content/learning-paths/servers-and-cloud-computing/net-aspire/aws.md index c8d3ed6590..21ff6bfbce 100644 --- a/content/learning-paths/servers-and-cloud-computing/net-aspire/aws.md +++ b/content/learning-paths/servers-and-cloud-computing/net-aspire/aws.md @@ -18,7 +18,7 @@ To set up an Arm-powered EC2 instance, follow these steps: Then, click on **EC2** in the search results: -![Figure 5 alt-text#center](figures/05.png "Figure 5: Search for the EC2 Service in the AWS Management Console.") +![Figure 5 alt-text#center](figures/05.webp "Figure 5: Search for the EC2 Service in the AWS Management Console.") 3. In the EC2 Dashboard, click **Launch Instance** and add the following information in these corresponding data fields to configure your setup: * Name: enter **arm-server**. @@ -28,7 +28,7 @@ To set up an Arm-powered EC2 instance, follow these steps: The configuration should look like the configuration fields that Figure 6 shows: -![Figure 6 alt-text#center](figures/06.png "Figure 6: Configuration Fields.") +![Figure 6 alt-text#center](figures/06.webp "Figure 6: Configuration Fields.") 4. Scroll down to **Key pair** (login), and click **Create new key pair**. This displays the **Create key pair** window. @@ -49,7 +49,7 @@ The configuration should look like the configuration fields that Figure 6 shows: * Description: **arm-security-group**. * Inbound security groups. -![fig8](figures/08.png) +![fig8](figures/08.webp) 6. Configure **Inbound Security Group Rules** by selecting **Add Rule** and then setting the following details: * Type: **Custom TCP**. @@ -61,13 +61,13 @@ Repeat this step for all three ports that the application is using. This example The configuration should look like: -![fig9](figures/09.png) +![fig9](figures/09.webp) 7. Launch an instance by clicking the **Launch instance** button. You should see the green box with the **Success** label. This box also contains a link to the EC2 instance. Click on it, and it takes you to the instance dashboard, as Figure 10 shows: -![fig10](figures/10.png) +![fig10](figures/10.webp) ### Deploy the application Once the EC2 instance is ready, you can connect to it, and deploy the application. Follow these steps to connect: @@ -129,7 +129,7 @@ The application runs the same way as it does locally. You should see the followi Finally, open the application in the web browser, using the EC2's public IP: -![fig13](figures/13.png) +![fig13](figures/13.webp) ### Summary You have successfully deployed the Aspire app on to an Arm-powered AWS EC2 instance. This demonstrates the compatibility of .NET applications with Arm architecture and AWS Graviton instances, offering high performance and cost-efficiency. diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.png deleted file mode 100644 index 250fcd1d86..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.webp new file mode 100644 index 0000000000..e20f8bfd49 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/01.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.png deleted file mode 100644 index 784e3e469a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.webp new file mode 100644 index 0000000000..42dc17f12f Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/02.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.png deleted file mode 100644 index 301aed0b10..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.webp new file mode 100644 index 0000000000..0c5c25ee18 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/03.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.png deleted file mode 100644 index 4ee4b017ec..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.webp new file mode 100644 index 0000000000..12b86bb3d2 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/04.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.png deleted file mode 100644 index 0d4ebd65b0..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.webp new file mode 100644 index 0000000000..e5ee305d4c Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/05.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.png deleted file mode 100644 index 4e3f7b5850..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.webp new file mode 100644 index 0000000000..adc7253f3c Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/06.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.png deleted file mode 100644 index b5fa8b6a2e..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.webp new file mode 100644 index 0000000000..cb73fe3441 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/08.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.png deleted file mode 100644 index a7f89808ba..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.webp new file mode 100644 index 0000000000..d87cc69ffc Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/09.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.png deleted file mode 100644 index aeef1a5c0b..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.webp new file mode 100644 index 0000000000..67264c6cbe Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/10.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.png deleted file mode 100644 index d043a36aba..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.webp new file mode 100644 index 0000000000..f32c4507b9 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/13.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.png deleted file mode 100644 index 9a089acd85..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.webp new file mode 100644 index 0000000000..39f00e7dea Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/14.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.png deleted file mode 100644 index bc99c30dcb..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.webp new file mode 100644 index 0000000000..210a346d2d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/15.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.png deleted file mode 100644 index 78834c217a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.webp new file mode 100644 index 0000000000..bfb9761ba5 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/16.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.png deleted file mode 100644 index 961b085813..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.webp new file mode 100644 index 0000000000..12f3edf564 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/18.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.png b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.png deleted file mode 100644 index ffabd6a938..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.webp b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.webp new file mode 100644 index 0000000000..ce20f6105d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/net-aspire/figures/19.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/gcp.md b/content/learning-paths/servers-and-cloud-computing/net-aspire/gcp.md index 191ec0d5fc..da720d2a5d 100644 --- a/content/learning-paths/servers-and-cloud-computing/net-aspire/gcp.md +++ b/content/learning-paths/servers-and-cloud-computing/net-aspire/gcp.md @@ -28,7 +28,7 @@ To create an Arm64 VM, follow these steps: The configuration setup should resemble the following: -![fig14](figures/14.png) +![fig14](figures/14.webp) 6. Configure the Remaining Settings: @@ -37,7 +37,7 @@ The configuration setup should resemble the following: * Identity and API Access: keep the default settings. * Firewall Settings: Check **Allow HTTP traffic** and **Allow HTTPS traffic**. -![fig15](figures/15.png) +![fig15](figures/15.webp) 7. Click the **Create** Button and wait for the VM to be created. @@ -45,7 +45,7 @@ The configuration setup should resemble the following: After creating the VM, connect to it as follows: 1. In **Compute Engine**, click the SSH drop-down menu next to your VM, and select **Open in browser window**: -![fig16](figures/16.png) +![fig16](figures/16.webp) 2. This opens a browser window. First, click the **Authorize** button: @@ -53,7 +53,7 @@ After creating the VM, connect to it as follows: 3. You will then see the terminal of your VM: -![fig18](figures/18.png) +![fig18](figures/18.webp) ### Installing dependencies and deploying an app Once the connection is established, you can install the required dependencies (.NET SDK, Aspire workload, and Git), fetch the application code, and deploy it. @@ -100,7 +100,7 @@ dotnet run --project NetAspire.Arm.AppHost ``` You will see output similar to this: -![fig19](figures/19.png) +![fig19](figures/19.webp) ### Making your application public diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/modify_project.md b/content/learning-paths/servers-and-cloud-computing/net-aspire/modify_project.md index 6e56a43a4d..aa550c00d0 100644 --- a/content/learning-paths/servers-and-cloud-computing/net-aspire/modify_project.md +++ b/content/learning-paths/servers-and-cloud-computing/net-aspire/modify_project.md @@ -82,6 +82,6 @@ dotnet run --project NetAspire.Arm.AppHost Next, navigate to the web frontend, select **Weather**, and then return to the dashboard. Click **Traces** and note that the operation now takes significantly longer to complete — approximately four seconds in the example below: -![fig4 alt-text#center](figures/04.png "Figure 4: Traces Example.") +![fig4 alt-text#center](figures/04.webp "Figure 4: Traces Example.") You are now ready to deploy the application to the cloud. diff --git a/content/learning-paths/servers-and-cloud-computing/net-aspire/run_app.md b/content/learning-paths/servers-and-cloud-computing/net-aspire/run_app.md index 2bc850baaa..a9a006292c 100644 --- a/content/learning-paths/servers-and-cloud-computing/net-aspire/run_app.md +++ b/content/learning-paths/servers-and-cloud-computing/net-aspire/run_app.md @@ -39,16 +39,16 @@ In this case, it is: [https://localhost:17222/login?t=81f99566c9ec462e66f5eab5aa This directs you to the application dashboard, as Figure 1 shows: -![fig1 alt-text#center](figures/01.png "Figure 1: Application Dashboard.") +![fig1 alt-text#center](figures/01.webp "Figure 1: Application Dashboard.") On the dashboard, locate and click the endpoint link for `NetAspire.Arm.Web`. This takes you to the Blazor-based web application. In the Blazor app, navigate to the Weather section to access and display data retrieved from the WeatherForecast API: -![fig2 alt-text#center](figures/02.png "Figure 2: Data Displayed from WeatherForecast API.") +![fig2 alt-text#center](figures/02.webp "Figure 2: Data Displayed from WeatherForecast API.") Now return to the dashboard, and select the **Traces** option. This section provides detailed telemetry tracing, allowing you to view the flow of requests, track service dependencies, and analyze performance metrics for your application: -![fig3 alt-text#center](figures/03.png "Figure 3: Traces.") +![fig3 alt-text#center](figures/03.webp "Figure 3: Traces.") By following these steps, you can explore the key components of the .NET Aspire application, including its dashboard, data interaction through APIs, and telemetry tracing capabilities. diff --git a/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/baseline.md b/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/baseline.md index 5144c44095..6b86202f76 100644 --- a/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/baseline.md +++ b/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/baseline.md @@ -129,6 +129,6 @@ http:/// ## Verify the page renders You should see your custom page instead of the default welcome page: -![Custom static website served by NGINX on Azure VM alt-text#center](images/nginx-web.png "Custom static website served by NGINX on an Azure Arm64 VM") +![Custom static website served by NGINX on Azure VM alt-text#center](images/nginx-web.webp "Custom static website served by NGINX on an Azure Arm64 VM") This verifies the basic functionality of the NGINX installation. You can now proceed to benchmarking NGINX performance on your Arm-based Azure VM. diff --git a/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.png b/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.png deleted file mode 100644 index 152bf727a6..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.webp b/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.webp new file mode 100644 index 0000000000..e3fc37aba7 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/nginx-on-azure/images/nginx-web.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/nginx/_index.md b/content/learning-paths/servers-and-cloud-computing/nginx/_index.md index 2cd79f0d39..3b8c368c30 100644 --- a/content/learning-paths/servers-and-cloud-computing/nginx/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/nginx/_index.md @@ -7,7 +7,7 @@ who_is_this_for: This is an introductory topic for engineers who want to use Ngi learning_objectives: - Install and run Nginx on Arm servers - - Setup Nginx as a web server, reverse proxy, or an API Gateway + - Set up Nginx as a web server, reverse proxy, or an API Gateway - Verify Nginx is working correctly prerequisites: diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/analysis.md b/content/learning-paths/servers-and-cloud-computing/onnx/analysis.md index 8939fad493..4703630e42 100644 --- a/content/learning-paths/servers-and-cloud-computing/onnx/analysis.md +++ b/content/learning-paths/servers-and-cloud-computing/onnx/analysis.md @@ -9,7 +9,7 @@ layout: learningpathall To begin, input the text prompt as shown in the example below: -![output](output.png) +![output](output.webp) ## Observe performance metrics diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/chatbot.md b/content/learning-paths/servers-and-cloud-computing/onnx/chatbot.md index 005c213d7f..d5ef226205 100644 --- a/content/learning-paths/servers-and-cloud-computing/onnx/chatbot.md +++ b/content/learning-paths/servers-and-cloud-computing/onnx/chatbot.md @@ -126,4 +126,4 @@ python3 phi4.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpu -g ``` You should see output similar to the image below when the server starts successfully: -![server](server.png) +![server](server.webp) diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/output.png b/content/learning-paths/servers-and-cloud-computing/onnx/output.png deleted file mode 100644 index f3d16c82ee..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/onnx/output.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/output.webp b/content/learning-paths/servers-and-cloud-computing/onnx/output.webp new file mode 100644 index 0000000000..aace1caaf2 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/onnx/output.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/server.png b/content/learning-paths/servers-and-cloud-computing/onnx/server.png deleted file mode 100644 index 64d9848288..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/onnx/server.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/onnx/server.webp b/content/learning-paths/servers-and-cloud-computing/onnx/server.webp new file mode 100644 index 0000000000..df92445f3d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/onnx/server.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/3_openbmc_simulate.md b/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/3_openbmc_simulate.md index e38eb595d2..08a126e457 100644 --- a/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/3_openbmc_simulate.md +++ b/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/3_openbmc_simulate.md @@ -94,7 +94,7 @@ The simulation proceeds to the **CSSv3 r1** GRUB menu. Press **Enter** to boot. A successful run shows login prompts on both BMC and host consoles. You can also confirm final state in the Web UI or using UART output. -![img2 BMC and host consoles each showing a login prompt after a successful OpenBMC + host UEFI simulation on RD-V3 FVP#center](openbmc_cssv3_sim.jpg "Simulation success with BMC and host consoles") +![img2 BMC and host consoles each showing a login prompt after a successful OpenBMC + host UEFI simulation on RD-V3 FVP#center](openbmc_cssv3_sim.webp "Simulation success with BMC and host consoles") Shown here is a short recording that illustrates OpenBMC and UEFI interaction during pre-silicon execution. diff --git a/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.jpg b/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.jpg deleted file mode 100644 index 36d70252da..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.jpg and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.webp b/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.webp new file mode 100644 index 0000000000..8cc911e9d4 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/openbmc_cssv3_sim.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.png b/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.png deleted file mode 100644 index c91688d8c7..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.webp b/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.webp new file mode 100644 index 0000000000..11a7dc4557 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/bundles.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/intro.md b/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/intro.md index ad4e4392cc..9301535ecc 100644 --- a/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/intro.md +++ b/content/learning-paths/servers-and-cloud-computing/pmuv3_plugin_learning_path/intro.md @@ -28,7 +28,7 @@ The PMUv3 plugin groups performance events together into categories called bundl The events in each bundle and the derived performance metrics are shown in the table below: -![example image alt-text#center](bundles.png "Table 1. Bundled Events") +![example image alt-text#center](bundles.webp "Table 1. Bundled Events") Next, learn how to get the PMUv3 plugin and use it in an application. diff --git a/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.png b/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.png deleted file mode 100644 index 27a63d120b..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.webp b/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.webp new file mode 100644 index 0000000000..0a997c6884 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/images/v1-spe-report-full.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/streamline-cli.md b/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/streamline-cli.md index ff6bc4bc99..efdf251735 100644 --- a/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/streamline-cli.md +++ b/content/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/streamline-cli.md @@ -94,7 +94,7 @@ Arm recommends that you profile an optimized release build of your application, 1. View your report in Excel or other compatible application. In functions reports, problem areas are indicated in red, to help you focus on the main problems. - ![An example functions report](images/v1-spe-report-full.png) + ![An example functions report](images/v1-spe-report-full.webp) See our [example report](/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/example) to learn more about how to interpret the results. diff --git a/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.png b/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.png deleted file mode 100644 index e1fd04e6b7..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.webp b/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.webp new file mode 100644 index 0000000000..f09fa32fea Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/pytorch-llama/images/chatbot.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/pytorch-llama/pytorch-llama-frontend.md b/content/learning-paths/servers-and-cloud-computing/pytorch-llama/pytorch-llama-frontend.md index 8f2442978b..1e174888b7 100644 --- a/content/learning-paths/servers-and-cloud-computing/pytorch-llama/pytorch-llama-frontend.md +++ b/content/learning-paths/servers-and-cloud-computing/pytorch-llama/pytorch-llama-frontend.md @@ -73,7 +73,7 @@ Collecting usage statistics. To deactivate, set browser.gatherUsageStats to fals Open the local URL from the link above in a browser and you should see the chatbot running: -![Chatbot](images/chatbot.png) +![Chatbot](images/chatbot.webp) {{% notice Note %}} If you are running a server in the cloud, the local URL may not connect when starting the frontend server. If this happens, stop the frontend server and reconnect to your instance using port forwarding (see code below). After reconnecting, activate the `venv` and start the Streamlit frontend server. diff --git a/content/learning-paths/servers-and-cloud-computing/rag/chatbot.md b/content/learning-paths/servers-and-cloud-computing/rag/chatbot.md index 1cd6eb3488..e7389d9e5e 100644 --- a/content/learning-paths/servers-and-cloud-computing/rag/chatbot.md +++ b/content/learning-paths/servers-and-cloud-computing/rag/chatbot.md @@ -71,7 +71,7 @@ Follow these steps: 1. Enter your query in the prompt field of the web application. 2. Submit the query to receive a response from the LLM. -![RAG_IMG3](rag_img3.png) +![RAG_IMG3](rag_img3.webp) While the response is streamed to the frontend for immediate viewing, you can monitor the performance metrics on the backend server terminal. This provides insights into the processing speed and efficiency of the LLM. diff --git a/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.png b/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.png deleted file mode 100644 index 424c0af431..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.webp b/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.webp new file mode 100644 index 0000000000..223dedb3f5 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/rag/rag_img3.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-bl1-3.md b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-bl1-3.md index 6d108acfd1..8d973a31d3 100644 --- a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-bl1-3.md +++ b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-bl1-3.md @@ -49,7 +49,7 @@ add-symbol-file "//rd-infra/tf-a/build/rdn2/debug/bl31/bl31.elf" EL3: If you would like to add platform-specific debug files, the memory locations are in the corresponding ``platform_h.def`` file. {{% /notice %}} -![tfa symbols alt-text#center](images/tfa-symbols.png "Figure 2. Load TF-A symbols") +![tfa symbols alt-text#center](images/tfa-symbols.webp "Figure 2. Load TF-A symbols") These commands load the symbol files and specify the memory address location, updating **workspace** to include the path to your own workspace directory. @@ -63,7 +63,7 @@ Set a breakpoint in the function you would like to debug. In this example, you c Simply interrupt the CPU and enter debug command `set $pc += 4'; you can now step through and debug the TF-A boot flow. -![bl1 breakpoint alt-text#center](images/bl1_breakpoint.png "Figure 5. BL1 breakpoint") +![bl1 breakpoint alt-text#center](images/bl1_breakpoint.webp "Figure 5. BL1 breakpoint") ## Alternate break method Another method of setting a breakpoint without modifying TF-A is by launching the model with ``--break``. diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-scp-lcp-rse-2.md b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-scp-lcp-rse-2.md index 5ef2564bbb..3ef8d86be2 100644 --- a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-scp-lcp-rse-2.md +++ b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/debugging-scp-lcp-rse-2.md @@ -40,7 +40,7 @@ Click **Browse for model running on local host**. Select the correct model, and click **Finish**. -![connect model alt-text#center](images/connect_model.png "Figure 4. Connect model") +![connect model alt-text#center](images/connect_model.webp "Figure 4. Connect model") In the **Edit configuration and launch** panel, in the **Connection** tab, select the correct target. @@ -86,11 +86,11 @@ break cmn700_discovery continue ``` -![scp breakpoint 1 alt-text#center](images/scp_breakpoint1.png "Figure 7. cmn700_discovery() breakpoint") +![scp breakpoint 1 alt-text#center](images/scp_breakpoint1.webp "Figure 7. cmn700_discovery() breakpoint") Set another breakpoint at a debug print statement. -![scp breakpoint 2 alt-text#center](images/scp_breakpoint2.png "Figure 8. SCP breakpoint 2") +![scp breakpoint 2 alt-text#center](images/scp_breakpoint2.webp "Figure 8. SCP breakpoint 2") Observe the output in the SCP UART window. diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.png deleted file mode 100644 index 16ae2d700b..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.webp new file mode 100644 index 0000000000..cb42d66a24 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/bl1_breakpoint.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.png deleted file mode 100644 index a38c2abb76..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.webp new file mode 100644 index 0000000000..128a4e5875 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/connect_model.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.png deleted file mode 100644 index 9ec1d4f269..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.webp new file mode 100644 index 0000000000..9817d7d7be Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/modify_params.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.png deleted file mode 100644 index 961742f802..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.webp new file mode 100644 index 0000000000..2c7107a6b4 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint1.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.png deleted file mode 100644 index 150c722170..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.webp new file mode 100644 index 0000000000..b106e77c8a Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/scp_breakpoint2.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.png b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.png deleted file mode 100644 index 478f48a9ae..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.webp b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.webp new file mode 100644 index 0000000000..fa3d6e51b0 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/images/tfa-symbols.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/setup-1.md b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/setup-1.md index 4a5773539f..85df2dc400 100644 --- a/content/learning-paths/servers-and-cloud-computing/refinfra-debug/setup-1.md +++ b/content/learning-paths/servers-and-cloud-computing/refinfra-debug/setup-1.md @@ -22,7 +22,7 @@ To prepare for debugging, remove the `–R` parameter from the `PARAMS=` section When `-R` is used, the FVP continues execution and does not wait for the debug connection. -![modify parameters alt-text#center](images/modify_params.png "Figure 1. Modify run_model.sh") +![modify parameters alt-text#center](images/modify_params.webp "Figure 1. Modify run_model.sh") {{% notice Debug server %}} To start a `CADI` debug server, use the `-S` option. For an `Iris` debug server, change this to `-I` instead. diff --git a/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.png b/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.png deleted file mode 100644 index e905486b9c..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.webp b/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.webp new file mode 100644 index 0000000000..d4f533e758 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/_images/grafana.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/cluster-monitoring.md b/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/cluster-monitoring.md index 579867460f..2a112635e9 100644 --- a/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/cluster-monitoring.md +++ b/content/learning-paths/servers-and-cloud-computing/sentiment-analysis-eks/cluster-monitoring.md @@ -113,4 +113,4 @@ Locate a `Kubernetes/Compute Resources/Node (Pods)` dashboard and click on it. You should see a dashboard like below for your Kubernetes cluster: -![grafana #center](_images/grafana.png "Figure 8: Dashboard for Kubernetes Cluster.") +![grafana #center](_images/grafana.webp "Figure 8: Dashboard for Kubernetes Cluster.") diff --git a/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.png b/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.png deleted file mode 100644 index 7f9c441115..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.webp b/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.webp new file mode 100644 index 0000000000..730cf2f7da Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/figures/01.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/lambda.md b/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/lambda.md index 96d874183c..e130a4568d 100644 --- a/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/lambda.md +++ b/content/learning-paths/servers-and-cloud-computing/serverless-framework-aws-intro/lambda.md @@ -176,7 +176,7 @@ You will see the following output: Finally, log into the AWS console. Change the region to us-east-1 (N. Virginia). Then, go to the Lambda dashboard to see the deployed Lambda function. It will be named *AwsServerlessLambda-dev-hello*: -![fig1](figures/01.png) +![fig1](figures/01.webp) ## Summary In this Learning Path, you learned about the Serverless Framework, its benefits, and its integration with Infrastructure as Code (IaC) for managing cloud resources. You set up the Serverless Framework for AWS and created a project. We explained its structure, specifically focusing on the serverless.yml file, including the structure and configuration options for setting up a basic Serverless service with AWS Lambda. Finally, we explored the Lambda handler function and deployed the resources to AWS. diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/2_build_kernel_image.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/2_build_kernel_image.md deleted file mode 100644 index 03860d4453..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/2_build_kernel_image.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Build Linux image -weight: 3 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Build a debuggable kernel image - -For this learning path we will be using [Buildroot](https://github.com/buildroot/buildroot) to build a Linux image for Raspberry Pi 3B+ with a debuggable Linux kernel. We will profile Linux kernel modules built out-of-tree and Linux device drivers built in the Linux source code tree. - -1. Clone the Buildroot Repository and initialize the build system with the default configurations. - - ```bash - git clone https://github.com/buildroot/buildroot.git - cd buildroot - make raspberrypi3_64_defconfig - make menuconfig - make -j$(nproc) - ``` - -2. Change Buildroot configurations to enable debugging symbols and SSH access. - - ```plaintext - Build options ---> - [*] build packages with debugging symbols - gcc debug level (debug level 3) - [*] build packages with runtime debugging info - gcc optimization level (optimize for debugging) ---> - - System configuration ---> - [*] Enable root login with password - (****) Root password # Choose root password here - - Kernel ---> - Linux Kernel Tools ---> - [*] perf - - Target packages ---> - Networking applications ---> - [*] openssh - [*] server - [*] key utilities - ``` - - You might also need to change your default `sshd_config` file according to your network settings. To do that, you need to modify System configuration→ Root filesystem overlay directories to add a directory that contains your modified `sshd_config` file. - -3. By default the Linux kernel images are stripped so we will need to make the image debuggable as we'll be using it later. - - ```bash - make linux-menuconfig - ``` - - ```plaintext - Kernel hacking ---> - -*- Kernel debugging - Compile-time checks and compiler options ---> - Debug information (Rely on the toolchain's implicit default DWARF version) - [ ] Reduce debugging information #un-check - ``` - -4. Now we can build the Linux image and flash it to the the SD card to run it on the Raspberry Pi. - - ```bash - make -j$(nproc) - ``` - -It will take some time to build the Linux image. When it completes, the output will be in `/output/images/sdcard.img` -For details on flashing the SD card image, see [this helpful article](https://www.ev3dev.org/docs/tutorials/writing-sd-card-image-ubuntu-disk-image-writer/). -Now that we have a target running Linux with a debuggable kernel image, we can start writing our kernel module that we want to profile. diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/3_OOT_module.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/3_OOT_module.md deleted file mode 100644 index 420bb00662..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/3_OOT_module.md +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: Build out-of-tree kernel module -weight: 4 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Creating the Linux Kernel Module - -We will now learn how to create an example Linux kernel module (Character device) that demonstrates a cache miss issue caused by traversing a 2D array in column-major order. This access pattern is not cache-friendly, as it skips over most of the neighboring elements in memory during each iteration. - -To build the Linux kernel module, start by creating a new directory—We will call it **example_module**—in any location of your choice. Inside this directory, add two files: `mychardrv.c` and `Makefile`. - -**Makefile** - -```makefile -obj-m += mychardrv.o -BUILDROOT_OUT := /opt/rpi-linux/buildroot/output # Change this to your buildroot output directory -KDIR := $(BUILDROOT_OUT)/build/linux-custom -CROSS_COMPILE := $(BUILDROOT_OUT)/host/bin/aarch64-buildroot-linux-gnu- -ARCH := arm64 - -all: - $(MAKE) -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules - -clean: - $(MAKE) -C $(KDIR) M=$(PWD) clean -``` - -{{% notice Note %}} -Change **BUILDROOT_OUT** to the correct buildroot output directory on your host machine -{{% /notice %}} - -**mychardrv.c** - -```c -// SPDX-License-Identifier: GPL-2.0 -#include "linux/printk.h" -#include -#include -#include -#include - -// Using fixed major and minor numbers just for demonstration purposes. -// Major number 42 is for demo/sample uses according to -// https://www.kernel.org/doc/Documentation/admin-guide/devices.txt -#define MAJOR_VERSION_NUM 42 -#define MINOR_VERSION_NUM 0 -#define MODULE_NAME "mychardrv" -#define MAX_INPUT_LEN 64 - -static struct cdev my_char_dev; - -/** - * @brief Traverse a 2D matrix and calculate the sum of its elements. - * - * @size: The size of the matrix (number of rows and columns). - * - * This function allocates a 2D matrix of integers, initializes it with the sum - * of its indices, and then calculates the sum of its elements by accessing them - * in a cache-unfriendly column-major order. - * - * Return: 0 on success, or -ENOMEM if memory allocation fails. - */ -int char_dev_cache_traverse(long size) { - int i, j; - long sum = 0; - - int **matrix; - - // Allocate rows - matrix = kmalloc_array(size, sizeof(int *), GFP_KERNEL); - if (!matrix) - return -ENOMEM; - - // Allocate columns and initialize matrix - for (i = 0; i < size; i++) { - matrix[i] = kmalloc_array(size, sizeof(int), GFP_KERNEL); - if (!matrix[i]) { - for (int n = 0; n < i; n++) { - kfree(matrix[n]); - } - kfree(matrix); - return -ENOMEM; - } - - for (j = 0; j < size; j++) - matrix[i][j] = i + j; - } - - // Access in cache-UNFRIENDLY column-major order - for (j = 0; j < size; j++) { - for (i = 0; i < size; i++) { - sum += matrix[i][j]; - } - } - - pr_info("Sum: %ld\n", sum); - - // Free memory - for (i = 0; i < size; i++) - kfree(matrix[i]); - kfree(matrix); - - return 0; -} - -/** - * @brief Gets the size of the list to be created from user space. - * - */ -static ssize_t char_dev_write(struct file *file, const char *buff, - size_t length, loff_t *offset) { - (void)file; - (void)offset; - - ssize_t ret = 0; - char *kbuf; - long size_value; - - // Allocate kernel buffer - kbuf = kmalloc(MAX_INPUT_LEN, GFP_KERNEL); - if (!kbuf) - return -ENOMEM; - - // copy data from user space to kernel space - if (copy_from_user(kbuf, buff, length)) { - ret = -EFAULT; - goto out; - } - kbuf[length] = '\0'; - - // Convert string to long (Base 10) - ret = kstrtol(kbuf, 10, &size_value); - if (ret) - goto out; - - // Call cache traversal function - ret = char_dev_cache_traverse(size_value); - if (ret) - goto out; - - ret = length; - -out: - kfree(kbuf); - return ret; -} - -static int char_dev_open(struct inode *node, struct file *file) { - (void)file; - pr_info("%s is open - Major(%d) Minor(%d)\n", MODULE_NAME, - MAJOR(node->i_rdev), MINOR(node->i_rdev)); - return 0; -} - -static int char_dev_release(struct inode *node, struct file *file) { - (void)file; - pr_info("%s is released - Major(%d) Minor(%d)\n", MODULE_NAME, - MAJOR(node->i_rdev), MINOR(node->i_rdev)); - return 0; -} - -// File operations structure -static const struct file_operations dev_fops = {.owner = THIS_MODULE, - .open = char_dev_open, - .release = char_dev_release, - .write = char_dev_write}; - -static int __init char_dev_init(void) { - int ret; - // Allocate Major number - ret = register_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1, - MODULE_NAME); - if (ret < 0) - return ret; - - // Initialize cdev structure and add it to kernel - cdev_init(&my_char_dev, &dev_fops); - ret = cdev_add(&my_char_dev, MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); - - if (ret < 0) { - unregister_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); - return ret; - } - - return ret; -} - -static void __exit char_dev_exit(void) { - cdev_del(&my_char_dev); - unregister_chrdev_region(MKDEV(MAJOR_VERSION_NUM, MINOR_VERSION_NUM), 1); -} - -module_init(char_dev_init); -module_exit(char_dev_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Yahya Abouelseoud"); -MODULE_DESCRIPTION("A simple char driver with cache misses issue"); -``` - -The module above receives the size of a 2D array as a string through the `char_dev_write()` function, converts it to an integer, and passes it to the `char_dev_cache_traverse()` function. This function then creates the 2D array, initializes it with simple data, traverses it in a column-major (cache-unfriendly) order, computes the sum of its elements, and prints the result to the kernel log. - -## Building and Running the Kernel Module - -1. To compile the kernel module, run make inside the example_module directory. This will generate the output file `mychardrv.ko`. - -2. Transfer the .ko file to the target using scp command and then insert it using insmod command. After inserting the module, we create a character device node using mknod command. Finally, we can test the module by writing a size value (e.g., 10000) to the device file and measuring the time taken for the operation using the `time` command. - - ```bash - scp mychardrv.ko root@:/root/ - ``` - - {{% notice Note %}} - Replace \ with your own target IP address - {{% /notice %}} - -3. To run the module on the target, we need to run the following commands on the target: - - ```bash - ssh root@ - - #The following commands should be running on target device - - insmod /root/mychardrv.ko - mknod /dev/mychardrv c 42 0 - ``` - - {{% notice Note %}} - 42 and 0 are the major and minor number we chose in our module code above - {{% /notice %}} - -4. Now if you run dmesg you should see something like: - - ```log - [12381.654983] mychardrv is open - Major(42) Minor(0) - ``` - -5. To make sure it's working as expected you can use the following command: - - ```bash { output_lines = "2-4" } - time echo '10000' > /dev/mychardrv - # real 0m 38.04s - # user 0m 0.00s - # sys 0m 38.03s - ``` - - The command above passes 10000 to the module, which specifies the size of the 2D array to be created and traversed. The **echo** command takes a long time to complete (around 38 seconds) due to the cache-unfriendly traversal implemented in the `char_dev_cache_traverse()` function. - -With the kernel module built, the next step is to profile it using Arm Streamline. We will use it to capture runtime behavior, highlight performance bottlenecks, and help identifying issues such as the cache-unfriendly traversal in our module. diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/4_sl_profile_OOT.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/4_sl_profile_OOT.md deleted file mode 100644 index a5950cd2ac..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/4_sl_profile_OOT.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Profile out-of-tree kernel module -weight: 5 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Use Streamline to profile an out-of-tree kernel module - -Arm Streamline is a tool that uses sampling to measure system performance. Instead of recording every single event (like instrumentation does, which can slow things down), it takes snapshots of hardware counters and system registers at regular intervals. This gives a statistical view of how the system runs, while keeping the overhead small. - -Streamline tracks many performance metrics such as CPU usage, execution cycles, memory access, cache hits and misses, and GPU activity. By putting this information together, it helps developers see how their code is using the hardware. Captured data is presented on a timeline, so you can see how performance changes as your program runs. This makes it easier to notice patterns, find bottlenecks, and link performance issues to specific parts of your application. - -For more details about Streamline and its features, refer to the [Streamline user guide](https://developer.arm.com/documentation/101816/latest/Getting-started-with-Streamline/Introduction-to-Streamline). - -Streamline is included with Arm Performance Studio, which you can download and use for free from [Arm Performance Studio downloads](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Studio#Downloads). - -For step-by-step guidance on setting up Streamline on your host machine, follow the installation instructions provided in [Streamline installation guide](https://developer.arm.com/documentation/101816/latest/Getting-started-with-Streamline/Install-Streamline). - -### Pushing Gator to the Target and Making a Capture - -Once Streamline is installed on the host machine, you can capture trace data of our Linux kernel module. - -1. To communicate with the target, Streamline requires a daemon, called **gatord**, to be installed and running on the target. gatord must be running before you can capture trace data. There are two pre-built gatord binaries available in Streamline's install directory, one for *Armv7 (AArch32)* and one for *Armv8 or later(AArch64)*. Push **gatord** to the target device using **scp**. - - ```bash - scp /streamline/bin/linux/arm64/gatord root@:/root/gatord - # use arm instead of arm64, if your are using an AArch32 target - ``` - -2. Run gator on the target to start system-wide capture mode. - - ```bash - /root/gatord -S yes -a - ``` - - ![Gator command#center](./images/img01_gator_cmd.png) - -3. Open Streamline and choose *TCP mode*. - -4. Enter your target hostname or IP address. -![Streamline TCP settings#center](./images/img02_streamline_tcp.png) - -5. Click on *Select counters* to open the counter configuration dialogue, to learn more about counters and how to configure them please refer to [counter configuration guide](https://developer.arm.com/documentation/101816/latest/Capture-a-Streamline-profile/Counter-Configuration) - -6. Add `L1 data Cache: Refill` and `L1 Data Cache: Access` and enable Event-Based Sampling (EBS) for both of them as shown in the screenshot and click *Save*. - - {{% notice %}} - To learn more about EBS, please refer to [Streamline user guide](https://developer.arm.com/documentation/101816/9-7/Capture-a-Streamline-profile/Counter-Configuration/Setting-up-event-based-sampling) - {{% /notice %}} - - ![Counter configuration#center](./images/img03_counter_config.png) - -7. In the Command section, we will add the same shell command we used earlier to test our Linux module. - - ```bash - sh -c "echo 10000 > /dev/mychardrv" - ``` - - ![Streamline command#center](./images/img04_streamline_cmd.png) - -8. In the Capture settings dialog, select Add image, add your kernel module file `mychardrv.ko` and click Save. -![Capture settings#center](./images/img05_capture_settings.png) - -9. Start the capture and enter a name and location for the capture file. Streamline will start collecting data and the charts will show activity being captured from the target. -![Streamline timeline#center](./images/img06_streamline_timeline.png) - -### Analyze the capture and inspect the code - -Once the capture is stopped, Streamline automatically analyzes the collected data and provides insights to help identify performance issues and bottlenecks. This section describes how to view these insights, starting with locating the functions related to our kernel module and narrowing down to the exact lines of code that may be responsible for the performance problems. - -1. Open the *Functions tab*. In the counters list, select one of the counters we selected earlier in the counter configuration dialog, as shown: - -![Counter selection#center](./images/img07_select_datasource.png) - -2. In the Functions tab, observe that the function `char_dev_cache_traverse()` has the highest L1 Cache refill rate, which we already expected. - Also notice the Image name on the right, which is our module file name `mychardrv.ko`: - -![Functions tab#center](./images/img08_Functions_Tab.png) - -3. To view the call path of this function, right click on the function name and choose *Select in Call Paths*. - -4. You can now see the exact function that called `char_dev_cache_traverse()`. In the Locations column, notice that the function calls started in the userspace (echo command) and terminated in the kernel space module `mychardrv.ko`: -![Call paths tab#center](./images/img09_callpaths_tab.png) - -5. Since we compiled our kernel module with debug info, we will be able to see the exact code lines that are causing these cache misses. - To do so, double-click on the function name and the *Code tab* opens. This view shows you how much each code line contributed to the cache misses and in bottom half of the code view, you can also see the disassembly of these lines with the counter values of each assembly instruction: -![Code tab#center](./images/img10_code_tab.png) - -{{% notice Note %}} -You may need to configure path prefix substitution in the Code tab to view the source code correctly. For details on how to set this up and for more information about code analysis, please refer to [Streamline user guide](https://developer.arm.com/documentation/101816/latest/Analyze-your-capture/Analyze-your-code?lang=en) -{{% /notice %}} \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/5_inTree_kernel_driver.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/5_inTree_kernel_driver.md deleted file mode 100644 index cfa99ef04d..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/5_inTree_kernel_driver.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Build in-tree kernel driver -weight: 6 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Build an in-tree Linux kernel driver - -Now that we have learned how to build and profile an out-of-tree kernel module, we will move on to building a driver statically into the Linux kernel. We will then profile it by adding the kernel’s vmlinux file as an image in Streamline’s capture settings. This allows us to view function calls and call paths as before, and also inspect specific sections of the kernel code that may be contributing to performance issues. - -### Creating an in-tree simple character device driver - -We will use the same example character driver we used earlier `mychardrv` except that this time we will be statically linking it to the kernel. - -1. Go to your kernel source directory, in our case, it's located in Buildroot's output directory in `/output/build/linux-custom`. - -2. Copy the `mychardrv.c` file created earlier to `drivers/char` directory. - - ```bash - cd drivers/char - cp ./mychardrv.c - ``` - -3. Add the following configuration to the bottom of the `Kconfig` file to make the kernel configuration system aware of the the new driver we just added. - - ```plaintext - config MYCHAR_DRIVER - tristate "My Character Driver" - default y - help - A simple character device driver for testing. - endmenu - ``` - -4. We also need to modify the `Makefile` in the current directory to make it build the object file for `mychardrv.c`, so we'll add the following line to it. - - ```Makefile - obj-$(CONFIG_MYCHAR_DRIVER) += mychardrv.o - ``` - -### Rebuild and Run the Linux Image - -You can rebuild the Linux image simply by running the **make** command in your Buildroot directory. This rebuilds the Linux kernel including our new device driver and produce a debuggable `vmlinux` ELF file. - -```bash -cd -make -j$(nproc) -``` - -To verify that our driver was compiled into the kernel, you can run the following command: - -```bash -find -iname "mychardrv.o" -``` - -This should return the full path of the object file produced from compiling our character device driver. - -Now you can flash the new `sdcard.img` file produced to your target's SD card. To learn how to flash the sdcard.img file to your SD card, you can look at [this helpful article](https://www.ev3dev.org/docs/tutorials/writing-sd-card-image-ubuntu-disk-image-writer/). This time our driver will be automatically loaded when Linux is booted. diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/6_sl_profile_inTree.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/6_sl_profile_inTree.md deleted file mode 100644 index 18a729bf8c..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/6_sl_profile_inTree.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Profile in-tree kernel driver -weight: 7 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Use Streamline to profile an in-tree kernel driver - -Profiling in-tree drivers follows almost the same process as profiling an out-of-tree kernel module. The steps include: - -1. Transferring gator to the target device using scp. - -2. Launching Streamline, selecting TCP view, and entering the target’s IP or hostname. - -3. Setting up counters and enabling Event-Based Sampling (EBS). - -The main difference is that, instead of adding the kernel module’s object file as the capture image in Capture settings, we now use the Linux ELF file (vmlinux) generated by Buildroot. - -![Vmlinux capture settings#center](./images/img11_vmlinux_capture_settings.png) - -After clicking Save in Capture settings dialog, you can start the capture and analyze it as we did before. -![Vmlinux function tab#center](./images/img12_vmlinux_function_tab.png) - -Since we used vmlinux image we can view our driver functions as well as all other kernel functions that were sampled during our capture. -You can also view the full Call path of any sampled function within the kernel. -![Vmlinux call paths tab#center](./images/img13_vmlinux_callpaths_tab.png) diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/7_sl_SPE.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/7_sl_SPE.md deleted file mode 100644 index abb5729d4e..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/7_sl_SPE.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Using Streamline with Statistical Profiling Extension -weight: 8 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- - -## Using the Statistical Profiling Extension (SPE) for better analysis - -With periodic sampling, Streamline collects CPU performance data using hardware counters and software interrupts. Hardware counters only give totals, so you can’t see which exact instructions caused the events. At best, you can link the counts to a broad section of code. This makes it harder to pinpoint problems. Sampling the Program Counter (PC) or call stack is also limited, since software timers handle both sampling and unwinding. - -The Statistical Profiling Extension (SPE) removes these limits. It samples the PC in hardware, directly inside the CPU pipeline. This adds almost no overhead, so the sampling rate can be much higher. SPE also records extra details about each sampled instruction, giving a much clearer view of how the code runs. For more details on SPE and how it works in Streamline see [this blog post](https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/introduction-to-statistical-profiling-support-in-streamline). - -To find out if your target supports SPE, please see [Streamline user guide](https://developer.arm.com/documentation/101816/9-7/Capture-a-Streamline-profile/Counter-Configuration/Configure-SPE-counters). - -### Profiling Kernel Module Using SPE - -To profile both in-tree and out-of-tree kernel modules, we can use the same setup steps as before. The only change is to add “Arm Statistical Profiling Extension” to the Events to Collect list in the Counter Configuration dialog. -![SPE counter selection#center](./images/img14_spe_select_counters.png) - -After saving the counter configurations, Click Start capture to begin data collection, then wait for Streamline to analyze results. - -To view SPE counter values, Select SPE in the data source drop-down in the Call paths, Functions, or Code view. - -As shown in the image, SPE provides much more data about the profiled code than Event-Based Sampling (EBS), which provides us with deep insights into the CPU performance bottlenecks with very low overhead. It's also possible to view or hide columns from the table in Call paths or Functions views by menu-clicking on the table header and choosing from the list of columns. - -![SPE function tab#center](./images/img15_spe_function_tab.gif) diff --git a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/8_summary.md b/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/8_summary.md deleted file mode 100644 index ef91418e51..0000000000 --- a/content/learning-paths/servers-and-cloud-computing/streamline-kernel-module/8_summary.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Summary -weight: 9 - -### FIXED, DO NOT MODIFY -layout: learningpathall ---- -## Summary - -In this learning path, we learned how to build and profile Linux kernel modules step by step. We started with an out-of-tree character driver that had a cache performance issue and then used Arm Streamline to spot where the problem was. Later, we tried the same idea with an in-tree driver and saw how profiling works with the full kernel. Although the example problem was simple, the same methods apply to complex, real-world drivers and scenarios. - -The key takeaway is that profiling isn’t just about making code faster—it’s about understanding how your code talks to the hardware. Streamline gives us a clear picture of what’s happening inside the CPU so we can write better, more efficient drivers. By learning to identify bottlenecks, you will be more confident in fixing them and avoiding common mistakes in kernel programming. diff --git a/content/learning-paths/servers-and-cloud-computing/top-down-n1/analysis-1.md b/content/learning-paths/servers-and-cloud-computing/top-down-n1/analysis-1.md index 98bfd8b1e5..4f15c1258f 100644 --- a/content/learning-paths/servers-and-cloud-computing/top-down-n1/analysis-1.md +++ b/content/learning-paths/servers-and-cloud-computing/top-down-n1/analysis-1.md @@ -287,7 +287,7 @@ perf report When the report opens, use the down arrow key to highlight the `main` function: -![stride #center](report-1.png) +![stride #center](report-1.webp) Press return to annotate the main function. @@ -295,7 +295,7 @@ Press return to annotate the main function. You will see the source code of the `main` function with the percent of samples for each line of source code. -![main #center](report-3.png) +![main #center](report-3.webp) All the samples are on `subs` instruction which is right after the load instruction which reads the array and causes the high cache miss rate. Press the `q` key to exit the report. diff --git a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.png b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.png deleted file mode 100644 index f663ea072d..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.webp b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.webp new file mode 100644 index 0000000000..2ac83a0c3d Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-1.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.png b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.png deleted file mode 100644 index 8c5ead0504..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.webp b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.webp new file mode 100644 index 0000000000..23c593e858 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/top-down-n1/report-3.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/1_setup.md b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/1_setup.md index 2a6ed40924..81f4eaace9 100644 --- a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/1_setup.md +++ b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/1_setup.md @@ -94,9 +94,9 @@ http://${tomcat_ip}:8080/examples You should see the Tomcat welcome page and examples, as shown below: -![Screenshot of the Apache Tomcat homepage showing version and welcome panel alt-text#center](./_images/lp-tomcat-homepage.png "Apache Tomcat homepage") +![Screenshot of the Apache Tomcat homepage showing version and welcome panel alt-text#center](./_images/lp-tomcat-homepage.webp "Apache Tomcat homepage") -![Screenshot of the Tomcat examples page showing servlet and JSP demo links alt-text#center](./_images/lp-tomcat-examples.png "Apache Tomcat examples") +![Screenshot of the Tomcat examples page showing servlet and JSP demo links alt-text#center](./_images/lp-tomcat-examples.webp "Apache Tomcat examples") {{% notice Note %}} Ensure port **8080** is open in the security group or firewall for your Arm‑based Linux machine. diff --git a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.png b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.png deleted file mode 100644 index 2590c08f65..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.webp b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.webp new file mode 100644 index 0000000000..cc08bbcee6 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-examples.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.png b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.png deleted file mode 100644 index 56b23a733a..0000000000 Binary files a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.png and /dev/null differ diff --git a/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.webp b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.webp new file mode 100644 index 0000000000..463a244aeb Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/tune-network-workloads-on-bare-metal/_images/lp-tomcat-homepage.webp differ diff --git a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/1-overview-and-build.md b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/1-overview-and-build.md index bc4bfb3e32..a206484375 100644 --- a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/1-overview-and-build.md +++ b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/1-overview-and-build.md @@ -8,64 +8,83 @@ layout: learningpathall ## What is vLLM? -vLLM is an open‑source, high‑throughput inference and serving engine for large language models. It focuses on efficient execution of the LLM inference prefill and decode phases with: - -- Continuous batching to keep hardware busy across many requests. -- KV cache management to sustain concurrency during generation. -- Token streaming so results appear as they are produced. - -You interact with vLLM in multiple ways: - -- OpenAI‑compatible server: expose `/v1/chat/completions` for easy integration. -- Python API: load a model and generate locally when needed. - -vLLM works well with Hugging Face models, supports single‑prompt and batch workloads, and scales from quick tests to production serving. +vLLM is an open-source, high-throughput inference and serving engine for large language models (LLMs). +It’s designed to make LLM inference faster, more memory-efficient, and scalable, particularly during the prefill (context processing) and decode (token generation) phases of inference. + +### Key Features + * Continuous Batching – Dynamically combines incoming inference requests into a single large batch, maximizing CPU/GPU utilization and throughput. + * KV Cache Management – Efficiently stores and reuses key-value attention states, sustaining concurrency across multiple active sessions while minimizing memory overhead. + * Token Streaming – Streams generated tokens as they are produced, enabling real-time responses for chat or API scenarios. +### Interaction Modes +You can use vLLM in two main ways: + * OpenAI-Compatible REST Server: + vLLM provides a /v1/chat/completions endpoint compatible with the OpenAI API schema, making it drop-in ready for tools like LangChain, LlamaIndex, and the official OpenAI Python SDK. + * Python API: + Load and serve models programmatically within your own Python scripts for flexible local inference and evaluation. + +vLLM supports Hugging Face Transformer models out-of-the-box and scales seamlessly from single-prompt testing to production batch inference. ## What you build -You build a CPU‑optimized vLLM for aarch64 with oneDNN and the Arm Compute Library (ACL). You then validate the build with a quick offline chat example. +In this learning path, you will build a CPU-optimized version of vLLM targeting the Arm64 architecture, integrated with oneDNN and the Arm Compute Library (ACL). +This build enables high-performance LLM inference on Arm servers, leveraging specialized Arm math libraries and kernel optimizations. +After compiling, you’ll validate your build by running a local chat example to confirm functionality and measure baseline inference speed. ## Why this is fast on Arm +vLLM’s performance on Arm servers is driven by both software optimization and hardware-level acceleration. +Each component of this optimized build contributes to higher throughput and lower latency during inference: + - Optimized kernels: The aarch64 vLLM build uses direct oneDNN with the Arm Compute Library for key operations. -- 4‑bit weight quantization: INT4 quantization support & acceleration by Arm KleidiAI microkernels. -- Efficient MoE execution: Fused INT4 quantized expert layers reduce memory traffic and improve throughput. -- Optimized Paged attention: Arm SIMD tuned paged attention implementation in vLLM. -- System tuning: Thread affinity and `tcmalloc` help keep latency and allocator overhead low under load. +- 4‑bit weight quantization: vLLM supports INT4 quantized models, and Arm accelerates this using KleidiAI microkernels, which take advantage of DOT-product (SDOT/UDOT) instructions. +- Efficient MoE execution: For Mixture-of-Experts (MoE) models, vLLM fuses INT4 quantized expert layers to reduce intermediate memory transfers, which minimizes bandwidth bottlenecks +- Optimized Paged attention: The paged attention mechanism, which handles token reuse during long-sequence generation, is SIMD-tuned for Arm’s NEON and SVE (Scalable Vector Extension) pipelines. +- System tuning: Using thread affinity ensures efficient CPU core pinning and balanced thread scheduling across Arm clusters. +Additionally, enabling tcmalloc (Thread-Caching Malloc) reduces allocator contention and memory fragmentation under high-throughput serving loads. ## Before you begin -- Use Python 3.12 on Ubuntu 22.04+ -- Make sure you have at least 32 vCPUs, 64 GB RAM, and 32 GB free disk. +Verify that your environment meets the following requirements: + +Python version: Use Python 3.12 on Ubuntu 22.04 LTS or later. +Hardware requirements: At least 32 vCPUs, 64 GB RAM, and 64 GB of free disk space. -Install the minimum system package used by vLLM on Arm: +This Learning Path was validated on an AWS Graviton4 c8g.12xlarge instance with 64 GB of attached storage. +### Install Build Dependencies + +Install the following packages required for compiling vLLM and its dependencies on Arm64: ```bash sudo apt-get update -y -sudo apt-get install -y libnuma-dev +sudo apt-get install -y build-essential cmake libnuma-dev +sudo apt install -y python3.12-venv python3.12-dev ``` -Optional performance helper you can install now or later: +You can optionally install tcmalloc, a fast memory allocator from Google’s gperftools, which improves performance under high concurrency: ```bash sudo apt-get install -y libtcmalloc-minimal4 ``` {{% notice Note %}} -On aarch64, vLLM’s CPU backend automatically builds with Arm Compute Library via oneDNN. +On aarch64, vLLM’s CPU backend automatically builds with the Arm Compute Library (ACL) through oneDNN. +This ensures optimized Arm kernels are used for matrix multiplications, layer normalization, and activation functions without additional configuration. {{% /notice %}} -## Build vLLM for aarch64 CPU +## Build vLLM for Arm64 CPU +You’ll now build vLLM optimized for Arm (aarch64) servers with oneDNN and the Arm Compute Library (ACL) automatically enabled in the CPU backend. -Create and activate a virtual environment: +1. Create and Activate a Python Virtual Environment +It’s best practice to build vLLM inside an isolated environment to prevent conflicts between system and project dependencies: ```bash -python3 -m venv vllm_env +python3.12 -m venv vllm_env source vllm_env/bin/activate -python -m pip install --upgrade pip +python3 -m pip install --upgrade pip ``` -Clone vLLM and install build requirements: +2. Clone vLLM and Install Build Requirements +Download the official vLLM source code and install its CPU-specific build dependencies: ```bash git clone https://github.com/vllm-project/vllm.git @@ -73,14 +92,18 @@ cd vllm git checkout 5fb4137 pip install -r requirements/cpu.txt -r requirements/cpu-build.txt ``` +The specific commit (5fb4137) pins a verified version of vLLM that officially adds Arm CPUs to the list of supported build targets, ensuring full compatibility and optimized performance for Arm-based systems. -Build a wheel targeted at CPU: +3. Build the vLLM Wheel for CPU +Run the following command to compile and package vLLM as a Python wheel optimized for CPU inference: ```bash VLLM_TARGET_DEVICE=cpu python3 setup.py bdist_wheel ``` +The output wheel will appear under dist/ and include all compiled C++/PyBind modules. -Install the wheel. Use `--no-deps` for incremental installs to avoid clobbering your environment: +4. Install the Wheel +Install the freshly built wheel into your active environment: ```bash pip install --force-reinstall dist/*.whl # fresh install @@ -88,12 +111,14 @@ pip install --force-reinstall dist/*.whl # fresh install ``` {{% notice Tip %}} -Do NOT delete vLLM repo. Local vLLM repository is required for corect inferencing on aarch64 CPU after installing the wheel. +Do not delete the local vLLM source directory. +The repository contains C++ extensions and runtime libraries required for correct CPU inference on aarch64 after wheel installation. {{% /notice %}} -## Quick validation via offline inferencing +## Quick validation via Offline Inferencing -Run the built‑in chat example to confirm the build: +Once your Arm-optimized vLLM build completes, you can validate it by running a small offline inference example. This ensures that the CPU-specific backend and oneDNN and ACL optimizations were correctly compiled into your build. +Run the built-in chat example included in the vLLM repository: ```bash python examples/offline_inference/basic/chat.py \ @@ -101,7 +126,10 @@ python examples/offline_inference/basic/chat.py \ --model TinyLlama/TinyLlama-1.1B-Chat-v1.0 ``` -You should see tokens streaming and a final response. This verifies the optimized vLLM build on your Arm server. +Explanation: +--dtype=bfloat16 runs inference in bfloat16 precision. Recent Arm processors support the BFloat16 (BF16) number format in PyTorch. For example, AWS Graviton3 and Graviton3 processors support BFloat16. +--model specifies a small Hugging Face model for testing (TinyLlama-1.1B-Chat), ideal for functional validation before deploying larger models. +You should see token streaming in the console, followed by a generated output confirming that vLLM’s inference pipeline is working correctly. ```output Generated Outputs: @@ -116,5 +144,8 @@ Processed prompts: 100%|██████████████████ ``` {{% notice Note %}} -As CPU support in vLLM continues to mature, manual builds will be replaced by a simple `pip install` flow for easier setup in near future. +As CPU support in vLLM continues to mature, these manual build steps will eventually be replaced by a streamlined pip install workflow for aarch64, simplifying future deployments on Arm servers. {{% /notice %}} + +You have now verified that your vLLM Arm64 build runs correctly and performs inference using Arm-optimized kernels. +Next, you’ll proceed to model quantization, where you’ll compress LLM weights to INT4 precision using llmcompressor and benchmark the resulting performance improvements. diff --git a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/2-quantize-model.md b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/2-quantize-model.md index a5d472ccce..102ea00e04 100644 --- a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/2-quantize-model.md +++ b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/2-quantize-model.md @@ -5,33 +5,39 @@ weight: 3 ### FIXED, DO NOT MODIFY layout: learningpathall --- +## Accelerating LLMs with 4-bit Quantization -You can accelerate many LLMs on Arm CPUs with 4‑bit quantization. In this guide, we use `deepseek-ai/DeepSeek-V2-Lite` as the example model which gets accelerated by the INT4 path in vLLM using Arm KleidiAI microkernels. +You can accelerate many LLMs on Arm CPUs with 4‑bit quantization. In this section, you’ll quantize the deepseek-ai/DeepSeek-V2-Lite model to 4-bit integer (INT4) weights. +The quantized model runs efficiently through vLLM’s INT4 inference path, which is accelerated by Arm KleidiAI microkernels. ## Install quantization tools -Install the vLLM model quantization packages +Install the quantization dependencies used by vLLM and the llmcompressor toolkit: ```bash pip install --no-deps compressed-tensors pip install llmcompressor ``` - -Reinstall your locally built vLLM if you rebuilt it: + * compressed-tensors provides the underlying tensor storage and compression utilities used for quantized model formats. + * llmcompressor includes quantization, pruning, and weight clustering utilities compatible with Hugging Face Transformers and vLLM runtime formats. + +If you recently rebuilt vLLM, reinstall your locally built wheel to ensure compatibility with the quantization extensions: ```bash pip install --no-deps dist/*.whl ``` -If your chosen model is gated on Hugging Face, authenticate first: +Authenticate with Hugging Face (if required): + +If the model you plan to quantize is gated on Hugging Face (e.g., DeepSeek or proprietary models), log in to authenticate your credentials before downloading model weights: ```bash huggingface-cli login ``` -## INT4 Quantization recipe +## INT4 Quantization Recipe -Save the following as `quantize_vllm_models.py`: +Using a file editor of your choice, save the following code into a file named `quantize_vllm_models.py`: ```python import argparse @@ -124,22 +130,26 @@ if __name__ == "__main__": main() ``` -This script creates a Arm KleidiAI 4‑bit quantized copy of the vLLM model and saves it to a new directory. +This script creates a Arm KleidiAI INT4 quantized copy of the vLLM model and saves it to a new directory. ## Quantize DeepSeek‑V2‑Lite model ### Quantization parameter tuning +Quantization parameters determine how the model’s floating-point weights and activations are converted into lower-precision integer formats. Choosing the right combination is essential for balancing model accuracy, memory footprint, and runtime throughput on Arm CPUs. + 1. You can choose `minmax` (faster model quantization) or `mse` (more accurate but slower model quantization) method. 2. `channelwise` is a good default for most models. 3. `groupwise` can improve accuracy further; `--groupsize 32` is common. +Execute the following command to quantize the DeepSeek-V2-Lite model: + ```bash # DeepSeek example -python quantize_vllm_models.py deepseek-ai/DeepSeek-V2-Lite \ +python3 quantize_vllm_models.py deepseek-ai/DeepSeek-V2-Lite \ --scheme channelwise --method mse ``` -The 4-bit quantized DeepSeek-V2-Lite will be stored the directory: +This will generate an INT4 quantized model directory such as: ```text DeepSeek-V2-Lite-w4a8dyn-mse-channelwise diff --git a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/3-run-inference-and-serve.md b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/3-run-inference-and-serve.md index dae1806711..0e208af88e 100644 --- a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/3-run-inference-and-serve.md +++ b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/3-run-inference-and-serve.md @@ -6,13 +6,20 @@ weight: 4 layout: learningpathall --- -## About batch sizing in vLLM +## Batch Sizing in vLLM -vLLM enforces two limits to balance memory use and throughput: a per‑sequence length (`max_model_len`) and a per‑batch token limit (`max_num_batched_tokens`). No single request can exceed the sequence limit, and the sum of tokens in a batch must stay within the batch limit. +vLLM uses dynamic continuous batching to maximize hardware utilization. Two key parameters govern this process: + * `max_model_len` — The maximum sequence length (number of tokens per request). +No single prompt or generated sequence can exceed this limit. + * `max_num_batched_tokens` — The total number of tokens processed in one batch across all requests. +The sum of input and output tokens from all concurrent requests must stay within this limit. + +Together, these parameters determine how much memory the model can use and how effectively CPU threads are saturated. +On Arm-based servers, tuning them helps achieve stable throughput while avoiding excessive paging or cache thrashing. ## Serve an OpenAI‑compatible API -Start the server with sensible CPU default parameters and a quantized model: +Start vLLM’s OpenAI-compatible API server using the quantized INT4 model and environment variables optimized for performance. ```bash export VLLM_TARGET_DEVICE=cpu @@ -27,9 +34,19 @@ vllm serve DeepSeek-V2-Lite-w4a8dyn-mse-channelwise \ --dtype float32 --max-model-len 4096 --max-num-batched-tokens 4096 ``` +The server now exposes the standard OpenAI-compatible /v1/chat/completions endpoint. + +You can test it using any OpenAI-style client library to measure tokens-per-second throughput and response latency on your Arm-based server. + ## Run multi‑request batch +After verifying a single request in the previous section, simulate concurrent load against the OpenAI-compatible server to exercise vLLM’s continuous batching scheduler. -After confirming a single request works explained in previous example, simulate concurrent load with a small OpenAI API compatible client. Save this as `batch_test.py`: +About the client: +Uses AsyncOpenAI with base_url="http://localhost:8000/v1" to target the vLLM server. +A semaphore caps concurrency to 8 simultaneous requests (adjust CONCURRENCY to scale load). +max_tokens limits generated tokens per request—this directly affects batch size and KV cache use. + +Save the code below in a file named `batch_test.py`: ```python import asyncio @@ -88,7 +105,7 @@ if __name__ == "__main__": asyncio.run(main()) ``` -Run 8 concurrent requests against your server: +Run 8 concurrent requests: ```bash python3 batch_test.py @@ -108,19 +125,28 @@ This validates multi‑request behavior and shows aggregate throughput in the se (APIServer pid=4474) INFO: 127.0.0.1:44120 - "POST /v1/chat/completions HTTP/1.1" 200 OK (APIServer pid=4474) INFO 11-10 01:01:06 [loggers.py:221] Engine 000: Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 57.5 tokens/s, Running: 0 reqs, Waiting: 0 reqs, GPU KV cache usage: 0.0%, Prefix cache hit rate: 0.0% ``` -## Optional: Serving BF16 non-quantized model +## Optional: Serve a BF16 (Non-Quantized) Model -For a BF16 path on Arm, vLLM is acclerated by direct oneDNN integration in vLLM which allows aarch64 model to be hyperoptimized. +For a non-quantized path, vLLM on Arm can run BF16 end-to-end using its oneDNN integration (which routes to Arm-optimized kernels via ACL under aarch64). ```bash vllm serve deepseek-ai/DeepSeek-V2-Lite \ --dtype bfloat16 --max-model-len 4096 \ --max-num-batched-tokens 4096 ``` +Use this BF16 setup to establish a quality reference baseline, then compare throughput and latency against your INT4 deployment to quantify the performance/accuracy trade-offs on your Arm system. ## Go Beyond: Power Up Your vLLM Workflow -Now that you’ve successfully quantized and served a model using vLLM on Arm, here are some further ways to explore: +Now that you’ve successfully quantized, served, and benchmarked a model using vLLM on Arm, you can build on what you’ve learned to push performance, scalability, and usability even further. + +**Try Different Models** +Extend your workflow to other models on Hugging Face that are compatible with vLLM and can benefit from Arm acceleration: + * Meta Llama 2 / Llama 3 – Strong general-purpose baselines; excellent for comparing BF16 vs INT4 performance. + * Qwen / Qwen-Chat – High-quality multilingual and instruction-tuned models. + * Gemma (Google) – Compact and efficient architecture; ideal for edge or cost-optimized serving. + +You can quantize and serve them using the same `quantize_vllm_models.py` recipe, just update the model name. -* **Try different models:** Apply the same steps to other [Hugging Face models](https://huggingface.co/models) like Llama, Qwen or Gemma. +**Connect a chat client:** Link your server with OpenAI-compatible UIs like [Open WebUI](https://github.com/open-webui/open-webui) -* **Connect a chat client:** Link your server with OpenAI-compatible UIs like [Open WebUI](https://github.com/open-webui/open-webui) \ No newline at end of file +You can continue exploring how Arm’s efficiency, oneDNN+ACL acceleration, and vLLM’s dynamic batching combine to deliver fast, sustainable, and scalable AI inference on modern Arm architectures. diff --git a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/4-accuracy-benchmarking.md b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/4-accuracy-benchmarking.md new file mode 100644 index 0000000000..3b53e5ddb4 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/4-accuracy-benchmarking.md @@ -0,0 +1,113 @@ +--- +title: Evaluate Accuracy with LM Evaluation Harness +weight: 5 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## Why accuracy benchmarking + +The lm-evaluation-harness is the standard way to measure model accuracy across common academic benchmarks (for example, MMLU, HellaSwag, GSM8K) and runtimes (Hugging Face, vLLM, llama.cpp, etc.). In this module, you will run accuracy tests for both BF16 and INT4 deployments of your model served by vLLM on Arm-based servers. + +You will: + * Install lm-eval-harness with vLLM support + * Run benchmarks on a BF16 model and an INT4 (weight-quantized) model + * Interpret key metrics and compare quality across precisions + +{{% notice Note %}} +Results depend on CPU, dataset versions, and model choice. Use the same tasks and few-shot settings when comparing BF16 and INT4 to ensure a fair comparison. +{{% /notice %}} + +## Prerequisites + +Before you start: + * Complete the optimized build in “Overview and Optimized Build” and validate your vLLM install. + * Optionally quantize a model using the “Quantize an LLM to INT4 for Arm Platform” module. We’ll reference the output directory name from that step. + +## Install lm-eval-harness + +Install the harness with vLLM extras in your active Python environment: + +```bash +pip install "lm_eval[vllm]" +pip install ray +``` + +{{% notice Tip %}} +If your benchmarks include gated models or datasets, run `huggingface-cli login` first so the harness can download what it needs. +{{% /notice %}} + +## Recommended runtime settings for Arm CPU + +Export the same performance-oriented environment variables used for serving. These enable Arm-optimized kernels through oneDNN+ACL and consistent thread pinning: + +```bash +export VLLM_TARGET_DEVICE=cpu +export VLLM_CPU_KVCACHE_SPACE=32 +export VLLM_CPU_OMP_THREADS_BIND="0-$(($(nproc)-1))" +export VLLM_MLA_DISABLE=1 +export ONEDNN_DEFAULT_FPMATH_MODE=BF16 +export OMP_NUM_THREADS="$(nproc)" +export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libtcmalloc_minimal.so.4 +``` + +{{% notice Note %}} +`LD_PRELOAD` uses tcmalloc to reduce allocator contention. Install it via `sudo apt-get install -y libtcmalloc-minimal4` if you haven’t already. +{{% /notice %}} + +## Accuracy Benchmarking Meta‑Llama‑3.1‑8B‑Instruct BF16 model + +Run with a non-quantized model. Replace the model ID as needed. + +```bash +lm_eval \ + --model vllm \ + --model_args \ + pretrained=meta-llama/Meta-Llama-3.1-8B-Instruct,dtype=bfloat16,max_model_len=4096,enforce_eager=True \ + --tasks mmlu,hellaswag \ + --batch_size auto \ + --output_path results +``` + +## Accuracy Benchmarking INT4 quantized model + +Use the INT4 quantization recipe & script from previous steps to quantize `meta-llama/Meta-Llama-3.1-8B-Instruct` model + +Channelwise INT4 (MSE): + +```bash +lm_eval \ + --model vllm \ + --model_args \ + pretrained=Meta-Llama-3.1-8B-Instruct-w4a8dyn-mse-channelwise,dtype=float32,max_model_len=4096,enforce_eager=True \ + --tasks mmlu,hellaswag \ + --batch_size auto \ + --output_path results +``` + +## Interpreting results + +The harness prints per-task and aggregate scores (for example, `acc`, `acc_norm`, `exact_match`). Higher is generally better. Compare BF16 vs INT4 on the same tasks to assess quality impact. + +Practical tips: + * Use the same tasks and few-shot settings across runs. + * For quick iteration, you can add `--limit 200` to run on a subset. + +## Example results for Meta‑Llama‑3.1‑8B‑Instruct model + +These illustrative results are representative; actual scores may vary across hardware, dataset versions, and harness releases. Higher values indicate better accuracy. + +| Variant | MMLU (acc±err) | HellaSwag (acc±err) | +|---------------------------------|-------------------|---------------------| +| BF16 | 0.5897 ± 0.0049 | 0.7916 ± 0.0041 | +| INT4 Groupwise minmax (G=32) | 0.5831 ± 0.0049 | 0.7819 ± 0.0041 | +| INT4 Channelwise MSE | 0.5712 ± 0.0049 | 0.7633 ± 0.0042 | + +Use these as ballpark expectations to check whether your runs are in a reasonable range, not as official targets. + +## Next steps + + * Try additional tasks to match your usecase: `gsm8k`, `winogrande`, `arc_easy`, `arc_challenge`. + * Sweep quantization recipes (minmax vs mse; channelwise vs groupwise, group size) to find a better accuracy/performance balance. + * Record both throughput and accuracy to choose the best configuration for your workload. diff --git a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/_index.md b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/_index.md index 2b404b1df2..9975529515 100644 --- a/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/vllm-acceleration/_index.md @@ -1,5 +1,5 @@ --- -title: High throughput LLM serving using vLLM on Arm Servers +title: Optimized LLM Inference with vLLM on Arm-Based Servers draft: true cascade: @@ -7,19 +7,19 @@ cascade: minutes_to_complete: 60 -who_is_this_for: This learning path is for software developers and AI engineers who want to build an optimized vLLM for Arm servers, quantize models to INT4, and serve them through an OpenAI‑compatible API. +who_is_this_for: This learning path is designed for software developers and AI engineers who want to build and optimize vLLM for Arm-based servers, quantize large language models (LLMs) to INT4, serve them efficiently through an OpenAI-compatible API, and benchmark model accuracy using the LM Evaluation Harness. learning_objectives: - - Build an optimized vLLM for aarch64 with oneDNN + Arm Compute Library. - - Set up dependencies including PyTorch and llmcompressor dependencies. - - Quantize an LLM (DeepSeek‑V2‑Lite) to 4‑bit weights. - - Run and serve the quantized model using vLLM & test BF16 non‑quantized serving. + - Build an optimized vLLM for aarch64 with oneDNN and the Arm Compute Library(ACL). + - Set up all runtime dependencies including PyTorch, llmcompressor, and Arm-optimized libraries. + - Quantize an LLM (DeepSeek‑V2‑Lite) to 4-bit integer (INT4) precision. + - Run and serve both quantized and BF16 (non-quantized) variants using vLLM. - Use OpenAI‑compatible endpoints and understand sequence and batch limits. + - Evaluate accuracy using the LM Evaluation Harness on BF16 and INT4 models with vLLM. prerequisites: - - An Arm-based Linux server (Ubuntu 22.04+ recommended) with 32+ vCPUs, 64+ GB RAM, and 32+ GB free disk. + - An Arm-based Linux server (Ubuntu 22.04+ recommended) with a minimum of 32 vCPUs, 64 GB RAM, and 64 GB free disk space. - Python 3.12 and basic familiarity with Hugging Face Transformers and quantization. - - Optional: a Hugging Face token to access gated models. author: - Nikhil Gupta @@ -33,12 +33,12 @@ operatingsystems: - Linux tools_software_languages: - vLLM + - LM Evaluation Harness - LLM - Generative AI - Python - PyTorch - - llmcompressor - + further_reading: - resource: title: vLLM Documentation @@ -56,6 +56,10 @@ further_reading: title: Build and Run vLLM on Arm Servers link: /learning-paths/servers-and-cloud-computing/vllm/ type: website + - resource: + title: LM Evaluation Harness (GitHub) + link: https://github.com/EleutherAI/lm-evaluation-harness + type: github diff --git a/data/stats_current_test_info.yml b/data/stats_current_test_info.yml index 77fa91bd36..eec1fe44b8 100644 --- a/data/stats_current_test_info.yml +++ b/data/stats_current_test_info.yml @@ -180,7 +180,8 @@ sw_categories: tests_and_status: [] nginx: readable_title: Learn how to deploy Nginx - tests_and_status: [] + tests_and_status: + - ubuntu:latest: passed postgresql_tune: readable_title: Learn how to Tune PostgreSQL tests_and_status: diff --git a/tools/resize_images.sh b/tools/resize_images.sh new file mode 100755 index 0000000000..1450d3e794 --- /dev/null +++ b/tools/resize_images.sh @@ -0,0 +1,167 @@ +#!/bin/bash + +set -e + +# +# Tunables: Defaults +# +export dry_run=true # if true, do not perform any file modifications +export quality=85 # quality for webp conversion (1-100) +export max_width=1600 # maximum width before resizing +export target_width=1280 # target width for resizing +export max_size_kb=200 # maximum file size in KB before resizing + +# +# Function: confirm_args +# Purpose: confirm that at least one image argument is provided +# +confirm_args() { + if [ $# -eq 0 ]; then + echo "No images provided as arguments" + echo "Usage: $0 ..." + exit 1 + fi +} + +# +# Function: process_env_tunables +# Purpose: pull/configure tunables from environment +# +process_env_tunables() { + # Dry Run + if [ -z "${DRY_RUN}" ]; then + export dry_run=${DRY_RUN} + fi + + # Quality + if [ -n "${QUALITY}" ]; then + export quality=${QUALITY} + fi + # Max Width + if [ -n "${MAX_WIDTH}" ]; then + export max_width=${MAX_WIDTH} + fi + # Target Width + if [ -n "${TARGET_WIDTH}" ]; then + export target_width=${TARGET_WIDTH} + fi + # Max Size KB + if [ -n "${MAX_SIZE_KB}" ]; then + export max_size_kb=${MAX_SIZE_KB} + fi +} + +# +# Function: process_images +# Purpose: process all images passed as arguments +# +process_images() { + # loop through all image arguments + for img in "$@"; do + # Skip if file doesn't exist + [ -f "$img" ] || { + echo "⚠️ File not found: $img" + continue + } + + # Skip if not an image file + if [[ ! "$img" =~ \.(png|PNG|jpg|JPG|jpeg|JPEG)$ ]]; then + if [[ "$img" == *.webp ]]; then + echo "Skipping $img (already .webp)" + continue + fi + echo "Skipping non-image file: $img" + continue + fi + + # Get width using ImageMagick + echo "Checking $img..." + width=$(identify -format "%w" "$img" 2>/dev/null || echo 0) + + # Get file size in KB (macOS stat is different) + filesize=$(stat -c%s "$img" 2>/dev/null || echo 0) + kbsize=$((filesize / 1024)) + + # Define new filename + base="${img%.*}" + ext="${img##*.}" + webp_img="${base}.webp" + + # image stats + echo "Image: $img | Size: ${kbsize}KB | Width: ${width}px" + + # Resize + convert if needed + if [ "$kbsize" -gt ${max_size_kb} ] && [ "$width" -gt ${max_width} ]; then + if [ "$dry_run" = "true" ]; then + echo "DRY RUN: Would resize $img → $webp_img" + echo "DRY RUN: Would remove $img" + echo "DRY RUN: Would update markdown references" + else + # Set quality dynamically based on file size + if [ "$kbsize" -ge 1500 ]; then # ≥ 1500KB + quality=80 + elif [ "$kbsize" -ge 500 ]; then # 500–1500KB + quality=75 + else # < 500KB + quality=95 + fi + echo "Optimizing $img (${kbsize}KB, ${width}px), quality=$quality" + # Resize and convert to WebP. If error occurs, capture it and exit. + error=$(magick "$img" -resize ${target_width}x\> -quality $quality -define webp:lossless=true "$webp_img" 2>&1) + convert_status=$? + if [ $convert_status -ne 0 ]; then + echo "⚠️ Error converting $img to WebP format." + if [ -z "${error}" ]; then + error="Unknown error" + fi + echo "Error details: $error" + echo "⚠️ Exiting script." + exit 1 + else + echo "Created $webp_img.... removing $img..." + rm "$img" + fi + + img_name=$(basename "$img") # create_device.png + webp_name=$(basename "$webp_img") # create_device.webp + img_dir=$(dirname "$img") # The directory of the image + + # Only scan markdown files in the same directory + find "$img_dir" "$(dirname "$img_dir")" -name "*.md" 2>/dev/null | while read -r md_file; do + if grep -q "$img_name" "$md_file"; then + echo "Replacing $img_name → $webp_name in $md_file" + sed -i '' "s|($img_name|(${webp_name}|g" "$md_file" + sed -i '' "s|/$img_name|/${webp_name}|g" "$md_file" + fi + done + fi + else + if [ "$dry_run" = "true" ]; then + echo "DRY RUN: Would skip $img (size: ${kbsize}KB, width: ${width}px)" + else + echo "Skipping $img since it's small enough: (${kbsize}KB, ${width}px)" + fi + fi + done +} + +# +# main() function +# Purpose: entry point for the script +# +main() { + # confirm arguments + confirm_args $* + + # pull/configure tunables from environment + process_env_tunables $* + + # process all images passed as arguments + process_images $* + + # we are done! + echo "🎉 Optimization complete." +} + +# Invoke main() with all script arguments +main $*