OpenArchLabOpen Architecture — From Models to Systems

D · Systems foundation

Concurrency, hàng đợi và vòng đời dữ liệu ở host

Điều phối luồng xử lý trên CPU (event loop, threads, queues) để nhận mạng, chuẩn bị dữ liệu và phát lệnh xuống GPU không bị nghẽn.

LESSON ID os GROUP Kiến trúc Inference
Mục lục bài học

1Định nghĩa

Quản lý đồng thời ở phía host (CPU và hệ điều hành) là phần khung điều khiển bao quanh GPU: nhận kết nối mạng từ gateway, chạy tokenizer, gom batch ở scheduler, phát lệnh xuống runtime và stream từng mảnh chữ về client.

Nếu luồng CPU bị chặn (block) bởi một tác vụ nặng như giải mã JSON hay ghép chuỗi, GPU sẽ rơi vào cảnh đứng chờ lệnh (GPU starvation) dù phần cứng tính toán rất nhanh. Vì vậy, inference server phải tách bạch vòng lặp sự kiện mạng (async event loop) với các hàng đợi công việc có giới hạn (bounded queues) và quản lý chặt vòng đời vùng nhớ (pinned host memory) cho tới khi GPU báo đã đọc xong.

Ví dụ đời thường: Quản lý đồng thời ở phía CPU (host) giống như đội ngũ nhân viên chạy bàn và thu ngân phối hợp với một đầu bếp siêu tốc (GPU). Nếu thu ngân vừa nhận đơn vừa tự đi gọt trái cây làm kẹt quầy, đầu bếp trong bếp sẽ đứng khoanh tay chờ phiếu gọi món; vì vậy quầy thu ngân chỉ làm việc nhận đơn, xếp khay theo hàng đợi rồi đẩy liên tục vào cửa bếp.

2Luồng

Sơ đồ luồng (4 bước)
  1. Nhận sự kiện network

    Đọc input hoặc cancellation.

  2. Chuẩn bị và xếp việc

    Tokenize rồi chuyển queue.

  3. Phát device work

    Runtime quản lý buffers và dependencies.

  4. Xử lý completion

    Gửi output và trả tài nguyên đúng lúc.

Mã Mermaid
flowchart TD
  step1["Nhận sự kiện network"]
  step2["Chuẩn bị và xếp việc"]
  step3["Phát device work"]
  step4["Xử lý completion"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Dùng queues giới hạn, async input/output và tái dùng buffers. Tách công việc CPU nặng khỏi event loop khi nó chặn các request khác.

Quản lý ownership rõ: buffer vẫn có thể đang được device dùng dù host đã phát xong lệnh.

4Profiling

  • Host time và contention

    Profile chuẩn bị input, khóa và serialization; so với device gaps.

  • Queue và lifetime

    Stress cancellation/concurrency rồi kiểm tra memory không tăng không giới hạn.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Tokenizer chậm

Một event loop chạy tokenization dài có thể chậm cả stream của các request khác.

Buffer dùng lại quá sớm

Dữ liệu một batch có thể bị ghi đè trước khi device đọc xong; cần completion dependency.

6Thuật ngữ

Event loop
Vòng xử lý các sự kiện sẵn sàng mà không cần một thread chờ riêng cho từng việc.
Bounded queue
Hàng đợi có giới hạn để kiểm soát memory và backpressure.
Glossary (5)
Central Processing Unit
Bộ xử lý trung tâm chạy phần host, chuẩn bị dữ liệu và điều khiển chương trình.
Tokenizer
Bộ chuyển đổi văn bản và chuỗi mã token theo bảng từ vựng.
Runtime
Phần mềm quản lý việc thực thi, buffers và phụ thuộc giữa phép toán.
Host
Phần chương trình điều khiển thiết bị, thường chạy trên bộ xử lý trung tâm.
Batch
Nhóm công việc hoặc mẫu được xử lý trong một lượt tính.

7Bài liên quan

8Nguồn