9 void status_memusage(GlobalData *g)
12 char text[16] = { 0 };
18 long long memtotal = 0;
19 long long memfree = 0;
21 long long membuffers = 0;
22 long long memcached = 0;
23 long long slab_reclaimable = 0;
29 stfile = fopen("/proc/meminfo", "r");
31 stlen = getline(&stline, &stlen, stfile);
32 memtotal = atoll(&stline[16]);
34 stlen = getline(&stline, &stlen, stfile);
35 memfree = atoll(&stline[16]);
37 stlen = getline(&stline, &stlen, stfile);
38 if (stlen > 13 && !memcmp(stline, "MemAvailable:", 13)) {
39 stlen = getline(&stline, &stlen, stfile);
41 membuffers = atoll(&stline[16]);
43 stlen = getline(&stline, &stlen, stfile);
44 memcached = atoll(&stline[16]);
46 while (0 < (stlen = getline(&stline, &stlen, stfile))) {
47 if (stlen > 13 && !memcmp(stline, "SReclaimable:", 13)) {
48 slab_reclaimable = atoll(&stline[16]);
56 memused = memtotal - memfree - memcached - slab_reclaimable - membuffers;
58 memused /= 1024; // Just show MBs used
60 /* Change color based on % of RAM used */
61 if ((float)memused / (float)memtotal < 0.85) {
62 s.color = "#22FF22"; // green
64 s.color = "#FF0000"; // red
67 snprintf(text, sizeof(text), "Mem: %lld M", memused);
69 line_append_item(g, &s);