[ 
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: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to