S line from 0.738,5.388 to 1.238,5.388 dashwid = 0.050i line dashed from 1.488,10.075 to 1.488,5.450 line dashed from 2.987,10.075 to 2.987,5.450 line dashed from 4.487,10.075 to 4.487,5.450 line from 4.487,7.013 to 4.487,5.950 line from 2.987,7.700 to 2.987,5.950 to 2.987,6.075 line from 1.488,7.513 to 1.488,5.950 line from 2.987,9.700 to 2.987,8.325 line from 1.488,9.450 to 1.488,8.325 line from 2.987,6.450 to 4.487,6.200 line from 4.385,6.192 to 4.487,6.200 to 4.393,6.241 line from 4.487,6.888 to 2.987,6.575 line from 3.080,6.620 to 2.987,6.575 to 3.090,6.571 line from 2.987,7.263 to 4.487,7.013 line from 4.385,7.004 to 4.487,7.013 to 4.393,7.054 line from 4.487,7.638 to 2.987,7.388 line from 3.082,7.429 to 2.987,7.388 to 3.090,7.379 line from 2.987,6.888 to 1.488,6.575 line from 1.580,6.620 to 1.488,6.575 to 1.590,6.571 line from 1.488,7.200 to 2.987,6.950 line from 2.885,6.942 to 2.987,6.950 to 2.893,6.991 line from 2.987,7.700 to 1.488,7.513 line from 1.584,7.550 to 1.488,7.513 to 1.590,7.500 line from 1.488,8.012 to 2.987,7.763 line from 2.885,7.754 to 2.987,7.763 to 2.893,7.804 line from 2.987,9.012 to 1.488,8.825 line from 1.584,8.862 to 1.488,8.825 to 1.590,8.813 line from 1.488,9.325 to 2.987,9.137 line from 2.885,9.125 to 2.987,9.137 to 2.891,9.175 line from 2.987,9.637 to 1.488,9.450 line from 1.584,9.487 to 1.488,9.450 to 1.590,9.438 line from 1.488,9.887 to 2.987,9.700 line from 2.885,9.688 to 2.987,9.700 to 2.891,9.737 "Lease valid on machine" at 1.363,5.296 ljust "with same modrev" at 1.675,7.421 ljust "miss)" at 2.612,9.233 ljust "(cache" at 2.300,9.358 ljust "Diagram #1: Read Caching Leases" at 0.738,5.114 ljust "Client B" at 4.112,10.176 ljust "Server" at 2.612,10.176 ljust "Client A" at 0.925,10.176 ljust "from cache" at 4.675,6.546 ljust "Read syscalls" at 4.675,6.796 ljust "Reply" at 3.737,6.108 ljust "(cache miss)" at 3.675,6.421 ljust "Read req" at 3.737,6.608 ljust "to lease" at 3.112,6.796 ljust "Client B added" at 3.112,6.983 ljust "Reply" at 3.237,7.296 ljust "Read + lease req" at 3.175,7.671 ljust "Read syscall" at 4.675,7.608 ljust "Reply" at 1.675,6.796 ljust "miss)" at 2.487,7.108 ljust "Read req (cache" at 1.675,7.233 ljust "from cache" at 0.425,6.296 ljust "Read syscalls" at 0.425,6.546 ljust "cache" at 0.425,6.858 ljust "so can still" at 0.425,7.108 ljust "Modrev same" at 0.425,7.358 ljust "Reply" at 1.675,7.671 ljust "Get lease req" at 1.675,8.108 ljust "Read syscall" at 0.425,7.983 ljust "Lease times out" at 0.425,8.296 ljust "from cache" at 0.425,9.046 ljust "Read syscalls" at 0.425,9.296 ljust "for Client A" at 3.112,9.296 ljust "Read caching lease" at 3.112,9.483 ljust "Reply" at 1.675,8.983 ljust "Read req" at 1.675,9.358 ljust "Reply" at 1.675,9.608 ljust "Read + lease req" at 1.675,9.921 ljust "Read syscall" at 0.425,9.921 ljust
E .)z .(z
S line from 1.175,5.700 to 1.300,5.700 line from 0.738,5.700 to 1.175,5.700 line from 2.987,6.638 to 2.987,6.075 dashwid = 0.050i line dashed from 2.987,6.575 to 2.987,5.950 line dashed from 1.488,6.575 to 1.488,5.888 line from 2.987,9.762 to 2.987,6.638 line from 1.488,9.450 to 1.488,7.700 line from 2.987,6.763 to 1.488,6.575 line from 1.584,6.612 to 1.488,6.575 to 1.590,6.563 line from 1.488,7.013 to 2.987,6.825 line from 2.885,6.813 to 2.987,6.825 to 2.891,6.862 line from 2.987,7.325 to 1.488,7.075 line from 1.582,7.116 to 1.488,7.075 to 1.590,7.067 line from 1.488,7.700 to 2.987,7.388 line from 2.885,7.383 to 2.987,7.388 to 2.895,7.432 line from 2.987,8.575 to 1.488,8.325 line from 1.582,8.366 to 1.488,8.325 to 1.590,8.317 line from 1.488,8.887 to 2.987,8.637 line from 2.885,8.629 to 2.987,8.637 to 2.893,8.679 line from 2.987,9.637 to 1.488,9.450 line from 1.584,9.487 to 1.488,9.450 to 1.590,9.438 line from 1.488,9.887 to 2.987,9.762 line from 2.886,9.746 to 2.987,9.762 to 2.890,9.796 line dashed from 2.987,10.012 to 2.987,6.513 line dashed from 1.488,10.012 to 1.488,6.513 "write" at 4.237,5.921 ljust "Lease valid on machine" at 1.425,5.733 ljust "Diagram #2: Write Caching Lease" at 0.738,5.551 ljust "Server" at 2.675,10.114 ljust "Client A" at 1.113,10.114 ljust "seconds after last" at 3.112,5.921 ljust "Expires write_slack" at 3.112,6.108 ljust "due to write activity" at 3.112,6.608 ljust "Expiry delayed" at 3.112,6.796 ljust "Lease times out" at 3.112,7.233 ljust "Lease renewed" at 3.175,8.546 ljust "Lease for client A" at 3.175,9.358 ljust "Write caching" at 3.175,9.608 ljust "Reply" at 1.675,6.733 ljust "Write req" at 1.988,7.046 ljust "Reply" at 1.675,7.233 ljust "Write req" at 1.675,7.796 ljust "Lease expires" at 0.487,7.733 ljust "Close syscall" at 0.487,8.108 ljust "lease granted" at 1.675,8.546 ljust "Get write lease" at 1.675,8.921 ljust "before expiry" at 0.487,8.608 ljust "Lease renewal" at 0.487,8.796 ljust "syscalls" at 0.487,9.046 ljust "Delayed write" at 0.487,9.233 ljust "lease granted" at 1.675,9.608 ljust "Get write lease req" at 1.675,9.921 ljust "Write syscall" at 0.487,9.858 ljust
E .)z .(z
S line from 0.613,2.638 to 1.238,2.638 line from 1.488,4.075 to 1.488,3.638 line from 2.987,4.013 to 2.987,3.575 line from 4.487,4.013 to 4.487,3.575 line from 2.987,3.888 to 4.487,3.700 line from 4.385,3.688 to 4.487,3.700 to 4.391,3.737 line from 4.487,4.138 to 2.987,3.950 line from 3.084,3.987 to 2.987,3.950 to 3.090,3.938 line from 2.987,4.763 to 4.487,4.450 line from 4.385,4.446 to 4.487,4.450 to 4.395,4.495 line from 4.487,4.438 to 4.487,4.013 line from 4.487,5.138 to 2.987,4.888 line from 3.082,4.929 to 2.987,4.888 to 3.090,4.879 line from 4.487,6.513 to 4.487,5.513 line from 4.487,6.513 to 4.487,6.513 to 4.487,5.513 line from 2.987,5.450 to 2.987,5.200 line from 1.488,5.075 to 1.488,4.075 line from 2.987,5.263 to 2.987,4.013 line from 2.987,7.700 to 2.987,5.325 line from 4.487,7.575 to 4.487,6.513 line from 1.488,8.512 to 1.488,8.075 line from 2.987,8.637 to 2.987,8.075 line from 2.987,9.637 to 2.987,8.825 line from 1.488,9.450 to 1.488,8.950 line from 2.987,4.450 to 1.488,4.263 line from 1.584,4.300 to 1.488,4.263 to 1.590,4.250 line from 1.488,4.888 to 2.987,4.575 line from 2.885,4.571 to 2.987,4.575 to 2.895,4.620 line from 2.987,5.263 to 1.488,5.075 line from 1.584,5.112 to 1.488,5.075 to 1.590,5.063 line from 4.487,5.513 to 2.987,5.325 line from 3.084,5.362 to 2.987,5.325 to 3.090,5.313 line from 2.987,5.700 to 4.487,5.575 line from 4.386,5.558 to 4.487,5.575 to 4.390,5.608 line from 4.487,6.013 to 2.987,5.825 line from 3.084,5.862 to 2.987,5.825 to 3.090,5.813 line from 2.987,6.200 to 4.487,6.075 line from 4.386,6.058 to 4.487,6.075 to 4.390,6.108 line from 4.487,6.450 to 2.987,6.263 line from 3.084,6.300 to 2.987,6.263 to 3.090,6.250 line from 2.987,6.700 to 4.487,6.513 line from 4.385,6.500 to 4.487,6.513 to 4.391,6.550 line from 1.488,6.950 to 2.987,6.763 line from 2.885,6.750 to 2.987,6.763 to 2.891,6.800 line from 2.987,7.700 to 4.487,7.575 line from 4.386,7.558 to 4.487,7.575 to 4.390,7.608 line from 4.487,7.950 to 2.987,7.763 line from 3.084,7.800 to 2.987,7.763 to 3.090,7.750 line from 2.987,8.637 to 1.488,8.512 line from 1.585,8.546 to 1.488,8.512 to 1.589,8.496 line from 1.488,8.887 to 2.987,8.700 line from 2.885,8.688 to 2.987,8.700 to 2.891,8.737 line from 2.987,9.637 to 1.488,9.450 line from 1.584,9.487 to 1.488,9.450 to 1.590,9.438 line from 1.488,9.950 to 2.987,9.762 line from 2.885,9.750 to 2.987,9.762 to 2.891,9.800 dashwid = 0.050i line dashed from 4.487,10.137 to 4.487,2.825 line dashed from 2.987,10.137 to 2.987,2.825 line dashed from 1.488,10.137 to 1.488,2.825 "(not cached)" at 4.612,3.858 ljust "Diagram #3: Write sharing case" at 0.613,2.239 ljust "Write syscall" at 4.675,7.546 ljust "Read syscall" at 0.550,9.921 ljust "Lease valid on machine" at 1.363,2.551 ljust "(can still cache)" at 1.675,8.171 ljust "Reply" at 3.800,3.858 ljust "Write" at 3.175,4.046 ljust "writes" at 4.612,4.046 ljust "synchronous" at 4.612,4.233 ljust "write syscall" at 4.675,5.108 ljust "non-caching lease" at 3.175,4.296 ljust "Reply " at 3.175,4.483 ljust "req" at 3.175,4.983 ljust "Get write lease" at 3.175,5.108 ljust "Vacated msg" at 3.175,5.483 ljust "to the server" at 4.675,5.858 ljust "being flushed to" at 4.675,6.046 ljust "Delayed writes" at 4.675,6.233 ljust "Server" at 2.675,10.182 ljust "Client B" at 3.925,10.182 ljust "Client A" at 0.863,10.182 ljust "(not cached)" at 0.550,4.733 ljust "Read data" at 0.550,4.921 ljust "Reply data" at 1.675,4.421 ljust "Read request" at 1.675,4.921 ljust "lease" at 1.675,5.233 ljust "Reply non-caching" at 1.675,5.421 ljust "Reply" at 3.737,5.733 ljust "Write" at 3.175,5.983 ljust "Reply" at 3.737,6.171 ljust "Write" at 3.175,6.421 ljust "Eviction Notice" at 3.175,6.796 ljust "Get read lease" at 1.675,7.046 ljust "Read syscall" at 0.550,6.983 ljust "being cached" at 4.675,7.171 ljust "Delayed writes" at 4.675,7.358 ljust "lease" at 3.175,7.233 ljust "Reply write caching" at 3.175,7.421 ljust "Get write lease" at 3.175,7.983 ljust "Write syscall" at 4.675,7.983 ljust "with same modrev" at 1.675,8.358 ljust "Lease" at 0.550,8.171 ljust "Renewed" at 0.550,8.358 ljust "Reply" at 1.675,8.608 ljust "Get Lease Request" at 1.675,8.983 ljust "Read syscall" at 0.550,8.733 ljust "from cache" at 0.550,9.108 ljust "Read syscall" at 0.550,9.296 ljust "Reply " at 1.675,9.671 ljust "plus lease" at 2.050,9.983 ljust "Read Request" at 1.675,10.108 ljust
E .)z A write-caching lease is not used in the Stanford V Distributed System [Gray89], since synchronous writing is always used. A side effect of this change is that the five to ten second lease duration recommended by Gray was found to be insufficient to achieve good performance for the write-caching lease. Experimentation showed that thirty seconds was about optimal for cases where the client and server are connected to the same local area network, so thirty seconds is the default lease duration for NQNFS. A maximum of twice that value is permitted, since Gray showed that for some network topologies, a larger lease duration functions better. Although there is an explicit get_lease RPC defined for the protocol, most lease requests are piggybacked onto the other RPCs to minimize the additional overhead introduced by leasing. .sh 2 "Rationale" .pp Leasing was chosen over hard server state information for the following reasons: .ip 1. The server must maintain state information about all current client leases. Since at most one lease is allocated for each RPC and the leases expire after their lease term, the upper bound on the number of current leases is the product of the lease term and the server RPC rate. In practice, it has been observed that less than 10% of RPCs request new leases and since most leases have a term of thirty seconds, the following rule of thumb should estimate the number of server lease records:
Number of Server Lease Records \(eq 0.1 * 30 * RPC rateSince each lease record occupies 64 bytes of server memory, storing the lease records should not be a serious problem. If a server has exhausted lease storage, it can simply wait a few seconds for a lease to expire and free up a record. On the other hand, a Sprite-like server must store records for all files currently open by all clients, which can require significant storage for a large, heavily loaded server. In [Mogul93], it is proposed that a mechanism vaguely similar to paging could be used to deal with this for Spritely NFS, but this appears to introduce a fair amount of complexity and may limit the usefulness of open records for storing other state information, such as file locks. .ip 2. After a server crashes it must recover lease records for the current outstanding leases, which actually implies that if it waits until all leases have expired, there is no state to recover. The server must wait for the maximum lease duration of one minute, and it must serve all outstanding write requests resulting from terminated write-caching leases before issuing new leases. The one minute delay can be overlapped with file system consistency checking (eg. fsck). Because no state must be recovered, a lease-based server, like an NFS server, avoids the problem of state recovery after a crash. There can, however, be problems during crash recovery because of a potentially large number of write backs due to terminated write-caching leases. One of these problems is a "recovery storm" [Baker91], which could occur when the server is overloaded by the number of write RPC requests. The NQNFS protocol deals with this by replying with a return status code called try_again_later to all RPC requests (except write) until the write requests subside. At this time, there has not been sufficient testing of server crash recovery while under heavy server load to determine if the try_again_later reply is a sufficient solution to the problem. The other problem is that consistency will be lost if other RPCs are performed before all of the write backs for terminated write-caching leases have completed. This is handled by only performing write RPCs until no write RPC requests arrive for write_slack seconds, where write_slack is set to several times the client timeout retransmit interval, at which time it is assumed all clients have had an opportunity to send their writes to the server. .ip 3. Another advantage of leasing is that, since leases are required at times when other I/O operations occur, lease requests can almost always be piggybacked on other RPCs, avoiding some of the overhead associated with the explicit open and close RPCs required by a Sprite-like system. Compared with Sprite cache consistency, this can result in a significantly lower RPC load (see table #1). .sh 1 "Limitations of the NQNFS Protocol" .pp There is a serious risk when leasing is used for delayed write caching. If the server is simply too busy to service a lease renewal before a write-caching lease terminates, the client will not be able to push the write data to the server before the lease has terminated, resulting in inconsistency. Note that the danger of inconsistency occurs when the server assumes that a write-caching lease has terminated before the client has had the opportunity to write the data back to the server. In an effort to avoid this problem, the NQNFS server does not assume that a write-caching lease has terminated until three conditions are met: .(l 1 - clock time > (expiry time + clock skew) 2 - there is at least one server daemon (nfsd) waiting for an RPC request 3 - no write RPCs received for leased file within write_slack after the corrected expiry time .)l .lp The first condition ensures that the lease has expired on the client. The clock_skew, by default three seconds, must be set to a value larger than the maximum time-of-day clock error that is likely to occur during the maximum lease duration. The second condition attempts to ensure that the client is not waiting for replies to any writes that are still queued for service by an nfsd. The third condition tries to guarantee that the client has transmitted all write requests to the server, since write_slack is set to several times the client's timeout retransmit interval. .pp There are also certain file system semantics that are problematic for both NFS and NQNFS, due to the lack of state information maintained by the server. If a file is unlinked on one client while open on another it will be removed from the file server, resulting in failed file accesses on the client that has the file open. If the file system on the server is out of space or the client user's disk quota has been exceeded, a delayed write can fail long after the write system call was successfully completed. With NFS this error will be detected by the close system call, since the delayed writes are pushed upon close. With NQNFS however, the delayed write RPC may not occur until after the close system call, possibly even after the process has exited. Therefore, if a process must check for write errors, a system call such as fsync must be used. .pp Another problem occurs when a process on one client is running an executable file and a process on another client starts to write to the file. The read lease on the first client is terminated by the server, but the client has no recourse but to terminate the process, since the process is already in progress on the old executable. .pp The NQNFS protocol does not support file locking, since a file lock would have to involve hard, recovered after a crash, state information. .sh 1 "Other NQNFS Protocol Features" .pp NQNFS also includes a variety of minor modifications to the NFS protocol, in an attempt to address various limitations. The protocol uses 64bit file sizes and offsets in order to handle large files. TCP transport may be used as an alternative to UDP for cases where UDP does not perform well. Transport mechanisms such as TCP also permit the use of much larger read/write data sizes, which might improve performance in certain environments. .pp The NQNFS protocol replaces the Readdir RPC with a Readdir_and_Lookup RPC that returns the file handle and attributes for each file in the directory as well as name and file id number. This additional information may then be loaded into the lookup and file-attribute caches on the client. Thus, for cases such as "ls -l", the stat system calls can be performed locally without doing any lookup or getattr RPCs. Another additional RPC is the Access RPC that checks for file accessibility against the server. This is necessary since in some cases the client user ID is mapped to a different user on the server and doing the access check locally on the client using file attributes and client credentials is not correct. One case where this becomes necessary is when the NQNFS mount point is using Kerberos authentication, where the Kerberos authentication ticket is translated to credentials on the server that are mapped to the client side user id. For further details on the protocol, see [Macklem93]. .sh 1 "Performance" .pp In order to evaluate the effectiveness of the NQNFS protocol, a benchmark was used that was designed to typify real work on the client workstation. Benchmarks, such as Laddis [Wittle93], that perform server load characterization are not appropriate for this work, since it is primarily client caching efficiency that needs to be evaluated. Since these tests are measuring overall client system performance and not just the performance of the file system, each sequence of runs was performed on identical hardware and operating system in order to factor out the system components affecting performance other than the file system protocol. .pp The equipment used for the all the benchmarks are members of the DECstation\(tm\(dg family of workstations using the MIPS\(tm\(sc RISC architecture. The operating system running on these systems was a pre-release version of 4.4BSD Unix\(tm\(dd. For all benchmarks, the file server was a DECstation 2100 (10 MIPS) with 8Mbytes of memory and a local RZ23 SCSI disk (27msec average access time). The clients range in speed from DECstation 2100s to a DECstation 5000/25, and always run with six block I/O daemons and a 4Mbyte buffer cache, except for the test runs where the buffer cache size was the independent variable. In all cases /tmp is mounted on the local SCSI disk\**, all machines were attached to the same uncongested Ethernet, and ran in single user mode during the benchmarks. .(f \**Testing using the 4.4BSD MFS [McKusick90] resulted in slightly degraded performance, probably since the machines only had 16Mbytes of memory, and so paging increased. .)f Unless noted otherwise, test runs used UDP RPC transport and the results given are the average values of four runs. .pp The benchmark used is the Modified Andrew Benchmark (MAB) [Ousterhout90], which is a slightly modified version of the benchmark used to characterize performance of the Andrew ITC file system [Howard88]. The MAB was set up with the executable binaries in the remote mounted file system and the final load step was commented out, due to a linkage problem during testing under 4.4BSD. Therefore, these results are not directly comparable to other reported MAB results. The MAB is made up of five distinct phases: .ip "1." 10 Makes five directories (no significant cost) .ip "2." 10 Copy a file system subtree to a working directory .ip "3." 10 Get file attributes (stat) of all the working files .ip "4." 10 Search for strings (grep) in the files .ip "5." 10 Compile a library of C sources and archive them .lp Of the five phases, the fifth is by far the largest and is the one affected most by client caching mechanisms. The results for phase #1 are invariant over all the caching mechanisms. .sh 2 "Buffer Cache Size Tests" .pp The first experiment was done to see what effect changing the size of the buffer cache would have on client performance. A single DECstation 5000/25 was used to do a series of runs of MAB with different buffer cache sizes for four variations of the file system protocol. The four variations are as follows: .ip "Case 1:" 10 NFS - The NFS protocol as implemented in 4.4BSD .ip "Case 2:" 10 Leases - The NQNFS protocol using leases for cache consistency .ip "Case 3:" 10 Leases, Rdirlookup - The NQNFS protocol using leases for cache consistency and with the readdir RPC replaced by Readdir_and_Lookup .ip "Case 4:" 10 Leases, Attrib leases, Rdirlookup - The NQNFS protocol using leases for cache consistency, with the readdir RPC replaced by the Readdir_and_Lookup, and requiring a valid lease not only for file-data access, but also for file-attribute access. .lp As can be seen in figure 1, the buffer cache achieves about optimal performance for the range of two to ten megabytes in size. At eleven megabytes in size, the system pages heavily and the runs did not complete in a reasonable time. Even at 64Kbytes, the buffer cache improves performance over no buffer cache by a significant margin of 136-148 seconds versus 239 seconds. This may be due, in part, to the fact that the Compile Phase of the MAB uses a rather small working set of file data. All variants of NQNFS achieve about the same performance, running around 30% faster than NFS, with a slightly larger difference for large buffer cache sizes. Based on these results, all remaining tests were run with the buffer cache size set to 4Mbytes. Although I do not know what causes the local peak in the curves between 0.5 and 2 megabytes, there is some indication that contention for buffer cache blocks, between the update process (which pushes delayed writes to the server every thirty seconds) and the I/O system calls, may be involved. .(z
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.188 to 0.963,8.188 line from 4.787,8.188 to 4.725,8.188 line from 0.900,8.488 to 0.963,8.488 line from 4.787,8.488 to 4.725,8.488 line from 0.900,8.775 to 0.963,8.775 line from 4.787,8.775 to 4.725,8.775 line from 0.900,9.075 to 0.963,9.075 line from 4.787,9.075 to 4.725,9.075 line from 0.900,9.375 to 0.963,9.375 line from 4.787,9.375 to 4.725,9.375 line from 0.900,9.675 to 0.963,9.675 line from 4.787,9.675 to 4.725,9.675 line from 0.900,9.963 to 0.963,9.963 line from 4.787,9.963 to 4.725,9.963 line from 0.900,10.262 to 0.963,10.262 line from 4.787,10.262 to 4.725,10.262 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.613,7.888 to 1.613,7.950 line from 1.613,10.262 to 1.613,10.200 line from 2.312,7.888 to 2.312,7.950 line from 2.312,10.262 to 2.312,10.200 line from 3.025,7.888 to 3.025,7.950 line from 3.025,10.262 to 3.025,10.200 line from 3.725,7.888 to 3.725,7.950 line from 3.725,10.262 to 3.725,10.200 line from 4.438,7.888 to 4.438,7.950 line from 4.438,10.262 to 4.438,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 3.800,8.775 to 4.025,8.775 line from 0.925,10.088 to 0.925,10.088 line from 0.925,10.088 to 0.938,9.812 line from 0.938,9.812 to 0.988,9.825 line from 0.988,9.825 to 1.075,9.838 line from 1.075,9.838 to 1.163,9.938 line from 1.163,9.938 to 1.250,9.838 line from 1.250,9.838 to 1.613,9.825 line from 1.613,9.825 to 2.312,9.750 line from 2.312,9.750 to 3.025,9.713 line from 3.025,9.713 to 3.725,9.850 line from 3.725,9.850 to 4.438,9.875 dashwid = 0.037i line dotted from 3.800,8.625 to 4.025,8.625 line dotted from 0.925,9.912 to 0.925,9.912 line dotted from 0.925,9.912 to 0.938,9.887 line dotted from 0.938,9.887 to 0.988,9.713 line dotted from 0.988,9.713 to 1.075,9.562 line dotted from 1.075,9.562 to 1.163,9.562 line dotted from 1.163,9.562 to 1.250,9.562 line dotted from 1.250,9.562 to 1.613,9.675 line dotted from 1.613,9.675 to 2.312,9.363 line dotted from 2.312,9.363 to 3.025,9.375 line dotted from 3.025,9.375 to 3.725,9.387 line dotted from 3.725,9.387 to 4.438,9.450 line dashed from 3.800,8.475 to 4.025,8.475 line dashed from 0.925,10.000 to 0.925,10.000 line dashed from 0.925,10.000 to 0.938,9.787 line dashed from 0.938,9.787 to 0.988,9.650 line dashed from 0.988,9.650 to 1.075,9.537 line dashed from 1.075,9.537 to 1.163,9.613 line dashed from 1.163,9.613 to 1.250,9.800 line dashed from 1.250,9.800 to 1.613,9.488 line dashed from 1.613,9.488 to 2.312,9.375 line dashed from 2.312,9.375 to 3.025,9.363 line dashed from 3.025,9.363 to 3.725,9.325 line dashed from 3.725,9.325 to 4.438,9.438 dashwid = 0.075i line dotted from 3.800,8.325 to 4.025,8.325 line dotted from 0.925,9.963 to 0.925,9.963 line dotted from 0.925,9.963 to 0.938,9.750 line dotted from 0.938,9.750 to 0.988,9.662 line dotted from 0.988,9.662 to 1.075,9.613 line dotted from 1.075,9.613 to 1.163,9.613 line dotted from 1.163,9.613 to 1.250,9.700 line dotted from 1.250,9.700 to 1.613,9.438 line dotted from 1.613,9.438 to 2.312,9.463 line dotted from 2.312,9.463 to 3.025,9.312 line dotted from 3.025,9.312 to 3.725,9.387 line dotted from 3.725,9.387 to 4.438,9.425 "0" at 0.825,7.810 rjust "20" at 0.825,8.110 rjust "40" at 0.825,8.410 rjust "60" at 0.825,8.697 rjust "80" at 0.825,8.997 rjust "100" at 0.825,9.297 rjust "120" at 0.825,9.597 rjust "140" at 0.825,9.885 rjust "160" at 0.825,10.185 rjust "0" at 0.900,7.660 "2" at 1.613,7.660 "4" at 2.312,7.660 "6" at 3.025,7.660 "8" at 3.725,7.660 "10" at 4.438,7.660 "Time (sec)" at 0.150,8.997 "Buffer Cache Size (MBytes)" at 2.837,7.510 "Figure #1: MAB Phase 5 (compile)" at 2.837,10.335 "NFS" at 3.725,8.697 rjust "Leases" at 3.725,8.547 rjust "Leases, Rdirlookup" at 3.725,8.397 rjust "Leases, Attrib leases, Rdirlookup" at 3.725,8.247 rjust
E .)z .sh 2 "Multiple Client Load Tests" .pp During preliminary runs of the MAB, it was observed that the server RPC counts were reduced significantly by NQNFS as compared to NFS (table 1). (Spritely NFS and Ultrix\(tm4.3/NFS numbers were taken from [Mogul93] and are not directly comparable, due to numerous differences in the experimental setup including deletion of the load step from phase 5.) This suggests that the NQNFS protocol might scale better with respect to the number of clients accessing the server. The experiment described in this section ran the MAB on from one to ten clients concurrently, to observe the effects of heavier server load. The clients were started at roughly the same time by pressing all the <return> keys together and, although not synchronized beyond that point, all clients would finish the test run within about two seconds of each other. This was not a realistic load of N active clients, but it did result in a reproducible increasing client load on the server. The results for the four variants are plotted in figures 2-5. .(z .R
Table #1: MAB RPC Counts |
RPC Getattr Read Write Lookup Other GetLease/Open-Close Total |
BSD/NQNFS 277 139 306 575 294 127 1718 |
BSD/NFS 1210 506 451 489 238 0 2894 |
Spritely NFS 259 836 192 535 306 1467 3595 |
Ultrix4.3/NFS 1225 1186 476 810 305 0 4002 |
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.225 to 0.963,8.225 line from 4.787,8.225 to 4.725,8.225 line from 0.900,8.562 to 0.963,8.562 line from 4.787,8.562 to 4.725,8.562 line from 0.900,8.900 to 0.963,8.900 line from 4.787,8.900 to 4.725,8.900 line from 0.900,9.250 to 0.963,9.250 line from 4.787,9.250 to 4.725,9.250 line from 0.900,9.588 to 0.963,9.588 line from 4.787,9.588 to 4.725,9.588 line from 0.900,9.925 to 0.963,9.925 line from 4.787,9.925 to 4.725,9.925 line from 0.900,10.262 to 0.963,10.262 line from 4.787,10.262 to 4.725,10.262 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.613,7.888 to 1.613,7.950 line from 1.613,10.262 to 1.613,10.200 line from 2.312,7.888 to 2.312,7.950 line from 2.312,10.262 to 2.312,10.200 line from 3.025,7.888 to 3.025,7.950 line from 3.025,10.262 to 3.025,10.200 line from 3.725,7.888 to 3.725,7.950 line from 3.725,10.262 to 3.725,10.200 line from 4.438,7.888 to 4.438,7.950 line from 4.438,10.262 to 4.438,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 3.800,8.900 to 4.025,8.900 line from 1.250,8.325 to 1.250,8.325 line from 1.250,8.325 to 1.613,8.500 line from 1.613,8.500 to 2.312,8.825 line from 2.312,8.825 to 3.025,9.175 line from 3.025,9.175 to 3.725,9.613 line from 3.725,9.613 to 4.438,10.012 dashwid = 0.037i line dotted from 3.800,8.750 to 4.025,8.750 line dotted from 1.250,8.275 to 1.250,8.275 line dotted from 1.250,8.275 to 1.613,8.412 line dotted from 1.613,8.412 to 2.312,8.562 line dotted from 2.312,8.562 to 3.025,9.088 line dotted from 3.025,9.088 to 3.725,9.375 line dotted from 3.725,9.375 to 4.438,10.000 line dashed from 3.800,8.600 to 4.025,8.600 line dashed from 1.250,8.250 to 1.250,8.250 line dashed from 1.250,8.250 to 1.613,8.438 line dashed from 1.613,8.438 to 2.312,8.637 line dashed from 2.312,8.637 to 3.025,9.088 line dashed from 3.025,9.088 to 3.725,9.525 line dashed from 3.725,9.525 to 4.438,10.075 dashwid = 0.075i line dotted from 3.800,8.450 to 4.025,8.450 line dotted from 1.250,8.262 to 1.250,8.262 line dotted from 1.250,8.262 to 1.613,8.425 line dotted from 1.613,8.425 to 2.312,8.613 line dotted from 2.312,8.613 to 3.025,9.137 line dotted from 3.025,9.137 to 3.725,9.512 line dotted from 3.725,9.512 to 4.438,9.988 "0" at 0.825,7.810 rjust "20" at 0.825,8.147 rjust "40" at 0.825,8.485 rjust "60" at 0.825,8.822 rjust "80" at 0.825,9.172 rjust "100" at 0.825,9.510 rjust "120" at 0.825,9.847 rjust "140" at 0.825,10.185 rjust "0" at 0.900,7.660 "2" at 1.613,7.660 "4" at 2.312,7.660 "6" at 3.025,7.660 "8" at 3.725,7.660 "10" at 4.438,7.660 "Time (sec)" at 0.150,8.997 "Number of Clients" at 2.837,7.510 "Figure #2: MAB Phase 2 (copying)" at 2.837,10.335 "NFS" at 3.725,8.822 rjust "Leases" at 3.725,8.672 rjust "Leases, Rdirlookup" at 3.725,8.522 rjust "Leases, Attrib leases, Rdirlookup" at 3.725,8.372 rjust
E .)z .(z
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.188 to 0.963,8.188 line from 4.787,8.188 to 4.725,8.188 line from 0.900,8.488 to 0.963,8.488 line from 4.787,8.488 to 4.725,8.488 line from 0.900,8.775 to 0.963,8.775 line from 4.787,8.775 to 4.725,8.775 line from 0.900,9.075 to 0.963,9.075 line from 4.787,9.075 to 4.725,9.075 line from 0.900,9.375 to 0.963,9.375 line from 4.787,9.375 to 4.725,9.375 line from 0.900,9.675 to 0.963,9.675 line from 4.787,9.675 to 4.725,9.675 line from 0.900,9.963 to 0.963,9.963 line from 4.787,9.963 to 4.725,9.963 line from 0.900,10.262 to 0.963,10.262 line from 4.787,10.262 to 4.725,10.262 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.613,7.888 to 1.613,7.950 line from 1.613,10.262 to 1.613,10.200 line from 2.312,7.888 to 2.312,7.950 line from 2.312,10.262 to 2.312,10.200 line from 3.025,7.888 to 3.025,7.950 line from 3.025,10.262 to 3.025,10.200 line from 3.725,7.888 to 3.725,7.950 line from 3.725,10.262 to 3.725,10.200 line from 4.438,7.888 to 4.438,7.950 line from 4.438,10.262 to 4.438,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 3.800,8.775 to 4.025,8.775 line from 1.250,8.975 to 1.250,8.975 line from 1.250,8.975 to 1.613,8.963 line from 1.613,8.963 to 2.312,8.988 line from 2.312,8.988 to 3.025,9.037 line from 3.025,9.037 to 3.725,9.062 line from 3.725,9.062 to 4.438,9.100 dashwid = 0.037i line dotted from 3.800,8.625 to 4.025,8.625 line dotted from 1.250,9.312 to 1.250,9.312 line dotted from 1.250,9.312 to 1.613,9.287 line dotted from 1.613,9.287 to 2.312,9.675 line dotted from 2.312,9.675 to 3.025,9.262 line dotted from 3.025,9.262 to 3.725,9.738 line dotted from 3.725,9.738 to 4.438,9.512 line dashed from 3.800,8.475 to 4.025,8.475 line dashed from 1.250,9.400 to 1.250,9.400 line dashed from 1.250,9.400 to 1.613,9.287 line dashed from 1.613,9.287 to 2.312,9.575 line dashed from 2.312,9.575 to 3.025,9.300 line dashed from 3.025,9.300 to 3.725,9.613 line dashed from 3.725,9.613 to 4.438,9.512 dashwid = 0.075i line dotted from 3.800,8.325 to 4.025,8.325 line dotted from 1.250,9.400 to 1.250,9.400 line dotted from 1.250,9.400 to 1.613,9.412 line dotted from 1.613,9.412 to 2.312,9.700 line dotted from 2.312,9.700 to 3.025,9.537 line dotted from 3.025,9.537 to 3.725,9.938 line dotted from 3.725,9.938 to 4.438,9.812 "0" at 0.825,7.810 rjust "5" at 0.825,8.110 rjust "10" at 0.825,8.410 rjust "15" at 0.825,8.697 rjust "20" at 0.825,8.997 rjust "25" at 0.825,9.297 rjust "30" at 0.825,9.597 rjust "35" at 0.825,9.885 rjust "40" at 0.825,10.185 rjust "0" at 0.900,7.660 "2" at 1.613,7.660 "4" at 2.312,7.660 "6" at 3.025,7.660 "8" at 3.725,7.660 "10" at 4.438,7.660 "Time (sec)" at 0.150,8.997 "Number of Clients" at 2.837,7.510 "Figure #3: MAB Phase 3 (stat/find)" at 2.837,10.335 "NFS" at 3.725,8.697 rjust "Leases" at 3.725,8.547 rjust "Leases, Rdirlookup" at 3.725,8.397 rjust "Leases, Attrib leases, Rdirlookup" at 3.725,8.247 rjust
E .)z .(z
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.188 to 0.963,8.188 line from 4.787,8.188 to 4.725,8.188 line from 0.900,8.488 to 0.963,8.488 line from 4.787,8.488 to 4.725,8.488 line from 0.900,8.775 to 0.963,8.775 line from 4.787,8.775 to 4.725,8.775 line from 0.900,9.075 to 0.963,9.075 line from 4.787,9.075 to 4.725,9.075 line from 0.900,9.375 to 0.963,9.375 line from 4.787,9.375 to 4.725,9.375 line from 0.900,9.675 to 0.963,9.675 line from 4.787,9.675 to 4.725,9.675 line from 0.900,9.963 to 0.963,9.963 line from 4.787,9.963 to 4.725,9.963 line from 0.900,10.262 to 0.963,10.262 line from 4.787,10.262 to 4.725,10.262 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.613,7.888 to 1.613,7.950 line from 1.613,10.262 to 1.613,10.200 line from 2.312,7.888 to 2.312,7.950 line from 2.312,10.262 to 2.312,10.200 line from 3.025,7.888 to 3.025,7.950 line from 3.025,10.262 to 3.025,10.200 line from 3.725,7.888 to 3.725,7.950 line from 3.725,10.262 to 3.725,10.200 line from 4.438,7.888 to 4.438,7.950 line from 4.438,10.262 to 4.438,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 3.800,8.775 to 4.025,8.775 line from 1.250,9.412 to 1.250,9.412 line from 1.250,9.412 to 1.613,9.425 line from 1.613,9.425 to 2.312,9.463 line from 2.312,9.463 to 3.025,9.600 line from 3.025,9.600 to 3.725,9.875 line from 3.725,9.875 to 4.438,10.075 dashwid = 0.037i line dotted from 3.800,8.625 to 4.025,8.625 line dotted from 1.250,9.450 to 1.250,9.450 line dotted from 1.250,9.450 to 1.613,9.438 line dotted from 1.613,9.438 to 2.312,9.438 line dotted from 2.312,9.438 to 3.025,9.525 line dotted from 3.025,9.525 to 3.725,9.550 line dotted from 3.725,9.550 to 4.438,9.662 line dashed from 3.800,8.475 to 4.025,8.475 line dashed from 1.250,9.438 to 1.250,9.438 line dashed from 1.250,9.438 to 1.613,9.412 line dashed from 1.613,9.412 to 2.312,9.450 line dashed from 2.312,9.450 to 3.025,9.500 line dashed from 3.025,9.500 to 3.725,9.613 line dashed from 3.725,9.613 to 4.438,9.675 dashwid = 0.075i line dotted from 3.800,8.325 to 4.025,8.325 line dotted from 1.250,9.387 to 1.250,9.387 line dotted from 1.250,9.387 to 1.613,9.600 line dotted from 1.613,9.600 to 2.312,9.625 line dotted from 2.312,9.625 to 3.025,9.738 line dotted from 3.025,9.738 to 3.725,9.850 line dotted from 3.725,9.850 to 4.438,9.800 "0" at 0.825,7.810 rjust "5" at 0.825,8.110 rjust "10" at 0.825,8.410 rjust "15" at 0.825,8.697 rjust "20" at 0.825,8.997 rjust "25" at 0.825,9.297 rjust "30" at 0.825,9.597 rjust "35" at 0.825,9.885 rjust "40" at 0.825,10.185 rjust "0" at 0.900,7.660 "2" at 1.613,7.660 "4" at 2.312,7.660 "6" at 3.025,7.660 "8" at 3.725,7.660 "10" at 4.438,7.660 "Time (sec)" at 0.150,8.997 "Number of Clients" at 2.837,7.510 "Figure #4: MAB Phase 4 (grep/wc/find)" at 2.837,10.335 "NFS" at 3.725,8.697 rjust "Leases" at 3.725,8.547 rjust "Leases, Rdirlookup" at 3.725,8.397 rjust "Leases, Attrib leases, Rdirlookup" at 3.725,8.247 rjust
E .)z .(z
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.150 to 0.963,8.150 line from 4.787,8.150 to 4.725,8.150 line from 0.900,8.412 to 0.963,8.412 line from 4.787,8.412 to 4.725,8.412 line from 0.900,8.675 to 0.963,8.675 line from 4.787,8.675 to 4.725,8.675 line from 0.900,8.938 to 0.963,8.938 line from 4.787,8.938 to 4.725,8.938 line from 0.900,9.213 to 0.963,9.213 line from 4.787,9.213 to 4.725,9.213 line from 0.900,9.475 to 0.963,9.475 line from 4.787,9.475 to 4.725,9.475 line from 0.900,9.738 to 0.963,9.738 line from 4.787,9.738 to 4.725,9.738 line from 0.900,10.000 to 0.963,10.000 line from 4.787,10.000 to 4.725,10.000 line from 0.900,10.262 to 0.963,10.262 line from 4.787,10.262 to 4.725,10.262 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.613,7.888 to 1.613,7.950 line from 1.613,10.262 to 1.613,10.200 line from 2.312,7.888 to 2.312,7.950 line from 2.312,10.262 to 2.312,10.200 line from 3.025,7.888 to 3.025,7.950 line from 3.025,10.262 to 3.025,10.200 line from 3.725,7.888 to 3.725,7.950 line from 3.725,10.262 to 3.725,10.200 line from 4.438,7.888 to 4.438,7.950 line from 4.438,10.262 to 4.438,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 3.800,8.675 to 4.025,8.675 line from 1.250,8.800 to 1.250,8.800 line from 1.250,8.800 to 1.613,8.912 line from 1.613,8.912 to 2.312,9.113 line from 2.312,9.113 to 3.025,9.438 line from 3.025,9.438 to 3.725,9.750 line from 3.725,9.750 to 4.438,10.088 dashwid = 0.037i line dotted from 3.800,8.525 to 4.025,8.525 line dotted from 1.250,8.637 to 1.250,8.637 line dotted from 1.250,8.637 to 1.613,8.700 line dotted from 1.613,8.700 to 2.312,8.713 line dotted from 2.312,8.713 to 3.025,8.775 line dotted from 3.025,8.775 to 3.725,8.887 line dotted from 3.725,8.887 to 4.438,9.037 line dashed from 3.800,8.375 to 4.025,8.375 line dashed from 1.250,8.675 to 1.250,8.675 line dashed from 1.250,8.675 to 1.613,8.688 line dashed from 1.613,8.688 to 2.312,8.713 line dashed from 2.312,8.713 to 3.025,8.825 line dashed from 3.025,8.825 to 3.725,8.887 line dashed from 3.725,8.887 to 4.438,9.062 dashwid = 0.075i line dotted from 3.800,8.225 to 4.025,8.225 line dotted from 1.250,8.700 to 1.250,8.700 line dotted from 1.250,8.700 to 1.613,8.688 line dotted from 1.613,8.688 to 2.312,8.762 line dotted from 2.312,8.762 to 3.025,8.812 line dotted from 3.025,8.812 to 3.725,8.925 line dotted from 3.725,8.925 to 4.438,9.025 "0" at 0.825,7.810 rjust "50" at 0.825,8.072 rjust "100" at 0.825,8.335 rjust "150" at 0.825,8.597 rjust "200" at 0.825,8.860 rjust "250" at 0.825,9.135 rjust "300" at 0.825,9.397 rjust "350" at 0.825,9.660 rjust "400" at 0.825,9.922 rjust "450" at 0.825,10.185 rjust "0" at 0.900,7.660 "2" at 1.613,7.660 "4" at 2.312,7.660 "6" at 3.025,7.660 "8" at 3.725,7.660 "10" at 4.438,7.660 "Time (sec)" at 0.150,8.997 "Number of Clients" at 2.837,7.510 "Figure #5: MAB Phase 5 (compile)" at 2.837,10.335 "NFS" at 3.725,8.597 rjust "Leases" at 3.725,8.447 rjust "Leases, Rdirlookup" at 3.725,8.297 rjust "Leases, Attrib leases, Rdirlookup" at 3.725,8.147 rjust
E .)z .pp In figure 2, where a subtree of seventy small files is copied, the difference between the protocol variants is minimal, with the NQNFS variants performing slightly better. For this case, the Readdir_and_Lookup RPC is a slight hindrance under heavy load, possibly because it results in larger directory blocks in the buffer cache. .pp In figure 3, for the phase that gets file attributes for a large number of files, the leasing variants take about 50% longer, indicating that there are performance problems in this area. For the case where valid current leases are required for every file when attributes are returned, the performance is significantly worse than when the attributes are allowed to be stale by a few seconds on the client. I have not been able to explain the oscillation in the curves for the Lease cases. .pp For the string searching phase depicted in figure 4, the leasing variants that do not require valid leases for files when attributes are returned appear to scale better with server load than NFS. However, the effect appears to be negligible until the server load is fairly heavy. .pp Most of the time in the MAB benchmark is spent in the compilation phase and this is where the differences between caching methods are most pronounced. In figure 5 it can be seen that any protocol variant using Leases performs about a factor of two better than NFS at a load of ten clients. This indicates that the use of NQNFS may allow servers to handle significantly more clients for this type of workload. .pp Table 2 summarizes the MAB run times for all phases for the single client DECstation 5000/25. The Leases case refers to using leases, whereas the Leases, Rdirl case uses the Readdir_and_Lookup RPC as well and the BCache Only case uses leases, but only the buffer cache and not the attribute or name caches. The No Caching cases does not do any client side caching, performing all system calls via synchronous RPCs to the server. .(z .R
Table #2: Single DECstation 5000/25 Client Elapsed Times (sec) |
Phase 1 2 3 4 5 Total % Improvement |
No Caching 6 35 41 40 258 380 -93 |
NFS 5 24 15 20 133 197 0 |
BCache Only 5 20 24 23 116 188 5 |
Leases, Rdirl 5 20 21 20 105 171 13 |
Leases 5 19 21 21 99 165 16 |
Table #3: MAB Phase 5 (compile) |
DS2100 (10.5 MIPS) DS3100 (14.0 MIPS) DS5000/25 (26.7 MIPS) |
Elapsed CPU CPU Elapsed CPU CPU Elapsed CPU CPU |
time Util(%) time time Util(%) time time Util(%) time |
Leases 143 89 127 113 87 98 99 89 88 |
Leases, Rdirl 150 89 134 110 91 100 105 88 92 |
BCache Only 169 85 144 129 78 101 116 75 87 |
NFS 172 77 132 135 74 100 133 71 94 |
No Caching 330 47 155 256 41 105 258 39 101 |
S dashwid = 0.050i line dashed from 0.900,7.888 to 4.787,7.888 line dashed from 0.900,7.888 to 0.900,10.262 line from 0.900,7.888 to 0.963,7.888 line from 4.787,7.888 to 4.725,7.888 line from 0.900,8.350 to 0.963,8.350 line from 4.787,8.350 to 4.725,8.350 line from 0.900,8.800 to 0.963,8.800 line from 4.787,8.800 to 4.725,8.800 line from 0.900,9.262 to 0.963,9.262 line from 4.787,9.262 to 4.725,9.262 line from 0.900,9.713 to 0.963,9.713 line from 4.787,9.713 to 4.725,9.713 line from 0.900,10.175 to 0.963,10.175 line from 4.787,10.175 to 4.725,10.175 line from 0.900,7.888 to 0.900,7.950 line from 0.900,10.262 to 0.900,10.200 line from 1.825,7.888 to 1.825,7.950 line from 1.825,10.262 to 1.825,10.200 line from 2.750,7.888 to 2.750,7.950 line from 2.750,10.262 to 2.750,10.200 line from 3.675,7.888 to 3.675,7.950 line from 3.675,10.262 to 3.675,10.200 line from 4.600,7.888 to 4.600,7.950 line from 4.600,10.262 to 4.600,10.200 line from 0.900,7.888 to 4.787,7.888 line from 4.787,7.888 to 4.787,10.262 line from 4.787,10.262 to 0.900,10.262 line from 0.900,10.262 to 0.900,7.888 line from 4.125,8.613 to 4.350,8.613 line from 0.988,8.400 to 0.988,8.400 line from 0.988,8.400 to 1.637,8.575 line from 1.637,8.575 to 2.375,8.713 line from 2.375,8.713 to 3.125,8.900 line from 3.125,8.900 to 3.862,9.137 line from 3.862,9.137 to 4.600,9.425 dashwid = 0.037i line dotted from 4.125,8.463 to 4.350,8.463 line dotted from 0.988,8.375 to 0.988,8.375 line dotted from 0.988,8.375 to 1.637,8.525 line dotted from 1.637,8.525 to 2.375,8.850 line dotted from 2.375,8.850 to 3.125,8.975 line dotted from 3.125,8.975 to 3.862,9.137 line dotted from 3.862,9.137 to 4.600,9.625 line dashed from 4.125,8.312 to 4.350,8.312 line dashed from 0.988,8.525 to 0.988,8.525 line dashed from 0.988,8.525 to 1.637,8.688 line dashed from 1.637,8.688 to 2.375,8.838 line dashed from 2.375,8.838 to 3.125,9.150 line dashed from 3.125,9.150 to 3.862,9.275 line dashed from 3.862,9.275 to 4.600,9.588 dashwid = 0.075i line dotted from 4.125,8.162 to 4.350,8.162 line dotted from 0.988,8.525 to 0.988,8.525 line dotted from 0.988,8.525 to 1.637,8.838 line dotted from 1.637,8.838 to 2.375,8.863 line dotted from 2.375,8.863 to 3.125,9.137 line dotted from 3.125,9.137 to 3.862,9.387 line dotted from 3.862,9.387 to 4.600,10.200 "0" at 0.825,7.810 rjust "100" at 0.825,8.272 rjust "200" at 0.825,8.722 rjust "300" at 0.825,9.185 rjust "400" at 0.825,9.635 rjust "500" at 0.825,10.097 rjust "0" at 0.900,7.660 "50" at 1.825,7.660 "100" at 2.750,7.660 "150" at 3.675,7.660 "200" at 4.600,7.660 "Time (sec)" at 0.150,8.997 "Round Trip Delay (msec)" at 2.837,7.510 "Figure #6: MAB Phase 5 (compile)" at 2.837,10.335 "Leases,UDP" at 4.050,8.535 rjust "Leases,TCP" at 4.050,8.385 rjust "NFS,UDP" at 4.050,8.235 rjust "NFS,TCP" at 4.050,8.085 rjust
E .)z .(z .R
Table #4: MAB Phase 5 (compile) for Internetwork Delays |
NFS,UDP NFS,TCP Leases,UDP Leases,TCP |
Delay Elapsed Standard Elapsed Standard Elapsed Standard Elapsed Standard |
(msec) time (sec) Deviation time (sec) Deviation time (sec) Deviation time (sec) Deviation |
5 139 2.9 139 2.4 112 7.0 108 6.0 |
40 175 5.1 208 44.5 150 23.8 139 4.3 |
80 207 3.9 213 4.7 180 7.7 210 52.9 |
120 276 29.3 273 17.1 221 7.7 238 5.8 |
160 304 7.2 328 77.1 275 21.5 274 10.1 |
200 372 35.0 506 235.1 338 25.2 379 69.2 |