From 70e6d3a9be03a6b0887deec63298ff163a0a8c6a Mon Sep 17 00:00:00 2001 From: Alex Williams-Ferreira Date: Wed, 15 Apr 2026 15:26:25 -0700 Subject: [PATCH 1/3] Add Blender GPU/CPU performance workload profile --- ...BLENDER-AMD.json => PERF-GPU-BLENDER.json} | 18 ----- .../aspnet-benchmarks-profiles.md | 81 ++++++++++++++++++- 2 files changed, 77 insertions(+), 22 deletions(-) rename src/VirtualClient/VirtualClient.Main/profiles/{PERF-BLENDER-AMD.json => PERF-GPU-BLENDER.json} (67%) diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-BLENDER-AMD.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json similarity index 67% rename from src/VirtualClient/VirtualClient.Main/profiles/PERF-BLENDER-AMD.json rename to src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json index 88880855f9..6ad68d00f3 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-BLENDER-AMD.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json @@ -24,24 +24,6 @@ } ], "Dependencies": [ - { - "Type": "DependencyPackageInstallation", - "Parameters": { - "Scenario": "InstallAMDGPUDriverPackage", - "BlobContainer": "packages", - "BlobName": "amdgpudriver.zip", - "PackageName": "amdgpudriver", - "Extract": true - } - }, - { - "Type": "AMDGPUDriverInstallation", - "Parameters": { - "Scenario": "InstallAMDGPUDriver", - "GpuModel": "$.Parameters.GpuModel", - "PackageName": "amdgpudriver" - } - }, { "Type": "DependencyPackageInstallation", "Parameters": { diff --git a/website/docs/workloads/aspnet-benchmarks/aspnet-benchmarks-profiles.md b/website/docs/workloads/aspnet-benchmarks/aspnet-benchmarks-profiles.md index 669fbff13c..4a23386957 100644 --- a/website/docs/workloads/aspnet-benchmarks/aspnet-benchmarks-profiles.md +++ b/website/docs/workloads/aspnet-benchmarks/aspnet-benchmarks-profiles.md @@ -2,6 +2,50 @@ The following profiles run customer-representative or benchmarking scenarios using ASP.NET server workloads. * [Workload Details](./aspnet-benchmarks.md) +* [Client/Server Workloads](../../guides/0020-client-server.md) + +## Client/Server Topology Support +ASP.NET benchmark workload profiles support running the workload on both a single system as well as in a client/server topology. This means that the workload supports +operation on a single system or on 2 distinct systems. The client/server topology is typically used when it is desirable to include a network component in the +overall performance evaluation. In a client/server topology, one system operates in the 'Client' role running the HTTP load generator (Wrk or Bombardier) while the other +system operates in the 'Server' role running the ASP.NET Kestrel application. +The Virtual Client instances running on the client and server systems will synchronize with each other before running the workload. In order to support a client/server topology, +an environment layout file MUST be supplied to each instance of the Virtual Client on the command line to describe the IP address/location of other Virtual Client instances. An +environment layout file is not required for the single system topology. + +* [Environment Layouts](../../guides/0020-client-server.md) + +In the environment layout file provided to the Virtual Client, define the role of the client system/VM as "Client" and the role of the server system(s)/VM(s) as "Server". +The spelling of the roles must be exact. The IP addresses of the systems/VMs must be correct as well. The following example illustrates the +idea. The name of the client must match the name of the system or the value of the agent ID passed in on the command line. + +``` bash +# Single System (environment layout not required) +./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 + +# Multi-System +# On Client Role System... +./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 --client-id=Client01 --layout=/any/path/to/layout.json + +# On Server Role System... +./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 --client-id=Server01 --layout=/any/path/to/layout.json + +# Example contents of the 'layout.json' file: +{ + "clients": [ + { + "name": "Client01", + "role": "Client", + "ipAddress": "10.1.0.1" + }, + { + "name": "Server01", + "role": "Server", + "ipAddress": "10.1.0.2" + } + ] +} +``` ## PERF-WEB-ASPNET-WRK.json Runs the ASP.NET TechEmpower JSON serialization benchmark using Wrk. Includes a warm-up pass before the benchmark measurement. @@ -21,6 +65,9 @@ Supports .NET 9 and .NET 10 via the `ParametersOn` conditional parameter system. * **Dependencies** The dependencies defined in the 'Dependencies' section of the profile itself are required in order to run the workload operations effectively. * Internet connection. + * The IP addresses defined in the environment layout (see above) for the Client and Server systems must be correct. + * The name of the Client and Server instances defined in the environment layout must match the agent/client IDs supplied on the command line (e.g. --client-id) + or must match the name of the system as defined by the operating system itself. Additional information on components that exist within the 'Dependencies' section of the profile can be found in the following locations: * [Installing Dependencies](https://microsoft.github.io/VirtualClient/docs/category/dependencies/) @@ -40,11 +87,15 @@ Supports .NET 9 and .NET 10 via the `ParametersOn` conditional parameter system. * **Usage Examples** ```bash - # Run with .NET 9 (default) + # When running on a single system (environment layout not required) ./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 # Run with .NET 10 ./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 --parameters="DotNetVersion=10" + + # When running in a client/server environment + ./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 --client-id=Client01 --layout="/any/path/to/layout.json" + ./VirtualClient --profile=PERF-WEB-ASPNET-WRK.json --system=Demo --timeout=1440 --client-id=Server01 --layout="/any/path/to/layout.json" ``` ## PERF-WEB-ASPNET-WRK-AFFINITY.json @@ -65,6 +116,9 @@ Includes a warm-up pass before the benchmark measurement. Supports .NET 9 and .N * **Dependencies** The dependencies defined in the 'Dependencies' section of the profile itself are required in order to run the workload operations effectively. * Internet connection. + * The IP addresses defined in the environment layout (see above) for the Client and Server systems must be correct. + * The name of the Client and Server instances defined in the environment layout must match the agent/client IDs supplied on the command line (e.g. --client-id) + or must match the name of the system as defined by the operating system itself. Additional information on components that exist within the 'Dependencies' section of the profile can be found in the following locations: * [Installing Dependencies](https://microsoft.github.io/VirtualClient/docs/category/dependencies/) @@ -86,11 +140,15 @@ Includes a warm-up pass before the benchmark measurement. Supports .NET 9 and .N * **Usage Examples** ```bash - # Run with default affinity and .NET 9 + # When running on a single system (environment layout not required) ./VirtualClient --profile=PERF-WEB-ASPNET-WRK-AFFINITY.json --system=Demo --timeout=1440 # Run with .NET 10 and custom core affinity ./VirtualClient --profile=PERF-WEB-ASPNET-WRK-AFFINITY.json --system=Demo --timeout=1440 --parameters="DotNetVersion=10,,,ServerCoreAffinity=0-3,,,ClientCoreAffinity=4-7" + + # When running in a client/server environment + ./VirtualClient --profile=PERF-WEB-ASPNET-WRK-AFFINITY.json --system=Demo --timeout=1440 --client-id=Client01 --layout="/any/path/to/layout.json" + ./VirtualClient --profile=PERF-WEB-ASPNET-WRK-AFFINITY.json --system=Demo --timeout=1440 --client-id=Server01 --layout="/any/path/to/layout.json" ``` ## PERF-WEB-ASPNET-BOMBARDIER.json @@ -111,6 +169,9 @@ with 256 concurrent connections. Uses .NET 8 SDK. * **Dependencies** The dependencies defined in the 'Dependencies' section of the profile itself are required in order to run the workload operations effectively. * Internet connection. + * The IP addresses defined in the environment layout (see above) for the Client and Server systems must be correct. + * The name of the Client and Server instances defined in the environment layout must match the agent/client IDs supplied on the command line (e.g. --client-id) + or must match the name of the system as defined by the operating system itself. Additional information on components that exist within the 'Dependencies' section of the profile can be found in the following locations: * [Installing Dependencies](https://microsoft.github.io/VirtualClient/docs/category/dependencies/) @@ -129,9 +190,14 @@ with 256 concurrent connections. Uses .NET 8 SDK. * **Usage Examples** ```bash - # Execute the workload profile + # When running on a single system (environment layout not required) ./VirtualClient --profile=PERF-WEB-ASPNET-BOMBARDIER.json --system=Demo --timeout=1440 + + # When running in a client/server environment + ./VirtualClient --profile=PERF-WEB-ASPNET-BOMBARDIER.json --system=Demo --timeout=1440 --client-id=Client01 --layout="/any/path/to/layout.json" + ./VirtualClient --profile=PERF-WEB-ASPNET-BOMBARDIER.json --system=Demo --timeout=1440 --client-id=Server01 --layout="/any/path/to/layout.json" ``` + ## PERF-WEB-ASPNET-ORCHARD-WRK.json Runs the ASP.NET OrchardCore CMS benchmark using Wrk. The server runs the OrchardCore.Cms.Web application and Wrk benchmarks the `/about` endpoint. Includes a warm-up pass before the benchmark measurement. @@ -148,6 +214,9 @@ and Wrk benchmarks the `/about` endpoint. Includes a warm-up pass before the ben * **Dependencies** The dependencies defined in the 'Dependencies' section of the profile itself are required in order to run the workload operations effectively. * Internet connection. + * The IP addresses defined in the environment layout (see above) for the Client and Server systems must be correct. + * The name of the Client and Server instances defined in the environment layout must match the agent/client IDs supplied on the command line (e.g. --client-id) + or must match the name of the system as defined by the operating system itself. Additional information on components that exist within the 'Dependencies' section of the profile can be found in the following locations: * [Installing Dependencies](https://microsoft.github.io/VirtualClient/docs/category/dependencies/) @@ -168,6 +237,10 @@ and Wrk benchmarks the `/about` endpoint. Includes a warm-up pass before the ben * **Usage Examples** ```bash - # Execute the workload profile + # When running on a single system (environment layout not required) ./VirtualClient --profile=PERF-WEB-ASPNET-ORCHARD-WRK.json --system=Demo --timeout=1440 + + # When running in a client/server environment + ./VirtualClient --profile=PERF-WEB-ASPNET-ORCHARD-WRK.json --system=Demo --timeout=1440 --client-id=Client01 --layout="/any/path/to/layout.json" + ./VirtualClient --profile=PERF-WEB-ASPNET-ORCHARD-WRK.json --system=Demo --timeout=1440 --client-id=Server01 --layout="/any/path/to/layout.json" ``` From 8afa953b5cf39e2ae3b46d81c7495ebdb8f3551f Mon Sep 17 00:00:00 2001 From: Alex Williams-Ferreira Date: Wed, 15 Apr 2026 16:13:38 -0700 Subject: [PATCH 2/3] Remove unused GpuModel parameter from Blender performance workload profile --- .../VirtualClient.Main/profiles/PERF-GPU-BLENDER.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json index 6ad68d00f3..f764008a1e 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-GPU-BLENDER.json @@ -6,7 +6,6 @@ "SupportedOperatingSystems": "Windows" }, "Parameters": { - "GpuModel": "", "BlenderVersion": "4.2.0", "Scenes": "monster,junkshop,classroom", "DeviceTypes": "CPU" From bbc2405ab539a613e19b432aef4b398debcfa5f0 Mon Sep 17 00:00:00 2001 From: Alex Williams-Ferreira Date: Wed, 15 Apr 2026 16:19:01 -0700 Subject: [PATCH 3/3] Update version to 3.0.18 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index d19cf84f9e..29cec99e71 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.0.17 +3.0.18