Compress k0s binary using UPX
Description
Make this configurable via Make variables.
This is a PoC based on #5468, to see if it is generally possible and to have something to tinker with. CI seems to be passing. The size reduction is about 25% for the linux-amd64 executable, and over 30% for the windows-amd64 executable.
I did some highly scientific ^^ benchmarks using time ./k0s on my machine, to compare startup times of the compressed and uncompressed versions of the executable. For me, compression added around 420 ms of startup latency.
See:
- #5468
Type of change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
How Has This Been Tested?
- [x] Manual test
- [ ] Auto test added
Checklist:
- [x] My code follows the style guidelines of this project
- [x] My commit messages are signed-off
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules
- [x] I have checked my code and corrected any misspellings
The PR is marked as stale since no activity has been recorded in 30 days
How is memory usage affected? I assume that the memory usage will go up, but with how much?
How is memory usage affected? I assume that the memory usage will go up, but with how much?
Not only memory but also CPU, as it will do decompression to memory on start
This pull request has merge conflicts that need to be resolved.
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days
The PR is marked as stale since no activity has been recorded in 30 days