Tải bản đầy đủ (.docx) (37 trang)

Tiểu luận môn điện toán đám mây NGHIÊN CỨU MÔI TRƯỜNG CHỐNG LỖI MPICH-V TRONG HỆ THỐNG TÍNH TOÁN SONG SONG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (389.18 KB, 37 trang )

Nghiên cứu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song
TRƯỜ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
Đề tài:
NGHIÊN CỨU MÔI TRƯỜNG CHỐNG LỖI
MPICH-V TRONG HỆ THỐNG TÍNH TOÁN
SONG SONG
GVHD : PGS.TS. NGUYỄN PHI KHỨ
HVTH : Phan Trọng Nghĩa
HVTH: Phan Trọng Nghĩa 1
Nghiên cứu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song
LỜ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.
HVTH: Phan Trọng Nghĩa 2
Nghiên cứu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song
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.LỜ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.
HVTH: Phan Trọng Nghĩa 3
Nghiên cứu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song

HVTH: Phan Trọng Nghĩa 4

Nghiên cứu môi trường chống lỗi MPICH-V trong hệ thống tính toán song song
MỤC LỤC
DANH MỤC HÌNH
Hình 1: Mô hình môi trường truyền thông chống lỗi 5
HVTH: Phan Trọng Nghĩa 5
NỘ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án
dùng thay thế cho các máy mainframe như là tư tưởng cơ bản cho hạ tầng tính
toá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ụng
phân tán trong nhiều lĩnh vực như: vũ trụ học (mô phỏng các vụ va chạm trong
dả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ầu
chạ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óm
tiến trình trao đổi với nhau để thực thi trên các máy tính khác nhau nằm trong
trạ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ến
trình (checkpointing) và ghi lại thông điệp (message logging) đem lại nhiều
triển vọng. Các giao thức khôi phục cũng tương đối dễ cài đặt. Chúng tuân
theo mô hình lập trình theo kiểu gửi/nhận (send/receive). Đây là mô hình
chung cho các ứng dụng phân tán theo kiểu truyền thông điệp. Do phải cài đặt
nhiề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 ứng
dụ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ất
phức tạp. Một vài giao thức cài đặt hiện nay chỉ hỗ trợ giao thức phục
hồi đơn tiến trình. Bên cạnh đó là giới hạn tương thích của các giao
thứ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ây
dựng các ứng dụng của họ. Họ cũng sẽ phải hiểu thế nào là chống lỗi

trong 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ế giao
thức, trong khi cung cấp rất ít đánh giá để thể hiện ưu việt do cách tiếp
cậ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ựa
HVTH: Phan Trọng Nghĩa 6
chọn từ các giao thức khôi phục, để tìm ra giao thức tốt nhất phù hợp
vớ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ến
trì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ục
cá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ải
phó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ực
hiện. Các thông tin được ghi lại này được sử dụng trong suốt quá trình
khôi phục để chạy lại các thực thi đã mất. Kĩ thuật này cài đặt trên giao
thứ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êu
cầ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ản
sao 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ên
hơn. Tuy nhiên, tốc độ khôi phục lại chậm. Lựa chọn một trong hai kĩ thuật

nà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ều
khiể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ệc
chố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êu
cầ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
nhiê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 ứng
HVTH: Phan Trọng Nghĩa 7
dụ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ột
nhó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úc
như 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ại
thô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ôi
phụ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ôi
trườ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ống
lỗi.
MPICH-V được phát triển nền đặc tả thống nhất các giao thức phục
hồ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ôi
trườ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 đa
dạ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ập

cá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ới
cá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ủa
cá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:
• Các sự kiện không xác định.
• Các sự kiện sinh ra sự phụ thuộc.
HVTH: Phan Trọng Nghĩa 8
• 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ới
mộ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ống
trong 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ới
bằng cách kết hợp sự chuyển dịch trạng thái theo các cách khác nhau. Đây
cũ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ải
chỉnh sửa gì ngoài việc sử dụng chương trình dịch mpicc sau khi được tích
hợp. Hiệu năng của các giao thức phục hồi hiện nay có thể được đánh giá qua
cá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.
II. Phân tích môđun chống lỗi
Nghiên cứu trước đây về chống lỗi chỉ ra cách thiết kế các giao thức
chống lỗi như checkpointing, pessimistic, optimistic và causal. Các giao thức
trê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ột
giao 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 ứng

dụng không thường xuyên tương tác với môi trường ngoài, để chống lỗi tiến
trình có thể dùng checkpointing và optimistic. Pessimistic và causal phù hợp
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ạy
lại. Nếu yêu cầu khôi phục tiến trình đơn giản và nhanh chóng thì pessimistic
HVTH: Phan Trọng Nghĩa 9
mạng truyền thông
Bộ điều phối
Bộ lập lịch lấy ảnh tiến trình
Bộ ghi sự kiện
Bộ lưu ảnh tiến trình
Daemon truyền thông + nút tính toán
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ải
phó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ác
nhau. Các thành phần này trao đổi với nhau trong môi trường thống nhất. Dựa
và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ả
job 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:
HVTH: Phan Trọng Nghĩa 10
o Bộ lập lịch lấy ảnh tiến trình (Checkpoint Scheduler). Thành phần
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
trong 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ậy
dùng lưu các thông tin sự kiện trao đổi thông điệp giữa các tiến
trì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ác
thà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ến
trình MPI. Có nghĩa là các tiến trình MPI không trực tiếp trao đổi
thô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ền
thông.
o Các nút tính toán (Computing Node). Nút tính toán chính là các tiến
trình MPI chạy song song. Các tiến trình này được chạy từ các
chươ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ệp
bê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ử
dụ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ễn
truyền thông giữa các tiến trình trong lúc thực thi.
HVTH: Phan Trọng Nghĩa 11
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ác
thô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ận
mộ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ày
gán giá trị SSN -Send Serial Number- và RSN –Receive Serial Number- cho
cá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ến
trì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 p
khô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ến
trì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ợp
tiến trình bị lỗi.
Hì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ưu
trong ảnh tiến trình nằm trên Bộ lưu trữ ảnh tiến trình) (xem hình 3). Sau đó,
HVTH: Phan Trọng Nghĩa 12
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ác
tiế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ành
cho 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 định
chí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 (pha
C). 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 ngay
trướ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ệc
lư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ện
tạ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ác
bả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.
HVTH: Phan Trọng Nghĩa 13
may2.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
Bộ lập lịch checkpoint Bộ ghi
sự kiện
mpi mpi mpi mpi
khởi tạo
khởi tạo
tiến trình
truyền thông
tiến trình
truyền thông
tiến trình
truyền thông
Tiến trình MPI
Tiến trình truyền thông
Chú thích
gửi thông điệp
nhận thông điệp
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:
HVTH: Phan Trọng Nghĩa 14
maytest.parallel
• 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ì coi
như 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ạo
cá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 Daemon
truyề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 Daemon
truyề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ác
Daemon 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.
• 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
HVTH: Phan Trọng Nghĩa 15
trình biê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ên
chuẩ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:
• Bộ điều phối.
• Bộ lưu trữ ảnh tiến trình.
• Bộ ghi sự kiện.
• Bộ lập lịch lấy ảnh tiến trình.
a. Bộ điều phối
Là thành phần trung tâm của một job. Khi job được thực thi, Bộ điều
phối là thành phần đầu tiên được kích hoạt với các tham số đầu vào là các file
đặ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ác

tiế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,
Bộ đ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
HVTH: Phan Trọng Nghĩa 16
Đượ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ình
chạy job. Server lưu ảnh tiến trình được đặt trên các máy tin cậy cao
dùng để lưu trữ ảnh các tiến trình MPI và bộ nhớ lưu trữ các bản sao
thô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ện
lấ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 Daemon
truyền thông của nó. Khi sự kiện lấy ảnh được kích hoạt bởi Daemon
truyền thông, tiến trình MPI phải đảm bảo không có các hoạt động
truyền thông vào thời điểm fork thêm tiến trình.
c. Bộ ghi sự kiện
Giao thức ghi lại thông điệp bên tiến trình gửi thực hiện ghi các thông điệp
được chia làm hai phần như ở trên đã trình bày:
• Phần nằm trên Daemon truyền thông thì dùng phương thức ghi lại bên
gửi để lưu các nội dung thông điệp vào bộ nhớ của Daemon.
• Phần Bộ ghi sự kiện dùng để lưu các thông tin phụ thuộc liên kết với
các thông điệp. Bộ ghi sự kiện phải đặt trên các máy độ tin cậy cao.
d. Thành phần lập lịch lấy ảnh các tiến trình
Bộ lập lịch dành phục vụ checkpoint được xây dựng với 2 lí do:

• 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ác
Daemon bên gửi thì sau khi lấy ảnh checkpoint của tiến trình MPI, các
thô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ưu
HVTH: Phan Trọng Nghĩa 17
trữ do Bộ lưu ảnh tiến trình quản lí. Điều phối kích hoạt checkpoint
không chỉ cần thiết để tránh ảnh hưởng tới thời gian tính toán mà còn
phả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 ứng
bằng kích cỡ các thông điệp được phát đi. Giao vận này sẽ cạnh tranh
với giao vận truyền thông ứng dụng trên băng thông mạng, vì vậy càng
giả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ập
trì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 song
song. 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ầng
nguyên thuỷ này.
Cũng giống như kênh truyền thông P4 (truyền thông chuẩn của MPICH
dù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ới
nhau 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út
tính toán là nhiệm vụ các Daemon truyền thông chạy trên cùng máy có tiến
trì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ộ trong
mạng. Daemon truyền thông này thiết lập một UNIX socket đón nhận phục vụ

cho tiến trình MPI địa phương của nó và sau đó sẽ sinh ra (spawn) tiến trình
MPI địa phương do Daemon này quản lí. Trong UNIX socket này, có hai loại
thông điệp được trao đổi: (1) thông điệp điều khiển (control messages) dùng
cho 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).
HVTH: Phan Trọng Nghĩa 18
Cài đặt các Daemon này dựa trên một vòng lặp dùng select. Nó điều
khiể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ịch
lấy ảnh tiến trình). Các socket này sử dụng truyền thông TCP/IP và mọi thao
tá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ều
nay sẽ tốt cho hiệu năng của hệ thống. Mặt khác, sự truyền thông dùng UNIX
socket 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ền
thô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ời
Daemon 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ện
nhậ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( ).
• Hàm _v2from( ): Hàm này định nghĩa lại hàm chuẩn MPI hỗ trợ cơ chế
nhận không đồng bộ. Hàm trả về định danh tiến trình gửi thông điệp
cuối cùng cho tiến trình nhận.
HVTH: Phan Trọng Nghĩa 19
• Hàm V2_Finalize( ): Hàm này là cài đặt tầng dưới của hàm chuẩn
MPI_Finalize( ). Hàm gửi tín hiệu báo kết thúc về cho Daemon truyền
thông.
II.3.3. Giao thức truyền thông giữa các khối
Qua phân tích ở trên, có thể chia các giao thức trong môi trường truyền
thông chống lỗi MPICH-V thành 2 nhóm giao thức truyền thông sau:
• Các giao thức liên quan tới truyền thông điệp.
• Các giao thức liên quan tới chống lỗi.
II.3.3.1. Giao thức truyền thông điệp
Phần này tập trung vào 3 giao thức giữa 3 khối: (1) Bộ điều phối; (2)
Daemon truyền thông; (3) tiến trình MPI. Các giao thức này là:
• Truyền thông giữa Bộ điều phối và Daemon truyền thông.
• Truyền thông khởi tạo giữa các Daemon truyền thông.
• Truyền thông giữa Tiến trình MPI với Daemon truyền thông.
a. Truyền thông giữa Bộ điều phối và Daemon truyền thông
Giả thiết một job thực thi yêu cầu 4 tiến trình MPI. Môi trường truyền
thông cần phải sử dụng 4 Daemon truyền thông tương ứng mỗi tiến trình MPI.
Bộ điều phối có nhiệm vụ triệu gọi 4 Daemon này trên 4 nút tính toán khác
nhau. Hình 2-5 mô tả giao thức triệu gọi giữa Bộ điều phối với một Daemon
truyền thông.
HVTH: Phan Trọng Nghĩa 20
Bộ điều phối
Daemon
truyền thông
rsh (1)

clientsocket: rank, pid (2)
alive signal (4)
FINALIZE_MSG (5)
rsh kill <pid> (6)
nodeListArray[ ] (3)
Chú thích
lệnh rsh truyền thông TCP
tín hiệu báo tiến trình còn sống
maytest.parallel
may2
Hình 4 Giao thức giữa Bộ điều phối và Daemon truyền thông
1) Bộ điều phối dùng rsh triệu gọi Daemon truyền thông trên mỗi nút tính
toán. Hình 2-5 biểu diễn Daemon đặt trên may2 và Bộ điều phối đặt
trên server maytest.
2) Sau khi Daemon được triệu gọi, Daemon gửi 2 giá trị (rank, pid) về
cho Bộ điều phối qua kết nối clientSocket. Bộ điều phối dựa vào hai giá
trị này để quản lí các Daemon.
3) Bộ điều phối gửi danh sách nodeListArray[ ] cho Daemon qua
clientSocket. Danh sách này lưu trữ địa chỉ IP và cổng phục vụ của các
Daemon khác. Với job 4 tiến trình, mảng này gồm 4 cặp (IP, PORT).
HVTH: Phan Trọng Nghĩa 21
Dựa vào mảng này, mỗi Daemon có thể nhận biết sự tồn tại của các
Daemon khác trong job.
4) Daemon sử dụng chính clientSocket để gửi tín hiệu sống về Bộ điều
phối. Khi socket này bị ngắt, Bộ điều phối coi như nút tính toán này bị
lỗi.
5) Khi tiến trình MPI kết thúc, gọi hàm MPI_Finalize( ). Thông điệp kết
thúc gửi về cho Daemon. Daemon nhận biết và gửi tiếp thông điệp
FINALIZE_MSG về cho Bộ điều phối.
6) Bộ điều phối gặp tín hiệu FINALIZE_MSG, dùng rsh để huỷ các

Daemon truyền thông.
Sau nhận được danh sách nodeListArray[ ], Daemon truyền thông phải
kết nối với các Daemon khác. Đồng thời, nó cũng đón nhận các kết nối tới từ
các Daemon. Sau đây trình bày giao thức khởi tạo giữa các Daemon.
b. Truyền thông giữa Daemon truyền thông
Daemon truyền thông đóng vai trò trung gian trao đổi thông điệp giữa
các tiến trình MPI. Với chức năng truyền thông, Daemon được sử dụng như
bộ đệm lưu thông điệp. Với chức năng chống lỗi, nó sử dụng bộ chứa các bản
sao thông điệp. Để thực hiện 2 chức năng này, Daemon cần nhận biết sự tồn
tại của nhau để kết nối truyền thông điệp. Với job 4 tiến trình, mỗi Daemon
phải kết nối với 3 Daemon còn lại và nhận 3 kết nối cũng từ các Daemon này.
Hình 2-6 mô tả kết nối khởi tạo giữa Daemon rank 0 và Daemon rank 1.
HVTH: Phan Trọng Nghĩa 22
mpipeer[1].cofd : myrank=0 (1)
mpipeer[myrank=0].fd : A (2)
Daemon
truyền thông
rank 0
Daemon
truyền thông
rank 1
init
may2
may3
Hình 5 Mô phỏng khởi tạo giữa Daemon rank 0 và rank 1
1) Sau khi nhận danh sách nodeListArray[ ] từ Bộ điều phối, mỗi Daemon
sử dụng mảng quản lí các Daemon khác có tên là mpipeer[ ]. Mảng này
lưu địa chỉ IP và cổng của các Daemon lấy từ nodeListArray. Theo
hình 2-6, mpipeer[1].cofd là kết nối từ rank 0 tới rank 1. Daemon rank
0 dùng kết nối này gửi số hiệu rank = 0 cho Daemon rank 1.

2) Trên Daemon rank 1, sau khi nhận kết nối từ Daemon rank 0, kết nối
này quản lí trong phần tử mpipeer[0].fd nằm trên Daemon rank 1. Dùng
kết nối này, Daemon rank 1 gửi tín hiệu ‘A’ccept cho rank 0.
Giao thức khởi tạo kết nối giữa các Daemon dựa trên lược đồ all-all.
Mỗi Daemon kết nối và đón nhận kết nối với tất cả các Daemon khác. Các kết
nối này quản lí thông qua 2 trường cofd và fd thuộc mỗi phần tử trong mảng
mpipeer[] trên mỗi Daemon.
c. Truyền thông giữa Daemon truyền thông với tiến trình MPI
Truyền thông giữa Daemon truyền thông với tiến trình MPI địa phương
do Daemon quản lí sử dụng kết nối qua socket PF_UNIX. Khi mới khởi tạo,
Daemon truyền thông mở cổng lắng nghe sử dụng socket PF_UNIX. Dựa trên
số hiệu <rank> và <group> của tiến trình, socket này có tên là
<group>:<rank>.v2d.sock. Tiến trình MPI địa phương sau khi được Daemon
truyền thông khởi tạo bằng lệnh execvp( ) như trên hình 7. Với tham số truyền
HVTH: Phan Trọng Nghĩa 23
Daemon
truyền thông
rank 0
mpi rank 0
execvp() (1)
CLIENT_EXIT (5)
daemonfd (2)
smpi (3)
MESSAGES (4)
chú thích
lệnh sinh tiến trình
kết nối truyền thông
may2
vào là <group>, <rank> sẽ nhận biết tên socket lắng nghe thuộc Daemon
truyền thông của nó. Từ đó tiến trình MPI kết nối với Daemon của nó.

Hình 7 mô tả kết nối giữa Daemon và tiến trình MPI rank 0 và các
thông điệp trao đổi giữa chúng trên may2.
Hình 6 Truyền thông giữa Daemon truyền thông với tiến trình MPI
1) Daemon truyền thông dùng cơ chế fork sinh thành 2 tiến trình. Tiến
trình gốc thực hiện các khởi tạo như phần trên trình bày. Tiến trình bản
sao dùng lệnh execvp( ) chạy tiến trình MPI địa phương.
2) Tiến trình MPI khởi tạo bằng hàm chuẩn MPI_Init( ). Hàm này kết nối
với Daemon của nó bằng socket daemonfd (hình 7).
3) Daemon đón nhận kết nối từ tiến trình MPI bằng socket smpi. Hai kết
nối trên sẽ duy trì để trao đổi thông điệp.
4) Tiến trình MPI trong lúc thực thi gửi các thông điệp tới cho Daemon.
Các kiểu thông điệp được liệt kê phần dưới.
HVTH: Phan Trọng Nghĩa 24
5) Tiến trình MPI khi kết thúc gọi hàm chuẩn MPI_Finalize( ). Hàm gửi
tín hiệu CLIENT_EXIT về cho Daemon.
II.3.3.2. Giao thức chống lỗi
Phần này sẽ trình bày các giao thức chống lỗi sau:
1. Giao thức phát hiện lỗi.
2. Giao thức phục hồi Daemon truyền thông lỗi.
3. Giao thức phục hồi sự kiện
4. Giao thức khôi phục tiến trình MPI.
5. Giao thức lấy ảnh tiến trình MPI.
6. Giao thức gửi ảnh tiến trình.
7. Giao thức nhận ảnh tiến trình.
a. Giao thức phát hiện lỗi
Bộ điều phối phát hiện lỗi tiến trình MPI dựa vào kết nối thăm dò lỗi từ
Daemon truyền thông. Do Bộ điều phối không trực tiếp kết nối với tiến trình
MPI. Hình 8 mô tả giao thức phát hiện lỗi tiến trình MPI của Bộ điều phối.

HVTH: Phan Trọng Nghĩa 25

×