From e989371f2b67e5d937fe8f3ed08c4fd0fbbbfff8 Mon Sep 17 00:00:00 2001
From: Jean Schmidt <contato@jschmidt.me>
Date: Fri, 13 Dec 2024 16:22:16 -0300
Subject: [PATCH 1/2] adds swap space for the runners and alerts when it is
 used in jobs

---
 .../runners-instances/templates/install-config-runner.sh | 9 +++++++++
 .../modules/runners-instances/templates/user-data.sh     | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh b/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
index 0645b50f84..c12c23cce6 100644
--- a/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
+++ b/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
@@ -85,6 +85,9 @@ case \$ami_id in
   *) echo "AMI Name: unknown";;
 esac
 
+grep 'pswpin' /proc/vmstat | awk '{print $2}' >/tmp/pswpin_before_job || true
+grep 'pswpout' /proc/vmstat | awk '{print $2}' >/tmp/pswpout_before_job || true
+
 echo "AMI ID: \$ami_id"
 
 metric_report "runner_scripts.before_job" 1
@@ -94,6 +97,12 @@ EOF
 #!/bin/bash
 . /home/$USER_NAME/runner-scripts/utils.sh
 
+grep 'pswpin' /proc/vmstat | awk '{print $2}' >/tmp/pswpin_after_job || true
+grep 'pswpout' /proc/vmstat | awk '{print $2}' >/tmp/pswpout_after_job || true
+
+cmp --silent /tmp/pswpin_before_job /tmp/pswpin_after_job || echo "[!ALERT!] Swap in detected! [!ALERT!]"
+cmp --silent /tmp/pswpout_before_job /tmp/pswpout_after_job || echo "[!ALERT!] Swap out detected [!ALERT!]"
+
 sudo chown -R $USER_NAME:$USER_NAME /home/$USER_NAME/actions-runner
 metric_report "runner_scripts.after_job" 1
 EOF
diff --git a/terraform-aws-github-runner/modules/runners-instances/templates/user-data.sh b/terraform-aws-github-runner/modules/runners-instances/templates/user-data.sh
index 7fbbf984f9..0f03ca6902 100644
--- a/terraform-aws-github-runner/modules/runners-instances/templates/user-data.sh
+++ b/terraform-aws-github-runner/modules/runners-instances/templates/user-data.sh
@@ -138,6 +138,11 @@ fi
 
 ${post_install}
 
+sudo fallocate -l 3G /swapfile
+sudo chmod 600 /swapfile
+sudo mkswap /swapfile
+sudo swapon /swapfile
+
 ./svc.sh start
 
 metric_report "linux_userdata.success" 1

From 991056554112c76190f9718ebcf00429424aa819 Mon Sep 17 00:00:00 2001
From: Jean Schmidt <contato@jschmidt.me>
Date: Fri, 13 Dec 2024 16:25:04 -0300
Subject: [PATCH 2/2] Adds metrics

---
 .../templates/install-config-runner.sh              | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh b/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
index c12c23cce6..6e949adae7 100644
--- a/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
+++ b/terraform-aws-github-runner/modules/runners-instances/templates/install-config-runner.sh
@@ -100,8 +100,17 @@ EOF
 grep 'pswpin' /proc/vmstat | awk '{print $2}' >/tmp/pswpin_after_job || true
 grep 'pswpout' /proc/vmstat | awk '{print $2}' >/tmp/pswpout_after_job || true
 
-cmp --silent /tmp/pswpin_before_job /tmp/pswpin_after_job || echo "[!ALERT!] Swap in detected! [!ALERT!]"
-cmp --silent /tmp/pswpout_before_job /tmp/pswpout_after_job || echo "[!ALERT!] Swap out detected [!ALERT!]"
+if cmp --silent /tmp/pswpin_before_job /tmp/pswpin_after_job ; then
+  echo "[!ALERT!] Swap in detected! [!ALERT!]"
+  metric_report "runner_scripts.swap_in" 1
+  metric_report "runner_scripts.swap_op" 1
+fi
+
+if cmp --silent /tmp/pswpout_before_job /tmp/pswpout_after_job ; then
+  echo "[!ALERT!] Swap out detected [!ALERT!]"
+  metric_report "runner_scripts.swap_out" 1
+  metric_report "runner_scripts.swap_op" 1
+fi
 
 sudo chown -R $USER_NAME:$USER_NAME /home/$USER_NAME/actions-runner
 metric_report "runner_scripts.after_job" 1