Sjoerd,

this checkin seems to fix the following tests, while not harming any others
(on my 64-bit Fedora 10 desktop):

MonetDB4/src/gdk/malloc_mmap_priv.milS
MonetDB4/src/modules/plain/bat.py

sql/src/test/BugTracker-2009/union_leak.SF-2540169.SQL.sh

Stefan

On Thu, Aug 13, 2009 at 02:41:08PM +0000, Sjoerd Mullender wrote:
> Update of /cvsroot/monetdb/MonetDB/src/gdk
> In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv31891
> 
> Modified Files:
>       Tag: Aug2009
>       gdk_heap.mx 
> Log Message:
> Experimental checkin.
> 
> Memory maps come in two flavors: normal and private
> (a.k.a. copy-on-write).  The former are more efficient when saving
> since less data needs to be copied, but they can be a pain when
> dealing with pre-existing heaps, since then a backup needs to be made
> before starting to update the data.
> 
> When switching from malloced to memory mapped allocation in a heap, we
> now see whether the heap file already existed, and if so, we use a
> private memory map (as before), but if the file did not exist, we now
> use a normal memory map.  We don't need to make a backup first,
> because there is no pre-existing data to backup, so this should work.
> 
> The result of this change is that loading data into fresh bats should
> be quicker.  Since the new heaps are now "normal" memory maps, less
> copying takes place when the data is saved.  A quick test suggests
> that this is indeed the case: the loading part of the 15M Periscope
> test took longer than the timeout (1800 seconds) allowed without this
> change, but was finished in about 1000 seconds with the change.
> 
> Tonight's testing will hopefully show whether this idea does indeed
> work.
> 
> 
> U gdk_heap.mx
> Index: gdk_heap.mx
> ===================================================================
> RCS file: /cvsroot/monetdb/MonetDB/src/gdk/gdk_heap.mx,v
> retrieving revision 1.125
> retrieving revision 1.125.2.1
> diff -u -d -r1.125 -r1.125.2.1
> --- gdk_heap.mx       25 Jul 2009 21:51:40 -0000      1.125
> +++ gdk_heap.mx       13 Aug 2009 14:41:05 -0000      1.125.2.1
> @@ -206,13 +206,26 @@
>               }
>               /* too big: convert it to a disk-based temporary heap */
>               if (can_mmap) {
> -                     FILE *fp = GDKfilelocate(nme, "wb", ext);
> +                     FILE *fp;
>                       char *of = h->filename;
> +                     int existing = 0;
> +
> +                     /* if the heap file already exists, we want to
> +                        switch to STORE_PRIV (copy-on-write memory
> +                        mapped files), but if the heap file doesn't
> +                        exist yet, the BAT is new and we can use
> +                        STORE_MMAP */
> +                     fp = GDKfilelocate(nme, "rb", ext);
> +                     if (fp != NULL) {
> +                             existing = 1;
> +                             fclose(fp);
> +                     }
>                       h->filename = NULL;
> +                     fp = GDKfilelocate(nme, "wb", ext);
>                       if (fp != NULL) {
>                               fclose(fp);
>                               if (h->storage == STORE_MEM) {
> -                                     int newmode = (h->newstorage != 
> STORE_MMAP)?h->newstorage:STORE_PRIV;
> +                                     int newmode = h->newstorage == 
> STORE_MMAP && existing ? STORE_PRIV : h->newstorage;
>                                       /* make sure we realy MMAP */
>                                       if (must_mmap && h->newstorage == 
> STORE_MEM)
>                                               newmode = STORE_MMAP;
> 
> 
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
> trial. Simplify your report design, integration and deployment - and focus on 
> what you do best, core application coding. Discover what's new with 
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Monetdb-checkins mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
> 
> 
> 
> 
> 

-- 
| Dr. Stefan Manegold | mailto:[email protected] |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4312       |

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers

Reply via email to