We're doing some mysql benchmarking.  For some reason it seems that ide
drives are currently beating a scsi raid array and it seems to be related
to fsync's.  Bonnie stats show the scsi array to blow away ide as
expected, but mysql tests still have the idea beating on plain insert
speeds.  Can anyone explain how this is possible, or perhaps explain how
our testing may be flawed?

Here's the bonnie stats:

IDE Drive:

Version 1.00g       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
jeremy         300M  9026  94 17524  12  8173   9  7269  83 23678   7 102.9   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16   469  98  1476  98 16855  89   459  98  7132  99   688  25


SCSI Array:

Version 1.00g       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
orville        300M  8433 100 134143  99 127982  99  8016 100 374457  99 1583.4   6
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16   503  13 +++++ +++   538  13   490  13 +++++ +++   428  11

So...obviously from bonnie stats, the scsi array blows away the ide...but
using the attached c program, here's what we get for fsync stats using the
little c program I've attached:

IDE Drive:

jeremy:~# time ./xlog file.out fsync

real    0m1.850s
user    0m0.000s
sys     0m0.220s

SCSI Array:

[root@orville mysql_data]# time /root/xlog file.out fsync

real    0m23.586s
user    0m0.010s
sys     0m0.110s


I would appreciate any help understand what I'm seeing here and any
suggestions on how to improve the performance.

The SCSI adapter on the raid array is an Adaptec 39160, the raid
controller is a CMD-7040.  Kernel 2.4.0 using XFS for the filesystem on
the raid array, kernel 2.2.18 on ext2 on the IDE drive.  The filesystem is
not the problem, as I get almost the exact same results running this on
ext2 on the raid array.

Thanks
-jeremy

-- 
this is my sig.






#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

struct Entry
{
        int count;
        char string[50];
};


int main(int argc, char **argv)
{
        int fd;
        struct Entry *trans;
        int x;

        if((fd = creat(argv[1], 0666)) == -1)
        {
                printf("Could not open file %s\n", argv[1]);
                return 1;
        }
        

        for(x=0; x < 2000; ++x)
        {
                trans = malloc(sizeof(struct Entry));
                trans->count = x;
                strcpy(trans->string, "Blah Blah Blah Blah Blah Blah Blah");

                if(strcmp(argv[2],"fsync")== 0)
                {
                        write(fd, (char *)trans, sizeof(struct Entry));
                        
                        if(fdatasync(fd) != 0)
                        {
                                perror("Error");
                        }

                }
                else
                {
                        write(fd, (char *)trans, sizeof(struct Entry));
                }
        
                free(trans);

        }
        close(fd);

}

Reply via email to