Re: Make the git codebase thread-safe
- From
David Kastrup <dak@gnu.org>
- Date
- Feb 12, 2014, 18:50 UTC
- Message-ID
- <87y51g88sc.fsf@fencepost.gnu.org>
- In-Reply-To
- <CAHOQ7J8gvwpwJV2mBPDaARu3cQ54-ZDQ6iGOwKuJRr9Z+XBL7g@mail.gmail.com>
Stefan Zager <szager@chromium.org> writes:
Show 9 quoted lines
> On Tue, Feb 11, 2014 at 6:11 PM, Duy Nguyen <pclouds@gmail.com> wrote: >> >> I have no comments about thread safety improvements (well, not yet). >> If you have investigated about git performance on chromium >> repositories, could you please sum it up? Threading may be an option >> to improve performance, but it's probably not the only option. > > Well, the painful operations that we use frequently are pack-objects, > checkout, status, and blame.
Have you checked the patch in <URL:http://thread.gmane.org/gmane.comp.version-control.git/241448> and followups, Message-ID: <1391454849-26558-1-git-send-email-dak@gnu.org>?
While this does not yet support -M and -C options, it's conceivable that you don't use them in your server/scripts.
> Anything on Windows that touches a lot of files is miserable due to > the usual file system slowness on Windows, and luafv.sys (the UAC file > virtualization driver) seems to make it much worse.
There is an obvious solution here... Dedicated hardware is not that expensive. Virtualization will always have a price.
Show 5 quoted lines
> Blame is something that chromium and blink developers use heavily, and > it is not unusual for a blame invocation on the blink repository to > run for 30 seconds. It seems like it should be possible to > parallelize blame, but it requires pack file operations to be > thread-safe.
Really, give the above patch a try. I am taking longer to finish it than anticipated (with a lot due to procrastination but that is, unfortunately, a large part of my workflow), and it's cutting into my "paychecks" (voluntary donations which to a good degree depend on timely and nontrivial progress reports for my freely available work on GNU LilyPond).
Note that it looks like the majority of the remaining time on GNU/Linux tends to be spent in system time: I/O time, memory management. And I have an SSD drive. When using packed repositories of considerable size, decompression comes into play as well. I don't think that you can hope to get noticeably higher I/O throughput by multithreading, so really, really, really consider dedicated hardware running on a native Linux file system.
-- David Kastrup