]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
fixes fixes fixes
authorwessels <>
Sat, 26 Apr 1997 03:43:56 +0000 (03:43 +0000)
committerwessels <>
Sat, 26 Apr 1997 03:43:56 +0000 (03:43 +0000)
src/cache_cf.cc
src/stat.cc
src/store.cc
src/store_dir.cc

index d80fe40eb4813aa6e6517cf13ae2713a590dc6c4..886d7a459976ac95a81b0f9dc5e538d32bda10d2 100644 (file)
@@ -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     
 #define DefaultSwapHighWaterMark 95    /* 95% */
 #define DefaultSwapLowWaterMark  90    /* 90% */
 #define DefaultNetdbHigh       1000    /* counts, not percents */
index d5d794980143e979de60bb9664a1a7706c6333ef..d8130bc277fcce02ed020023c77f8b847eaf934b 100644 (file)
@@ -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",
index 93b4b763920925af45ec8f94b9bd897f19c523c0..91129026829d85fb03e0bd72f6fe86f2b1eeefbb 100644 (file)
@@ -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);
index 8c0bfb829d21cfaa223aa1e6bf08a2fa32cd226f..b704194d9e5f623020fa46e391817d8cf426fa78 100644 (file)
@@ -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; i<ncache_dirs; i++) {
+       SD = &SwapDirs[i];
+       storeAppendPrintf(sentry, "\n");
+       storeAppendPrintf(sentry, "Store Directory #%d: %s\n", i, SD->path);
+       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);
+    }
+}