[prev in list] [next in list] [prev in thread] [next in thread]
List: apache-modperl
Subject: Re: mod_perl shared memory with MM
From: Joshua Chamas <joshua () chamas ! com>
Date: 2001-02-28 16:25:47
[Download RAW message or body]
Adi Fairbank wrote:
>
> I am trying to squeeze more performance out of my persistent session cache. In
> my application, the Storable image size of my sessions can grow upwards of
> 100-200K. It can take on the order of 200ms for Storable to deserialize and
> serialize this on my (lousy) hardware.
>
Its a different approach, but I use simple MLDBM + SDBM_File
when possible, as its really fast for small records, but it has
that 1024 byte limit per record! I am releasing a wrapper
to CPAN ( on its way now ) called MLDBM::Sync that handles
concurrent locking & i/o flushing for you. One advantage
of this approach is that your session state will persist
through a server reboot if its written to disk.
I also wrote a wrapper for SDBM_File called MLDBM::Sync::SDBM_File
that overcomes the 1024 byte limit per record. The below
numbers were for a benchmark on my dual PIII 450, linux 2.2.14,
SCSI raid-1 ext2 fs mounted async. The benchmark can be found
in the MLDBM::Sync package in the bench directory once it makes
it to CPAN.
With MLDBM ( perldoc MLDBM ) you can use Storable or
XS Data::Dumper method for serialization as well as
various DBMs.
--Josh
=== INSERT OF 50 BYTE RECORDS ===
Time for 100 write/read's for SDBM_File 0.12 seconds 12288 bytes
Time for 100 write/read's for MLDBM::Sync::SDBM_File 0.14 seconds 12288 bytes
Time for 100 write/read's for GDBM_File 2.07 seconds 18066 bytes
Time for 100 write/read's for DB_File 2.48 seconds 20480 bytes
=== INSERT OF 500 BYTE RECORDS ===
Time for 100 write/read's for SDBM_File 0.21 seconds 658432 bytes
Time for 100 write/read's for MLDBM::Sync::SDBM_File 0.51 seconds 135168 bytes
Time for 100 write/read's for GDBM_File 2.29 seconds 63472 bytes
Time for 100 write/read's for DB_File 2.44 seconds 114688 bytes
=== INSERT OF 5000 BYTE RECORDS ===
(skipping test for SDBM_File 1024 byte limit)
Time for 100 write/read's for MLDBM::Sync::SDBM_File 1.30 seconds 2101248 bytes
Time for 100 write/read's for GDBM_File 2.55 seconds 832400 bytes
Time for 100 write/read's for DB_File 3.27 seconds 839680 bytes
=== INSERT OF 20000 BYTE RECORDS ===
(skipping test for SDBM_File 1024 byte limit)
Time for 100 write/read's for MLDBM::Sync::SDBM_File 4.54 seconds 13162496 bytes
Time for 100 write/read's for GDBM_File 5.39 seconds 2063912 bytes
Time for 100 write/read's for DB_File 4.79 seconds 2068480 bytes
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic