[
https://issues.apache.org/jira/browse/SOLR-13350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17850405#comment-17850405
]
Christine Poerschke commented on SOLR-13350:
--------------------------------------------
Hello. I'd like to share some results from experiments with a subset of this
ticket's changes when benchmarking dense vector search.
Having noticed that {{AbstractKnnVectorQuery.rewrite}} has parallelism and that
Solr's {{SolrIndexSearcher}} constructor did not yet pass an executor to its
super class i.e. Lucene's {{IndexSearcher}} I was curious if picking out only
the "pass an executor" part of the changes in this ticket would be beneficial.
Links for Solr 9.4.1 using Lucene 9.8.0 version:
*
[https://github.com/apache/lucene/blob/releases/lucene/9.8.0/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java#L83-L87]
*
[https://github.com/apache/lucene/blob/releases/lucene/9.8.0/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java#L235]
Links for Solr 9.5.0 using Lucene 9.9.2 version:
*
[https://github.com/apache/lucene/blob/releases/lucene/9.9.2/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java#L82-L88]
*
[https://github.com/apache/lucene/blob/releases/lucene/9.9.2/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java#L233-L234]
The links are for 9.4.1 and 9.5.0 versions for convenience and to reflect
initial code reading and subsequent experimental code base.
Overall the results could be summarised as "unexpected" or "surprising" –
passing an executor increased latency by around 20x with a reduction in
container CPU use to approximately match that. The thread count used seemed to
make no difference, we've tried a few different ones.
The "just pass an executor" patch was onto a Solr 9.5 cloud, and I haven't
really dived into the details much, but I'm wondering if the implications for
this ticket here might be that searches passing {{multiThreaded=false}} could
be impacted because currently nothing controls the passing of the executor to
Lucene's {{IndexSearcher}} constructor.
(And last but not least, a shoutout to [~abenedetti] because his
[comment|https://lists.apache.org/thread/xc174z8qnls3o0by644n3fbtt28po7lc] on
[this|https://lists.apache.org/thread/0olh0z2dc78y01k34yg06yrpzts2ggmp] user
mailing list thread really encouraged me to take the time to write-up and share
these results here.)
> Explore collector managers for multi-threaded search
> ----------------------------------------------------
>
> Key: SOLR-13350
> URL: https://issues.apache.org/jira/browse/SOLR-13350
> Project: Solr
> Issue Type: New Feature
> Reporter: Ishan Chattopadhyaya
> Assignee: Ishan Chattopadhyaya
> Priority: Major
> Attachments: SOLR-13350.patch, SOLR-13350.patch, SOLR-13350.patch
>
> Time Spent: 11.5h
> Remaining Estimate: 0h
>
> AFAICT, SolrIndexSearcher can be used only to search all the segments of an
> index in series. However, using CollectorManagers, segments can be searched
> concurrently and result in reduced latency. Opening this issue to explore the
> effectiveness of using CollectorManagers in SolrIndexSearcher from latency
> and throughput perspective.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]