From: Peter Rabbitson Date: Tue, 10 Feb 2009 11:19:20 +0000 (+0000) Subject: More rh-bug related stuff: X-Git-Tag: v0.08011~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f3aae9865ab89d658b96e3b92b6d6c40e53335fd;p=dbsrgits%2FDBIx-Class.git More rh-bug related stuff: - Improve message emmitted when confronted with a buggy system - Port forgotten pieces from trunk to stopgap --- diff --git a/lib/DBIx/Class/Manual/Intro.pod b/lib/DBIx/Class/Manual/Intro.pod index 974efe5..1e74f9f 100644 --- a/lib/DBIx/Class/Manual/Intro.pod +++ b/lib/DBIx/Class/Manual/Intro.pod @@ -377,11 +377,9 @@ L. =head2 Problems on RHEL5/CentOS5 -There is a problem with slow performance of certain DBIx::Class operations in -perl-5.8.8-10 and later on RedHat and related systems, due to a bad backport of -a "use overload" related bug. The problem is in the Perl binary itself, not in -DBIx::Class. If your system has this problem, you will see a warning on -startup, with some options as to what to do about it. +There used to be an issue with the system perl on Red Hat Enterprise +Linux 5, some versions of Fedora and derived systems. Further +information on this can be found in L =head1 SEE ALSO diff --git a/lib/DBIx/Class/Manual/Troubleshooting.pod b/lib/DBIx/Class/Manual/Troubleshooting.pod index eaa35fe..d559fc6 100644 --- a/lib/DBIx/Class/Manual/Troubleshooting.pod +++ b/lib/DBIx/Class/Manual/Troubleshooting.pod @@ -55,5 +55,38 @@ declaration is correct, so for a schema C< MySchema > you need to specify a fully qualified namespace: C< package MySchema::MyTable; > for example. +=head2 Perl Performance Issues on Red Hat Systems + +There is a problem with slow performance of certain DBIx::Class +operations using the system perl on some Fedora and Red Hat Enterprise +Linux system (as well as their derivative distributions such as Centos, +White Box and Scientific Linux). + +Distributions affected include Fedora 5 through to Fedora 8 and RHEL5 +upto and including RHEL5 Update 2. Fedora 9 (which uses perl 5.10) has +never been affected - this is purely a perl 5.8.8 issue. + +As of September 2008 the following packages are known to be fixed and so +free of this performance issue (this means all Fedora and RHEL5 systems +with full current updates will not be subject to this problem):- + + Fedora 8 - perl-5.8.8-41.fc8 + RHEL5 - perl-5.8.8-15.el5_2.1 + +The issue is due to perl doing an exhaustive search of blessed objects +under certain circumstances. The problem shows up as performance +degredation exponential to the number of L row objects in +memory, so can be unoticeable with certain data sets, but with huge +performance impacts on other datasets. + +A pair of tests for susceptability to the issue, and performance effects +of the bless/overload problem can be found in the L test +suite in the file C + +Further information on this issue can be found in +L, +L and +L + =cut diff --git a/t/99rh_perl_perf_bug.t b/t/99rh_perl_perf_bug.t index 4b275fb..8bed2d7 100644 --- a/t/99rh_perl_perf_bug.t +++ b/t/99rh_perl_perf_bug.t @@ -61,11 +61,15 @@ my $ratio = $results->{no_bless}->iters / $results->{bless_overload}->iters; ok( ( $ratio < 2 ), 'Overload/bless performance acceptable' ) || diag( + "\n", "This perl has a substantial slow down when handling large numbers\n", "of blessed/overloaded objects. This can severely adversely affect\n", "the performance of DBIx::Class programs. Please read the section\n", "in the Troubleshooting POD documentation entitled\n", "'Perl Performance Issues on Red Hat Systems'\n", + "As this is an extremely serious condition, the only way to skip\n", + "over this test is to --force the installation, or to edit the test\n", + "file " . __FILE__ . "\n", ); # We will only check for the difference in bless handling (whether the @@ -106,8 +110,12 @@ SKIP: { ok( !_possibly_has_bad_overload_performance(), 'Checking whether bless applies to reference not object' ) || diag( + "\n", "This perl is probably derived from a buggy Red Hat perl build\n", "Please read the section in the Troubleshooting POD documentation\n", "entitled 'Perl Performance Issues on Red Hat Systems'\n", + "As this is an extremely serious condition, the only way to skip\n", + "over this test is to --force the installation, or to edit the test\n", + "file " . __FILE__ . "\n", ); }