bytes: use bytes for everything...

Convert Linux memory values to bytes rather than reducing the
granularity of every other OS which reports memory use in
bytes.

The previous method just made everything confusing when it
needn't be.
This commit is contained in:
Alastair Poole 2020-06-05 15:32:11 +01:00
parent c9a8d114df
commit f61e780f0b
4 changed files with 31 additions and 47 deletions

View File

@ -93,14 +93,6 @@
#define RESULTS_MEM_GB 0x80
#define RESULTS_CPU_CORES 0x100
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
static void
_memsize_bytes_to_kb(unsigned long *bytes)
{
*bytes /= 1024;
}
#endif
#if defined(__linux__)
static char *
file_contents(const char *path)
@ -490,6 +482,14 @@ _memory_usage_get(meminfo_t *memory)
memory->used = memory->total - tmp_free - memory->cached - memory->buffered;
memory->swap_used = memory->swap_total - swap_free;
memory->total *= 1024;
memory->used *= 1024;
memory->buffered *= 1024;
memory->cached *= 1024;
memory->shared *= 1024;
memory->swap_total *= 1024;
memory->swap_used *= 1024;
fclose(f);
#elif defined(__FreeBSD__) || defined(__DragonFly__)
unsigned int free = 0, active = 0, inactive = 0, wired = 0;
@ -518,19 +518,14 @@ _memory_usage_get(meminfo_t *memory)
if ((buffered = _sysctlfromname("vfs.bufspace", mib, 2, &len)) < 0)
return;
_memsize_bytes_to_kb(&memory->total);
memory->used = ((active + wired + cached) * page_size);
_memsize_bytes_to_kb(&memory->used);
memory->buffered = buffered;
_memsize_bytes_to_kb(&memory->buffered);
memory->cached = (cached * page_size);
_memsize_bytes_to_kb(&memory->cached);
result = _sysctlfromname("vm.swap_total", mib, 2, &len);
if (result < 0)
return;
memory->swap_total = (result / 1024);
memory->swap_total = result;
miblen = 3;
if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return;
@ -547,9 +542,6 @@ _memory_usage_get(meminfo_t *memory)
memory->swap_used += (unsigned long) xsw.xsw_used * page_size;
}
memory->swap_used >>= 10;
#elif defined(__OpenBSD__)
static int mib[] = { CTL_HW, HW_PHYSMEM64 };
static int bcstats_mib[] = { CTL_VFS, VFS_GENERIC, VFS_BCACHESTAT };
@ -592,23 +584,17 @@ _memory_usage_get(meminfo_t *memory)
memory->swap_total += (swdev[i].se_nblks / (1024 / DEV_BSIZE));
}
}
memory->swap_total *= 1024;
memory->swap_used *= 1024;
swap_out:
if (swdev)
free(swdev);
memory->total /= 1024;
memory->cached = (uvmexp.pagesize * bcstats.numbufpages);
_memsize_bytes_to_kb(&memory->cached);
memory->used = (uvmexp.active * uvmexp.pagesize);
_memsize_bytes_to_kb(&memory->used);
memory->buffered = (uvmexp.pagesize * (uvmexp.npages - uvmexp.free));
_memsize_bytes_to_kb(&memory->buffered);
memory->shared = (uvmexp.pagesize * uvmexp.wired);
_memsize_bytes_to_kb(&memory->shared);
#elif defined(__MacOS__)
int mib[2] = { CTL_HW, HW_MEMSIZE };
size_t total;
@ -624,20 +610,15 @@ swap_out:
mach_port = mach_host_self();
count = sizeof(vm_stats) / sizeof(natural_t);
total >>= 10;
memory->total = total;
if (host_page_size(mach_port, &page_size) == KERN_SUCCESS &&
host_statistics64(mach_port, HOST_VM_INFO, (host_info64_t)&vm_stats, &count) == KERN_SUCCESS)
{
memory->used = vm_stats.active_count + vm_stats.inactive_count + vm_stats.wire_count * page_size;
memory->used >>= 10;
memory->cached = vm_stats.active_count * page_size;
memory->cached >>= 10;
memory->shared = vm_stats.wire_count * page_size;
memory->shared >>= 10;
memory->buffered = vm_stats.inactive_count * page_size;
memory->buffered >>= 10;
}
total = sizeof(xsu);
@ -646,6 +627,8 @@ swap_out:
memory->swap_total = xsu.xsu_total;
memory->swap_used = xsu.xsu_used;
}
memory->swap_total *= 1024;
memory->swap_used *= 1024;
#endif
}

View File

@ -1464,12 +1464,13 @@ _evisum_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
}
const char *
evisum_size_format(unsigned long value)
evisum_size_format(unsigned long bytes)
{
const char *s, *unit = "BKMGTPEZY";
unsigned long int powi = 1;
unsigned long int value, powi = 1;
unsigned int precision = 2, powj = 1;
value = bytes;
while (value > 1024)
{
if ((value / 1024) < powi) break;
@ -1484,7 +1485,7 @@ evisum_size_format(unsigned long value)
{
powj *= 10;
if ((value / powi) < powj) break;
--precision;
--precision;
}
s = eina_slstr_printf("%1.*f %c", precision, (double) value / powi, *unit);
@ -1632,8 +1633,8 @@ _sys_info_all_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msg)
value = sysinfo->memory.used / ratio;
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s",
evisum_size_format(sysinfo->memory.used << 10),
evisum_size_format(sysinfo->memory.total << 10)));
evisum_size_format(sysinfo->memory.used),
evisum_size_format(sysinfo->memory.total)));
out:
free(sysinfo->cores);
free(sysinfo);

View File

@ -121,6 +121,6 @@ const char *
evisum_icon_path_get(const char *name);
const char *
evisum_size_format(unsigned long value);
evisum_size_format(unsigned long bytes);
#endif

View File

@ -142,8 +142,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%s / %s (%1.0f &#37;)",
evisum_size_format(sysinfo->memory.used << 10),
evisum_size_format(sysinfo->memory.total << 10),
evisum_size_format(sysinfo->memory.used),
evisum_size_format(sysinfo->memory.total),
value));
progress = ui->progress_mem_cached;
@ -152,8 +152,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%s / %s (%1.0f &#37;)",
evisum_size_format(sysinfo->memory.cached << 10),
evisum_size_format(sysinfo->memory.total << 10),
evisum_size_format(sysinfo->memory.cached),
evisum_size_format(sysinfo->memory.total),
value));
progress = ui->progress_mem_buffered;
@ -162,8 +162,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%s / %s (%1.0f &#37;)",
evisum_size_format(sysinfo->memory.buffered << 10),
evisum_size_format(sysinfo->memory.total << 10),
evisum_size_format(sysinfo->memory.buffered),
evisum_size_format(sysinfo->memory.total),
value));
progress = ui->progress_mem_shared;
@ -172,8 +172,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%s / %s (%1.0f &#37;)",
evisum_size_format(sysinfo->memory.shared << 10),
evisum_size_format(sysinfo->memory.total << 10),
evisum_size_format(sysinfo->memory.shared),
evisum_size_format(sysinfo->memory.total),
value));
progress = ui->progress_mem_swap;
@ -187,8 +187,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
elm_progressbar_value_set(progress, value / 100);
elm_progressbar_unit_format_set(progress,
eina_slstr_printf("%s / %s (%1.0f &#37;)",
evisum_size_format(sysinfo->memory.swap_used << 10),
evisum_size_format(sysinfo->memory.swap_total << 10),
evisum_size_format(sysinfo->memory.swap_used),
evisum_size_format(sysinfo->memory.swap_total),
value));
}