← Về danh sách
Điện toán & Nhúng
#암달의 법칙#구스타프슨 법칙#병렬처리#스케일링#USL
Cập nhật lần cuối · 2026-11-07

Các định luật hiệu năng xử lý song song (Định luật Amdahl và Định luật Gustafson)

1. Tổng quan

A. Định nghĩa

Định luật Amdahl (Amdahl's Law) phát biểu rằng khi giữ cố định tổng quy mô của tác vụ và tăng số bộ xử lý, mức tăng tốc (speedup) đạt được bị giới hạn bởi tỷ lệ phần việc buộc phải chạy tuần tự. Định luật Gustafson (Gustafson's Law, Gustafson–Barsis) cho thấy nếu quy mô bài toán được mở rộng cùng với số bộ xử lý thì mức tăng tốc có thể tăng gần như tỷ lệ thuận với số bộ xử lý. Hai định luật mô tả cùng một hệ song song dưới hai góc nhìn: "hoàn thành một khối lượng công việc cố định nhanh đến đâu (strong scaling)" so với "làm được bao nhiêu việc trong cùng khoảng thời gian (weak scaling)".

Câu hỏi cốt lõi của xử lý song song rất đơn giản: "Nếu tăng bộ xử lý (lõi) lên N lần thì hiệu năng có tăng N lần không?" Theo trực giác thì phải như vậy, nhưng thực tế lại khác. Mọi chương trình đều chứa một đoạn tuần tự (serial section) buộc phải xử lý tuần tự từng bước một — khởi tạo, nhập/xuất, vùng tới hạn, gộp kết quả — và đoạn này không nhanh lên dù thêm bao nhiêu bộ xử lý. Định luật Amdahl chỉ ra một cách định lượng rằng chính đoạn tuần tự này tạo ra "trần" cho mức tăng tốc tổng thể, còn Định luật Gustafson cho thấy việc mở rộng quy mô bài toán có thể thực tế đẩy trần đó lên cao hơn.

Hai định luật này không mâu thuẫn mà là các mô hình bổ sung cho nhau với giả định khác nhau. Amdahl "cố định khối lượng công việc", còn Gustafson "cố định thời gian (mở rộng khối lượng công việc)". Vấn đề không phải cái nào đúng, mà là khối lượng công việc của bạn tương ứng với kịch bản nào — và phán đoán đó là điểm khởi đầu của thiết kế song song. Từ góc nhìn của Kỹ sư chuyên nghiệp, các định luật này là công cụ cơ bản để ước lượng dung lượng và ra quyết định kiến trúc, dự báo lợi tức đầu tư (ROI) và giới hạn mở rộng của CPU đa lõi, tăng tốc GPU, huấn luyện phân tán quy mô lớn và xử lý dữ liệu lớn.

B. Bối cảnh ra đời và sự cần thiết

Định luật Amdahl được Gene Amdahl đề xuất năm 1967 trong bối cảnh so sánh tính kinh tế giữa một bộ xử lý tốc độ cao đơn lẻ và nhiều bộ xử lý chậm hơn. Khi đó, sự lạc quan về tính hữu dụng của máy tính song song đang lan rộng, nhưng Amdahl đưa ra giới hạn tỉnh táo rằng "nếu một phần đáng kể của chương trình về bản chất là tuần tự thì lợi ích của song song hóa là hạn chế", thiết lập một chuẩn mực thực tế cho đầu tư song song hóa. Về sau, khi Định luật Moore chạm giới hạn và kỷ nguyên nâng hiệu năng bằng tăng số lõi (đa lõi) thay vì tốc độ xung nhịp đến, Định luật Amdahl được nhìn nhận lại như công cụ cốt lõi để giải thích "vì sao thêm lõi mà không nhanh như kỳ vọng".

Ngược lại, năm 1988 John Gustafson, khi song song hóa các tính toán khoa học thực tế trên một hypercube 1024 bộ xử lý tại Phòng thí nghiệm Quốc gia Sandia, đã quan sát một hiện tượng khác với dự đoán bi quan của Amdahl. Khi bộ xử lý tăng lên, người ta có xu hướng không giải cùng một bài toán nhanh hơn, mà giải một bài toán lớn hơn (lưới mịn hơn, mô phỏng dài hơn) trong cùng khoảng thời gian. Nghĩa là tỷ lệ tuần tự trở nên nhỏ tương đối khi quy mô bài toán tăng, nên HPC thực tế cho thấy mức mở rộng gần như tỷ lệ với số bộ xử lý. Cái nhìn này củng cố tính khả thi của siêu máy tính song song quy mô lớn. Ngày nay, việc huấn luyện các mô hình ngôn ngữ khổng lồ (LLM) trên hàng nghìn GPU hay chạy mô phỏng thời tiết, chất lỏng trên hàng chục nghìn lõi khả thi là vì mở rộng kiểu Gustafson thành lập; ngược lại, giới hạn Amdahl áp dụng trực tiếp cho việc xử lý một yêu cầu đơn lẻ của các dịch vụ trực tuyến nơi thời gian phản hồi là quan trọng.

2. Định luật Amdahl — Khối lượng công việc cố định (Strong Scaling)

Định luật Amdahl "cố định tổng khối lượng công việc". Nếu chia thời gian thực thi chương trình thành tỷ lệ song song hóa được p (0≤p≤1) và tỷ lệ tuần tự 1-p thì mức tăng tốc khi triển khai N bộ xử lý như sau.

Speedup(N) = 1 / ( (1 − p) + p/N ), và khi N → ∞, mức tăng tốc tối đa = 1 / (1 − p)

Sơ đồ cấu trúc bên dưới thể hiện mô hình Amdahl, trong đó tổng công việc được phân rã thành đoạn tuần tự và đoạn song song, và chỉ đoạn song song được phân tán trên N bộ xử lý. Đoạn tuần tự không được phân tán mà giữ nguyên, tạo ra cận dưới cho tổng thời gian.

flowchart TB
  JOB["Tổng công việc cố định<br/>(thời gian chạy 1)"]
  JOB --> SER["Đoạn tuần tự (1−p)<br/>không đổi dù thêm bộ xử lý"]
  JOB --> PAR["Đoạn song song p<br/>chia được thành N"]
  PAR --> P0["Bộ xử lý 0<br/>(p/N)"]
  PAR --> P1["Bộ xử lý 1<br/>(p/N)"]
  PAR --> Pn["Bộ xử lý N−1<br/>(p/N)"]
  SER --> OUT["Tổng thời gian chạy<br/>(1−p) + p/N"]
  P0 --> OUT
  P1 --> OUT
  Pn --> OUT
  style SER fill:#fce8e6,stroke:#d93025,stroke-width:2px
  style PAR fill:#e6f4ea,stroke:#188038,stroke-width:2px
  style OUT fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px

A. Cái trần do đoạn tuần tự tạo ra

Thông điệp mạnh mẽ nhất của Định luật Amdahl là "chỉ cần một phần nhỏ không song song hóa được cũng giới hạn mạnh khả năng mở rộng tổng thể". Ví dụ, dù song song hóa hoàn hảo 95% toàn bộ (p=0.95), phần tuần tự 5% còn lại giới hạn mức tăng tốc tối đa ở 1/(1−0.95)=20 lần dù thêm bao nhiêu bộ xử lý. Vượt quá 20 bộ xử lý, việc triển khai thêm hầu như không có hiệu quả; ngay cả 1.000 bộ xử lý cũng chỉ cho khoảng 19,6 lần. Điều này nghĩa là một giá trị nhỏ như "tuần tự 5%" quyết định số phận của mở rộng tổng thể.

B. Hiệu suất giảm dần qua các con số

Cụ thể, hãy xét một tác vụ với p=0.90. Tại N=2 mức tăng tốc là 1/(0.1+0.45)=khoảng 1,82 lần, tại N=4 là 1/(0.1+0.225)=khoảng 3,08 lần, tại N=8 khoảng 4,71 lần, tại N=16 khoảng 6,40 lần, và tại N=∞ trần là 10 lần. Dù tăng gấp đôi số bộ xử lý, mức tăng tốc ngày càng nhỏ dần — hiệu suất giảm dần (diminishing returns) rõ rệt. Bảng dưới đây tóm tắt các trần lý thuyết theo tỷ lệ tuần tự.

Tỷ lệ song song p Tỷ lệ tuần tự 1−p Tăng tốc tối đa (N→∞) Khi N=16
0.50 0.50 2 lần khoảng 1,88 lần
0.90 0.10 10 lần khoảng 6,40 lần
0.95 0.05 20 lần khoảng 9,14 lần
0.99 0.01 100 lần khoảng 13,9 lần

C. Hàm ý thực tiễn

Định luật Amdahl cho ta thứ tự ưu tiên tối ưu rằng "giảm đoạn tuần tự có thể quan trọng hơn việc thêm song song". Tuần tự hóa commit của giao dịch cơ sở dữ liệu, tranh chấp khóa (lock contention), bộ đếm toàn cục, ghi tuần tự vào một tệp log duy nhất là các nút cổ chai tuần tự điển hình; trừ khi giảm chúng bằng sharding, cấu trúc dữ liệu lock-free và xử lý theo lô, việc thêm lõi là lãng phí tiền bạc. Thực tế, có trường hợp một hệ OLTP tăng CPU từ 8 lên 32 lõi (tăng 4 lần) nhưng thông lượng chỉ tăng 1,6 lần; vì đoạn tuần tự của connection pool và đường commit ở mức p≈0.8, nó thậm chí không đạt trần lý thuyết tại N=32 (khoảng 4,7 lần) — một hiện tượng Amdahl điển hình.

Cùng góc nhìn này áp dụng trực tiếp cho việc phân tích hiệu năng phần mềm (profiling). Định luật Amdahl cũng là cơ sở toán học cho nguyên tắc "tối ưu trước phần chiếm tỷ trọng lớn trong tổng thể". Làm một hàm chiếm 5% tổng thời gian thực thi nhanh hơn 10 lần chỉ giảm tổng thể khoảng 4,5%, nhưng cải thiện một hàm chiếm 60% chỉ 2 lần đã giảm tổng thể 30%. Dù là song song hóa hay cải tiến thuật toán, hiệu quả đầu tư luôn bị giới hạn bởi "tỷ trọng mà đối tượng cải thiện chiếm trong tổng thể" — bài học phổ quát của Amdahl.

3. Định luật Gustafson — Thời gian cố định (Weak Scaling)

Định luật Gustafson đảo ngược góc nhìn. Nó "cố định thời gian" và giả định rằng nếu bộ xử lý tăng N lần thì quy mô bài toán xử lý cũng tăng theo. Nếu lấy thời gian thực thi song song làm chuẩn, với tỷ lệ tuần tự là s và tỷ lệ song song là 1−s, thì scaled speedup như sau.

Speedup(N) = s + (1 − s)·N = N − s·(N − 1)

Ở đây s là tỷ lệ tuần tự "trên cơ sở thực thi song song", điểm khác với Amdahl. Sơ đồ dưới đây so sánh, từ góc nhìn quy trình, cách Amdahl (cố định công việc → rút ngắn thời gian) và Gustafson (cố định thời gian → mở rộng công việc) sử dụng tài nguyên khi thêm bộ xử lý.

flowchart LR
  START["Tăng bộ xử lý lên N lần"] --> Q{"Cố định cái gì?"}
  Q -->|"Cố định công việc"| A1["Amdahl: cùng công việc<br/>làm nhanh hơn"]
  A1 --> A2["Tỷ trọng đoạn tuần tự tăng<br/>→ tăng tốc bão hòa"]
  A2 --> A3["Trần 1/(1−p)"]
  Q -->|"Cố định thời gian"| G1["Gustafson: công việc lớn hơn<br/>trong cùng thời gian"]
  G1 --> G2["Bài toán lớn hơn nâng<br/>tỷ trọng đoạn song song"]
  G2 --> G3["Tăng tốc ≈ N<br/>mở rộng gần tuyến tính"]
  style A3 fill:#fce8e6,stroke:#d93025,stroke-width:2px
  style G3 fill:#e6f4ea,stroke:#188038,stroke-width:2px

A. Vì sao tỷ lệ tuần tự trở nên nhỏ tương đối

Trong tính toán khoa học, thời gian tuyệt đối của công việc tuần tự (khởi tạo, nhập/xuất) gần như không đổi dù bài toán lớn lên, trong khi khối lượng công việc song song (tính toán lưới, phép toán ma trận) bùng nổ tỷ lệ với quy mô bài toán. Do đó, khi bài toán lớn lên, tỷ lệ của phần tuần tự trong tổng thể co lại, và giả định "tỷ lệ tuần tự cố định" của Amdahl không còn đúng. Ví dụ, tăng gấp đôi độ phân giải lưới làm tính toán tăng vài lần nhưng thời gian mở tệp giữ nguyên, nên tỷ lệ tuần tự giảm từ 10% xuống 2%. Đây là lý do mở rộng gần tuyến tính được quan sát ngay cả ở 1.024 bộ xử lý.

B. Mở rộng tuyến tính qua các con số

Khi s=0.05 (tuần tự 5% trên cơ sở song song), mức tăng tốc Gustafson là 0.05+0.95×16=khoảng 15,25 lần tại N=16 và khoảng 972,9 lần tại N=1.024. Điều này tương phản rõ rệt với Amdahl vốn giới hạn ở 20 lần với cùng tuần tự 5%. Mấu chốt là "bạn đo cái gì". Amdahl đo mức rút ngắn thời gian phản hồi của cùng một bài toán, còn Gustafson đo quy mô xử lý (throughput, quy mô bài toán) trong cùng khoảng thời gian.

C. Lĩnh vực áp dụng

Các trường hợp tiêu biểu nơi mở rộng kiểu Gustafson thành lập là mô phỏng HPC (thời tiết, chất lỏng, phân tích kết cấu), huấn luyện học sâu quy mô lớn (song song theo batch và dữ liệu), và mô phỏng Monte Carlo — những bài toán mà "ta muốn giải chính xác hơn hoặc ở quy mô lớn hơn khi tài nguyên tăng". Ngược lại, giới hạn Amdahl áp dụng trực tiếp cho các bài toán có khối lượng công việc cố định, như thời gian phản hồi của một yêu cầu người dùng đơn lẻ hay hạn chót của một lô cố định kích thước. Vì vậy, nhà thiết kế phải định nghĩa trước "khối lượng công việc của ta muốn nhanh hơn (strong) hay nhiều hơn (weak)".

4. So sánh hai định luật

Sự khác biệt giữa hai định luật không đến từ "đúng hay sai" mà từ sự khác biệt trong thiết lập bài toán. Amdahl giả định công việc cố định (strong scaling) và Gustafson giả định công việc mở rộng (weak scaling); các bài toán thực tế mà chúng nhắm tới và những kết luận thực tiễn kéo theo là khác nhau.

Hạng mục Định luật Amdahl Định luật Gustafson
Đối tượng cố định Công việc (quy mô bài toán) Thời gian thực thi
Loại scaling Strong scaling Weak scaling
Công thức tăng tốc 1/((1−p)+p/N) s+(1−s)·N
Hành vi khi N→∞ Bão hòa ở trần 1/(1−p) Tăng tuyến tính theo N
Chỉ số đo Rút ngắn thời gian phản hồi Quy mô xử lý, thông lượng
Trường hợp phù hợp Giao dịch trực tuyến, lô cố định Mô phỏng HPC, huấn luyện quy mô lớn

Lý do căn bản cho sự khác biệt trong bảng nằm ở việc xem tỷ lệ tuần tự là hằng số hay là hàm của quy mô bài toán. Amdahl coi tỷ lệ tuần tự là hằng số, nên khi N tăng thì p/N hội tụ về 0 và chỉ còn lại số hạng tuần tự, do đó bão hòa. Gustafson cho rằng mở rộng bài toán làm tăng khối lượng tuyệt đối của công việc song song, nên tỷ lệ tuần tự giảm và không xảy ra bão hòa. Hàm ý thực tiễn rất rõ ràng. Với đầu tư để giảm độ trễ phản hồi (tăng tốc một truy vấn đơn lẻ), phải tính trước trần Amdahl để tránh trang bị dư thừa; với đầu tư để tăng dung lượng xử lý (mô hình lớn hơn, nhiều người dùng hơn), nên thiết kế mở rộng theo chiều ngang trên tiền đề mở rộng kiểu Gustafson, đồng thời kiểm tra xem chi phí truyền thông và đồng bộ có trở thành nút cổ chai mới hay không.

Như một trường hợp cụ thể, hãy xét việc huấn luyện theo lô ban đêm của một hệ thống gợi ý. Nếu dữ liệu là log cố định của ngày hôm qua (strong), tăng GPU từ 2 lên 8 vẫn chạm trần Amdahl do các đoạn tuần tự của tiền xử lý và lưu checkpoint, cho mức rút ngắn 2,5 lần thay vì 4 lần. Tuy nhiên, nếu đội vận hành đổi mục tiêu thành "huấn luyện nhiều đặc trưng hơn và embedding lớn hơn trong cùng 4 giờ" (weak), thì cùng 8 GPU đó có thể mở rộng quy mô mô hình gần như tuyến tính. Dù cùng phần cứng, việc bạn đi theo đường cong nào trong hai đường phụ thuộc vào cách đặt mục tiêu.

5. Chuyên sâu: Định luật khả mở rộng phổ quát (USL) và xu hướng mới nhất

Amdahl và Gustafson có hạn chế là các mô hình lý tưởng hóa bỏ qua chi phí truyền thông và đồng bộ. Trong thực tế, khi bộ xử lý tăng, tranh chấp tài nguyên chia sẻ (contention) và truyền thông để duy trì nhất quán dữ liệu (coherency) đều tăng, nên vượt quá một điểm nhất định hiệu năng có thể thực sự giảm (retrograde). Định luật khả mở rộng phổ quát (USL, Universal Scalability Law) của Neil Gunther mô hình hóa điều này bằng hai số hạng phạt.

C(N) = N / ( 1 + α·(N − 1) + β·N·(N − 1) ) — α: tranh chấp (tuần tự hóa), β: hệ số nhất quán (truyền thông tương hỗ)

Ở đây, nếu β=0 thì USL rút gọn về Định luật Amdahl, và nếu β khác 0 thì nó giải thích hành vi thực tế rằng đường cong hiệu năng suy giảm sau một đỉnh đồng thời nhất định (peak concurrency). USL hồi quy α và β từ một tập nhỏ các điểm đo tải (thông lượng ở vài mức số luồng) để đưa ra câu trả lời định lượng cho câu hỏi ước lượng dung lượng "mở rộng tới bao nhiêu nút/lõi thì còn đáng". Nghĩa là nếu Amdahl cho biết trần và Gustafson cho biết tiềm năng mở rộng, thì USL chỉ ra mức đồng thời tối ưu thực tế bao gồm cả chi phí tranh chấp và truyền thông.

Qua một con số cụ thể, hãy xét một tác vụ tổng hợp phân tán trên một cụm Spark được mở rộng từ 10 lên 40 nút (tăng 4 lần): thông lượng tăng gần tuyến tính lên 3,9 lần (vùng Gustafson), nhưng tại 80 nút nó đạt đỉnh khoảng 7,2 lần do tranh chấp mạng shuffle rồi uốn xuống 7,0 lần tại 100 nút. Vùng đảo ngược này không thể giải thích chỉ bằng Amdahl và Gustafson và chỉ được USL nắm bắt qua số hạng β. Do đó, giả định "càng nhiều nút thì càng nhanh" là nguy hiểm; phải tìm mức đồng thời đỉnh bằng đo đạc và thay đổi thuật toán hoặc cấu trúc truyền thông vượt quá điểm đó.

Trong các xu hướng gần đây, các định luật này đã trở thành ngôn ngữ thiết kế cho việc mở rộng quy mô AI và trung tâm dữ liệu. Khi huấn luyện LLM trên hàng nghìn GPU, song song theo dữ liệu, tensor và pipeline nhắm tới mở rộng kiểu Gustafson, nhưng truyền thông tập thể all-reduce hành xử như số hạng β của USL, nên vượt quá một quy mô nhất định truyền thông trở thành nút cổ chai. Do đó, các interconnect tốc độ cao như NVLink, InfiniBand và RoCE, việc chồng lấp truyền thông với tính toán, và nén gradient trở thành thách thức cốt lõi. Shuffle của Apache Spark và đồng thuận (consensus) của cơ sở dữ liệu phân tán có cùng cấu trúc, tạo ra điểm nơi chi phí tranh chấp và truyền thông bẻ cong mở rộng tuyến tính. Cuối cùng, thiết kế hệ phân tán hiện đại hội tụ về tối ưu đồng thời hai trục: "tăng đoạn song song (Gustafson) và giảm tuần tự, tranh chấp, truyền thông (Amdahl và USL)".

6. Những điểm cần lưu ý và hàm ý

Từ góc nhìn của Kỹ sư chuyên nghiệp, các định luật này nên được dùng không phải như công thức đơn thuần mà như một khung ra quyết định để đánh giá tính khả thi và giới hạn của đầu tư song song và phân tán, với các hàm ý chiến lược sau.

  • Chiến lược áp dụng — phân loại trước loại khối lượng công việc: Trước khi đầu tư mở rộng, trước hết phải phân loại khối lượng công việc mục tiêu là loại rút ngắn thời gian phản hồi (strong, Amdahl) hay loại mở rộng quy mô xử lý (weak, Gustafson). Loại trước đo tỷ lệ tuần tự p, tính trần lý thuyết và đặt số lõi phù hợp trong phạm vi đó; loại sau giả định mở rộng bài toán và mở rộng theo chiều ngang, thiết kế kiến trúc truyền thông trước.

  • Đánh đổi — giảm tuần tự so với mở rộng song song: Định luật Amdahl hàm ý rằng "loại bỏ nút cổ chai tuần tự có thể mang lại nhiều hơn so với thêm song song". Phải so sánh, trên cơ sở chi phí-lợi ích, giữa việc tái cấu trúc loại bỏ tranh chấp khóa, tài nguyên toàn cục và I/O tuần tự thông qua sharding, cấu trúc lock-free và xử lý theo lô với việc thêm lõi hoặc nút. Trang bị dư thừa chỉ làm phình TCO trong vùng hiệu suất giảm dần.

  • Phản ánh chi phí thực tế (USL): Chỉ tin vào Amdahl và Gustafson lý tưởng hóa sẽ đánh giá thấp chi phí truyền thông và đồng bộ, rơi vào bẫy "càng thêm càng chậm". Hãy ước lượng α và β từ các thử nghiệm tải quy mô nhỏ để tính mức đồng thời tối ưu (peak), và phản ánh vào việc ra quyết định rằng mở rộng vượt quá điểm đó không có hiệu quả nếu không cải thiện interconnect hoặc thay đổi thuật toán.

  • Triển vọng và công nghệ liên quan — tăng tốc dị thể, quy mô lớn: Khi các bộ tăng tốc như GPU, NPU, TPU, mở rộng bộ nhớ dựa trên CXL và các interconnect siêu nhanh trở nên phổ biến, nút cổ chai của hiệu năng song song đang dịch chuyển từ "tính toán" sang "di chuyển dữ liệu và đồng bộ". Chồng lấp truyền thông với tính toán, tối ưu truyền thông tập thể, và tính cục bộ dữ liệu (NUMA và bố trí nhận biết topology) là các mở rộng thực tiễn của ba định luật, và sẽ trở thành năng lực cốt lõi quyết định chi phí và hiệu quả năng lượng của huấn luyện mô hình khổng lồ và suy luận thời gian thực.

  • Góc nhìn quản trị và vận hành: Khả mở rộng không phải là một bài benchmark một lần mà là đối tượng quan sát liên tục. Phải liên tục đo đường cong thông lượng-đồng thời để phát hiện sớm suy thoái hiệu năng, và lồng ghép vào vận hành một quy trình quản lý dung lượng tái ước lượng α và β khi thay đổi thế hệ phần cứng và thay đổi topology — qua đó duy trì lợi tức đầu tư.

Tài liệu tham khảo


Tóm tắt một câu: Định luật Amdahl mô tả strong scaling, nơi với công việc cố định thì tỷ lệ tuần tự định ra trần của mức tăng tốc (1/(1−p)), còn Định luật Gustafson mô tả weak scaling, nơi mở rộng quy mô bài toán giúp hiệu năng tăng gần như tuyến tính theo số bộ xử lý; USL bổ sung cho chúng bằng cách phản ánh chi phí tranh chấp và truyền thông để chỉ ra mức đồng thời tối ưu thực tế.