CRAM: Phương pháp nén bộ nhớ mới của Meta giúp tăng tốc đọc dữ liệu lên tới 452 lần

Công nghệ08 tháng 10, 2026·5 phút đọc

Một phương pháp nén bộ nhớ mới mang tên CRAM do nhóm kỹ sư tại Meta phát triển hứa hẹn mang lại hiệu năng vượt trội so với ZRAM truyền thống, với tốc độ đọc nhanh hơn tới 452 lần nhờ giữ dữ liệu nén hoàn toàn trong RAM thay vì dùng cơ chế swap.

CRAM: Phương pháp nén bộ nhớ mới của Meta giúp tăng tốc đọc dữ liệu lên tới 452 lần

CRAM: Phương pháp nén bộ nhớ mới của Meta giúp tăng tốc đọc dữ liệu lên tới 452 lần

Một phương pháp nén bộ nhớ mang tên CRAM vừa được giới thiệu tại Hội nghị Linux Plumbers ở Prague, hứa hẹn mang lại bước đột phá về hiệu năng so với các giải pháp hiện có như ZRAM và zswap. Thay vì hoạt động như một lớp swap, CRAM giữ toàn bộ dữ liệu nén ngay trong bộ nhớ, giúp tốc độ đọc trong trường hợp tốt nhất nhanh hơn tới 452 lần.

Ý tưởng nén bộ nhớ để tiết kiệm RAM không hề mới. Từ thập niên 1990, nhiều người đã tự hỏi vì sao không thể áp dụng cách nén tệp của PKZIP cho bộ nhớ. Trên Linux, các giải pháp phổ biến nhất hiện nay là zswap và ZRAM, nhưng cả hai đều hoạt động ở tầng swap — tức là dữ liệu bị đẩy ra khỏi RAM rồi mới được nén và quản lý.

Minh họa nén bộ nhớ trong hệ điều hànhMinh họa nén bộ nhớ trong hệ điều hành

CRAM khác biệt ở điểm nào?

CRAM được hình thành bởi Gregory Price và nhóm kỹ sư tại Meta. Nhận định cốt lõi dẫn đến sự ra đời của CRAM là: phần lớn chi phí hiệu năng của bộ nhớ nén không đến từ việc nén — vốn rất nhẹ — mà chủ yếu đến từ cơ chế xử lý lỗi trang (page fault) và hành vi swap. Từ đó, nhóm đặt câu hỏi: "Điều gì sẽ xảy ra nếu chúng ta làm ZRAM nhưng hoàn toàn trong bộ nhớ, thay vì như một thiết bị swap?"

Cách tiếp cận của CRAM là tận dụng các cơ chế sẵn có của Linux để đạt hiệu năng nén bộ nhớ cao hơn hẳn, đặc biệt ở thao tác đọc. Thay vì giả lập một block device, CRAM dùng một NUMA node riêng tư (về bản chất là một CPU "ma") để Linux vẫn có thể áp dụng đầy đủ các ngữ nghĩa bộ nhớ như migration và ballooning.

Một thành phần quan trọng khác là "Chicken Bit" — cơ chế báo cho Linux biết phải tạm dừng sử dụng CRAM trong lúc hệ thống đang bận quản lý cấp phát. Điều này giúp ngăn chặn hiện tượng "bão độc" (poison storm) khi các thao tác ghi vượt quá khả năng cấp phát của CRAM.

Hiệu năng: chênh lệch gần như không thể so sánh

Biểu đồ so sánh hiệu năng giữa CRAM và ZRAMBiểu đồ so sánh hiệu năng giữa CRAM và ZRAM

Vì CRAM được lưu trữ và đối xử như RAM, với truy cập đầy đủ theo cacheline/byte, dữ liệu có thể được đọc ở chế độ chỉ đọc với độ trễ rất thấp — chỉ tốn chi phí nén do phần cứng đảm nhiệm. Kết quả là CRAM "chạy ở tốc độ DRAM", như chính tác giả khẳng định.

Cần lưu ý rằng biểu đồ so sánh dùng thang logarit, nên khoảng cách thực tế còn ấn tượng hơn vẻ ngoài. Trong trường hợp xấu nhất, CRAM đạt 489 triệu thao tác mỗi giây, so với 1,1 triệu của ZRAM — mức chênh lệch gần như không cùng đẳng cấp.

Ngay cả khi bật chế độ ghi, CRAM vẫn nhanh hơn ZRAM đáng kể: 5,4 lần trong trường hợp thử nghiệm xấu nhất với 20% thao tác ghi. Con số này tuy thấp hơn nhiều so với mức 452 lần ở chế độ chỉ đọc, nhưng vẫn là cải thiện khổng lồ. Nguyên nhân khiến hiệu năng giảm mạnh khi có thao tác ghi là do cần phải xử lý page fault và di chuyển folio trở lại NUMA domain gốc — bởi không thể ghi trực tiếp vào dữ liệu đã nén mà không làm hỏng toàn bộ cấu trúc.

Bài toán chưa có lời giải và tương lai

Kiến trúc CRAM sử dụng NUMA node riêng tưKiến trúc CRAM sử dụng NUMA node riêng tư

Một vấn đề chưa được giải quyết triệt để là cách xác định dung lượng RAM logic khi một phần dữ liệu đã bị nén. Mức độ nén của dữ liệu biến thiên rất lớn — từ những khối toàn số 0 (nén hoàn hảo) cho đến dữ liệu đã nén sẵn (không thể nén thêm). Điều này khiến việc dự đoán thời điểm cạn kiệt bộ nhớ trở nên phức tạp. Theo các slide trình bày, đây vẫn là bài toán đang được nghiên cứu và chưa có lời giải trọn vẹn.

CRAM chưa thực sự giải quyết được bài toán đó. Đây vẫn là một lĩnh vực nghiên cứu đang tiếp diễn, nhưng Chicken Bit là một cách để ít nhất ngăn chặn các lỗi dây chuyền khi thao tác ghi vượt quá khả năng cấp phát của CRAM.

Đối tượng hướng đến rõ ràng nhất của CRAM, xét theo nguồn gốc từ Meta, là các máy chủ Linux quy mô lớn. Tuy nhiên ZRAM và zswap hiện được dùng rộng rãi khắp hệ sinh thái Linux, kể cả trên những thiết bị có cấu hình hạn chế như Steam Deck, và nhiều bản phân phối kích hoạt một trong hai mặc định.

Nếu CRAM được tích hợp vào nhân Linux sau khi các vấn đề triển khai còn tồn đọng được giải quyết, nó có thể mang lại bước nhảy vọt về hiệu năng cho không ít thiết bị. Với người dùng tại Việt Nam — đặc biệt là cộng đồng yêu thích Linux và các máy chủ tự vận hành — đây là một tiến triển đáng theo dõi trong thời gian tới.

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