Skip to content

Commit

Permalink
Merge branch 'main' into more-tls
Browse files Browse the repository at this point in the history
  • Loading branch information
nibanks committed Feb 17, 2024
2 parents 8078763 + 2481f24 commit 060ccfa
Show file tree
Hide file tree
Showing 12 changed files with 624 additions and 452 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/generate-summary.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,24 @@ function Write-HpsRow {
$Script:markdown += $row
}

# Adds a row to the RPS/latency table.
function Write-RpsRow {
param ([string]$FileName, [string]$Transport, [array]$Results)

$header = "`n|"
$parts = Convert-FileName $FileName
foreach ($part in $parts) { $header += " $part |" }
$header += " $Transport |"

for ($i = 0; $i -lt $Results.Count; $i+=9) {
$row = $header
for ($j = 0; $j -lt 9; $j++) {
$row += " $($Results[$i+$j]) |"
}
$Script:markdown += $row
}
}

# Write the Upload table.
$markdown = @"
# Upload Throughput (Gbps)
Expand Down Expand Up @@ -92,6 +110,19 @@ foreach ($file in $files) {
try { Write-HpsRow $file.Name "tcp" $json.'hps-conns-100-tcp' } catch { }
}

# Write the RPS table.
$markdown += @"
`n
# Request Per Second (HPS) and Latency (µs)
| Env | OS | Version | Arch | TLS | IO | Transport | Min | P50 | P90 | P99 | P99.9 | P99.99 | P99.999 | P99.9999 | RPS |
| --- | -- | ------- | ---- | --- | -- | --------- | --- | --- | --- | --- | ----- | ------ | ------- | -------- | --- |
"@
foreach ($file in $files) {
$json = Get-Content -Path $file.FullName | ConvertFrom-Json
try { Write-RpsRow $file.Name "quic" $json.'rps-up-512-down-4000-quic' } catch { }
try { Write-RpsRow $file.Name "tcp" $json.'rps-up-512-down-4000-tcp' } catch { }
}

# Write the markdown to the console and to the summary file.
Write-Host "`n$markdown"
$markdown | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
49 changes: 32 additions & 17 deletions .github/workflows/quic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ on:
workflow_dispatch:
inputs:
ref:
description: 'Build Reference'
description: 'MsQuic Branch or Commit'
required: false
default: ''
default: 'main'
type: string
filter:
description: 'Test Filter'
description: 'Custom Test Filter'
required: false
default: ''
type: string
logprofile:
description: 'Log Profile'
description: 'Logging WPR Profile'
required: false
default: "NULL"
type: choice
Expand All @@ -33,16 +33,22 @@ on:
- Full.Light
- Full.Verbose
commit:
description: 'Commit Results'
description: 'Publish Results'
required: false
default: false
type: boolean
pull_request:
branches:
- main
paths:
- .github/workflows/quic.yml
- .github/workflows/generate-summary.ps1
repository_dispatch:
types: [run-quic]
# Args: { guid, sha, ref, pr, logs, filter }

concurrency:
group: quic-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || 'main' }}
group: quic-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || github.event.pull_request.number || 'main' }}
cancel-in-progress: true

permissions: read-all
Expand Down Expand Up @@ -115,31 +121,36 @@ jobs:
#

run-secnetperf: # This would be 1 enumeration, after CTS has setup the environment with the correct OS type and version.
name: Run secnetperf
name: secnetperf
needs: [build-unix, build-windows, build-windows-kernel]
strategy:
fail-fast: false
matrix:
vec: [
# Azure Ubuntu 20.04
{ env: "azure", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl", io: "epoll" },
{ env: "azure", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl3", io: "epoll" },
# Azure Windows Server 2022
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "xdp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "xdp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "xdp" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "rio" },
{ env: "azure", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "wsk" },
# Azure Windows Server 2025 (preview)
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "openssl", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "openssl3", io: "iocp" },
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "rio" },
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "xdp" },
{ env: "azure", plat: "windows", os: "windows-2025", arch: "x64", tls: "schannel", io: "wsk" },
# Lab Windows Server 2022
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "iocp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "iocp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "iocp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "xdp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl", io: "xdp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3", io: "xdp" },
{ env: "lab", plat: "windows", os: "windows-2022", arch: "x64", tls: "schannel", io: "wsk" },
# Lab Ubuntu Server 20.04 LTS
{ env: "lab", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl", io: "epoll" },
{ env: "lab", plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl3", io: "epoll" },
]
runs-on:
- self-hosted
Expand All @@ -165,7 +176,7 @@ jobs:
path: artifacts
- name: Run secnetperf
shell: pwsh
timeout-minutes: 15 # TODO: Increase as necessary
timeout-minutes: 20
run: ./scripts/secnetperf.ps1 `
-LogProfile ${{ github.event.client_payload.logs || inputs.logprofile || 'NULL' }} `
-MsQuicCommit ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }} `
Expand All @@ -182,7 +193,7 @@ jobs:
with:
name: test-results-${{ matrix.vec.env }}-${{ matrix.vec.plat }}-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-${{ matrix.vec.io }}.sql
path: test-results-${{ matrix.vec.env }}-${{ matrix.vec.plat }}-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-${{ matrix.vec.io }}.sql
- name: Upload Test Results JSON # Data to populate the various pages of the dashboard. Callers of the Netperf API should specify if we want to update this or not.
- name: Upload Test Results JSON
if: ${{ always() }}
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
Expand Down Expand Up @@ -230,7 +241,9 @@ jobs:
with:
repository: microsoft/netperf
ref: sqlite
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # Specify no 'name' to download all uploaded artifacts
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
with:
pattern: test-results-*
- run: ls
- run: python sql.py
- name: Git commit # TODO: Squash history for this branch to keep size small
Expand All @@ -250,7 +263,9 @@ jobs:
repository: microsoft/netperf
ref: deploy
- run: 'rm -rf *.json'
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # Specify no 'name' to download all uploaded artifacts. TODO: Refactor this "download-all" models to instead filter for specific artifacts slices.
- uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
with:
pattern: "json-test-results-*"
- run: python generate_historical_data.py
- name: Git commit
run: 'git config user.name "QUIC Dev[bot]" && git config user.email "quicdev@microsoft.com" && git pull && git add *.json && git commit -m "Update intermediary dashboard files" && git push'
20 changes: 20 additions & 0 deletions .github/workflows/set-regression-bounds.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Set Regression Bounds

on:
workflow_dispatch:
push:
branches:
- sqlite

jobs:
set-regression-bounds:
name: Set Regression Bounds
runs-on: ubuntu-latest
steps:
- name: Checkout netperf repo
uses: actions/checkout@v2
with:
repository: microsoft/netperf
ref: sqlite
- name: Calculate regression bounds
run: python regression.py
90 changes: 28 additions & 62 deletions .github/workflows/xdp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,21 @@ on:
workflow_dispatch:
inputs:
ref:
description: 'XDP Branch or Commit'
required: false
default: ''
default: 'main'
type: string
pull_request:
branches:
- main
paths:
- .github/workflows/xdp.yml
repository_dispatch:
types: [run-xdp]
# Args: { guid, sha, ref, pr }

concurrency:
group: xdp-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || 'main' }}
group: xdp-${{ github.event.client_payload.pr || github.event.client_payload.sha || inputs.ref || github.event.pull_request.number || 'main' }}
cancel-in-progress: true

permissions: read-all
Expand All @@ -32,76 +38,36 @@ jobs:
echo "pr: ${{ github.event.client_payload.pr }}"
build:
name: Build Windows
name: Build XDP
needs: []
strategy:
fail-fast: false
matrix:
os: ['2022']
platform: [x64]
runs-on: windows-${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
repository: microsoft/xdp-for-windows
ref: ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }}
submodules: recursive
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@ab534842b4bdf384b8aaf93765dc6f721d9f5fab
- name: Prepare Machine
shell: PowerShell
run: tools/prepare-machine.ps1 -ForBuild -Verbose
- name: Install LLVM 11.0
run: |
choco install -y llvm --version 11.0.1 --allow-downgrade
echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Nuget Restore
run: nuget.exe restore xdp.sln -ConfigFile src/nuget.config
- name: Prepare for compiling eBPF programs
run: tools/prepare-machine.ps1 -ForEbpfBuild -Verbose
- name: Build
run: msbuild xdp.sln /m /p:configuration=Release /p:platform=${{ matrix.platform }}
- name: Sign Binaries
shell: PowerShell
run: tools/sign.ps1 -Config Release -Arch ${{ matrix.platform }}
- name: Build Installer
shell: PowerShell
run: tools/create-installer.ps1 -Config Release -Platform ${{ matrix.platform }}
- name: Filter Artifacts
shell: pwsh
run: |
$src = "artifacts/bin/${{ matrix.platform }}_Release"
$dest = "artifacts/bin2/${{ matrix.platform }}_Release"
mkdir $dest | Out-Null
copy -Recurse $src/xdp $dest
copy -Recurse $src/xdpinstaller $dest
copy $src/xdppcw.man $dest
copy $src/xdp.pdb $dest
copy $src/xdpapi.pdb $dest
copy $src/pktcmd.exe $dest
copy $src/pktcmd.pdb $dest
copy $src/xskbench.exe $dest
copy $src/xskbench.pdb $dest
- name: Upload Artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: bin_Release_${{ matrix.os }}_${{ matrix.platform }}
path: artifacts/bin2
arch: [x64]
fail-fast: false
uses: microsoft/xdp-for-windows/.github/workflows/build.yml@main
with:
ref: ${{ github.event.client_payload.sha || github.event.client_payload.ref || inputs.ref || 'main' }}
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
upload_artifacts: true

test:
name: Test Windows
needs: [build]
strategy:
fail-fast: false
matrix:
os: ['2022']
arch: [x64]
vec: [
{ env: "azure", os: "2022", arch: "x64" },
{ env: "azure", os: "2025", arch: "x64" },
{ env: "lab", os: "2022", arch: "x64" },
]
runs-on:
- self-hosted
- os-windows-${{ matrix.os }}
- ${{ matrix.arch }}
- azure
- ${{ matrix.vec.env }}
- os-windows-${{ matrix.vec.os }}
- ${{ matrix.vec.arch }}
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
Expand All @@ -112,14 +78,14 @@ jobs:
- name: Download Artifacts
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
with:
name: bin_Release_${{ matrix.os }}_${{ matrix.arch }}
name: bin_Release_${{ matrix.vec.arch }} # Build always comes from 2022 for now
path: artifacts/bin
- name: Run Tests
shell: pwsh
run: tools/two-machine-perf.ps1 -Config Release -Arch ${{ matrix.arch }}
run: tools/two-machine-perf.ps1 -Config Release -Arch ${{ matrix.vec.arch }}
- name: Upload Logs
if: ${{ always() }}
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
with:
name: logs_Release_${{ matrix.os }}_${{ matrix.arch }}
name: logs_${{ matrix.vec.env }}_${{ matrix.vec.os }}_${{ matrix.vec.arch }}
path: artifacts/logs
Loading

0 comments on commit 060ccfa

Please sign in to comment.