(Đây là Paul)
Mục đích của slide là (ngoài có từ ngữ khôi hài), như bạn đề cập đến, đó là hồ bơi thread phát triển mà không bị ràng buộc tạo chủ đề mới.
Một nhóm chủ đề vốn đại diện cho hàng đợi và điểm chuyển giao công việc trong một hệ thống. Đó là, một cái gì đó là cho ăn nó làm việc để làm (và nó có thể được cho ăn làm việc ở nơi khác quá). Nếu một hồ bơi thread bắt đầu phát triển bởi vì nó không thể theo kịp nhu cầu.
Nói chung, điều đó là tốt vì tài nguyên máy tính là hữu hạn và hàng đợi đó được tạo để xử lý các cụm công việc. Tuy nhiên, nhóm chủ đề đó không cho phép bạn kiểm soát việc có thể đẩy nút cổ chai về phía trước.
Ví dụ, trong một kịch bản máy chủ, một vài luồng có thể chấp nhận trên ổ cắm và bàn giao một nhóm luồng khách hàng để xử lý. Nếu hồ bơi thread đó bắt đầu phát triển ngoài tầm kiểm soát - hệ thống sẽ dừng chấp nhận các máy khách mới (trên thực tế, các chủ đề "acceptor" sau đó thường nhảy vào nhóm luồng tạm thời để giúp xử lý các máy khách).
Hiệu ứng tương tự nếu bạn sử dụng một hồ bơi cố định với hàng đợi đầu vào không bị chặn. Bất cứ lúc nào bạn xem xét các kịch bản của hàng đợi điền vào kiểm soát - bạn nhận ra vấn đề.
IIRC, máy chủ SEDA seminal của Matt Welsh (không đồng bộ) đã tạo các nhóm luồng đã sửa đổi kích thước của chúng theo đặc điểm của máy chủ.
Ý tưởng dừng chấp nhận khách hàng mới có vẻ xấu cho đến khi bạn nhận ra sự thay thế là một hệ thống bị tê liệt không xử lý khách hàng. (Một lần nữa, với sự hiểu biết rằng máy tính là hữu hạn - ngay cả một hệ thống được điều chỉnh tối ưu có giới hạn)
Ngẫu nhiên, các JVM giới hạn chủ đề đến 16k (thường) hoặc 32k tùy thuộc vào JVM. Nhưng nếu bạn là CPU bị ràng buộc, giới hạn đó không phải là rất có liên quan - bắt đầu từ một thread khác trên một hệ thống CPU ràng buộc là phản tác dụng.
Tôi đã vui vẻ chạy hệ thống ở 4 hoặc 5 nghìn luồng. Nhưng gần 16k giới hạn những thứ có xu hướng bog xuống (JVM giới hạn này thực thi - chúng tôi đã có nhiều chủ đề hơn trong Linux C + +) ngay cả khi không bị ràng buộc CPU.
Nguồn
2011-05-23 16:58:02
Tôi đã sử dụng một nhóm bộ nhớ cache treo hệ thống Windows Vista của mình quá tệ đến nỗi tôi phải cấp nguồn cho nó. Trình quản lý tác vụ sẽ không phản hồi. –
đến đây vì lý do tương tự :) – Eugen