Software and hardware annotations 2007 June

This document contains only my personal opinions and calls of judgement, and where any comment is made as to the quality of anybody's work, the comment is an opinion, in my judgement.

[file this blog page at: digg del.icio.us Technorati]

070609 Slow remote X display with Exceed and antialiases fonts
A colleague showed me how slow was the GNU/Linux version Eclipse when viewed on MS Windows via the Exceed X server. Since there was no good reason for this, and display using VNC seemed fast, I noticed that the GUI was using anti-aliased font rendering, and checking with
xterm -fa 'mono:size=10:antialias=0 or 1
showed that antialiasing was indeed the issue. Even enabling the RENDER extension on the X server did not improve things. Strange.
070602 Software versus hardware RAID: bandwidth, latency, convenience
During an online help session someone asked about the advantages and disadvantages of software and hardware RAID. Well, they relate to performance and convenience, as well as price.
One of the major performance differences is about host bus traffic: for RAID arrangements with some redundancy (mirroring, parity, ...) a hardware host adapter saves transferring that degree of redundancy over the system bus. For example for mirroring under software RAID each written block must be transmitted over the system bus twice, but only once with a hardware RAID host adapter.
The same or more applies for example to RAID5 (n+1) in case of a read-modify-write transaction (for a partial stripe update) software RAID must read the other n-1 data members of the stripe and them write back the whole stripe over the system bus, but one needs to send only the single block to update to a hardware RAID host adapter.
Another major performance difference is often over latency: here usually software RAID has the advantage as usually the low power consumption, embedded CPUs used in hardware RAID host adapters are much slower than recent host CPUs. It is possible for a hardware RAID host adapter to add 2-3ms latency to each transaction.
As to convenience, hardware RAID usually is far nicer than software RAID, as often it provides a simple single virtual disk interface to the host operating system, which therefore can be configured with no special casing for RAID operation other than tuning. Software RAID instead requires boot loaders and kernels with special modules to handle the RAID operation. Fortunately kernels like Linux implement RAID1 in such a way that volumes which are members of a RAID1 have almost exactly the same layout as a non-RAID ones, which simplifies things like recovery. But software RAID still makes boot and configuration more fragile.
Hardware RAID is therefore more transparent to the operating system, but this means that it is harder to monitor and tune a hardware RAID setup, while all the usual and often extensive tools of the host operating system can be used for a software RAID. Some hardware RAID host adapters offer interfaces that provide some access to the status of the underlying array members, but this is often unsupported or not as well supported as access to native devices.
My impression is that hardware RAID is better for smaller systems where ease of setup is important; for larger systems perhaps software RAID is better, as system bus bandwidth concerns can be eased by having multiple system buses and other high end hardware features. But it is hard to imagine general cases. It is somewhat amusing to me that ease of setup is then what drives the adoption of strange RAID based things like SAN servers with virtual disk drives.