Document Processing Scheduling
Each documented submitted to the Sense Analysis Service can require a substantial amount of processing time due to the extensive nature of the deep semantic analysis performed. This document explains how document scheduling is handled to provide service to multiple applications.
Documents submitted to the Sense Analysis Service are handled by a job scheduler that implements weighted fair queueing. Each project profile is associated with a queue. All documents submitted using the same profile credentials are put in the same queue. The scheduler manages the allocation of jobs to servers to ensure that jobs from all queues are processed. This ensures that even if "Subscriber A/Project A" has submitted 2000 documents in batch mode, a single job from Subscriber B (or even for another project of Subscriber A) will start running immediately when capacity is available.
The servers used by this service are high capacity servers that can process up to 32 documents at once. We often have several such servers active at the same time and it usually takes very little time for a slot to become available.
Notes
- Job scheduling depends on estimating the duration of a job. This is done by looking at past jobs from the profile. If someone has very different types of jobs (e.g., processing documents vs processing search queries), they should create themselves two different profiles.
- Creating multiple profiles simply for the sake of increasing your bandwidth at the expense of others is frowned upon and will result in your access being blocked.
- For commercial applications, we can increase the weight associated with a profile to ensure increased processing. Fixed bandwidth can also be reserved to ensure that jobs for a real-time application start immediately. Please contact us.
- The job controller monitors the length of the queued work and starts/stops new servers as required. Unfortunately it takes almost 30-45 minutes to activate a server due to the large memory models that must be transferred. You will get better performance by continuously sending jobs rather than sending a bunch all at once because we can better adjust the processing capacity required.