Перейти к содержанию

Формула расчёта счётчика воркспейса

Размером воркспейса принято называть счётчик зелёной зоны.

Чтобы рассчитать, то какого размера будет воркспейс на счётчике, нужно воспользоваться формулой:

const maxSysMem = 1024 * 1024 * 1024 * 16;
let sysMem = memory * 0.25;
if (sysMem > maxSysMem) {
    sysMem = maxSysMem;
}
const workspaceSize = (memory - sysMem) / 2;

Где memory это значение, которое в соответствующем поле memory, мы указываем в файле manifest.json

Расчет размера памяти выделенной воркспейсу для установки в manifest.json

Задать значение счетчика более 24Gb

В данном случае в переменной memory вносится значение объема памяти более 64Gb. 1/4 от 64 равно 16Gb. Из формулы выше Далее значение sysMem составит 16Gb. Тогда формула для расчета memory примет вид:

memory = workspaceSize x 2 + 16Gb

Пример: Задать зеленую зону в 40Gb

memory = 40 x 2 + 16 = 96

переводим полученное значение в байты

memory = 96 x 10243 = 103079215104

Задать значение счетчика менее 24Gb

В данном случае значение memory составит менее 64Gb и в дальнейших расчетах sysMem принимает значение 1/4 от memory

workspaceSize = (memory - 1/4 memory) / 2

workspaceSize = (3/4 memory) / 2

workspaceSize x 2 = 3/4 memory

memory = workspaceSize X 2 x 4/3 = workspaceSize X 8/3

Пример: Задать зеленую зону в 10Gb

Для расчётов лучше 10Gb сначала перевести в байты, а потом вычислить 8/3

memory = (10 x 10243) x 8/3 = 28633115306,66667

Так как дробь неправильная имеем на выходе значение с дробным остатком который мы не можем задать как значение memory

Далее отбрасываем дробный остаток и начинаем перебирать целую часть числа вычисляя workspaceSize пока в результате не получим целое число

28633115307 x 3 / 8 = 10 737 418 240,125
28633115308 x 3 / 8 = 10 737 418 240,5
28633115309 x 3 / 8 = 10 737 418 240,875
28633115310 x 3 / 8 = 10 737 418 241,25
28633115311 x 3 / 8 = 10 737 418 241,625
28633115312 x 3 / 8 = 10 737 418 242

И на 6 ой попытке мы нашли ответ

memory = 28633115312

Info

В настоящее время при обновлении воркспейсов на новую версию возможно появление ошибки связанной с несоответствия типов int и float.

Для ее устранения аналогично берем в файле manifest.json значение memory и подбираем его новое значение что бы при умножении на 3 и делении на 8 размер воркспейса был целым числом.

Пример зелёной зоны

ws_size_formula_2

  1. черта Зелёной Зоны Воркспейса (9.17GB - объём в гигабайтах)
  2. текущий объём, занимаемый Воркспейсом на машине (10.4GB - объём в гигабайтах).