You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Paul Elschot <pa...@xs4all.nl> on 2004/09/30 21:45:35 UTC

Using MMapDirectory fails TestCompoundFile; MMapDirectory for huge indexes

On Wednesday 29 September 2004 00:00, Doug Cutting wrote:
> cutting@apache.org wrote:
> >   Added:       src/java/org/apache/lucene/store MMapDirectory.java
> >   Log:
> >   Add an nio mmap based Directory implementation.
>
> For my simple benchmarks this is somewhat slower than the classic
> FSDirectory, but I thought it was still worth having.  It should use
> less memory when there are lots of query terms, since it does not need
> to allocate a new buffer per term and the mmapped data can be shared.
> This may be good for folks who, e.g., use lots of wildcards.  It also
> should, in theory, someday be faster.  One downside is that it cannot
> handle indexes with files larger than 2^31 bytes.
>

I'm working on a memory mapped directory that uses multiple buffers
for large files.

While trying some test runs I found that the current version fails a test:

    [junit] Testsuite: org.apache.lucene.index.TestCompoundFile
    [junit] Tests run: 9, Failures: 1, Errors: 0, Time elapsed: 4.238 sec

    [junit] Testcase: testClonedStreamsClosing(org.apache.lucene.index.TestCompoundFile):	FAILED
    [junit] null
    [junit] junit.framework.AssertionFailedError
    [junit] 	at org.apache.lucene.index.TestCompoundFile.testClonedStreamsClosing(TestCompoundFile.java:368)
    [junit] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [junit] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [junit] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

As indicated in the source I have added a System property to the jvm
to use MMapDirectory with this is line 261 in build.xml for the junit
tests:
      <jvmarg value="-Dorg.apache.lucene.FSDirectory.class=org.apache.lucene.store.MMapDirectory"/>

I'm testing the version with multiple buffers using a smaller maximum
buffer size (1024 * 128), and it does this test in the same way.
I have not yet looked into TestCompoundFile. When it is a good test
case for this, I'll submit the multibuffer version as an enhancement.

Regards,
Paul Elschot.



---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-dev-help@jakarta.apache.org


Re: Using MMapDirectory fails TestCompoundFile; MMapDirectory for huge indexes

Posted by Paul Elschot <pa...@xs4all.nl>.
On Friday 01 October 2004 22:16, Doug Cutting wrote:
> Paul Elschot wrote:
> > I'm working on a memory mapped directory that uses multiple buffers
> > for large files.
>
> Great!
>
> There will be a small performance hit, as each call to readByte() will
> need to first check whether it's overflowed the current buffer, right?

Yes. I just simplified that test to a counter equals zero.
That counter also is decremented by readByte().

> > While trying some test runs I found that the current version fails a
> > test:
> >
> >     [junit] Testsuite: org.apache.lucene.index.TestCompoundFile
>
> Thanks for testing this!

Errr, TestCompoundFile turns out to be quite extensive, so I'll share that 
with Dmitry.

>
> > I'm testing the version with multiple buffers using a smaller maximum
> > buffer size (1024 * 128), and it does this test in the same way.
>
> You mean it fails too?

Yes, it behaves in the same way. It also passes the remaining tests
from TestCompoundFile for a smaller maximum buffer size.

> > I have not yet looked into TestCompoundFile. When it is a good test
> > case for this, I'll submit the multibuffer version as an enhancement.
>
> Thanks, that would be great.

A new version of MMapDirectory is on it's way with
a few comments on possible performance improvements.

Regards,
Paul Elschot



---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-dev-help@jakarta.apache.org


Re: Using MMapDirectory fails TestCompoundFile; MMapDirectory for huge indexes

Posted by Doug Cutting <cu...@apache.org>.
Paul Elschot wrote:
> I'm working on a memory mapped directory that uses multiple buffers
> for large files.

Great!

There will be a small performance hit, as each call to readByte() will 
need to first check whether it's overflowed the current buffer, right?

> While trying some test runs I found that the current version fails a test:
> 
>     [junit] Testsuite: org.apache.lucene.index.TestCompoundFile

Thanks for testing this!

> I'm testing the version with multiple buffers using a smaller maximum
> buffer size (1024 * 128), and it does this test in the same way.

You mean it fails too?

> I have not yet looked into TestCompoundFile. When it is a good test
> case for this, I'll submit the multibuffer version as an enhancement.

Thanks, that would be great.

Doug

---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-dev-help@jakarta.apache.org