[m-rev.] For review: Change the Boehm collector to report on collection time.
Quan Phan
Quan.Phan at cs.kuleuven.be
Wed Mar 12 19:04:38 AEDT 2008
Quoting Zoltan Somogyi <zs at csse.unimelb.edu.au>:
On 06-Mar-2008, Quan Phan <quan.phan at cs.kuleuven.be> wrote:
> Normally by setting the GC_PRINT_STATS environment variable to a
> value different from 0, the Boehm collector will print out some statistics
> of its behaviour each time it is invoked. I modified it a bit so that it
> reports on the total time spent on garbage collection.
>
> boehm_gc/alloc.c:
> Accumulate the collection time into a global variable. I took the
> calls to GET_TIME out of the if statements so that we can always
> report on collection time with report_stats predicate. I tested it
> with some programs and it seemed not affect the overall performance.
I looked at the code, and since GET_TIME expands to a system call
(getrusage),
it can lead to a nontrivial slowdown. I therefore think that this change
needs to be modified to record the time taken for gc only if the user asks
for it.
Unless you object, I will modify the diff tomorrow to accomplish this.
Don't commit the parts of the diff related this.
There is no objection (at least from me). Please go ahead with the necessary
changes.
> Index: runtime/mercury_region.h
> ===================================================================
> RCS file:
/home/mercury/mercury1/repository/mercury/runtime/mercury_region.h,v
> retrieving revision 1.11
> diff -u -r1.11 mercury_region.h
> --- runtime/mercury_region.h 23 Jan 2008 11:44:48 -0000 1.11
> +++ runtime/mercury_region.h 6 Mar 2008 13:58:27 -0000
> @@ -37,7 +37,7 @@
>
> /* XXX This should be made configurable when compiling a program. */
> #define MR_REGION_NUM_PAGES_TO_REQUEST 100
> -#define MR_REGION_PAGE_SPACE_SIZE 255
> +#define MR_REGION_PAGE_SPACE_SIZE 2048
This looks like a bug: MR_REGION_PAGE_SPACE_SIZE should have a value
that makes the size of struct MR_RegionPage_Struct a power of 2. With
this definition, it won't be, because of the MR_regionpage_next field.
The line you want is
#define MR_REGION_PAGE_SPACE_SIZE 2047
You are right, if possible, please include your fix to the new diff.
Regards,
Quan.
Zoltan.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list