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
Directorio de Trabajo
Obtener el directorio de trabajo actual del runtime:
local dir, err = system.process.cwd()
Devuelve: string, error
Hosts de Proceso
Listar todos los hosts de proceso con estadisticas de workers y colas:
local hosts, err = system.hosts.list()
Devuelve: table[], error
Cada tabla de host contiene:
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | ID de registro del host |
workers |
number | Tamano del pool de workers |
processes |
number | Procesos activos en este host |
executed |
number | Total de pasos ejecutados |
stolen |
number | Pasos robados a otros hosts |
queue_depth |
number | Elementos pendientes en la cola del host |
Listar procesos corriendo en un host específico:
local procs, err = system.hosts.processes("app:host")
| Parámetro | Tipo | Descripción |
|---|---|---|
host_id |
string | ID de registro del host |
Devuelve: table[], error
Cada tabla de proceso contiene:
| Campo | Tipo | Descripción |
|---|---|---|
pid |
string | ID de proceso |
host |
string | ID del host |
source |
string | ID de entrada fuente |
state |
string | Estado del proceso |
steps |
number | Pasos ejecutados |
started_at |
number | Marca de tiempo de inicio (nanosegundos) |
parent |
string | PID padre (omitido si no hay) |
actor_id |
string | ID de actor (omitido si no hay) |
stats |
table | Estadisticas especificas del proceso (opcional) |
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 |
cwd |
Leer directorio de trabajo |
system.read |
hosts |
Listar hosts / procesos de host |
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.INVALID |
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 (hostname, cwd) | errors.INTERNAL |
no |
Consulte Manejo de Errores para trabajar con errores.