]> code.delx.au - monosys/commitdiff
xfce4-genmon-script: show memory usage as red based on total memory
authorJames Bunton <jbunton@atlassian.com>
Thu, 5 Jul 2018 02:34:37 +0000 (12:34 +1000)
committerJames Bunton <jbunton@atlassian.com>
Thu, 5 Jul 2018 02:34:37 +0000 (12:34 +1000)
xfce4-genmon-script.c

index 3be3f174a4c28b0c0457e9b2296f6bb93055e4b2..94507893ec875628d23ccf84a90c3d6c3ef5c91a 100644 (file)
@@ -133,13 +133,16 @@ int read_cpu_percent() {
     return 100 - (int)round(idle_jiffys_per_cpu_second);
 }
 
-int read_mem_free_mibis() {
+int read_meminfo(int* mem_free_mibis, int* mem_total_mibis) {
     char* meminfo = read_file("/proc/meminfo");
     if (meminfo == NULL) {
         fprintf(stderr, "Failed reading file /proc/meminfo: %s\n", strerror(errno));
         return -1;
     }
 
+    *mem_free_mibis = -1;
+    *mem_total_mibis = -1;
+
     while (*meminfo) {
         char* line = read_next_line(&meminfo);
         if (line == NULL) {
@@ -156,12 +159,21 @@ int read_mem_free_mibis() {
 
         if (strcmp(key, "MemAvailable") == 0) {
             int mem_available = parse_int(value_str);
-            return (int)round((double)mem_available / 1024);
+            *mem_free_mibis = (int)round((double)mem_available / 1024);
+        }
+
+        if (strcmp(key, "MemTotal") == 0) {
+            int mem_available = parse_int(value_str);
+            *mem_total_mibis = (int)round((double)mem_available / 1024);
         }
     }
 
-    fprintf(stderr, "Failed to find MemAvailable in /proc/meminfo\n");
-    return -1;
+    if (*mem_free_mibis < 0 || *mem_total_mibis) {
+        fprintf(stderr, "Failed to find field in /proc/meminfo\n");
+        return -1;
+    } else {
+        return 0;
+    }
 }
 
 int read_zfs_arc_used_mibis() {
@@ -251,10 +263,12 @@ int main(int argc, char** argv) {
     }
 
     if (strchr(show_flags, 'm')) {
+        int mem_free_mibis, mem_total_mibis;
+        read_meminfo(&mem_free_mibis, &mem_total_mibis);
         print_red_threshold(
             "mem", " MiB",
-            read_mem_free_mibis() + read_zfs_arc_used_mibis(),
-            0, 512
+            mem_free_mibis + read_zfs_arc_used_mibis(),
+            0, mem_total_mibis / 10
         );
     }