Dovetail Software is Multi-Core Aware
A customer recently asked if they should provision multiple CPUs on virtual machines hosting Dovetail applications. The short answer is Yes most of our applications do a pretty good job taking advantage of multiple CPU cores. Let’s take a look at this in a bit more detail.
Our Clarify products all use our .Net Dovetail SDK. The SDK is not itself multi-threaded (each thread runs on a CPU core) but most Dovetail products using the SDK utilize multiple cores in one way or another.
Most of our customers use one of our web applications. Dovetail Agent, Agent Lite, and Dovetail Mobile, and Dovetail Administration are implicitly multi-threaded because the web server (IIS) that they run on uses a thread per web request being processed.
Note: There is a limit to the number of threads IIS will put into play.
Message Based Applications
Dovetail Seeker and Dovetail Carrier are message based applications which run as Windows services. They both use multiple threads to produce and consume messages. This architecture does a very good job at parallelizing the work being done. For example Dovetail Seeker is a bit CPU intensive when indexing a large amount of content. We have seen a linear increase in the amount of content that can be indexed concurrently when adding additional cores. Here is a screenshot from my development machine doing some heavy Dovetail Seeker indexing.
Seeker’s usage is not purely CPU as there is still a bit of waiting that occurs while talking to the database and file system. It doesn’t hurt to have a fast database server and local file system where the search indexes get written.
Dovetail RuleManager is very much like our message base applications. It is a Windows service and uses multiple threads. We wrote this application before our experience with message based architectures. If I did major rework this application would become message based. RuleManager uses a producer consumer multi-threading model where one thread polls the database for events feeding consumer threads work to do when events are found.
Should you use multiple CPUs for Dovetail applications? Yes. How many? I would recommend at least 2 cores for web applications. Our message based applications can in theory use as many CPUs as you throw at them.