Có còn sử dụng cho sự mất cân bằng trên phần cứng hiện đại?


39

Câu hỏi này đã được hỏi trước đây, nhưng tôi tin rằng thế giới đã thay đổi đủ để nó được hỏi lại.

Liệu sự mất cân bằng có sử dụng trên các hệ thống ngày nay khi chúng ta có CPU có khả năng NUMA với việc chia sẻ bộ nhớ giữa các lõi của chúng không?

Chạy irqbalance --oneshot --debugcho thấy một khách ảo trên môi trường VMware ESXi hiện đại đang chia sẻ các nút NUMA giữa các lõi.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

trong trường hợp này, sự mất cân bằng sẽ phát hiện ra rằng nó đang được chạy trên hệ thống NUMA và thoát. Điều này gây rối với giám sát quá trình của chúng tôi.

Chúng ta có nên xem xét việc chạy numad thay vì mất cân bằng trên các hệ thống như vậy không?

Điều này chủ yếu là thú vị cho các máy chủ ảo hóa VMware.

Câu trả lời:


27

Đây là một câu trả lời từ một kỹ thuật viên ở RedHat. Mặc dù tôi tin rằng hầu hết các phần cứng doanh nghiệp đều có khả năng NUMA. Và theo như tôi biết, VMware cũng sẽ cố gắng điều chỉnh các máy ảo của bạn trên cùng một nút NUMA miễn là cấu hình CPU của nó phù hợp.

Kinh nghiệm (Đặc biệt liên quan đến VMware) sẽ được đánh giá rất cao.

Điều này đúng "vì" các máy chủ hiện đại. Hãy nhớ rằng Multi-CPU / Muli-Core không giống với NUMA. Có nhiều hệ thống Multi-CPU / Core không có NUMA.

Trước khi đọc lời giải thích của tôi dưới đây, vui lòng đọc tài liệu về mối quan hệ của IRQ ở trên, cũng như các hướng dẫn sau:

Hướng dẫn điều chỉnh hiệu suất của RHEL 6

Điều chỉnh hiệu suất độ trễ thấp cho RHEL 6

Có tất cả những gì đã đọc? Tuyệt vời, bạn không cần phải nghe gì thêm từ tôi! ;-) Nhưng chỉ trong trường hợp bạn thiếu kiên nhẫn, đây là lý do tại sao bạn muốn họ ...

IRQbalance giữ cho tất cả các yêu cầu IRQ không sao lưu trên một CPU. Tôi đã thấy nhiều hệ thống có hơn 4 lõi CPU hoạt động chậm vì tất cả các quy trình trên các CPU khác nhau đang chờ CPU 0 để xử lý các yêu cầu IRQ mạng hoặc lưu trữ. CPU 0 trông rất, rất bận, tất cả các CPU khác đều không bận, tuy nhiên các ứng dụng rất chậm. Các ứng dụng chậm vì chúng đang chờ các yêu cầu IO của chúng từ CPU 0.

IRQbalance cố gắng cân bằng điều này một cách thông minh trên tất cả các CPU và, khi có thể, sẽ xử lý IRQ càng gần với quy trình càng tốt. Đây có thể là cùng một lõi, một lõi trên cùng một khuôn chia sẻ cùng một bộ đệm hoặc một lõi trong cùng một vùng NUMA.

Bạn nên sử dụng irqbalance trừ khi:

Bạn đang ghim thủ công các ứng dụng / IRQ của mình vào các lõi cụ thể vì một lý do rất chính đáng (độ trễ thấp, yêu cầu thời gian thực, v.v.)

Khách ảo. Điều đó không thực sự có ý nghĩa bởi vì trừ khi bạn ghim khách vào CPU và IRQ cụ thể và phần cứng lưu trữ / mạng chuyên dụng, bạn có thể sẽ không thấy những lợi ích bạn có thể có trên kim loại trần. Nhưng máy chủ KVM / RHEV của bạn NÊN sử dụng sự mất cân bằng và chữ sốđiều chỉnh .

Các công cụ điều chỉnh rất quan trọng khác là hồ sơ điều chỉnh và numad. Đọc về họ! Sử dụng chúng!

Numad tương tự như sự mất cân bằng ở chỗ nó cố gắng đảm bảo rằng một quá trình và bộ nhớ của nó nằm trong cùng một vùng numa. Với nhiều lõi, chúng tôi thấy độ trễ giảm đáng kể dẫn đến hiệu suất đáng tin cậy mượt mà hơn nhiều khi tải.

Nếu bạn có kỹ năng, siêng năng và theo dõi thường xuyên hoặc có khối lượng công việc rất dễ đoán, bạn có thể có hiệu suất tốt hơn bằng cách ghim thủ công các quy trình / IRQ vào CPU. Ngay cả trong những tình huống này, sự mất cân bằng và numad rất gần với kết hợp. Nhưng nếu bạn không chắc chắn hoặc khối lượng công việc của bạn không thể đoán trước, bạn nên sử dụng sự mất cân bằng và chữ số.


5
FWIW, một số hướng dẫn sử dụng 10GbE khuyên bạn nên vô hiệu hóa sự mất cân bằng để có được thông lượng tốt hơn ...
rogerdpack

8
Để có được mức tối đa tuyệt đối để khớp với số điểm chuẩn của họ, vâng, bạn cần kết hợp mọi thứ theo một cách nhất định, nhưng những điểm chuẩn này thường không phù hợp với tải công việc thực tế. Nếu bạn có MỘT ứng dụng đang chạy trong máy chủ với yêu cầu cực kỳ nhạy cảm độ trễ trong một mẫu sử dụng rất dễ đoán, tốt, hãy tiếp tục và tự cấu hình mối quan hệ của bộ xử lý cho mọi thứ. Nhưng nếu ứng dụng giống với trường hợp sử dụng trong thế giới thực, nơi mọi thứ có thể thay đổi trong một loạt các quy trình và tải, tôi đồng ý với công nghệ Red Hat. Cân bằng Linux NUMA đang tiến triển độc đáo.
GeorgeB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.