{"id":4011,"date":"2011-06-02T12:35:31","date_gmt":"2011-06-02T12:35:31","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2011\/06\/02\/team-foundation-server-dogfooding-update-may-2011\/"},"modified":"2024-06-14T10:58:33","modified_gmt":"2024-06-14T17:58:33","slug":"team-foundation-server-dogfooding-update-may-2011","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/team-foundation-server-dogfooding-update-may-2011\/","title":{"rendered":"Team Foundation Server Dogfooding update \u2013 May 2011"},"content":{"rendered":"<p>It\u2019s been a looong time since I published a detailed look at TFS dogfooding.\u00a0 I used to do them every month but then the server got so big and the reports monotonous enough that I decided to stop.\u00a0 I\u2019ve had a number of queries about it in the past few months, so I figured it was time to do an update.<\/p>\n<p>I\u2019ll start by talking about DevDiv.\u00a0 It\u2019s more complicated than it used to be.\u00a0 We used to just have one TFS server for all of DevDiv and I could report one set of stats.\u00a0 Now we kind of have 3.\u00a0 Let me explain.<\/p>\n<p>In TFS 2010, we introduced Team Project Collections.\u00a0 In many ways a Team Project collection is like a separate TFS server \u2013 it\u2019s totally isolated in its own SQL database, etc.\u00a0 When we (developer division) adopted TFS 2010, we decided it was time to \u201cstart fresh\u201d.\u00a0 We\u2019d been using the same TFS server since 2004 and as these things do sometimes, it grew lint \u2013 gangly organization, extra cruft that no one actually needed, etc.\u00a0 Further, we made some big performance\/scale enhancements in 2010 that required database schema updates and making those update to a server as big as ours was was going to take a very long time (many many days).\u00a0 So, we decided to start with a new Team Project collection and then just fault in the stuff that we needed \u2013 doing appropriate reorganization as we went \u2013 think of it as spring cleaning \ud83d\ude42\u00a0 Of course we still keep the old Team Project Collection around and that\u2019s where we do all of our servicing work (service pack, hot fixes, etc) for older versions of VS.\u00a0 However it\u2019s not used nearly as much as the new collection is used (where we are doing our VNext work).\u00a0 That meant we went from 1 \u2013&gt; 2 collections, however, both run on the same hardware so it\u2019s still one TFS server.<\/p>\n<p>The second issue, and I wrote about this some a couple of years ago, was that the DevDiv server had gotten so big and so mission critical that we had grown to be VERY conservative about updating it.\u00a0 Part of dogfooding is being able to use builds that are under development but we got ourselves into the position that we couldn\u2019t any longer due to the fact that we couldn\u2019t risk the service interruption that bugs in intermediate builds might induce.\u00a0 To address this issue, last summer, we set up a new TFS server that we affectionately call \u201cPioneer\u201d.\u00a0 On this server we have a relatively small portion of the overall DevDiv organization (maybe 350 people) doing their daily work.\u00a0 These teams were chosen for their tolerance for possible disruption \u2013 in most cases they are people who directly or indirectly contribute code to TFS feature scenarios and are therefore willing take some risk in order to use the latest features.\u00a0 We update the Pioneer server every few months.<\/p>\n<p>All of this means that when I report DevDiv number, I\u2019ll report them in 3 sets: VS VNext, VS Servicing and Pioneer.\u00a0 Some things, like user count, aren\u2019t mutually exclusive (often the same people use 2 or more of the collections) and this will result in \u201cdouble counting\u201d if you just add up the numbers.\u00a0 However most things actually can be added to get a total number.<\/p>\n<p>As you look at the numbers, a couple of things to keep in mind.<\/p>\n<p>1) The VS Servicing database was around for a long time.\u00a0 It had many people using it for many years.<\/p>\n<p>2) The Pioneer database has a small subset of teams really working in it \u2013 so it\u2019s a fraction of the DevDiv size.\u00a0 Recent users doesn\u2019t accurately reflect the proportion because it doesn\u2019t distinguish between \u201clight users\u201d (someone who looks up a bug) vs heavy users (people doing checkins).<\/p>\n<p>3) Pioneer is running Dev 11 pre-release bits and we have made some changes.\u00a0 For instance, attachment content is now included in the file count.<\/p>\n<table border=\"1\" width=\"434\" cellspacing=\"0\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td width=\"187\">Metric<\/td>\n<td width=\"79\">VS VNext<\/td>\n<td width=\"69\">Pioneer<\/td>\n<td width=\"97\">VS Servicing<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Recent Users<\/td>\n<td width=\"79\">3,295<\/td>\n<td width=\"69\">1,712<\/td>\n<td width=\"97\">3,368<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Team Projects<\/td>\n<td width=\"79\">8<\/td>\n<td width=\"69\">8<\/td>\n<td width=\"97\">75<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Files<\/td>\n<td width=\"79\">371,903,328<\/td>\n<td width=\"69\">73,317,059<\/td>\n<td width=\"97\">1,052,226,846<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Compressed File Sizes (MB)<\/td>\n<td width=\"79\">1,276,709<\/td>\n<td width=\"69\">1,419,324<\/td>\n<td width=\"97\">4,915,960<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Uncompressed File Sizes (MB)<\/td>\n<td width=\"79\">5,418,821<\/td>\n<td width=\"69\">2,681,084<\/td>\n<td width=\"97\">16,319,559<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Checkins<\/td>\n<td width=\"79\">244,683<\/td>\n<td width=\"69\">90,290<\/td>\n<td width=\"97\">2,165,020<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Shelvesets<\/td>\n<td width=\"79\">55,727<\/td>\n<td width=\"69\">35,859<\/td>\n<td width=\"97\">284,213<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Merge History<\/td>\n<td width=\"79\">697,220,676<\/td>\n<td width=\"69\">107,589,634<\/td>\n<td width=\"97\">2,485,529,669<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Pending Changes<\/td>\n<td width=\"79\">16,042,586<\/td>\n<td width=\"69\">1,422,410<\/td>\n<td width=\"97\">26,931,501<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Workspaces<\/td>\n<td width=\"79\">19,786<\/td>\n<td width=\"69\">8,522<\/td>\n<td width=\"97\">44,650<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Local Copies<\/td>\n<td width=\"79\">3,129,226,059<\/td>\n<td width=\"69\">409,161,527<\/td>\n<td width=\"97\">824,218,447<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Users with Assigned Work Items<\/td>\n<td width=\"79\">2,698<\/td>\n<td width=\"69\">3,695<\/td>\n<td width=\"97\">5,093<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Total Work Items<\/td>\n<td width=\"79\">200,517<\/td>\n<td width=\"69\">650,238<\/td>\n<td width=\"97\">927,419<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Areas &amp; Iterations<\/td>\n<td width=\"79\">4,493<\/td>\n<td width=\"69\">8,014<\/td>\n<td width=\"97\">12,092<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Work Item Versions<\/td>\n<td width=\"79\">1,879,382<\/td>\n<td width=\"69\">6,842,523<\/td>\n<td width=\"97\">8,963,043<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Work Item Attachments<\/td>\n<td width=\"79\">52,542<\/td>\n<td width=\"69\">234,074<\/td>\n<td width=\"97\">482,249<\/td>\n<\/tr>\n<tr>\n<td width=\"187\">Work Item Queries<\/td>\n<td width=\"79\">26,602<\/td>\n<td width=\"69\">21,448<\/td>\n<td width=\"97\">125,445<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Here\u2019s a look at the top 10 table sizes for each of the databases:<\/p>\n<p><u>VS V.Next<\/u><\/p>\n<table border=\"1\" width=\"251\" cellspacing=\"0\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td width=\"141\">TableName<\/td>\n<td width=\"64\">Size (MB)<\/td>\n<td width=\"44\">%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_Content<\/td>\n<td width=\"64\">1329107.04<\/td>\n<td width=\"44\">59.46%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_LocalVersion<\/td>\n<td width=\"64\">602183.99<\/td>\n<td width=\"44\">26.94%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_Version<\/td>\n<td width=\"64\">64435.09<\/td>\n<td width=\"44\">2.88%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_PropertyValue<\/td>\n<td width=\"64\">48772.83<\/td>\n<td width=\"44\">2.18%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_VersionedItem<\/td>\n<td width=\"64\">43774.84<\/td>\n<td width=\"44\">1.96%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_MergeHistory<\/td>\n<td width=\"64\">38935.34<\/td>\n<td width=\"44\">1.74%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_BuildInformationField<\/td>\n<td width=\"64\">35031.9<\/td>\n<td width=\"44\">1.57%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">Attachments<\/td>\n<td width=\"64\">22835.96<\/td>\n<td width=\"44\">1.02%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_BuildInformation<\/td>\n<td width=\"64\">15014.2<\/td>\n<td width=\"44\">0.67%<\/td>\n<\/tr>\n<tr>\n<td width=\"141\">tbl_AttachmentContent<\/td>\n<td width=\"64\">7601.68<\/td>\n<td width=\"44\">0.34%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>VS Servicing<\/p>\n<table border=\"1\" width=\"224\" cellspacing=\"0\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td width=\"124\">TableName<\/td>\n<td width=\"56\">Size (MB)<\/td>\n<td width=\"42\">%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_Content<\/td>\n<td width=\"56\">5108682.9<\/td>\n<td width=\"42\">73.17%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_LocalVersion<\/td>\n<td width=\"56\">641180.78<\/td>\n<td width=\"42\">9.18%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">Attachments<\/td>\n<td width=\"56\">489900.24<\/td>\n<td width=\"42\">7.02%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_Version<\/td>\n<td width=\"56\">257896.06<\/td>\n<td width=\"42\">3.69%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_VersionedItem<\/td>\n<td width=\"56\">149325.45<\/td>\n<td width=\"42\">2.14%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_MergeHistory<\/td>\n<td width=\"56\">141534.93<\/td>\n<td width=\"42\">2.03%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">WorkItemsWere<\/td>\n<td width=\"56\">35543.32<\/td>\n<td width=\"42\">0.51%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">bak_versionsToUpdate<\/td>\n<td width=\"56\">32940.14<\/td>\n<td width=\"42\">0.47%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_LabelEntry<\/td>\n<td width=\"56\">28142.96<\/td>\n<td width=\"42\">0.40%<\/td>\n<\/tr>\n<tr>\n<td width=\"124\">tbl_PendingChange<\/td>\n<td width=\"56\">17959.16<\/td>\n<td width=\"42\">0.26%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Pioneer<\/p>\n<table border=\"1\" width=\"245\" cellspacing=\"0\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td width=\"139\">TableName<\/td>\n<td width=\"62\">Size (MB)<\/td>\n<td width=\"42\">%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_Content<\/td>\n<td width=\"62\">1386480.21<\/td>\n<td width=\"42\">88.34%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">Attachments<\/td>\n<td width=\"62\">51315.64<\/td>\n<td width=\"42\">3.27%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_LocalVersion<\/td>\n<td width=\"62\">25392.61<\/td>\n<td width=\"42\">1.62%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">WorkItemsWere<\/td>\n<td width=\"62\">16901.61<\/td>\n<td width=\"42\">1.08%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">WorkItemLongTexts<\/td>\n<td width=\"62\">16634.2<\/td>\n<td width=\"42\">1.06%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_Version<\/td>\n<td width=\"62\">12103.81<\/td>\n<td width=\"42\">0.77%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_PropertyValue<\/td>\n<td width=\"62\">11172.32<\/td>\n<td width=\"42\">0.71%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_BuildInformationField<\/td>\n<td width=\"62\">8953.96<\/td>\n<td width=\"42\">0.57%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_VersionedItem<\/td>\n<td width=\"62\">8416.38<\/td>\n<td width=\"42\">0.54%<\/td>\n<\/tr>\n<tr>\n<td width=\"139\">tbl_MergeHistory<\/td>\n<td width=\"62\">5811.37<\/td>\n<td width=\"42\">0.37%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>If we step back a bit and look at the broader adoption of TFS within Microsoft, we\u2019ll see that it has continued to trend steadily up.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8306.clip_image001_thumb_48B8F7FB.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16241\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8306.clip_image001_thumb_48B8F7FB.jpg\" alt=\"Image 8306 clip image001 thumb 48B8F7FB\" width=\"644\" height=\"428\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8306.clip_image001_thumb_48B8F7FB.jpg 644w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8306.clip_image001_thumb_48B8F7FB-300x199.jpg 300w\" sizes=\"(max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8484.clip_image0015_thumb_4044FCD7.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16242\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8484.clip_image0015_thumb_4044FCD7.jpg\" alt=\"Image 8484 clip image0015 thumb 4044FCD7\" width=\"644\" height=\"412\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8484.clip_image0015_thumb_4044FCD7.jpg 644w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2011\/06\/8484.clip_image0015_thumb_4044FCD7-300x192.jpg 300w\" sizes=\"(max-width: 644px) 100vw, 644px\" \/><\/a><\/p>\n<p>And here\u2019s a simple tabular form to look at a few key metrics changing in just a few months:<\/p>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Service Offering<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>Oct 2010<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>Jan 2011<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>Growth<\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Instances<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>41<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>42<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>+1<\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Team Project Collections<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>100<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>145<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>+45<\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Team Projects<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>6,154<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>6,750<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>+596<\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Work Items<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>7,843,057<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>8,734,391<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>+913,072<\/b><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"185\"><b>Source Code Files<\/b><\/td>\n<td valign=\"top\" width=\"92\"><b>90,378,237<\/b><\/td>\n<td valign=\"top\" width=\"102\"><b>101,486,122<\/b><\/td>\n<td valign=\"top\" width=\"96\"><b>+11,107,885<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>As you can see adoption continues unabated and we are now at about 20,000 active users (people who use it every week) using the system.\u00a0 DevDiv remains the\nbiggest single instance \u2013 MSIT is broken across many instances due to the organization of their work.\u00a0 We\u2019re all ready dogfooding V.Next on Pioneer and will be looking to expand that later this year.\u00a0 It\u2019s great to see so many teams and people getting value from TFS.<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s been a looong time since I published a detailed look at TFS dogfooding.\u00a0 I used to do them every month but then the server got so big and the reports monotonous enough that I decided to stop.\u00a0 I\u2019ve had a number of queries about it in the past few months, so I figured it [&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":[5],"class_list":["post-4011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-tfs"],"acf":[],"blog_post_summary":"<p>It\u2019s been a looong time since I published a detailed look at TFS dogfooding.\u00a0 I used to do them every month but then the server got so big and the reports monotonous enough that I decided to stop.\u00a0 I\u2019ve had a number of queries about it in the past few months, so I figured it [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/4011","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=4011"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/4011\/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=4011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=4011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=4011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}