Sistema

Consultar información del sistema en tiempo de ejecución incluyendo uso de memoria, estadisticas de recoleccion de basura, detalles de CPU y metadatos de proceso.

Carga

local system = require("system")

Apagado

Activar apagado del sistema con código de salida. Util para aplicaciones de terminal; llamar desde actores en ejecución terminara todo el sistema:

local ok, err = system.exit(0)
Parámetro Tipo Descripción
code integer Código de salida (0 = exito), predeterminado 0

Devuelve: boolean, error

Listar Modulos

Obtener todos los modulos Lua cargados con metadatos:

local mods, err = system.modules()

Devuelve: table[], error

Cada tabla de módulo contiene:

Campo Tipo Descripción
name string Nombre del módulo
description string Descripción del módulo
class string[] Tags de clasificacion del módulo

Estadisticas de Memoria

Obtener estadisticas detalladas de memoria:

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

Devuelve: table, error

La tabla de stats contiene:

Campo Tipo Descripción
alloc number Bytes asignados y en uso
total_alloc number Bytes asignados acumulativos
sys number Bytes obtenidos del sistema
heap_alloc number Bytes asignados en heap
heap_sys number Bytes obtenidos para heap del sistema
heap_idle number Bytes en spans inactivos
heap_in_use number Bytes en spans activos
heap_released number Bytes liberados al OS
heap_objects number Número de objetos de heap asignados
stack_in_use number Bytes usados por asignador de stack
stack_sys number Bytes obtenidos para stack del sistema
mspan_in_use number Bytes de estructuras mspan en uso
mspan_sys number Bytes obtenidos para mspan del sistema
num_gc number Número de ciclos GC completados
next_gc number Tamano objetivo de heap para proximo GC

Asignacion Actual

Obtener bytes actualmente asignados:

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

Devuelve: number, error

Objetos de Heap

Obtener número de objetos de heap asignados:

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

Devuelve: number, error

Limite de Memoria

Establecer limite de memoria (devuelve valor anterior):

local prev, err = system.memory.set_limit(1024 * 1024 * 100)
Parámetro Tipo Descripción
limit integer Limite de memoria en bytes, -1 para ilimitado

Devuelve: number, error

Obtener limite de memoria actual:

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

Devuelve: number, error

Forzar GC

Forzar recoleccion de basura:

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

Devuelve: boolean, error

Porcentaje Objetivo de GC

Establecer porcentaje objetivo de GC (devuelve valor anterior). Un valor de 100 significa que GC se activa cuando el heap se duplica:

local prev, err = system.gc.set_percent(200)
Parámetro Tipo Descripción
percent integer Porcentaje objetivo de GC

Devuelve: number, error

Obtener porcentaje objetivo de GC actual:

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

Devuelve: number, error

Conteo de Goroutines

Obtener número de goroutines activas:

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

Devuelve: number, error

GOMAXPROCS

Obtener o establecer valor de GOMAXPROCS:

-- Obtener valor actual
local current, err = system.runtime.max_procs()

-- Establecer nuevo valor
local prev, err = system.runtime.max_procs(4)
Parámetro Tipo Descripción
n integer Si se proporciona, establece GOMAXPROCS (debe ser > 0)

Devuelve: number, error

Conteo de CPU

Obtener número de CPUs logicas:

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

Devuelve: number, error

ID de Proceso

Obtener ID de proceso actual:

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

Devuelve: number, error

Hostname

Obtener hostname del sistema:

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

Devuelve: string, error

Estado de Servicio

Obtener estado para un servicio supervisado específico:

local state, err = system.supervisor.state("namespace:service")
Parámetro Tipo Descripción
service_id string ID de servicio (ej., "namespace:service")

Devuelve: table, error

La tabla de estado contiene:

Campo Tipo Descripción
id string ID de servicio
status string Estado actual
desired string Estado deseado
retry_count number Número de reintentos
last_update number Marca de tiempo de ultima actualizacion (nanosegundos)
started_at number Marca de tiempo de inicio (nanosegundos)
details string Detalles opcionales (formateados)

Todos los Estados de Servicio

Obtener estados para todos los servicios supervisados:

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

Devuelve: table[], error

Cada tabla de estado tiene el mismo formato que system.supervisor.state().

Permisos

Las operaciones de sistema estan sujetas a evaluacion de politica de seguridad.

Accion Recurso Descripción
system.read memory Leer estadisticas de memoria
system.read memory_limit Leer limite de memoria
system.control memory_limit Establecer limite de memoria
system.read gc_percent Leer porcentaje de GC
system.gc gc Forzar recoleccion de basura
system.gc gc_percent Establecer porcentaje de GC
system.read goroutines Leer conteo de goroutines
system.read gomaxprocs Leer GOMAXPROCS
system.control gomaxprocs Establecer GOMAXPROCS
system.read cpu Leer conteo de CPU
system.read pid Leer ID de proceso
system.read hostname Leer hostname
system.read modules Listar modulos cargados
system.read supervisor Leer estado del supervisor
system.exit - Activar apagado del sistema

Errores

Condición Tipo Reintentable
Permiso denegado errors.PERMISSION_DENIED no
Argumento invalido errors.INVALID no
Argumento requerido faltante errors.INVALID no
Gestor de código no disponible errors.INTERNAL no
Información de servicio no disponible errors.INTERNAL no
Error de OS obteniendo hostname errors.INTERNAL no

Consulte Manejo de Errores para trabajar con errores.