背景
电商的样本数据规模会随着时间变化,那么一些小时级别的训练任务对内存等资源的需求也是动态变化的。如果忽视这种动态变化,用固定的内存来应对所有小时的任务,就会导致资源浪费。
因此,我想出了一种随着小时动态调整内存分配的方法,这样可以为样本多的任务分配更多内存,在样本少的任务中减少内存。
脚本
需要先观察样本随时间的变化规律,设定好内存峰值和低值及其对应的时间。
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
| #!/bin/bash
read -p "请输入小时(例如\"03\"、\"14\"、\"23\"): " hr
h1=5; m1=28 h2=12; m2=14 h3=29; m3=28
hr_int=$((10#$hr)) if [ "$hr_int" -lt "$h1" ]; then hr_int=$((hr_int + 24)) fi
if [ "$hr_int" -ge "$h1" ] && [ "$hr_int" -le "$h2" ]; then left=$h1; right=$h2; ml=$m1; mr=$m2 else left=$h2; right=$h3; ml=$m2; mr=$m3 fi
den=$((right - left)) num=$(( ml * (right - hr_int) + mr * (hr_int - left) ))
memory=$(( (num + den/2) / den ))
printf "%d\n" "$memory"
|
测试结果
1 2 3 4 5 6 7 8 9 10 11 12
| root@mail:~/code 请输入小时(例如"03"、"14"、"23"): 15 16 root@mail:~/code 请输入小时(例如"03"、"14"、"23"): 11 16 root@mail:~/code 请输入小时(例如"03"、"14"、"23"): 21 21 root@mail:~/code 请输入小时(例如"03"、"14"、"23"): 01 25
|