[ 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