Chuyển đến nội dung
tinAI
Quay lại

GitHub - LaurieWired/tailslayer: Thư viện giảm độ trễ đuôi trong việc đọc RAM

Bản dịch tiếng Việt của tinAI · Từ GitHub - LaurieWired/tailslayer: Library for reducing tail latency in RAM reads (github.com) · Ngày gốc: · Dịch ngày:

Bài gốc: GitHub - LaurieWired/tailslayer: Library for reducing tail latency in RAM reads (github.com)

Tác giả: Unknown

Ngày đăng: Dịch ngày:

TL;DR

Tailslayer là thư viện C++ giúp giảm độ trễ đuôi khi đọc RAM bằng cách sao chép dữ liệu qua các kênh DRAM độc lập. Nó hoạt động trên AMD, Intel và Graviton, cung cấp kết quả nhanh nhất với cơ chế đọc chờ. Dev nên quan tâm vì tăng hiệu quả đọc dữ liệu.

Ước tính đọc: 3 phút

Tailslayer

Tailslayer là một thư viện C++ giảm độ trễ đuôi trong việc đọc RAM do các đợt làm tươi DRAM gây ra.

Nó sao chép dữ liệu qua nhiều kênh DRAM độc lập với lịch trình làm tươi không liên quan bằng việc sử dụng các chuyển đổi kênh ẩn, hoạt động trên cả AMD, Intel và Graviton. Khi có yêu cầu, Tailslayer sẽ thực hiện đọc chờ qua tất cả các bản sao, cho phép công việc được hoàn thành với kết quả phản hồi trước tiên.

Cách sử dụng

Mã thư viện có sẵn ở hedged_reader.cpp và ví dụ sử dụng thư viện có ở tailslayer_example.cpp. Để dùng, sao chép thư mục include/tailslayer vào dự án của bạn và #include <tailslayer/hedged_reader.hpp>. Thư viện hiện tại hoạt động với hai kênh (sẽ có cập nhật thêm!), nhưng có sẵn chế độ N-way đầy đủ trong benchmark.

Bạn cung cấp loại giá trị và hai hàm làm tham số mẫu:

  1. Hàm tín hiệu: Thêm vòng lặp chờ tín hiệu ngoài. Quyết định khi nào đọc. Trả về chỉ số cần đọc, và việc đọc sẽ được thực hiện ngay lập tức.
  2. Hàm làm việc cuối cùng: Nhận giá trị ngay sau khi được đọc. Thêm mã xử lý giá trị mong muốn vào đây.
#include <tailslayer/hedged_reader.hpp>

[[gnu::always_inline]] inline std::size_t my_signal() {
    // Chờ sự kiện của bạn, sau đó trả về chỉ số để đọc
    return index_to_read;
}

template <typename T>
[[gnu::always_inline]] inline void my_work(T val) {
    // Sử dụng giá trị
}

int main() {
    using T = uint8_t;
    tailslayer::pin_to_core(tailslayer::CORE_MAIN);

    tailslayer::HedgedReader<T, my_signal, my_work<T>> reader{};
    reader.insert(0x43);
    reader.insert(0x44);
    reader.start_workers();
}

Tham số có thể được truyền tới bất kỳ hàm nào qua ArgList:

tailslayer::HedgedReader<T, my_signal, my_work<T>,
    tailslayer::ArgList<1, 2>,   // tham số cho hàm tín hiệu
    tailslayer::ArgList<2>       // tham số cho hàm làm việc cuối cùng
> reader{};

Bạn cũng có thể tùy chọn truyền vào một offset kênh khác, bit kênh, và số lượng bản sao cho hàm dựng. Lưu ý: Mỗi lần chèn sẽ sao chép phần tử N lần, với N là số bản sao. Nó thực hiện công việc tính toán địa chỉ ở phần sau, cho phép tailslayer hoạt động như vector chờ sử dụng các chỉ số logic. Ngoài ra, mỗi bản sao được ghim vào một lõi riêng biệt, và sẽ hoạt động trên lõi theo hàm tín hiệu đến khi việc đọc xong.

Xây dựng ví dụ

make
./tailslayer_example

Benchmark và thời gian tạo đột biến

Thư mục discovery/ chứa mã hỗ trợ dùng để mô tả hành vi làm tươi DRAM:

cd discovery/benchmark
make
sudo chrt -f 99 ./hedged_read_cpp --all --channel-bit 8

Về thư viện

Thư viện này dùng để giảm độ trễ đuôi trong việc đọc RAM.

Tài nguyên

Readme

Giấy phép

Apache-2.0 license

Uh oh!

Đã có lỗi khi tải. Xin hãy tải lại trang này.

Ngôi sao

357 stars


Đường dẫn nguồn

tinAI dịch bài này sang tiếng Việt từ GitHub - LaurieWired/tailslayer: Library for reducing tail latency in RAM reads (github.com) · Loại nguồn: GitHub và giữ bối cảnh từ bản tin tinAI đã giới thiệu bài này .

Bản tin này có 5 bài dịch liên quan từ cùng bản tin.