different fan curve to try to weight lower fans at more optimal temperature
This commit is contained in:
parent
02255cc345
commit
50cfcf0bc5
1 changed files with 6 additions and 6 deletions
|
|
@ -17,11 +17,11 @@ my $default_threshold=32; # the ambient temperature we use above
|
||||||
# control the fans
|
# control the fans
|
||||||
my $base_temp = 30; # no fans when below this temp
|
my $base_temp = 30; # no fans when below this temp
|
||||||
my $desired_temp1 = 40; # aim to keep the temperature below this
|
my $desired_temp1 = 40; # aim to keep the temperature below this
|
||||||
my $desired_temp2 = 50; # really ramp up fans above this
|
my $desired_temp2 = 45; # really ramp up fans above this
|
||||||
my $desired_temp3 = 55; # really ramp up fans above this
|
my $desired_temp3 = 55; # really ramp up fans above this
|
||||||
my $demand1 = 30; # demand at temp1
|
my $demand1 = 5; # prescaled demand at temp1
|
||||||
my $demand2 = 100; # demand at temp2
|
my $demand2 = 40; # prescaled demand at temp2
|
||||||
my $demand3 = 200; # demand at temp3
|
my $demand3 = 200; # prescaled demand at temp3
|
||||||
|
|
||||||
# check inlet temp every minute, hddtemp every minute (but FIXME:
|
# check inlet temp every minute, hddtemp every minute (but FIXME:
|
||||||
# ensure doesn't spinup spundown disks), and sensors every few seconds
|
# ensure doesn't spinup spundown disks), and sensors every few seconds
|
||||||
|
|
@ -124,10 +124,12 @@ sub set_fans_servo {
|
||||||
# y1 = demand1 ; x1 = desired_temp1 ; y2 = demand2 ; x2 = desired_temp2
|
# y1 = demand1 ; x1 = desired_temp1 ; y2 = demand2 ; x2 = desired_temp2
|
||||||
$demand = $demand1 + ($weighted_temp - $desired_temp1) * ($demand2 - $demand1)/($desired_temp2 - $desired_temp1);
|
$demand = $demand1 + ($weighted_temp - $desired_temp1) * ($demand2 - $demand1)/($desired_temp2 - $desired_temp1);
|
||||||
}
|
}
|
||||||
|
printf "demand = %0.2f", $demand;
|
||||||
$demand = int($static_speed_low + $demand/100*($static_speed_high-$static_speed_low));
|
$demand = int($static_speed_low + $demand/100*($static_speed_high-$static_speed_low));
|
||||||
if ($demand>255) {
|
if ($demand>255) {
|
||||||
$demand=255;
|
$demand=255;
|
||||||
}
|
}
|
||||||
|
printf " -> %i\n", $demand;
|
||||||
# ramp down the fans quickly upon lack of demand, don't ramp them up
|
# ramp down the fans quickly upon lack of demand, don't ramp them up
|
||||||
# to tiny spikes of 1 fan unit. FIXME: But should implement long
|
# to tiny spikes of 1 fan unit. FIXME: But should implement long
|
||||||
# term smoothing of +/- 1 fan unit
|
# term smoothing of +/- 1 fan unit
|
||||||
|
|
@ -137,8 +139,6 @@ sub set_fans_servo {
|
||||||
# print "demand = $demand\n";
|
# print "demand = $demand\n";
|
||||||
print "--> ipmitool raw 0x30 0x30 0x02 0xff $demand\n";
|
print "--> ipmitool raw 0x30 0x30 0x02 0xff $demand\n";
|
||||||
system("ipmitool raw 0x30 0x30 0x02 0xff $demand");
|
system("ipmitool raw 0x30 0x30 0x02 0xff $demand");
|
||||||
} else {
|
|
||||||
print "demand = $demand\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue