From owner-freebsd-hardware@FreeBSD.ORG Thu Feb 10 00:36:25 2011 Return-Path: Delivered-To: freebsd-hardware@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 222D2106566C for ; Thu, 10 Feb 2011 00:36:25 +0000 (UTC) (envelope-from dieterbsd@engineer.com) Received: from imr-da06.mx.aol.com (imr-da06.mx.aol.com [205.188.169.203]) by mx1.freebsd.org (Postfix) with ESMTP id D3EE98FC1B for ; Thu, 10 Feb 2011 00:36:24 +0000 (UTC) Received: from imo-ma02.mx.aol.com (imo-ma02.mx.aol.com [64.12.78.137]) by imr-da06.mx.aol.com (8.14.1/8.14.1) with ESMTP id p1A0aFO0011030 for ; Wed, 9 Feb 2011 19:36:15 -0500 Received: from dieterbsd@engineer.com by imo-ma02.mx.aol.com (mail_out_v42.9.) id n.fce.bf7f48f (45494) for ; Wed, 9 Feb 2011 19:36:11 -0500 (EST) Received: from smtprly-dc03.mx.aol.com (smtprly-dc03.mx.aol.com [205.188.170.3]) by cia-mc08.mx.aol.com (v129.7) with ESMTP id MAILCIAMC081-d3a34d5332f8236; Wed, 09 Feb 2011 19:36:11 -0500 Received: from web-mmc-d01 (web-mmc-d01.sim.aol.com [205.188.103.67]) by smtprly-dc03.mx.aol.com (v129.8) with ESMTP id MAILSMTPRLYDC033-d3a34d5332f8236; Wed, 09 Feb 2011 19:36:08 -0500 To: freebsd-hardware@freebsd.org Content-Transfer-Encoding: quoted-printable Date: Wed, 09 Feb 2011 19:36:08 -0500 X-MB-Message-Source: WebUI X-AOL-IP: 67.206.161.238 X-MB-Message-Type: User MIME-Version: 1.0 From: dieterbsd@engineer.com Content-Type: text/plain; charset="us-ascii" X-Mailer: Mail.com Webmail 33222-STANDARD Received: from 67.206.161.238 by web-mmc-d01.sysops.aol.com (205.188.103.67) with HTTP (WebMailUI); Wed, 09 Feb 2011 19:36:08 -0500 Message-Id: <8CD96D1A47516BC-11A8-283B@web-mmc-d01.sysops.aol.com> X-Spam-Flag: NO X-AOL-SENDER: dieterbsd@engineer.com Subject: Re: Addonics SIS3124 Controller and T X-BeenThere: freebsd-hardware@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: General discussion of FreeBSD hardware List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2011 00:36:25 -0000 Jose Amengual writes: > Strangely enough just switching drives now I can see all ten, weird > but is working now. Perhaps there was a loose conection or something. > I'm confused why you are referring to a JMB393s if my card has a > siis3124 chip....or are you referring o the PMs? 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. Do you get something like PM Product ID: 37261095 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. First I ran one disk at a time: 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 SiI 3132 PCIe-x1 siis(4) ada0 127.737664 MB/s ada1 110.236024 MB/s ada2 110.210423 MB/s 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 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. 2 disks at once - port multiplier drives ada4, ada5 48.034694 MB/s and 48.034701 MB/s Total: 96.069395 MB/s 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 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 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 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 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. 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? 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. /* * 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 * NetBSD: 26 ans d'experience feront toujours la difference * Updated by: * Dieter * Added command line argument for buffer/read size. * (originally hard coded at 64 KiB) * Read data into drive's RAM buffer before beginning timing. * */ #include #include #include #include #include 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; 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); } buffer_size =3D atoi(argv[2]); buffer =3D malloc(buffer_size); if ( buffer =3D=3D NULL ) { perror("malloc failed"); exit(1); } 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); } 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); } Total: 93.305028 MB/s