We have search (no update) web app on 2 dual core CPU machine (2x Dual Core AMD Opteron(tm) Processor 280) with 8G of RAM. Lucene 2.0 is used. My index is optimized and non compound, 9G holding 6.5 M documents. Search includes term queries, range filters and sorts.
When I use single IndexSearcher and search with multiple threads CPU are partially idle. To have 100% CPU utilization I have to create several IndexSearchers. With org.apache.lucene.store.MMapDirectory throughput is better but I still have to create multiple IndexSearcher instances to have 100% CPU utilization. With multiple IndexSearchers search times are better under multithreaded load. Following is average search times (in ms) for different number of parallel threads and IndexSearchers: concurrent 1 searcher 5 searchers 10 searchers threads 1 180 177 167 2 201 184 174 4 241 197 188 5 339 236 220 10 663 454 420 20 1172 917 880 50 2599 2143 1912 100 4887 4056 3775 Maximum search times for smaller number of searchers differ in 2-3 times. Search is CPU bound (no IO wait is observed). Is there any way to better utilize the server other than create several IndexSearchers? I need to squeeze as much performance as possible out of the machine as we have strict performance requirements. -- View this message in context: http://www.nabble.com/IndexSearcher-on-multi-core-CPU-machine-tf3249889.html#a9034207 Sent from the Lucene - Java Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]