{"id":13246,"date":"2017-07-06T11:06:43","date_gmt":"2017-07-06T16:06:43","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/?p=13246"},"modified":"2019-02-27T06:28:50","modified_gmt":"2019-02-27T06:28:50","slug":"perf-results-on-scaling-git-on-vsts-with-gvfs","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/perf-results-on-scaling-git-on-vsts-with-gvfs\/","title":{"rendered":"Perf results on scaling Git on VSTS with GVFS"},"content":{"rendered":"<p>A little over a month ago, I gave an update on our progress of moving the Windows team to Git in the <a href=\"https:\/\/blogs.msdn.microsoft.com\/bharry\/2017\/05\/24\/the-largest-git-repo-on-the-planet\/\">largest Git repo on the planet<\/a>.\u00a0 At the time, I described the scale of the Windows Git repo (over 3.5M files and ~4,000 engineers), the current performance results and set of improvements that were just rolling out that we called &#8220;O(modified)&#8221;.\u00a0 The O(modified) improvements significantly improve performance by changing many Git commands to be time proportional to the set of files you&#8217;ve changed rather than the set you&#8217;ve checked out.<\/p>\n<p>Now, ~5 weeks later, we&#8217;ve rolled out the O(modified) changes across the majority of the Windows team and we can report actual results from real daily usage rather than synthetic test results.\u00a0 This reflects typical developer usage with typical enlistment sizes, real world changes, etc.\u00a0 It is taken from telemetry that is collected from every engineer for every command they run.<\/p>\n<p>In the table below you&#8217;ll see the performance results for 6 common commands.\u00a0 The first two columns are the 80th and 95th percentile times, in seconds, for GVFS before the O(modified) changes.\u00a0 Of course, remember Git without the GVFS changes would have been many minutes for many, if not all, of these.\u00a0 The second two columns are the 80th and 95th percentile times, in seconds, for GVFS after the O(modified) changes rolled out.\u00a0 So, compare columns 1 -&gt; 3 and 2 -&gt; 4 to compare times.\u00a0 The final two columns are the % improvements for the 80th and 95th percentiles.\u00a0 As you can see most 80th percentiles improved by 20-30% and up to 78%.\u00a0 The 95th percentiles improved by much more &#8211; more like 50-60% and up to 90%.\u00a0 99th percentile would be even better.\u00a0 In general, one of the effects of the O(modified) changes is to substantially shorten the &#8220;tail&#8221; or the variability of commands &#8211; making them faster and much more consistent.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/OMPerf.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-13255\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/OMPerf.png\" alt=\"\" width=\"527\" height=\"158\" \/><\/a><\/p>\n<p>I always use git status as my barometer of performance.\u00a0 A lot of commands matter but more than any other, status is one that you don&#8217;t expect to wait for.\u00a0 The O(modified) improvements really shine.\u00a0 I didn&#8217;t show it but the 50th percentile for status is under 3 seconds.\u00a0 My personal goal is to get the 50th percentile down to 1 second.\u00a0 I&#8217;ll feel super proud if we are able to do that but regardless, the results already are quite amazing.<\/p>\n<p>We&#8217;ll keep plugging away at improvements and you can follow the work in our <a href=\"https:\/\/github.com\/Microsoft\/GVFS\">GVFS open source project<\/a>.\u00a0 We just recently added <a href=\"https:\/\/github.com\/Microsoft\/GVFS\/commit\/522d018a2e34a13e56a94b158b7bc58ba3009a1d\">automount support <\/a>so GVFS is automatically started after rebooting &#8211; so you don&#8217;t have to remember to manually do it before accessing your code.<\/p>\n<p>If you&#8217;d like to try out Git on a large code base, create a <a href=\"https:\/\/www.visualstudio.com\/team-services\/\">VSTS account<\/a>, download GVFS and give it a try!<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A little over a month ago, I gave an update on our progress of moving the Windows team to Git in the largest Git repo on the planet.\u00a0 At the time, I described the scale of the Windows Git repo (over 3.5M files and ~4,000 engineers), the current performance results and set of improvements that [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-13246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-vs-team-services"],"acf":[],"blog_post_summary":"<p>A little over a month ago, I gave an update on our progress of moving the Windows team to Git in the largest Git repo on the planet.\u00a0 At the time, I described the scale of the Windows Git repo (over 3.5M files and ~4,000 engineers), the current performance results and set of improvements that [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/13246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=13246"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/13246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=13246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=13246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=13246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}