Hmm.  well, I don't think this test is very meaningful.  If the machines
    have 256M of ram and the test is doing a two-swipe access of 256M of VM.
    This doesn't represent any real test and I would not be surprised by
    the difference in timing.  

    It all comes down to how much real memory Linux and FreeBSD give to the
    process and there is no right answer to the question because it's a
    tradeoff.  An OS does not magically know that only one process will
    ever need all of the machine's resources, for example, so different
    operating systems are going to have very different characteristics under
    these sorts of conditions.  One might give over more memory, another
    might want to avoid completely blowing away its other caches.  One might
    work well for linux in a one-process memory test could fail miserably
    in a multi-process memory test, for example, or with a different pattern
    of memory accesses, or a different load split between cpu, memory,
    and disk I/O.

    You (Dimitar and others) also need to be careful about making broad
    generalizations.  Testing pure swapping performance with the below
    program implies that you intend to run applications that will need to
    swap heavily (for example, big mathmatical applications).  If you don't
    intend to run applications that will need to swap heavily then this
    test is fairly meaningless as a measure of performance.

    Another point that I should bring up in regards to swap performance:
    systems that require good swap performance will almost always have
    more then one physical disk to swap to.   FreeBSD is very good at
    paging to swap with a single disk, but it kicks ass paging to swap
    with multiple disks because it implements a very good interleaving
    algorithm.

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

:Am I the only one who saw that he attached it to his 1st mail?
:
:Here you go:
:
:#include <stdlib.h>
:#include <string.h>
:#include <stdio.h>
:
:#define MALLOC_SIZE 1024*1024*256
:
:int main(int argc, char **argv) {
:   char *ptr;
:   int i, i_count;
:   int j;
:
:   ptr = (char *) malloc(MALLOC_SIZE);
:   bzero(ptr, MALLOC_SIZE);
:
:   i_count = MALLOC_SIZE / 16;
:   fprintf(stderr, "*");
:   for (i = 0; i < i_count; i ++) {
:       ptr[i >> 4] = ptr[(i >> 3) + 1]++;
:   }
:   fprintf(stderr, "#");
:   for (j = 0; j < i_count; j ++) {
:       ptr[j << 4] = ptr[(j >> 3) + 1]++;
:   }
:
:   free(ptr);
:   return 0;
:}

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to