RamShared
언어: Portuguese (Brazil)
RamShared는 안정적인 Linux 및 WSL2 메모리 티어링 프로젝트입니다. ZRAM과 디스크를 주변 계층으로 사용하여, 유휴 GPU 메모리를 회수 가능한 캐시로 사용할 수 있습니다.
이 프로젝트는 자신의 머신에서 GPU 기반 메모리 티어를 연구하거나 운영하려는 사람들을 위한 것입니다. 압력을 관찰하고, 디스크 백업 원본을 유지하며, GPU가 필요할 때 VRAM을 반환하도록 설계되었습니다. 하드웨어, 드라이버 및 활성 워크로드가 여전히 결과를 결정하므로, 무언가를 활성화하기 전에 준비 상태 확인(readiness check)을 실행하십시오.
RamShared cascade: zram, idle GPU memory, then disk
<p align="center">
<a href="https://github.com/emersonbusson/ramshared/releases/tag/v0.14.0"><img alt="Release v0.14.0" src="https://img.shields.io/badge/release-v0.14.0-2f855a?style=flat-square"></a>
<img alt="Rust 2024" src="https://img.shields.io/badge/Rust-2024-black?style=flat-square&logo=rust&logoColor=white">
<img alt="Linux and WSL2" src="https://img.shields.io/badge/Linux%20%7C%20WSL2-stable-2f855a?style=flat-square">
</p>
./scripts/quickstart.sh
...
RamShared를 사용하는 이유?
"모든 머신이 GPU가 필요할까요? 표준 ZRAM이나 SSD 스왑 대신 왜 GPU 메모리를 RAM으로 사용해야 할까요?"
- 유휴 VRAM을 의도적으로 사용: 호환 가능한 GPU가 유휴 상태일 때 GPU 메모리는 캐시로 유용할 수 있습니다. 가용한 양은 게임, 데스크톱 작업, 컴퓨팅 워크로드에 따라 달라집니다.
- 견고한 출처 유지: VRAM은 기록의 시스템(system of record)이 아닙니다. 이 설계는 권위 있는 백업 저장소(authoritative backing store)를 유지하여 캐시 해제가 안전하게 처리되도록 합니다.
- ZRAM 및 디스크와 함께 작동: GPU 계층(tier)은 여러 스왑 또는 메모리 관리 형태 중 하나의 옵션일 뿐, 모든 것을 대체하는 것은 아닙니다.
- 제어권을 유지: 활성화(Activation) 및 해체(Teardown)에는 명시적인 운영자 명령이 필요합니다. 이 프로젝트는 메모리 압력 워크로드(memory pressure workloads)를 조용히 활성화하지 않습니다.
- 제한 사항 먼저 읽기: Windows 드라이버 또는 사용자 정의 커널 실험 표면(custom-kernel lab surfaces)을 사용하기 전에 FAQ와 신뢰성 격차 레지스터를 참조하십시오.
현재 상태 (Current Status)
최신 공개 릴리스: v0.14.0. 이 체크아웃은 현재 안정적인 유지보수 릴리스인 0.14.0을 빌드합니다.
| 표면 (Surface) | 상태 (Status) | 의미하는 바 (What that means) |
|---|
| Linux 및 WSL2 사용자 공간 (userspace) | 안정적이며 검증됨 (Stable and qualified) | CLI, 데몬(daemon), 확인(checks), 해체 경로가 CI에 의해 커버됩니다. check를 실행하고 문서화된 사전 비행 점검(preflight)을 완료한 후에 활성화하십시오. |
| ... | | |
역사적 측정값은 docs/BENCHMARKS.md에 보관되어 있습니다. 공개 증거 봉투(public evidence envelope)가 없는 항목은 현재 릴리스 기준선이 아닌 역사적 기록입니다. 개방된 제한 사항 및 검증 작업은 docs/reliability/에서 추적됩니다. | | |
v0.13 검증 스냅샷 (v0.13 qualification snapshot)
v0.13 검증은 Tier 0 (ZRAM), Tier 1 (GPU VRAM 캐시), 및 Tier 3 (SSD 출처) 전반에 걸쳐 19,777 MB에 도달했으며, 검증된 하드웨어에서 PASS_ZERO_PANIC 판정을 받았습니다. 이는 릴리스 증거를 기록한 것이며, 다른 장치에 대한 처리량이나 용량을 보장하는 것은 아닙니다.
안전하게 실행하기 (Run it safely)
<a id=
RamShared는 엄격한 안전 기본값(safety defaults)으로 설계되었습니다. 명시적인 명령 없이 백그라운드에서 모니터링되지 않은 변경을 절대 수행하지 않습니다.
위의 명령들로 한 번 빌드한 후, ./target/release/ramshared check를 사용하십시오. 검사 결과 블로커(blocker)가 보고되면 티어(tier)를 활성화하지 마십시오. 메모리 오프로드(memory offload)를 시작하고 중지하는 것은 항상 명시적인 운영자 명령(sudo ./target/release/ramshared up / sudo ./target/release/ramshared down)을 필요로 합니다.
일회성 레거시 캐스케이드 핸드오프 (One-time legacy cascade handoff)
만약 이전의 RamShared 설치가 현재 라이프사이클 바인딩(lifecycle binding) 없이 여전히 실행 중이라면, 수동으로 스왑 장치(swap devices)를 분리하거나 데몬을 종료하지 마십시오. 대신 참석형 핸드오프(attended handoff)를 사용하십시오:
sudo ./target/release/ramshared migrate-cascade --from-legacy
이 명령어는 장치나 용량 재정의(override)를 받지 않습니다. 이는 봉인된 원본 출처(sealed origin), 적격한 레거시 ZRAM → NBD 토폴로지, 일치하는 데몬 바이너리(또는 예상되는 NBD 리스너에 여전히 바인딩된 루트 소유의 교체 데몬, 또는 동일한 SHA-256을 가진 고정된 루트 소유 레거시 경로), 메모리 헤드룸, 그리고 건강한 호스트 가디언(host guardian)을 증명할 수 있을 때만 거부하지 않습니다. 이는 리셋, 분리 또는 데몬 종료 전에 스왑을 비우고(drains swap), 정상적인 봉인된 라이프사이클 바인딩을 생성합니다. 거부가 발생하면 기존 장치와 증거는 그대로 유지됩니다.
아키텍처 참고: 동적 할당만 가능 (Architecture Note: Dynamic Allocation Only)
메모리 티어링(Memory tiering)은 지속 가능한 원본 출처(durable origin)에 의해 백업되는 온디맨드(on-demand), 취소 가능한 청크를 사용합니다. 이는 디스플레이 또는 컴퓨트 워크로드와 경쟁할 가능성을 줄이지만, 모든 GPU나 드라이버에서 여분의 VRAM을 보장할 수는 없습니다.
메모리 캐스케이드 (Memory Cascade)
[ Linux Memory Pressure ]
│
▼
...
티어들이 함께 작동하는 방식:
- Tier 0: ZRAM (CPU Tier, 1024 MiB): 호스트 CPU가 직접 처리하는 초고속 메모리 압축입니다.
- Tier 1: GPU VRAM 캐시 (GPU에서 활성 용량 4 GiB): 활성 페이지를 위한 PCIe 기반의 매우 빠른 메모리 캐시로, 호스트 디스플레이 안전성을 유지하면서 4,096 MB 용량으로 구성됩니다.
- Tier 3: 호스트 SSD 원본 저장소: 오버플로우 메모리 트래픽을 흡수하여 시스템이 절대 충돌하지 않도록 하는 안전하고 내구성 있는 백업 저장소입니다.
- 항상 안전함 (Write-Through): RamShared가 처리하는 모든 쓰기 작업은 백업 저장소에 안전하게 저장됩니다. GPU가 다른 프로그램에 필요할 경우에도 데이터는 완전히 온전하게 유지됩니다.
Windows 및 게이밍을 위한 자동 GPU 보호 기능
Windows, 게임 또는 3D 렌더링 워크로드가 GPU 메모리를 요청하면 RamShared는 즉시 작동을 중단합니다:
- 새로운 VRAM 할당을 즉시 중단하고 밀리초 단위로 깨끗한 캐시 블록을 해제합니다.
- 활성 앱을 방해하지 않으면서 백업 저장소를 통해 메모리 I/O를 원활하게 계속합니다.
- 데스크톱 윈도우 매니저(DWM)의 안정성을 보장하는 동시에 6GB 이상 GPU에 전체 4 GiB 슬라이스를 할당하면서, Windows 및 디스플레이 작업을 위해 최소
max(1.5 GiB, 물리적 VRAM의 20%)를 자동으로 독점 예약합니다 (SSDV3 원칙 11).
- 운영 체제가 절대 멈추지 않도록 부드러운
swapoff-first 방식으로 해제됩니다.
마케팅적인 지름길 없는 증거
성능은 테스트되는 기기의 GPU, 드라이버, 데스크톱 워크로드, 디스크 경로 및 메모리 압력에 따라 달라집니다. RTX 2060 하나 또는 WSL2 호스트 하나가 다른 컴퓨터의 성능을 보장하지는 않습니다.
이 프로젝트는 감사(audit)를 위해 역사적인 벤치마크 기록을 유지합니다. 현재 공개된 증거 봉투(evidence envelope)를 가진 결과만이 출시 기준선이나 회귀 주장으로 사용될 수 있습니다. 측정 컨텍스트는 docs/BENCHMARKS.md에서, 남아있는 자격 한계(qualification boundaries)는 docs/reliability/GAP-REGISTER.md에서 확인하십시오.
작업 공간 토폴로지 (15 크레이트)
RamShared는 6개의 모듈식 아키텍처 계층으로 구성되어 있습니다 (ARCHITECTURE.md 참조):
- 프론트엔드 및 제어(Frontend & Control):
ramshared-cli — 상태 확인, 캐스케이드 오케스트레이션, 스트레스 테스트 및 실시간 모니터링을 위한 통합 CLI.
- 데몬 및 에이전트(Daemons & Agents):
ramshared-agent, ramshared-wsl2d, ramshared-winsvc — 백그라운드 데몬 및 Windows 서비스 관리.
- 브로커 및 정책(Broker & Policy):
ramshared-broker, ramshared-winbroker — 중재 루프, PSI 압력 모니터링 및 GPU 헤드룸 관리.
- 메모리 및 IO 엔진(Memory & IO Engines):
ramshared-tier, ramshared-vram, ramshared-cuda, ramshared-vulkan, ramshared-dxg, ramshared-uring — 저수준 제로카피 DMA, CUDA 할당 및 비동기 커널 블록 전송.
- 스토리지 및 오리진(Storage & Origin):
ramshared-block, ramshared-integrity — 권위 있는 SSD 오리진 쓰루(write-through) 및 암호화 데이터 무결성.
- 구성(Configuration):
ramshared-config — 공유 구성 스키마 및 직렬화.
실시간 관측 가능성 (Real-Time Observability) (ramshared top)
RamShared는 메모리 계층화, GPU VRAM 캐싱 및 PCIe 처리량에 대한 완벽한 실시간 가시성을 제공하는 대화형 작업 관리자(Task Manager)-스타일 터미널 대시보드를 포함합니다:
RamShared Real-Time Dashboard (ramshared top)
운영 가드레일 및 안정성 규칙 (Operational Guardrails & Stability Rules)
ramshared down을 사용하여 안전하게 종료하세요: 스왑이 활성화된 상태에서 백그라운드 데몬(ramsharedd)을 강제 종료하지 마십시오. 순서 있는 언마운트(swapoff)는 리눅스를 안정적으로 유지하고 파일 시스템 손상을 방지합니다.
- 동적 메모리 할당: RamShared는 활성 스왑 트래픽에 필요한 경우에만 GPU 메모리를 사용합니다. 게임, 브라우저 또는 AI 앱이 VRAM을 요청하면, RamShared는 즉시 이를 양보합니다.
- 데스크톱 윈도우 매니저 보호: Windows 디스플레이 렌더링을 위해 최소 1.5 GB(또는 VRAM의 20%)가 항상 보존되어 화면, 마우스 및 모니터가 절대 멈추지 않도록 합니다.
- 엄격한 스토리지 안전성: 스토리지 작업은 모호하거나 일시적인 드라이브 문자 대신 권위 있는 볼륨 UUID에 엄격하게 바인딩됩니다.
- 감독된 레거시 핸드오프:
migrate-cascade --from-legacy만이 언바운드된 이전 캐스케이드에서 지원되는 유일한 경로입니다. 이는 자동 복구가 아닙니다.
시스템 통합 및 안전성 (System Integration & Safety)
RamShared는 systemd 통합을 갖춘 깨끗하고 독립적인 사용자 공간 서비스로 실행됩니다:
- 명시적인 명령(
ramshared up / ramshared down) 없이는 백그라운드 작업이 실행되지 않습니다.
- 스토리지 파티션은 일시적인 드라이브 문자 대신 정확한 볼륨 UUID로 검증됩니다.
- 시스템 재부팅이나 종료는 자동으로 트리거되지 않습니다. 사용자는 항상 장치에 대한 완전한 제어권을 유지합니다.
릴리스 패키징 (Release Packaging)
이 저장소는 검증된 릴리스 배포판을 빌드하기 위한 자동화된 패키징 파이프라인을 제공합니다:
scripts/package/build-linux-bundle.sh
이 스크립트의 출력물은 artifacts/packages/ 아래에 릴리스 바이너리, 안전 스크립트, systemd 서비스 템플릿, 문서 및 SHA256SUMS 암호화 다이제스트를 패키징합니다. 빌드 캐시, 자격 증명 및 일시적인 환경 아티팩트는 정책에 따라 제외됩니다. 자세한 내용은 docs/packaging/INSTALLABLES.md를 참조하십시오.
공식 Linux 릴리스 배포판(v0.14.0 및 이전 마일스톤 포함)과 해당 분리된 체크섬은 자동화된 릴리스 프로모션 워크플로우를 통해 검증됩니다.
Windows StorPort 드라이버 아키텍처
<a id="windows-driver-beta"></a><a id="windows-driver"></a>
Windows 통합은 전용 GPU 메모리를 백본으로 하는 고성능 StorPort 가상 미니포트 드라이버로 설계되었습니다. 견고한 블록 스토리지 작업을 위해 설계된 이 아키텍처는 두 개의 격리된 SCM 서비스를 모델링합니다:
- 최소 권한 브로커 (Least-Privilege Broker): 논리적 임대(lease) 중재, 용량 강제 적용, 접근 경계 관리를 담당합니다.
- 하드웨어 소비자 (Hardware Consumer): CUDA 실행 컨텍스트, DMA 큐 디스패치, 가상 LUN 매핑 및 체계적인 해제를 조정합니다.
- 인증된 로컬 IPC (Authenticated Local IPC): 서비스 간 통신은 인증된 로컬 이름 파이프를 통해서만 이루어지며, 외부 네트워크 공격 표면(TCP 소켓 제로)을 제거합니다.
핵심 안전 및 신뢰성 계약:
- 불변 매니페스트 검증 (Immutable Manifest Verification): 모든 드라이버 구성 요소는 SHA-256 암호화 서명에 엄격하게 묶여 있습니다.
- 결정론적 스토리지 바인딩 (Deterministic Storage Binding): 스토리지 작업은 모호한 드라이브 문자나 일시적인 디스크 인덱스가 아닌, 권위 있는 장치 볼륨 식별자에만 엄격하게 바인딩됩니다.
- 페일세이프 페이지 파일 보호 (Fail-Safe Pagefile Protection): 활성 Windows 페이징 파일 잠금은 예상치 못한 제거 또는 Windows 버그 체크(
0x7A)를 방지하기 위해 백엔드 해제를 수행합니다.
드라이버 배포 및 WHQL 증명서 세부 정보는 docs/packaging/WINDOWS-DRIVER-DISTRIBUTION.md를 참조하십시오.
실증적인 성능 측정 및 지연 시간 분포는 공개 증거 봉투에 docs/BENCHMARKS.md에 기록되어 있으며, validation.md에 등록되어 있습니다.
원시 샘플 번들, 하드웨어 실행 추적, 지연 시간 히스토그램 및 EVD-0037과 EVD-0038의 정확한 재현 단계는 docs/BENCHMARKS.md를 참조하십시오.
아키텍처 (Architecture)