Tăng cường hiệu suất lưu trữ cho phương tiện truyền thông và giải trí với RDMA

Chúng ta đang ở trong kỷ nguyên vàng mới của sáng tạo nội dung. Sự bùng nổ của các dịch vụ phát trực tuyến đã mang đến một khối lượng phương tiện truyền thông mới và tuyệt vời chưa từng có. Sản xuất, hậu kỳ, hiệu ứng hình ảnh, hoạt hình, hoàn thiện: mọi người đều bận rộn với công việc. Và kỳ vọng đối với nội dung này cao hơn bao giờ hết, với các định dạng mới đầy thách thức về mặt kỹ thuật đang trở thành chuẩn mực thay vì ngoại lệ. Bất kỳ ai đã từng làm việc với nội dung này đều biết rằng ngay cả vào năm 2021, làm việc gốc với video 8K hoặc video 4K tốc độ khung hình cao không phải là chuyện đùa.  

Trong quá trình hậu kỳ, lưu trữ và hiệu suất máy trạm có thể là những nút thắt cổ chai lớn. Những nút thắt cổ chai này có thể đặc biệt gây khó khăn cho những người ngồi ghế “anh hùng” được giao nhiệm vụ làm việc theo thời gian thực với phương tiện không nén.

Vậy, hãy cùng xem xét tính năng mới của PowerScale OneFS 9.2 có thể cải thiện hiệu suất lưu trữ và máy trạm cùng lúc. Công nghệ đó là Remote Direct Memory Access (RDMA) và cụ thể là NFS qua RDMA.

Tại sao lại là NFS? Linux vẫn là hệ điều hành được lựa chọn cho các ứng dụng mà các chuyên gia truyền thông sử dụng để làm việc với các phương tiện truyền thông khó khăn nhất. Ngay cả khi các ứng dụng đó có các biến thể Windows hoặc macOS, phiên bản Linux vẫn là phiên bản được sử dụng ở phân khúc cao cấp thực sự. Và cách gốc để máy tính Linux truy cập vào bộ lưu trữ mạng là NFS. Cụ thể là NFS qua TCP.

Bài viết này đã đi sâu vào một hố thỏ của các từ viết tắt! Tôi nghĩ rằng hầu hết những người đọc đã quen thuộc với NFS (và SMB) và TCP (và UDP), v.v. Đối với những người chưa biết, NFS là viết tắt của Network File System. NFS là cách các hệ thống Linux giao tiếp với bộ lưu trữ mạng (có những cách khác, nhưng chủ yếu là NFS). Lưu lượng NFS nằm trên các giao thức mạng cấp thấp khác, đặc biệt là TCP (hoặc UDP, nhưng chủ yếu là TCP). TCP thực hiện rất tốt việc xử lý các vấn đề như mất gói tin trên các mạng bị tắc nghẽn, nhưng điều đó đi kèm với những tác động về hiệu suất. Quay lại với RDMA.

Như tên gọi của nó, RDMA là một giao thức cho phép hệ thống máy khách sao chép dữ liệu từ bộ nhớ của máy chủ lưu trữ trực tiếp vào bộ nhớ của máy khách đó. Và khi làm như vậy, hệ thống máy khách sẽ bỏ qua nhiều lớp đệm vốn có trong TCP. Giao tiếp trực tiếp này cải thiện thông lượng lưu trữ và giảm độ trễ khi di chuyển dữ liệu giữa máy chủ và máy khách. Nó cũng làm giảm tải CPU trên cả máy khách và máy chủ lưu trữ.

RDMA được phát triển vào những năm 1990 để hỗ trợ khối lượng công việc tính toán hiệu suất cao chạy trên mạng InfiniBand. Vào những năm 2000, hai phương pháp chạy RDMA qua mạng Ethernet đã được phát triển: iWARP và RoCE. Không đi sâu vào quá nhiều chi tiết, iWARP sử dụng TCP cho giao tiếp RDMA và RoCE sử dụng UDP. Có nhiều lợi ích và hạn chế của hai phương pháp này. Sự phụ thuộc của iWARP vào TCP cho phép linh hoạt hơn trong thiết kế mạng, nhưng gặp phải nhiều hạn chế về hiệu suất giống như giao tiếp TCP gốc. RoCE đã giảm chi phí CPU so với iWARP, nhưng yêu cầu mạng không mất dữ liệu. Một lần nữa, không đi sâu vào quá nhiều chi tiết, RoCE là người chiến thắng rõ ràng vì chúng ta đang tìm kiếm hiệu suất lưu trữ tối đa với tải CPU thấp nhất. Và đó chính xác là những gì PowerScale OneFS sử dụng, RoCE (thực tế là RoCEv2, còn được gọi là Routable RoCE hoặc RRoCE).

Vậy, hãy kết hợp tất cả lại với nhau và bạn có thể chạy lưu lượng NFS qua RDMA bằng cách tận dụng RoCE! Vâng, quay lại với thế giới chữ cái. Nhưng điều này có nghĩa là nếu môi trường và các nút lưu trữ PowerScale của bạn hỗ trợ nó, bạn có thể tăng hiệu suất đáng kể bằng cách gắn bộ lưu trữ mạng với một vài tùy chọn gắn kết. Và đó là một mẹo hay. Hiệu suất tăng lên của RDMA rất ấn tượng. Trong một số trường hợp, RDMA có hiệu suất gấp đôi TCP, tất cả các yếu tố khác đều như nhau (với mức giảm tương tự trong việc sử dụng máy trạm).

Một nơi tốt để bắt đầu tìm hiểu xem các nút PowerScale của bạn có hỗ trợ RDMA hay không là blog tuyệt vời của đồng nghiệp Nick Trimbee: Unstructured Data Tips .

Hãy quay lại với việc tạo phương tiện và xem một số ví dụ thực tế đã được thử nghiệm cho bài viết này. Ví dụ đầu tiên là phát một chuỗi hình ảnh DPX 8K chưa nén trong DaVinci Resolve. Video chưa nén ít gây áp lực hơn cho máy trạm (không giải nén theo thời gian thực), nhưng kích thước tệp và yêu cầu về băng thông rất lớn. Là một chuỗi hình ảnh, mỗi khung hình video là một tệp riêng biệt và ở độ phân giải 8K, điều đó có nghĩa là mỗi tệp có dung lượng khoảng 190 MB. Để duy trì phát lại 24 khung hình mỗi giây cần 4,5 GB! Tóm lại, chuỗi hình ảnh sẽ không phát được với bộ lưu trữ được gắn kết bằng TCP. Gắn chính xác bộ lưu trữ đó bằng RDMA là một sự khác biệt rõ rệt: video 8K ở tốc độ 24 khung hình mỗi giây trong Resolve qua mạng.

Bây giờ chúng ta hãy xem xét hiệu suất của máy trạm. Bởi vì công bằng mà nói, video 8K không nén rất khó lưu trữ hoặc làm việc. Số lượng các cơ sở thực sự hoạt động ở 8K không nén là rất ít. Phổ biến hơn nhiều là một định dạng như OpenEXR nén 6K PIZ. OpenEXR là một định dạng chuỗi hình ảnh khác (tệp trên mỗi khung hình) và nén PIZ không mất dữ liệu, giữ nguyên độ trung thực của hình ảnh. Chuỗi hình ảnh nén PIZ mà tôi sử dụng ở đây có các khung hình từ 80 MB đến 110 MB mỗi khung hình. Để duy trì 24 khung hình mỗi giây cần khoảng 2,7 GB. Băng thông này ít hơn 8K không nén nhưng vẫn đáng kể. Tuy nhiên, thách thức thực sự là máy trạm cần giải nén từng khung hình video khi đang đọc. Việc kéo lại chuỗi hình ảnh 6K vào DaVinci Resolve và thử phát lại qua bộ lưu trữ mạng được gắn kết bằng TCP không hiệu quả. Sự kết hợp của các chu kỳ CPU cần thiết để đọc các tệp qua bộ lưu trữ mạng và giải mã từng khung hình 6K là quá nhiều. RDMA là chìa khóa cho loại phát lại này. Và chắc chắn, việc gắn lại bộ lưu trữ bằng RDMA cho phép phát lại mượt mà chuỗi hình ảnh OpenEXR 6K PIZ này qua mạng trong Resolve.

Đi sâu hơn một chút về hiệu suất máy trạm, chúng ta hãy xem xét một số định dạng video phổ biến khác: Sony XAVC và Apple ProRes 422HQ đều ở độ phân giải DCI 4K đầy đủ và 59,94 khung hình mỗi giây. Lần này, Autodesk Flame 2022 được sử dụng làm ứng dụng phát lại. Flame có chế độ gỡ lỗi hiển thị các khung hình bị mất của đĩa video, các khung hình bị mất của GPU và các khung hình bị mất của đầu ra phát sóng. Với hệ thống tệp được gắn kết bằng TCP hoặc RDMA, đĩa video không bao giờ bị mất một khung hình nào.

Bộ lưu trữ đủ nhanh. Tuy nhiên, với hệ thống tệp được gắn kết bằng TCP, đầu ra phát sóng đã làm mất hàng nghìn khung hình và máy trạm không thể theo kịp. Phát lại tài liệu qua RDMA lại là một câu chuyện khác, đầu ra phát sóng mượt mà và về cơ bản không có khung hình nào bị mất. Trong trường hợp này, tất cả là về các chu kỳ CPU được giải phóng bởi RDMA.