r5220 - in trunk/varnish-cache: bin/varnishd include
phk at varnish-cache.org
phk at varnish-cache.org
Thu Sep 16 06:46:06 CEST 2010
Author: phk
Date: 2010-09-16 06:46:06 +0200 (Thu, 16 Sep 2010)
New Revision: 5220
Modified:
trunk/varnish-cache/bin/varnishd/stevedore.c
trunk/varnish-cache/bin/varnishd/storage_file.c
trunk/varnish-cache/bin/varnishd/storage_malloc.c
trunk/varnish-cache/include/vsc.h
trunk/varnish-cache/include/vsc_all.h
trunk/varnish-cache/include/vsc_fields.h
Log:
Clean up SMA and SMF stats
Modified: trunk/varnish-cache/bin/varnishd/stevedore.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.c 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/bin/varnishd/stevedore.c 2010-09-16 04:46:06 UTC (rev 5220)
@@ -302,7 +302,7 @@
AN(stv->alloc);
if (p == NULL)
- bprintf(stv->ident, "storage_%u", seq++);
+ bprintf(stv->ident, "s%u", seq++);
else {
l = p - spec;
if (l > sizeof stv->ident - 1)
Modified: trunk/varnish-cache/bin/varnishd/storage_file.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/storage_file.c 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/bin/varnishd/storage_file.c 2010-09-16 04:46:06 UTC (rev 5220)
@@ -90,6 +90,11 @@
};
struct smf_sc {
+ unsigned magic;
+#define SMF_SC_MAGIC 0x52962ee7
+ struct lock mtx;
+ struct vsc_smf *stats;
+
const char *filename;
int fd;
unsigned pagesize;
@@ -97,18 +102,17 @@
struct smfhead order;
struct smfhead free[NBUCKET];
struct smfhead used;
- struct lock mtx;
};
/*--------------------------------------------------------------------*/
static void
-smf_initfile(struct smf_sc *sc, const char *size)
+smf_initfile(struct stevedore *st, struct smf_sc *sc, const char *size)
{
sc->filesize = STV_FileSize(sc->fd, size, &sc->pagesize, "-sfile");
- printf("storage_file: filename: %s size %ju MB.\n",
- sc->filename, sc->filesize / (1024 * 1024));
+ printf("SMF.%s: filename: %s size %ju MB.\n",
+ st->ident, sc->filename, sc->filesize / (1024 * 1024));
AZ(ftruncate(sc->fd, (off_t)sc->filesize));
@@ -148,7 +152,7 @@
AN(fn);
AN(size);
- sc = calloc(sizeof *sc, 1);
+ ALLOC_OBJ(sc, SMF_SC_MAGIC);
XXXAN(sc);
VTAILQ_INIT(&sc->order);
for (u = 0; u < NBUCKET; u++)
@@ -161,7 +165,7 @@
(void)STV_GetFile(fn, &sc->fd, &sc->filename, "-sfile");
mgt_child_inherit(sc->fd, "storage_file");
- smf_initfile(sc, size);
+ smf_initfile(parent, sc, size);
}
/*--------------------------------------------------------------------
@@ -181,9 +185,9 @@
b = sp->size / sc->pagesize;
if (b >= NBUCKET) {
b = NBUCKET - 1;
- VSC_main->n_smf_large++;
+ sc->stats->n_smf_large++;
} else {
- VSC_main->n_smf_frag++;
+ sc->stats->n_smf_frag++;
}
sp->flist = &sc->free[b];
ns = b * sc->pagesize;
@@ -211,9 +215,9 @@
b = sp->size / sc->pagesize;
if (b >= NBUCKET) {
b = NBUCKET - 1;
- VSC_main->n_smf_large--;
+ sc->stats->n_smf_large--;
} else {
- VSC_main->n_smf_frag--;
+ sc->stats->n_smf_frag--;
}
assert(sp->flist == &sc->free[b]);
VTAILQ_REMOVE(sp->flist, sp, status);
@@ -259,7 +263,7 @@
/* Split from front */
sp2 = malloc(sizeof *sp2);
XXXAN(sp2);
- VSC_main->n_smf++;
+ sc->stats->n_smf++;
*sp2 = *sp;
sp->offset += bytes;
@@ -301,7 +305,7 @@
VTAILQ_REMOVE(&sc->order, sp2, order);
remfree(sc, sp2);
free(sp2);
- VSC_main->n_smf--;
+ sc->stats->n_smf--;
}
sp2 = VTAILQ_PREV(sp, smfhead, order);
@@ -313,7 +317,7 @@
sp2->size += sp->size;
VTAILQ_REMOVE(&sc->order, sp, order);
free(sp);
- VSC_main->n_smf--;
+ sc->stats->n_smf--;
sp = sp2;
}
@@ -338,7 +342,7 @@
CHECK_OBJ_NOTNULL(sp, SMF_MAGIC);
sp2 = malloc(sizeof *sp2);
XXXAN(sp2);
- VSC_main->n_smf++;
+ sc->stats->n_smf++;
*sp2 = *sp;
sp2->size -= bytes;
@@ -364,7 +368,7 @@
XXXAN(sp);
sp->magic = SMF_MAGIC;
sp->s.magic = STORAGE_MAGIC;
- VSC_main->n_smf++;
+ sc->stats->n_smf++;
sp->sc = sc;
sp->size = len;
@@ -437,20 +441,21 @@
off_t fail = 1 << 30; /* XXX: where is OFF_T_MAX ? */
off_t sum = 0;
- sc = st->priv;
-
+ CAST_OBJ_NOTNULL(sc, st->priv, SMF_SC_MAGIC);
+ sc->stats = VSM_Alloc(sizeof *sc->stats,
+ VSC_CLASS, VSC_TYPE_SMF, st->ident);
Lck_New(&sc->mtx, lck_smf);
Lck_Lock(&sc->mtx);
smf_open_chunk(sc, sc->filesize, 0, &fail, &sum);
Lck_Unlock(&sc->mtx);
- printf("managed to mmap %ju bytes of %ju\n",
- (uintmax_t)sum, sc->filesize);
+ printf("SMF.%s mmap'ed %ju bytes of %ju\n",
+ st->ident, (uintmax_t)sum, sc->filesize);
/* XXX */
if (sum < MINPAGES * (off_t)getpagesize())
exit (2);
- VSC_main->sm_bfree += sc->filesize;
+ sc->stats->bfree += sc->filesize;
}
/*--------------------------------------------------------------------*/
@@ -459,23 +464,24 @@
smf_alloc(struct stevedore *st, size_t size, struct objcore *oc)
{
struct smf *smf;
- struct smf_sc *sc = st->priv;
+ struct smf_sc *sc;
(void)oc;
+ CAST_OBJ_NOTNULL(sc, st->priv, SMF_SC_MAGIC);
assert(size > 0);
size += (sc->pagesize - 1);
size &= ~(sc->pagesize - 1);
Lck_Lock(&sc->mtx);
- VSC_main->sm_nreq++;
+ sc->stats->nreq++;
smf = alloc_smf(sc, size);
if (smf == NULL) {
Lck_Unlock(&sc->mtx);
return (NULL);
}
CHECK_OBJ_NOTNULL(smf, SMF_MAGIC);
- VSC_main->sm_nobj++;
- VSC_main->sm_balloc += smf->size;
- VSC_main->sm_bfree -= smf->size;
+ sc->stats->nobj++;
+ sc->stats->balloc += smf->size;
+ sc->stats->bfree -= smf->size;
Lck_Unlock(&sc->mtx);
CHECK_OBJ_NOTNULL(&smf->s, STORAGE_MAGIC); /*lint !e774 */
XXXAN(smf);
@@ -509,8 +515,8 @@
size &= ~(sc->pagesize - 1);
if (smf->size > size) {
Lck_Lock(&sc->mtx);
- VSC_main->sm_balloc -= (smf->size - size);
- VSC_main->sm_bfree += (smf->size - size);
+ sc->stats->balloc -= (smf->size - size);
+ sc->stats->bfree += (smf->size - size);
trim_smf(smf, size);
assert(smf->size == size);
Lck_Unlock(&sc->mtx);
@@ -531,9 +537,9 @@
CAST_OBJ_NOTNULL(smf, s->priv, SMF_MAGIC);
sc = smf->sc;
Lck_Lock(&sc->mtx);
- VSC_main->sm_nobj--;
- VSC_main->sm_balloc -= smf->size;
- VSC_main->sm_bfree += smf->size;
+ sc->stats->nobj--;
+ sc->stats->balloc -= smf->size;
+ sc->stats->bfree += smf->size;
free_smf(smf);
Lck_Unlock(&sc->mtx);
}
Modified: trunk/varnish-cache/bin/varnishd/storage_malloc.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/storage_malloc.c 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/bin/varnishd/storage_malloc.c 2010-09-16 04:46:06 UTC (rev 5220)
@@ -47,7 +47,7 @@
#define SMA_SC_MAGIC 0x1ac8a345
struct lock sma_mtx;
size_t sma_max;
- struct vsc_sma *stats;
+ struct vsc_sma *stats;
};
struct sma {
@@ -67,13 +67,13 @@
CAST_OBJ_NOTNULL(sma_sc, st->priv, SMA_SC_MAGIC);
(void)oc;
Lck_Lock(&sma_sc->sma_mtx);
- sma_sc->stats->sma_nreq++;
- if (sma_sc->stats->sma_nbytes + size > sma_sc->sma_max)
+ sma_sc->stats->nreq++;
+ if (sma_sc->stats->nbytes + size > sma_sc->sma_max)
size = 0;
else {
- sma_sc->stats->sma_nobj++;
- sma_sc->stats->sma_nbytes += size;
- sma_sc->stats->sma_balloc += size;
+ sma_sc->stats->nobj++;
+ sma_sc->stats->nbytes += size;
+ sma_sc->stats->balloc += size;
}
Lck_Unlock(&sma_sc->sma_mtx);
@@ -117,9 +117,9 @@
sma_sc = sma->sc;
assert(sma->sz == sma->s.space);
Lck_Lock(&sma_sc->sma_mtx);
- sma_sc->stats->sma_nobj--;
- sma_sc->stats->sma_nbytes -= sma->sz;
- sma_sc->stats->sma_bfree += sma->sz;
+ sma_sc->stats->nobj--;
+ sma_sc->stats->nbytes -= sma->sz;
+ sma_sc->stats->bfree += sma->sz;
Lck_Unlock(&sma_sc->sma_mtx);
free(sma->s.ptr);
free(sma);
@@ -140,8 +140,8 @@
assert(size < sma->sz);
if ((p = realloc(sma->s.ptr, size)) != NULL) {
Lck_Lock(&sma_sc->sma_mtx);
- sma_sc->stats->sma_nbytes -= (sma->sz - size);
- sma_sc->stats->sma_bfree += sma->sz - size;
+ sma_sc->stats->nbytes -= (sma->sz - size);
+ sma_sc->stats->bfree += sma->sz - size;
sma->sz = size;
Lck_Unlock(&sma_sc->sma_mtx);
sma->s.ptr = p;
@@ -175,7 +175,7 @@
if ((u != (uintmax_t)(size_t)u))
ARGV_ERR("(-smalloc) size \"%s\": too big\n", av[0]);
- printf("storage.malloc.%s: max size %ju MB.\n", parent->ident,
+ printf("SMA.%s: max size %ju MB.\n", parent->ident,
u / (1024 * 1024));
sc->sma_max = u;
Modified: trunk/varnish-cache/include/vsc.h
===================================================================
--- trunk/varnish-cache/include/vsc.h 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/include/vsc.h 2010-09-16 04:46:06 UTC (rev 5220)
@@ -35,6 +35,7 @@
#define VSC_TYPE_MAIN ""
#define VSC_TYPE_SMA "SMA"
+#define VSC_TYPE_SMF "SMF"
#define VSC_TYPE_VBE "VBE"
#define VSC_TYPE_LCK "LCK"
Modified: trunk/varnish-cache/include/vsc_all.h
===================================================================
--- trunk/varnish-cache/include/vsc_all.h 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/include/vsc_all.h 2010-09-16 04:46:06 UTC (rev 5220)
@@ -29,6 +29,13 @@
*/
+
+VSC_DO(LCK, lck, VSC_TYPE_LCK)
+#define VSC_DO_LCK
+#include "vsc_fields.h"
+#undef VSC_DO_LCK
+VSC_DONE(LCK, lck, VSC_TYPE_LCK)
+
VSC_DO(MAIN, main, VSC_TYPE_MAIN)
#define VSC_DO_MAIN
#include "vsc_fields.h"
@@ -41,14 +48,14 @@
#undef VSC_DO_SMA
VSC_DONE(SMA, sma, VSC_TYPE_SMA)
+VSC_DO(SMF, smf, VSC_TYPE_SMF)
+#define VSC_DO_SMF
+#include "vsc_fields.h"
+#undef VSC_DO_SMF
+VSC_DONE(SMF, smf, VSC_TYPE_SMF)
+
VSC_DO(VBE, vbe, VSC_TYPE_VBE)
#define VSC_DO_VBE
#include "vsc_fields.h"
#undef VSC_DO_VBE
VSC_DONE(VBE, vbe, VSC_TYPE_VBE)
-
-VSC_DO(LCK, lck, VSC_TYPE_LCK)
-#define VSC_DO_LCK
-#include "vsc_fields.h"
-#undef VSC_DO_LCK
-VSC_DONE(LCK, lck, VSC_TYPE_LCK)
Modified: trunk/varnish-cache/include/vsc_fields.h
===================================================================
--- trunk/varnish-cache/include/vsc_fields.h 2010-09-16 04:06:10 UTC (rev 5219)
+++ trunk/varnish-cache/include/vsc_fields.h 2010-09-16 04:46:06 UTC (rev 5220)
@@ -72,9 +72,7 @@
VSC_F(n_vampireobject, uint64_t, 1, 'i', "N unresurrected objects")
VSC_F(n_objectcore, uint64_t, 1, 'i', "N struct objectcore")
VSC_F(n_objecthead, uint64_t, 1, 'i', "N struct objecthead")
-VSC_F(n_smf, uint64_t, 0, 'i', "N struct smf")
-VSC_F(n_smf_frag, uint64_t, 0, 'i', "N small free smf")
-VSC_F(n_smf_large, uint64_t, 0, 'i', "N large free smf")
+
VSC_F(n_vbc, uint64_t, 0, 'i', "N struct vbc")
VSC_F(n_wrk, uint64_t, 0, 'i', "N worker threads")
VSC_F(n_wrk_create, uint64_t, 0, 'a', "N worker threads created")
@@ -117,11 +115,6 @@
VSC_F(shm_cont, uint64_t, 0, 'a', "SHM MTX contention")
VSC_F(shm_cycles, uint64_t, 0, 'a', "SHM cycles through buffer")
-VSC_F(sm_nreq, uint64_t, 0, 'a', "allocator requests")
-VSC_F(sm_nobj, uint64_t, 0, 'i', "outstanding allocations")
-VSC_F(sm_balloc, uint64_t, 0, 'i', "bytes allocated")
-VSC_F(sm_bfree, uint64_t, 0, 'i', "bytes free")
-
VSC_F(sms_nreq, uint64_t, 0, 'a', "SMS allocator requests")
VSC_F(sms_nobj, uint64_t, 0, 'i', "SMS outstanding allocations")
VSC_F(sms_nbytes, uint64_t, 0, 'i', "SMS outstanding bytes")
@@ -163,32 +156,48 @@
/**********************************************************************/
-#ifdef VSC_DO_SMA
+#ifdef VSC_DO_LCK
-VSC_F(sma_nreq, uint64_t, 0, 'a', "Allocator requests")
-VSC_F(sma_nobj, uint64_t, 0, 'i', "Outstanding allocations")
-VSC_F(sma_nbytes, uint64_t, 0, 'i', "Outstanding bytes")
-VSC_F(sma_balloc, uint64_t, 0, 'i', "Bytes allocated")
-VSC_F(sma_bfree, uint64_t, 0, 'i', "Bytes free")
+VSC_F(creat, uint64_t, 0, 'a', "Created locks")
+VSC_F(destroy, uint64_t, 0, 'a', "Destroyed locks")
+VSC_F(locks, uint64_t, 0, 'a', "Lock Operations")
+VSC_F(colls, uint64_t, 0, 'a', "Collisions")
#endif
+/**********************************************************************
+ * All Stevedores support these counters
+ */
+
+#if defined(VSC_DO_SMA) || defined (VSC_DO_SMF)
+VSC_F(nreq, uint64_t, 0, 'a', "Allocator requests")
+VSC_F(nobj, uint64_t, 0, 'i', "Outstanding allocations")
+VSC_F(nbytes, uint64_t, 0, 'i', "Outstanding bytes")
+VSC_F(balloc, uint64_t, 0, 'i', "Bytes allocated")
+VSC_F(bfree, uint64_t, 0, 'i', "Bytes free")
+#endif
+
+
/**********************************************************************/
-#ifdef VSC_DO_VBE
+#ifdef VSC_DO_SMA
+/* No SMA specific counters */
+#endif
-VSC_F(vcls, uint64_t, 0, 'i', "VCL references")
-VSC_F(happy, uint64_t, 0, 'b', "Happy health probes")
+/**********************************************************************/
+#ifdef VSC_DO_SMF
+VSC_F(n_smf, uint64_t, 0, 'i', "N struct smf")
+VSC_F(n_smf_frag, uint64_t, 0, 'i', "N small free smf")
+VSC_F(n_smf_large, uint64_t, 0, 'i', "N large free smf")
#endif
/**********************************************************************/
-#ifdef VSC_DO_LCK
+#ifdef VSC_DO_VBE
-VSC_F(creat, uint64_t, 0, 'a', "Created locks")
-VSC_F(destroy, uint64_t, 0, 'a', "Destroyed locks")
-VSC_F(locks, uint64_t, 0, 'a', "Lock Operations")
-VSC_F(colls, uint64_t, 0, 'a', "Collisions")
+VSC_F(vcls, uint64_t, 0, 'i', "VCL references")
+VSC_F(happy, uint64_t, 0, 'b', "Happy health probes")
#endif
+
More information about the varnish-commit
mailing list