MPICH-V tập trung vào 2 vấn đề hiệu năng căn bản: thứ nhất, khi nghiên cứu hiệu năng khôi phục của giao thức ghi lại thông điệp cho thấy giao thức này thường không đảm bảo giảm lượng chi
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TP.HCM
KHOA: KHOA HỌC MÁY TÍNH
BÀI THU HOẠCH MÔN: ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY
Trang 2LỜI CẢM ƠN
Đầu tiên, người thực hiện xin chân thành cảm ơn PGS.TS Nguyễn Phi Khứ, Thầy đã tận tình giảng dạy và truyền đạt những kiến thức vô cùng bổ ích giúp bài thu hoạch này được hoàn thành đúng thời hạn Thầy đã giới thiệu đến học viên những kiến thức bổ ích về Grid computing, Cloud computing, qua đó học viên đã nắm bắt được những kiến thức nền tảng và áp dụng xây dựng những ứng dụng cụ thể vào công việc hiện tại.
Xin chân thành cảm ơn quý thầy cô ở phòng đào tạo Sau đại học đã tạo những điều kiện thuận lợi nhất trong học tập cũng như công tác đào tạo giúp hoàn thành bài thu hoạch này.
Cảm ơn các anh chị học viên cùng khóa và các anh chị học viên những khóa trước đã cung cấp những nguồn tài liệu phong phú góp phần quan trọng trong việc hoàn thành bài thu hoạch này.
Về bài thu hoạch, người thực hiện đã cố gắng vận dụng những kiến thức đã học được ở lớp, cái tài liệu liên quan do thầy và các bạn cung cấp cũng như những tài liệu đã tìm kiếm được để tìm hiểu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song Kính mong thầy cô cùng các bạn góp ý thẳng thắn giúp bài thu hoạch được hoàn thiện hơn.
Trang 3LỜI NÓI ĐẦU
Giao thức phục hồi lỗi dùng ghi lại thông điệp là giải pháp tốt cho việc xây dựng các ứng dụng có khả năng chống lỗi Nhiều giao thức kiểu này được
sử dụng trong thực tiễn cho các ứng dụng đòi hỏi độ tin cậy cao Giao thức này tồn tại 2 vấn đề sau: thứ nhất, giao thức khôi phục đã có chỉ hỗ trợ các giao thức phục hồi đơn tiến trình; thứ hai, hiệu năng giao thức này trong thực
tế không cao.
Để giải quyết vấn đề trên môi trường truyền thông chống lỗi MPICH-V
sẽ được sử dụng Môi trường này được phát triển tại trung tâm nghiên cứu tại truờng đại học LRI Kiến trúc MPICH-V dựa trên nền điều khiển thống nhất các sự kiện không xác định (các sự kiện không xác định -theo định nghĩa là các sự kiện chuyển giao thông điệp giữa các tiến trình) Kiến trúc này cho phép mô tả giao thức phục hồi như một chương trình điều khiển sự kiện MPICH-V cài đặt dễ dàng, tính mở đối với các hệ thống khác với chi phí lập trình cho việc tích hợp không lớn.
MPICH-V tập trung vào 2 vấn đề hiệu năng căn bản: thứ nhất, khi nghiên cứu hiệu năng khôi phục của giao thức ghi lại thông điệp cho thấy giao thức này thường không đảm bảo giảm lượng chi phí trong quá trình giải phóng lỗi, khôi phục nhanh và ngừa lỗi (đây là nhược điểm lớn trong các hệ thống chống lỗi); thứ hai, việc đánh giá hiệu năng của giao thức lưu ảnh tiến trình (vấn đề truyền thông gây ra bởi việc lưu trữ các ảnh tiến trình - checkpointing induce communication- CIC) cho thấy các giao thức CIC trong thực tế hiệu quả thấp Môi trường chống lỗi MPICH-V đang phát triển các giao thức mới có khả năng giảm chi phí kể trên
Trang 4
MỤC LỤC
LỜI CẢM ƠN 1
LỜI NÓI ĐẦU 2
DANH MỤC HÌNH 4
NỘI DUNG 1
I Giới thiệu 1
I.1 Tổng quan về kỹ thuật chống lỗi 2
I.2 Tổng quan nghiên cứu môi trường chống lỗi MPICH-V 3
II Phân tích môđun chống lỗi 4
II.1 Mô hình chống lỗi 5
II.2 Phân tích giao thức chống lỗi bằng cách ghi lại thông điệp 7
II.3 Kiến trúc của MPICH-V 9
II.3.1 Giới thiệu kiến trúc 10
II.3.2 Chức năng các khối cơ bản 12
II.3.2.1 Môi trường truyền thông chống lỗi theo chuẩn MPI 12
II.3.2.2 Thư viện truyền thông dựa trên chuẩn MPI 14
II.3.3 Giao thức truyền thông giữa các khối 16
II.3.3.1 Giao thức truyền thông điệp 16
II.3.3.2 Giao thức chống lỗi 21
KẾT LUẬN 33
TÀI LIỆU THAM KHẢO 34
Trang 5DANH MỤC HÌNH
Hình 1: Mô hình môi trường truyền thông chống lỗi 5
Hình 2: Tiến trình p trong pha thực thi bình thường 7
Hình 3: Tiến trình p trong pha khôi phục 8
Hình 4: Kiến trúc chống lỗi MPICH-V 10
Hình 5 Giao thức giữa Bộ điều phối và Daemon truyền thông 17
Hình 6 Mô phỏng khởi tạo giữa Daemon rank 0 và rank 1 19
Hình 7 Truyền thông giữa Daemon truyền thông với tiến trình MPI 20
Hình 8: Bộ điều phối thăm dò lỗi tiến trình MPI 22
Hình 9: Giao thức phục hồi Daemon lỗi 23
Hình 10: Giao thức phục hồi sự kiện giữa Daemon truyền thông và Bộ ghi sự kiện 24
Hình 11: Giao thức khôi phục tiến trình MPI 25
Hình 12: Tiến trình MPI thực hiện đổ ảnh tiến trình và lưu 27
Hình 13: Giao thức gửi ảnh tiến trình tới Bộ lưu trữ ảnh 29
Hình 14: Giao thức nhận ảnh từ Bộ lưu trữ ảnh tiến trình 31
Trang 6NỘI DUNG
I Giới thiệu
Cuộc cách mạng tính toán những năm 90 coi các bó máy trạm tính toándùng thay thế cho các máy mainframe như là tư tưởng cơ bản cho hạ tầng tínhtoán Với môi trường này, ta có thể dễ dàng phát triển các thế hệ ứng dụngphân tán trong nhiều lĩnh vực như: vũ trụ học (mô phỏng các vụ va chạm trongdải ngân hà); hoá học (xác định thành phần cấu trúc điện tử trong hạt nhân);vật lý (tính toán độ linh động của chất lỏng); bảo mật máy tính (bẻ hệ thống
mã hoá RSA); và khí tượng học (dự báo thời tiết) Các ứng dụng này yêu cầuchạy dài ngày, tính toán lượng lớn các công việc, được cấu trúc thành nhómtiến trình trao đổi với nhau để thực thi trên các máy tính khác nhau nằm trongtrạm tính toán
Để chống lỗi cho ứng dụng, các giao thức khôi phục như lấy ảnh tiếntrình (checkpointing) và ghi lại thông điệp (message logging) đem lại nhiềutriển vọng Các giao thức khôi phục cũng tương đối dễ cài đặt Chúng tuântheo mô hình lập trình theo kiểu gửi/nhận (send/receive) Đây là mô hìnhchung cho các ứng dụng phân tán theo kiểu truyền thông điệp Do phải cài đặtnhiều, các giao thức khôi phục này rất ít được sử dụng để xây dựng các ứngdụng yêu cầu độ tin cậy cao Điều này do 2 nguyên nhân sau:
Tích hợp hiệu quả các giao thức khôi phục với một ứng dụng sẽ rấtphức tạp Một vài giao thức cài đặt hiện nay chỉ hỗ trợ giao thức phụchồi đơn tiến trình Bên cạnh đó là giới hạn tương thích của các giaothức với các nhu cầu cần thiết trong các ứng dụng khác nhau Vì vậy,các nhà phát triển ứng dụng phải lo lắng về sự phức tạp trong việc xâydựng các ứng dụng của họ Họ cũng sẽ phải hiểu thế nào là chống lỗitrong môi trường phân tán
Hiệu năng các giao thức phục hồi trong thực tế không được đánh giácặn kẽ Đề xuất cho các giao thức mới chủ yếu tập trung thiết kế giaothức, trong khi cung cấp rất ít đánh giá để thể hiện ưu việt do cách tiếp
Trang 7cận mới mang lại Nên nhà phát triển ứng dụng có rất ít các đề xuất lựachọn từ các giao thức khôi phục, để tìm ra giao thức tốt nhất phù hợpvới các đặc điểm riêng của từng ứng dụng chuyên biệt.
Đồ án này sử dụng MPICH-V Ưu điểm của môi trường này là tính mở
để cài đặt giao thức chống lỗi Bên cạnh đó, MPICH-V sử dụng với một vàiứng dụng để nghiên cứu hiệu năng của giao thức trong thực tế
I.1 Tổng quan về kỹ thuật chống lỗi
Việc chống lỗi cho một tiến trình yêu cầu vài bản sao tiến trình cả vềthời gian và không gian:
Kĩ thuật dựa trên bản sao theo không gian lỗi bằng cách nhân bản tiếntrình để ít nhất một trong các bản sao vẫn có giá trị khi xảy ra lỗi, vàbằng cách cùng điều phối sự thực thi các bản sao này Kĩ thuật này càiđặt trên giao thức checkpoint các tiến trình
Kĩ thuật dựa trên bản sao theo thời gian, chống lỗi bằng cách khôi phụccác thực thi mất kiểm soát của tiến trình lỗi Trong suốt thời gian giảiphóng lỗi, một tiến trình ghi lại các thông tin về các sự kiện nó thựchiện Các thông tin được ghi lại này được sử dụng trong suốt quá trìnhkhôi phục để chạy lại các thực thi đã mất Kĩ thuật này cài đặt trên giaothức ghi lại thông điệp
Hai lớp kĩ thuật này đòi hỏi chi phí rất nhiều trong quá trình thực hiện
Kĩ thuật dựa trên bản sao không gian mang lại sự thực thi liên tục, nhưng gây
ra chi phí cao về hiệu năng Cần điều phối sự thực thi của các bản sao và yêucầu sử dụng một số lượng lớn tài nguyên Trái lại, kĩ thuật dựa trên các bảnsao thời gian gây ra chi phí thấp trong giải phóng lỗi và sử dụng ít tài nguyênhơn Tuy nhiên, tốc độ khôi phục lại chậm Lựa chọn một trong hai kĩ thuậtnày để chống lỗi phải dựa vào yêu cầu của ứng dụng Trong phần mềm điềukhiển quỹ đạo vệ tinh, chỉ một lỗi cũng có thể dẫn đến tai nạn thảm khốc Việcchống lỗi một cách tuỳ biến và cung cấp môi trường thực hiện liên tục là yêucầu cần thiết Ứng dụng này nên chọn phương pháp bản sao không gian Tuy
Trang 8nhiên, các ứng dụng khẩn cấp lại không nên chọn kĩ thuật này Với những ứngdụng đó, việc tối thiểu hoá chi phí cho chống lỗi được đưa lên hàng đầu Vìvậy, nên chọn kĩ thuật bản sao thời gian.
Các ứng dụng phân tán theo mô hình yêu cầu-phục vụ (client-server),
để giảm chi phí chống lỗi có thể sử dụng cách tiếp cận theo bản sao thời gian.Tuy nhiên, để khai thác tiềm năng tính toán cluster, các ứng dụng trực tuyến(online) thường theo mô hình yêu cầu-phục vụ Ứng dụng này sử dụng mộtnhóm các tiến trình trao đổi dữ liệu theo mô hình điểm-điểm Với kiến trúcnhư vậy, để giảm chi phí sao lưu nên sử dụng các giao thức phục hồi ghi lạithông điệp
I.2 Tổng quan nghiên cứu môi trường chống lỗi MPICH-V
Chống lỗi là vấn đề rất cần thiết cho các ứng dụng phân tán chạy vôhạn Môi trường truyền thông MPICH-V xây dựng trên các giao thức khôiphục sẵn có với 2 mục đích:
Phát triển môi trường dễ dàng cài đặt bất cứ giao thức phục hồi nào
Xác định và chỉ ra hạn chế về hiệu năng của các giao thức khi chúngđược sử dụng trong thực tế
Để đạt được các tiêu chí này, MPICH-V được thiết kế thành môitrường có tính mở cho việc phát triển và hoàn thiện các giao thức phục hồi,sau đó dùng MPICH-V để nghiên cứu về hiệu năng của các giao thức chốnglỗi
MPICH-V được phát triển nền đặc tả thống nhất các giao thức phụchồi Nó cho phép xác định tập các chức năng mà các giao thức cần có Môitrường xây dựng dựa trên các giao thức phục hồi Các giao thức này rất đadạng, chia sẻ cùng cấu trúc điều khiển sự kiện và tập trung vào cùng một tậpcác sự kiện liên quan Các giao thức là các điều khiển sự kiện, tương ứng vớicác xử lí khác nhau mỗi khi có sự kiện liên quan xảy ra (giống hoạt động củacác máy trạng thái) Có 5 kiểu sự kiện liên quan tới các giao thức khôi phục:
Trang 9 Các sự kiện không xác định
Các sự kiện sinh ra sự phụ thuộc
Các sự kiện chuyển giao đầu ra
Các sự kiện checkpoint
Các sự kiện phát hiện lỗi
Các sự kiện được ánh xạ vào không gian 5 chiều và các giao thức đượcánh xạ vào các điểm trong không gian này Chỉ cần thay đổi nhỏ các giá trịtrên từng trục tọa độ, có thể dịch chuyển trạng thái của hệ thống từ 1 điểm tớimột điểm khác, từ một giao thức này đến một giao thức khác MPICH-V càiđặt các giao thức khôi phục dựa trên sự dịch chuyển trạng thái của hệ thốngtrong không gian này Cách tiếp cận này cho phép phát triển các giao thức mớibằng cách kết hợp sự chuyển dịch trạng thái theo các cách khác nhau Đâycũng chính là mục tiêu phát triển và hoàn thiện tiếp công cụ này
Hiện nay MPICH-V đang được tích hợp MPICH (chuẩn MPI) Vì vậy
mà các ứng dụng MPI có thể chạy ngay trên MPICH-V mà không cần phảichỉnh sửa gì ngoài việc sử dụng chương trình dịch mpicc sau khi được tíchhợp Hiệu năng của các giao thức phục hồi hiện nay có thể được đánh giá quacác ứng dụng có đòi hỏi cao về tài nguyên như các tải đo hiệu năng của NPB.Tính ưu việt của MPICH-V thể hiện trong 2 vấn đề hiệu năng cơ bản sau:
Hiệu năng phục hồi của giao thức ghi lại thông điệp
Sự tiêu tốn tài nguyên mạng của giao thức lưu trữ ảnh tiến trình
Nghiên cứu trước đây về chống lỗi chỉ ra cách thiết kế các giao thứcchống lỗi như checkpointing, pessimistic, optimistic và causal Các giao thứctrên đem lại nhiều lựa chọn cho các nhà phát triển ứng dụng chấp nhận mộtgiao thức phù hợp với mỗi ứng dụng Các nghiên cứu cho thấy, với các ứngdụng không thường xuyên tương tác với môi trường ngoài, để chống lỗi tiếntrình có thể dùng checkpointing và optimistic Pessimistic và causal phù hợp
Trang 10Daemon truyền thông + nút tính toán
hơn với các ứng dụng trao đổi nhiều với môi trường và không chấp nhận chạylại Nếu yêu cầu khôi phục tiến trình đơn giản và nhanh chóng thì pessimistic
là phù hợp Các ứng dụng yêu cầu tối thiểu hóa chi phí trong quá trình giảiphóng lỗi nên dùng causal hay optimistic
II.1 Mô hình chống lỗi
Hình 1: Mô hình môi trường truyền thông chống lỗi
Môi trường chống lỗi MPICH-V được xây dựng từ các thành phần khácnhau Các thành phần này trao đổi với nhau trong môi trường thống nhất Dựavào hình 1, ta phân chia các thành phần này làm 3 loại:
Thành phần điều phối: thành phần này chỉ duy nhất một chương trình
gọi là Bộ điều phối Chức năng chính của Bộ điều phối là nhận đặc tả
Trang 11job gửi tới, sau đó khởi tạo toàn bộ môi trường truyền thông phục vụcho việc chạy job.
Các thành phần phụ phục vụ chống lỗi:
o Bộ lập lịch lấy ảnh tiến trình (Checkpoint Scheduler) Thành phầnnày có chức năng điều phối việc lấy ảnh của các tiến trình MPItrong lúc thực thi
o Bộ ghi sự kiện (Event Logger) Thành phần này là bộ chứa tin cậydùng lưu các thông tin sự kiện trao đổi thông điệp giữa các tiếntrình
o Bộ lưu ảnh tiến trình (Checkpoint Server) Thành phần này dùng đểlưu trữ các ảnh tiến trình phục vụ chạy lại các tiến trình lỗi Cácthành phần này phải được chạy trên các máy có độ ổn định cao
Các thành phần tính toán:
o Daemon truyền thông (Communication Daemon) Các Daemon này
là các tiến trình trung gian phục vụ cho trao đổi thông điệp của tiếntrình MPI Có nghĩa là các tiến trình MPI không trực tiếp trao đổithông điệp mà qua các Daemon trung gian Mỗi Daemon quản límột tiến trình MPI, mỗi tiến trình MPI thuộc về một Daemon truyềnthông
o Các nút tính toán (Computing Node) Nút tính toán chính là các tiếntrình MPI chạy song song Các tiến trình này được chạy từ cácchương trình MPI đã biên dịch trên các máy trạm
II.2 Phân tích giao thức chống lỗi bằng cách ghi lại thông điệp
Môi trường chống lỗi MPICH-V cài đặt giao thức ghi lại thông điệpbên phía tiến trình gửi Theo giao thức này, khi một thông điệp được gửi đi,một bản sao của thông điệp được lưu lại trong bộ nhớ ở phía tiến trình gửi (bộnhớ lưu trữ này nằm trong Daemon truyền thông), còn các thông tin liên quanđến trao đổi được ghi lại trong một phương tiện lưu trữ tin cậy (MPICH-V sử
Trang 12dụng Bộ ghi sự kiện để lưu trữ các thông tin này) Sau đây là hình vẽ biểu diễntruyền thông giữa các tiến trình trong lúc thực thi.
Hình 1: Tiến trình p trong pha thực thi bình thường
Các tiến trình thực thi sử dụng đồng hồ cục bộ để sắp xếp thứ tự cácthông điệp (đồng hồ này có thể hiểu là bộ đếm các sự kiện trao đổi thông điệp-
Bộ đếm này đặt trên Daemon truyền thông) Khi một tiến trình gửi hoặc nhậnmột thông điệp nó tự tăng bộ đếm logic cục bộ của nó lên (chính bộ đếm nàygán giá trị SSN -Send Serial Number- và RSN –Receive Serial Number- chocác tiến trình) Mỗi thông điệp được gửi từ tiến trình q cho tiến trình p đều cómột id riêng (xem hình 2) Bản sao của thông điệp gửi được lưu giữ trong bộnhớ của q Khi p nhận được thông điệp m, nó chuyển thông điệp đó cho tiếntrình MPI xử lý, sau đó nó ghi thông tin (id, l) vào Bộ ghi sự kiện, trong đó, l
là giá trị hiện thời của bộ đếm logic cục bộ của tiến trình p (chính là giá trịRSN hiện thời của nó) Trong quá trình thực hiện giao thức trên, tiến trình pkhông được gửi bất kỳ một thông điệp nào cho các tiến trình khác trước khi sựkiện nhận thông điệp được ghi lại hoàn toàn Các thông điệp gửi đi đều đượcđóng gói kèm theo các thông tin như đã trình bày ở trên như: SSN của tiếntrình gửi, id của tiến trình gửi Hình 3 biểu diễn tiến trình p trong trường hợptiến trình bị lỗi
Trang 13Hình 2: Tiến trình p trong pha khôi phục
Khi tiến trình p bị lỗi, nó được thực hiện lại từ trạng thái trước đó (lưutrong ảnh tiến trình nằm trên Bộ lưu trữ ảnh tiến trình) (xem hình 3) Sau đó,danh sách các cặp (id, l) của các thông điệp mà p đã nhận sẽ được Bộ ghi sựkiện gửi lại cho p (pha A) Tiếp theo, tiến trình p gửi yêu cầu đến tất cả cáctiến trình khác, yêu cầu các tiến trình này gửi lại các thông điệp cho nó kể từthông điệp có l nhỏ nhất (pha B) Các tiến trình khác không cần chạy lại màchúng gửi lại các bản sao thông điệp mà chúng đã ghi trong bộ nhớ tạm dànhcho tiến trình p Giống như chúng đang thực hiện bình thường Cặp thông tin(id, l) và bộ đếm logic cục bộ (local logic clock) được sử dụng để xác địnhchính xác thông điệp nào được gửi và nhận lại theo đúng thứ tự trước đây.Nếu không đúng thứ tự thì thông điệp đó sẽ bị loại bỏ và phát lại từ đầu (phaC) Sau khi nhận hết lại các thông điệp thì tiến trình p sẽ tiến tới điểm ngaytrước khi bị lỗi và lại tiếp tục hoạt động bình thường Vì lí do hiệu năng, việclưu bản sao của mọi thông điệp trong toàn bộ quá trình thực thi là không hợp lí
về mặt lưu trữ Nên ngay sau khi tiến trình được lấy checkpoint trạng thái hiệntại của nó, tiến trình này không cần các tiến trình khác gửi lại các thông điệp
đã nhận trước lần checkpoint này Để giảm số lượng thông điệp lưu trữ, cần sửdụng thêm một thành phần dọn rác để giải phóng cho các thiết bị lưu trữ cácbản sao thông điệp này
II.3 Kiến trúc của MPICH-V
Mục này sẽ trình bày 3 vấn đề:
Giới thiệu kiến trúc môi trường chống lỗi MPICH-V.
Các chức năng của các khối cơ bản.
Các giao thức truyền thông giữa các khối.
Trang 14may2.parallel may3.parallel may4.parallel may5.parallel
maytest.parallel
Bộ điều phối
tiến trình truyền thông
Bộ lưu trữ ảnh checkpoint
tiến trình truyền thông
tiến trình truyền thông
II.3.1 Giới thiệu kiến trúc
Hình 3: Kiến trúc chống lỗi MPICH-V
Các thành phần được bố trí cụ thể lên các máy trạm như sau:
maytest.parallel
Trang 15 Bộ điều phối được bố trí trên máy maytest là máy khởi tạo việc chạy
job Máy maytest là server có độ tin cậy cao, vì thế Bộ điều phối đượcđặt trên máy này Trong trường hợp xấu nhất, máy maytest chết thì coinhư job thực thi phải chấm dứt Bộ điều phối sẽ triệu gọi từ xa khởi tạocác thành phần phụ và các tiến trình tính toán như hình vẽ
Bộ lưu trữ ảnh tiến trình cũng bố trí trên máy server tin cậy là máy maytest Thành phần này do Bộ điều phối khởi tạo Với chức năng lưu trữ các ảnh tiến trình, nó sẽ kết nối với các Daemon truyền thông để
nhận và gửi ảnh tiến trình Trên hình vẽ, nó kết nối với 4 Daemontruyền thông trên 4 máy
Bộ lập lịch lấy ảnh tiến trình cũng chạy trên máy maytest Vì các thành
phần phụ này yêu cầu chạy trên các máy tin cậy cao Bộ lập lịch này cóchức năng điều phối việc lấy ảnh của các tiến trình MPI Sự điều phối
này thông qua kết nối với 4 Daemon truyền thông tương ứng 4 tiến trình MPI
Bộ ghi sự kiện chạy cùng máy với hai thành phần phụ kia Trong quá
trình phục vụ, Bộ ghi sự kiện sử dụng các kết nối tới các Daemontruyền thông để đón nhận các thông tin về các sự kiện gửi nhận thôngđiệp từ mỗi Daemon truyền thông Theo lý thuyết, thông tin này là cặp(id, l) của từng thông điệp đã nghiên cứu trong phần trước
Daemon truyền thông : Với job chạy 4 tiến trình MPI, Bộ điều phối sẽ khởi tạo 4 Daemon truyền thông lên từng máy trạm tính toán Sau khi
khởi tạo, các Daemon truyền thông sẽ kết nối với các thành phần phụ(xem hình 4) Tiếp theo mỗi Daemon khởi tạo tiến trình MPI do nóquản lí Cuối cùng, khi các tiến trình MPI bắt đầu hoạt động, cácDaemon truyền thông trở thành các tiến trình trung gian gửi nhận thôngđiệp Trong quá trình gửi nhận, mỗi Daemon sẽ lưu các bản sao thôngđiệp trước khi gửi vào bộ nhớ, gửi thông tin về sự kiện gửi nhận lên cho
Bộ ghi sự kiện
Trang 16 Tiến trình MPI được khởi tạo từ các Daemon truyền thông trên mỗi
máy Mỗi tiến trình MPI là một thể hiện của file chạy do người lập trìnhbiên dịch đặt trên mỗi máy Sau khi khởi tạo, các tiến trình MPI traođổi thông điệp gián tiếp thông qua Daemon truyền thông của nó
II.3.2 Chức năng các khối cơ bản
Để có thể chạy được các ứng dụng MPI đã lập trình trước đây màkhông phải sửa đổi, MPICH-V ngoài việc cung cấp môi trường thực thi nhưtrình bày phần trên, nó còn cung cấp một thư viện truyền thông điệp dựa trênchuẩn MPI Do vậy môi trường này được chia làm 2 khối cơ bản:
Môi trường truyền thông chống lỗi: gồm các thành phần nêu ở trên
Thư viện truyền thông điệp theo chuẩn MPI: thư viện này được cài đặt
qua giao diện ADI (Abtract Device Interface)
II.3.2.1 Môi trường truyền thông chống lỗi theo chuẩn MPI
Các thành phần cơ bản trong môi trường chống lỗi MPICH-V gồm:
đặc tả cho job đó Dựa vào các file đặc tả này, Bộ điều phối sẽ sinh các thành
phần phụ phục vụ cho việc chạy job như thành phần lưu trữ ảnh tiến trình, thành phần ghi sự kiện, thành phần điều khiển việc lấy ảnh tiến trình và các Daemon truyền thông cho từng tiến trình MPI Ngoài ra Bộ điều phối còn sử
dụng các socket kết nối với các Daemon truyền thông để phát hiện lỗi của cáctiến trình MPI Đồng thời dựa trên các số hiệu (rank) của tiến trình MPI bị lỗi,
Trang 17Bộ điều phối phục hồi Daemon truyền thông, Daemon sẽ chạy lại tiến trình
MPI lỗi dựa trên ảnh tiến trình đã lưu trên thành phần lưu trữ ảnh tiến trình.
b Bộ lưu trữ ảnh tiến trình
Được chia làm 2 phần:
Thành phần Server dùng để lưu trữ các ảnh tiến trình
Thành phần bộ lập lịch điều phối sự kiện checkpoint cho các tiến trìnhchạy job Server lưu ảnh tiến trình được đặt trên các máy tin cậy caodùng để lưu trữ ảnh các tiến trình MPI và bộ nhớ lưu trữ các bản saothông điệp trên Daemon truyền thông (gắn các bản sao thông điệp vàoảnh tiến trình lưu trữ để phục vụ chống lỗi đa tiến trình) Việc thực hiệnlấy ảnh, tiến trình MPI sử dụng bộ thư viện chuẩn Condor Cơ chế lấyảnh như sau: khi tiến trình MPI nhận một yêu cầu checkpoint từDaemon truyền thông của nó, tiến trình này sẽ dùng cơ chế fork để sinh
ra 2 tiến trình Tiến trình gốc tiếp tục thực thi tính toán bình thường.Đồng thời, tiến trình bản sao được fork ra (gọi là tiến trình con) sửdụng thư viện Condor gửi ảnh tiến trình qua pipe về cho Daemontruyền thông của nó Khi sự kiện lấy ảnh được kích hoạt bởi Daemontruyền thông, tiến trình MPI phải đảm bảo không có các hoạt độngtruyền thông vào thời điểm fork thêm tiến trình
Trang 18 Giao thức ghi lại thông điệp bên phía tiến trình gửi khiến bộ nhớ sửdụng trong các Daemon truyền thông rất lớn và cả ở trong Bộ lưu trữảnh tiến trình Bởi vì, các thông điệp sau khi lưu vào vùng nhớ trên cácDaemon bên gửi thì sau khi lấy ảnh checkpoint của tiến trình MPI, cácthông điệp này cũng được gắn vào ảnh tiến trình và lưu vào thiết bị lưutrữ do Bộ lưu ảnh tiến trình quản lí Điều phối kích hoạt checkpointkhông chỉ cần thiết để tránh ảnh hưởng tới thời gian tính toán mà cònphải đảm bảo tối ưu không gian lưu trữ các thông điệp được ghi lại.
lấy trạng thái Daemon truyền thông (tức là chuyển danh sách các thôngđiệp lưu về cho Bộ lưu trữ ảnh) gây ra giao vận trên mạng tương ứngbằng kích cỡ các thông điệp được phát đi Giao vận này sẽ cạnh tranhvới giao vận truyền thông ứng dụng trên băng thông mạng, vì vậy cànggiảm được số lần checkpoint càng tốt
II.3.2.2 Thư viện truyền thông dựa trên chuẩn MPI
MPICH là một tầng cài đặt của chuẩn MPI MPI API (giao diện lậptrình ứng dụng MPI) trong MPICH được cài đặt bởi tầng giao diện ADI(Abstract Device Interface) dùng phổ biến trong các môi trường tính toán songsong Giao diện ADI lại được cài đặt trên các tầng khác: tầng giao thức nhưshort, eager, rendez-vous protocols Cuối cùng, các tầng giao thức này lại càiđặt trên tầng nguyên thuỷ: giao diện kênh truyền thông (channel interface).Môi trường chống lỗi MPICH-V phải xây dựng thư viện truyền thông ở tầngnguyên thuỷ này
Cũng giống như kênh truyền thông P4 (truyền thông chuẩn của MPICHdùng qua giao thức TCP/IP ), các tiến trình MPI sẽ không kết nối trực tiếp vớinhau trên các nút mạng khác nhau Việc liên hệ giữa các tiến trình trên các núttính toán là nhiệm vụ các Daemon truyền thông chạy trên cùng máy có tiếntrình MPI thực thi Các Daemon truyền thông này kết nối với tiến trình MPIđịa phương do nó quản lí, đồng thời nó điều khiển sự không đồng bộ trongmạng Daemon truyền thông này thiết lập một UNIX socket đón nhận phục vụ
Trang 19cho tiến trình MPI địa phương của nó và sau đó sẽ sinh ra (spawn) tiến trìnhMPI địa phương do Daemon này quản lí Trong UNIX socket này, có hai loạithông điệp được trao đổi: (1) thông điệp điều khiển (control messages) dùngcho khởi tạo, kết thúc và thăm dò; (2) thông điệp giao thức (protocol message)dùng cho việc gửi và nhận thông điệp (bsend, breceive).
Cài đặt các Daemon này dựa trên một vòng lặp dùng select Nó điềukhiển một socket cho mọi nút tính toán và các socket dành cho các dịch vụkhác như (phục vụ lưu sự kiện, phục vụ lưu trữ ảnh tiến trình, và bộ lập lịchlấy ảnh tiến trình) Các socket này sử dụng truyền thông TCP/IP và mọi thaotác gửi hay nhận thông điệp là không đồng bộ Vì vậy, một sự truyền thông sẽkhông bị ngưng lại bởi một truyền thông khác chẳng may bị chậm hơn, điềunay sẽ tốt cho hiệu năng của hệ thống Mặt khác, sự truyền thông dùng UNIXsocket tới các tiến trình MPI địa phương thì lại là đồng bộ
Sau đây giới thiệu 6 hàm nguyên thủy định nghĩa lại từ giao diện ADI
Hàm V2_Init( ): Hàm này sử dụng tham số đầu vào truyền từ hàm chuẩn MPI_Init( ) khởi các giá trị định danh tiến trình (MyWorldRank)
và số tiến trình (MyWorldSize) Sau đó kết nối với Daemon truyềnthông qua socket UNIX
Hàm _v2bsend( ): Hàm này sử dụng các tham số truyền từ hàm chuẩn MPI_Send( ) đóng gói dữ liệu và gửi cho Daemon của tiến trình.
Daemon sẽ tiếp tục gửi thông điệp cho các Daemon khác Đồng thờiDaemon sẽ sao lưu các thông điệp tiến trình khác đã nhận
Hàm _v2probe( ): Hàm này sử dụng trong cơ chế không đồng bộ Nó
hỗ trợ cho hàm chuẩn MPI_Irecv( ) để thăm dò thông điệp nằm trong
hàng đợi của Daemon truyền thông Khi có thông điệp trong hàng đợi,các hàm nhận thông điệp không đồng bộ của chuẩn MPI sẽ thực hiệnnhận thông điệp
Hàm _v2brecv( ): Hàm này vừa sử dụng trong cơ chế nhận đồng bộ và
không đồng bộ của hàm chuẩn MPI Trong cơ chế nhận không đồng bộ
theo chuẩn MPI, nó được sử dụng kết hợp với hàm _v2probe( ).