시스템
메모리 사용량, 가비지 컬렉션 통계, CPU 정보, 프로세스 메타데이터를 포함한 런타임 시스템 정보를 조회합니다.
로딩
local system = require("system")
종료
종료 코드와 함께 시스템 종료를 트리거합니다. 터미널 앱에 유용합니다. 실행 중인 액터에서 호출하면 전체 시스템이 종료됩니다:
local ok, err = system.exit(0)
| 파라미터 | 타입 | 설명 |
|---|---|---|
code |
integer | 종료 코드 (0 = 성공), 기본값 0 |
반환: boolean, error
모듈 목록
메타데이터와 함께 로드된 모든 Lua 모듈을 가져옵니다:
local mods, err = system.modules()
반환: table[], error
각 모듈 테이블에는 다음이 포함됩니다:
| 필드 | 타입 | 설명 |
|---|---|---|
name |
string | 모듈 이름 |
description |
string | 모듈 설명 |
class |
string[] | 모듈 분류 태그 |
메모리 통계
상세한 메모리 통계를 가져옵니다:
local stats, err = system.memory.stats()
반환: table, error
통계 테이블에는 다음이 포함됩니다:
| 필드 | 타입 | 설명 |
|---|---|---|
alloc |
number | 할당되어 사용 중인 바이트 |
total_alloc |
number | 누적 할당 바이트 |
sys |
number | 시스템에서 얻은 바이트 |
heap_alloc |
number | 힙에 할당된 바이트 |
heap_sys |
number | 힙을 위해 시스템에서 얻은 바이트 |
heap_idle |
number | 유휴 스팬의 바이트 |
heap_in_use |
number | 비유휴 스팬의 바이트 |
heap_released |
number | OS에 반환된 바이트 |
heap_objects |
number | 할당된 힙 객체 수 |
stack_in_use |
number | 스택 할당자가 사용하는 바이트 |
stack_sys |
number | 스택을 위해 시스템에서 얻은 바이트 |
mspan_in_use |
number | 사용 중인 mspan 구조체 바이트 |
mspan_sys |
number | mspan을 위해 시스템에서 얻은 바이트 |
num_gc |
number | 완료된 GC 사이클 수 |
next_gc |
number | 다음 GC를 위한 목표 힙 크기 |
현재 할당량
현재 할당된 바이트를 가져옵니다:
local bytes, err = system.memory.allocated()
반환: number, error
힙 객체
할당된 힙 객체 수를 가져옵니다:
local count, err = system.memory.heap_objects()
반환: number, error
메모리 제한
메모리 제한을 설정합니다 (이전 값 반환):
local prev, err = system.memory.set_limit(1024 * 1024 * 100)
| 파라미터 | 타입 | 설명 |
|---|---|---|
limit |
integer | 바이트 단위 메모리 제한, -1은 무제한 |
반환: number, error
현재 메모리 제한을 가져옵니다:
local limit, err = system.memory.get_limit()
반환: number, error
강제 GC
가비지 컬렉션을 강제 실행합니다:
local ok, err = system.gc.collect()
반환: boolean, error
GC 목표 퍼센트
GC 목표 퍼센트를 설정합니다 (이전 값 반환). 100 값은 힙이 두 배가 될 때 GC가 트리거됨을 의미합니다:
local prev, err = system.gc.set_percent(200)
| 파라미터 | 타입 | 설명 |
|---|---|---|
percent |
integer | GC 목표 퍼센트 |
반환: number, error
현재 GC 목표 퍼센트를 가져옵니다:
local percent, err = system.gc.get_percent()
반환: number, error
고루틴 수
활성 고루틴 수를 가져옵니다:
local count, err = system.runtime.goroutines()
반환: number, error
GOMAXPROCS
GOMAXPROCS 값을 가져오거나 설정합니다:
-- 현재 값 가져오기
local current, err = system.runtime.max_procs()
-- 새 값 설정
local prev, err = system.runtime.max_procs(4)
| 파라미터 | 타입 | 설명 |
|---|---|---|
n |
integer | 제공되면 GOMAXPROCS 설정 (0보다 커야 함) |
반환: number, error
CPU 수
논리 CPU 수를 가져옵니다:
local cpus, err = system.runtime.cpu_count()
반환: number, error
프로세스 ID
현재 프로세스 ID를 가져옵니다:
local pid, err = system.process.pid()
반환: number, error
호스트명
시스템 호스트명을 가져옵니다:
local hostname, err = system.process.hostname()
반환: string, error
서비스 상태
특정 감독 서비스의 상태를 가져옵니다:
local state, err = system.supervisor.state("namespace:service")
| 파라미터 | 타입 | 설명 |
|---|---|---|
service_id |
string | 서비스 ID (예: "namespace:service") |
반환: table, error
상태 테이블에는 다음이 포함됩니다:
| 필드 | 타입 | 설명 |
|---|---|---|
id |
string | 서비스 ID |
status |
string | 현재 상태 |
desired |
string | 원하는 상태 |
retry_count |
number | 재시도 횟수 |
last_update |
number | 마지막 업데이트 타임스탬프 (나노초) |
started_at |
number | 시작 타임스탬프 (나노초) |
details |
string | 선택적 상세 정보 (포맷됨) |
모든 서비스 상태
모든 감독 서비스의 상태를 가져옵니다:
local states, err = system.supervisor.states()
반환: table[], error
각 상태 테이블은 system.supervisor.state()와 동일한 형식입니다.
권한
시스템 작업은 보안 정책 평가 대상입니다.
| 액션 | 리소스 | 설명 |
|---|---|---|
system.read |
memory |
메모리 통계 읽기 |
system.read |
memory_limit |
메모리 제한 읽기 |
system.control |
memory_limit |
메모리 제한 설정 |
system.read |
gc_percent |
GC 퍼센트 읽기 |
system.gc |
gc |
가비지 컬렉션 강제 실행 |
system.gc |
gc_percent |
GC 퍼센트 설정 |
system.read |
goroutines |
고루틴 수 읽기 |
system.read |
gomaxprocs |
GOMAXPROCS 읽기 |
system.control |
gomaxprocs |
GOMAXPROCS 설정 |
system.read |
cpu |
CPU 수 읽기 |
system.read |
pid |
프로세스 ID 읽기 |
system.read |
hostname |
호스트명 읽기 |
system.read |
modules |
로드된 모듈 목록 |
system.read |
supervisor |
수퍼바이저 상태 읽기 |
system.exit |
- | 시스템 종료 트리거 |
에러
| 조건 | 종류 | 재시도 가능 |
|---|---|---|
| 권한 거부됨 | errors.PERMISSION_DENIED |
아니오 |
| 잘못된 인수 | errors.INVALID |
아니오 |
| 필수 인수 누락 | errors.INVALID |
아니오 |
| 코드 매니저 사용 불가 | errors.INTERNAL |
아니오 |
| 서비스 정보 사용 불가 | errors.INTERNAL |
아니오 |
| 호스트명 가져오기 OS 에러 | errors.INTERNAL |
아니오 |
에러 처리는 에러 처리를 참조하세요.