RE: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-06 Thread Geoffrey Young



> -Original Message-
> From: Ken Miller [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, June 06, 2000 12:13 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [benchmark] DBI/preload (was Re: [RFC] improving memory
> mapping thru code exercising)
> 
> 
> At 11:10 AM 6/6/00 -0400, Geoffrey Young wrote:
> >
> >
> >> -Original Message-
> >> From: Jason Terry [mailto:[EMAIL PROTECTED]]
> >> Sent: Tuesday, June 06, 2000 10:52 AM
> >> To: [EMAIL PROTECTED]
> >> Subject: Re: [benchmark] DBI/preload (was Re: [RFC] 
> improving memory
> >> mapping thru code exercising)
> >> 
> >> 
> >> I just wanted to thank you guys for sending this to the 
> mailing list.
> >> 
> >> I added these lines to my startup script
> >> use Carp;
> >> CGI->compile(qw(my_common_functions));
> >> DBI->install_driver('mysql');
> 
> I tried this in my startup.pl with Oracle, and this is what I got:
> 
> DBI handle cleared whilst still active at

this typically means that you have opened a cursor and the $dbh has gone out
of scope before calling $sth->finish

are you doing other stuff in your startup.pl?

> /home/cardlock/lib/perl5/site_perl/5.005/sun4-solaris/DBD/Orac
> le.pm line 82.
> dbih_clearcom (h 0x54f978, com 0x3319e8):
>FLAGS 0x211: COMSET Warn AutoCommit 
>TYPE 1
>PARENT undef
>KIDS 0 (0 active)
>IMP_DATA undef in 'DBD::Oracle::dr'
> 
> I tried both 
> 
>   use DBD::Oracle

I use() DBD::Oracle as above in my startup.pl, but I don't see any
warnings...

> 
> and
> 
>   DBI->install_driver( 'Oracle' );

I don't have any experience with this method...

> 
> with the same results. It didn't seem to cause any problems, since
> everything still worked.
> 
> Something to worry about?

generally no, but since lots of people use() DBD::* in the startup files, it
doesn't sound normal

--GEoff


> 
> 
> Cheers!
> 
>   -klm.
> 
> ---
> Ken Miller, Consultant
> Shetland Software Services Inc.
> 



RE: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-06 Thread Ken Miller

At 11:10 AM 6/6/00 -0400, Geoffrey Young wrote:
>
>
>> -Original Message-
>> From: Jason Terry [mailto:[EMAIL PROTECTED]]
>> Sent: Tuesday, June 06, 2000 10:52 AM
>> To: [EMAIL PROTECTED]
>> Subject: Re: [benchmark] DBI/preload (was Re: [RFC] improving memory
>> mapping thru code exercising)
>> 
>> 
>> I just wanted to thank you guys for sending this to the mailing list.
>> 
>> I added these lines to my startup script
>> use Carp;
>> CGI->compile(qw(my_common_functions));
>> DBI->install_driver('mysql');

I tried this in my startup.pl with Oracle, and this is what I got:

DBI handle cleared whilst still active at
/home/cardlock/lib/perl5/site_perl/5.005/sun4-solaris/DBD/Oracle.pm line 82.
dbih_clearcom (h 0x54f978, com 0x3319e8):
   FLAGS 0x211: COMSET Warn AutoCommit 
   TYPE 1
   PARENT undef
   KIDS 0 (0 active)
   IMP_DATA undef in 'DBD::Oracle::dr'

I tried both 

use DBD::Oracle

and

DBI->install_driver( 'Oracle' );

with the same results. It didn't seem to cause any problems, since
everything still worked.

Something to worry about?


Cheers!

-klm.

---
Ken Miller, Consultant
Shetland Software Services Inc.




RE: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-06 Thread Geoffrey Young



> -Original Message-
> From: Jason Terry [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, June 06, 2000 10:52 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [benchmark] DBI/preload (was Re: [RFC] improving memory
> mapping thru code exercising)
> 
> 
> I just wanted to thank you guys for sending this to the mailing list.
> 
> I added these lines to my startup script
> use Carp;
> CGI->compile(qw(my_common_functions));
> DBI->install_driver('mysql');
> 
> Please note that these were already existing in my startup script.
> use CGI();
> use DBI();
> 
> And after testing, and running the server with the new 
> settings all night long, it seems that I am saving ~2M of RAM 
> for each apache
> process.  Again thank you.
> 
> However, this has made me curious, and left me wondering...   
> I have 3 scripts that I pre-load in my startup file, would any of my
> self-made modules, or other CPAN modules, benefit from 
> including directly in the startup script... as opposed to 
> being loaded only
> in the pre-loaded scripts themselves?

yes - you should preload any modules you plan to use frequently in your
startup.pl so that the code can be shared among the child processes.

see
http://perl.apache.org/guide/config.html#What_Modules_You_Should_Add_to_t
ff for additional specifics...

HTH

--Geoff

> 
> Again, thank you for this thread it has saved me 20-80M of 
> RAM depending on my current load.
> -Jason
> 
> - Original Message -
> From: "Stas Bekman" <[EMAIL PROTECTED]>
> To: "Tim Bunce" <[EMAIL PROTECTED]>
> Cc: "mod_perl list" <[EMAIL PROTECTED]>
> Sent: Sunday, June 04, 2000 1:50 PM
> Subject: Re: [benchmark] DBI/preload (was Re: [RFC] improving 
> memory mapping thru code exercising)
> 
> 
> > On Sun, 4 Jun 2000, Tim Bunce wrote:
> >
> > > On Sat, Jun 03, 2000 at 02:49:47AM +0300, Stas Bekman wrote:
> > > > On Fri, 2 Jun 2000, Perrin Harkins wrote:
> > > >
> > > > > On Sat, 3 Jun 2000, Stas Bekman wrote:
> > > > > > * install_driver  (2):
> > > > > >   DBI->install_driver("mysql");
> > > > >
> > > > > I've never seen that before,
> > > >
> > > > There is always a first time :)
> > > >
> > > > > and it isn't in the DBI perldoc.
> > > >
> > > > Where do you think I've found it :) It is mentioned in 
> DBI manpage:
> > > >
> > > >DBI->connect automatically installs the driver if it
> > > >has not been installed yet. Driver 
> installation always
> > > >returns a valid driver handle or it dies 
> with an error
> > > >message which includes the string 
> 'install_driver' and
> > > >the underlying problem. So, DBI->connect 
> will die on a
> > > >driver installation failure and will only 
> return undef
> > > >on a connect failure, for which $DBI::errstr 
> will hold
> > > >the error.
> > >
> > > I've been meaning to document it properly for the last couple of
> > > years, since I knew people were using it for mod_perl.
> >
> > I guess most of the mod_perl folks don't use it, since they don't
> > know about it. I have discovered it following the Vivek's reply.
> >
> > > > but actualy it's the DBD:: method.
> > >
> > > Nope. A DBI->method.
> >
> > Ok
> >
> > > > > Is it safer than "use DBD::mysql;"?
> > > >
> > > > "safer" is the wrong question. It's always used by DBI, 
> but when you call
> > > > it at the server startup you get a few more K shared, 
> compared with only
> > > > preloading of DBD::mysql.
> > >
> > > Yes, and the semantics of install_driver are that it'll 
> die if the driver
> > > can't be installed, just like 'use'.
> > >
> > > >  Apache::DBI->connect_on_init('DBI:mysql:test::localhost', [...]
> > > >  or DBI->disconnect("Cannot connect to database: 
> $DBI::errstr\n");
> > >
> > > There's no such method as DBI->disconnect.
> >
> > Ouch, you are right. But the first part has never failed 
> for me, so I copy
> > and paste this old error for years :) Thanks for telling me!
> >
> > 
> _
> > Stas Bekman  JAm_pH --   Just Another 
> mod_perl Hacker
> > http://stason.org/   mod_perl Guide  
http://perl.apache.org/guide
> mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
> http://singlesheaven.com http://perlmonth.com http://sourcegarden.org



Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-06 Thread Jason Terry

I just wanted to thank you guys for sending this to the mailing list.

I added these lines to my startup script
use Carp;
CGI->compile(qw(my_common_functions));
DBI->install_driver('mysql');

Please note that these were already existing in my startup script.
use CGI();
use DBI();

And after testing, and running the server with the new settings all night long, it 
seems that I am saving ~2M of RAM for each apache
process.  Again thank you.

However, this has made me curious, and left me wondering...   I have 3 scripts that I 
pre-load in my startup file, would any of my
self-made modules, or other CPAN modules, benefit from including directly in the 
startup script... as opposed to being loaded only
in the pre-loaded scripts themselves?

Again, thank you for this thread it has saved me 20-80M of RAM depending on my current 
load.
-Jason

- Original Message -
From: "Stas Bekman" <[EMAIL PROTECTED]>
To: "Tim Bunce" <[EMAIL PROTECTED]>
Cc: "mod_perl list" <[EMAIL PROTECTED]>
Sent: Sunday, June 04, 2000 1:50 PM
Subject: Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code 
exercising)


> On Sun, 4 Jun 2000, Tim Bunce wrote:
>
> > On Sat, Jun 03, 2000 at 02:49:47AM +0300, Stas Bekman wrote:
> > > On Fri, 2 Jun 2000, Perrin Harkins wrote:
> > >
> > > > On Sat, 3 Jun 2000, Stas Bekman wrote:
> > > > > * install_driver  (2):
> > > > >   DBI->install_driver("mysql");
> > > >
> > > > I've never seen that before,
> > >
> > > There is always a first time :)
> > >
> > > > and it isn't in the DBI perldoc.
> > >
> > > Where do you think I've found it :) It is mentioned in DBI manpage:
> > >
> > >DBI->connect automatically installs the driver if it
> > >has not been installed yet. Driver installation always
> > >returns a valid driver handle or it dies with an error
> > >message which includes the string 'install_driver' and
> > >the underlying problem. So, DBI->connect will die on a
> > >driver installation failure and will only return undef
> > >on a connect failure, for which $DBI::errstr will hold
> > >the error.
> >
> > I've been meaning to document it properly for the last couple of
> > years, since I knew people were using it for mod_perl.
>
> I guess most of the mod_perl folks don't use it, since they don't
> know about it. I have discovered it following the Vivek's reply.
>
> > > but actualy it's the DBD:: method.
> >
> > Nope. A DBI->method.
>
> Ok
>
> > > > Is it safer than "use DBD::mysql;"?
> > >
> > > "safer" is the wrong question. It's always used by DBI, but when you call
> > > it at the server startup you get a few more K shared, compared with only
> > > preloading of DBD::mysql.
> >
> > Yes, and the semantics of install_driver are that it'll die if the driver
> > can't be installed, just like 'use'.
> >
> > >  Apache::DBI->connect_on_init('DBI:mysql:test::localhost', [...]
> > >  or DBI->disconnect("Cannot connect to database: $DBI::errstr\n");
> >
> > There's no such method as DBI->disconnect.
>
> Ouch, you are right. But the first part has never failed for me, so I copy
> and paste this old error for years :) Thanks for telling me!
>
> _
> Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
> http://stason.org/   mod_perl Guide  http://perl.apache.org/guide
> mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
> http://singlesheaven.com http://perlmonth.com http://sourcegarden.org




Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-05 Thread Stas Bekman

On Mon, 5 Jun 2000, Vivek Khera wrote:

> > "PH" == Perrin Harkins <[EMAIL PROTECTED]> writes:
> 
> PH> On Sat, 3 Jun 2000, Stas Bekman wrote:
> >> * install_driver  (2):
> DBI-> install_driver("mysql");
> 
> PH> I've never seen that before, and it isn't in the DBI perldoc.  Is it safer
> PH> than "use DBD::mysql;"?
> 
> "use DBD::mysql" doesn't really do anything, does it?

Only preloads (compiles) the module. See the benchmark.

_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
http://singlesheaven.com http://perlmonth.com http://sourcegarden.org




Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-04 Thread Stas Bekman

On Sun, 4 Jun 2000, Tim Bunce wrote:

> On Sat, Jun 03, 2000 at 02:49:47AM +0300, Stas Bekman wrote:
> > On Fri, 2 Jun 2000, Perrin Harkins wrote:
> > 
> > > On Sat, 3 Jun 2000, Stas Bekman wrote:
> > > > * install_driver  (2):
> > > >   DBI->install_driver("mysql");
> > > 
> > > I've never seen that before, 
> > 
> > There is always a first time :)
> > 
> > > and it isn't in the DBI perldoc.  
> > 
> > Where do you think I've found it :) It is mentioned in DBI manpage:
> > 
> >DBI->connect automatically installs the driver if it
> >has not been installed yet. Driver installation always
> >returns a valid driver handle or it dies with an error
> >message which includes the string 'install_driver' and
> >the underlying problem. So, DBI->connect will die on a
> >driver installation failure and will only return undef
> >on a connect failure, for which $DBI::errstr will hold
> >the error.
> 
> I've been meaning to document it properly for the last couple of
> years, since I knew people were using it for mod_perl.

I guess most of the mod_perl folks don't use it, since they don't
know about it. I have discovered it following the Vivek's reply.

> > but actualy it's the DBD:: method.
> 
> Nope. A DBI->method.

Ok

> > > Is it safer than "use DBD::mysql;"? 
> > 
> > "safer" is the wrong question. It's always used by DBI, but when you call
> > it at the server startup you get a few more K shared, compared with only
> > preloading of DBD::mysql.
> 
> Yes, and the semantics of install_driver are that it'll die if the driver
> can't be installed, just like 'use'.
> 
> >  Apache::DBI->connect_on_init('DBI:mysql:test::localhost', [...]
> >  or DBI->disconnect("Cannot connect to database: $DBI::errstr\n");   
> 
> There's no such method as DBI->disconnect.

Ouch, you are right. But the first part has never failed for me, so I copy
and paste this old error for years :) Thanks for telling me!

_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
http://singlesheaven.com http://perlmonth.com http://sourcegarden.org




Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-04 Thread Tim Bunce

On Sat, Jun 03, 2000 at 02:49:47AM +0300, Stas Bekman wrote:
> On Fri, 2 Jun 2000, Perrin Harkins wrote:
> 
> > On Sat, 3 Jun 2000, Stas Bekman wrote:
> > > * install_driver  (2):
> > >   DBI->install_driver("mysql");
> > 
> > I've never seen that before, 
> 
> There is always a first time :)
> 
> > and it isn't in the DBI perldoc.  
> 
> Where do you think I've found it :) It is mentioned in DBI manpage:
> 
>DBI->connect automatically installs the driver if it
>has not been installed yet. Driver installation always
>returns a valid driver handle or it dies with an error
>message which includes the string 'install_driver' and
>the underlying problem. So, DBI->connect will die on a
>driver installation failure and will only return undef
>on a connect failure, for which $DBI::errstr will hold
>the error.

I've been meaning to document it properly for the last couple of
years, since I knew people were using it for mod_perl.

> but actualy it's the DBD:: method.

Nope. A DBI->method.

> > Is it safer than "use DBD::mysql;"? 
> 
> "safer" is the wrong question. It's always used by DBI, but when you call
> it at the server startup you get a few more K shared, compared with only
> preloading of DBD::mysql.

Yes, and the semantics of install_driver are that it'll die if the driver
can't be installed, just like 'use'.

>  Apache::DBI->connect_on_init('DBI:mysql:test::localhost', [...]
>  or DBI->disconnect("Cannot connect to database: $DBI::errstr\n");   

There's no such method as DBI->disconnect.

Tim.



Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-02 Thread Stas Bekman

> but actualy it's the DBD:: method. No matter what, you get more shared
> memory with it, see the updated table: 
> 
>   Version Size   SharedDiff Test type
>   
> 1  3469312  2609152   860160  install_driver
> 2  3481600  2605056   876544  install_driver & connect_on_init
> 3  3469312  2576384   892928  preload driver
> 4  3477504  2482176   995328  nothing added
> 5  3481600  2469888  1011712  connect_on_init

correction for the 3rd version (had the wrong startup), but it's almost
the same.

  Version Size   SharedDiff Test type
  
1  3469312  2609152   860160  install_driver
2  3481600  2605056   876544  install_driver & connect_on_init
3  3469312  2588672   880640  preload driver
4  3477504  2482176   995328  nothing added
5  3481600  2469888  1011712  connect_on_init



_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
http://singlesheaven.com http://perlmonth.com http://sourcegarden.org




Re: [benchmark] DBI/preload (was Re: [RFC] improving memory mapping thru code exercising)

2000-06-02 Thread Stas Bekman

On Fri, 2 Jun 2000, Perrin Harkins wrote:

> On Sat, 3 Jun 2000, Stas Bekman wrote:
> > * install_driver  (2):
> >   DBI->install_driver("mysql");
> 
> I've never seen that before, 

There is always a first time :)

> and it isn't in the DBI perldoc.  

Where do you think I've found it :) It is mentioned in DBI manpage:

   DBI->connect automatically installs the driver if it
   has not been installed yet. Driver installation always
   returns a valid driver handle or it dies with an error
   message which includes the string 'install_driver' and
   the underlying problem. So, DBI->connect will die on a
   driver installation failure and will only return undef
   on a connect failure, for which $DBI::errstr will hold
   the error.

but actualy it's the DBD:: method. No matter what, you get more shared
memory with it, see the updated table: 

  Version Size   SharedDiff Test type
  
1  3469312  2609152   860160  install_driver
2  3481600  2605056   876544  install_driver & connect_on_init
3  3469312  2576384   892928  load driver
4  3477504  2482176   995328  nothing added
5  3481600  2469888  1011712  connect_on_init

> Is it safer than "use DBD::mysql;"? 

"safer" is the wrong question. It's always used by DBI, but when you call
it at the server startup you get a few more K shared, compared with only
preloading of DBD::mysql.

_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://perl.org http://stason.org/TULARC
http://singlesheaven.com http://perlmonth.com http://sourcegarden.org