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>