Opened 6 years ago

Closed 2 years ago

#764 closed defect (fixed)

qp_scale1 intermittently fails on 64-core POWER9 workstation

Reported by: A. Wilcox Owned by: Olly Betts
Priority: normal Milestone: 1.4.15
Component: Test Suite Version: 1.4.6
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Operating System: Linux

Description

Five runs on my 3.9 GHz, 64-core POWER9 workstation yield two passes, and various failures on the other three runs:

awilcox on gwyn [pts/2 Mon 16 3:12] tests: ./runtest ./apitest -v qp_scale1
Running tests with backend "none"...
Running tests with backend "inmemory"...
Running tests with backend "glass"...
Running test: qp_scale1... ok
./apitest backend glass: All 1 tests passed.
Running tests with backend "singlefile_glass"...
Running tests with backend "multi_glass"...
Running test: qp_scale1... ok
./apitest backend multi_glass: All 1 tests passed.
Running tests with backend "remoteprog_glass"...
Running tests with backend "remotetcp_glass"...
Running tests with backend "chert"...
Running test: qp_scale1... ok
./apitest backend chert: All 1 tests passed.
Running tests with backend "multi_chert"...
Running test: qp_scale1... ok
./apitest backend multi_chert: All 1 tests passed.
Running tests with backend "remoteprog_chert"...
Running tests with backend "remotetcp_chert"...
./apitest total: All 4 tests passed.
awilcox on gwyn [pts/2 Mon 16 3:12] tests: ./runtest ./apitest -v qp_scale1
Running tests with backend "none"...
Running tests with backend "inmemory"...
Running tests with backend "glass"...
Running test: qp_scale1... ok
./apitest backend glass: All 1 tests passed.
Running tests with backend "singlefile_glass"...
Running tests with backend "multi_glass"...
Running test: qp_scale1... ok
./apitest backend multi_glass: All 1 tests passed.
Running tests with backend "remoteprog_glass"...
Running tests with backend "remotetcp_glass"...
Running tests with backend "chert"...
Running test: qp_scale1... ok
./apitest backend chert: All 1 tests passed.
Running tests with backend "multi_chert"...
Running test: qp_scale1... FAILED
small=0.011864s, large=0.01s
small=0.019998s, large=0.049996s
api_queryparser.cc:2639: (time2) < (time1 * 2.15)
Evaluates to: 0.049996 < 0.0429957


./apitest backend multi_chert: 0 tests passed, 1 failed.
Running tests with backend "remoteprog_chert"...
Running tests with backend "remotetcp_chert"...
./apitest total: 3 tests passed, 1 failed.
awilcox on gwyn [pts/2 Mon 16 3:12] tests: ./runtest ./apitest -v qp_scale1
Running tests with backend "none"...
Running tests with backend "inmemory"...
Running tests with backend "glass"...
Running test: qp_scale1... ok
./apitest backend glass: All 1 tests passed.
Running tests with backend "singlefile_glass"...
Running tests with backend "multi_glass"...
Running test: qp_scale1... FAILED
small=0.003992s, large=0.019981s
api_queryparser.cc:2639: (time2) < (time1 * 2.15)
Evaluates to: 0.019981 < 0.0085828


./apitest backend multi_glass: 0 tests passed, 1 failed.
Running tests with backend "remoteprog_glass"...
Running tests with backend "remotetcp_glass"...
Running tests with backend "chert"...
Running test: qp_scale1... ok
./apitest backend chert: All 1 tests passed.
Running tests with backend "multi_chert"...
Running test: qp_scale1... FAILED
small=0.00814s, large=0.029998s
api_queryparser.cc:2639: (time2) < (time1 * 2.15)
Evaluates to: 0.029998 < 0.017501


./apitest backend multi_chert: 0 tests passed, 1 failed.
Running tests with backend "remoteprog_chert"...
Running tests with backend "remotetcp_chert"...
./apitest total: 2 tests passed, 2 failed.
awilcox on gwyn [pts/2 Mon 16 3:12] tests: ./runtest ./apitest -v qp_scale1
Running tests with backend "none"...
Running tests with backend "inmemory"...
Running tests with backend "glass"...
Running test: qp_scale1... ok
./apitest backend glass: All 1 tests passed.
Running tests with backend "singlefile_glass"...
Running tests with backend "multi_glass"...
Running test: qp_scale1... FAILED
small=0.007257s, large=0.019999s
api_queryparser.cc:2639: (time2) < (time1 * 2.15)
Evaluates to: 0.019999 < 0.0156026


./apitest backend multi_glass: 0 tests passed, 1 failed.
Running tests with backend "remoteprog_glass"...
Running tests with backend "remotetcp_glass"...
Running tests with backend "chert"...
Running test: qp_scale1... ok
./apitest backend chert: All 1 tests passed.
Running tests with backend "multi_chert"...
Running test: qp_scale1... ok
./apitest backend multi_chert: All 1 tests passed.
Running tests with backend "remoteprog_chert"...
Running tests with backend "remotetcp_chert"...
./apitest total: 3 tests passed, 1 failed.
awilcox on gwyn [pts/2 Mon 16 3:12] tests: ./runtest ./apitest -v qp_scale1
Running tests with backend "none"...
Running tests with backend "inmemory"...
Running tests with backend "glass"...
Running test: qp_scale1... ok
./apitest backend glass: All 1 tests passed.
Running tests with backend "singlefile_glass"...
Running tests with backend "multi_glass"...
Running test: qp_scale1... ok
./apitest backend multi_glass: All 1 tests passed.
Running tests with backend "remoteprog_glass"...
Running tests with backend "remotetcp_glass"...
Running tests with backend "chert"...
Running test: qp_scale1... ok
./apitest backend chert: All 1 tests passed.
Running tests with backend "multi_chert"...
Running test: qp_scale1... ok
./apitest backend multi_chert: All 1 tests passed.
Running tests with backend "remoteprog_chert"...
Running tests with backend "remotetcp_chert"...
./apitest total: All 4 tests passed.

I'm not sure how best to handle this. It seems that our package builder crunches through this test so fast that kernel scheduler deltas throw it off.

Change History (4)

comment:1 by A. Wilcox, 6 years ago

Summary: qp_scale1 intermittantly fails on 64-core POWER9 workstationqp_scale1 intermittently fails on 64-core POWER9 workstation

comment:2 by Olly Betts, 6 years ago

I'm not sure why you're seeing this test be quite so flaky, but such timed tests of scaling are hard to make 100% robust in the face of uneven loads, etc so if you're running the testsuite as part of an automated build, you really want to set environment variable AUTOMATED_TESTING=1 which will cause all such timed tests to be skipped.

comment:3 by Olly Betts, 5 years ago

I've made some changes which may improve this, though for me it only fails very very rarely so I can't be very sure. These should be in 1.4.15 (once it is release):

Feedback on whether these changes help would be useful.

If this testcase remains a bit flaky perhaps we should change it to test the scaling behaviour for the current "large" case as the number of repeated copies of the input query string grows (which is more like how our other scaling testcases work) - currently it compares parsing one copy N*M times with parsing N copies M times.

comment:4 by Olly Betts, 2 years ago

Milestone: 1.4.15
Resolution: fixed
Status: newclosed

No feedback for more than 2 years, so assuming the changes I made have addressed this and will close. If you're still seeing this please reopen.

PackagingXapian documents the recommendation to set AUTOMATED_TESTING in package builds.

Note: See TracTickets for help on using tickets.