Ứng dụng tính toán phân tán trên nền tảng máy tính cá nhân

MỤC LỤC

Một số dự án đang thực hiện bởi BOINC

Đài thiên văn Arecibo thu thập những tin hiệu trên không trung, sau đó những tín hiệu này được gửi tới những máy tính tham gia vào dự án để tính toán và phân tích. Để tham gia vào dự án, người dùng phải tải về và cài đặt phần mềm tính toán trên máy của mình, mỗi khi máy tính rỗi, phần mềm sẽ tự động tải về một lượng dữ liệu (khoảng 300KB) và tiến hành tính toán.

Condor 2.2.1 Giới thiệu

Kiến trúc

Khi có một tài nguyên được cấp cho job, Scheduler sẽ gọi chương trình deamon Shadow, chương trình này chịu trách nhiệm quản lý việc thực thi job đó, đồng thời thực thi những công việc như: kiểm tra trạng thái hoàn thành, lập lịch lại trong các trường hợp job bị lỗi, hay thực thi những lệnh gọi hệ thống của những máy tính đang chạy job. Condor_schedd: Deamon này có nhiệm vụ miêu tả job trong Condor Pool, người dùng có thể gửi những job tới một condor_schedd đang chạy, những job này được lưu trong job queue, những demons khác có nhiệm vụ xem và thao tác tới job queue như: condor_submit, condor_q, condor_rm sẽ kết nối tới condor_schedd để thực thi công việc của nó.

Hình 2.2 Kiến trúc hệ thống Condor
Hình 2.2 Kiến trúc hệ thống Condor

Globus Toolkit

Giới thiệu

Globus Toolkit [6] là một sản phẩm của Gobus Alliance, một tổ chức quốc tế chuyên về phát triển những công nghệ dựa trên nền tảng tính toán lưới. Globus Toolkit là một phần mêm mã nguồn mở, cho phép xây dựng lưới tính toán. Nó cho phép người dùng chia sẻ khả năng tính toán, cơ sở dữ liệu hay những công cụ trong một tổ chức, cơ quan hay một vùng địa lý rộng lớn.

Kiến trúc

Grid Security Infrastructure (GSI) cung cấp phương thức cho việc xác thực người dùng và đảm bảo những kết nối, nó sử dụng những công cụ như SSL (Security Sockets Layer), PKI (Public Key Infrastructure) và X.509. Khi một gửi một Job tới hệ thống, một deamon Gatekeeper sẽ kiểm tra tính xác thực của , nếu xác thực, gatekeeper sẽ khởi chạy một Job manager để quản lý việc thực thi Job đó. Globus Access to Secondary Storage (GASS): GASS là một cơ chế truy cập file, nó cho phép các ứng dụng có thể thực hiện những thao tác với file từ xa như đọc, viết vào file.

MDS cung cấp cơ chế cho phép công bố và truy vấn những thông tin, các node có thể gửi những thông tin của nó lên server, và có thể truy vấn tới server để lấy những thông tin cần thiết. Sử dụng dịch vụ của Replica Management, một file có thể đăng ký với Replica Location Service (RLS) để tạo những bản sao của nó và lưu trữ tại nhiều nơi trên hệ thống. Trong RLS một file được gán với một Logical File Name (LFN), và được lưu trong một logical collection, những bản ghi của một file sẽ trỏ tới vị trí vật lý của file đó.

So sánh

Độ phức tạp hệ thống BOINC

Ngoài những chức năng như chuẩn FTP, GridFTP cung cấp khả năng xác thự dữ liệu truyền, được hỗ trợ bởi GSI, truyền song song và bán song song. Replica Location and Management: Thành phần này cho phép một file có thể được lưu trữ tại nhiều nơi trên hệ thống lưới.

Độ phức tạp cho người phát triển ứng dụng BOINC

Ứng dụng tính toán chủ yếu được viết bằng ngôn ngữ C, cung có thể viết bằng ngôn ngữ Java. Không cung cấp API cho người phát triển, các ứng dụng tính toán được chia thành nhiều loại. Mỗi loại được viết bằng một ngôn ngữ riêng và liên kết với thư viện của Condor để có thể triển khai tính toán trên hệ thống Condor.

Mỗi loại Job được mô tả trong những file mô tả job, những file này được lưu cùng thư mục với những file thực thi. Người dùng có thể dễ dàng tải phần mềm BOINC về để tham gia vào lưới tính toán. Khó cài đặt cho người sử dụng thông thường, thường sử dụng xây dựng một mạng lưới tính toán cho một tổ chức hay một công ty.

Kiến trúc hệ thống

  • Các thành phần chính
    • Ứng dụng tính toán 3.3.1: Định nghĩa
      • Task

        Khi một máy tính Node kết nối tới Server Task, nó sẽ tự động gửi những thông tin cấu hình của nó tới Server Task, Server Task dựa vào những thông tin cấu hình của từng máy và tốc độ kết nối mạng tới các máy tính đóng vai trò là Node, để gủi số lượng Task phù hợp với khả năng tính toán của từng máy. Chức năng quản lý quá trình tính toán giúp người quản lý có thể dừng hoặc khôi phục lại việc thực thi công việc tính toán, đồng thời đưa ra các thông kê về tiến trình thực thi của công việc tính toán, những số liệu được thống kê như hiệu suất công việc, thời gian tính toán trung bình, thời gian dự tính hoàn thành công việc. Những kết quả từ máy tính Node gửi lên có thể không chính xác, do việc tính toán sai ở máy tính Node.Validator là một chức năng kiểm tra kết quả gửi về từ Node có chính xác hay không, để thực hiện chức năng này Server Application yêu cầu Server Task gửi một task tới hai Node để thực thi và nhận kết quả gủi trả về từ các Node đó.

        Node Applet cung cấp chức nằng Task Chekpoint, chức năng này lưu lại trang thái hoàn thành của một Task, một Task có thể bị dừng thực thi do người dùng dừng việc chạy ứng dụng, hoặc cũng có thể do một sự cố đột ngột nào đó, để tăng hiệu năng thực thi của một Task và tránh trường hợp phải thực hiện lại Task nhiều lần do sự cố. Những bài toán này thường là những bài toán có khối lượng tính toán lớn, nếu thực thi trên một máy tính thì thời gian tính toán sẽ rất lâu, hoặc cần có những máy tính có khả năng tính toán cao, các máy tính loại này thường rất đắt.Vì vậy muốn tăng tốc độ tính toán cần có một lượng lớn máy tham gia vào việc tính toán, để làm được điều này, một ứng dụng tính toán cần được chia thành nhiều phần, mỗi phần được gọi là một Task, Task được gửi tới nhiều máy tính khác nhau để tính toán. Result là những kết quả tính toán của một task, khi một task được thực thi xong, result được gửi trả về cho Server Application thông qua Server Task, các kết quả này được Server Application xử lý, những kết quả được chấp nhận sẽ được lưu vào cơ sở dữ liệu trên ở.

        Hình 3.2 Kiến trúc chi tiết hệ thống
        Hình 3.2 Kiến trúc chi tiết hệ thống

        Cài đặt hệ thống

        • Server Task
          • Server Application
            • Node Applet

              Lớp JPPFNode là đối tượng thực thi task, lớp đối tượng này được gọi bởi Node thông qua Classloader, Một Node khi chạy dùng phương thức Classloader để load lớp JPPFNode về thực thi. + proportional: tính thời gian trung bình để thực thi task dựa vào việc tham gia của các node, từ đó gửi lượng task tương ứng với thời gian thực thi trung bình tới các node. Là một lớp trừu tượng cho tất cả task gửi tới server để thực thi, lớp này mô tả việc chia sẻ dữ liệu giữa các task, mô tả những ngoại lệ trong việc thực thi task, và mô tả kết quả của việc thực thi task.

              Giá trị này sẽ quyết định thứ tự ưu tiên của Server Task, Server Applicaton sẽ luôn sử dụng kết nối tới Server Task có độ ưu tiên cao nhất, khi kết nối tới Server Task có độ ưu tiên cao nhất bị ngắt, nó sẽ tạo kết nối tới Server Task có độ ưu tiên tiếp theo. Chúng ta có thể cấu hình cơ chế khôi phục khi kết nối giữa Server Application và Server Task gặp sự cố, với những thông tin cấu hình như trên, Server Application sẽ thực hiện việc khôi phục lại kêt nối sau 1s khi kết nối bị ngắt, nó sẽ cố gắng kết tạo kết nối trong 60s, sau 60 mà không tạo được kết nối nó sẽ chờ 1s sau để tiếp tục thử lại việc tạo kết nối. Là một applet, thực thi việc chạy Node, tạo kết nối tới Server Task, sử dụng cơ chế classloader tải lớp JPPFNode để thực thi task và gửi kết quả trả về Server Task.

              Bài toán cần được tính toán trên hệ thống tín toán phân tán để tăng năng suất tính toán, vì thế bài toán cần được chia ra làm nhiều phần nhỏ, mỗi phần nhỏ này là một task, một task ở đây chúng tôi định nghĩa là việc thử 100 khóa, kết quả trả về cho server sẽ là false nếu 100 khóa đó đều sai, nếu có khóa đúng kết quả trả về sẽ là true và giá trị của khóa đó. Do điều kiện vật chất không cho phép, chúng tôi đã cho chạy thử ứng dụng trên 3 máy, và chạy thử 5000 task, kết quả cho thấy hệ thống đã có thể chia task cho từng máy thực thi.

              Hình 4.1 Mô tả phân chia task tới những máy tính Node
              Hình 4.1 Mô tả phân chia task tới những máy tính Node