Когда я фиксирую формулу, Azure жалуется на ошибки вычислений. Я сузил его до числа с десятичными знаками. Вот моя формула:
pivot = (0.15*($CurrentDedicated/20)+0.84);
target = $CurrentDedicated*(($CPUPercent.GetSample(TimeInterval_Minute*5)/100)/pivot);
Естественно, он жалуется на отсутствие образца, поэтому я ввел $CPUPercent.GetSamplePercent(TimeInterval_Minute*0,TimeInterval_Minute*5)
в троичное выражение, но он жалуется на «ошибку оценки». Я полагаю, что это происходит потому, что я пытаюсь выделить небольшое количество выделенных машин.
Итак ... Как мне округлить вверх и вниз в таком выражении?
UPD:
Итак, я обнаружил свою проблему: $CPUPercent.GetSample
не следует использовать как число. Вместо этого для получения числа следует использовать max (), min () или avg (). Исправленная формула выглядит следующим образом:
samplepercent = $CPUPercent.GetSamplePercent(TimeInterval_Minute*0,TimeInterval_Minute*5);
pivot = (0.15*($CurrentDedicated/20)+0.84);
$TargetDedicated = samplepercent < 0.7 ? 1 : $CurrentDedicated*((avg($CPUPercent.GetSample(TimeInterval_Minute*5))/100)/pivot);
К сожалению, нет возможности округлить в большую или меньшую сторону. В выражениях автомасштабирования не должно быть функций и не определен оператор %
(x = x - x% 1 и x = x - x% 1 + 1 для округления в меньшую и большую сторону соответственно). Это действительно печально, и мне может потребоваться просмотреть приведенное выше уравнение, чтобы убедиться, что оно работает так, как задумано.