Biến VRAM card Nvidia thành bộ nhớ Swap trên Linux để tăng hiệu năng

Phần cứng02 tháng 6, 2026·4 phút đọc

Công cụ nbd-vram cho phép người dùng tận dụng VRAM thừa trên card đồ họa Nvidia làm bộ nhớ swap trên Linux, giúp tăng gấp ba dung lượng bộ nhớ khả dụng và giảm độ trễ so với việc swap vào SSD.

Biến VRAM card Nvidia thành bộ nhớ Swap trên Linux để tăng hiệu năng

Đối với những người dùng laptop, đặc biệt là các dòng máy mỏng nhẹ có RAM hàn chết (soldered RAM) và không có đường nâng cấp, việc thiếu hụt bộ nhớ là một cơn ác mộng thực sự. Tuy nhiên, nếu máy của bạn sở hữu một card đồ họa Nvidia rời (như dòng RTX) với lượng VRAM dư thừa, một giải pháp mới mang tên nbd-vram có thể giúp bạn giải quyết vấn đề này một cách thông minh.

Dự án này cho phép sử dụng VRAM của GPU Nvidia làm không gian swap (bộ nhớ ảo) trên Linux. Thay vì để hệ thống phải ghi chậm chạp vào ổ SSD khi RAM đầy, nbd-vram sẽ tận dụng tốc độ truyền dữ liệu cao của PCIe để đẩy dữ liệu vào VRAM.

Cơ chế hoạt động

nbd-vram hoạt động bằng cách chạy một daemon nhỏ cấp phát VRAM thông qua API trình điều khiển CUDA. Sau đó, nó phục vụ vùng nhớ này như một thiết bị khối (block device) bằng giao thức NBD (Network Block Device) qua một Unix socket.

Trình điều khiển nbd có sẵn trong kernel sẽ kết nối đến daemon này và hiển thị thiết bị là /dev/nbdX. Từ góc độ của hệ điều hành, đây chỉ là một thiết bị swap bình thường.

Quy trình luân chuyển dữ liệu sẽ theo thứ tự ưu tiên sau:

  1. RAM vật lý: Được ưu tiên sử dụng đầu tiên.
  2. VRAM (GPU): Khi RAM đầy, dữ liệu tràn sẽ được đổ vào VRAM (nhanh, qua PCIe).
  3. zram: Nếu VRAM cũng đầy, dữ liệu sẽ được nén bởi CPU.
  4. SSD: Chỉ được sử dụng khi tất cả các phương án trên đều hết chỗ.

Demo hoạt động của nbd-vramDemo hoạt động của nbd-vram

Tại sao không dùng NVIDIA P2P API?

Nhiều người có thể thắc mắc tại sao không sử dụng API P2P có sẵn của Nvidia (hàm nvidia_p2p_get_pages_persistent). Cách tiếp cận "tự nhiên" này sẽ ghim các trang VRAM vào BAR1 để CPU có thể truy cập trực tiếp.

Tuy nhiên, Nvidia đã chặn tính năng này ở cấp độ phần mềm (RM - Resource Manager) đối với các card GeForce phổ thông dành cho người tiêu dùng. Tính năng này chỉ dành cho các dòng Quadro hoặc Datacenter. Do đó, nbd-vram đã chọn cách đi vòng qua bằng cách sử dụng cuMemcpyHtoDcuMemcpyDtoH, các hàm hoạt động trên mọi GPU CUDA mà không cần quyền đặc biệt hay kernel module phức tạp.

Cài đặt và Cấu hình

Yêu cầu hệ thống

  • GPU Nvidia hỗ trợ CUDA (bất kỳ card RTX/GTX nào).
  • Trình điều khiển Nvidia có libcuda.so.1 (không cần cài đặt toàn bộ CUDA Toolkit).
  • Kernel Linux 3.0+ (hầu hết các distro đều có module nbd tích hợp sẵn).

Các bước cài đặt

Quá trình cài đặt khá đơn giản với các lệnh sau:

git clone https://github.com/c0dejedi/nbd-vram
cd nbd-vram
sudo ./install.sh
sudo systemctl start vram-swap-nbd

Sau khi cài đặt, bạn có thể kiểm tra bằng lệnh swapon --show để xem thiết bị /dev/nbd0 đã xuất hiện chưa.

Tùy chỉnh

Bạn có thể chỉnh sửa file /etc/systemd/system/vram-swap-nbd.service để thay đổi cấu hình:

  • VRAM_SETUP_SIZE_MB: Dung lượng VRAM tối đa muốn sử dụng (ví dụ 7168 MB cho 7GB).
  • VRAM_SWAP_PRIORITY: Mức ưu tiên của swap (cao hơn sẽ được dùng trước).

Daemon sẽ tự động giảm dung lượng cấp phát theo bước 512MB nếu GPU không đủ bộ nhớ, đảm bảo không làm ảnh hưởng đến hiển thị màn hình.

Quản lý năng lượng

Đối với người dùng laptop, nbd-vram cung cấp tính năng quản lý năng lượng. Khi cài đặt, bạn sẽ được hỏi có bật chế độ này hay không. Nếu bật, dịch vụ sẽ tự động tắt khi bạn rút sạc hoặc pin xuống dưới ngưỡng nhất định, và tự động bật lại khi có điện. Điều này giúp tiết kiệm pin đáng kể.

Hiệu suất

Theo thử nghiệm trên một laptop sử dụng card RTX 3070 (16GB RAM vật lý, 8GB VRAM), việc cấp phát 7GB làm swap đã giúp tổng dung lượng bộ nhớ khả dụng lên tới khoảng 46GB (kết hợp với zram và SSD swap).

  • Tốc độ truyền tải tuần tự: Khoảng 1.3 GB/s.
  • Độ trễ: Thấp hơn NVMe vì đường truyền đi qua PCIe thay vì phải qua bộ điều khiển lưu trữ.

Đối với các laptop đã sử dụng zram, bạn nên đặt mức ưu tiên của VRAM swap cao hơn để nó hấp thụ dữ liệu tràn trước khi chạm đến SSD, giúp kéo dài tuổi thọ ổ cứng và tăng tốc độ phản hồi hệ thống.

Kết luận

nbd-vram là một giải pháp kỹ thuật rất thú vị và hữu ích cho cộng đồng người dùng Linux, đặc biệt là các lập trình viên hoặc kỹ sư đang làm việc trên laptop có cấu hình hạn chế về RAM nhưng dư thừa về GPU. Nó tận dụng tối đa phần cứng có sẵn mà không cần can thiệp sâu vào kernel hay biên dịch lại module phức tạp.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗