2009-11-02 24 views
7

Là một lập trình viên, tôi thực hiện các phát hiện mang tính cách mạng vài năm một lần. Tôi đang ở phía trước của đường cong, hoặc đằng sau nó bằng khoảng π trong pha. Một bài học khó khăn mà tôi đã học được là việc mở rộng quy mô OUT không phải lúc nào cũng tốt hơn, khá thường là hiệu suất đạt được lớn nhất là khi chúng tôi tập hợp lại và mở rộng quy mô.Lý do KHÔNG tăng tỷ lệ so với -out?

Bạn có lý do gì để mở rộng quy mô so với không? Giá, hiệu suất, tầm nhìn, sử dụng dự kiến? Nếu vậy, làm thế nào điều này làm việc cho bạn?

Chúng tôi đã từng thu nhỏ tới hàng trăm nút sẽ tuần tự hóa và lưu trữ dữ liệu cần thiết cho mỗi nút và chạy các quy trình toán học trên các bản ghi. Nhiều, hàng tỷ bản ghi cần phải được phân tích chéo. Đó là trường hợp kinh doanh và kỹ thuật hoàn hảo để sử dụng quy mô. Chúng tôi tiếp tục tối ưu hóa cho đến khi chúng tôi xử lý khoảng 24 giờ dữ liệu trong 26 giờ wallclock. Thực sự dài câu chuyện ngắn, chúng tôi cho thuê một IBM khổng lồ (cho thời gian) pSeries, đưa Oracle Enterprise vào nó, lập chỉ mục dữ liệu của chúng tôi và kết thúc xử lý cùng 24 giờ dữ liệu trong khoảng 6 giờ. Cách mạng cho tôi.

Vì vậy, nhiều hệ thống doanh nghiệp là OLTP và dữ liệu không phải là shard'd, nhưng mong muốn của nhiều người là phân cụm hoặc mở rộng quy mô. Đây có phải là phản ứng đối với các kỹ thuật mới hoặc hiệu suất nhận thức không?

Thực hiện các ứng dụng nói chung ngày hôm nay hoặc matras chương trình của chúng tôi cho vay tốt hơn cho quy mô không? Chúng ta có nên đưa xu hướng này vào tài khoản trong tương lai không?

+1

Chủ quan và tranh luận. – Malfist

+1

Nếu bạn bỏ dòng cuối cùng thì đó thực sự là một câu hỏi hay. Nhận thức chung là ném nhiều phần cứng hơn sau một F5 sẽ giải quyết các vấn đề – mfeingold

+0

Đồng ý về lập luận. Tôi đã điều chỉnh câu hỏi của mình. – Xailor

Trả lời

3

Không ngạc nhiên, tất cả đều phụ thuộc vào vấn đề của bạn. Nếu bạn có thể dễ dàng phân vùng nó thành các bài toán con không giao tiếp nhiều, hãy mở rộng quy mô cho các tăng tốc tầm thường. Ví dụ, tìm kiếm một từ trong các trang web 1B có thể được thực hiện bởi một máy tìm kiếm các trang 1B hoặc bằng các máy 1M làm 1000 trang mà không làm mất hiệu quả đáng kể (vì vậy với tốc độ 1.000.000x). Điều này được gọi là "lúng túng song song".

Các thuật toán khác, tuy nhiên, yêu cầu giao tiếp chuyên sâu hơn nhiều giữa các phân mục. Ví dụ của bạn yêu cầu phân tích chéo là ví dụ hoàn hảo về nơi giao tiếp thường có thể làm giảm hiệu suất hoạt động của việc thêm nhiều hộp. Trong những trường hợp này, bạn sẽ muốn giữ liên lạc bên trong một hộp (lớn hơn), đi qua các kết nối tốc độ cao, thay vì cái gì đó là 'phổ biến' như (10-) Gig-E.

Tất nhiên, đây là một quan điểm khá lý thuyết. Các yếu tố khác, chẳng hạn như I/O, độ tin cậy, dễ lập trình (một bộ nhớ chia sẻ lớn thường gây ra ít đau đầu hơn nhiều so với cụm) cũng có thể có ảnh hưởng lớn.

Cuối cùng, do lợi ích chi phí (thường cực) của việc mở rộng sử dụng phần cứng hàng hóa giá rẻ, phương pháp tiếp cận cụm/lưới gần đây đã thu hút nhiều nghiên cứu (thuật toán) hơn. Điều này làm cho các cách thức song song mới đã được phát triển để giảm thiểu giao tiếp, và do đó làm tốt hơn nhiều trên một cụm - trong khi kiến ​​thức phổ biến được sử dụng để chỉ ra rằng các loại thuật toán này chỉ có thể chạy hiệu quả trên các máy sắt lớn ...

+0

Có, trong ví dụ về giao tiếp và độ trễ của tôi, kết thúc là vấn đề. Điều thú vị là * không * vì nói chuyện chéo, mà đúng hơn là biểu diễn dữ liệu phẳng đơn giản đi kèm với quá trình xử lý để tránh các lần truy cập DB. – Xailor

6

Do mở rộng quy mô

  • là giới hạn cuối cùng bởi kích thước của hộp bạn thực sự có thể mua
  • có thể trở nên cực kỳ tiết kiệm chi phí hiệu quả, ví dụ một máy tính với 128 lõi và 128G ram là tốn kém hơn nhiều so với 16 với 8 lõi và 8G ram mỗi.
  • Một số thứ không mở rộng tốt - chẳng hạn như thao tác đọc IO.
  • Bằng cách mở rộng quy mô, nếu kiến ​​trúc của bạn là đúng, bạn cũng có thể đạt được tính sẵn sàng cao. Một máy ram 128G, 128G rất đắt, nhưng để có một máy dự phòng thứ 2 thì sẽ bị tống tiền.

Và cũng ở một mức độ nào đó, vì đó là những gì Google làm.

+1

Tôi đồng ý, nhưng điều đáng buồn là tất cả những người thường xuyên áp dụng vũ lực (đọc thêm phần cứng), nơi một thiết kế tốt hơn sẽ làm phép lạ. Xây dựng một ứng dụng là không trạng thái để bạn không phải làm các phiên cố định hoặc phân phối có thể làm giảm đáng kể yêu cầu phần cứng – mfeingold

+3

Mở rộng quy mô là giải pháp dễ dàng - trong một thời gian; thời gian phát triển là tốn kém và các nhà phát triển của bạn có thể có những thứ tốt hơn để làm - do đó, đến một điểm, nó hấp dẫn để chỉ mua hộp lớn hơn; cuối cùng nó trở nên không kinh tế. – MarkR

+3

Chi phí có hiệu quả? 6x Dell 4c24g = 36,168 đô la; 1x Dell 24c128g = $ 20,571 – Xailor

6

Chia tỷ lệ ra là tốt nhất cho các vấn đề embarrassingly parallel. Phải mất một số công việc, nhưng một số dịch vụ web phù hợp với loại đó (do đó phổ biến hiện nay). Nếu không, bạn chạy vào Amdahl's law, sau đó có nghĩa là để đạt được tốc độ bạn phải mở rộng quy mô. Tôi nghi ngờ bạn đã gặp phải vấn đề đó. Ngoài ra các hoạt động liên kết IO cũng có xu hướng hoạt động tốt với việc mở rộng quy mô lớn bởi vì chờ IO tăng% mà là song song.

+0

+1 về luật của Amdahl. – bajafresh4life

+0

Luật của Amdahl (tức là phần nào của ứng dụng của bạn thực sự song song, so với những gì cần phải được thực hiện tuần tự) thực sự là một thành phần quan trọng. Nhưng nó thường quá lý thuyết một cái nhìn, trong rất nhiều trường hợp đó là chi phí giao tiếp mà giết chết bạn lâu trước khi bạn chạy ra khỏi những thứ để làm song song ... – Wim

Các vấn đề liên quan