Skip to content

Commit

Permalink
Create new Performance Execution Driver (microsoft#626)
Browse files Browse the repository at this point in the history
New performance driver is custom built specifically for performance, rather then using quicping.

Also will be compatible with server mode, and baseline support is part of this commit.
  • Loading branch information
ThadHouse authored Jul 29, 2020
1 parent 9edde37 commit 091633d
Show file tree
Hide file tree
Showing 31 changed files with 3,164 additions and 353 deletions.
8 changes: 4 additions & 4 deletions .azure/azure-pipelines.perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ stages:
tls: schannel
config: Release
${{ if eq(parameters.mode, 'PGO') }}:
extraBuildArgs: -DisableTest -PGO
extraBuildArgs: -DisableTest -DisableTools -PGO
${{ if ne(parameters.mode, 'PGO') }}:
extraBuildArgs: -DisableTest
extraBuildArgs: -DisableTest -DisableTools
- template: ./templates/build-config-user.yml
parameters:
image: windows-latest
Expand All @@ -51,9 +51,9 @@ stages:
tls: schannel
config: Release
${{ if eq(parameters.mode, 'PGO') }}:
extraBuildArgs: -DisableTest -PGO
extraBuildArgs: -DisableTest -DisableTools -PGO
${{ if ne(parameters.mode, 'PGO') }}:
extraBuildArgs: -DisableTest
extraBuildArgs: -DisableTest -DisableTools

#
# Performance Tests
Expand Down
7 changes: 7 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ endif()

option(QUIC_BUILD_TOOLS "Builds the tools code" ON)
option(QUIC_BUILD_TEST "Builds the test code" ON)
option(QUIC_BUILD_PERF "Builds the perf code" ON)
option(QUIC_ENABLE_LOGGING "Enables logging" ON)
option(QUIC_SANITIZE_ADDRESS "Enables address sanitizer" OFF)
option(QUIC_STATIC_LINK_CRT "Statically links the C runtime" ON)
Expand Down Expand Up @@ -359,6 +360,12 @@ if(QUIC_BUILD_TOOLS)
add_subdirectory(src/tools)
endif()

# Performance code
if(QUIC_BUILD_PERF)
add_subdirectory(src/perf/lib)
add_subdirectory(src/perf/bin)
endif()

# Test code
if(QUIC_BUILD_TEST)
# Build the googletest framework.
Expand Down
52 changes: 52 additions & 0 deletions msquic.kernel.sln
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msquictest.kernel", "src\te
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "manifest.kernel", "src\manifest\manifest.kernel.vcxproj", "{C1ADB76F-7005-4516-BADB-2A60797EF912}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perflib.kernel", "src\perf\lib\perflib.kernel.vcxproj", "{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "performance.kernel", "src\perf\bin\performance.kernel.vcxproj", "{2BE64DBF-60E6-4FE8-96B0-5F2526405096}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Expand Down Expand Up @@ -174,6 +178,54 @@ Global
{C1ADB76F-7005-4516-BADB-2A60797EF912}.Release|x86.ActiveCfg = Release|Win32
{C1ADB76F-7005-4516-BADB-2A60797EF912}.Release|x86.Build.0 = Release|Win32
{C1ADB76F-7005-4516-BADB-2A60797EF912}.Release|x86.Deploy.0 = Release|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM.ActiveCfg = Debug|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM.Build.0 = Debug|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM.Deploy.0 = Debug|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM64.ActiveCfg = Debug|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM64.Build.0 = Debug|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|ARM64.Deploy.0 = Debug|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x64.ActiveCfg = Debug|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x64.Build.0 = Debug|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x64.Deploy.0 = Debug|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x86.ActiveCfg = Debug|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x86.Build.0 = Debug|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Debug|x86.Deploy.0 = Debug|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM.ActiveCfg = Release|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM.Build.0 = Release|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM.Deploy.0 = Release|ARM
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM64.ActiveCfg = Release|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM64.Build.0 = Release|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|ARM64.Deploy.0 = Release|ARM64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x64.ActiveCfg = Release|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x64.Build.0 = Release|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x64.Deploy.0 = Release|x64
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x86.ActiveCfg = Release|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x86.Build.0 = Release|Win32
{11633785-79CC-4C7D-AB6A-AECDF29A1FA7}.Release|x86.Deploy.0 = Release|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM.ActiveCfg = Debug|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM.Build.0 = Debug|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM.Deploy.0 = Debug|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM64.ActiveCfg = Debug|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM64.Build.0 = Debug|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|ARM64.Deploy.0 = Debug|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x64.ActiveCfg = Debug|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x64.Build.0 = Debug|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x64.Deploy.0 = Debug|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x86.ActiveCfg = Debug|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x86.Build.0 = Debug|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Debug|x86.Deploy.0 = Debug|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM.ActiveCfg = Release|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM.Build.0 = Release|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM.Deploy.0 = Release|ARM
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM64.ActiveCfg = Release|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM64.Build.0 = Release|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|ARM64.Deploy.0 = Release|ARM64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x64.ActiveCfg = Release|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x64.Build.0 = Release|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x64.Deploy.0 = Release|x64
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x86.ActiveCfg = Release|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x86.Build.0 = Release|Win32
{2BE64DBF-60E6-4FE8-96B0-5F2526405096}.Release|x86.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
48 changes: 24 additions & 24 deletions scripts/RemoteTests.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"Platform": "Windows",
"Tls": ["stub", "schannel", "mitls"],
"Arch": ["x64", "x86", "arm", "arm64"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-listen:* -port:4433 -peer_uni:1 -connections:10",
"All": "-TestName:Throughput -ServerMode:1 -listen:* -port:4433 -peer_uni:1 -connections:10",
"Loopback": "-selfsign:1",
"Remote": "-thumbprint:$Thumbprint -machine_cert:1 -cert_store:My"
}
Expand All @@ -16,26 +16,26 @@
"Platform": "Windows",
"Tls": ["stub", "schannel", "mitls"],
"Arch": ["x64", "x86", "arm", "arm64"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-target:$RemoteAddress -port:4433 -sendbuf:0 -bind:$LocalAddress:4434 -ip:4 -core:0 -uni:1 -length:2000000000",
"All": "-TestName:Throughput -target:$RemoteAddress -port:4433 -sendbuf:0 -bind:$LocalAddress:4434 -ip:4 -core:0 -uni:1 -length:2000000000",
"Loopback": "",
"Remote": ""
}
},
"Iterations": 10,
"RemoteReadyMatcher": "Ready For Connections!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps \\|"
"RemoteReadyMatcher": "Started!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps\\)"
},
{
"TestName": "Throughput",
"Remote" : {
"Platform": "Linux",
"Tls": ["stub", "openssl"],
"Arch": ["x64", "arm"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-listen:* -port:4433 -selfsign:1 -peer_uni:1 -connections:10",
"All": "-TestName:Throughput -ServerMode:1 -listen:* -port:4433 -selfsign:1 -peer_uni:1 -connections:10",
"Loopback": "",
"Remote": ""
}
Expand All @@ -44,26 +44,26 @@
"Platform": "linux",
"Tls": ["stub", "openssl"],
"Arch": ["x64", "arm"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-target:$RemoteAddress -port:4433 -sendbuf:0 -uni:1 -length:2000000000",
"All": "-TestName:Throughput -target:$RemoteAddress -port:4433 -sendbuf:0 -uni:1 -length:2000000000",
"Loopback": "",
"Remote": ""
}
},
"Iterations": 10,
"RemoteReadyMatcher": "Ready For Connections!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps \\|"
"RemoteReadyMatcher": "Started!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps\\)"
},
{
"TestName": "ThroughputNoEncryption",
"Remote" : {
"Platform": "Windows",
"Tls": ["stub", "schannel", "mitls"],
"Arch": ["x64", "x86", "arm", "arm64"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-listen:* -port:4433 -peer_uni:1 -connections:10",
"All": "-TestName:Throughput -ServerMode:1 -listen:* -port:4433 -peer_uni:1 -connections:10",
"Loopback": "-selfsign:1",
"Remote": "-thumbprint:$Thumbprint -machine_cert:1 -cert_store:My"
}
Expand All @@ -72,26 +72,26 @@
"Platform": "Windows",
"Tls": ["stub", "schannel", "mitls"],
"Arch": ["x64", "x86", "arm", "arm64"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-target:$RemoteAddress -port:4433 -sendbuf:0 -bind:$LocalAddress:4434 -ip:4 -core:0 -uni:1 -encrypt:0 -length:2000000000",
"All": "-TestName:Throughput -target:$RemoteAddress -port:4433 -sendbuf:0 -bind:$LocalAddress:4434 -ip:4 -core:0 -uni:1 -encrypt:0 -length:2000000000",
"Loopback": "",
"Remote": ""
}
},
"Iterations": 10,
"RemoteReadyMatcher": "Ready For Connections!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps \\|"
"RemoteReadyMatcher": "Started!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps\\)"
},
{
"TestName": "ThroughputNoEncryption",
"Remote" : {
"Platform": "Linux",
"Tls": ["stub", "openssl"],
"Arch": ["x64", "arm"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-listen:* -port:4433 -selfsign:1 -peer_uni:1 -connections:10",
"All": "-TestName:Throughput -ServerMode:1 -listen:* -port:4433 -selfsign:1 -peer_uni:1 -connections:10",
"Loopback": "",
"Remote": ""
}
Expand All @@ -100,15 +100,15 @@
"Platform": "linux",
"Tls": ["stub", "openssl"],
"Arch": ["x64", "arm"],
"Exe": "quicping",
"Exe": "quicperf",
"Arguments": {
"All": "-target:$RemoteAddress -port:4433 -sendbuf:0 -uni:1 -encrypt:0 -length:2000000000",
"All": "-TestName:Throughput -target:$RemoteAddress -port:4433 -sendbuf:0 -uni:1 -encrypt:0 -length:2000000000",
"Loopback": "",
"Remote": ""
}
},
"Iterations": 10,
"RemoteReadyMatcher": "Ready For Connections!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps \\|"
"RemoteReadyMatcher": "Started!",
"ResultsMatcher": "Closed.*\\(TX.*bytes @ (.*) kbps\\)"
}
]
9 changes: 9 additions & 0 deletions scripts/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ This script provides helpers for building msquic.
.PARAMETER DisableTest
Don't build the test directory.
.PARAMETER DisablePerf
Don't build the perf directory.
.PARAMETER Clean
Deletes all previous build and configuration.
Expand Down Expand Up @@ -93,6 +96,9 @@ param (

[Parameter(Mandatory = $false)]
[switch]$DisableTest = $false,

[Parameter(Mandatory = $false)]
[switch]$DisablePerf = $false,

[Parameter(Mandatory = $false)]
[switch]$Clean = $false,
Expand Down Expand Up @@ -220,6 +226,9 @@ function CMake-Generate {
if ($DisableTest) {
$Arguments += " -DQUIC_BUILD_TEST=off"
}
if ($DisablePerf) {
$Arguments += " -DQUIC_BUILD_PERF=off"
}
if ($IsLinux) {
$Arguments += " -DCMAKE_BUILD_TYPE=" + $Config
}
Expand Down
Loading

0 comments on commit 091633d

Please sign in to comment.