This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author barry
Recipients barry
Date 2011-03-25.22:30:47
SpamBayes Score 1.110223e-16
Marked as misclassified No
Message-id <1301092248.42.0.811586375377.issue11677@psf.upfronthosting.co.za>
In-reply-to
Content
When your home directory is on a Linux (e.g. Ubuntu 10.10) ecryptfs, 'make test' and company can be horrendously slow.  Of course, some performance hit should be expected, but depending on which combinations of tests I've run, I can see up to 25000x (!) slower on an ecryptfs than on a normal ext4 file system.

regrtest.py changes its cwd to a TEMPDIR, but actually when you're running the tests from inside the Python build directory, this just becomes $srcdir/build so you don't get any advantage of running the tests out of e.g. a much faster tmpfs.

(Aside: I'm not sure under what cases you would *not* be normally running out of the build dir, but I guess if you 'cd /tmp; /path/to/python/configure' and such, it would put you in a normal temp directory.  OTOH, you're already in a tmpdir by then so what's the point of _make_temp_dir_for_build()?)

I'd like to at least provide the option to create regrtest temporary files elsewhere so that they can live on a fast file system.  There are several ways I can think of doing this and I'm not sure what the best way is:

* Remove the special case from _make_temp_dir_for_build() so that it always sets TESTCWD into a tmpdir.

* Add a boolean option --usetmp/-p which enables this override or the moral equivalent.

* Make TESTFN relative to mkdtemp().  A quick and dirty test of this showed that it did significantly improve test times, but there were test failures too.  

I'm open to other ideas, but I really do want to be able to ./configure && ake && make testall in an ecryptfs build dir and get reasonable test times.

You'll need an atexit handler or similar to clean up the tempdir.

This does affect older Pythons, but probably any solution would be classified as a new feature so could only go in Python 3.3.
History
Date User Action Args
2011-03-25 22:30:48barrysetrecipients: + barry
2011-03-25 22:30:48barrysetmessageid: <1301092248.42.0.811586375377.issue11677@psf.upfronthosting.co.za>
2011-03-25 22:30:47barrylinkissue11677 messages
2011-03-25 22:30:47barrycreate