lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erick Erickson <erickerick...@gmail.com>
Subject Re: (LUCENE-1844) Speed up junit tests
Date Fri, 27 Nov 2009 15:52:56 GMT
But then I got to thinking..... I admit I've only scratched the
surface of the JUnit4 parallelization stuff. That said, it
seems like the real benefit comes from making use of
multiple cores, we don't get huge speedups just from
running multiple threads at once on a single core. Which
makes sense if you're not doing much in the way of I/O.

This notion was inspired by the "scary Python script"
comment.....

So what if we use Ant ForEach construct instead? Yet
again this is a fuzzy idea I'm throwing out without much
to back it up. Mostly I'm wondering if anyone's thought about
it before or can shoot it down before it takes wing. Or if
it is worth exploring.

Assuming we structure our test directories so there are only
directories at the root of the test area, could we persuade Ant
to fire off the tests N directories at a time in parallel?
N would default to 1 but could be passed in to the task, something
like -DmaxThreads=4. ForEach actually has a maxThreads
parameter..... In fact, we wouldn't even need to have only directories
at the test root, but the individual test files at the root would probably
be inefficiently run.

I suspect that keeping the test directories in balance would be
much less work that trying to parallelize using JUnit4, and be
much less fraught with gremlins. This assumes we get
sufficient isolation by Ant running separate threads, about
which I have absolutely NO information. Like I said, mostly
I'm wondering if anybody's gone down this path before and
has wisdom to offer.

Which *still* doesn't mean we shouldn't do whatever we can
to speed up individual tests, but looking that the timings there's
no obvious low-hanging fruit....

I wonder if we could somehow run the various directories in
time order, longest-to-shortest in the hope that all the threads
would finish up "close enough" to the same time. I haven't
thought about *how* to make this happen yet though....

Anyway, I'll be happy to pursue this if y'all think it has merit,
let me know and I'll open a JIRA and take it on. For the
benefit of those aforementioned *real* people with *real*
machines, who I'll rely upon to help test this notion....

Is the poor-mans version of this on a dual-core machine
just running "test-core" and "test-contrib" in two separate
windows?

Best
Erick

On Thu, Nov 26, 2009 at 10:38 AM, Erick Erickson <erickerickson@gmail.com>wrote:

> Despite my long rambling, I agree that speeding things up is worthwhile.
> Just
> not a huge deal for some of us poor peons who are on dinky little 2-core
> machines and feel inadequate even *talking* to people who have *real*
> machines <G>...
>
> Time to go get ready to eat Turkey....
>
> Erick
>
>
> On Thu, Nov 26, 2009 at 9:02 AM, Mark Miller <markrmiller@gmail.com>wrote:
>
>>  right - as soon as you have to start running the tests often enough, any
>> decent savings turns into less waiting and more work. Waiting for tests to
>> run is time that could be better spent elsewhere. And many of us runthe
>> tests *a lot* considering how long they take. And we will only keep adding
>> more and will continue to do so.
>>
>> Also, many of us *are* on multicore and should be able to benifit from it.
>> I don't dev on anything less than 4 cores these days. It's a life changer :)
>> and cheap currently. I'd like 8.
>>
>> - Mark
>>
>> http://www.lucidimagination.com (mobile)
>>
>>
>> On Nov 26, 2009, at 5:24 AM, Michael McCandless <
>> lucene@mikemccandless.com> wrote:
>>
>>  I still think there's value to faster tests, even if they don't become
>>> so fast as to enable "fully interactive testing".
>>>
>>> Plus, this is an ongoing goal with time, not a one-time event.  As we
>>> create tests we should generally try to maximize coverage and minimize
>>> CPU cost, as long as the effort is smallish.
>>>
>>> Mike
>>>
>>> On Wed, Nov 25, 2009 at 9:32 PM, Erick Erickson <erickerickson@gmail.com>
>>> wrote:
>>>
>>>> I posted a rather long diatribe outlining why I think speed-ups
>>>> are a false goal for Lucene. Briefly, I'm convinced that as long
>>>> as the tests are run when Hudson builds Lucene, 99% of the
>>>> value of unit tests is realized. I suppose this implies that the
>>>> hard-core committers agree that as long as failed tests
>>>> are caught/corrected within a day things are fine.
>>>>
>>>> Although coming from a background where unit
>>>> tests are not always required, my viewpoint may be
>>>> suspect <G>.
>>>>
>>>> Erick@NotToBeConfusedWithHatcher.com....
>>>>
>>>> On Wed, Nov 25, 2009 at 8:43 PM, Michael McCandless (JIRA)
>>>> <jira@apache.org>wrote:
>>>>
>>>>
>>>>>   [
>>>>>
>>>>> https://issues.apache.org/jira/browse/LUCENE-1844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782716#action_12782716
>>>>> ]
>>>>>
>>>>> Michael McCandless commented on LUCENE-1844:
>>>>> --------------------------------------------
>>>>>
>>>>> Will we also speed up back-compat tests?
>>>>>
>>>>>  Speed up junit tests
>>>>>> --------------------
>>>>>>
>>>>>>                Key: LUCENE-1844
>>>>>>                URL: https://issues.apache.org/jira/browse/LUCENE-1844
>>>>>>            Project: Lucene - Java
>>>>>>         Issue Type: Improvement
>>>>>>           Reporter: Mark Miller
>>>>>>        Attachments: FastCnstScoreQTest.patch,
>>>>>>
>>>>> hi_junit_test_runtimes.png, LUCENE-1844.patch
>>>>>
>>>>>>
>>>>>>
>>>>>> As Lucene grows, so does the number of JUnit tests. This is obviously
>>>>>> a
>>>>>>
>>>>> good thing, but it comes with longer and longer test times. Now that
we
>>>>> also
>>>>> run back compat tests in a standard test run, this problem is
>>>>> essentially
>>>>> doubled.
>>>>>
>>>>>> There are some ways this may get better, including running parallel
>>>>>>
>>>>> tests. You will need the hardware to fully take advantage, but it
>>>>> should be
>>>>> a nice gain. There is already an issue for this, and Junit 4.6, 4.7
>>>>> have the
>>>>> beginnings of something we might be able to count on soon. 4.6 was
>>>>> buggy,
>>>>> and 4.7 still doesn't come with nice ant integration. Parallel tests
>>>>> will
>>>>> come though.
>>>>>
>>>>>> Beyond parallel testing, I think we also need to concentrate on
>>>>>> keeping
>>>>>>
>>>>> our tests lean. We don't want to sacrifice coverage or quality, but I'm
>>>>> sure
>>>>> there is plenty of fat to skim.
>>>>>
>>>>>> I've started making a list of some of the longer tests - I think
with
>>>>>>
>>>>> some work we can make our tests much faster - and then with
>>>>> parallelization,
>>>>> I think we could see some really great gains.
>>>>>
>>>>> --
>>>>> This message is automatically generated by JIRA.
>>>>> -
>>>>> You can reply to this email to add a comment to the issue online.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
>>>>> For additional commands, e-mail: java-dev-help@lucene.apache.org
>>>>>
>>>>>
>>>>>
>>>> I posted a rather long diatribe outlining why I think speed-ups
>>>> are a false goal for Lucene. Briefly, I'm convinced that as long
>>>> as the tests are run when Hudson builds Lucene, 99% of the
>>>> value of unit tests is realized. I suppose this implies that the
>>>> hard-core committers agree that as long as failed tests
>>>> are caught/corrected within a day things are fine.
>>>>
>>>> Although coming from a background where unit
>>>> tests are not always required, my viewpoint may be
>>>> suspect <G>.
>>>>
>>>> Erick@NotToBeConfusedWithHatcher.com....
>>>>
>>>> On Wed, Nov 25, 2009 at 8:43 PM, Michael McCandless (JIRA) <
>>>> jira@apache.org> wrote:
>>>>
>>>>>
>>>>>   [
>>>>> https://issues.apache.org/jira/browse/LUCENE-1844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782716#action_12782716
>>>>>  ]
>>>>>
>>>>> Michael McCandless commented on LUCENE-1844:
>>>>> --------------------------------------------
>>>>>
>>>>> Will we also speed up back-compat tests?
>>>>>
>>>>>  Speed up junit tests
>>>>>> --------------------
>>>>>>
>>>>>>                Key: LUCENE-1844
>>>>>>                URL: https://issues.apache.org/jira/browse/LUCENE-1844
>>>>>>            Project: Lucene - Java
>>>>>>         Issue Type: Improvement
>>>>>>           Reporter: Mark Miller
>>>>>>        Attachments: FastCnstScoreQTest.patch,
>>>>>> hi_junit_test_runtimes.png, LUCENE-1844.patch
>>>>>>
>>>>>>
>>>>>> As Lucene grows, so does the number of JUnit tests. This is obviously
>>>>>> a good thing, but it comes with longer and longer test times. Now
that we
>>>>>> also run back compat tests in a standard test run, this problem is
>>>>>> essentially doubled.
>>>>>> There are some ways this may get better, including running parallel
>>>>>> tests. You will need the hardware to fully take advantage, but it
should be
>>>>>> a nice gain. There is already an issue for this, and Junit 4.6, 4.7
have the
>>>>>> beginnings of something we might be able to count on soon. 4.6 was
buggy,
>>>>>> and 4.7 still doesn't come with nice ant integration. Parallel tests
will
>>>>>> come though.
>>>>>> Beyond parallel testing, I think we also need to concentrate on
>>>>>> keeping our tests lean. We don't want to sacrifice coverage or quality,
but
>>>>>> I'm sure there is plenty of fat to skim.
>>>>>> I've started making a list of some of the longer tests - I think
with
>>>>>> some work we can make our tests much faster - and then with parallelization,
>>>>>> I think we could see some really great gains.
>>>>>>
>>>>>
>>>>> --
>>>>> This message is automatically generated by JIRA.
>>>>> -
>>>>> You can reply to this email to add a comment to the issue online.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
>>>>> For additional commands, e-mail: java-dev-help@lucene.apache.org
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
>>> For additional commands, e-mail: java-dev-help@lucene.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-dev-help@lucene.apache.org
>>
>>
>

Mime
View raw message