7.4 Allocating Objects to Cache Directories

 <  Day Day Up  >  

When Squid wants to store a cachable response on disk, it calls a function that selects one of the cache directories. It then opens a disk file for writing on the selected directory. If, for some reason, the open ( ) call fails, the response isn't stored. In this case, Squid doesn't try opening a disk file on one of the other cache directories.

Squid has two of these cache_dir selection algorithms. The default algorithm is called least-load ; the alternative is round- robin .

The least-load algorithm, as the name implies, selects that cache directory that currently has the smallest workload. The notion of load depends on the underlying storage scheme. For the aufs , coss , and diskd schemes, the load is related to the number of pending operations. For ufs , the load is constant. For cases in which all cache_dir s have equal load, the algorithm uses free space and maximum object sizes as tie-breakers.

The selection algorithm also takes into account the max- size and read-only options. Squid skips a cache directory if it knows the object size is larger than the limit. It also always skips any read-only directories.

The round-robin algorithm also uses load measurements. It always selects the next cache directory in the list (subject to max-size and read-only ), as long as its load is less than 100%.

Under some circumstances, Squid may fail to select a cache directory. This can happen if all cache_dir s are overloaded or if all have max-size limits less than the size of the object. In this case, Squid simply doesn't write the object to disk. You can use the cache manager to track the number of times Squid fails to select a cache directory. View the store_io page (see Section 14.2.1.41), and find the create.select_fail line.

 <  Day Day Up  >  


Squid
Squid: The Definitive Guide
ISBN: 0596001622
EAN: 2147483647
Year: 2004
Pages: 401
Authors: Duane Wessels

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net