-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize the file management of GitHub Actions Windows builds (OSOE-156) #32
Comments
In a CI environment it should be feasible to disable Windows Defender altogether, no? E.g. from an administrative PS shell (source): Set-MpPreference -DisableRealtimeMonitoring $true Here's a serverfault answer that does an additional step; might be helpful. |
Perhaps not completely disable, I'd err on the safe side by using only the above-mentioned configuration. |
Well, this is disappointing, also CC @DAud-IcI and @BenedekFarkas. See my findings and conclusions above. Do you have any other suggestions, perhaps? I'm out of ideas. It seems that any Windows tuning option we have left necessitates using self-hosted runners. |
Well, that's depressing. I don't have other ideas, sorry. By the way the WSL angle isn't really clear to me. Isn't WSL just testing on Linux with extra steps? WSL1 is basically reverse Wine and WSL2 is a nice frontend for Hyper-V running a real Linux kernel. So it seems to me that going through that you wouldn't really test a Windows application and wouldn't detect any Windows-specific problems. |
It is :(. I'd have used WSL only to mount an ext4 virtual drive as a normal Windows drive (which doesn't seem to be possible from under Windows otherwise, but which is a fully supported scenario with WSL 2) and have the working directory there. So the build and test execution would all happen under Windows, just using ext4 as storage. (Hoping that it provides a performance gain over NTFS with our usage patterns.) I ultimately did that with WinBtrfs too. The results I got there hint that perhaps ext4 wouldn't offer advantages either. (My suspicion is that this is due to the old hardware being used for runners.) |
I don't have anything to add, unfortunately. Just that I remember that we had a problem with attached drives on Vultr too and build performance tanked due to slow I/O, so we had to switch larger VMs just for the sake of the larger NVMe storage, not the CPU/RAM... |
BTW I briefly thought about finding out which Azure DC the GitHub-hosted runners are located and trying to attach drives to them that we create in Azure. But that sounds hopelessly hackish (and until we have everything working and we can try it out, it's only hope that it'll actually provide any benefits) but at that point, I'd again just focus on creating self-hosted runners instead. |
I put some more thought and research into this whole question, but nothing, really. |
Nothing worked here, unfortunately. While I'm still testing BuildJet and larger GH-hosted runners, optimizing Windows builds didn't yield any results, so closing this. |
The Windows builds of our GitHub Actions workflows are always a lot slower than the Ubuntu ones for every operation, even checkout (at least 2-3x slower, all the way up to 40x sometimes). Let’s try to make this better by tackling file management-related Windows issues.
To be checked
See the attached spreadsheet for measurements.
setup-wsl
action. Note that this is only WSL 1 because the currently used Azure VMs don't support nested virtualization.New-VHD
andMount-VHD
, which need Hyper-V enabled (which is necessary for WSL 2 anyway).Measurements.xlsx
Conclusion
Summary of findings:
Next steps:
However, the best option, really, is to just use Ubuntu if possible. (It is possible for all of our Orchard Core projects, but for OSOCE, specifically, we need Windows builds to verify cross-platform behavior).
The text was updated successfully, but these errors were encountered: