From 75a1a4785997f2287a7275bc278a007f586d8b54 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Thu, 16 Jan 2025 12:07:09 -0600 Subject: [PATCH] Improve performance of our test drive in Windows CI (#10651) Previously, we couldn't use a DevDrive (https://github.com/astral-sh/uv/pull/3522#issuecomment-2111448930) because our Windows version was not sufficient. Recently, I upgraded our larger runners to Windows 2025 preview (https://github.com/astral-sh/uv/pull/10298) which I presume has support for this. I removed ReFS in https://github.com/astral-sh/uv/pull/10651/commits/953c3535c3754f580ecd8da55637756f58606567 which didn't seem to do anything to performance. I also found some notes on "trusted" DevDrives and "disabling anti-virus filtering" which I simply have to try. --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/setup-dev-drive.ps1 | 22 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a3527f00..65a5bdcbb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,7 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Create Dev Drive using ReFS + - name: Setup Dev Drive run: ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1 # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone... @@ -260,7 +260,7 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Create Dev Drive using ReFS + - name: Setup Dev Drive run: ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1 # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone... @@ -333,7 +333,7 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Create Dev Drive using ReFS + - name: Setup Dev Drive run: ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1 # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone... @@ -522,7 +522,7 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Create Dev Drive using ReFS + - name: Setup Dev Drive run: ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1 # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone... diff --git a/.github/workflows/setup-dev-drive.ps1 b/.github/workflows/setup-dev-drive.ps1 index 1c626f749..bbb0db75c 100644 --- a/.github/workflows/setup-dev-drive.ps1 +++ b/.github/workflows/setup-dev-drive.ps1 @@ -5,11 +5,27 @@ $Volume = New-VHD -Path C:/uv_dev_drive.vhdx -SizeBytes 20GB | Mount-VHD -Passthru | Initialize-Disk -Passthru | New-Partition -AssignDriveLetter -UseMaximumSize | - Format-Volume -FileSystem ReFS -Confirm:$false -Force - -Write-Output $Volume + Format-Volume -DevDrive -Confirm:$false -Force $Drive = "$($Volume.DriveLetter):" + +# Set the drive as trusted +# See https://learn.microsoft.com/en-us/windows/dev-drive/#how-do-i-designate-a-dev-drive-as-trusted +fsutil devdrv trust $Drive + +# Disable antivirus filtering on dev drives +# See https://learn.microsoft.com/en-us/windows/dev-drive/#how-do-i-configure-additional-filters-on-dev-drive +fsutil devdrv enable /disallowAv + +# Remount so the changes take effect +Dismount-VHD -Path C:/uv_dev_drive.vhdx +Mount-VHD -Path C:/uv_dev_drive.vhdx + +# Show some debug information +Write-Output $Volume +fsutil devdrv query $Drive + +# Configure a temporary directory $Tmp = "$($Drive)/uv-tmp" # Create the directory ahead of time in an attempt to avoid race-conditions