Ask a questionAsk a question
 

AnswerTFS: Moving 300 files using CLI takes 10+ minutes

  • Friday, November 06, 2009 7:59 PMEd Chapel Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Has Code
    Problem: I am having to wait 10 minutes to execute:
    tf rename ..\D*.as* .\
    I want to move 300+ *.aspx and*.aspx.vb files into a subfolderThe number of files in this itemspec is ~300.

    Also
    • I am working on a branch and there are no pending changes or locked files.
    • My workspace has no pending changes and no locks nor checkouts.
    • I have 3 weeks of experience with TFS and 6+ with CVS/SVN.
    Locally: I can see that no processor time or disk I/O is used on my local machine. I can see that an http connection is established to the server and it appears to be waiting.

    On the Server: The SQL server process is pegging the processor (1 of 4) and no other activity is registering to the ASP.NET processes. When the SQL server process goes to 0%, the local command completes.

    Why is this taking so long? Are there configuration and optimization tasks I can perform on the server?
    • Moved byJason BarileMSFT, ModeratorFriday, November 06, 2009 8:04 PMmoving to version control forum (From:Team Foundation Server - General)
    •  

Answers

  • Friday, November 06, 2009 11:57 PMRichard Berg Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    The amount of time it takes to pend a change depends (among other things) on how many pending renames are in the workspace.  I believe the relationship is worse than linear.  So to answer your question: don't try to do it all at once.  Pend 10 renames, checkin, pend 10 more, checkin, etc.
    • Marked As Answer byEd Chapel Friday, November 06, 2009 11:58 PM
    •  

All Replies

  • Friday, November 06, 2009 11:57 PMRichard Berg Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    The amount of time it takes to pend a change depends (among other things) on how many pending renames are in the workspace.  I believe the relationship is worse than linear.  So to answer your question: don't try to do it all at once.  Pend 10 renames, checkin, pend 10 more, checkin, etc.
    • Marked As Answer byEd Chapel Friday, November 06, 2009 11:58 PM
    •  
  • Saturday, November 07, 2009 12:05 AMEd Chapel Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Richard,

    This is the workaround that I used to complete my task. I'll adopt this behavior for renames in the future.


    The performance does appear to be linear. From earlier testing, it was even worse if I had all of the files checked out. Un-checking out the files improved performance significantly.

    However, I still would like to understand why the SQL process is at 100%...
  • Saturday, November 07, 2009 12:16 AMEd Chapel Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    After further research into how and why the SQL process was at 100%, I found the bottle neck. The disk I/O is the limiting factor for the most part. The SQL tempdb is suffering from massive read/write by the SQL process. I don't know SQL well enough to guess what is causing the tempdb to be getting hammered, but hopefully someone on the TFS VC project team does.

    I am all but certain there is something I can change in the configuration to make it perform better. Can anyone point me to a good resource? I do not have access to original person who configured it and our own DBA's are hesitant to get involved. I'd even be happy to RTFM if I knew which FM to read.
  • Saturday, November 07, 2009 4:37 AMRichard Berg Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    If it's stuck on a bad query plan I don't think you can do much, especially w/o source code.  

    The implementation of renames at the SQL level is completely different in 2010; curious how it would perform by comparison.  I know the TFVC devs have been aware of this bottleneck for awhile -- I'm guessing they put whatever time they had to spend on this scenario toward optimizing the new schema, not the 2005/2008 one.