TFS Integration Tools – “out of memory exception” now what?

Discussions around the “out of memory” exception encountered during migrations have raised the question whether adding more RAM would solve the question. As with all other IT question the answer is a “depends”.

When you encounter the “out of memory” exception it is recommended to proceed as follows:

  1. Re-start the migration session and monitor the memory usage of the TfsMigrationShell process (or TfsIntegrationService process if used) as well as the available memory on the migration machine by using the Task Manager of Perfmon applications.
    outofmem
  2. If the machine is running low on memory and Commit Size / Private Bytes  is not close to 2GB, we have the following possible options:
    • If SQL Server is located on the same machine, move the SQL Server to another machine.
    • Add more physical memory.
      outofmemdecision
  3. If the machine is running low on memory and Commit Size / Private Bytes is close to 2GB we are approaching the 32-bit process limit and adding more memory will not help.  We are left with the following options:
    • Use multiple filter pairs (caution with narrow queries)
    • Run multiple migration sessions serially moving different parts of the data
    • For VC, consider using the SnapshotStartPoint feature to ignore part of the historical data from the source serve

NOTE:

  • When using Task Manager, use “Commit Size” … which indicates the amount of virtual memory that is reserved for use.
  • When using Perfmon, use “Private Bytes” … which indicates the size on bytes if the allocated (committed) virtual memory.