mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
Use cgroups for RAM mesurement
This commit is contained in:
44
.github/workflows/e2e-test.yml
vendored
44
.github/workflows/e2e-test.yml
vendored
@@ -122,9 +122,10 @@ jobs:
|
|||||||
needs: zig-build-release
|
needs: zig-build-release
|
||||||
|
|
||||||
env:
|
env:
|
||||||
MAX_MEMORY: 26000
|
MAX_MEMORY: 26000 # 26MB (KB)
|
||||||
MAX_AVG_DURATION: 17
|
MAX_AVG_DURATION: 17
|
||||||
LIGHTPANDA_DISABLE_TELEMETRY: true
|
LIGHTPANDA_DISABLE_TELEMETRY: true
|
||||||
|
CG: /sys/fs/cgroup/lpd_${{ github.run_id }}_${{ github.run_attempt }}
|
||||||
|
|
||||||
# use a self host runner.
|
# use a self host runner.
|
||||||
runs-on: lpd-bench-hetzner
|
runs-on: lpd-bench-hetzner
|
||||||
@@ -150,12 +151,27 @@ jobs:
|
|||||||
go run ws/main.go & echo $! > WS.pid
|
go run ws/main.go & echo $! > WS.pid
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
|
- name: run lightpanda in cgroup
|
||||||
|
run: |
|
||||||
|
if [ ! -f /sys/fs/cgroup/cgroup.controllers ]; then
|
||||||
|
echo "cgroup v2 not available: /sys/fs/cgroup/cgroup.controllers missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo mkdir -p $CG
|
||||||
|
|
||||||
|
if [[ -f /sys/fs/cgroup/cgroup.subtree_control ]]; then
|
||||||
|
echo "+memory" | sudo tee /sys/fs/cgroup/cgroup.subtree_control >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
./lightpanda serve & echo $! > LPD.pid
|
||||||
|
cat LPD.pid | sudo tee $CG/cgroup.procs >/dev/null
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
|
||||||
- name: run puppeteer
|
- name: run puppeteer
|
||||||
run: |
|
run: |
|
||||||
./lightpanda serve & echo $! > LPD.pid
|
|
||||||
sleep 2
|
|
||||||
RUNS=100 npm run bench-puppeteer-cdp > puppeteer.out || exit 1
|
RUNS=100 npm run bench-puppeteer-cdp > puppeteer.out || exit 1
|
||||||
cat /proc/`cat LPD.pid`/status |grep VmHWM|grep -oP '\d+' > LPD.VmHWM
|
|
||||||
kill `cat LPD.pid`
|
kill `cat LPD.pid`
|
||||||
|
|
||||||
- name: puppeteer result
|
- name: puppeteer result
|
||||||
@@ -163,9 +179,19 @@ jobs:
|
|||||||
|
|
||||||
- name: memory regression
|
- name: memory regression
|
||||||
run: |
|
run: |
|
||||||
export LPD_VmHWM=`cat LPD.VmHWM`
|
PID=$(cat LPD.pid)
|
||||||
echo "Peak resident set size: $LPD_VmHWM"
|
while kill -0 $PID 2>/dev/null; do
|
||||||
test "$LPD_VmHWM" -le "$MAX_MEMORY"
|
sleep 1
|
||||||
|
done
|
||||||
|
if [ ! -f $CG/memory.peak ]; then
|
||||||
|
echo "memory.peak not available in $CG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PEAK_BYTES=$(cat $CG/memory.peak)
|
||||||
|
PEAK_KB=$((PEAK_BYTES / 1024))
|
||||||
|
echo "memory.peak_bytes=$PEAK_BYTES"
|
||||||
|
echo "memory.peak_kb=$PEAK_KB"
|
||||||
|
test "$PEAK_KB" -le "$MAX_MEMORY"
|
||||||
|
|
||||||
- name: duration regression
|
- name: duration regression
|
||||||
run: |
|
run: |
|
||||||
@@ -177,8 +203,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
export AVG_DURATION=`cat puppeteer.out|grep 'avg run'|sed 's/avg run duration (ms) //'`
|
export AVG_DURATION=`cat puppeteer.out|grep 'avg run'|sed 's/avg run duration (ms) //'`
|
||||||
export TOTAL_DURATION=`cat puppeteer.out|grep 'total duration'|sed 's/total duration (ms) //'`
|
export TOTAL_DURATION=`cat puppeteer.out|grep 'total duration'|sed 's/total duration (ms) //'`
|
||||||
export LPD_VmHWM=`cat LPD.VmHWM`
|
export LPD_MEM_PEAK_KB=$(( $(cat $CG/memory.peak) / 1024 ))
|
||||||
echo "{\"duration_total\":${TOTAL_DURATION},\"duration_avg\":${AVG_DURATION},\"mem_peak\":${LPD_VmHWM}}" > bench.json
|
echo "{\"duration_total\":${TOTAL_DURATION},\"duration_avg\":${AVG_DURATION},\"mem_peak\":${LPD_MEM_PEAK_KB}}" > bench.json
|
||||||
cat bench.json
|
cat bench.json
|
||||||
|
|
||||||
- name: run hyperfine
|
- name: run hyperfine
|
||||||
|
|||||||
Reference in New Issue
Block a user