lscpu: report also number of cache instances
Caches (sum of all): L1d: 128 KiB (4 instances) L1i: 128 KiB (4 instances) L2: 1 MiB (4 instances) L3: 8 MiB (1 instance) Suggested-by: John Henning <john.henning@oracle.com> Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
8bb50864c1
commit
9dadd3e60c
|
@ -209,13 +209,19 @@ static int cputype_read_topology(struct lscpu_cxt *cxt, struct lscpu_cputype *ct
|
|||
}
|
||||
|
||||
/* count size of all instancess of the "name" */
|
||||
size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name)
|
||||
size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name, int *instances)
|
||||
{
|
||||
size_t i, sz = 0;
|
||||
|
||||
if (instances)
|
||||
*instances = 0;
|
||||
|
||||
for (i = 0; i < cxt->ncaches; i++) {
|
||||
if (strcmp(cxt->caches[i].name, name) == 0)
|
||||
if (strcmp(cxt->caches[i].name, name) == 0) {
|
||||
sz += cxt->caches[i].size;
|
||||
if (instances)
|
||||
(*instances)++;
|
||||
}
|
||||
}
|
||||
|
||||
return sz;
|
||||
|
@ -539,10 +545,10 @@ int lscpu_read_topology(struct lscpu_cxt *cxt)
|
|||
}
|
||||
|
||||
lscpu_sort_caches(cxt->caches, cxt->ncaches);
|
||||
DBG(GATHER, ul_debugobj(cxt, " L1d: %zu", lscpu_get_cache_full_size(cxt, "L1d")));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L1i: %zu", lscpu_get_cache_full_size(cxt, "L1i")));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L2: %zu", lscpu_get_cache_full_size(cxt, "L2")));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L3: %zu", lscpu_get_cache_full_size(cxt, "L3")));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L1d: %zu", lscpu_get_cache_full_size(cxt, "L1d", NULL)));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L1i: %zu", lscpu_get_cache_full_size(cxt, "L1i", NULL)));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L2: %zu", lscpu_get_cache_full_size(cxt, "L2", NULL)));
|
||||
DBG(GATHER, ul_debugobj(cxt, " L3: %zu", lscpu_get_cache_full_size(cxt, "L3", NULL)));
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -511,7 +511,7 @@ static void caches_add_line(struct lscpu_cxt *cxt,
|
|||
{
|
||||
uint64_t sz = 0;
|
||||
if (ca->name)
|
||||
sz = lscpu_get_cache_full_size(cxt, ca->name);
|
||||
sz = lscpu_get_cache_full_size(cxt, ca->name, NULL);
|
||||
if (!sz)
|
||||
break;
|
||||
if (cxt->bytes)
|
||||
|
@ -1045,21 +1045,28 @@ static void print_summary(struct lscpu_cxt *cxt)
|
|||
for (i = 0; i < cxt->ncaches; i++) {
|
||||
const char *name = cxt->caches[i].name;
|
||||
uint64_t sz;
|
||||
int n = 0;
|
||||
|
||||
if (last && strcmp(last, name) == 0)
|
||||
continue;
|
||||
sz = lscpu_get_cache_full_size(cxt, name);
|
||||
sz = lscpu_get_cache_full_size(cxt, name, &n);
|
||||
if (!sz)
|
||||
continue;
|
||||
snprintf(field, sizeof(field), is_term ? _("%s:") : _("%s cache:"), name);
|
||||
if (cxt->bytes)
|
||||
add_summary_x(tb, sec, field, "%" PRIu64, sz);
|
||||
add_summary_sprint(tb, sec, field,
|
||||
P_("%" PRIu64 " (%d instance)",
|
||||
"%" PRIu64 " (%d instances)", n),
|
||||
sz, n);
|
||||
else {
|
||||
char *tmp = size_to_human_string(
|
||||
SIZE_SUFFIX_3LETTER |
|
||||
SIZE_SUFFIX_SPACE,
|
||||
sz);
|
||||
add_summary_s(tb, sec, field, tmp);
|
||||
add_summary_sprint(tb, sec, field,
|
||||
P_("%s (%d instance)",
|
||||
"%s (%d instances)", n),
|
||||
tmp, n);
|
||||
free(tmp);
|
||||
}
|
||||
last = name;
|
||||
|
|
|
@ -271,7 +271,7 @@ int lscpu_read_numas(struct lscpu_cxt *cxt);
|
|||
void lscpu_free_caches(struct lscpu_cache *caches, size_t n);
|
||||
void lscpu_sort_caches(struct lscpu_cache *caches, size_t n);
|
||||
|
||||
size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name);
|
||||
size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name, int *instances);
|
||||
struct lscpu_cache *lscpu_cpu_get_cache(struct lscpu_cxt *cxt,
|
||||
struct lscpu_cpu *cpu, const char *name);
|
||||
|
||||
|
|
Loading…
Reference in New Issue