Date: Mon, 03 Mar 2008 15:23:33 -0500 From: gnn@freebsd.org To: current@freebsd.org Subject: Differences in malloc between 6 and 7? Message-ID: <7ifxv7pnei.wl%gnn@neville-neil.com> References: <677e3b3e0802280915x3f29e79cqe6093b5d7bfba975@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Multipart_Mon_Mar__3_15:23:33_2008-1
Content-Type: text/plain; charset=US-ASCII
Hi,
One of the folks I'm working with found this. The following code,
which yes, is just an example, is 1/2 as fast on 7.0-RELEASE as on
6.3. Where should I look to find out why?
Best,
George
--Multipart_Mon_Mar__3_15:23:33_2008-1
Content-Type: message/rfc822
culprit continues to be arena_run_malloc, which takes several times longer
on fbsd7 than the total of all calls to *alloc* on fbsd6.
Output of uname -a:
FreeBSD testlab5 7.0-STABLE FreeBSD 7.0-STABLE #1: Thu Feb 28 10:06:47 EST
2008 root@builder:/usr/obj/usr/sources/FreeBSD.7/src/sys/GENERIC amd64
Program source:
// simple test program that shows fbsd7 memory operations 2x slower than
fbsd6
// compile with:
// g++ -o memory.o -c -O3 -Wall memory.cc
// g++ -o memory memory.o -O3 -L/usr/local/lib
class MemUser {
public:
void nTimesInOrder(int n) { for (int i=0; i<n; ++i) { alloc();
freeInOrder(); } }
void alloc();
void freeInOrder();
void freeRandom();
private:
char* p;
char* ptrs[16384];
int psize;
};
void MemUser::alloc()
{
int n = 0;
// for now, allocating 1000 times at each size. Sizes are 2, 20, 200,
2000, 20k, 200k bytes
for (int size=2; size <= 2e5; size *= 10) {
for (int i=0; i<1000; ++i) {
p = new char [size];
ptrs[n++] = p;
}
}
psize = n;
}
void MemUser::freeInOrder()
{
for (int i=0; i < psize; ++i) {
delete [] ptrs[i];
}
}
int main(int argc, char* argv[])
{
MemUser mu;
mu.nTimesInOrder(5000);
}
--Multipart_Mon_Mar__3_15:23:33_2008-1--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7ifxv7pnei.wl%gnn>
