From 5bd60c05fd88438da603fce834bf5ae97aaf4545 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Mon, 15 May 2023 15:59:41 +0300 Subject: [PATCH 1/8] chore(dogfood): Update dogfood to add cgroup CPU and RAM usage This currently does not work on US Pittsburgh because of being on Ubuntu Focal and Kernel 5.4. --- dogfood/main.tf | 71 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index ac42bb844ccef..914d0f5cb945f 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -95,48 +95,75 @@ resource "coder_agent" "dev" { metadata { display_name = "CPU Usage" - key = "cpu" - script = < /tmp/cusage + EOT } metadata { - display_name = "Load Average" - key = "load" - script = "awk '{print $1}' /proc/loadavg" - interval = 1 + display_name = "RAM Usage" + interval = 10 timeout = 1 + key = "1_ram_usage" + script = <&1 | awk ' $0 ~ "Word of the Day: [A-z]+" { print $5; exit }' - EOT - interval = 60 + curl -o - --silent https://www.merriam-webster.com/word-of-the-day 2>&1 | awk ' $0 ~ "Word of the Day: [A-z]+" { print $5; exit }' + EOT + interval = 86400 timeout = 5 } From 877b1fd3dce6d8b74c84f53f21150f7f8d71cff0 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 18 May 2023 18:03:51 +0300 Subject: [PATCH 2/8] Added support for cgroup2 also added swap usage --- dogfood/main.tf | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 914d0f5cb945f..7ddf923527da5 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -104,7 +104,15 @@ resource "coder_agent" "dev" { interval=10000000 ncores=$(nproc) cusage_p=$(cat /tmp/cusage || echo 0) - cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }') && echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }' + # check if we are in cgroup v2 or v1 + if [ -d /sys/fs/cgroup/cpu.stat ]; then + # cgroup v2 + cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }') + else + # cgroup v1 + cusage=$(cat /sys/fs/cgroup/cpuacct,cpu/cpuacct.usage) + fi + echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }' echo $cusage > /tmp/cusage EOT } @@ -116,7 +124,14 @@ resource "coder_agent" "dev" { key = "1_ram_usage" script = < Date: Thu, 18 May 2023 18:11:46 +0300 Subject: [PATCH 3/8] scale load avg by nproc and refactor disk usage --- dogfood/main.tf | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 7ddf923527da5..4ca190a6c0bef 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -161,16 +161,19 @@ resource "coder_agent" "dev" { metadata { display_name = "Load Average (Host)" key = "4_load_host" - script = "awk '{print $1}' /proc/loadavg" - interval = 10 - timeout = 1 + # get laod avg scaled by number of cores + script = < Date: Thu, 18 May 2023 19:57:38 +0300 Subject: [PATCH 4/8] Fix typo --- dogfood/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 4ca190a6c0bef..60c2d9560dde1 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -161,7 +161,7 @@ resource "coder_agent" "dev" { metadata { display_name = "Load Average (Host)" key = "4_load_host" - # get laod avg scaled by number of cores + # get load avg scaled by number of cores script = < Date: Thu, 18 May 2023 20:06:24 +0300 Subject: [PATCH 5/8] Update dogfood/main.tf Co-authored-by: Cian Johnston --- dogfood/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 60c2d9560dde1..3174b84b97651 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -105,7 +105,7 @@ resource "coder_agent" "dev" { ncores=$(nproc) cusage_p=$(cat /tmp/cusage || echo 0) # check if we are in cgroup v2 or v1 - if [ -d /sys/fs/cgroup/cpu.stat ]; then + if [ -e /sys/fs/cgroup/cpu.stat ]; then # cgroup v2 cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }') else From 92d18517f40c18cc28d751fb341abdf40da52a3c Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 18 May 2023 20:06:44 +0300 Subject: [PATCH 6/8] Update dogfood/main.tf Co-authored-by: Cian Johnston --- dogfood/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 3174b84b97651..fb3810fae5f31 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -110,7 +110,7 @@ resource "coder_agent" "dev" { cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }') else # cgroup v1 - cusage=$(cat /sys/fs/cgroup/cpuacct,cpu/cpuacct.usage) + cusage=$(cat /sys/fs/cgroup/cpu,cpuacct/cpuacct.usage) fi echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }' echo $cusage > /tmp/cusage From 6a15fbf7f342d50d82f9f3054ed1deace5ccb228 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 19 May 2023 13:37:09 +0300 Subject: [PATCH 7/8] exit early for the first time --- dogfood/main.tf | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 4ca190a6c0bef..9c1bc463b7151 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -100,10 +100,6 @@ resource "coder_agent" "dev" { key = "0_cpu_usage" script = < /tmp/cusage + echo "Unknown" + exit 0 + fi + + # interval in microseconds should be metadata.interval * 1000000 + interval=10000000 + ncores=$(nproc) echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }' - echo $cusage > /tmp/cusage + EOT } From b76f43985fa9fc9a708af2da97f678d6c3683ea4 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 19 May 2023 14:06:47 +0300 Subject: [PATCH 8/8] fix typos in file names --- dogfood/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 1f20832ff9582..e9eeff7b6f92d 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -110,8 +110,8 @@ resource "coder_agent" "dev" { fi # get previous usage - if [ -f /tmp/cpu_usage ]; then - cusage_p=$(cat /tmp/cpu_usage) + if [ -e /tmp/cusage ]; then + cusage_p=$(cat /tmp/cusage) else echo $cusage > /tmp/cusage echo "Unknown" @@ -134,7 +134,7 @@ resource "coder_agent" "dev" { script = <