Subject: Re: Performance Problem: malloc() is calling madvise()
To: Bill Dorsey <firstname.lastname@example.org>
From: David Brownlee <email@example.com>
Date: 05/19/2000 12:40:05
(Reply-to set to current-users as netbsd-ports is for porting to
What happens if you set MALLOC_OPTIONS to 'h' in the environment
with the new libc?
-- www.netbsd.org: No hype required --
On Fri, 19 May 2000, Bill Dorsey wrote:
> I upgraded to the 20000505 snapshot yesterday (1.4Y) and noticed
> a serious performance loss when running one of my programs.
> The program I was running is a number-crunching program that
> uses malloc() pretty heavily (via the C++ new function).
> Between the 1.4.2_Alpha release I was running and the 1.4Y
> release I upgraded to, the program slowed down by a factor
> of 4 on my Personal Workstation!!!
> Looking at top, I had my first clue as to what the problem
> was. It was showing about 33% of the CPU time being spent
> running my program and 66% of the time in the system. I
> proceeded to run a ktrace on the program and was rewarded
> with data at the rate of more than 1 megabyte per second
> being written to ktrace.out!
> After stopping the ktrace, I ran kdump to see what was going
> on. The madvise() system call was being called millions of
> times per second from what I could see.
> Investigating further, I discovered that madvise() is called
> by malloc in libc.so. When I switched the libc.so with an
> older version (from 1.4.2_Alpha), the performance returned to
> If this hasn't been fixed in -current, I'd be pleased if someone
> would look into it. I don't understand why you'd want to make
> a system call in malloc() anyway given the obvious performance
> implications so I assume this is in error.
> In the meantime, I have noticed no ill effects from replacing
> the libc.so file with the older one from 1.4.2_Alpha and I'll
> continue to do so until this is addressed.
> Bill Dorsey