Moving on past the hardware and host, we arrive at the software itself and how best to configure Essentials for Office 365 to optimize performance.
Multi-threading and parallel operations are key ingredients to an optimal performance driven migration or backup, but that comes with caveats. The more operations that are being processed in parallel (either using threads or parallel jobs) the more resources that are consumed. This means CPU cycles, large amounts of memory, disk space and network traffic, so if you want to push this area please be sure not to skimp out on the earlier hardware recommendations.
Memory allocation to Essentials is vital to a successful multi-threaded or parallel run operation. Each instance of the software will consume additional memory and each additional thread has the potential to do so as well. Please be conscious of the relationship between the total amount of system memory physically available on your host machine, how much is being consumed by other resources and how much is left to allocate to Essentials. We do not recommend allocation more than 50% of total physical system memory to Essentials. This is certainly an area where trial and error may be required to find the ideal spot between optimization and overreach, but using a 50/50 ratio is a good starting point to begin.
•To configure the amount of memory allocated to Essentials for Office 365, please go to Help > Profile Manager > Memory Management. Please note that an application restart is required after modifying this value.
•To configure increased thread count for operations, please go to Help > Profile Manager >Global Variables and change the value in the Max Threads for Copy field. Please note that an application restart is required after modifying this value.
NOTE: When adjusting Memory Allocation please be aware that this will be the amount of memory consumed for every running instance of the Essentials software on this host computer. For example, if you configure 4GB of memory and run 3 parallel instances (i.e. scheduled backups), the combined total memory consumption of all instances is now up to 12GB. This may be much more than what is available on your host machine and can lead to an increased number of failed events, premature termination, failed jobs or any number of related issues. Essentials is designed to consume as much resources as possible to maximize performance and responsiveness per instance, so in some cases running multiple operations (threads) in a single instance is preferable to running a single operation in multiple, concurrent instances.
A quick example to determine memory allocation would be to take the total physical amount of memory on your host machine and divide that in half. Then divide that remaining value by the number of concurrent instances (migration or backup) that you wish to perform. The remaining value is what you should use as a starting point for the Memory Allocation value.
16GB / 2 = 8GB of usable memory.
8GB / 3 concurrent or parallel instances (migration or backups) = 2.67 GB rounded down to 2560MB.
In this example, your starting point would be to select 2560MB for memory allocation and since that is more than a 32-bit application permits, please be sure to take advantage of 64-bit architecture.
A quick mention to make sure you are providing the software with an adequate level of permissions for all SharePoint and Office 365 operations. If the user account provided does not have access to certain locations or objects (sites, lists, mailboxes, groups, etc.), this will result in any number of failures and connection issues which will decrease performance. When possible, always provide the highest level of permissions available, this means Site Collection Admin for SharePoint and Global Administrator for Office 365.