Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Feb 2011 23:18:19 -0800
From:      Jose Amengual <jose.amengual@gmail.com>
To:        dieterbsd@engineer.com
Cc:        freebsd-hardware@freebsd.org
Subject:   Re: Addonics SIS3124 Controller and T
Message-ID:  <2041CDFF-99EA-4D58-BC17-AF847A17ABF6@gmail.com>
In-Reply-To: <8CD96D1A47516BC-11A8-283B@web-mmc-d01.sysops.aol.com>
References:  <8CD96D1A47516BC-11A8-283B@web-mmc-d01.sysops.aol.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 2011-02-09, at 4:36 PM, dieterbsd@engineer.com wrote:

> Jose Amengual writes:
>> Strangely enough just switching drives now I can see all ten, weird
>> but is working now.
>=20
> Perhaps there was a loose connection or something.

I think so=20
>=20
>> I'm confused why you are referring to a JMB393s if my card has a
>> siis3124 chip....or are you referring o the PMs?
>=20
> If I'm reading
> http://www.addonics.com/products/raid_tower/raid_rack.asp
> correctly, it comes with 4 SATA Port Multipliers based on
> the JMB393 chip.

I see....
>=20
> Do you get something like
>=20
>  PM Product ID: 37261095

I will check
>=20
> in dmesg?  I just got a PM based on the Sil3726.  So far so good.
> I've been running some simple speed tests on it and various
> controllers.  If you and your machine have a few minutes to spare,
> I'd love to see similar numbers for the siis3124 controller and the
> JMB393 PM.
>=20
> First I ran one disk at a time:
>=20
> nforce4-ultra controller  chipset  ata(4)
>  ad4  249.404517 MB/s
>  ad6  250.143419 MB/s
>  ad8  239.214086 MB/s
>  ad10 249.628334 MB/s
>=20
> SiI 3132  PCIe-x1  siis(4)
>  ada0 127.737664 MB/s
>  ada1 110.236024 MB/s
>  ada2 110.210423 MB/s
>=20
> JMB363  PCIe-x1  ahci(4)
>  ada3 131.443644 MB/s
>  Sil3726 Port Multiplier
>    ada4 130.895997 MB/s
>    ada5 130.259701 MB/s
>    ada6 132.400908 MB/s
>    ada7 114.306864 MB/s
>    ada8 130.986963 MB/s
>=20
> I need to rerun the tests (machine is busy right now) and see if the
> results are consistant.  Some of the differences may be due to the
> different make & model drives.
>=20
> 2 disks at once - port multiplier drives ada4, ada5
>  48.034694 MB/s and 48.034701 MB/s
>  Total: 96.069395 MB/s
>=20
> 2 disks at once - same card (jmb363) ada3 direct connection, ada5 via =
PM
>  86.059754 MB/s and 85.664682 MB/s
>  Total: 171.724436 MB/s
>=20
> 3 disks at once - port multiplier drives ada4, ada5, ada6
>  31.728884 MB/s, 31.727878 MB/s, and 31.727715 MB/s
>  Total: 95.184477 MB/s
>=20
> 4 disks at once - port multiplier drives ada4, ada5, ada6, ada8
> 23.657665 MB/s  23.657404 MB/s   23.657416 MB/s  23.657436 MB/s
> Total: 94.629921 MB/s
>=20
> 5 port multiplier disks at once
> 18.660235 MB/s  18.659920 MB/s  18.659928 MB/s  18.659925 MB/s
> 18.665027 MB/s
> 5 port multiplier disks at once plus the other port of the jmb363
> 105.348778 MB/s  17.821848 MB/s  17.821214 MB/s  17.821113 MB/s
> 17.821120 MB/s  17.821458 MB/s
> PM total (5 drives):    89.106753 MB/s
> Card total (6 drives): 194.455531 MB/s
>=20
> Neither the 3132 nor the 363 controllers can max out the PCIe-x1 link
> (250 MB/s each direction).  Previous testing indicates that both
> achive a higher total with one disk reading and the other writing.
> (not sure why)  Port multipliers may be the same, I haven't had time
> to test that case yet.  I also want to test the PM with the 3132.
>=20
> Silicon Image SATA controllers are not the fastest.  The JMB363 is
> faster than the 3132, so I wonder if the JMB393 port multiplier is
> faster than the Sil3726?   I've read that the 3124 controller is
> fast, the question is how fast?
>=20
> Below is the small C program I used.  It just reads a small amount
> of data over and over again from the drive's RAM cache.  This avoids
> limitations of data density on the platters, rpm, seek time, etc.
>=20
>=20
I check the raid controler and it doesn't have anything to enable any =
level of caching but I have a Supermicro sata controller with cache =
memory and and Intel chip that I will use for some testings.
> /*
> * read_disk_cache_speed.c
> *
> * Read data from a disk's RAM cache buffer.
> * Useful for testing the speed of controllers and port multipliers
> * without the limitation of how fast the disk can read data from the
> * platters.  Note that the drive's electronics could still be the
> * limiting factor.
> *
> * Syntax: read_disk_cache_speed device readsize iterations
> *         FreeBSD:
> *           read_disk_cache_speed /dev/ada0 65536 10000
> *         NetBSD:
> *           read_disk_cache_speed /dev/rwd0c 65536 10000
> *
> * Original program was by:
> *          Manuel Bouyer <bouyer@antioche.eu.org>
> *          NetBSD: 26 ans d'experience feront toujours la difference
> * Updated by:
> *          Dieter <dieterbsd@engineer.com>
> *          Added command line argument for buffer/read size.
> *          (originally hard coded at 64 KiB)
> *          Read data into drive's RAM buffer before beginning timing.
> *
> */
>=20
> #include <fcntl.h>
> #include <unistd.h>
> #include <sys/time.h>
> #include <stdio.h>
> #include <stdlib.h>
>=20
> int
> main(int argc, char **argv)
> {
>  int fd;                    /* file descriptor */
>  int i;                     /* loop counter */
>  struct timeval tv0, tv1;
>  long t;                     /* elapsed time */
>  char *buffer;
>  long buffer_size;
>=20
>  if ( argc !=3D 4 )
>    {
>      fprintf(stderr, "Syntax:  %s device readsize iterations\n",
>              argv[0]);
>      fprintf(stderr, "Example: %s /dev/ada4 65536 10000\n", argv[0]);
>      exit(1);
>    }
>=20
>  buffer_size =3D atoi(argv[2]);
>  buffer =3D malloc(buffer_size);
>  if ( buffer =3D=3D NULL )
>    {
>      perror("malloc failed");
>      exit(1);
>    }
>=20
>  fd =3D open(argv[1], O_RDONLY, 0);
>  if (fd < 0)
>    {
>      perror("open failed");
>      exit(1);
>    }
>  /* Get the data from the platter into the drive's RAM buffer
>   * before we start timing.
>   */
>  if (read(fd, (void *)buffer, buffer_size) !=3D buffer_size)
>    {
>      perror("read failed");
>      exit(1);
>    }
>  if (lseek(fd, 0, SEEK_SET) < 0)
>    {
>      perror("lseek failed");
>      exit(1);
>    }
>=20
>  if (gettimeofday(&tv0, NULL) < 0)
>    {
>      perror("gettimeofday failed");
>      exit(1);
>    }
>  for (i =3D 0; i < atoi(argv[3]); i++)
>    {
>      if (read(fd, (void *)buffer, buffer_size) !=3D buffer_size)
>        {
>          perror("read failed");
>          exit(1);
>        }
>      if (lseek(fd, 0, SEEK_SET) < 0)
>        {
>          perror("lseek failed");
>          exit(1);
>        }
>    }
>  if (gettimeofday(&tv1, NULL) < 0)
>    {
>      perror("gettimeofday failed");
>      exit(1);
>    }
>  t =3D (tv1.tv_sec - tv0.tv_sec) * 1000000;
>  t =3D t + tv1.tv_usec - tv0.tv_usec;
>  printf("%ld us, %f MB/s\n", t,
>   ((double)buffer_size * (double)i / 1000000) / ((double)t / =
1000000));
>  exit(0);
> }
I will use your program to test my hds and I will let you know.
>=20
> Total: 93.305028 MB/s
>=20
>=20
> _______________________________________________
> freebsd-hardware@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
> To unsubscribe, send any mail to =
"freebsd-hardware-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2041CDFF-99EA-4D58-BC17-AF847A17ABF6>