Làm thế nào để chia sẻ CPU hoặc RAM?


21

Trong mạng, chúng tôi chia sẻ Tệp (Trình điều khiển đĩa) hoặc Cơ sở dữ liệu. Nhưng làm thế nào chúng ta có thể chia sẻ CPU hoặc RAM qua mạng.


3
Vấn đề với việc làm này là so với độ trễ quy mô nano giây giữa CPU và RAM, một mạng cực kỳ chậm!
Phoshi

@Phoshi: Ngay cả với độ trễ được thêm bởi mạng, thiết lập như vậy thể nhanh hơn trao đổi dựa trên đĩa.
Piskvor

@Piskvor: Nhưng như bất cứ ai cũng có thể nói với bạn, trao đổi dựa trên đĩa là một thành tích khá lớn!
Phoshi

@Phoshi: Tôi đồng ý - thực sự là như vậy, và giải pháp tối ưu là "thêm bộ nhớ vật lý". Tất cả những gì tôi đang nói là việc phân trang ra một thiết bị nhanh (ví dụ như ramdisk) qua mạng nhanh vẫn có thể nhanh hơn so với phân trang ra đĩa vật lý. Nói cách khác: đây có thể là một thiết bị trao đổi nhanh hơn so với trao đổi trên phương tiện vật lý, mặc dù nó sẽ chậm hơn nhiều so với RAM vật lý.
Piskvor

1
@Piskvor: Hoàn toàn có lý, và ngay cả khi bạn sai, chắc chắn nó cũng có cùng độ lớn, vì vậy sẽ không tệ hơn đáng kể trong trường hợp xấu nhất. Tôi cho rằng có lẽ chỉ cần rẻ hơn để có nhiều bộ nhớ vật lý cục bộ hơn!
Phoshi

Câu trả lời:


21

Để thực hiện việc này, (các) chương trình truy cập tài nguyên CPU / RAM phải được thiết kế riêng để truy cập các tài nguyên đã nói. Một hệ thống được thiết lập theo cách này được gọi là một cụm và cách chia sẻ tài nguyên điển hình là với một giao thức gọi là MPI (giao diện truyền thông điệp). Nó là một bản tải xuống miễn phí và sử dụng nó với Linux có thể mang lại một cụm mạnh mẽ (thậm chí có thể là siêu máy tính) với chi phí tối thiểu, nhưng một lần nữa nó lại vô dụng trừ khi bạn có các chương trình được thiết kế đặc biệt để tận dụng MPI. Có một số hướng dẫn cụm tốt ngoài đó, nếu bạn vẫn quan tâm, bạn nên kiểm tra một.

Chỉnh sửa:

Tôi muốn giới thiệu hướng dẫn ở đây nếu bạn muốn thiết lập một cụm. Tôi đã tạo ra một cụm bằng cách làm theo hướng dẫn này khoảng một năm trước và nó hoạt động khá tốt. Hướng dẫn này hơi cũ, vì vậy một số tệp có thể không chính xác nơi hướng dẫn nói (đôi khi các tệp được di chuyển trong các bản phân phối Linux khác nhau / mới hơn) nhưng nếu bạn không quen với Linux thì đó không phải là vấn đề. Hướng dẫn sử dụng phiên bản MPI cũ hơn, nhưng tôi đã sử dụng phiên bản mới nhất và không có vấn đề nào không dễ giải quyết. Tùy thuộc vào những gì bạn đang làm thực sự có thể có một chương trình ngoài đó có thể tận dụng lợi thế của Bộ KH & ĐT. Tôi biết có một số chương trình mã hóa video và crunching lợi dụng MPI có thể được tải xuống từ các nguồn phổ quát.


xin vui lòng cho tôi biết một số tài liệu tham khảo.
MJH

1
@MJH xem câu trả lời đã được chỉnh sửa của tôi.
ubiquibacon

thank.nhưng hướng dẫn này hoạt động trên Linux và tôi sử dụng Windows.also, ứng dụng này phải viết theo MPI và ràng buộc của nó.
MJH

3
@MJH nếu bạn muốn làm việc với Windows thì bạn chỉ cần một thư viện MPI hoạt động với Windows, nhưng khái niệm này là như nhau. MPICH hoạt động với Windows hoặc bạn có thể xây dựng cụm Windows của mình bằng Windows HPC (đã tích hợp độ dẫn MPI) nếu bạn có một số đồng xu để bỏ. Mặc dù điều này không cho phép bạn sử dụng Windows, nhưng bạn vẫn sẽ phải sử dụng các chương trình được viết cho MPI, không có cách nào khác vào lúc này.
ubiquibacon

2
Cảm ơn câu trả lời này - hướng dẫn được giới thiệu dường như đã thay đổi địa chỉ thành uiowa.edu/mihpclab/hpcSystsemTechnicalReport/ trộm ... Chúc mừng!
sdaau

9

Bạn có thể chia sẻ RAM bằng đĩa RAM, nhưng trông giống như chia sẻ đĩa thông thường, ngoại trừ việc chúng nằm trong RAM của máy tính khác. Không có cách trực tiếp nào để một máy tính sử dụng RAM của máy tính khác như thể đó là RAM của chính nó, nhưng có một số cách để sử dụng RAM của máy tính khác. Thêm vào đó trong đoạn tiếp theo.

Đối với việc chia sẻ CPU, điều đó là có thể nhưng không có tiêu chuẩn duy nhất nào cho nó. Bạn không thể chỉ chia sẻ nó và để một máy tính khác lấy tài nguyên cần thiết. Thay vào đó, bạn cần phải có các ứng dụng được thiết kế đặc biệt có thể hoạt động trên nhiều máy tính cùng một lúc. Điều này thường được gọi là điện toán phân tán và được sử dụng bởi một số dự án nghiên cứu như SETI @ Home, Einstein @ Home, Climateprediction.net và nhiều dự án khác.

Về cơ bản các chương trình hoạt động theo cách có một máy chủ trung tâm phân phối công việc cần thực hiện. Máy tính trên mạng tải các đơn vị công việc từ máy tính trung tâm và xử lý chúng. Sau đó, máy tính trung tâm nhận kết quả từ khách hàng và hợp nhất chúng thành một kết quả gắn kết. Bằng cách này, máy tính "chia sẻ" tài nguyên CPU và RAM qua mạng. Nhược điểm của điều này là các chương trình cần phải được thực hiện theo cách để hoạt động qua mạng và ngay bây giờ máy tính phân tán không đủ phổ biến trong các sử dụng phổ biến cho máy tính nên chỉ có một số ít chương trình chuyên dụng hỗ trợ. Mặt khác, nó thường được sử dụng cho các mục đích khoa học vì rẻ hơn khi có được số lượng lớn máy tính cá nhân hoặc sân chơi 3 so với việc truy cập vào máy tính lớn.


Có phần mềm nào để chia sẻ ứng dụng của tôi trong mạng của tôi không? Không cần mạng nước ngoài! (ví dụ: tôi muốn kết xuất một tệp, PC của tôi sẽ hiển thị tệp này trong 7 ngày, nhưng tôi chia sẻ tệp này với mạng của mình và giảm kết xuất xuống còn 1 ngày?
MJH

@MJH Thật không may, tôi chưa nghe thấy bất kỳ chương trình nào có thể làm điều đó để kết xuất.
AndrejaKo

1
chia sẻ ramdisks là vô nghĩa mặc dù không phải là nó? Bạn nhận được sự biến động của ram, với sự chậm chạp của lưu trữ được gắn mạng
Journeyman Geek

1
@AndrejaKo Để chuyển mã video trực tiếp Tôi chưa từng nghe thấy bất kỳ điều gì (nhưng một số người đang làm việc tôi đã tìm thấy 1 hoặc hai dự án trong alpha / beta.) Tuy nhiên, đối với kết xuất 3D, tôi chưa thấy chương trình kết xuất 3D nào từ những năm 90 không hỗ trợ kết xuất mạng .
Scott Chamberlain

5

Có phần mềm nào để chia sẻ ứng dụng của tôi trong mạng của tôi không? Không cần mạng nước ngoài! (ví dụ: tôi muốn kết xuất một tệp, PC của tôi sẽ hiển thị tệp này trong 7 ngày, nhưng tôi chia sẻ tệp này với mạng của mình và giảm kết xuất xuống còn 1 ngày? - MJH 12 tháng 12 '11 lúc 1:19

Bạn đã rơi vào một vấn đề XY , bạn không nên hỏi "làm thế nào tôi có thể chia sẻ máy tính cpu và ram accros" nhưng "làm thế nào tôi có thể sử dụng nhiều máy tính để làm cho bản kết xuất của tôi sử dụng ZZZZZ nhanh hơn?"

Nó phụ thuộc rất nhiều vào phần mềm bạn đang sử dụng và nội dung bạn đang hiển thị (bạn đang chuyển mã video hay bạn đang kết xuất mô hình / video 3D?).

Để chọn một vài ví dụ, phần mềm 3D miễn phí Blender hỗ trợ kết xuất phân tán , nơi bạn có thể có nhiều máy tính cùng hoạt động để tạo một đầu ra. Nếu bạn đang thực hiện kết xuất video, một số người nhanh chóng tìm thấy dự án nguồn mở MediaEncodingCluster cho phép bạn kết xuất các tệp video và âm thanh bằng nhiều máy tính.


5

Hệ điều hành duy nhất tôi biết cho phép chia sẻ CPU / RAM là plan9. Ở đó bạn có thể xuất / gắn kết hầu hết mọi thứ. Điều này không có nghĩa là màn trình diễn là tốt, tất nhiên.


0

Nó sẽ là một tính năng tốt để chia sẻ cpu / ram cho các tác vụ qua mạng. Hiện tại chúng tôi vẫn bị ràng buộc một chút các khái niệm cũ để giữ các chương trình trong hộp nơi xảy ra sự cố, nhưng chúng tôi có thể cho phép nhiều cpus trên cùng một máy truy cập vào cùng một đoạn mã. Chúng tôi có một phương pháp (ít nhất) làm một cái gì đó như thế này. java trên các trang web hoạt động bằng cách sử dụng cả máy chủ và máy khách, nhưng nó vẫn bị khóa theo cách máy chủ-máy khách để thực hiện mọi việc (nơi máy chủ chứa hầu hết dữ liệu). Những gì chúng ta cần để có thể phân công nhiệm vụ cho các máy theo cách tương tự như khi chúng ta có nhiều cpus (ngoại trừ máy hoạt động cần phải có snip chương trình và snip dữ liệu được giao. nếu bản thân các nhiệm vụ không có tính chất đơn giản và có thể dẫn đến các nút thắt mới hình thành. Tôi thích ý tưởng đó '

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.