Перейти к содержимому

CpuLimit

CpuLimit показывает общий и оставшийся CPU-бюджет текущего Lua-модуля. Все свойства доступны только для чтения.

Это бюджет выполнения Lua VM, а не процент загрузки процессора компьютера. Runtime выдаёт текущему Lua-вызову лимит условных циклов и уменьшает остаток по мере выполнения инструкций. Когда бюджет исчерпан, выполнение может быть отложено или прервано механизмом лимита модуля.

Значения нужны для самоконтроля тяжёлых циклов. Чтение CpuLimit ничего не ускоряет и не резервирует дополнительное время.

if CpuLimit.RemainingCpuTime < 0.1 then
return -- отложить необязательную работу
end
Свойство Тип Доступ Описание
CpuCycleLimit integer get Максимальный бюджет CPU-циклов модуля на текущее выполнение.
RemainingCpuCycles integer get Оставшийся бюджет в CPU-циклах.
RemainingCpuTime number get Оставшаяся доля бюджета: от 0 до 1.
local usedCycles = CpuLimit.CpuCycleLimit - CpuLimit.RemainingCpuCycles
local remainingPercent = CpuLimit.RemainingCpuTime * 100

Значения отражают текущий остаток, а не постоянную характеристику устройства. В контрольном callback простой цикл из 100 итераций уменьшил RemainingCpuCycles.

Читайте остаток непосредственно перед дорогой необязательной операцией:

if CpuLimit.RemainingCpuTime >= 0.2 then
-- Дополнительные расчёты
end

API работает в обоих контекстах, но лимиты сильно различаются. Во время проверки один клиентский модуль получил 880000000, а server.lua Reflex-модуля — 1999000 циклов.

CpuCycleLimit, RemainingCpuCycles и RemainingCpuTime являются getter-only. Попытка изменить любое из них завершается Lua access error.