mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-27 04:32:55 +00:00
Add a legacymem
variable for free
compat.
It seems there is some confusion between the way Conky reports free memory, versus other programs. I'm adding a new variable, `legacymem`, to provide the same value that is reported on older programs that don't report memory the way recommended by newer kernels. For more details, see: * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 * https://github.com/brndnmtthws/conky/pull/859 * https://github.com/brndnmtthws/conky/pull/1028 * https://github.com/brndnmtthws/conky/issues/1090 This resolves #1090.
This commit is contained in:
parent
a971046819
commit
23a4936835
@ -2311,6 +2311,15 @@
|
|||||||
<listitem>Amount of free memory.
|
<listitem>Amount of free memory.
|
||||||
<para /></listitem>
|
<para /></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<command>
|
||||||
|
<option>legacymem</option>
|
||||||
|
</command>
|
||||||
|
</term>
|
||||||
|
<listitem>Amount of memory used, calculated the same way as in the `free` program.
|
||||||
|
<para /></listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
<command>
|
<command>
|
||||||
|
@ -395,6 +395,7 @@ double cpu_barval(struct text_object *obj) {
|
|||||||
PRINT_HR_GENERATOR(mem)
|
PRINT_HR_GENERATOR(mem)
|
||||||
PRINT_HR_GENERATOR(memwithbuffers)
|
PRINT_HR_GENERATOR(memwithbuffers)
|
||||||
PRINT_HR_GENERATOR(memeasyfree)
|
PRINT_HR_GENERATOR(memeasyfree)
|
||||||
|
PRINT_HR_GENERATOR(legacymem)
|
||||||
PRINT_HR_GENERATOR(memfree)
|
PRINT_HR_GENERATOR(memfree)
|
||||||
PRINT_HR_GENERATOR(memmax)
|
PRINT_HR_GENERATOR(memmax)
|
||||||
PRINT_HR_GENERATOR(memdirty)
|
PRINT_HR_GENERATOR(memdirty)
|
||||||
|
@ -105,6 +105,7 @@ double cpu_barval(struct text_object *);
|
|||||||
void print_mem(struct text_object *, char *, unsigned int);
|
void print_mem(struct text_object *, char *, unsigned int);
|
||||||
void print_memwithbuffers(struct text_object *, char *, unsigned int);
|
void print_memwithbuffers(struct text_object *, char *, unsigned int);
|
||||||
void print_memeasyfree(struct text_object *, char *, unsigned int);
|
void print_memeasyfree(struct text_object *, char *, unsigned int);
|
||||||
|
void print_legacymem(struct text_object *, char *, unsigned int);
|
||||||
void print_memfree(struct text_object *, char *, unsigned int);
|
void print_memfree(struct text_object *, char *, unsigned int);
|
||||||
void print_memmax(struct text_object *, char *, unsigned int);
|
void print_memmax(struct text_object *, char *, unsigned int);
|
||||||
void print_memdirty(struct text_object *, char *, unsigned int);
|
void print_memdirty(struct text_object *, char *, unsigned int);
|
||||||
|
@ -166,7 +166,7 @@ struct information {
|
|||||||
|
|
||||||
/* memory information in kilobytes */
|
/* memory information in kilobytes */
|
||||||
unsigned long long mem, memwithbuffers, memeasyfree, memfree, memmax,
|
unsigned long long mem, memwithbuffers, memeasyfree, memfree, memmax,
|
||||||
memdirty;
|
memdirty, legacymem;
|
||||||
unsigned long long swap, swapfree, swapmax;
|
unsigned long long swap, swapfree, swapmax;
|
||||||
unsigned long long bufmem, buffers, cached;
|
unsigned long long bufmem, buffers, cached;
|
||||||
|
|
||||||
|
@ -1169,6 +1169,9 @@ struct text_object *construct_text_object(char *s, const char *arg, long line,
|
|||||||
END OBJ(mem, &update_meminfo) obj->data.s = STRNDUP_ARG;
|
END OBJ(mem, &update_meminfo) obj->data.s = STRNDUP_ARG;
|
||||||
obj->callbacks.print = &print_mem;
|
obj->callbacks.print = &print_mem;
|
||||||
obj->callbacks.free = &gen_free_opaque;
|
obj->callbacks.free = &gen_free_opaque;
|
||||||
|
END OBJ(legacymem, &update_meminfo) obj->data.s = STRNDUP_ARG;
|
||||||
|
obj->callbacks.print = &print_legacymem;
|
||||||
|
obj->callbacks.free = &gen_free_opaque;
|
||||||
END OBJ(memwithbuffers, &update_meminfo) obj->data.s = STRNDUP_ARG;
|
END OBJ(memwithbuffers, &update_meminfo) obj->data.s = STRNDUP_ARG;
|
||||||
obj->callbacks.print = &print_memwithbuffers;
|
obj->callbacks.print = &print_memwithbuffers;
|
||||||
obj->callbacks.free = &gen_free_opaque;
|
obj->callbacks.free = &gen_free_opaque;
|
||||||
|
@ -153,6 +153,7 @@ int update_meminfo(void) {
|
|||||||
info.memmax = total_pages * (pagesize >> 10);
|
info.memmax = total_pages * (pagesize >> 10);
|
||||||
info.mem = (total_pages - free_pages - inactive_pages) * (pagesize >> 10);
|
info.mem = (total_pages - free_pages - inactive_pages) * (pagesize >> 10);
|
||||||
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
||||||
|
info.legacymem = info.mem;
|
||||||
|
|
||||||
if ((swapmode(&swap_avail, &swap_free)) >= 0) {
|
if ((swapmode(&swap_avail, &swap_free)) >= 0) {
|
||||||
info.swapmax = swap_avail;
|
info.swapmax = swap_avail;
|
||||||
|
@ -170,6 +170,7 @@ int update_meminfo(void) {
|
|||||||
info.mem = (total_pages - free_pages - inactive_pages) * (pagesize >> 10);
|
info.mem = (total_pages - free_pages - inactive_pages) * (pagesize >> 10);
|
||||||
info.memwithbuffers = info.mem;
|
info.memwithbuffers = info.mem;
|
||||||
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
||||||
|
info.legacymem = info.mem;
|
||||||
|
|
||||||
if ((swapmode(&swap_avail, &swap_free)) >= 0) {
|
if ((swapmode(&swap_avail, &swap_free)) >= 0) {
|
||||||
info.swapmax = swap_avail;
|
info.swapmax = swap_avail;
|
||||||
|
@ -62,6 +62,7 @@ int update_meminfo() {
|
|||||||
// TODO: we have some more info...
|
// TODO: we have some more info...
|
||||||
info.memwithbuffers = info.mem;
|
info.memwithbuffers = info.mem;
|
||||||
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
||||||
|
info.legacymem = info.mem;
|
||||||
|
|
||||||
info.swapmax = si.max_swap_pages * (B_PAGE_SIZE >> 10);
|
info.swapmax = si.max_swap_pages * (B_PAGE_SIZE >> 10);
|
||||||
info.swapfree = si.free_swap_pages * (B_PAGE_SIZE >> 10);
|
info.swapfree = si.free_swap_pages * (B_PAGE_SIZE >> 10);
|
||||||
|
@ -191,7 +191,7 @@ int update_meminfo(void) {
|
|||||||
|
|
||||||
info.memmax = info.memdirty = info.swap = info.swapfree = info.swapmax =
|
info.memmax = info.memdirty = info.swap = info.swapfree = info.swapmax =
|
||||||
info.memwithbuffers = info.buffers = info.cached = info.memfree =
|
info.memwithbuffers = info.buffers = info.cached = info.memfree =
|
||||||
info.memeasyfree = 0;
|
info.memeasyfree = info.legacymem = 0;
|
||||||
|
|
||||||
if (!(meminfo_fp = open_file("/proc/meminfo", &reported))) { return 0; }
|
if (!(meminfo_fp = open_file("/proc/meminfo", &reported))) { return 0; }
|
||||||
|
|
||||||
@ -258,6 +258,8 @@ int update_meminfo(void) {
|
|||||||
info.mem = curmem;
|
info.mem = curmem;
|
||||||
info.bufmem = curbufmem;
|
info.bufmem = curbufmem;
|
||||||
info.memeasyfree = cureasyfree;
|
info.memeasyfree = cureasyfree;
|
||||||
|
info.legacymem =
|
||||||
|
info.memmax - (info.memfree + info.buffers + info.cached + sreclaimable);
|
||||||
|
|
||||||
fclose(meminfo_fp);
|
fclose(meminfo_fp);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -127,6 +127,7 @@ void update_meminfo() {
|
|||||||
info.mem = ((total_pages - free_pages - inactive_pages) * pagesize) >> 10;
|
info.mem = ((total_pages - free_pages - inactive_pages) * pagesize) >> 10;
|
||||||
info.memwithbuffers = info.mem;
|
info.memwithbuffers = info.mem;
|
||||||
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
||||||
|
info.legacymem = info.mem;
|
||||||
|
|
||||||
if (swapmode(&swap_avail, &swap_free) >= 0) {
|
if (swapmode(&swap_avail, &swap_free) >= 0) {
|
||||||
info.swapmax = swap_avail;
|
info.swapmax = swap_avail;
|
||||||
|
@ -174,6 +174,7 @@ void update_meminfo() {
|
|||||||
info.memmax = pagetok(vmtotal.t_rm) + pagetok(vmtotal.t_free);
|
info.memmax = pagetok(vmtotal.t_rm) + pagetok(vmtotal.t_free);
|
||||||
info.mem = info.memwithbuffers = pagetok(vmtotal.t_rm);
|
info.mem = info.memwithbuffers = pagetok(vmtotal.t_rm);
|
||||||
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
info.memeasyfree = info.memfree = info.memmax - info.mem;
|
||||||
|
info.legacymem = info.mem;
|
||||||
|
|
||||||
if ((swapmode(&swap_used, &swap_avail)) >= 0) {
|
if ((swapmode(&swap_used, &swap_avail)) >= 0) {
|
||||||
info.swapmax = swap_avail;
|
info.swapmax = swap_avail;
|
||||||
|
Loading…
Reference in New Issue
Block a user