Sunday, May 2, 2010

Sun Fire V120 as NAS part 7: Gigabit networking


Well, one week ago I received a new Sun Quad GigaSwift PCI card for this server. It's a full lenght PCI card with 64 bits PCI bus, but works in 32 bits PCI bus also.

As you can see in the pictures, the card installation is very easy. Only take out the blank bracket and the small grey plastic, then mount the card in th server slot. Finally return to set the grey plastic which locks the rear part of the GigaSiwft.

The network cards can be configured via the ifconfig utility in Solaris but to make this configurations stored we have to do some more file editting:

1.- The first step is to check if the server detects the GigaSwift card:
# grep ce /etc/path_to_inst
"/pci@1f,0/pci@1/pci@5/pci@0/network@0" 0 "ce"
"/pci@1f,0/pci@1/pci@5/pci@0/network@1" 1 "ce"
"/pci@1f,0/pci@1/pci@5/pci@4/network@2" 2 "ce"
"/pci@1f,0/pci@1/pci@5/pci@4/network@3" 3 "ce"
2.- Second step: create the /etc/hostname.ce0 file containing the name of the server. This name can't be the same in two different ethernet ports. In the 100MB port I'm using v120 as hostname, now I added a 'g' to the name:
# cat /etc/hostname.ce0
v120g
ce0 is the instance number for the port I'm going to use. I only need one port of the four installed with this card. If we want to use more port, more hostname.ce'instance_number' are needed.

3.- Now we have to edit the /etc/inet/hosts file but the vi editor says it's write protected (and I'm doing it beeing root). Like other changes I did before, I uploaded this file to my laptop via FTP, modified with a text editor and then downloaded to the server.
# cd /etc/inet
# cp /export/home/admin/hosts .

# cat /etc/inet/hosts
#
# Internet host table
#
::1     localhost
127.0.0.1       localhost
192.168.2.120   v120    loghost
192.168.5.120   v120g
~
4.- With the two configuration files ready, the card can be turned on:
# ifconfig ce0 plumb 192.168.5.120 up

Unfortunately the trasfer speed is the same as the speed obtained with the 100MB onboard port. Yes, I know there is a lot of parameters to tune, but I will look on the next days. Another problem I found is that: with both Ethernet ports configured (onboard an GigaSwift), when I unplug the onboard port cable, I have a lot of problems to connect with the Gigaswift (well, I can't connect). I think this is because Solaris uses the main port to check against DNS server. Then, I disconfigured the onboard ethernet port:

1.- Unplumb the card:
# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
ce0: flags=1000843 mtu 1500 index 2
        inet 192.168.5.120 netmask ffffff00 broadcast 192.168.5.255
        ether 0:3:ba:5c:2b:7d
eri0: flags=1000843 mtu 1500 index 3
        inet 192.168.2.120 netmask ffffff00 broadcast 192.168.2.255
        ether 0:3:ba:5c:2b:7d


# ifconfig eri0 unplumb

# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
ce0: flags=1000843 mtu 1500 index 2
        inet 192.168.5.120 netmask ffffff00 broadcast 192.168.5.255
        ether 0:3:ba:5c:2b:7d
2.- Delete the /etc/hosts entry (I modified the file in my laptop):
# cd /etc/inet
# cp hosts hosts.old
# cp /export/home/admin/hosts .
# cat hosts

#
# Internet host table
#
::1     localhost
127.0.0.1       localhost
192.168.5.120   v120g   loghost
3. Delete the /etc/hostname.eri0 file (here I moved it):
# cd /etc
# ls hostname*
hostname.ce0   hostname.eri0
# mv hostname.eri0 hostname.ri0.old
4.- Unplumb the ethernet port (and reboot):
# ifconfig eri0 unplumb
# reboot
Now everything works good with only the GigaSwift port 0 attached to the network. Something that is killing me is the low speed transfer via FTP. I can only reach 4.5 MB/s. This is a very low value. While doing a file tranfer I checked the server status with iostat:
# iostat
   tty        sd0           sd3           sd16          sd17           cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0    1   2   0    4  439   8   28  789   8   26  758   8   31   60 26  0 14
Here I can see that the CPU is hard working. Maybe all the calculations needed by Samba, ftp and the other services joined by the ZFS filesystem are eating a lot of resources. I think I will check to optimize the network parameters for play and then I will reformat the hard disks using SVM instead of ZFS.

P.D.: Do you know what is this? (Check picture)

4 comments:

randomshinichi said...

RAM... for Origin/Octane?

Titox said...

Nearly, but no.....

Anonymous said...

very nice series of posts, thx.
However, as a rule of thumb with UltraSPARCs, I calculate 1 CPU MHz / Mbps network bandwidth. I.e. 100 of your 648 MHz CPU clock speed will go to drive one of its onboard 100 Mbps Ethernet ports.
An USIIe at 650 MHz will never ever drive a Gbps Ethernet port, let alone a quad Gb card, at wirespeed.
You'd be better off configuring the two onboard ports with IPMP - IP MultiPathing, combining and load-balancing their capacity.

Titox said...

Yes, It's true. But my last test with Solaris installed in UFS partitions gave me 25~27 MB/s sustained. Here the old SCSI bus is showing it's limits.

I think this can't be better. In fact this machine was designed as cheap web server....