Updated comment #15. The original summary was very different, see https://drupal.org/node/2123073/revisions/6822963/view/
Currently the general search configuration page at admin/config/search/settings includes an indexing throttle option. Confusingly, this is used by the NodeSearch plugin, but not by the UserSearch plugin as there is no index for users. Even if multiple search plugins do need an indexing throttle (e.g. for a contrib plugin), it is likely that the throttle will need to be set per-plugin, as different content types will index at different speeds.
Note: There is not a simple mapping between a search plugin, a search index and a search page. It is perfectly possible for a site to use, for example, 2 search plugins, 3 search indexes and 4 search pages. This is because some plugins don't require any index, some can share an index with other plugins of the same type, and others need their own index.
Proposed implementation 1
Proposed by jhodgon in #12
Configure separately for each defined NodeSearch page. The NodeSearch::updateIndex() method will be called once per defined NodeSearch page.
We do want to have the search cron setting be per-page though so you can say "each cron run I want this page to index this many nodes" -- and really what will happen is that the total for all pages will be indexed since each NodeSearch page will just grab the next few nodes to do.
Easiest to implement
Clearly linked to the content being indexed - not even shown if you don't have any NodeSearch pages configured.
Confusing UX: If you have two node search pages configured, and can afford to index 100 nodes per cron run, then you should set each search page to index 50 nodes. If you then disable on of the search pages and don't update the other, your indexing rate will halve.
Performance: There are some summarising operation performed after indexing. This would be performed once per search page per cron run, rather than just once per cron run.
There is no obvious reason why different instances of NodeSearch would index at different speeds.
Proposed implementation 2
Move the setting to the NodeSearch edit page, but share the same value across all NodeSearch pages. This is similar to Content type (node) configuration, where some Field settings apply everywhere that Field is used, but others only apply to the current content type.
When multiple plugins of the same type are configured, this will need to ensure that updateIndex() either only gets called once per cron run for NodeSearch (and other plugins that use a single index) or returns immediately if it is called multiple times.
Clearly linked to the content being indexed.
Still a slightly confusing UX, because the same setting can be configured in multiple places.
Proposed implementation 3
Keep the indexing throttle setting on the main search configuration page, but extend it so that it can take different values for each index. If you had two user searches, two node searches and two widget searches (which require separate indexes), then the form might look as follows:
Number of content items to index per cron run [ 100 ]
Number of widgets to index per cron run for search page foo [ 20 ]
Number of widgets to index per cron run for search page bar [ 20 ]
User search does not require an index.
Clearly communicates what will happen on each cron run.
Most complicated implementation. Will presumably require each search plugin to define whether it needs a unique, shared or no index.
Clutters up the main settings page.
Separates the settings from the page-specific settings.