Tải bản đầy đủ (.doc) (87 trang)

tích hợp chống lỗi cho hệ bksupcomp

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 (535.84 KB, 87 trang )

Tích hợp chống lỗi cho hệ BKSupComp
Tích hợp chống lỗi cho hệ thống tính toán song song
Đại học BÁCH KHOA Hà Nội
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 trong trường hợp cụ thể xây dựng hệ thống
tính toán song song BKSupComp, 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. Do tính mở của môi trường,
đồ án này tập trung tìm hiểu để “tích hợp vào hệ thống tính toán song song
BKSupComp” triển khai tại Trung tâm tính toán hiệu năng cao -trường Đại
học Bách Khoa Hà Nội.


Tích hợp chống lỗi cho hệ BKSupComp
Vì hạn chế về thời gian và kinh nghiệm, nên có thể đồ án của em còn
nhiều sai sót. Kính mong thầy cô chỉ dẫn thêm nhằm có thể cải thiện nâng cấp
tiếp cho hệ thống này.
Em xin gửi lời cảm ơn chân thành tới PGS.TS Nguyễn Thanh Thuỷ,
thầy đã tận tình hướng dẫn, cũng như tạo điều kiện về cơ sở vật chất trong
việc hoàn thành đồ án này.
Em xin bày tỏ lòng biết ơn sâu sắc tới ThS Đặng Minh Quân, người đã
đưa ra các ý tưởng, và cung cấp tài liệu tham khảo thực hiện đồ án.
Em cũng xin được cảm ơn các thầy cô, các anh, các chị, các bạn ở
Trung tâm tính toán hiệu năng cao và các thầy cô ở Bộ môn Hệ thống thông
tin – Khoa Công nghệ thông tin - Trường đại học Bách Khoa Hà Nội.
Cuối cùng em xin cảm ơn gia đình và bạn bè ở lớp Hệ thống thông tin -
những người đã giúp đỡ em rất nhiều trong quá trình hoàn thành đồ án.

Hà Nội, ngày 14 tháng 5 năm 2004
Sinh viên thực hiện

Phạm Quyết Thắng
Tích hợp chống lỗi cho hệ BKSupComp
Mục lục
Lời nói đầu i
Mục lục iii
Danh mục hình iv
Giới thiệu 1
Phân tích môđun chống lỗi 8
Tích hợp phân hệ chống lỗi vào hệ thống tính toán song song phân
cụm BKSupComp 52
Cài đặt và chạy thử nghiệm 77
Kết luận và hướng phát triển của đề tài 80

Thuật ngữ 82
Tài liệu tham khảo 83
Tích hợp chống lỗi cho hệ BKSupComp
Danh mục hình
Tích hợp chống lỗi cho hệ BKSupComp
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:
1) 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.

2) 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
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ế. Mục 1.1 trình
Tích hợp chống lỗi cho hệ BKSupComp
bày tổng quan giao thức chống lỗi. Mục 1.2 trình bày tổng quan môi trường
chống lỗi MPICH-V. Mục 1.3 trình bày nội dung luận văn tốt nghiệp.
1.1. Kỹ thuật chống lỗi : Tổng quan
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
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
Tích hợp chống lỗi cho hệ BKSupComp
thông điệp. Sau đây là mô tả giao thức checkpoint và giao thức ghi lại thông
điệp:
(1).Giao thức checkpoint: trong quá trình giải phóng lỗi, theo định kì hệ thống
tự động lưu trạng thái của mỗi tiến trình vào bộ nhớ tin cậy (gọi là một lần lưu
ảnh tiến trình). Mỗi khi một tiến trình lỗi, một tiến trình mới -gọi là tiến trình
phục hồi- được tạo ra. Trạng thái của nó được khôi phục lại từ điểm ảnh tiến
trình gần nhất theo bộ đếm của tiến trình. Thực thi của nó bắt đầu từ trạng thái
đã lưu. Mặc dù thủ tục này hiệu quả với các ứng dụng một tiến trình, nhưng
trong ứng dụng phân tán đa tiến trình nảy sinh một số vấn đề. Sau khi tiến
trình lỗi khôi phục, trạng thái của toàn hệ thống có thể sẽ không bền vững.
Một trạng thái hệ thống bao gồm chính xác từng trạng thái của mỗi tiến trình.
Trạng thái đó bền vững khi và chỉ khi với mỗi thông điệp đã nhận bởi một tiến
trình, phải có một tiến trình gửi. Trạng thái bền vững cuối cùng được định
nghĩa bởi một tập các điểm ảnh tiến trình của từng tiến trình, gọi là dòng khôi
phục (hay lát cắt phục hồi). Để phục hồi hệ thống về trạng thái bền vững, nhất

thiết phải phục hồi thực thi các tiến trình có trạng thái không bền vững về lát
cắt phục hồi. Các tiến trình này gọi là các tiến trình mồ côi (orphan). Khôi
phục thực thi của một tiến trình mồ côi có thể gây nên các tiến trình khác có
liên quan tới nó cũng trở thành mồ côi. Việc khôi phục các tiến trình này sẽ
đưa hệ thống dần trở về trạng thái ban đầu. Gọi là hiệu ứng lan truyền
(domino-effect). Nó có thể xảy ra nếu mỗi tiến trình lấy ảnh tiến trình độc lập
với các tiến trình khác. Hiệu ứng này được thể hiện qua ví dụ sau:
Hình 1-1 Mô tả hiệu ứng lan truyền: Đưa hệ thống về trạng thái bền vững sau khi tiến trình po
lỗi, cần thiết phải phục hồi các tiến trình về trạng thái ban đầu
Theo hình 1-1, thực thi của hệ thống gồm 2 tiến trình p
0
và p
1
. Mỗi tiến
trình lấy ảnh độc lập với tiến trình còn lại. Theo hình vẽ, C
i,j
tương ứng với lần
lấy ảnh thứ j của tiến trình p
i
. C
i,j
cũng là trạng thái của tiến trình p
i
ghi lại
trong ảnh tiến trình. Giả thiết tiến trình p
0
lỗi như tại thời điểm hình vẽ. Khi
khôi phục, C
0,2
là trạng thái đầu tiên tiến trình p

0
quay trở lại. Lúc này, tiến
Tích hợp chống lỗi cho hệ BKSupComp
trình p
1
sẽ không còn bền vững. Do trạng thái của p
1
lúc này đã nhận thông
điệp m
4
. Nhưng thông điệp này lại chưa được gửi từ trạng thái C
0,2
của p
0
. Vì
vậy, p
1
phải quay về trạng thái C
1,2
. Tuy nhiên, hệ thống vẫn không ở trạng
thái bền vững. Kịch bản này lại giống lần trước, p
0
và p
1
đổi vai trò cho nhau,
thông điệp m
3
thay cho m
4
. Cứ như vậy, hai tiến trình p

0
và p
1
sẽ quay về trạng
thái khởi đầu C
0,0
và C
1,0
.
Để tránh hiện tượng lan truyền, cần điều phối hoạt động lấy ảnh tiến
trình của hệ thống. Một tiếp cận là áp dụng giải thuật Chandy-Lamport. Trong
giải thuật này, mỗi tiến trình hoạt động như bộ điều phối và trực tiếp yêu cầu
các tiến trình khác thực hiện lấy ảnh tiến trình. Mỗi lần lấy ảnh tiến trình, cả
hệ thống sẽ đưa về trạng thái bền vững. Do đó, khi xuất hiện các tiến trình mồ
côi, hệ thống sẽ quay trở lại trạng thái bền vững gần nhất.
(2).Giao thức ghi lại thông điệp: để tăng tốc độ chuyển giao thông điệp, giao
thức checkpoint có thể kết hợp ghi lại thông điệp. Giao thức ghi lại thông điệp
dựa trên việc theo dõi các thực thi bị mất khi tiến trình lỗi gây ra bởi các sự
kiện truyền thông điệp. Khi đó nó sẽ phát lại các thông điệp cho các tiến trình
lỗi theo đúng thứ tự trước đây đã nhận. Do đó các thông tin theo dõi này cần
ghi vào các thiết bị lưu trữ tin cậy.
Giống như giao thức checkpoint, giao thức ghi lại thông điệp đảm bảo
khôi phục các tiến trình lỗi và không để xảy ra hiện tượng mồ côi tiến trình.
Các giao thức ghi lại thông điệp phân thành 3 loại:
• Pessimistic protocol yêu cầu chỉ một tiến trình khi gửi thông điệp tới
các tiến trình khác sẽ đồng thời ghi lại các thông tin do sự kiện gửi
nhận tạo ra vào thiết bị lưu. Vì vậy, giao thức này không tạo ra các tiến
trình mồ côi.
• Optimistic protocol cho phép các tiến trình đồng thời trao đổi. Thậm
chí một số thông tin phụ thuộc giữa các tiến trình có thể cũng không

cần lưu lại. Vì vậy, nếu một số thông tin cần thiết khi tiến trình lỗi phục
hồi lại không được ghi thì sẽ xuất hiện các tiến trình mồ côi. Để hệ
thống trở lại trạng thái bền vững, các tiến trình mồ côi phải quay trở về
trạng thái bền vững gần nhất.
• Causal protocol kết hợp các ưu điểm của hai giao thức trên. Nó không
tạo ra tiến trình mồ côi, cũng không cần ghi tất cả thông tin liên quan
trong khi trao đổi giữa các tiến trình vào bộ lưu trữ. Giao thức sẽ ghi
các thông tin liên quan vào bộ nhớ tạm cả hai bên gửi và nhận. Để
Tích hợp chống lỗi cho hệ BKSupComp
không xuất hiện tiến trình mồ côi, các tiến trình gắn thêm các thông tin
liên quan vào các thông điệp được gửi. Theo cách này, tiến trình lỗi có
thể quay lại trạng thái bền vững mà không ảnh hưởng tới tính toán của
các tiến trình khác.

1.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:
1) 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.
2) 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:
1) Các sự kiện không xác định.
2) Các sự kiện sinh ra sự phụ thuộc.
3) Các sự kiện chuyển giao đầu ra.
4) Các sự kiện checkpoint.
5) 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
Tích hợp chống lỗi cho hệ BKSupComp
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:
1) Hiệu năng phục hồi của giao thức ghi lại thông điệp.
2) Sự tiêu tốn tài nguyên mạng của giao thức lưu trữ ảnh tiến trình.
Sau đây là một vài nhận xét về 2 vấn đề hiệu năng trên.

• Phục hồi lỗi: Khi sự tính toán trong môi trường phân tán phổ biến, yêu
cầu mới về kĩ thuật để giảm chi phí giải phóng lỗi đồng thời phục hồi
nhanh. Các nghiên cứu trước đây chỉ ra rằng giao thức ghi lại thông
điệp phía tiến trình nhận (receiver-base-pessimistic) gây ra chi phí cao

trong khi giải phóng lỗi, trong khi dùng ghi lại thông điệp phía tiến
trình gửi (sender-base pessimistic), optimistic, và causal gây chi phí
tương đối thấp. Đánh giá thực nghiệm ban đầu về hiệu năng của giao
thức ghi lại thông điệp trong quá trình phục hồi lỗi cho thấy, ghi lại
thông điệp phía tiến trình gửi và causal tốt hơn optimistic chỉ khi chống
lỗi đơn tiến trình. Trong trường hợp chống lỗi đa tiến trình, optimistic,
mặc dù chạy lại các tiến trình mồ côi, có thể tốt hơn dùng ghi thông
điệp bên gửi và causal, giao thức này không cho phép phục hồi nhanh
chóng. Kết quả này cho thấy các giao thức ghi lại thông điệp bên gửi
thường được nhà phát triển ứng dụng lựa chọn để chống lỗi. Tuy nhiên,
các giao thức không thể đồng thời chi phí thấp cho giải phóng lỗi, lại
khôi phục nhanh.
• Gia tăng chi phí lưu ảnh tiến trình: Tính ưu việt của các giao thức điều
phối lấy ảnh tiến trình thể hiện ở các khía cạnh sau: (1) tiến trình có thể
tự lấy ảnh tiến trình độc lập; (2) có thể tăng số lượng các tiến trình tuỳ
ý. Kết quả cho thấy: (i) chỉ yêu cầu các tiến trình lấy ít nhất hai lần bởi
vì số các điểm buộc phải lưu ảnh tiến trình (forced checkpoint) nhiều
hơn các điểm tự động lưu ảnh tiến trình (autonomous checkpoint); (ii)
số các điểm buộc phải lưu ảnh tiến trình tăng tuyến tính với số tiến
Tích hợp chống lỗi cho hệ BKSupComp
trình. Điều này thể hiện được sự khác biệt giữa việc sử dụng điều phối
lấy ảnh tiến trình và không sử dụng điều phối.
Phân tích hiệu năng sẽ thấy yêu cầu đặt ra đối với một môi trường chống
lỗi. Các phần sau sẽ nghiên cứu về môi trường MPICH-V và sự đáp ứng của
môi trường này đối với các vấn đề trên.
1.3. Dàn ý luận văn
Phần còn lại của luận văn được tổ chức như sau. Chương 2 Phân tích
môi trường chống lỗi MPICH-V. Chương 3 Tích hợp phân hệ chống lỗi vào
hệ thống BKSupComp. Chương 4 Cài đặt và chạy thử nghiệm môi trường
chống lỗi. Cuối cùng, Chương 5 ghi lại một vài kết luận và hướng phát triển

tiếp theo cho đề tài. Cuối cùng là từ điển thuật ngữ và phần tài liệu sử dụng
tham khảo cho luận văn này.
Tích hợp chống lỗi cho hệ BKSupComp
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
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.
Các lựa chọn này hiện nay còn trên lí thuyết, chưa được thử nghiệm
trong thực tế. Vì hiện nay các hệ thống chỉ hỗ trợ giao thức chống lỗi đơn tiến
trình hay đưa ra được các giao diện gửi và nhận cho bất cứ giao thức nào cũng
có thể được cài đặt. Nên các hệ thống này cho các nhà phát triển lựa chọn một
trong 3 cách xây dựng ứng dụng: (1) tự cài đặt các giao thức thích hợp; (2) sử
dụng một giao thức không hẳn phù hợp với ứng dụng chuyên biệt; (3) không
dùng môi trường chống lỗi nữa. Để nắm được ưu điểm mềm dẻo của các giao
thức khôi phục, sử dụng môi trường chống lỗi đã đơn giản việc cài đặt các
giao thức khôi phục.

Cách tiếp cận cài đặt giao thức chống lỗi trên môi trường truyền thông
đã tồn tại trước đây. Các hệ ISIS, Horus, và Transis đã đơn giản việc cài đặt
các giao thức chống lỗi trên cơ sở các bản sao. Môi trường chống lỗi MPICH-
V được xây dựng trên cơ sở chạy lại tiến trình. Khó khăn trong xây dựng môi
trường này là do sự đa dạng của các giao thức phục hồi. Vì vậy cần phát triển
một môi trường thống nhất cho phép chúng ta so sánh các giao thức với nhau.


Chương này được tổ chức như sau. Đầu tiên là mục 2.1: mô hình chống
lỗi môi trường MPICH-V. Ở đây giới thiệu tổng quan các thành phần MPICH-
V xây dựng. Tiếp theo, mục 2.2: Phân tích giao thức chống lỗi bằng cách ghi
lại thông điệp trình bày về giao thức ghi lại thông điệp bên gửi MPICH-V cài
đặt. Mục 2.3 mô tả kiến trúc cài đặt của từng thành phần MPICH-V. Mục 2.4
thảo luận về các môi trường chống lỗi khác liên quan tới môi trường chống lỗi
này. Và cuối cùng, mục 2.5 tóm tắt chương phân tích về MPICH-V.
Tích hợp chống lỗi cho hệ BKSupComp
1.4. Mô hình chống lỗi
Hình 2-2 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 2-1, ta phân chia các thành phần này làm 3 loại:
1) 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.
2) Các thành phần phụ phục vụ chống lỗi: (i) 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. (ii) 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. (iii) Bộ lưu ảnh tiến
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
Tích hợp chống lỗi cho hệ BKSupComp

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.
3) Các thành phần tính toán: (i) 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. (ii) 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.
Chi tiết các chức năng và hoạt động của từng nhóm thành phần trên sẽ
đề cập ở mục 2.3 kiến trúc cài đặt MPICH-V. Nhưng trước tiên sẽ tìm hiểu về
lý thuyết giao thức ghi lại thông điệp bên phía gửi MPICH-V cài đặt.
1.5. 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.
Hình 2-3 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
Tích hợp chống lỗi cho hệ BKSupComp
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 vẽ 2-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 2-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-4 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 vẽ 2-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á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í
Tích hợp chống lỗi cho hệ BKSupComp
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.
Trường hợp chống lỗi đa tiến trình, khi một tiến trình bị lỗi, tiến trình
đó sẽ được khởi động lại từ điểm checkpoint cuối cùng. Nếu lại có tiến trình
khác cũng bị lỗi và nó khởi động lại tại thời điểm trước tiến trình kia, như vậy
tiến trình hai này sẽ yêu cầu các thông điệp cũ từ tiến trình một. Như vậy ta
phải quay tiến trình đầu về trạng thái trước khi nó phát ra các thông điệp được
yêu cầu này. Tuy nhiên, việc này sẽ dẫn tới hiệu ứng lan truyền. Để tránh tình
huống này, tiến trình thứ nhất phải chạy lại đồng thời phục hồi bản sao của các
thông điệp trước lúc lấy ảnh. Nên các thông điệp phải được gắn kèm cùng với
các điểm checkpoint khi lưu trữ.
Trên đây là trình bày sơ lược lý thuyết chống lỗi dựa trên giao thức ghi
lại thông điệp bên phía tiến trình gửi. Với một chút cải tiến, giao thức này đã
có khả năng chống lỗi đơn và đa tiến trình. Tất nhiên, lưu lại các thông điệp và
ảnh tiến trình gây chi phí rất lớn. Tuy nhiên, đối với các ứng dụng không cho
phép thực hiện lại thì phải chấp nhận chi phí cao. Dựa trên lý thuyết này,
MPICH-V đã cài đặt và cải tiến một chút để chống lỗi đa tiến trình như đã
phân tích. Mục 2-3 sau đây mô tả chi tiết cài đặt từng thành phần trong môi
trường chống lỗi.
1.6. 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.
Trước hết là phần trình bày kiến trúc cài đặt cụ thể của MPICH-V trong
mục 2.3.1. Giới thiệu kiến trúc
Tích hợp chống lỗi cho hệ BKSupComp
1.6.1. Giới thiệu kiến trúc
Hình 2-5 Kiến trúc chống lỗi MPICH-V
MPICH-V là môi trường truyền thông điệp dựa trên giao thức ghi lại

thông điệp bên tiến trình gửi theo kiểu pessimistic. Hình 2-4 là mô tả về các
thành phần và cài đặt của hệ chống lỗi trên một trạm tính toán.
hanoi.parallel
may2.parallel may3.parallel may4.parallel may5.parallel
hanoi.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
Tích hợp chống lỗi cho hệ BKSupComp

Theo hình 2-4, môi trường chống lỗi được chia làm 3 loại thành phần
như mục 2.1 Mô hình chống lỗi đã phân tích. Các thành phần được bố trí cụ
thể lên các máy trạm như sau:
• Bộ điều phối được bố trí trên máy hanoi là máy khởi tạo việc chạy job.
Máy hanoi 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 hanoi 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
hanoi. 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 hanoi. 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 2-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
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ó.
Tích hợp chống lỗi cho hệ BKSupComp
Trên đây vừa mô tả cấu hình môi trường chống lỗi khi chạy một job với
4 tiến trình. Mục 2.3.2 tiếp theo sẽ trình bày các chức năng của các thành
phần cơ bản trên.
1.6.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).
Trình bày chức năng các khối cơ bản tập trung vào 2 khối này. Trước
tiên trình bày chức năng từng thành phần trong môi trường truyền thông điệp
ở mục 2.3.2.1. Tiếp theo, mục 2.3.2.2 là thư viện truyền thông điệp do
MPICH-V cung cấp
1.6.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.
Mục này sẽ lần lượt phân tích chức năng của 4 thành phần trên.
1.6.2.1.1. Thành phần bộ điều phối

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
Tích hợp chống lỗi cho hệ BKSupComp
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.
1.6.2.1.2. Thành phần phục vụ lưu trữ ảnh tiến trình
Hệ thống Checkpoint được chia làm 2 phần: (1) thành phần Server
dùng để lưu trữ các ảnh tiến trình; (2) 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.
Theo cách nhìn trên đối với các tiến trình MPI, sẽ không có sự khác
biệt giữa các tiến trình thực thi và các tiến trình phải khôi phục. Tiến trình
MPI được gọi bởi Daemon truyền thông với một tham số cụ thể được điều

khiển bởi thư viện Condor. Ảnh tiến trình được gửi cho Daemon qua pipe và
tiến trình MPI tiến tới điểm checkpoint cuối cùng. Sau đó tiến trình lại tiếp tục
thực thi bình thường. Khi tiếp tục thực thi truyền thông của tiến trình MPI lại
được điều khiển bởi Daemon .
Việc lưu trạng thái của Daemon truyền thông không được điều khiển
bởi thư viện Condor, Daemon tuần tự hoá tất cả thông tin thông điệp khi tiến
trình lấy ảnh. Khi một sự kiện checkpoint được kích hoạt, Daemon sẽ gửi yêu
cầu checkpoint cho tiến trình MPI và lấy lại ảnh của tiến trình. Sau đó
Daemon tuần tự hoá tất cả bản sao thông điệp của nó và gửi chúng tới Bộ lưu
trữ ảnh tiến trình. Trong suốt pha này, sự truyền thông với các nút tính toán
khác vẫn diễn ra bình thường để đảm bảo chuyển giao ảnh tiến trình không
ảnh hưởng tới tính toán của các tiến trình MPI khác.
Tích hợp chống lỗi cho hệ BKSupComp
Khi một nút tính toán hoàn thành việc lấy ảnh, nút này sẽ gửi cho tất cả
các Daemon truyền thông khác giá trị đồng hồ cục bộ tại điểm checkpoint này.
Khi một điểm checkpoint được hoàn thành tại một thời điểm, tất cả các thông
điệp đã nhận trước đó sẽ không bao giờ yêu cầu lại nữa. Vì vậy, tất cả các
thông điệp này có thể bỏ đi trên các Daemon tương ứng gửi các thông điệp,
dựa vào giá trị đồng hồ tiến trình lấy checkpoint gửi cho.
1.6.2.1.3. Thành phần lưu trữ 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: (1) 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; (2) 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.
Theo mô tả kiến trúc MPICH-V, mỗi tiến trình sẽ tăng giá trị bộ đếm
(hay đồng hồ) trên Daemon khi tiến trình này gửi hay nhận một thông điệp.
Phần ghi lại nội dung thông điệp được tích hợp vào Daemon truyền thông đặt
tại các máy trạm tính toán. Mỗi khi một thông điệp được gửi đi tới một nút

tính toán khác, thông điệp này được lưu ngay tại nút gửi vào một danh sách để
gửi lại cho tiến trình bị lỗi. Hơn nữa, giá trị của bộ đếm phía bên gửi cũng
được lưu gắn kèm với bản sao của thông điệp lưu .

Do các nút tính toán của vốn không ổn định, nên các nội dung thông
điệp này sẽ bị mất trong trường hợp có nút có sự cố. Nhưng các thông điệp
này sẽ được tái tạo lại nếu cần thiết trong quá trình khôi phục lỗi nhờ vào việc
gắn các thông điệp này vào ảnh checkpoint.
Thành phần Bộ ghi sự kiện là bộ nhớ lưu trữ chạy trên máy độ tin cậy
cao trong hệ thống. Thành phần này lưu trữ và phân phối các thông tin phụ
thuộc về các thông điệp trao đổi giữa các nút tính toán trong mạng. Thông tin
phụ thuộc gồm 4 trường kết hợp với mọi thông điệp đã nhận: ( sender’s
identity, sender’s logical clock tại lúc phát ra thông điệp, receiver’s logical
clock tại lúc nhận thông điệp, number of probe since last delivery -số lần phát
tín hiệu thăm dò kể từ lần nhận cuối cùng).
Khi một tiến trình MPI nhận thông điệp trong lúc thực thi job chưa có
lỗi, tiến trình này sẽ kết hợp sender’s identity và sender logical clock, tìm ra
Tích hợp chống lỗi cho hệ BKSupComp
nội dung thông điệp, gắn giá trị bộ đếm của nó lên gói phân phối và số lần
thăm dò không thành công từ lần nhận cái cuối cùng, rồi gửi lên Bộ ghi sự
kiện. Theo chuẩn MPI, tầng phía trên có thể thăm dò sự tồn tại của thông điệp
để được nhận, để cài đặt các thao tác non-blocking lên trên các thủ tục truyền
thông có blocking. Giả thiết rằng một sự nhận thông điệp chỉ khi một sự kiện
thăm dò thành công. Số lần đã thăm dò được tính kể từ khi sự nhận thông điệp
cuối cùng cho tới lần nhận tiếp theo. Vì bên nhận sẽ đếm con số này để thêm
nó vào các thông tin phụ thuộc, mục đích là để đảm bảo chạy lại tiến trình bị
lỗi theo thứ tự chính xác.
Thông tin này được tập hợp lại trong suốt quá trình nhận thông điệp và
gửi Bộ ghi sự kiện. Tuy nhiên, thông tin này phải được gửi và được nhận biết
bởi Bộ ghi sự kiện trước khi nút nhận này có thể làm chuyển trạng thái của các

tiến trình MPI bằng cách thực hiện hành động gửi thông điệp khác. Để cài đặt
được điều này, Daemon truyền thông phải không được gửi các thông điệp
trước khi Bộ ghi sự kiện nhận biết các sự kiện nhận thông điệp trước đó.
Khi xảy ra lỗi, thành phần Bộ điều phối phát hiện tiến trình bị lỗi. Nó sẽ
sinh ra tiến trình mới để vẫn có khả năng kết thúc tính toán đang dở dang.
Daemon tương ứng tiến trình MPI phục hồi sẽ kết nối với Bộ ghi sự kiện và
lấy thông tin phụ thuộc của tất cả các sự nhận của tiến trình MPI trước đây.
Sau đó, Daemon này thực thi tiến trình MPI và yêu cầu các thông điệp cũ đã
được ghi lại lên trên các Daemon tương ứng tiến trình gửi. Các thông điệp
yêu cầu phải gửi lại được tìm ra nhờ bộ thông tin (sender’s identity, sender’s
logical clock ) của thông tin phụ thuộc nằm trên Bộ ghi sự kiện, các thông tin
đó sẽ là một phần trong thông điệp yêu cầu phát lại (re-send message). Nếu
như vài nút trong số phải gửi lại cũng là nút chết, các thông điệp bị mất được
gửi trong suốt quá trình thực thi lại của bản thân các tiến trình gửi đó (chống
lỗi đa tiến trình).
Để nâng cấp hiệu năng, có thể dùng một số các thành phần Bộ ghi sự
kiện trong hệ thống. Nhưng mọi Daemon truyền thông phải kết nối chính xác
tới một Bộ ghi sự kiện. Khi đó, sẽ không có thông tin phụ thuộc bị quản lí
giữa các nút phải chạy lại, các Bộ ghi sự kiện cũng không phải trao đổi thông
tin với nhau.
1.6.2.1.4. Thành phần lập lịch lấy ảnh các tiến trình
Tích hợp chống lỗi cho hệ BKSupComp
Bộ lập lịch dành phục vụ checkpoint được xây dựng với 2 lí do: (1)
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 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. (2) 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.
Vai trò của thành phần Bộ lập lịch lấy ảnh tiến trình là đánh giá lợi
nhuận và chi phí cho một lần checkpoint, tại bất cứ một thời điểm xác định, và
yêu cầu checkpoint sao cho hợp lí. Theo định kì, Bộ lập lịch yêu cầu các
Daemon truyền thông gửi trạng thái của chúng (như giới hạn số lượng các
thông điệp sao lưu), và đánh giá lợi ích của một checkpoint. Hiện nay, thành
phần này đang sử dụng 2 chiến lược lấy checkpoint: (1) quay vòng (Round
robin); (2) sử dụng một giải thuật thích nghi.
Ưu điểm vượt trội của giải thuật quay vòng là giảm truyền thông giữa
Bộ lập lịch và các Daemon. Nhược điểm chính là sự bất đối xứng trong vài
lược đồ truyền thông. Nếu các truyền thông trong chương trình MPI rất đối
xứng (ví dụ lược đồ all-to-all), dung lượng dữ liệu lưu trữ trên tất cả các nút
tương đối giống nhau thì lúc đó giải thuật quay vòng là hợp lí. Nếu bài toán
truyền thông của ta không cân xứng thì sẽ giải thuật sẽ yêu cầu một số nút cần
lấy checkpoint nhiều hơn các nút khác.
Đối với các lược đồ truyền thông lệch, hệ thống đã phát triển thêm một
giải thuật thích nghi, giải thuật này đánh giá tỷ số “số lượng các thông điệp đã
nhận ” / “số lượng các thông điệp đã gửi ” trên mỗi nút tính toán. Giải thuật
này dựa trên thứ tự giảm dần của tỉ số này rồi tính ra lịch lấy checkpoint cho
tiến trình. So sánh 2 chiến lược trên với các lược đồ truyền thông điển hình
( point to point , đồng bộ all-to-all , broadcasts and reduces), kết quả cho thấy
giải thuật thích nghi này đưa ra chiến lược lấy checkpoint tốt hơn (thậm chí
dưới n lần trong đó n là số nút tính toán).
Tích hợp chống lỗi cho hệ BKSupComp
Trên đây đã phân tích đầy đủ chức năng của từng thành phần trong môi
trường chống lỗi. Đồng thời, cũng đưa ra một số cải tiến tăng hiệu năng cho

môi trường. Phần tiếp theo nghiên cứu tiếp chức năng của thư viện truyền
thông dựa trên chuẩn MPI do môi trường cung cấp.
1.6.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.
Với MPICH-V, nó vừa được cung cấp như là một thiết bị truyền thông
(device), vừa cung cấp kênh truyền thông nguyên thuỷ tích hợp vào MPICH.
Nó cài đặt 6 giao thức nguyên thuỷ. Các kênh truyền thông này gồm 2 hàm
truyền thông (PI-Protocol Interface) PIbsend và PIbrecv, hai hàm này ngừng
các thao tác khác để dành riêng cho việc gửi và nhận các khối dữ liệu. Đồng
thời nó còn 4 hàm khác: (1) PInprobe để kiểm tra xem liệu có thông điệp nào
đang treo mà chưa được nhận; (2) PIfrom để lấy định danh của đối tượng gửi
thông điệp cuối cùng; (3) PIiInit để khởi tạo kênh truyền thông; (4) PIiFinish
để kết thúc toàn bộ công việc thực thi.
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).
Tích hợp chống lỗi cho hệ BKSupComp
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.
• 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.
Trên đây giới thiệu 6 hàm nguyên thủy cài đặt trong thư viện truyền
thông điệp do môi trường MPICH-V cung cấp. Tiếp theo, mục 2.3.3 Giao
thức truyền thông giữa các khối sẽ trình bày chi tiết giao thức liên hệ bên
trong các khối. Các giao thức này được cài đặt dựa trên phân tích trong mục
2.3.1 và mục 2.3.2.

×