ERCIM News No.41 - April 2000 [contents]
Eliminating the I/O bottleneck from World Wide Web Proxies
by Evangelos P. Markatos
World Wide Web proxies are being widely used today, in order to reduce network traffic, web server load, telecommunication costs, and to provide Internet access to users behind a firewall. Web proxies are typically required to handle a heavy load which reaches up to millions of requests per day. To make matters worse, this load is expected to increase sharply in the near future when users will be able to connect to the Internet via fast modems. A research team at ICS-FORTH investigates methods to enhance the performance of Web proxies thus enhancing web server performances.
Although the network bandwidth has been traditionally thought to be the main bottleneck in a proxys performance this is not true anymore. Recent research results suggest that a proxy server may spend a significant percentage of its time on file-system related activities.
Experimental evaluation of the web proxy at Digital Palo Alto firewall revealed that the disk I/O overhead of caching turns out to be much higher than the latency improvement from cache hits. Thus, to save the disk I/O overhead the Digital Palo Alto proxy server is typically run in its non-caching mode. This disk I/O overhead can be partially attributed to the fact that file systems were designed and optimized for an every-day pattern of use that is completely different from the needs of a web proxy:
- Contrary to read-dominated traditional file systems, disk accesses in web proxies are dominated by write requests: Each URL request that does not hit in the proxys cache must be fetched from the network and stored into the proxys local disk. Thus, each URL miss usually results in a disk write operation. Disk read operations are invoked when a URL request misses the proxys main memory cache, but hits the proxys disk cache. Our measurements suggest that for a web proxy file-system write operations are usually 3-5 times more than file-system read operations.
- Although file-update operations are frequent in traditional file systems, Web proxies rarely update their files: Most of the data on the web change rather infrequently. Published results suggest that the average life of a web document can easily be several days up to several weeks (or even months) long. This fact implies that most URLs stored on a proxys disk may never be updated; they will usually only be replaced by other URLs when the proxy runs out of space.
Thus, traditional file system technology can not keep up with the disk I/O needs of busy web proxies. Our current work focuses on identifying and eliminating the sources that create the disk I/O bottleneck. We investigate the effects of storage management policies for web proxies based on the following principles:
- Avoid file management operations: current proxies store a single URL in each file. Given that each file creation/deletion operation requires 1-2 disk operations, and that most disks can usually perform no more than 50 operations per second, then an average proxy can not deliver more than 20-30 URLs per second, or roughly 100 KBytes/sec, a rate of execution that is orders of magnitude lower than the data transfer rates that current disks can sustain. This data rate is even lower than most Internet connections. We advocate that proxies should not store one URL per file, but use a small number of large files to store all URLs. This approach reduces the number of operations associated with creating, opening, closing, and deleting files.
- Avoid disk operations: proxies should write data in large chunks and reduce the aggressive prefetching being employed by modern operating systems: prefetching is likely to hurt performance since proxy data are not accessed sequentially.
- Preserve locality of reference: each stream of URL requests that arrives in a web proxy from a single client has a significant amount of temporal locality (eg every time a client requests an HTML document (s)he will request the documents embedded images as well). Current proxies destroy this locality of reference by serving several clients at a time, and effectively storing documents requested by different clients in nearby disk locations. The locality of reference that apparently exists in web client requests would be preserved and exploited to achieve a better disk data layout.
We have started testing our approach using a combination of experimental evaluation and simulation. Our initial results are very encouraging: they suggest that our method breaks through the I/O bottleneck and effectively improves performance over traditional proxies (like SQUID) by more than an order of magnitude.
Evangelos P. Markatos ICS-FORTH
Tel: +30 81 391655