Overview
I’ve had the opportunity to beta test the Sun Fire X4540, which is the successor for the highly acclaimed Sun Fire X4500 (aka thumper). For those of you who haven’t heard of the thumper, it’s a 4U 48 drive system that more or less combines a head unit plus disks to form an all-in-one file server in a very compact design. While it likely could run any number of operating systems, it’s particularly well designed for Solaris 10 or OpenSolaris and ZFS, as the disks are presented JBOD style.
On the technical side, the X4540 addresses some of the initial issues I had with the X4500, primarily support for a great deal more RAM (from 16 to 64), which means that ZFS will cache even more efficiently than ever and you can run a larger variety of memory hungry apps if you’re so inclined. It also supports the newer AMD Opteron 2xxx CPUs, so you get not only better speed, but also the energy savings associated with use DDR2. In addition, there’s also a CF slot on the back so that you can boot the system without wasting one or two of the 48 drives.
Unfortunately, there are a couple of downsides to the new system, which might just be me being picky. First, they’ve decided to use the NVIDIA ethernet controllers, which I’ve had problems with in the past. (In their defense the problems are fixed in U5, though not in U4.) It would have been vastly preferrable for them to use the tried and true Intel E1000G controllers as found on many of their systems. I don’t know about everyone else, but I’m of the opion that those are the best gigabit ethernet controllers available. In addition to the use of nge vs. e1000g, there’s still the basic issue of wasting drives for booting. Yes, CF is an interesting way to go, but I believe it would have been nice if they had found a way to cram a couple of small SSD drives in there so you could mirror and boot off of those, so if for some strange reason you wanted more performance on you systems disks (heavy logging, maybe?), you could do that.
Performance-wise the thing is a beast. There’s no doubt that the system performance is pretty amazing. I used a combination of iozone, bonnie++ and FileBench to generate load on the system in order gauge performnance. For large sequential writes and reads, getting close to 1GB/s across all of the drives was fairly easy. Smaller, random performance wasn’t quite as out of this world, but still quite good (500+MB/s).
The actual system specs were:
- 2 Quad Core Opteron 2356s
- 32GB of RAM (16 2GB DIMMs)
- 48 1TB drives
I created 4x 9+2 (raidz2) pools. I’ve heard rumors that building zpools with greater than 10 drives is a mistake, but it was the best performance to space ratio I could make work reasonably. One thing I’ll note is that it’s probably a good idea to build your pools out across as many of the internal controllers as possible to try and maximize parallelism in your data.
Here’s some bonnie++ data showing all 4 zpool results (they were running in parallel):
pool0:
Version 1.03c ——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
thor 64G 100520 98 207778 66 108533 49 81102 90 249018 63 836.6 8
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
thor,64G,100520,98,207778,66,108533,49,81102,90,249018,63,836.6,8,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
pool1:
Version 1.03c ——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
thor 64G 104081 97 255887 56 104614 44 79642 87 259304 59 908.2 13
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
thor,64G,104081,97,255887,56,104614,44,79642,87,259304,59,908.2,13,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
pool2:
Version 1.03c ——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
thor 64G 100374 98 194312 66 110581 48 81316 90 259698 63 876.7 4
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
thor,64G,100374,98,194312,66,110581,48,81316,90,259698,63,876.7,4,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
pool3:
Version 1.03c ——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
thor 64G 104064 97 223351 50 104265 43 82014 88 257469 60 982.6 11
——Sequential Create—— ——–Random Create——–
-Create– –Read— -Delete– -Create– –Read— -Delete–
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ 32464 88 +++++ +++ +++++ +++
thor,64G,104064,97,223351,50,104265,43,82014,88,257469,60,982.6,11,16,+++++,+++,+++++,+++,+++++,+++,32464,88,+++++,+++,+++++,+++
Closing
I’d say the system is a really nice bulk storage device for a great price. Performance is quite reasonable (it’s no 15k RPM SAS) for the size and would make an excellent fileserver, backup host or iSCSI target for who knows what.