-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmonitor_vm.sh
More file actions
92 lines (77 loc) · 3.02 KB
/
Copy pathmonitor_vm.sh
File metadata and controls
92 lines (77 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
if [ $# -ne 4 ]; then
echo "Usage: $0 <pages_to_scan> <sleep_millisecs> <test_time> <outputfilename>"
exit 1
fi
sudo systemctl stop ksmtuned.service
sudo systemctl disable ksmtuned.service
sudo systemctl restart ksm.service
# start monitoring
set_ksm_parameters() {
local file="$1"
if [ ! -f "$file" ]; then
echo "Error: File '$file' not found."
return 1
fi
# Read the file line by line and set KSM parameters
while IFS='=' read -r key value; do
case $key in
max_page_sharing)
echo "$value" > /sys/kernel/mm/ksm/max_page_sharing
;;
merge_across_nodes)
echo "$value" > /sys/kernel/mm/ksm/merge_across_nodes
;;
pages_to_scan)
echo "$value" > /sys/kernel/mm/ksm/pages_to_scan
;;
run)
echo "$value" > /sys/kernel/mm/ksm/run
;;
sleep_millisecs)
echo "$value" > /sys/kernel/mm/ksm/sleep_millisecs
;;
stable_node_chains_prune_millisecs)
echo "$value" > /sys/kernel/mm/ksm/stable_node_chains_prune_millisecs
;;
use_zero_pages)
echo "$value" > /sys/kernel/mm/ksm/use_zero_pages
;;
*)
echo "Unknown parameter: $key"
;;
esac
done < "$file"
echo "KSM parameters set based on $file"
}
handle_sigint() {
echo "Ctrl+Z pressed, exiting..."
echo "Ending Test"
set_ksm_parameters defualt_ksm_config
pkill -9 process
exit 0
}
trap 'handle_sigint' SIGINT
echo "1" > /sys/kernel/mm/ksm/run
echo "$1" > /sys/kernel/mm/ksm/pages_to_scan
echo "$2" > /sys/kernel/mm/ksm/sleep_millisecs
test_time=$3
rm -rf $4
printf "| %-9s| %-13s| %-16s| %-16s| %-15s| %-15s| %-15s|\n" "FullScans" "GeneralProfit" "PagesShared" "TotalPagesShared" "PagesNotShared" "PagesVolatile" "KSM_CPU"
echo "FullScans,GeneralProfit,PagesShared,TotalPagesShared,PagesNotShared,PagesVolatile,KSM_CPU" >> $4
while [ $test_time -ne 0 ]; do
full_scans=$(cat /sys/kernel/mm/ksm/full_scans)
general_profit=$(cat /sys/kernel/mm/ksm/general_profit)
total_pages_shared=$(cat /sys/kernel/mm/ksm/pages_shared)
pages_currently_shared=$(cat /sys/kernel/mm/ksm/pages_sharing)
pages_to_scan=$(cat /sys/kernel/mm/ksm/pages_to_scan)
pages_nolonger_shared=$(cat /sys/kernel/mm/ksm/pages_unshared)
pages_volatile=$(cat /sys/kernel/mm/ksm/pages_volatile)
ksm_cpu=$(top -n 1 -p 47 -o %CPU | grep ksmd | awk '{print $10}')
printf "| %-9s| %-13s| %-16s| %-16s| %-15s| %-15s| %-15s|\n" "$full_scans" "$general_profit" "$total_pages_shared" "$pages_currently_shared" "$pages_nolonger_shared" "$pages_volatile" "$ksm_cpu"
echo "$full_scans,$general_profit,$total_pages_shared,$pages_currently_shared,$pages_nolonger_shared,$pages_volatile,$ksm_cpu" >> $4
sleep 1
((test_time--))
done
echo "Ending Test"
set_ksm_parameters defualt_ksm_config