You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2013/10/06 16:57:57 UTC
[12/22] git commit: TS-2256: Mem stats info is bad when enable
reclaimable-freelist
TS-2256: Mem stats info is bad when enable reclaimable-freelist
1) Rename InkFreeList->count to InkFreeList->used, which could make
it more readable.
2) Fix mem stats in reclaimable freelist -- I misunderstood the meaning
of InkFreelist->count before.
Signed-off-by: Yunkai Zhang <qi...@taobao.com>
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/134b8a6f
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/134b8a6f
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/134b8a6f
Branch: refs/heads/5.0.x
Commit: 134b8a6f91fcea12f41f3459c4f7a652159099f3
Parents: 6aa87ff
Author: Yunkai Zhang <qi...@taobao.com>
Authored: Sun Sep 29 16:04:10 2013 +0800
Committer: Yunkai Zhang <qi...@taobao.com>
Committed: Mon Sep 30 10:14:34 2013 +0800
----------------------------------------------------------------------
CHANGES | 2 ++
lib/ts/ink_queue.cc | 18 +++++++++---------
lib/ts/ink_queue.h | 4 ++--
lib/ts/ink_queue_ext.cc | 15 +++++++--------
lib/ts/ink_queue_ext.h | 4 ++--
5 files changed, 22 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/134b8a6f/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index b14b9c3..0a630b9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 4.1.0
+ *) [TS-2256] Mem stats info is bad when enable reclaimable-freelist.
+
*) [TS-2255] TS should not flood printing after log space reach the limit.
*) [TS-2245] cancel the trigger of CacheVC in openWriteCloseDataDone.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/134b8a6f/lib/ts/ink_queue.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue.cc b/lib/ts/ink_queue.cc
index 2bf1ee3..9b2f8ab 100644
--- a/lib/ts/ink_queue.cc
+++ b/lib/ts/ink_queue.cc
@@ -107,10 +107,10 @@ ink_freelist_init(InkFreeList **fl, const char *name, uint32_t type_size,
f->type_size = type_size;
SET_FREELIST_POINTER_VERSION(f->head, FROM_PTR(0), 0);
- f->count = 0;
+ f->used = 0;
f->allocated = 0;
f->allocated_base = 0;
- f->count_base = 0;
+ f->used_base = 0;
*fl = f;
#endif
}
@@ -195,7 +195,7 @@ ink_freelist_new(InkFreeList * f)
#endif /* MEMPROTECT */
}
- ink_atomic_increment((int *) &f->count, f->chunk_size);
+ ink_atomic_increment((int *) &f->used, f->chunk_size);
ink_atomic_increment(&fastalloc_mem_in_use, (int64_t) f->chunk_size * f->type_size);
} else {
@@ -223,7 +223,7 @@ ink_freelist_new(InkFreeList * f)
while (result == 0);
ink_assert(!((uintptr_t)TO_PTR(FREELIST_POINTER(item))&(((uintptr_t)f->alignment)-1)));
- ink_atomic_increment((int *) &f->count, 1);
+ ink_atomic_increment((int *) &f->used, 1);
ink_atomic_increment(&fastalloc_mem_in_use, (int64_t) f->type_size);
return TO_PTR(FREELIST_POINTER(item));
@@ -287,7 +287,7 @@ ink_freelist_free(InkFreeList * f, void *item)
}
while (result == 0);
- ink_atomic_increment((int *) &f->count, -1);
+ ink_atomic_increment((int *) &f->used, -1);
ink_atomic_increment(&fastalloc_mem_in_use, -(int64_t) f->type_size);
#endif /* TS_USE_RECLAIMABLE_FREELIST */
#else
@@ -306,7 +306,7 @@ ink_freelists_snap_baseline()
fll = freelists;
while (fll) {
fll->fl->allocated_base = fll->fl->allocated;
- fll->fl->count_base = fll->fl->count;
+ fll->fl->used_base = fll->fl->used;
fll = fll->next;
}
#else // ! TS_USE_FREELIST
@@ -332,8 +332,8 @@ ink_freelists_dump_baselinerel(FILE * f)
if (a != 0) {
fprintf(f, " %18" PRIu64 " | %18" PRIu64 " | %7u | %10u | memory/%s\n",
(uint64_t)(fll->fl->allocated - fll->fl->allocated_base) * (uint64_t)fll->fl->type_size,
- (uint64_t)(fll->fl->count - fll->fl->count_base) * (uint64_t)fll->fl->type_size,
- fll->fl->count - fll->fl->count_base, fll->fl->type_size, fll->fl->name ? fll->fl->name : "<unknown>");
+ (uint64_t)(fll->fl->used- fll->fl->used_base) * (uint64_t)fll->fl->type_size,
+ fll->fl->used - fll->fl->used_base, fll->fl->type_size, fll->fl->name ? fll->fl->name : "<unknown>");
}
fll = fll->next;
}
@@ -357,7 +357,7 @@ ink_freelists_dump(FILE * f)
while (fll) {
fprintf(f, " %18" PRIu64 " | %18" PRIu64 " | %10u | memory/%s\n",
(uint64_t)fll->fl->allocated * (uint64_t)fll->fl->type_size,
- (uint64_t)fll->fl->count * (uint64_t)fll->fl->type_size, fll->fl->type_size, fll->fl->name ? fll->fl->name : "<unknown>");
+ (uint64_t)fll->fl->used * (uint64_t)fll->fl->type_size, fll->fl->type_size, fll->fl->name ? fll->fl->name : "<unknown>");
fll = fll->next;
}
#else // ! TS_USE_FREELIST
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/134b8a6f/lib/ts/ink_queue.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue.h b/lib/ts/ink_queue.h
index 6004575..41195c6 100644
--- a/lib/ts/ink_queue.h
+++ b/lib/ts/ink_queue.h
@@ -156,8 +156,8 @@ extern "C"
{
volatile head_p head;
const char *name;
- uint32_t type_size, chunk_size, count, allocated, alignment;
- uint32_t allocated_base, count_base;
+ uint32_t type_size, chunk_size, used, allocated, alignment;
+ uint32_t allocated_base, used_base;
};
inkcoreapi extern volatile int64_t fastalloc_mem_in_use;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/134b8a6f/lib/ts/ink_queue_ext.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue_ext.cc b/lib/ts/ink_queue_ext.cc
index fb7c657..aff1eb4 100644
--- a/lib/ts/ink_queue_ext.cc
+++ b/lib/ts/ink_queue_ext.cc
@@ -326,7 +326,7 @@ ink_chunk_create(InkFreeList *f, InkThreadCache *pCache)
}
*(void **)curr = NULL;
- ink_atomic_increment(&f->count, chunk_size);
+ ink_atomic_increment(&f->allocated, chunk_size);
ink_atomic_increment(&total_mem_in_byte, f->chunk_byte_size);
pCache->free_chunk_list.push(pChunk);
@@ -349,7 +349,7 @@ ink_chunk_delete(InkFreeList *f, InkThreadCache *pCache, InkChunkInfo *pChunk)
ink_fatal(1, "Failed to munmap %u bytes, %s", f->chunk_byte_size, strerror(errno));
}
- ink_atomic_increment((int *)&f->count, -f->chunk_size);
+ ink_atomic_increment((int *)&f->allocated, -f->chunk_size);
/*
* TODO: I had used ink_atomic_increment() here, but it would
@@ -385,8 +385,6 @@ malloc_whole_chunk(InkFreeList *f, InkThreadCache *pCache, InkChunkInfo *pChunk)
pChunk->inner_free_list = NULL;
pCache->nr_total += chunk_size;
- ink_atomic_increment(&f->allocated, chunk_size);
-
return item;
}
@@ -399,7 +397,6 @@ malloc_from_chunk(InkFreeList *f, InkThreadCache *pCache, InkChunkInfo *pChunk)
pChunk->inner_free_list = *(void **)item;
pChunk->allocated++;
pCache->nr_total++;
- ink_atomic_increment(&f->allocated, 1);
}
return item;
@@ -412,7 +409,6 @@ free_to_chunk(InkFreeList *f, InkThreadCache *pCache, void *item)
pChunk = get_chunk_info_addr(f, item);
pChunk->allocated--;
- ink_atomic_increment((int *)&f->allocated, -1);
pCache->nr_total--;
*(void **)item = pChunk->inner_free_list;
@@ -537,10 +533,10 @@ reclaimable_freelist_init(InkFreeList **fl, const char *name,
freelists = fll;
f->name = name;
- f->count = 0;
+ f->used = 0;
f->allocated = 0;
f->allocated_base = 0;
- f->count_base = 0;
+ f->used_base = 0;
memory_alignment_init(f, type_size, chunk_size, alignment);
@@ -564,6 +560,8 @@ reclaimable_freelist_new(InkFreeList *f)
InkChunkInfo *pChunk = NULL;
InkThreadCache *pCache, *pNextCache;
+ ink_atomic_increment(&f->used, 1);
+
/* no thread cache, create it */
if (unlikely((pCache = ThreadCaches[f->thread_cache_idx]) == NULL)) {
pCache = (InkThreadCache *) ats_calloc(1, sizeof(InkThreadCache));
@@ -683,5 +681,6 @@ reclaimable_freelist_free(InkFreeList *f, void *item)
ink_atomic_increment(&pCache->nr_free, 1);
ink_atomiclist_push(&pCache->outer_free_list, item);
+ ink_atomic_increment(&f->used, -1);
}
#endif
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/134b8a6f/lib/ts/ink_queue_ext.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue_ext.h b/lib/ts/ink_queue_ext.h
index cfe91fa..3a80260 100644
--- a/lib/ts/ink_queue_ext.h
+++ b/lib/ts/ink_queue_ext.h
@@ -118,10 +118,10 @@ extern "C"
/* chunk_addr = (uintptr_t)ptr & chunk_addr_mask */
uintptr_t chunk_addr_mask;
- uint32_t count;
+ uint32_t used;
uint32_t allocated;
uint32_t allocated_base;
- uint32_t count_base;
+ uint32_t used_base;
uint32_t chunk_size_base;
uint32_t nr_thread_cache;