@@ -104,7 +104,15 @@ resource "coder_agent" "dev" {
104
104
interval=10000000
105
105
ncores=$(nproc)
106
106
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 }'
108
116
echo $cusage > /tmp/cusage
109
117
EOT
110
118
}
@@ -116,7 +124,14 @@ resource "coder_agent" "dev" {
116
124
key = " 1_ram_usage"
117
125
script = << EOT
118
126
#!/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
120
135
EOT
121
136
}
122
137
@@ -132,10 +147,12 @@ resource "coder_agent" "dev" {
132
147
}
133
148
134
149
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 "
137
152
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"
139
156
EOT
140
157
interval = 10
141
158
timeout = 1
@@ -152,7 +169,9 @@ resource "coder_agent" "dev" {
152
169
metadata {
153
170
display_name = " Disk Usage (Host)"
154
171
key = " 5_disk_host"
155
- script = " df -h | awk '$6 ~ /^\\ /$/ { print $5 }'"
172
+ script = << EOT
173
+ cat /sys/fs/cgroup/cpuacct.usage"
174
+ EOT
156
175
interval = 600
157
176
timeout = 10 # getting disk usage can take a while
158
177
}
0 commit comments