Differences in malloc between 6 and 7?

From: <gnn_at_freebsd.org>
Date: Mon, 03 Mar 2008 15:23:33 -0500
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


attached mail follows:


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_at_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);
}
Received on Mon Mar 03 2008 - 19:24:05 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:28 UTC