Many proxies are either multi-threaded or have multiple processes. Hummingbird is both thread- and process-safe. We implemented multi-threaded versions of both our workload generators, with a thread for the daemons in wg-Hummingbird, and ran similar experiments to the above with one processor running FreeBSD 4.1 with the LinuxThreads library. Table 5 contains a subset of the results of our experiments using four threads and two disks. In multi-threaded squid workload generator, two cache root directories are used, each residing on a disk. The experiment run time for the experiments in Table 5 are consistently longer than the corresponding cases in Table 3 due to an uneven distribution of the files on the 2 disks; we observed a bursty access pattern to each disk in the iostat log. Queuing in the device driver results in longer FS read/write time too. However, the Hummingbird throughput is again 2-4 times greater than for UFS, UFS-async, and UFS-soft.
file | disk | proxy | FS read | FS write | # of disk | mean disk | experiment |
system | size | hit rate | time (ms) | time (ms) | I/Os | I/O time (ms) | run time (s) |
Hummingbird | 4 GB | 0.64 | 4.86 | 1.34 | 1,478,005 | 11.68 | 11,743 |
UFS-async | 4 GB | 0.66 | 5.92 | 6.39 | 5,638,201 | 10.72 | 30,427 |
UFS-soft | 4 GB | 0.66 | 3.25 | 20.42 | 9,405,301 | 9.76 | 45,655 |
UFS | 4 GB | 0.66 | 6.71 | 15.86 | 10,771,201 | 9.05 | 48,577 |
Hummingbird | 8 GB | 0.67 | 6.12 | 1.40 | 1,556,169 | 14.08 | 12,997 |
UFS-async | 8 GB | 0.67 | 6.19 | 5.18 | 5,466,061 | 10.67 | 29,354 |
UFS-soft | 8 GB | 0.67 | 6.04 | 14.67 | 8,678,761 | 10.52 | 44,622 |
UFS | 8 GB | 0.67 | 6.78 | 9.73 | 8,903,641 | 8.74 | 38,464 |