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.