Skip to content

Commit 877b1fd

Browse files
committed
Added support for cgroup2
also added swap usage
1 parent 5bd60c0 commit 877b1fd

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

dogfood/main.tf

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,15 @@ resource "coder_agent" "dev" {
104104
interval=10000000
105105
ncores=$(nproc)
106106
cusage_p=$(cat /tmp/cusage || echo 0)
107-
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 }'
107+
# check if we are in cgroup v2 or v1
108+
if [ -d /sys/fs/cgroup/cpu.stat ]; then
109+
# cgroup v2
110+
cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }')
111+
else
112+
# cgroup v1
113+
cusage=$(cat /sys/fs/cgroup/cpuacct,cpu/cpuacct.usage)
114+
fi
115+
echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }'
108116
echo $cusage > /tmp/cusage
109117
EOT
110118
}
@@ -116,7 +124,14 @@ resource "coder_agent" "dev" {
116124
key = "1_ram_usage"
117125
script = <<EOT
118126
#!/bin/bash
119-
echo "`cat /sys/fs/cgroup/memory.current` `cat /sys/fs/cgroup/memory.max`" | awk '{ used=$1/1024/1024/1024; total=$2/1024/1024/1024; printf "%0.2f / %0.2f GB\n", used, total }'
127+
# first check if we are in cgroup v2 or v1
128+
if [ -d /sys/fs/cgroup/memory.max ]; then
129+
# cgroup v2
130+
echo "`cat /sys/fs/cgroup/memory.current` `cat /sys/fs/cgroup/memory.max`" | awk '{ used=$1/1024/1024/1024; total=$2/1024/1024/1024; printf "%0.2f / %0.2f GB\n", used, total }'
131+
else
132+
# cgroup v1
133+
echo "`cat /sys/fs/cgroup/memory/memory.usage_in_bytes` `cat /sys/fs/cgroup/memory/memory.limit_in_bytes`" | awk '{ used=$1/1024/1024/1024; total=$2/1024/1024/1024; printf "%0.2f / %0.2f GB\n", used, total }'
134+
fi
120135
EOT
121136
}
122137

@@ -132,10 +147,12 @@ resource "coder_agent" "dev" {
132147
}
133148

134149
metadata {
135-
display_name = "Memory Usage (Host)"
136-
key = "3_mem_host"
150+
display_name = "Memory and Swap Usage (Host)"
151+
key = "3_mem_swap_host"
137152
script = <<EOT
138-
free | awk '/^Mem/ { printf("%.0f%%", $4/$2 * 100.0) }'
153+
mem_usage=`free | awk '/^Mem/ { printf("%.0f%%", $3/$2 * 100.0) }'`
154+
swp_usage=`free | awk '/^Swap/ { printf("%.0f%%", $3/$2 * 100.0) }'`
155+
echo "Memory: $mem_usage, Swap: $swp_usage"
139156
EOT
140157
interval = 10
141158
timeout = 1
@@ -152,7 +169,9 @@ resource "coder_agent" "dev" {
152169
metadata {
153170
display_name = "Disk Usage (Host)"
154171
key = "5_disk_host"
155-
script = "df -h | awk '$6 ~ /^\\/$/ { print $5 }'"
172+
script = <<EOT
173+
cat /sys/fs/cgroup/cpuacct.usage"
174+
EOT
156175
interval = 600
157176
timeout = 10 #getting disk usage can take a while
158177
}

0 commit comments

Comments
 (0)