Название: Средняя загрузка ЦП
Настрой планировщик на выполнение с интервалом в 1 секунду (частота дискретизации).
Настрой информационные логи для вывода в терминал в системном логировании:
:local cpuload 0
:global cpuarray
:local arraylen 0
:local arraypos 0
:local arraytot 0
:global avgcpuload 0
:global highavgcpuload
размер массива – это количество образцов загрузки ЦП, которые нужно сохранить. Экспериментируй с этим значением, чтобы увеличить или уменьшить количество образцов. Чем больше значение, тем дольше рассчитывается средняя загрузка ЦП.
:local arraysize 5
Получи образцы загрузки ЦП, ограничь cpuarray размером массива:
:set cpuload [/system resource get cpu-load]
:set cpuarray ([:toarray $cpuload] + $cpuarray)
:set cpuarray [:pick $cpuarray 0 $arraysize]
Сложи все значения в массиве:
:set arraypos 0
:set arraylen [:len $cpuarray]
:while ($arraypos < $arraylen) do={
:set arraytot ($arraytot + [:pick $cpuarray $arraypos]);
:set arraypos ($arraypos + 1)}
Раздели сумму значений массива на количество значений в cpuarray:
:set avgcpuload ($arraytot / [:len $cpuarray])
:if ([:len $highavgcpuload] = 0) do={:set highavgcpuload $avgcpuload}
:if ([$highavgcpuload] < [$avgcpuload]) do={:set highavgcpuload $avgcpuload}
Отобрази результаты в терминальном окне:
:log info (“CPU Load Captures:”)
:log info $cpuarray
:log info (“Array Total: $arraytot”)
:log info (“Array size: $arraysize”)
:log info (“CPU Load - Avg: $avgcpuload High: $highavgcpuload”)
Настрой планировщик на выполнение с интервалом в 1 секунду (частота дискретизации).
Настрой информационные логи для вывода в терминал в системном логировании:
:local cpuload 0
:global cpuarray
:local arraylen 0
:local arraypos 0
:local arraytot 0
:global avgcpuload 0
:global highavgcpuload
размер массива – это количество образцов загрузки ЦП, которые нужно сохранить. Экспериментируй с этим значением, чтобы увеличить или уменьшить количество образцов. Чем больше значение, тем дольше рассчитывается средняя загрузка ЦП.
:local arraysize 5
Получи образцы загрузки ЦП, ограничь cpuarray размером массива:
:set cpuload [/system resource get cpu-load]
:set cpuarray ([:toarray $cpuload] + $cpuarray)
:set cpuarray [:pick $cpuarray 0 $arraysize]
Сложи все значения в массиве:
:set arraypos 0
:set arraylen [:len $cpuarray]
:while ($arraypos < $arraylen) do={
:set arraytot ($arraytot + [:pick $cpuarray $arraypos]);
:set arraypos ($arraypos + 1)}
Раздели сумму значений массива на количество значений в cpuarray:
:set avgcpuload ($arraytot / [:len $cpuarray])
:if ([:len $highavgcpuload] = 0) do={:set highavgcpuload $avgcpuload}
:if ([$highavgcpuload] < [$avgcpuload]) do={:set highavgcpuload $avgcpuload}
Отобрази результаты в терминальном окне:
:log info (“CPU Load Captures:”)
:log info $cpuarray
:log info (“Array Total: $arraytot”)
:log info (“Array size: $arraysize”)
:log info (“CPU Load - Avg: $avgcpuload High: $highavgcpuload”)