Skip to content

Conversation

vszakats
Copy link

To allow making installation a little bit faster by using the faster
D: drive on GitHub Windows runner machines.

Fixes #7

@vszakats
Copy link
Author

On GitHub Windows runner machines, the D: drive has significantly better write performance than C:. Performance also seems more consistent between runs. As observed in curl CI: https://github.com/curl/curl/actions/workflows/windows.yml?query=branch%3Amaster

In curl, by installing Cygwin to the non-default D:\Cygwin location, install times went down from 2-4 minutes to 1-1.5 consistently: https://github.com/curl/curl/actions/runs/14034331710, curl/curl@468bfc2, curl/curl#16813

Since the installation involves downloading packages to the package directory first, moving those to D: may further improve performance, esp. with large packages.

Is there interest in this PR?

(It might also be worth considering to move the default install dir to D:\Cygwin for Cygwin itself)

@vszakats
Copy link
Author

There seems to be no interest in this, therefore closing.

I still think this (and moving the default install dir to D:) would very low-cost ways to boost Cygwin install performance, which for now is abysmal. Speaking of curl CI jobs, Cygwin was traditionally the slowest, by a good margin. It'd be nice to improve on that.

@vszakats vszakats closed this Mar 31, 2025
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 2, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 2, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 2, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 2, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
@gstrauss
Copy link
Contributor

gstrauss commented Apr 3, 2025

@vszakats I filed #27 to follow-up

@vszakats
Copy link
Author

vszakats commented Apr 3, 2025

@gstrauss Thanks, it's looking good and I like it better than this attempt.

@gstrauss
Copy link
Contributor

gstrauss commented Apr 3, 2025

Then again, depending on caching for github runners, this approach might turn out to be better for #7. However, I'm not diving into that. Just looking for some low-hanging fruit in #27.

@vszakats
Copy link
Author

vszakats commented Apr 3, 2025

One thing I didn't test (or think of to be frank) is how performance changes if the package and install drive is the same. In such case the drive needs to be read and written at the same time. Perhaps it'd be nice to allow setting them to different drives to be able to test for that, or configure it that way if it may hurt performance, e.g on a spinning disk.

#27 seems to allow that if I'm reading correctly.

@gstrauss
Copy link
Contributor

gstrauss commented Apr 3, 2025

There has never been a time on Windows where doing more read/write to C: improves performance. It has always been better to locate the swap file elsewhere, and to put data somewhere other than the partition containing \Windows. As with anything performance related, please do test and measure. Using D:\ should be no worse than using C:, and could be measurably better.

@vszakats
Copy link
Author

vszakats commented Apr 3, 2025

To test and measure we need options to configure these separately.

@gstrauss
Copy link
Contributor

gstrauss commented Apr 3, 2025

To test and measure we need options to configure these separately.

Feel free to fork this repo or my fork, make some modifications, add some measurement tests to .github/workflows/test.yml, and then push to your fork. Then view the results of the CI at https://github.com/vszakats/cygwin-install-action/actions/

@vszakats
Copy link
Author

vszakats commented Apr 3, 2025

Nah, sorry, I don't feel the good vibes around here for that kind of work :(

edit: besides, this Action might be run on external or paid runners, where the disk layout / perf may be different from what GitHub's free runners offer. That's why it's useful to have everything configurable. Also forking this repo isn't really a good or friendly way to change configuration, though of course "possible".

@gstrauss
Copy link
Contributor

gstrauss commented Apr 3, 2025

Nah, sorry, I don't feel the good vibes around here for that kind of work :(

Seems like that is a reflection of you and your participation. Why should other people take your dictation and do more work for you? An amateur could implement your dictates, and so an amateur should.

Also forking this repo isn't really a good or friendly way to change configuration, though of course "possible".

You seem to have a serious misunderstanding of what it means to "test", and how a fork is used on github to create a pull request (PR).

@vszakats
Copy link
Author

vszakats commented Apr 3, 2025

Look, I started with a fork to test this, followed by this (and another) pull request. None did pick up interest. It's okay.
Wishing you luck with your iteration on this, but I have no capacity to chew on this more. Your message also reinforced how I felt about this initially.

gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 4, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 4, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
@jon-turney
Copy link
Member

jon-turney commented Apr 6, 2025

None did pick up interest.

I'm sorry if you didn't receive an instant response to your PR and this caused you to experience negative vibrations, but no-one is paid to work on this and sometimes RL takes priority for our volunteers.

Thanks anyway. 🫡

gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 7, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
gstrauss added a commit to gstrauss/cygwin-install-action that referenced this pull request Apr 7, 2025
Volume on which to store \setup.exe and \cygwin-packages
Volume on which to store \cygwin if install-dir param not specified

ref: cygwin#24

Signed-off-by: Glenn Strauss <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Make cygwin-packages dir configurable

3 participants