Cách hiệu quả về chi phí để xây dựng một máy chủ có nhiều RAM


10

Tôi có một ứng dụng Java trong đó khả năng mở rộng chủ yếu bị giới hạn bởi RAM, mà tôi muốn chạy trên một hoặc nhiều máy chủ trong trung tâm dữ liệu. Tôi nên tìm phần cứng máy chủ có thể chứa 100GB - 512GB RAM trở lên ở đâu? Tôi không phải là một chuyên gia trong những vấn đề như vậy nên tôi thực sự không biết bắt đầu từ đâu.

Đây có phải là vào lãnh thổ siêu máy tính (6 con số trở lên) hay tôi có thể có được một máy chủ như vậy với số tiền 5 chữ số thấp?

Một vài lưu ý dựa trên một số câu hỏi dưới đây:

  • Có, tôi đã cố gắng hết sức để nghĩ ra cách để loại bỏ yêu cầu về khả năng mở rộng này, và không có lựa chọn nào thực sự không phải là một lựa chọn. Ứng dụng về cơ bản yêu cầu truy cập ngẫu nhiên rất nhanh vào một lượng dữ liệu rất lớn, lưu trữ trong một đĩa cứng (có lẽ thông qua cơ sở dữ liệu) sẽ không cắt được.
  • Tôi khá chắc chắn rằng JVM có thể, ít nhất là về mặt lý thuyết, mở rộng đến mức đó. Tôi thường xuyên chạy mã của mình với 10GB được phân bổ cho Sun 1.6 JVM mà không gặp sự cố đáng chú ý nào.

Câu trả lời:


6

Yêu cầu bất thường đôi khi được hưởng lợi từ các giải pháp bất thường. Chắc chắn bạn có thể đưa ra 6 con số cho Sun, Dell hoặc HP và được thực hiện với nó, nhưng nó không phải là trò chơi duy nhất trong thị trấn.

Đối với các giải pháp hộp đơn, nhận tới 128GB là rất rẻ (32 x 4GB ~ 3.000 USD), ngay cả với các bo mạch chủ homebrew có giá dưới 1.000 USD. (đừng chế giễu các nhà sản xuất. Nếu nó đủ tốt cho Google ...)

256GB đắt hơn nhiều (32x8GB ~ 18.000 USD) và hơn thế nữa ...

Ngoài ra, bạn có coi các hộp giá rẻ được kết nối với nhau của Infiniband (10Gbps) như một giải pháp thay thế không?

Bạn có thể xây dựng một nút 4, 16 bộ xử lý (64 lõi), máy 512GB theo cách đó và vẫn có thay đổi từ 25.000 USD.

Ngoài ra, bạn sẽ có thêm các lợi ích của việc xuống cấp Gracefull, nếu ứng dụng của bạn có thể chạy trên 3 máy nếu một trong số chúng bị lỗi và có thể có tỷ lệ tuyến tính với chi phí lên tới 8 nút (chỉ cần thêm 4 nút). Tại thời điểm đó, bạn đang xem xét một con thú 128 lõi, RAM 1TB tuyệt vời với giá <USD 50.000 .

Trước khi bạn từ chối đề xuất của Infiniband là kỳ lạ, nó không dành cho loại máy bạn đang yêu cầu. ví dụ 141 trong số 500 siêu máy tính hàng đầu được xây dựng theo cách này, bao gồm 4 trong số 10 siêu máy hàng đầu ( http://top500.org/connfam/8 )


Tôi không biết liệu Infiniband có phải là giải pháp phù hợp không (tôi không có kinh nghiệm với nó), nhưng (năm 2011) tôi sẽ gọi một hệ thống chạy Java với 100GB + ram trên một máy chủ là kỳ lạ. Đã đến lúc xem xét các giải pháp kỳ lạ.
Mike Miller

-1 vì đã thực sự, thực sự sai lệch. Hầu hết các siêu máy tính trong Top500 đang sử dụng InfiniBand để cung cấp mạng có độ trễ thấp, không để cung cấp một hình ảnh nhất quán duy nhất trên RDMA - sử dụng đó thực sự kỳ lạ. Để sử dụng điều đó, bạn cần sử dụng một sản phẩm Hình ảnh hệ thống đơn hoặc vSMP. Mặc dù bạn có thể sử dụng một cái gì đó như Kerrighed hoặc OpenSSI cho việc này, các dịch vụ này dựa trên các hạt nhân đã sửa đổi và không thể phân chia một hình ảnh quá trình duy nhất giữa các nút. Chỉ ScaleMP, một giải pháp rất tốn kém, có thể cung cấp hình ảnh hệ thống mạch lạc thực sự trên nhiều máy chủ được kết nối RDMA.
jgoldschrafe

3

Được rồi, nhìn kìa. Bạn sẽ không tìm thấy một máy chủ có loại dấu chân RAM mà bạn đang tìm kiếm, ít nhất không phải là một máy chủ không yêu cầu lưới điện riêng.

Tại sao không thực hiện một cách tiếp cận mở rộng, và sử dụng memcached? Bạn có thể trải bộ nhớ xung quanh đến các máy khác nhau trên mạng. Dữ liệu không bao giờ phải chạm vào ổ đĩa và với loại mạng cực nhanh mà bạn có thể mua bằng số tiền bạn đang nói, độ trễ sẽ hầu như không phải là vấn đề.

Đây là một ứng dụng khách memcached cho java: http://www.whalin.com/memcached/

Và đây là phần giới thiệu để ghi nhớ trong trường hợp bạn không quen: http://www.danga.com/memcached/

Nhìn vào nó. Sẽ hiệu quả hơn về mặt chi phí so với việc chế tạo một cỗ máy quái vật duy nhất với dung lượng RAM khủng. Ngoài ra, nếu bạn đang làm một cái gì đó có loại yêu cầu đó, thì đó có thể là nhiệm vụ quan trọng và bạn không cần một điểm thất bại.


Ý tưởng tốt. Tôi gần như thích nó hơn ý tưởng của riêng tôi.
phuzion

Điều đó thật vớ vẩn. Sandy Bridge, được ra mắt vào tuần trước trong một phần máy chủ, có thể mở rộng lên tới 768 GB trong gói máy chủ 1U. Nếu bạn đang tìm cách gắn bó với các bộ phận của West 4.0.3, bạn có thể kết nối hai máy chủ IBM x3850 hoặc các máy chủ tương tự với nhau thông qua các liên kết QPI và cung cấp năng lượng cho chúng với ít hơn 4000 watt. (Đó là cùng một sức mạnh với bốn máy chủ 2U trong cùng một không gian rack.) Có lẽ AMD cũng có một số dịch vụ cạnh tranh trong không gian này.
jgoldschrafe

4
@jgoldschrafe Điều này đã được hỏi (và trả lời) 3 năm trước.
Matt Simmons

2

4 hoặc 8 ổ cắm Các máy chủ Opteron như HP DL585 hoặc DL785 hoặc Sun X4600 có thể chiếm một lượng lớn bộ nhớ trong phạm vi 128-256GB. Mặc dù chúng không rẻ, nhưng chắc chắn chúng không có trong thẻ giá 6 chữ số; Một chiếc Sun X4600 8 lõi, 32 lõi với 256GB RAM có giá khoảng 35.000 USD trên trang web của họ, và đó là khoảng lớn như loại hệ thống này có được. Bạn có thể sẽ thấy rằng bạn có thể có được hệ thống với giá thấp hơn một chút so với giá niêm yết trên trang web ..

Mặc dù các DIMM 4Gb có sẵn, nhưng chúng có xu hướng có giá cao hơn, do đó, việc đi lên một hệ thống tối đa với những thứ này sẽ đắt hơn đáng kể.

Nếu bạn muốn sử dụng một hệ thống loại này, bạn sẽ cần một O / S 64 bit. Hãy chắc chắn rằng bạn cũng nhận được một JVM 64 bit và kiểm tra xem nó có hoạt động tốt với ứng dụng của bạn không.


Tôi nghĩ bạn có nghĩa là một JVM 64 bit, không phải là một JVM 54 bit: P
tegbains

2

Tôi sẽ không lặp lại các đề xuất phần cứng (âm thanh) nhưng bạn có thể muốn xem Terracotta để xem nó có phù hợp với ứng dụng của bạn không.

http://www.terracotta.org/


2

Hãy cẩn thận với kích thước RAM như vậy. Chúng tôi đã tăng kích thước máy HP lên 64 GB (HP tuyên bố rằng máy có thể mất 128 GB), nhưng chỉ sau khi thêm một bảng tăng tốc bổ sung, trục làm mát, v.v. (sau khi trò chuyện nhiều với HP).
Chỉ vì một máy được chỉ định mất tối đa n GB, điều đó không có nghĩa là nó sẽ hoạt động mà không cần thay đổi thêm. Trong trường hợp của chúng tôi, không phải tất cả các mô-đun bộ nhớ bình thường đều hoạt động, bởi vì chúng bị nóng, chỉ có các mô-đun rất cụ thể hoạt động.


1

Chi phí của RAM không quy mô tuyến tính đến kích thước lớn. Chỉ vì tôi có thể mua DIMM 1GB với giá 15 đô la không có nghĩa là tôi có thể có một máy chủ với 128GB chỉ với 1.920 đô la ... để bắt đầu, bạn sẽ không tìm thấy bo mạch chủ có 128 khe DIMM trong đó.

Trên một kích thước nhất định (~ 8 đến 16 GB), bạn bắt đầu thấy các bo mạch chủ yêu cầu bộ đệm DIMM (FB-DIMM) đầy đủ, sẽ khiến bạn tốn nhiều hơn đáng kể trên mỗi GB so với bộ nhớ máy tính để bàn tiêu chuẩn.

Chúng tôi thường xuyên sử dụng các máy có bộ nhớ 128GB và giá đã giảm trong những năm gần đây, nhưng tôi không có bất kỳ con số hiện tại nào ... cũng như không có kinh nghiệm nào về việc JVM sẽ mở rộng quy mô của bộ nhớ đó như thế nào .


1

Bạn thực sự có rất nhiều tùy chọn, chỉ từ danh sách HP bạn có lưỡi kiếm BL680c của họ có thể mất 128GB, DL580 / 585 của họ có thể mất 256GB và DL785 của họ có thể mất 512GB. Một số IBM có dung lượng lên tới 256GB, một Dell cũng vậy.


0

Tôi nghĩ rằng bạn sẽ bắt đầu gặp phải các vấn đề về khoảng trống ở 64gb trên phần cứng truyền thống. Nếu bạn có thể mở rộng ra từ đó thì bạn sẽ ổn thôi nhưng tôi đoán là giải pháp hiệu quả hơn về mặt chi phí sẽ là đặt câu hỏi cho kiến ​​trúc của bạn. Cấp cho tôi nói rằng không có kiến ​​thức về những gì bạn đang làm nhưng tôi chỉ ném nó ra khỏi đó.


Thật không may, không có cách nào dễ dàng để đạt được yêu cầu về RAM, vì ứng dụng yêu cầu truy cập ngẫu nhiên rất nhanh vào một lượng lớn dữ liệu - lưu trữ dữ liệu trên đĩa sẽ không cắt giảm :-(

0

Giải pháp EC2 của Amazon có khả thi với bạn không? Nó chắc chắn sẽ là giải pháp hiệu quả nhất về chi phí.


Sợ không - dung lượng RAM tối đa mà máy chủ EC2 có thể hỗ trợ là 14GB, lần trước tôi vẫn kiểm tra.

0

Giả sử bạn có thể lắp nhiều bộ nhớ đó vào máy chủ (nếu tôi không nhầm, Linux trên phần cứng tiêu chuẩn bị giới hạn ở 64GB, nhưng tôi không chắc).

Trong hầu hết các hệ điều hành, JVM bị giới hạn trong không gian heap khoảng 1,4GB-1,6GB, một phần vì bộ nhớ liền kề là bắt buộc và một phần do hạn chế của hệ điều hành.

Do đó, RAM thêm sẽ không giúp bạn mở rộng một ứng dụng, nó chỉ cho phép bạn chạy nhiều phiên bản của ứng dụng. Tuy nhiên, sau đó bạn sẽ cần nhiều lõi và gặp nhiều vấn đề khác.

Bạn cần nhiều RAM để làm gì? Bạn có thể tìm thấy các cơ sở dữ liệu có thể được lưu trữ trong bộ nhớ hoặc sử dụng ổ RAM, nhưng tôi không biết JVM sẽ cho phép bạn lưu trữ nhiều thứ đó trong bộ nhớ.


Tôi khá chắc chắn rằng JVM không bị giới hạn trong không gian heap 1.6GB, tôi thường xuyên chạy nó với 10GB trở lên với JVM của Sun, tất nhiên nó phải ở trên máy 64 bit.

Tôi không đồng ý. Xem: unixville.com/~moazam Và một số câu hỏi ở đây trên SO. Tôi không chắc chắn về các JVM 64 bit, AFAIK không được hỗ trợ trên máy Mac 64 bit của tôi tại thời điểm này, không biết về Linux / Win 64 bit.

Tôi đang sử dụng một JVM 64 bit, trên thực tế, tôi đang sử dụng một JVM trên máy Mac. Apple đã phát hành Java 1.6 cho máy Mac 64 bit cách đây khá lâu.

Tôi không biết, vì Eclipse không chạy trên 1.6 đối với tôi ... Nhưng ok, tôi chấp nhận điều đó. RAM tối đa bạn có thể đặt vào máy của bạn là gì?

tôi sử dụng jvms 64 bit với đống 16 gb mọi lúc

0

Một cách điển hình để có được nhiều bộ nhớ hệ thống hơn là có được nhiều hệ thống hơn. Nếu bộ nhớ thực sự là nút cổ chai, thì đó không phải là bao nhiêu bộ nhớ bạn có, mà là dữ liệu của bạn được kết nối tốt như thế nào với bộ xử lý của bạn. Bạn sẽ cần phải mở rộng rất nhiều thứ để làm điều đó tốt cho bạn.

Để làm rõ, chỉ cần thêm một vài số không vào bộ nhớ hệ thống của bạn có thể sẽ không làm những gì bạn nghĩ nó sẽ làm. Những gì bạn sẽ tìm thấy là bây giờ toàn bộ tập dữ liệu của bạn vừa với bộ nhớ, hoặc thậm chí là một lát lớn hơn một chút, bạn sẽ gặp phải một số nút cổ chai khác, như vô hiệu hóa bộ đệm.

Cách thích hợp để mở rộng hệ thống của bạn là từ từ. Nếu bạn hiện đang chạy, trên hệ thống 4 lõi với 8 hợp đồng ram, trước tiên hãy tìm hiểu về ứng dụng của bạn để xem nó thực sự tiêu tốn thời gian ở đâu, sau đó thử va chạm với 12 hoặc 16 hợp đồng ram và xem cách kết quả hồ sơ đã thay đổi.

Câu hỏi thực sự là, tại sao bạn cần khoảng 100 lần bộ nhớ hệ thống, so với các tài nguyên khác, so với những gì thường có sẵn. Nếu kiểu truy cập dữ liệu của bạn theo một cách nào đó có thể dự đoán được, thì điều bạn nên làm là tăng băng thông đĩa, một số bộ điều khiển đột kích với một số đĩa sọc sẽ đạt được điều này.

Nếu mẫu truy cập dữ liệu của bạn thực sự, thực sự ngẫu nhiên, thì có lẽ có chỗ cho một thuật toán được tối ưu hóa tốt hơn.


0

Bạn có thể cần một máy chủ chuyên dụng cho nó.

Hãy thử nhìn ES7000 từ Unisys. Mô tả có lẽ là một chút lỗi thời.

Nó có thể hỗ trợ tối đa 512GB RAM. Đó là sử dụng O / S nổi tiếng, như Windows và Linux Enterprise.

Nó sẽ tiêu tốn của bạn ~ $ 30K cho cấu hình tiêu chuẩn, nhưng với Itanium và tất cả chuông và còi, nó có thể lên tới ~ $ 600K.

Với dung lượng RAM lớn như vậy, bạn có thể giữ được nhiều dữ liệu nóng mà không cần chạm vào dung lượng ổ đĩa.


0

Bạn rõ ràng cần Hệ điều hành 64 bit, nhưng bạn không ở trong Lãnh thổ siêu máy tính. Lấy ví dụ, PowerEdge R900 và R905 của Dell có sẵn với RAM 256 GB và sử dụng Bộ xử lý Intel Xeon / AMD Opteron tiêu chuẩn đơn giản và chạy Linux, Solaris hoặc Windows 2003 và 2008.

Tất nhiên, mua RAM trực tiếp tại Dell không hiệu quả lắm về chi phí (Họ muốn ~ 35.000 đô la Mỹ cho 32 x 8 GB, trong khi bạn có thể nhận được nó với giá khoảng 23.000 đô la Mỹ, có thể ít hơn), mặt khác bạn có thể muốn để đảm bảo rằng bạn có hỗ trợ phù hợp nếu bạn mua Máy chủ 40.000 đô la Mỹ (bạn không mong đợi RAM 256 GB sẽ rẻ, phải không? Nếu 128 GB cũng ổn, bạn có thể tiết kiệm ~ 12.000 đô la Mỹ).

Tôi không có kinh nghiệm về việc chọn Hệ điều hành nào, chạy Java hơn 100 GB thường không phải là việc tôi làm :)


0

Làm thế nào về một giải pháp hoàn toàn vượt trội: Cơ sở dữ liệu. Tôi biết bạn nói rằng nó sẽ quá chậm nhưng điều đó dựa trên những gì lưu trữ nó. Làm thế nào về việc lưu trữ nó trên một mảng RAID0 đủ.

400 đô la cho tiện ích, Pricewatch liệt kê các chip ở mức 55 đô la (tôi chưa kiểm tra tính tương thích) cho 4gb, vì vậy đó là 440 đô la khác cho bộ nhớ. Điều đó giúp bạn có được 32gb với giá $ 840. (Về lý thuyết, thiết bị có thể lấy chip 8gb với tổng số 64gb nhưng chưa có chip nào được hỗ trợ.)

RAID0 4 trong số này và bạn đang ở mức thấp trong phạm vi của mình với hơn $ 3000 + một hộp thông thường. 16 người trong số họ nhận được mức cao trong phạm vi của bạn với giá 14 nghìn đô la.

Cho dù điều này có thể sử dụng được hay không cũng tùy thuộc vào dữ liệu của bạn - những thiết bị này rất dễ bay hơi và sẽ làm cạn kiệt pin dự phòng trong vài giờ mặc dù chúng có thể sao lưu vào thẻ CF.


0

Tôi là một fan hâm mộ lớn của phương pháp "nhiều máy chủ giá rẻ". Bạn đã xem xét có thể chạy loại quy trình này trên nền tảng Eucalyptus, có sẵn trên Ubuntu 9.04 chưa? Có thể bạn có thể chạy loại chương trình này trên một vài máy tính trên mạng gigabit chuyên dụng của riêng họ với nhiều máy chủ chạy 8, 16 hoặc 32GB RAM và mở rộng theo kiểu tuyến tính, thêm nhiều máy chủ giá rẻ khi bạn cần.


0

Tôi đã đọc nhận xét của bạn về bản chất của ứng dụng của bạn, nhưng vẫn có thể, bạn có thể xem xét các giải pháp thay thế.

FusionIO là một thay thế thực sự. Chỉ cần có một cái nhìn . Với mức giá 10 nghìn đô la, nó vẫn rẻ hơn nhiều so với máy chủ cao cấp. Viết băng thông 1.0 GB / s - nghe thật điên rồ.

Một lựa chọn khác là SSD, tất nhiên. Chỉ trong trường hợp bạn đã thấy thông số kỹ thuật cho SSD Intel® X25-E Extreme:

Read Latency 75 microseconds
I/O Per Second (IOPS) Random 4 KB reads: >35,000 IOPS
Random 4 KB writes: >3,300 IOPS
Sustained sequential read: up to 250 MB/s
Sustained sequential write: up to 170 MB/s

Đặt một loạt chúng vào cuộc đột kích 10 mảng có thể cung cấp cho bạn đủ hiệu suất. Và với 400 USD trên 32 GB, nó rẻ hơn rất nhiều so với các máy chủ cao cấp thay thế.


0

Theo cách tương tự với đề xuất của FusionIO, bạn có thể nhận các thiết bị cho phép bạn nối RAM động với giao diện SATA. Một cái gì đó như thế này (Tôi không có kinh nghiệm về sản phẩm hoặc công ty, nó chỉ là tùy chọn đầu tiên xuất hiện trong tìm kiếm "Google Mua sắm").

Bạn có thể sử dụng một vài trong số này làm hệ thống tệp được gắn kết để lưu trữ dữ liệu bằng logic ứng dụng của bạn (nó được hỗ trợ bằng pin nên sẽ tồn tại khi khởi động và các lần ngừng hoạt động khác) hoặc bạn có thể sử dụng chúng làm không gian trao đổi và để nhân sử dụng quyết định cách sử dụng chúng ( mặc dù vì các nhân hệ điều hành thường được tối ưu hóa, giả sử tất cả các vị trí trao đổi là các đơn đặt hàng có cường độ chậm hơn và tiềm ẩn nhiều hơn so với RAM thực, điều này có thể sẽ phải điều chỉnh đáng kể để sử dụng tốt nhất cách sắp xếp như vậy).

Tùy chọn FusionIO sẽ có giá trị tốt hơn nếu bạn thực sự cần một cái gì đó lớn, loại ổ RAM này có thể tốt hơn như một sự thỏa hiệp. Tìm hiểu xem một máy chủ có khả năng RAM 128Gb trên bo mạch chủ tốt như thế nào và một vài trong số đó với đầy đủ 64Gb so sánh giá cả và hiệu năng thông minh với một máy chủ chuyên hỗ trợ trực tiếp 256Gb, tôi sẽ để lại cho người đọc!


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.