Re: reducing isolation tests runtime
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>, Andres Freund <andres@anarazel.de>, pgsql-hackers@postgresql.org
Date: 2018-01-25T14:37:26Z
Lists: pgsql-hackers
Tom Lane wrote: > Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > > On the subject of test total time, we could paralelize isolation tests. > > Right now "make check" in src/test/isolation takes 1:16 on my machine. > > Test "timeouts" takes full 40s of that, with nothing running in parallel > > -- the machine is completely idle. > > BTW, one small issue there is that the reason the timeouts test is so > slow is that we have to use multi-second timeouts to be sure slower > buildfarm critters (eg valgrind animals) will get the expected results. > So I'm worried that if the machine isn't otherwise idle, we will get > random failures. I think we could solve this by putting in the same parallel group only slow tests that mostly sleeps, ie. nothing that would monopolize CPU for long enough to cause a problem. Concretely: test: timeouts tuplelock-update deadlock-hard deadlock-soft-2 all of these tests have lots of sleeps and don't go through a lot of data. (Compared to the previous patch, I removed alter-table-1, which uses a thousand tuples, and multiple-row-versions, which uses 100k; also removed receipt-report which uses a large number of permutations.) Timings: timeouts 40.3s tuplelock-update 10.5s deadlock-hard 10.9s deadlock-soft-2 5.4s alter-table-1 takes 1.5s, receipt-report 1.2s and there's nothing else that takes above 1s, so I think this is good enough -- we can still have the whole thing run in ~45 seconds without the hazard you describe. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Update obsolete sentence in README.parallel.
- 28e04155f17c 11.0 cited
-
Rewrite ConditionVariableBroadcast() to avoid live-lock.
- aced5a92bf46 11.0 cited
-
Tweak parallel hash join test case in hopes of improving stability.
- 934c7986f4a0 11.0 landed
-
Rename pg_rewind's copy_file_range() to avoid conflict with new linux syscall.
- 3e68686e2c55 11.0 cited
-
Fix some minor errors in new PHJ code.
- 6fcde2406304 11.0 landed
-
Fix EXPLAIN ANALYZE output for Parallel Hash.
- 93ea78b17c47 11.0 landed
-
Fix rare assertion failure in parallel hash join.
- f83040c62a78 11.0 landed
-
Cancel CV sleep during subtransaction abort.
- f3decdc94ea3 10.2 landed
- 59d1e2b95a82 11.0 landed
-
Add parallel-aware hash joins.
- 1804284042e6 11.0 cited
-
Fix EXPLAIN ANALYZE of hash join when the leader doesn't participate.
- 5bcf389ecfd4 11.0 cited
-
Add some regression tests that exercise hash join code.
- fa330f9adf4e 11.0 cited