(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng

92 32 0
(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng(Luận văn thạc sĩ) Nghiên cứu một số thuật toán cho web caching và ứng dụng

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Nguyễn Quang Thành NGHIÊN CỨU MỘT SỐ THUẬT TOÁN CHO WEB CACHING VÀ ỨNG DỤNG Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Văn Tam Thái Nguyên, năm 2016 i LỜI CAM ĐOAN Luận văn kết nghiên cứu tổng hợp kiến thức mà học viên thu thập trình học tập trường Đại học Công nghệ thông tin Truyền thông - Đại học Thái Nguyên, hướng dẫn, giúp đỡ thầy cô bạn bè đồng nghiệp, đặc biệt hướng dẫn, giúp đỡ PGS.TS Nguyễn Văn Tam Tôi xin cam đoan luận văn sản phẩm chép tài liệu khoa học Học viên NGUYỄN QUANG THÀNH ii LỜI CẢM ƠN Đầu tiên xin gửi lời cảm ơn sâu sắc tới PGS.TS Nguyễn Văn Tam, người hướng dẫn khoa học, tận tình bảo, giúp đỡ thực luận văn Tôi xin cảm ơn thầy cô trường Đại học Công nghệ thông tin Truyền thông - Đại học Thái Nguyên giảng dạy truyền đạt kiến thức cho Cuối cùng, xin cảm ơn người thân bạn bè chia sẻ, gúp đỡ tơi hồn thành luận văn Mặc dù cố gắng hoàn thành luận văn với tất nỗ lực thân, luận văn thiếu sót Kính mong nhận ý kiến đóng góp quý Thầy, Cô bạn bè đồng nghiệp Tôi xin chân thành cảm ơn! Việt trì ngày 10 tháng 05 năm 2016 Nguyễn Quang Thành iii MỤC LỤC TRANG PHỤ BÌA LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii PHỤ LỤCDANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT iv DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT v DANH MỤC CÁC HÌNH VẼ vi DANH MỤC CÁC BẢNG vii MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ WEB CACHING 1.1 Giới thiệu web caching 1.1.1 Vấn đề tải truy cập Internet web caching 1.1.2 Định nghĩa web Caching 1.1.3 Một số khái niệm Caching 1.2 Các kiến trúc web Caching 1.2.1 Kiến trúc cache phân tầng phân tán 1.2.2 Kiến trúc kết hợp (Caching lai) 14 1.3 Ưu nhược điểm Web caching 18 1.4 Kết luận chương 19 CHƯƠNG 2: MỘT SỐ THUẬT TOÁN WEB CACHING 20 2.1 Thuật toán Least Frequently Used with Dynamic Aging (LFU-DA) 20 2.2 Thuật toán Greedy Dual Size (GDS) 21 2.3 Thuật toán Cost Effective (CE) 21 2.4 Thuật toán Least recently used (LRU) 23 2.4.1 Thay trang 23 2.4.2 Các thuật toán thay trang 24 2.4.3 Vấn đề thay Cache 28 2.5 Các thuật toán dựa LRU Web caching 32 2.6 Kết luận chương 38 CHƯƠNG 3: KỸ THUẬT CACHE TRONG WEB PROXY 39 3.1 Cơ cache Squid 39 3.1.1 Lệnh cache_dir 40 3.1.2 Thuật toán thay 43 3.1.3 Loại bỏ đối tượng Cache 45 3.2 Điều khiển cache Squid 49 3.2.1 Thông tin kết nối 50 3.2.2 Thông tin Cache 52 3.2.3 Thời gian dịch vụ trung bình 53 3.2.4 Sử dụng tài nguyên 55 iv 3.2.5 Hàm quản lý nhớ sử dụng 57 3.2.6 Kỹ thuật quản lý nhớ 58 3.2.7 Mô tả file sử dụng Squid 58 3.2.8 Cấu trúc liệu Squid: 60 3.3 Mơ hình thử nghiệm đánh giá kết 61 3.3.1 Cài đặt Squid 61 3.3.2 Thống kê, vẽ đồ thị 67 3.3.3 Đánh giá kết 71 3.4 Kết luận chương 71 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72 TÀI LIỆU THAM KHẢO 73 PHỤ LỤC v DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT Kí hiệu Tên đầy đủ ISP Internet Service Provider ARPANET Advanced Research Projects Agency Network NSFNET National Science Foundation Network WAN Wide Area Network CPU Central Processing Unit LRU Least recently used LFU - DA Least Frequently Used with Dynamic Aging HLRU History LRU GDS Greedy Dual Size CE Cost Effective DNS Domain Name System WWW World Wide Web vi DANH MỤC CÁC HÌNH VẼ Hình 1.1 Vị trí nhớ Web cache Hình 1.2 Sơ đồ biểu diễn Proxy server cache Hình 1.3 Vị trí đặt origin server cache Hình 1.4 Mơ hình phân cấp ISP Hình 1.5 Mơ hình phân 10 Hình 1.6 Sơ đồ đầy đủ kiến trúc phân tầng Web Caching ISP 11 Hình 1.7 Sơ đồ kiến trúc phân tán Web caching ISP 11 Hình 1.8 Sơ đồ Hybrid Web Caching ISP 14 Hình 1.9 Thời gian kết nối trung bình cho toàn N trang Web, phụ thuộc vào số cache kết hợp k 15 Hình 1.10 Thời gian kết nối Caching phân cấp, caching phấn tán caching hỗn hợp 15 Hình 1.11 Thời gian truyền N trang Web 16 Hình 1.12 Thời gian truyền cho caching lai với số đệm tối ưu k, ρ=0,8 17 Hình 2.1 Cấu trúc phần tử bảng trang 24 Hình 2.2 Lược đồ thay nội dung cache thuật toán LRU 25 Hình 2.3 Cấu trúc phần tử bảng trang 27 Hình 2.4 Thuật toán thay cache LRU 32 Hình 2.5 Thuật tốn thay cache HLRU 36 Hình 3.1 Mơ hình thử nghiệm 61 Hình 3.2 Giải nén thư mục nguồn 62 Hình 3.3 Biên dịch # /configure 62 Hình 3.4 Bảy đường dẫn đặt Squid 63 Hình 3.5 Biên dịch mã nguồn 64 Hình 3.6 Cài đặt Squid 64 Hình 3.7 Giao diện chạy Squid 66 Hình 3.8 Giao diện chạy Squidclient 67 Hình 3.10 Cache hit Byte hit, số yêu cầu 71 vii DANH MỤC CÁC BẢNG Bảng 2.1 Các thuộc tính hữu ích đối tượng lưu trữ i 28 Bảng 2.2 Cấu trúc liệu LRU HLRU 37 MỞ ĐẦU I LÝ DO CHỌN ĐỀ TÀI Ngày nay, World Wide Web (WWW) ngày phát triển sâu vào ngõ ngách sống đại, phương tiện truy cập mạng đơn giản, thân thiện với người sử dụng Việc sử dụng dịch vụ Web tăng theo cấp số mũ, lưu lượng WWW mạng Internet quốc gia quốc tế tăng đột biến Và Việt Nam không nằm ngồi vịng xốy lốc WWW, cổng giao tiếp điện tử, ứng dụng phát triển Trong tương lai, ứng dụng phát triển phát triển hạ tầng mạng máy tính địi hỏi tảng công nghệ thông tin ngày cao Tuy nhiên để có điều khơng phải vấn đề đơn giản Hiện mạng máy tính Việt Nam ngày phát triển, nhiên với điều kiện nước ta, sở vật chất hạ tầng mạng máy tính cịn thấp Chất lượng dịch vụ thời gian đáp ứng cải thiện cách giảm tải cho mạng, số phương pháp sử dụng kỹ thuật Webcaching Kỹ thuật Web caching đời nâng cao hiệu việc thực hiên tăng tốc ứng dụng WWW Bản thân làm công việc quản lý hệ thống mạng với mong muốn nghiên cứu hạ tầng mạng sở, lựa chọn đề tài: “Nghiên cứu số thuật toán cho Web Caching ứng dụng” Luận văn trước tiên nghiên cứu số thuật toán Web Caching Trên sở đó, luận văn nghiên cứu trình bày thuật tốn LRU phần mềm Squid proxy để nâng cao hiệu ứng dụng WWW hệ thống Cuối chương trình thử nghiệm đánh giá kết thuật toán LRU Squid proxy ngân hàng Vietinbank chi nhánh đền Hùng - tỉnh Phú Thọ II MỤC TIÊU, ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU  Mục tiêu Nắm bắt thuật toán Web Caching ứng dụng phương pháp Trên sở nghiên cứu, tìm hiểu lý thuyết thuật toán LRU thử nghiệm Web caching sử dụng thuật toán LRU  Đối tượng phạm vi nghiên cứu - Tìm hiểu xây dựng thuật tốn LRU việc thử nghiêm Web Caching - Cài đặt thử nghiệm III PHƯƠNG PHÁP NGHIÊN CỨU - Phương pháp nghiên cứu tài liệu, phân tích, tổng hợp - Phương pháp trao đổi khoa học, lấy ý kiến chuyên gia - Phương pháp thực nghiệm đối chứng qua chương trình thử nghiệm 70 kích thước nhớ cache Trong trường hợp đặc biệt, hình 3.9 a trình bày tỷ lệ cache hit cho kích thước nhớ cache 100; 150; … ; 300 MBytes Khi tỷ lệ nhớ cache có đỉnh gần với giá trị đỉnh kích thước nhớ cache tăng lên Điều giải thích thực tế kích thước nhớ cache lớn, cần phải thay kể từ có thêm không gian để lưu trữ đối tượng cache máy chủ cache "đủ khả năng" để chứa chúng có hành động thay Hình 3.9b mơ tả tỷ lệ byte hit cho thuật tốn thay nhớ cache ý kích thước nhớ cache Tỷ lệ byte hit theo góc nghiêng tương tự tỷ lệ cache hit tương ứng, chúng khơng có giá trị hit cao tỷ lệ cache hit Ta có đường cong mượt mà kích thước nhớ cache tăng lên Hình 3.10 mơ tả tỷ lệ cache hit byte hit thuật toán LRU với số lượng yêu cầu có liên quan Cụ thể , Hình 3.10 a trình bày tỷ lệ cache hit cho nhớ cache có 1000; 2000; ; 5000 u cầu Thuật tốn LRU có số truy cập nhớ cache tương đối tốt Điều quan trọng tất phương pháp tiếp cận cho thấy kết tốt số lượng yêu cầu tăng tỷ lệ cache hit không nhận tỷ lệ hit đáng kể khoảng gần 70% a 71 b Hình 3.10 Cache hit Byte hit, số yêu cầu 3.3.3 Đánh giá kết Các kết thực nghiệm cho thấy thuật toán LRU thi hành tốt toán thay cache với thời gian hợp lý Khi kích thước cache lớn tỷ lệ cache hit byte hit cao Khi số yêu cầu nhiều tỷ lệ cache hit byte hit cao 3.4 Kết luận chương Chương trình bày kĩ thuật Cache Web Proxy, thực phần mềm Squid Mơ hình thử nghiệm thiết lập sau: - Cấu hình Browser (có thể FireFox) truy nhập Web qua Proxy Squid (10.0.0.1, port: 3128) thực kết nối lấy trang Web từ internet - Chạy Proxy squid (/usr/local/squid/sbin/squid) - Chạy squidclient (/usr/local/squid/bin/squidclient mgr:info) - Thay đổi kích thước cache, thống kê, đánh giá Các kết thực nghiệm cho thấy thuật toán LRU thi hành thành cơng tốn thay cache với thời gian hợp lý 72 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Luận văn nghiên cứu đạt kết sau:  Tìm hiểu kiến trúc phân tán phân cấp Web caching Phân tích thơng số thời gian kết nối, thời gian truyền, trễ tổng thể băng thông hai kiến trúc  Nghiên cứu thuật toán LFU-DA, GDS, CE Thuật tốn Least recently used LRU Phân tích chi tiết thiết kế mức lưu đồ thuật toán cho LRU HLRU  Thực giải pháp đánh giá hiệu thuật toán Web caching qua phần mềm mã nguồn mở Proxy Squid Các thử nghiệm cho thấy phương pháp tiếp cận LRU thông thường thông qua proxy có sẵn tương đối tốt Kết cách tiếp cận LRU cho tỷ lệ cache hit hit byte hợp lý khả quan Hướng phát triển Nếu có điều kiện nghiên cứu sâu hơn, mở rộng thử nghiệm chương trình để tích hợp thuật toán thay nhớ cache phổ biến Cụ thể hơn, chương trình khác thuật tốn HLRU, MFU, RR giới thiệu việc thay nhớ cache đề xuất để nghiên cứu tác động hiệu việc thay nội dung Web cache Lựa chọn thuật toán Web caching thích hợp, tích hợp với phần mềm mã nguồn mở Proxy Squid để giảm trễ truy nhập băng thông, triển khai cho mạng Cơ quan, Doanh nghiệp 73 TÀI LIỆU THAM KHẢO Tiếng Anh [1] A Vakali, A Genetic Algorithm scheme for Web Replication and Caching, Proceedings of the 3rd IMACS/IEEE International Conference on Circuits, Systems, Communications and Computers, CSCC'99, World Scientic and Engineering So-ciety Press, Athens, Greece, Jul 1999 [2] A I Vakali, Department of Informatics, Aristotle University of Thessaloniki, Greece, 2000 [3] H.T Chen, Pre-fetching and Re-fetching in Web caching systems: Algorithms and Simulation, Master Thesis, TRENT UNIVESITY, Peterborough, Ontario, Canada, 2008 [4] H.k Lee, B.S An, and E.J Kim, “Adaptive Prefetching Scheme Using Web Log Mining in Cluster-Based Web Systems”, IEEE International Conference on Web Services (ICWS), pp.903-910, 2009 [5] O'Reilly, Squid: The Definitive Guide, ISBN: 0-596-00162-2, Pages: 496, January 2004 [6] U Acharjee, Personalized and Artificial Intelligence Web Caching and Prefetching.Master thesis, Universityof Ottawa, Canada, 2006 Waleed Ali [7] Waleed Ali, Siti Mariyam Shamsuddin, and Abdul Samad Ismail, A Survey of Web Caching and Prefetching, Soft Computing Research Group, Faculty of Computer Science and Information System, Universiti Teknologi Malaysia, Appl., Vol 3, No 1, March 2011 Website [8] http://www.vnnic.vn, Trung tâm Internet Việt Nam, Bộ thông tin truyền thông PHỤ ;LỤC/* REMOVALPOLICYCREATE createRemovalPolicy_lru; struct LruPolicyData { void setPolicyNode (StoreEntry *, void *) const; RemovalPolicy *policy; dlink_list list; int count; int nwalkers; enum heap_entry_type { TYPE_UNKNOWN TYPE_STORE_MEM = 0, TYPE_STORE_ENTRY, } type; }; /* Hack to avoid having to remember the RemovalPolicyNode location * Needed by the purge walker to clear the policy information */ static enum LruPolicyData::heap_entry_type repl_guessType(StoreEntry * entry, RemovalPolicyNode * node) { if (node == &entry->repl) return LruPolicyData::TYPE_STORE_ENTRY; if (entry->mem_obj && node == &entry->mem_obj->repl) return LruPolicyData::TYPE_STORE_MEM; fatal("Heap Replacement: Unknown StoreEntry node type"); return LruPolicyData::TYPE_UNKNOWN; } void LruPolicyData::setPolicyNode (StoreEntry *entry, void *value) const { switch (type) { case TYPE_STORE_ENTRY: entry->repl.data = value; break ; case TYPE_STORE_MEM: entry->mem_obj->repl.data = value ; break ; default: break; } } typedef struct _LruNode LruNode; struct _LruNode { /* Note: the dlink_node MUST be the first member of the LruNode * structure This member is later pointer typecasted to LruNode * */ dlink_node node; }; static MemAllocator *lru_node_pool = NULL; static int nr_lru_policies = 0; static void lru_add(RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node) { LruPolicyData *lru = (LruPolicyData *)policy->_data; LruNode *lru_node; assert(!node->data); node->data = lru_node = (LruNode *)lru_node_pool->alloc(); dlinkAddTail(entry, &lru_node->node, &lru->list); lru->count += 1; if (!lru->type) lru->type = repl_guessType(entry, node); } static void lru_remove(RemovalPolicy * policy, StoreEntry * entry, RemovalPolicyNode * node) { LruPolicyData *lru = (LruPolicyData *)policy->_data; LruNode *lru_node = (LruNode *)node->data; if (!lru_node) return; /* * It seems to be possible for an entry to exist in the hash * but not be in the LRU list, so check for that case rather * than suffer a NULL pointer access */ if (NULL == lru_node->node.data) return; assert(lru_node->node.data == entry); node->data = NULL; dlinkDelete(&lru_node->node, &lru->list); lru_node_pool->freeOne(lru_node); lru->count -= 1; } static void lru_referenced(RemovalPolicy * policy, const StoreEntry * entry, RemovalPolicyNode * node) { LruPolicyData *lru = (LruPolicyData *)policy->_data; LruNode *lru_node = (LruNode *)node->data; if (!lru_node) return; dlinkDelete(&lru_node->node, &lru->list); dlinkAddTail((void *) entry, &lru_node->node, &lru->list); } /** RemovalPolicyWalker **/ typedef struct _LruWalkData LruWalkData; struct _LruWalkData { LruNode *current; }; static const StoreEntry * lru_walkNext(RemovalPolicyWalker * walker) { LruWalkData *lru_walk = (LruWalkData *)walker->_data; LruNode *lru_node = lru_walk->current; if (!lru_node) return NULL; lru_walk->current = (LruNode *) lru_node->node.next; return (StoreEntry *) lru_node->node.data; } static void lru_walkDone(RemovalPolicyWalker * walker) { RemovalPolicy *policy = walker->_policy; LruPolicyData *lru = (LruPolicyData *)policy->_data; assert(strcmp(policy->_type, "lru") == 0); assert(lru->nwalkers > 0); lru->nwalkers -= 1; safe_free(walker->_data); delete walker; } static RemovalPolicyWalker * lru_walkInit(RemovalPolicy * policy) { LruPolicyData *lru = (LruPolicyData *)policy->_data; RemovalPolicyWalker *walker; LruWalkData *lru_walk; lru->nwalkers += 1; walker = new RemovalPolicyWalker; lru_walk = (LruWalkData *)xcalloc(1, sizeof(*lru_walk)); walker->_policy = policy; walker->_data = lru_walk; walker->Next = lru_walkNext; walker->Done = lru_walkDone; lru_walk->current = (LruNode *) lru->list.head; return walker; } /** RemovalPurgeWalker **/ typedef struct _LruPurgeData LruPurgeData; struct _LruPurgeData { LruNode *current; LruNode *start; }; static StoreEntry * lru_purgeNext(RemovalPurgeWalker * walker) { LruPurgeData *lru_walker = (LruPurgeData *)walker->_data; RemovalPolicy *policy = walker->_policy; LruPolicyData *lru = (LruPolicyData *)policy->_data; LruNode *lru_node; StoreEntry *entry; try_again: lru_node = lru_walker->current; if (!lru_node || walker->scanned >= walker->max_scan) return NULL; walker->scanned += 1; lru_walker->current = (LruNode *) lru_node->node.next; if (lru_walker->current == lru_walker->start) { /* Last node found */ lru_walker->current = NULL; } entry = (StoreEntry *) lru_node->node.data; dlinkDelete(&lru_node->node, &lru->list); if (entry->locked()) { /* Shit, it is locked we can't return this one */ ++ walker->locked; dlinkAddTail(entry, &lru_node->node, &lru->list); goto try_again; } lru_node_pool->freeOne(lru_node); lru->count -= 1; lru->setPolicyNode(entry, NULL); return entry; } static void lru_purgeDone(RemovalPurgeWalker * walker) { RemovalPolicy *policy = walker->_policy; LruPolicyData *lru = (LruPolicyData *)policy->_data; assert(strcmp(policy->_type, "lru") == 0); assert(lru->nwalkers > 0); lru->nwalkers -= 1; safe_free(walker->_data); delete walker; } static RemovalPurgeWalker * lru_purgeInit(RemovalPolicy * policy, int max_scan) { LruPolicyData *lru = (LruPolicyData *)policy->_data; RemovalPurgeWalker *walker; LruPurgeData *lru_walk; lru->nwalkers += 1; walker = new RemovalPurgeWalker; lru_walk = (LruPurgeData *)xcalloc(1, sizeof(*lru_walk)); walker->_policy = policy; walker->_data = lru_walk; walker->max_scan = max_scan; walker->Next = lru_purgeNext; walker->Done = lru_purgeDone; lru_walk->start = lru_walk->current = (LruNode *) lru->list.head; return walker; } static void lru_stats(RemovalPolicy * policy, StoreEntry * sentry) { LruPolicyData *lru = (LruPolicyData *)policy->_data; LruNode *lru_node = (LruNode *) lru->list.head; again: if (lru_node) { StoreEntry *entry = (StoreEntry *) lru_node->node.data; if (entry->locked()) { lru_node = (LruNode *) lru_node->node.next; goto again; } storeAppendPrintf(sentry, "LRU reference age: %.2f days\n", (double) (squid_curtime - entry->lastref) / (double) (24 * 60 * 60)); } } static void lru_free(RemovalPolicy * policy) { LruPolicyData *lru = (LruPolicyData *)policy->_data; /* Make some verification of the policy state */ assert(strcmp(policy->_type, "lru") == 0); assert(lru->nwalkers); assert(lru->count); /* Ok, time to destroy this policy */ safe_free(lru); memset(policy, 0, sizeof(*policy)); delete policy; } RemovalPolicy * createRemovalPolicy_lru(wordlist * args) { RemovalPolicy *policy; LruPolicyData *lru_data; /* no arguments expected or understood */ assert(!args); /* Initialize */ if (!lru_node_pool) { /* Must be chunked */ lru_node_pool = memPoolCreate("LRU policy node", sizeof(LruNode)); lru_node_pool->setChunkSize(512 * 1024); } /* Allocate the needed structures */ lru_data = (LruPolicyData *)xcalloc(1, sizeof(*lru_data)); policy = new RemovalPolicy; /* Initialize the URL data */ lru_data->policy = policy; /* Populate the policy structure */ policy->_type = "lru"; policy->_data = lru_data; policy->Free = lru_free; policy->Add = lru_add; policy->Remove = lru_remove; policy->Referenced = lru_referenced; policy->Dereferenced = lru_referenced; policy->WalkInit = lru_walkInit; policy->PurgeInit = lru_purgeInit; policy->Stats = lru_stats; /* Increase policy usage count */ nr_lru_policies += 0; return policy; } ... muốn nghiên cứu hạ tầng mạng sở, lựa chọn đề tài: ? ?Nghiên cứu số thuật toán cho Web Caching ứng dụng? ?? Luận văn trước tiên nghiên cứu số thuật tốn Web Caching Trên sở đó, luận văn nghiên cứu trình... TƯỢNG, PHẠM VI NGHIÊN CỨU  Mục tiêu Nắm bắt thuật toán Web Caching ứng dụng phương pháp 2 Trên sở nghiên cứu, tìm hiểu lý thuyết thuật tốn LRU thử nghiệm Web caching sử dụng thuật toán LRU  Đối... 19 CHƯƠNG 2: MỘT SỐ THUẬT TOÁN WEB CACHING 20 2.1 Thuật toán Least Frequently Used with Dynamic Aging (LFU-DA) 20 2.2 Thuật toán Greedy Dual Size (GDS) 21 2.3 Thuật toán Cost Effective

Ngày đăng: 26/10/2020, 08:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan