From: wessels <> Date: Sat, 26 Apr 1997 03:43:56 +0000 (+0000) Subject: fixes fixes fixes X-Git-Tag: SQUID_3_0_PRE1~5051 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c932b107c4794dc16cf4358973ab7c087c0060d4;p=thirdparty%2Fsquid.git fixes fixes fixes --- diff --git a/src/cache_cf.cc b/src/cache_cf.cc index d80fe40eb4..886d7a4599 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,5 +1,5 @@ /* - * $Id: cache_cf.cc,v 1.178 1997/04/25 20:15:31 wessels Exp $ + * $Id: cache_cf.cc,v 1.179 1997/04/25 21:43:56 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -110,7 +110,7 @@ struct SquidConfig Config; #define DefaultMemMaxSize (8 << 20) /* 8 MB */ #define DefaultMemHighWaterMark 90 /* 90% */ #define DefaultMemLowWaterMark 75 /* 75% */ -#define DefaultSwapMaxSize (100 << 10) /* 100 MB (100*1024 kbytes) */ +#define DefaultSwapMaxSize 0 #define DefaultSwapHighWaterMark 95 /* 95% */ #define DefaultSwapLowWaterMark 90 /* 90% */ #define DefaultNetdbHigh 1000 /* counts, not percents */ diff --git a/src/stat.cc b/src/stat.cc index d5d7949801..d8130bc277 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.131 1997/04/25 20:15:33 wessels Exp $ + * $Id: stat.cc,v 1.132 1997/04/25 21:43:58 wessels Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -435,6 +435,8 @@ stat_get(const cacheinfo * obj, const char *req, StoreEntry * sentry) statFiledescriptors(sentry); } else if (strcmp(req, "netdb") == 0) { netdbDump(sentry); + } else if (strcmp(req, "storedir") == 0) { + storeDirStats(sentry); } } @@ -756,8 +758,8 @@ info_get(const cacheinfo * obj, StoreEntry * sentry) storeAppendPrintf(sentry, "{Cache information for %s:}\n", appname); - storeAppendPrintf(sentry, "{\tStorage Swap size:\t%d MB}\n", - store_swap_size >> 10); + storeAppendPrintf(sentry, "{\tStorage Swap size:\t%d KB}\n", + store_swap_size); storeAppendPrintf(sentry, "{\tStorage Mem size:\t%d KB}\n", store_mem_size >> 10); storeAppendPrintf(sentry, "{\tStorage LRU Expiration Age:\t%6.2f days}\n", diff --git a/src/store.cc b/src/store.cc index 93b4b76392..9112902682 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.219 1997/04/25 20:15:34 wessels Exp $ + * $Id: store.cc,v 1.220 1997/04/25 21:43:59 wessels Exp $ * * DEBUG: section 20 Storeage Manager * AUTHOR: Harvest Derived @@ -1248,7 +1248,7 @@ storeSwapOutHandle(int fd, int flag, StoreEntry * e) debug(20, 6, "storeSwapOutHandle: store_swap_size = %dk\n", store_swap_size); mem->swap_offset += mem->e_swap_buf_len; /* round up */ - storeDirUpdateSwapSize(e->swap_file_number, mem->e_swap_buf_len); + storeDirUpdateSwapSize(e->swap_file_number, mem->e_swap_buf_len, 1); if (mem->swap_offset >= e->object_len) { /* swapping complete */ e->swap_status = SWAP_OK; @@ -1383,7 +1383,6 @@ static void storeDoRebuildFromDisk(void *data) { struct storeRebuildState *RB = data; - LOCAL_ARRAY(char, swapfile, MAXPATHLEN); LOCAL_ARRAY(char, url, MAX_URL); StoreEntry *e = NULL; time_t expires; @@ -1425,7 +1424,6 @@ storeDoRebuildFromDisk(void *data) if (RB->line_in[0] == '#') continue; url[0] = '\0'; - swapfile[0] = '\0'; sfileno = 0; scan1 = 0; scan2 = 0; @@ -1442,9 +1440,7 @@ storeDoRebuildFromDisk(void *data) continue; if (sfileno < 0) continue; - if (sfileno >= MAX_FILES_PER_DIR) - continue; - storeSwapFullPath(sfileno, swapfile); + sfileno = storeDirProperFileno(d->dirn, sfileno); timestamp = (time_t) scan1; expires = (time_t) scan2; lastmod = (time_t) scan3; @@ -1474,7 +1470,7 @@ storeDoRebuildFromDisk(void *data) continue; } /* update store_swap_size */ - storeDirUpdateSwapSize(sfileno, size); + storeDirUpdateSwapSize(sfileno, size, 1); RB->objcount++; e = storeAddDiskRestore(url, sfileno, @@ -2163,7 +2159,7 @@ storeRelease(StoreEntry * e) if (e->swap_status == SWAP_OK && (e->swap_file_number > -1)) { (void) safeunlink(storeSwapFullPath(e->swap_file_number, NULL), 1); - storeDirUpdateSwapSize(e->swap_file_number, -(e->object_len)); + storeDirUpdateSwapSize(e->swap_file_number, e->object_len, -1); storeDirMapBitReset(e->swap_file_number); e->swap_file_number = -1; HTTPCacheInfo->proto_purgeobject(HTTPCacheInfo, @@ -2402,7 +2398,7 @@ storeInitHashValues(void) int i; /* Calculate size of hash table (maximum currently 64k buckets). */ i = Config.Swap.maxSize / Config.Store.avgObjectSize; - debug(20, 1, "Swap maxSize %d, estimated %d objects\n", + debug(20, 1, "Swap maxSize %d kB, estimated %d objects\n", Config.Swap.maxSize, i); i /= Config.Store.objectsPerBucket; debug(20, 1, "Target number of buckets: %d\n", i); diff --git a/src/store_dir.cc b/src/store_dir.cc index 8c0bfb829d..b704194d9e 100644 --- a/src/store_dir.cc +++ b/src/store_dir.cc @@ -141,23 +141,21 @@ storeCreateSwapSubDirs(int j) int storeMostFreeSwapDir(void) { - int most_free = 0; - int this_free; + double least_used = 1.0; + double this_used; int dirn = 0; int i; + SwapDir *SD; for (i = 0; i < ncache_dirs; i++) { - this_free = SwapDirs[i].max_size - SwapDirs[i].cur_size; -debug(20,0,"storeMostFreeSwapDir: most free = #%d with %d\n", dirn, most_free); -debug(20,0,"storeMostFreeSwapDir: #%d has %d free\n", i, this_free); - if (this_free <= most_free) + SD = &SwapDirs[i]; + this_used = (double) SD->cur_size / SD->max_size; + if (this_used > least_used) continue; - if (SwapDirs[i].read_only) + if (SD->read_only) continue; - most_free = this_free; + least_used = this_used; dirn = i; } -debug(20,0,"storeMostFreeSwapDir: most free = #%d with %d\n", dirn, most_free); -debug(20,0,"storeMostFreeSwapDir: returning %d\n", dirn); return dirn; } @@ -211,6 +209,12 @@ storeDirNumber(int swap_file_number) return swap_file_number >> SWAP_DIR_SHIFT; } +int +storeDirProperFileno(int dirn, int fn) +{ + return (dirn << SWAP_DIR_SHIFT) | (fn & SWAP_FILE_MASK); +} + void storeDirSwapLog(const StoreEntry * e) { @@ -352,10 +356,31 @@ storeDirCloseTmpSwapLog(int dirn) } void -storeDirUpdateSwapSize(int fn, size_t size) +storeDirUpdateSwapSize(int fn, size_t size, int sign) { int dirn = (fn >> SWAP_DIR_SHIFT) % ncache_dirs; - int k = ((size + 1023) >> 10); + int k = ((size + 1023) >> 10) * sign; SwapDirs[dirn].cur_size += k; store_swap_size += k; } + +void +storeDirStats(StoreEntry *sentry) +{ + int i; + SwapDir *SD; + storeAppendPrintf(sentry, "Store Directory Statistics:\n"); + storeAppendPrintf(sentry, "Store Entries: %d\n", meta_data.store_entries); + storeAppendPrintf(sentry, "Store Swap Size: %d KB\n", store_swap_size); + for (i = 0; ipath); + storeAppendPrintf(sentry, "First level subdirectories: %d\n", SD->l1); + storeAppendPrintf(sentry, "Second level subdirectories: %d\n", SD->l2); + storeAppendPrintf(sentry, "Maximum Size: %d KB\n", SD->max_size); + storeAppendPrintf(sentry, "Current Size: %d KB\n", SD->cur_size); + storeAppendPrintf(sentry, "Percent Used: %0.2f%%\n", + 100.0 * SD->cur_size / SD->max_size); + } +}