Bulk Data Service (BDS) is a non-standard extension to NFS that handles large file transactions over high-speed networks. BDS exploits the data access speed of the XFS filesystem and data transfer rates of network media, such as HIPPI and fiberchannel, to accelerate standard NFS performance. The BDS protocol, XBDS, modifies NFS functions to reduce the time needed to transfer files of 100 megabytes or larger over a network connection. BDSpro is the Silicon Graphics implementation of XBDS.
Figure 1-1 illustrates the XBDS protocol relative to existing ONC protocols.
You can use BDSpro on Silicon Graphics systems running IRIX 6.2 (or later). Hosts must be connected to a high-speed network (such as HIPPI or fiberchannel) running the transmission control protocol/ internet protocol suite (TCP/IP).
BDS is implemented as enhancements to NFS on the client system and a daemon process on the server. Figure 1-2 illustrates the BDSpro client-server model on Silicon Graphics systems.
The hardware and software used on a network and its loading patterns determine the ultimate speed of NFS transactions. Because these factors vary greatly on individual networks, it is impossible to predict the performance gains that BDS will provide for a particular network. However, to evaluate BDS performance potential, it is useful to consider BDSpro comparisons to standard NFS under constant network conditions.
Table 1-1 compares BDSpro transfer speeds with NFS configurations.
Table 1-1. BDSpro Performance Compared With Standard NFS[a]
Product | Network Configuration | Read Rate |
|---|---|---|
NFS (version 2) | UDP over HIPPI | 2.5 MB per second per channel |
NFS (version 3) | UDP over HIPPI | 16 MB per second per channel |
BDSpro | TCP/IP over HIPPI | 70 MB per second per channel |
[a] Rates are based on NFS read and write sizes of 48 KB on files of 100 MB or larger. MB is defined as 1024 × 1024 bytes. | ||
To achieve high throughput, BDS relies on the ability of the operating system to perform direct input and output operations (see the O_DIRECT option of the open(2) and fcntl(2) IRIX reference pages for details). In direct I/O operations, the operating system reads and writes data from disk directly to a user buffer, bypassing an intermediate copy to the kernel buffer cache that is standard for other types of I/O. In a network transaction, the time saved by bypassing the buffer cache is doubled, since the bypass occurs on both the client and the server systems (see Figure 1-4).
Direct I/O is based on the assumption that buffer alignment and size are known constants. For this reason, the network applications that use BDS must perform page-aligned I/O. Applications that are tuned for XFS performance are ideal for use with BDS, since XFS also requires this alignment.
Figure 1-3 illustrates the sequence of events in a standard NFS transaction. These events take place in Figure 1-3:
The application issues a read for remote data.
The search for the data in local buffer cache fails.
An NFS read is sent to the remote server.
The search of the buffer cache on the remote server fails.
The server reads from the filesystem on disk.
Data is moved to the buffer cache on the server.
The buffer data is sent to the network.
The client receives the data in buffer cache.
The data is sent from the buffer cache to the application.
Figure 1-4 illustrates the sequence of events in a BDS transaction.
These events take place in Figure 1-4:
The application issues a read for remote data.
A BDS read is sent to the remote BDS server.
The BDS server reads directly from the filesystem on disk.
The BDS server performs an aligned write to the network.
The data is page-flipped directly from the client's network buffer to the application.
While BDS offers clear advantages to standard NFS implementations in some operating environments, it is recommended over standard NFS only in certain circumstances. Real network throughput rates, the applications running on a network, and the size of files involved in network operations determine whether BDS is a desirable addition to your current NFS implementation.
File size is an especially important consideration in evaluating BDS for your site. For small and medium size files, standard NFS frequently offers satisfactory performance. NFS speed with files of this size is attributable to local data caching, which it performs to reduce (or eliminate) the need for time-consuming reads and writes over the network.
In transactions with large files, however, NFS caching is troublesome because it purges potentially valuable data from the cache to store the large file. With BDS, this problem is eliminated because BDS performs no data caching (see “How BDS Works” for details). Because of the cache bypasses (and for other performance reasons), BDS also offers much faster transfer speeds (see Table 1-1 for speeds achieved with BDSpro).
You should consider adding BDS if your NFS implementation meets these criteria:
Files of 100 MB or larger are routinely accessed over network connections.
Network hardware is a high-speed medium (such as HIPPI or fiberchannel) with a potential transfer rate of 100 MB per second or higher.
The applications that you use perform page-aligned input and output, and they perform direct reads and writes when accessing XFS files.
The applications that you use do not rely on data caching.