Issue Details (XML | Word | Printable)

Key: LUCENE-414
Type: Bug Bug
Status: Resolved Resolved
Resolution: Duplicate
Priority: Minor Minor
Assignee: Unassigned
Reporter: Chris Lamprecht
Votes: 3
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Lucene - Java

Java NIO patch against Lucene 1.9

Created: 24/Jul/05 12:26 PM   Updated: 22/Sep/08 05:56 PM
Return to search
Component/s: Store
Affects Version/s: unspecified
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments:
  Size
Java Source File MemoryLRUCache.java 2005-07-26 10:31 PM robert engels 2 kB
Text File nio-lucene-1.9.patch 2005-07-24 12:28 PM Chris Lamprecht 11 kB
Java Source File NioFile.java 2005-07-26 10:30 PM robert engels 5 kB
Environment:
Operating System: All
Platform: All

Bugzilla Id: 35838
Resolution Date: 22/Sep/08 05:56 PM


 Description  « Hide
Robert Engels previously submitted a patch against Lucene 1.4 for a Java NIO-
based Directory implementation. It also included some changes to FSDirectory
to allow better concurrency when searching from multiple threads. The
complete thread is at:

http://mail-archives.apache.org/mod_mbox/lucene-java-dev/200505.mbox/%
3cLMENLAOACIBLMOIILNNNEEOEEPAA.rengels@ix.netcom.com%3e

This thread ended with Doug Cutting suggesting that someone port Robert's
changes to the SVN trunk. This is what I've done in this patch.

There are two parts to the patch. The first part modifies FieldsReader,
CompoundFileReader, and SegmentReader, to allow better concurrency when
reading an index. The second part includes the new NioFSDirectory
implementation, and makes small changes to FSDirectory and IndexInput to
accomodate this change. I'll put a more detailed outline of the changes to
each file in a separate message.

To use the new NioFSDirectory, set the system property
org.apache.lucene.FSDirectory.class to
org.apache.lucene.store.NioFSDirectory. This will cause
FSDirectory.getDirectory() to return an NioFSDirectory instance. By default,
NioFile limits the number of concurrent channels to 4, but you can override
this by setting the system property org.apache.lucene.nio.channels.

I did some performance tests with these patches. The biggest improvement came
from the concurrency improvements. NioFSDirectory performed about the same as
FSDirectory (with the concurrency improvements).

I ran my tests under Fedora Core 1; uname -a reports:
Linux myhost 2.4.22-1.2199.nptlsmp #1 SMP Wed Aug 4 11:48:29 EDT 2004 i686
i686 i386 GNU/Linux

The machine is a dual xeon 2.8GHz with 4GB RAM, and the tests were run against
a 9GB compound index file. The tests were run "hot" – with everything
already cached by linux's filesystem cache. The numbers are:

FSDirectory without patch: 13.3 searches per second
FSDirectory WITH concurrency patch: 14.3 searches per second

Both tests were run with 6 concurrent threads, which gave the highest numbers
in each case. I suspect that the concurrency improvements would make a bigger
difference on a more realistic test where the index isn't all cached in RAM
already, since the I/O happens whild holding the sychronized lock. Patches to
follow...

Thoughts?



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Jeff Turner made changes - 03/Sep/05 03:30 PM
Field Original Value New Value
issue.field.bugzillaimportkey 35838 12314564
Michael Busch made changes - 31/Dec/07 01:52 PM
Priority Major [ 3 ] Minor [ 4 ]
Michael McCandless made changes - 22/Sep/08 05:56 PM
Resolution Duplicate [ 3 ]
Assignee Lucene Developers [ java-dev@lucene.apache.org ]
Status Open [ 1 ] Resolved [ 5 ]