Seeing high CPU usage during git-upload-pack
- From
David Ebbo <david.ebbo@gmail.com>
- Date
- May 9, 2012, 07:01 UTC
- Message-ID
- <CAPeUw3EsFCxki6obAAeVBb0g4MKNWBteL3VueG5djbajkFiv3A@mail.gmail.com>
We’re using git-upload-pack in a simple git server. When the repo is on a slow share, we’re noticing that git-upload-pack is hugging the CPU during the whole pack-objects operation.
More details:
- git-upload-pack gets launched (with params git-upload-pack --stateless-rpc //path/to/repo) - it itself launches a git process (with params pack-objects --revs --all --stdout --progress --delta-base-offset). This git process is the one that does all the disk I/O, but it's not the one using up the CPU time. - git-upload-pack appears to be waiting for the git process, and is at high CPU during that time, suggesting that it's doing some kind of busy wait. To further test that, I stopped the git process in the debugger, preventing it from making progress. At that point, git-upload-pack pegs the CPU forever.
Would someone familiar with the sources be able to comment on this busy wait behavior, and on whether it could conceivably be done in a way that doesn’t use up some much CPU?
Thanks, David