SKALA: Scalable Cooperative Caching Algorithm Based on Bloom Filters

Similar documents
Summary Cache based Co-operative Proxies

Bloom Filters. References:

CLIP: A Compact, Load-balancing Index Placement Function

Efficient Resource Management for the P2P Web Caching

Subway : Peer-To-Peer Clustering of Clients for Web Proxy

March 10, Distributed Hash-based Lookup. for Peer-to-Peer Systems. Sandeep Shelke Shrirang Shirodkar MTech I CSE

Chapter 6 Memory 11/3/2015. Chapter 6 Objectives. 6.2 Types of Memory. 6.1 Introduction

ADAPTIVE AND DYNAMIC LOAD BALANCING METHODOLOGIES FOR DISTRIBUTED ENVIRONMENT

Caching for NASD. Department of Computer Science University of Wisconsin-Madison Madison, WI 53706

Power and Locality Aware Request Distribution Technical Report Heungki Lee, Gopinath Vageesan and Eun Jung Kim Texas A&M University College Station

Design and Implementation of A P2P Cooperative Proxy Cache System

Optimizing the use of the Hard Disk in MapReduce Frameworks for Multi-core Architectures*

Summary Cache: A Scalable Wide-Area Web Cache Sharing Protocol

Threshold-Based Markov Prefetchers

Correlation based File Prefetching Approach for Hadoop

Summary Cache: A Scalable Wide-Area Web Cache Sharing Protocol

Operating System Performance and Large Servers 1

Maintaining Mutual Consistency for Cached Web Objects

Dynamically Provisioning Distributed Systems to Meet Target Levels of Performance, Availability, and Data Quality

arxiv: v1 [cs.ds] 11 Apr 2008

Reducing Disk Latency through Replication

Reducing Cache Energy in Embedded Processors Using Early Tag Access and Tag Overflow Buffer

Real-Time Automatic Detection of Stuck Transactions

CHAPTER 6 Memory. CMPS375 Class Notes (Chap06) Page 1 / 20 Dr. Kuo-pao Yang

Asynchronous Logging and Fast Recovery for a Large-Scale Distributed In-Memory Storage

Assignment 5. Georgia Koloniari

Chapter 8 Virtual Memory

Background. 20: Distributed File Systems. DFS Structure. Naming and Transparency. Naming Structures. Naming Schemes Three Main Approaches

SF-LRU Cache Replacement Algorithm

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System

Trace Driven Simulation of GDSF# and Existing Caching Algorithms for Web Proxy Servers

An Enhanced Bloom Filter for Longest Prefix Matching

Memory. Objectives. Introduction. 6.2 Types of Memory

A Secure and Dynamic Multi-keyword Ranked Search Scheme over Encrypted Cloud Data

Peer-to-Peer Systems. Chapter General Characteristics

Mining Distributed Frequent Itemset with Hadoop

AN ASSOCIATIVE TERNARY CACHE FOR IP ROUTING. 1. Introduction. 2. Associative Cache Scheme

Kathleen Durant PhD Northeastern University CS Indexes

DATABASE SCALABILITY AND CLUSTERING

Improving the Database Logging Performance of the Snort Network Intrusion Detection Sensor

Chapter 8 Virtual Memory

CISC 662 Graduate Computer Architecture Lecture 16 - Cache and virtual memory review

CCP: Conflicts Check Protocol for Bitcoin Block Security 1

Physical characteristics (such as packaging, volatility, and erasability Organization.

An Cross Layer Collaborating Cache Scheme to Improve Performance of HTTP Clients in MANETs

SEAR: SECURED ENERGY-AWARE ROUTING WITH TRUSTED PAYMENT MODEL FOR WIRELESS NETWORKS

Near Memory Key/Value Lookup Acceleration MemSys 2017

DATABASE PERFORMANCE AND INDEXES. CS121: Relational Databases Fall 2017 Lecture 11

A Proxy Caching Scheme for Continuous Media Streams on the Internet

Scalable overlay Networks

SSD Admission Control for Content Delivery Networks

Finding a needle in Haystack: Facebook's photo storage

A Centralized Approaches for Location Management in Personal Communication Services Networks

CHAPTER 6 Memory. CMPS375 Class Notes Page 1/ 16 by Kuo-pao Yang

Cache Controller with Enhanced Features using Verilog HDL

Web-based Energy-efficient Cache Invalidation in Wireless Mobile Environment

Frequently asked questions from the previous class survey

Supplementary File: Dynamic Resource Allocation using Virtual Machines for Cloud Computing Environment

Early Measurements of a Cluster-based Architecture for P2P Systems

Architecture Tuning Study: the SimpleScalar Experience

WHITE PAPER: ENTERPRISE AVAILABILITY. Introduction to Adaptive Instrumentation with Symantec Indepth for J2EE Application Performance Management

A Privacy Preserving Model for Ownership Indexing in Distributed Storage Systems

Eastern Mediterranean University School of Computing and Technology CACHE MEMORY. Computer memory is organized into a hierarchy.

Page Mapping Scheme to Support Secure File Deletion for NANDbased Block Devices

An Efficient Provable Data Possession Scheme based on Counting Bloom Filter for Dynamic Data in the Cloud Storage

Nowadays data-intensive applications play a

Process size is independent of the main memory present in the system.

Chapter 17: Distributed-File Systems. Operating System Concepts 8 th Edition,

Problems in Reputation based Methods in P2P Networks

I. INTRODUCTION FACTORS RELATED TO PERFORMANCE ANALYSIS

Example: CPU-bound process that would run for 100 quanta continuously 1, 2, 4, 8, 16, 32, 64 (only 37 required for last run) Needs only 7 swaps

Modelling and Analysis of Push Caching

PERSONAL communications service (PCS) provides

Survey on MapReduce Scheduling Algorithms

Reducing Outgoing Traffic of Proxy Cache by Using Client-Cluster

Database Architectures

Reduction of Periodic Broadcast Resource Requirements with Proxy Caching

Achieving Distributed Buffering in Multi-path Routing using Fair Allocation

Flexible Cache Cache for afor Database Management Management Systems Systems Radim Bača and David Bednář

A Transpositional Redundant Data Update Algorithm for Growing Server-less Video Streaming Systems

Page 1. Multilevel Memories (Improving performance using a little cash )

SPECULATIVE MULTITHREADED ARCHITECTURES

Compact data structures: Bloom filters

WHITE PAPER Application Performance Management. The Case for Adaptive Instrumentation in J2EE Environments

Multiprocessor Systems. Chapter 8, 8.1

Memory Management. Reading: Silberschatz chapter 9 Reading: Stallings. chapter 7 EEL 358

Last Class: Deadlocks. Where we are in the course

Lecture 2: Memory Systems

A Fast and High Throughput SQL Query System for Big Data

Computer-System Organization (cont.)

Cooperative Caching Middleware for Cluster-Based Servers

Codes, Bloom Filters, and Overlay Networks. Michael Mitzenmacher

Hibachi: A Cooperative Hybrid Cache with NVRAM and DRAM for Storage Arrays

Adaptive Prefetching Technique for Shared Virtual Memory

A Top Catching Scheme Consistency Controlling in Hybrid P2P Network

Revolutionizing Technological Devices such as STT- RAM and their Multiple Implementation in the Cache Level Hierarchy

Democratizing Content Publication with Coral

LECTURE 11. Memory Hierarchy

Software optimization technique for the reduction page fault to increase the processor performance

Appropriate Item Partition for Improving the Mining Performance

Transcription:

SKALA: Scalable Cooperative Caching Algorithm Based on Bloom Filters Nodirjon Siddikov and Dr. Hans-Peter Bischof 2 Enterprise IT Operation and Planning Unit, FE Coscom LLC, Tashkent, Uzbekistan 2 Computer Science Department, Rochester Institute of Technology, Rochester, New York, USA Abstract - This paper presents the design, implementation and evaluation of a novel cooperative caching algorithm, called SKALA, which is based on the bloom filter data structure. The algorithm is designed using decentralized architecture and offers highly scalable solution. It resolves the problems related to an inefficient use of the manager s resources. The scalability of the algorithm is maintained by distributing the global cache information among cooperating clients. Furthermore, the memory overhead is decreased due to a bloom filter data structure which reduces the global cache size. The correctness of the algorithm is evaluated by running experiments. The experiment results demonstrate that SKALA decreases the manager load by the factor of nine which implies that it is more scalable compared to existing algorithms. The results also show a significant reduction in the memory overhead which implies that SKALA uses manager s resources more efficiently. Keywords: bloom filter, global and local cache, scalability, decentralized architecture, memory hierarchy Introduction The distributed systems, such as distributed file systems (DFS) and content distribution networks (CDN), usually employ caching mechanism. The primary goal of this mechanism is to temporarily store the frequently or recently accessed data, so that future data requests can be served faster. The benefit of caching can be extended by implementing a cooperative caching mechanism in these systems. Cooperative caching is implemented using two layers of memory local and global cache. The distributed systems based on client/server architecture usually use the local cache to provide data reusability at client side. While the local cache is dedicated to specific client, the global cache is shared among all clients. The global cache s primary goal is to help clients benefit from earlier accesses (to the same data) by other clients sharing the global cache. The content of the local and global caches are managed by special caching algorithms such as N-chance [4] and hint-based algorithms [5].. Research problems The existing cooperative caching algorithms, such as N-chance and hint-based algorithms face several problems that prevent them from being applicable for wide variety of distributed systems. First, these algorithms do not scale when the number of clients or the local cache size is increased. The primary reason for such behavior is due to a centralized architecture implemented in these algorithms. This architecture uses single manager node which is responsible for the maintenance of the global cache. When the number of clients increases, the manager is required to handle more requests coming from clients and eventually becomes overloaded. Second, existing algorithms create a memory overhead on the manager side. As the number of clients increase, the global cache size at the manager also increases gradually which causes a memory overhead..2 Proposed solution This paper addresses the research problems by introducing a novel cooperative caching algorithm, called SKALA, which is based on a bloom filter data structure. SKALA uses decentralized architecture that relieves the manager from global cache maintenance and distributes the global cache among client nodes. Thus, clients would have their own copy of the global cache so that they avoid contacting the manager for the data. This feature reduces the load on the manager to maintain the scalability of the algorithm. Moreover, SKALA decreases memory overhead by incorporating the bloom filter into the global cache. The proposed solution is suitable for distributed systems that operate in client/server environment. In order to evaluate the performance of the algorithm, a tracedriven software simulator has been developed. The experiment results demonstrate the effectiveness and correctness of the algorithm. According to the results, SKALA performs better compared to the existing algorithms when the number of clients or the local cache size increases. In particular, the bloom filter reduces the global cache overhead by factor of nine and maintains the algorithm s scalability over many client nodes.

.3 Motivation The primary motivation of this paper is to measure the scalability of the cooperative caching algorithms. Another motivation is to explore the relationship between cryptography and caching algorithms. The bloom filter data structure, for example, establishes this relationship, because it uses a cryptographic hash function to insert, lookup and delete its elements. Moreover, it was also claimed that bloom filter can be applied for caching algorithms to save memory space [2]. The bloom filters and hash functions are relatively new in the current research area, thus it is interesting to see how they help cooperative caching algorithms be scalable..4 Organization of paper The current paper is organized as follows: Section 2 describes the required background knowledge and concepts. Section 3 elaborates more into existing cooperative caching algorithms. Section 4 examines the research problem and introduces the novel caching algorithm. Section 5 describes the experiments and the metrics used to evaluate the algorithms. The limitations of this paper and the future works in this research field are discussed in Sections 6 and 7, respectively. Finally, Section 8 summarizes the paper by presenting the conclusions drawn from the experiment results. 2 Background 2. Cache memory A cache memory transparently stores the data so that future data requests can be served faster [9]. It can be used to increase the performance of secondary storage devices, such as a hard disk, by saving the copies of frequently or recently accessed blocks. In a client/server environment, caching is used to reduce the request latency, service time (i.e. round trip time) and the network traffic. The data stored in the cache may either be a previously computed value or the block that has been requested before. The cache memory is a part of the computer memory hierarchy ordered from the fastest memory at the top to the slowest one at the bottom. In such setting, cache filters out the data request directed toward the slower layers of the hierarchy. For example, when the client requests the data block, it first checks the cache. If the requested data is in the cache (i.e. a cache hit), it is served directly from the cache memory, which is relatively faster. Otherwise (i.e. a cache miss), the data has to be fetched from the slower memory layer such as a disk. Therefore, the performance of the system will be improved if more data is read from the cache [9]. The size of a cache depends on the requirements of the system, but it is usually kept small to maintain its efficiency. 2.2 Cooperative caching system A typical cooperative caching system in client/server environment usually implements the local and global caches. The local cache is implemented in the client side as part of its memory hierarchy. The global cache is also considered as a layer in the hierarchy and it is positioned between a local cache and the server s storage [5]. Its content is managed by a cooperative caching algorithm using the logic of least recently used (LRU) and least frequently used (LFU) algorithms. The architecture of cooperative caching system usually involves a manager, clients and a server. The manager implements and maintains the global cache; the server hosts the data blocks and the client sends the read requests to these blocks. The manager is responsible for the coordination of the clients requests to the blocks. The extent of coordination is different among various cooperative caching algorithms and it is considered a major distinction between them [5]. Moreover, the clients have to cooperate with each other when accessing the blocks. Cooperation takes place when one client does not have the required block in its local cache and it probes caches of other clients for the required data. Cooperative caching systems are usually designed using a centralized architecture. In this architecture, if client experiences local cache miss, then it contacts the manager to lookup the global cache. The manager usually knows which client s cache contains the required block through its global cache. If there is a global cache hit, the manager redirects the request to the appropriate client. Otherwise, the manager fetches the block from the server which may be a slow and an expensive process. Figure illustrates an example of such centralized architecture. Client Manager Client 2 Client 3 Server Client 4 Figure : A centralized cooperative caching system. In this system, a single manager is responsible to maintain the global cache.

3 Existing algorithms 3. N-chance algorithm The N-chance algorithm is one of the pioneers in the field of cooperative caching. It uses a centralized architecture which includes clients, the manager and the server. In this algorithm, the local cache is located in the clients side. But the global cache is maintained by the manager and has the comprehensive view of the all local caches. Local cache content is managed by LRU cache replacement algorithm, but the global cache is coordinated using a more sophisticated policy. In this policy, the data block is either discarded or kept in the global cache based on its quantity in the cooperative caching system. If there is only one specific block in entire system, it is called a singlet; otherwise it is considered as a non-singlet. The singlet data blocks are forwarded to a randomly selected client to further retain them in the system; otherwise, they are discarded immediately. Each singlet block is given a recirculation count N such that every time the block is forwarded, the count is decremented. In other words, the block is given N chances to stay in the cooperative caching system. When the count reaches zero, the block is discarded regardless of its singlet status [4]. The central manager component plays an important role in the N-chance algorithm. It is responsible for global cache maintenance and lookup, and forwarding the block requests to the clients and the server. Every time client inserts or removes a block from its cache, it reports these changes to the manager. The manager uses this information about changes to maintain the consistency of the global cache [4]. 3.2 Hint-based algorithm In N-chance algorithm, the information contained in the global cache is considered as facts. This is because global cache reflects the factual data stored in the local caches of clients. However, maintenance of these factual data increases overhead on the manager. The hint-based cooperative caching algorithm attempts to solve this overhead problem by relaxing the centralized control of global cache. In particular, the algorithm distributes the portions of the global cache information among clients as hints, so that clients can make local caching decisions. Thus, the global cache is maintained by both clients and the manager [5]. In such setting, the manager still retains the control of the global cache, but it incurs much less overhead from clients. Facts and hints are main components of the hint-based algorithm. They usually contain the information about the location of a master block, which is the original block fetched from the server. The hints reduce the client s dependence on the manager when performing caching operations. However, the hints are not always accurate, because they are local to the client and they do not reflect the changes taking place in the caches of other clients. For example, if a hint tells the client about the location of a particular master block, it is not guaranteed that the block is present at the remote client s cache. The chances are that the remote block might have been forwarded to another client or it has been discarded entirely. Also, the information about this change might not have been reflected in the client s hint. Thus, the hint gives client only a clue about the probable location of a block in the cooperative caching system. However, managing hints is less costly for a client than managing facts, because the accuracy of hints needs not to be maintained at all times [5]. 4 New algorithm: SKALA 4. Problems with existing algorithms There are several problems associated with existing cooperative caching algorithms. The first problem is related to their scalability the algorithms do not scale when the number of clients increase in the cooperative caching system. Increased number of clients generate excessive amount of block requests towards the manager and causes it to get overloaded. For example, in the N-chance algorithm, the singlet block is relocated to the remote client through the manager. When the number of clients increases, such block relocation procedures happen more often which causes a communication overhead among the clients and the manager. In the case of hint-based algorithm, the local hints may become obsolete, thus clients will be required to contact the manager to obtain the fact. Such algorithm also produces a communication overhead as the number of clients increases. Also, it may take a while until hints are updated, so there is a risk for a client to perform an inaccurate caching operation based on the obsolete hint. The outcome of this operation is unfavorable since inaccurate decisions increase the cache miss rate [8]. Another problem of existing algorithms is associated with a memory overhead placed on the global cache. As more clients are added to the system, the manager has to allocate more memory space for the global cache. While the hint-based algorithm mitigates this problem by using hints, it still maintains facts in the global cache at the cost of manager s resource. This may result in a waste of memory resource when the number of obsolete facts becomes excessive. 4.2 Proposed solution In order to overcome the problems with existing algorithms, current research paper proposes a solution to reorganize the components presented in Figure. In this solution, the global cache component is removed from the manager and distributed among the clients. Thus, each client maintains its own copy of the global cache besides its local cache. A client periodically updates the state of its global cache. Updating procedure involves calculation of bloom filter from local cache and broadcasting it among the other clients. Figure 2 shows the overall architecture of the proposed solution.

Client Manager Client 2 Client 3 Server Client 4 Figure 2: The architecture of the proposed solution. In this architecture, the global cache component is removed from the manager and distributed to each client. The proposed solution is implemented by a novel cooperative caching algorithm called SKALA. It is designed using decentralized architecture and requires each client to maintain local and global cache components. The local cache stores the accurate state of the data block including its content. But, the global cache stores only approximate information about blocks. Due to such approximate information, the global cache lookup operation may return false positive (i.e. false cache hit) and false negative (i.e. false caches miss) results. However, in SKALA, the local cache is accessed more frequently than the global cache. Therefore, the algorithm does not keep the global cache up-to-date at all times and false positives and negatives happen occasionally within tolerable threshold. SKALA also reduces the global cache size by using bloom filter. This assures that global cache uses less space in client s memory which increases the local cache hit rate. 4.3 Data structures used in SKALA SKALA uses traditional and novel data structures to implement the cache memory (Figure 3). The local cache is implemented using a hash table which keeps each data block as a key/value pair. The key represents the block s ID and the value denotes the block s content. Unlike a hash table, a bloom filter only stores the block s ID as a key, but the block contents are not stored [6]. Such design gives an advantage during caching operations. For example, a bloom filter spends less time to look up the block information compared to the hash table. But, the time to access the block contents stored in the local cache becomes significant because of the network latency []. The bloom filter data structure is considered as an exceptional feature of the SKALA. It is a probabilistic data structure which basically is an array. Similar to an array, it supports insert, delete and lookup operations. However, the result of the lookup operation is returned with some level of probability. For example, the lookup operation may result in false positives and negatives. The false negative happens when the particular block is stored in the cache, but the bloom filter says otherwise. On the other hand, the false positive occurs when the block is not stored in the client s cache, but the bloom filter says otherwise. Even though these errors affect the cache hit ratio, bloom filter keeps the logic of the cooperative caching algorithm intact. For example, a false cache hit does not result in a wrong block being served [2]. The probability of getting false positives and negatives can be controlled by proper choice of values for bloom filter parameters (such as its size and expected number of elements). One of the advantages of bloom filter is its fixed size so that the capacity of the global cache does not change over time. On the other hand, the bloom filter can only be used for cache lookup operation, and it cannot directly be used to store the block s other attributes such as its size [7]. 2 3 4 5 6 7 8 9... Accurate information Local cache (stored in a hash table) Approximate information Element a h (a) = 3 h 2 (a) = 3 h 3 (a) = 5 h 4 (a) = 8 h 5 (a) = Global cache (stored in a bloom filter) m bits Figure 3: The data structures used in the local and global cache. 4.4 Algorithm limitations Even though the SKALA has significant advantages over the existing algorithms, it exhibits some limitations. First, SKALA only works in block level granularity; thus, the algorithm requires the data to be split into blocks. Thus, SKALA accepts block ID as an input, but not a whole file name. Second, the performance of SKALA under large cooperative caching systems such as CDNs is not predictable. The algorithm is only tested with a cache memory which size is 64 248 KB. Such test sizes are significantly small compared to the cache sizes of real-world distributed systems. Third, SKALA executes its operations sequentially and is not tailored to run in parallel. In order to develop a parallel version of the algorithm, a special parallel library has to be used. Also, applying parallelism into algorithm requires an external synchronization of internally used data structures.

5 Evaluation 5. Evaluation metrics The following metrics are used to evaluate the performance of the cooperative caching algorithms: - Manager load measures the overhead a client imposes on the manager. The overhead is expressed as a number of messages generated by the client to communicate with the manager. This metric is important because it represents the amount of work completed by the manager for cooperative caching operations. - Memory overhead measures the overhead imposed on the manager s memory. The size of the global cache is used to determine the memory overhead. Such measurement is also an important factor in estimating the algorithm s scalability. 5.2 Experiment results In order to conduct the experiments, a special software simulator is developed in Java which implements all cooperative caching algorithms under investigation. The simulator used a single Java Virtual Machine and its input parameters are adjusted through a configuration file. List of algorithms tested are provided below: - N-chance algorithm; - Hint-based algorithm; - Non-bloom filter based algorithm; - Bloom filter based algorithm (SKALA). The input parameters of the simulator specific to caching algorithms (local cache size, the number of clients and the network latency) are adjusted regularly based on the requirement of the experiment. 5.2. Manager load Figure 4 shows the measurement of the load imposed on the manager. The load is directly proportional to the amount of messages exchanged between clients and the manager. These messages are broken down to consistency, replacement and lookup messages. According to the figure 4, the N-chance algorithm imposes most load on the manager compared to the rest of the algorithms. Its centralized architecture requires clients to make frequent contacts to the manager to lookup the global cache. Another reason is because a client constantly updates the manager with the change in its local cache content for the purpose of global cache maintenance. Consistency messages put most of the load on the manager due their importance for the global cache. In the case of the hint-based algorithm, the manager load is three times less than that of N- chance. Despite using hints, the algorithm still requires clients to contact the manager in order to maintain the facts in the global cache. Finally, the decentralized architecture of SKALA imposes fewer loads on the manager making the algorithm scalable. Because the global cache is locally stored in each client, it does not contact the manager at all for lookup, insert and delete operations. Figure 4: The average load imposed on the manager by each algorithm. The load is defined as the number of messages sent and received by the manager. The manager load is broken down to consistency, replacement and lookup messages. Figure 5: The variation of the manager load as the number of clients increase. It is important to measure the scalability of the algorithms when number of clients increases in the cooperative caching system. If algorithm s load on the manager does not change as more clients join the system, then it is considered as a scalable. The outcome of the experiment for scalability is presented in Figure 5. According to the figure, the manager load on bloom and nonbloom filter based algorithms grows slower than the rest of the algorithms. The decentralized architecture of these algorithms keeps the communication among the clients and the manager to low regardless of the number of clients. However, the N-chance and hint-based algorithms demonstrate a gradual increase of the manager load under the same conditions. The reason is that algorithms require the clients to contact the manager to maintain the global cache consistency. Increased amount of messages degrade the manager s performance which eventually reduces the algorithm s scalability. 5.2.2 Memory overhead Figure 6 shows the result of the experiment which evaluates the memory overhead of the algorithms. This research used the

value of the global cache size to estimate the memory overhead. This value is variable and depends on the aggregate sizes of local caches. According to figure 6, the memory overhead of SKALA is significantly low compared to that of other algorithms. SKALA uses a bloom filter to implement the global cache which keeps its size fixed regardless of number of blocks. On the other hand, the memory overhead is the highest in case of non-bloom filter based algorithm. Such huge difference is due to the method used to store the blocks in the global cache. This algorithm stores the exact copy of each block in the global cache. However, the rest of the algorithms use block s ID to populate the global cache and the actual block contents are stored in the local cache. on the manager. Moreover, both of these algorithms use a variable size global cache which can grow infinitely. Thus, when the number of clients increases, the amount of cached block information consumes more space in the global cache. On the other hand, SKALA s global cache size remains relatively stable until the number of clients reaches 5. The global cache allocates one bloom filter for each client s local cache information, thus exceeding this threshold of 5 clients is sufficient for to increase the size of the global cache. Figure 7: The sensitivity of the memory overhead to the variation of the local cache size. Figure 6: The memory overhead in the cooperative caching algorithms. Another experiment evaluates the scalability of the algorithms when the local cache size varies between 64 24 KB. The experiment assumes that the size of the global cache is proportional to size of the local caches in all algorithms. The result of experiment is shown in figure 7. In case of the nonbloom filter based algorithm, the global cache size increases exponentially as local cache size reaches the 24 KB mark. This algorithm stores the block contents in the global cache, thus local cache content consumes more space in the global cache. N-chance algorithm shows similar behavior but at lesser extent due to allocation of global cache maintenance to the manager. The hint-based algorithm achieves the better result than N-chance through keeping merely master block information in the global cache. Finally, SKALA demonstrates immunity to the increase in the local cache size due to the fixed size of the bloom filter used in its global cache. The final experiment uses the number of clients to evaluate the scalability of the algorithms (Figure 8). According to the figure 8, the number of clients in the system directly affects the memory overhead. N-chance and hint-based algorithms demonstrate that the overhead on the memory grows exponentially when number of clients increase. Such exponential growth indicates that these algorithms are not scalable due to increased block access time and increased load Figure 8: The sensitivity of the memory overhead to the change in the number of clients. 6 Limitations of proposed solution The proposed solution faces some limitations that could affect its performance. For example, the bloom filter data structure only stores the approximate state of the global cache. This may result in false positives and negatives which means not all global cache lookup operations return accurate answer. Inaccurate answers are primary reasons for the local and global cache misses. Consequently, this increases the block access time and reduces the performance of SKALA. Therefore, the bloom filter has to be created with appropriate input parameters. Moreover, SKALA does not implement the cache

writing policy. However, integrating this policy into SKALA would make the contents of cache memory and server disk more consistent. On the other hand, such modification may not change the outcomes of the experiments, because cache writing and block reading policies are mutually exclusive and they do not affect the cache hit/miss rates. Another shortcoming of SKALA is associated with the input data used in the experiments. The input data (trace) is synthetic meaning that it is randomly generated which does not reflect the real world block access pattern. However, using real world traces would increase the credibility of the experiment results. 7 Future work Even though SKALA proved itself as scalable caching algorithm, there are some enhancements that could be applied for the algorithm. One of them entails implementing a cache writing policy in SKALA. According to this policy, when the content of the cache is changed, the updated blocks are written back to the server s disk. Thus, the consistency of the cache memory and the disk is maintained. Another extension to SKALA is to implement an offline caching algorithm. All of the algorithms presented in this paper are all considered online algorithms. The offline algorithm can be used in the experiments to measure the upper performance bound of these online algorithms. Such measurement would help optimize the performance of the existing algorithms. Finally, implementing a multithreading would improve the performance of SKALA. For example, the computation of the bloom filter can be parallelized with multithreading so that each hash functions are calculated by separate thread. 8 Conclusion A cooperative caching system usually implements two layers of cache memory: local and global caches. The system components usually consist of the manager, the clients and the server all of which works under the rule of the specific caching algorithm. The algorithm is also used to coordinate the contents of the local and global caches. The level of coordination is an important factor and is the main difference between various cooperative caching algorithms. The current paper introduces the bloom filter based decentralized caching algorithm, called SKALA, which focuses on the scalability and efficient use of global cache memory. SKALA achieves the scalability by removing the maintenance of the global cache from the manager. Instead, it distributes the entire global cache among the clients. The content of the global cache is composed of a set of bloom filters, one filter to represent each client s local cache. The bloom filter simplifies the implementation of the global cache replacement policy in SKALA which does not involve the manager. The experiments on SKALA show that the load on the manager is decreased due to algorithm s decentralized architecture. This assures the scalability of SKALA without reducing its performance. Moreover, the bloom filter reduces the memory overhead for the global cache. This signifies that SKALA is better at using the manager s resources efficiently compared existing solutions. 9 References [] Mursalin Akon, Towhidul Islam, Xuemin Shen and Ajit Singh (2), SPACE: A lightweight collaborative caching for clusters, Peer-to-Peer Networking and Applications, Vol.3, Iss.2, pp.83 99 [2] Li Fan, Pei Cao, Jussara Almeida, and Andrei Z. Broder (2), Summary cache: a scalable wide-area web cache sharing protocol. IEEE/ACM Trans. Netw. 8, 3 (June 2), 28-293 [3] Madhukar R. Korupolu and Michael Dahlin (22), Coordinated Placement and Replacement for Large-Scale Distributed Caches. IEEE Trans. on Knowl. and Data Eng. 4, 6 (November 22), 37-329 [4] Michael D. Dahlin, Randolph Y. Wang, Thomas E. Anderson, and David A. Patterson (994). Cooperative caching: using remote client memory to improve file system performance. In Proceedings of the st USENIX conference on Operating Systems Design and Implementation (OSDI '94). USENIX Association, Berkeley, CA, USA. [5] Prasenjit Sarkar and John H. Hartman (2), Hint-based cooperative caching. ACM Trans. Comput. Syst. 8, 4 (November 2), 387-49 [6] Francisco Matias Cuenca-Acuna and Thu D. Nguyen (2), Cooperative Caching Middleware for Cluster- Based Servers. In Proceedings of the th IEEE International Symposium on High Performance Distributed Computing (HPDC '). IEEE Computer Society, Washington, DC, USA [7] Purushottam Kulkarni, Prashant Shenoy, and Weibo Gong (23), Scalable techniques for memory-efficient CDN simulations. In Proceedings of the 2th international conference on World Wide Web (WWW '3). ACM, New York, NY, USA [8] Woo Hyun Ahn, Sang Ho Park, Daeyeon Park (2), Efficient cooperative caching for file systems in clusterbased Web servers Cluster Computing, Proceedings. IEEE International Conference on, vol., no., pp.326-334 [9] Buyya, Rajkumar et al; (28), Caching Techniques on CDN Simulated Frameworks, Lecture Notes in Electrical Engineering, Springer Berlin Heidelberg, URL: http://dx.doi.org/.7/978-3-54-77887-5_5, Accessed: October 8, 2 [] Dimitar, Popov et al. (23), Cache memory implementation and design techniques, Web address: http://www.faculty.iu-bremen.de/birk/lectures/ PC- 23/7cache/cache%2memory.htm, Accessed: October 22, 2