git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Watchman support for git

From
David Turner <dturner@twopensource.com>
Date
May 6, 2014, 03:13 UTC
Message-ID
<1399346024.11843.43.camel@stross>
In-Reply-To
<CACsJy8Dr=m5FwmD2gXTM3bN-iYv+fyZ9RBUyvcj3UJJCC1yYtg@mail.gmail.com>
On Sun, 2014-05-04 at 07:15 +0700, Duy Nguyen wrote:
Show 5 quoted lines
> > I would like to merge the feature into master.  It works well for me,
> > and some of my colleagues who have tried it out.
> 
> Have you tried to turn watchman on by default, then run it with git
> test suite? That usually helps.

I have. The tests work run fine under make, but prove sometimes freezes due to an issue in libwatchman which I just fixed (and which I plan to merge as soon as I can get a colleague to look the changes over).

Show 9 quoted lines
> > I can split the vmac patch into two, but one of them will remain quite
> > large because it contains the code for VMAC and AES, which total a bit
> > over 100k.  Since the list will probably reject that, I'll post a link
> > to a repository containing the patches.
> 
> With the read-cache deamon, I think hashing cost is less of an issue,
> so new hashing algorithm becomes less important. If you store the file
> cache in the deamon's memory only, there's no need to hash anything.
> But I guess you already tried this.

I agree that with the daemon, the cost is less of an issue, but I am not 100% sure it is a non-issue; consecutive commands that need to read/write the index can still be slowed down.

Show 5 quoted lines
> > I'm not 100% sure how to split the watchman patch up.  I could add the
> > fs_cache code and then separately add the watchman code that populates
> > the cache.  Do you think there is a need to divide it up beyond this?
> 
> I'll need to have closer look at your patches to give any suggestions.

I have uploaded a new version (which is about 5-10% faster and which corrects some minor changes) to https://github.com/dturner-tw/git.git on the watchman branch.

> Although if you don't mind waiting a bit, I can try to put my
> untracked cache patches in good shape (hopefully in 2 weeks), then you
> can mostly avoid touching dir.c and reuse my work.

If the untracked cache patches are going to make it into master, then I would of course be willing to rewrite on top of them. But I would also like to have a sense of whether there is any interest in watchman support (outside of Twitter).

For what it's worth, the numbers today for index version 4 are for my superscience repo are: ~380 (no watchman), ~260 (untracked-cache), ~175 (watchman).

That's because untracked-cache still has to stat every directory.
Show 7 quoted lines
> I backed away from watchman support because I was worried about its
> overhead (of watchman itself, and git/watchman IPC because it's not
> designed specifically for git), which led me to try optimizing git as
> much as possible without watchman first, then see how/if watchman can
> help on top of that. I still think it's a good approach (maybe because
> it started to make me doubt if watchman could pull a big performance
> win on top to justify the changes to support it)

I think on large repositories (especially deeply-nested ones), with the common case of a small number of changes, watchman will end up being a big win. Java tends towards deep nesting (src/main/java/com/twitter/common/...), which is probably why my test repo had the largest speedup (>50%). The IPC overhead might become bad if there were a large number of changes, but so far this has not been an issue for me in testing.

Previous: Duy NguyenNext: Duy Nguyen
Message 27 of 43 in “Watchman support for git”
  1. dturner@twopensource.comMay 2, 2014
  2. 1/3 After chdir to run grep, return to old directorydturner@twopensource.com, May 2, 2014
  3. Junio C HamanoMay 6, 2014
  4. David TurnerMay 7, 2014
  5. Jeff KingMay 7, 2014
  6. David TurnerMay 7, 2014
  7. Junio C HamanoMay 7, 2014
  8. David TurnerMay 7, 2014
  9. 3/3 Watchman supportdturner@twopensource.com, May 2, 2014
  10. Felipe ContrerasMay 2, 2014
  11. David TurnerMay 3, 2014
  12. Felipe ContrerasMay 3, 2014
  13. David TurnerMay 5, 2014
  14. Felipe ContrerasMay 5, 2014
  15. Sebastian SchuberthMay 8, 2014
  16. David LangMay 9, 2014
  17. David TurnerMay 9, 2014
  18. David LangMay 9, 2014
  19. David TurnerMay 9, 2014
  20. David LangMay 9, 2014
  21. David TurnerMay 9, 2014
  22. Duy NguyenMay 3, 2014
  23. David TurnerMay 3, 2014
  24. Duy NguyenMay 3, 2014
  25. David TurnerMay 3, 2014
  26. Duy NguyenMay 4, 2014
  27. David TurnerMay 6, 2014
  28. Duy NguyenMay 6, 2014
  29. Duy NguyenMay 6, 2014
  30. Duy NguyenMay 10, 2014
  31. David TurnerMay 10, 2014
  32. Duy NguyenMay 11, 2014
  33. David TurnerMay 11, 2014
  34. Duy NguyenMay 12, 2014
  35. David TurnerMay 13, 2014
  36. Duy NguyenMay 13, 2014
  37. David TurnerMay 13, 2014
  38. Duy NguyenMay 10, 2014
  39. David TurnerMay 13, 2014
  40. Duy NguyenMay 14, 2014
  41. Duy NguyenMay 14, 2014
  42. David TurnerMay 15, 2014
  43. Duy NguyenMay 19, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.