System

Consulte informacoes do sistema de runtime incluindo uso de memoria, estatisticas de garbage collection, detalhes de CPU e metadados de processo.

Carregamento

local system = require("system")

Shutdown

Acionar shutdown do sistema com código de saida. Util para apps de terminal; chamar de actors em execução terminara o sistema inteiro:

local ok, err = system.exit(0)
Parâmetro Tipo Descrição
code integer Código de saida (0 = sucesso), padrão 0

Retorna: boolean, error

Listando Modulos

Obter todos os modulos Lua carregados com metadados:

local mods, err = system.modules()

Retorna: table[], error

Cada tabela de módulo contem:

Campo Tipo Descrição
name string Nome do módulo
description string Descrição do módulo
class string[] Tags de classificação do módulo

Estatisticas de Memoria

Obter estatisticas detalhadas de memoria:

local stats, err = system.memory.stats()

Retorna: table, error

Tabela de stats contem:

Campo Tipo Descrição
alloc number Bytes alocados e em uso
total_alloc number Bytes cumulativos alocados
sys number Bytes obtidos do sistema
heap_alloc number Bytes alocados no heap
heap_sys number Bytes obtidos para heap do sistema
heap_idle number Bytes em spans ociosos
heap_in_use number Bytes em spans não-ociosos
heap_released number Bytes liberados para o OS
heap_objects number Numero de objetos heap alocados
stack_in_use number Bytes usados pelo alocador de stack
stack_sys number Bytes obtidos para stack do sistema
mspan_in_use number Bytes de estruturas mspan em uso
mspan_sys number Bytes obtidos para mspan do sistema
num_gc number Numero de ciclos GC completados
next_gc number Tamanho alvo do heap para proximo GC

Alocação Atual

Obter bytes atualmente alocados:

local bytes, err = system.memory.allocated()

Retorna: number, error

Objetos Heap

Obter numero de objetos heap alocados:

local count, err = system.memory.heap_objects()

Retorna: number, error

Limite de Memoria

Definir limite de memoria (retorna valor anterior):

local prev, err = system.memory.set_limit(1024 * 1024 * 100)
Parâmetro Tipo Descrição
limit integer Limite de memoria em bytes, -1 para ilimitado

Retorna: number, error

Obter limite de memoria atual:

local limit, err = system.memory.get_limit()

Retorna: number, error

Forcar GC

Forcar garbage collection:

local ok, err = system.gc.collect()

Retorna: boolean, error

Percentual Alvo de GC

Definir percentual alvo de GC (retorna valor anterior). Um valor de 100 significa GC dispara quando heap dobra:

local prev, err = system.gc.set_percent(200)
Parâmetro Tipo Descrição
percent integer Percentual alvo de GC

Retorna: number, error

Obter percentual alvo de GC atual:

local percent, err = system.gc.get_percent()

Retorna: number, error

Contagem de Goroutines

Obter numero de goroutines ativas:

local count, err = system.runtime.goroutines()

Retorna: number, error

GOMAXPROCS

Obter ou definir valor GOMAXPROCS:

-- Obter valor atual
local current, err = system.runtime.max_procs()

-- Definir novo valor
local prev, err = system.runtime.max_procs(4)
Parâmetro Tipo Descrição
n integer Se fornecido, define GOMAXPROCS (deve ser > 0)

Retorna: number, error

Contagem de CPUs

Obter numero de CPUs logicas:

local cpus, err = system.runtime.cpu_count()

Retorna: number, error

ID do Processo

Obter ID do processo atual:

local pid, err = system.process.pid()

Retorna: number, error

Hostname

Obter hostname do sistema:

local hostname, err = system.process.hostname()

Retorna: string, error

Estado do Servico

Obter estado para um servico supervisionado especifico:

local state, err = system.supervisor.state("namespace:service")
Parâmetro Tipo Descrição
service_id string ID do servico (ex: "namespace:service")

Retorna: table, error

Tabela de estado contem:

Campo Tipo Descrição
id string ID do servico
status string Status atual
desired string Status desejado
retry_count number Numero de retries
last_update number Timestamp da ultima atualização (nanossegundos)
started_at number Timestamp de inicio (nanossegundos)
details string Detalhes opcionais (formatados)

Todos os Estados de Servico

Obter estados para todos os serviços supervisionados:

local states, err = system.supervisor.states()

Retorna: table[], error

Cada tabela de estado tem o mesmo formato que system.supervisor.state().

Permissões

Operações de sistema estao sujeitas a avaliação de política de segurança.

Ação Recurso Descrição
system.read memory Ler estatisticas de memoria
system.read memory_limit Ler limite de memoria
system.control memory_limit Definir limite de memoria
system.read gc_percent Ler percentual de GC
system.gc gc Forcar garbage collection
system.gc gc_percent Definir percentual de GC
system.read goroutines Ler contagem de goroutines
system.read gomaxprocs Ler GOMAXPROCS
system.control gomaxprocs Definir GOMAXPROCS
system.read cpu Ler contagem de CPUs
system.read pid Ler ID do processo
system.read hostname Ler hostname
system.read modules Listar modulos carregados
system.read supervisor Ler estado do supervisor
system.exit - Acionar shutdown do sistema

Erros

Condição Tipo Retentável
Permissão negada errors.PERMISSION_DENIED não
Argumento inválido errors.INVALID não
Argumento obrigatorio ausente errors.INVALID não
Code manager indisponivel errors.INTERNAL não
Info de servico indisponivel errors.INTERNAL não
Erro de OS obtendo hostname errors.INTERNAL não

Veja Error Handling para trabalhar com erros.