Mục tiêu của đề tài là tìm hiểu mô hình tính toán song song sử dụng bộ nhớ chia sẻtrong nhu cầu phát triển cuộc sống, qua đó với những kiến tìm hiểu cài đặt một sốthuật toán trên ma trận
Trang 1Danh mục hình vẽ
Hình 1.1.1.3.1: Website của dự án BIOGRID 9
Hình 1.2.1.1: Sự khác giữa quá trình đơn luồng và quá trình đa luồng 28
Hình 3.3.2: Mô tả cấu trúc thực hiện khối mã xử lý luồng song song 56
Trang 2Hình 4.2.2.3: Mô tả theo khối màu 99
Trang 3Mục lục PHẦN MỞ ĐẦU
CHƯƠNG I: CÁC MÔ HÌNH THUẬT TOÁN SONG SONG
1.1 Bộ nhớ phân tán (Distributed Memory System) 8
1.1.1 Tính toán lưới (Grid Computing) 8
1.1.1.1 Giới thiệu chung 8
1.1.1.2 Định nghĩa tính toán lưới – Grid Computing 8
1.1.1.3 Tổng quan về mô hình tính toán lưới 8
1.1.1.4 Các giao thức và dịch vụ lưới (Grid Protocol and Services)
15 1.1.1.5 Một số dạng lưới – Grid .
17 1.1.1.6 Tình hình nghiêm cứu tính toán lưới ở Việt Nam
19 1.1.2 Tính toán dạng Cluster
21 1.1.1.2.1 Tổng quan mô hình cụm
21 1.1.1.2.2 Cấu trúc của Cluster 23
1.1.1.2.3 Cluster nhiều địa điểm phân tán 25
1.1.1.2.4 Tối ưu hóa các thiết bị lưu trữ trên Cluster 25
1.1.1.2.5 Tính mở của Cluster 26
1.2 Bộ nhớ chia sẻ 27
1.2.1 Đa luồng (Pthread) 25
Trang 41.21.1 Tổng quan về đa luồng 25
1.2.1.1.2 Các lợi ích của tiến trình đa luồng 29
1.2.1.1.3 Luồng người dùng và luồng nhân 29
30
32
35
37
CHƯƠNG II: CÁC PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN SONG SONG 38
2.1 Cách xây dựng một chương trình song song
38
38
2.2.1 Phân hoạch 38 2.2.2 Tác vụ 38 2.2.3 Granularity 38
Trang 52.3 Thiết kế thuật toán song song
392.3.1 Một số phương pháp phân hoạch 39
39
39
42
44
2.3.1.5 Kết hợp các phép phân hoạch ( phân hoạch lai) 45
46
47
47
2.3.3 Một số phương pháp giảm biết chi phí tương tác 48
48
Trang 62.3.3.2 Cực tiểu tần số tương tác 49
2.3.3.3 Giảm thiểu tối đa các điểm xung đột, tranh chấp 49
2.3.3.4 Đan xen các phép tính và tương tác 51
2.3.3.5 Tạo bản sao dữ liệu hay các phép tính toán 51
2.3.4 Các mô hình thuật toán song song 52
52
53
2.3.4.3 Mô hình dây chuyền (pipeline) hay Producer-Consumer 54
54
CHƯƠNG III: LẬP TRÌNH OpenMP 55 3.1 Khái quát 55
3.2 Giới thiệu
55
Trang 73.3 Mô hình lập trình OpenMP 56
3.4 Tham số của OpenMP
59
3.4.1 Định dạng tham số cho C/C++ 59
60
60
3.4.4 Cấu trúc chia sẻ công việc 63
3.4.4.1 Chỉ dẫn cấu trúc chia sẻ công việc Do/for 64
3.4.4.2 Chỉ dẫn cấu trúc chia sẻ công việc SECTIONS
67
3.4.4.3 Chỉ dẫn cấu trúc chia sẻ công việc SINGLE
68
3.4.5 Phối hợp giữa cấu trúc chia sẻ công việc song song 69
3.4.5.1 Chỉ dẫn song song DO/for
69
3.4.5.2 Chỉ dẫn song song SECTIONS 69
Trang 83.4.6 Cấc trúc TASK 70 3.4.7 Đồng bộ cấu trúc 70
71
3.4.7.2 Đồng bộ hoá cấu trúc chỉ dẫn CRITICAL 72
3.4.7.3 Cấu trúc đồng bộ chỉ dẫn BARRIER
73
74
74
3.4.7.6 Chỉ dẫn đồng bộ hoá ORDERED
75
3.4.7.7 Cấu trúc đồng bộ chỉ dẫn TASKWAIT
75
3.4.8 Chỉ dẫn THREADPRIVATE 76
3.4.9 Các mệnh đề phạm vi dữ liệu (Data Scope Attribute Clauses) 78
78
Trang 93.4.9.2 Mệnh đề SHARED
79
80
80
80
81
81
3.4.10 Tổng thể Mệnh đề/Chỉ dẫn 83
3.4.11 Kết nối chỉ dẫn và Quy tắc lồng nhau 84
3.4.11.1 Kết nối chỉ dẫn
84
3.4.11.2 Quy tắc lồng nhau
84
85
3.5.1 OMP_SET_NUM_THREADS 85
Trang 103.5.3 OMP_GET_MAX_THREADS
86
86
87
3.5.6 OMP_IN_PARALLEL 87
87
88
3.5.9 OMP_SET_NESTED
88
88
89
89
89
Trang 1190
90
90
90
91
3.6.1 OMP_SCHEDULE 91
91
91
91
3.6.5 OMP_STACKSIZE
91
3.6.6 OMP_MAX_ACTIVE_LEVELS
92
92
3.7 Vấn đề bộ nhớ và sự thi hành
Trang 1292 3.8 Cấu trúc tổng quát OpenMP
93 Chương IV : Ứng dụng song song hóa một trong các thuật toán 4.1 Tính tổng từ 1->N
95 4.1.1.Thuật toán tuần tự
95 4.1.2 Thuật toán song song
95 4.1.3 Đánh giá thuật toán
95 4.2 Nhân hai ma trận
96 4.2.1 Thuật toán tuần tự
96 4.2.2 Thuật toán song song
97 4.2.3 Đánh giá thuật toán 100
4.3 Ứng dụng trong sắp xếp nhanh (Quicksort) 101
4.3.1 Giới thiệu 101
4.3.2 Thuật toán tuần tự 101
4.3.3 Thuật toán song song 103
4.3.4 Đánh giá thuật toán 105
Trang 13KẾT LUẬN 107 TÀI LIỆU THAM KHẢO 109
Trang 14Phần mở đầu
Chúng ta biết rằng một nguyên nhân gây nên thời gian trễ trên bộ nhớ và cácthiết bị lưu trữ là máy tính với bộ xử lý có giới hạn về hiệu năng tính toán tiêu haokinh tế và tốn nhiều thời gian Sự phát triển công nghệ nhằm tìm ra những giải phápgiải quyết vấn đề sao cho hiệu năng tính toán đạt cao nhất Việc tiếp cận và nghiêmcứu tính toán song song đã góp phần biến đổi hàng loạt các ngành khoa học kỹthuật Theo nghiên cứu cách tiếp cận với song song có thể qua mô hình bộ nhớ phântán, hoặc mô hình bộ nhớ chia sẻ
Dựa trên mô hình phần cứng là cách tiếp cận đơn giản nhất Các máy tính sẽđược kết nối với nhau trong mạng máy tính Hệ thống bộ nhớ phân tán là hệ thốngmáy tính song song được dùng phổ biến nhất hiện nay, bao gồm tính toán lưới-Grid,tính toán cụm-Cluster
Ngược lại thì mô hình bộ nhớ chia sẻ phức tạp hơn Trong mô hình là tậphợp các máy tính kết hợp chặt chẽ hơn bằng cách đưa vào bộ nhớ một không gianđịa chỉ duy nhất Bởi hoạt động trên cơ chế truy cập thông qua các tập lệnh cơ bảnnên truy cập nhanh hơn mạng trong hệ thống phân tán, nên truy cập từ xa có thờigian trễ ngắn hơn và băng thông rộng hơn Cấu trúc của mô hình có đa luồng-Pthreads, và đa bộ xử lý-OpenMP
Ý tưởng song song đã có từ lâu nhưng do sự hạn chế phần cứng nên chưađược phát triển Hiện nay các công nghệ máy tính phát triển rất mạnh mẽ, thu hútnhiều nhà phát triển phần cứng và phần mềm nên tính toán song song trên thực tếđang dần thay thế tính toán tuần tự, điểm nổi bật nhất là thời gian đã được giảm rõrệt Sự ra đời của lõi kép dual core trên máy tính để bàn, máy tính cá nhân đã ứngdụng tính toán song song sử dụng bộ nhớ chia sẻ càng phổ biến Các nhà phát triển
đã tiến hành song song hóa sản phẩm của mình thích nghi với phần cứng và phùhợp với nhu cầu phát triển của thời đại Nhưng vẫn còn hạn chế do tính toán songsong chỉ ứng dụng trên một bộ xử lý nên chỉ mục đích chính và quan trọng là gópphần tăng hiệu năng của máy tính, tiết kiệm thời gian, chi phí thực hiện giải quyếtvấn đề
Chính nhu cầu phát triển đó, tôi đã chọn đề tài “Nghiên cứu mô hình tínhtoán song song sử dụng bộ nhớ chia sẻ và ứng dụng một số thuật toán trên ma trận”
Trang 15Mục tiêu của đề tài là tìm hiểu mô hình tính toán song song sử dụng bộ nhớ chia sẻtrong nhu cầu phát triển cuộc sống, qua đó với những kiến tìm hiểu cài đặt một sốthuật toán trên ma trận nhằm giảm thời gian tính toán ma trận trên máy tính hỗ trợtính toán song song sử dụng bộ nhớ chia sẻ.
Nội dung của đề tài gồm 4 chương:
Chương 1: Các mô hình tính toán song song – Thiệu mô hình song song kiểu
bộ nhớ phân tán và kiểu bộ nhớ chia sẻ
Chương 2: Phương pháp thiết kế các thuật toán song song – Mô tả các kiếntrúc, mô hình xử lý song song, cách thức xây dựng chươn trình song song, thiết kếthuật toán song song
Chương 3: Lập trình OpenMP - Giới thiệu mmoo hình lập trình OpenMP làmột mô hình lập trình tính toán song song sử dụng bộ nhớ chia sẻ phổ biến nhấthiện nay
Chương 4: Một số thuật toán trên ma trận - Nêu ý tưởng thuật toán thuật toánsong song, tuần tự, cách xây dựng, đánh giá thuật toán và kết quả thuật toán
Trang 16CHƯƠNG I: CÁC MÔ HÌNH THUẬT TOÁN SONG SONG
1.1 Bộ nhớ phân tán (Distributed Memory System)
1.1.1 Tính toán lưới (Grid Computing)
1.1.1.1 Giới thiệu chung
Ngày nay người ta đang tập trung nghiêm cứu các tài nguyên phân bố mộtcách hợp lý để tận dụng được tối ưu nhất khả năng tính toán của máy tính của máytính đơn Các giải pháp ngày nay được biết đến với tên gọi khác nhau như: Meta –Computing, Salable – Computing, Global – Computing, Internet – Computing vàquen thuộc nhất hiện nay là Peer to Peer Computing hay Grid Computing
Đây là phương pháp nhằm tận dụng của các máy tính trên toàn cầu thành mộtmáy tính “ảo” duy nhất, nhằm hợp nhất tài nguyên tính toán ở nhiều nơi trên thếgiới tạo ra khả năng tính toán khổng lồ, góp phần giải quyết các vấn đề khó khăntrong khoa học và công nghệ Ngày này nó ngày càng được hỗ trợ mạnh hơn nhiềulần của các thiết bị phần cứng, băng thông …
Tính toán lưới có khả năng chia sẻ, lựa chọn, thu gom số lượng lớn những tàinguyên khác nhau bao gồm những siêu máy tính, các hệ thống lưu trữ, cùng vớinguồn dữ liệu, các thiết bị đặc biệt …Các tài nguyên này được phân bố ở các vùngđịa lý khác nhau và thuộc về các tổ chức khác nhau
1.1.1.2 Định nghĩa tính toán lưới – Grid Computing
Tính toán lưới là một công nghệ cho phép các tổ chức ảo chia sẻ tài nguyênphân tán theo mục đích chung mà không yêu cầu phải có một trung tâm điều khiểntập trung
Tổ chức ảo có thể mở rộng từ bộ những bộ phận nhỏ trong cùng một công tycho đến tổ chức bao gồm nhiều thành viên rải rác khắp địa cầu
Tài nguyên có thể là một tài nguyên tính toán như máy tính cá nhân, máytính xách tay, trạm làm việc hay máy chủ …
1.1.1.3 Tổng quan về mô hình tính toán lưới
Trong những năm đầu thập niên 90, những nhóm nghiêm cứu bắt đầu khaithác các nguồn tài nguyên tính toán phân tán trên Internet Các nhà khoa học đã tậptrung và sử dụng hàng trăm các máy trạm để thử nghiệm các chương trình songsong như thiết kế các phân tử và hiển thị đồ họa trên máy tính Trong khi đó các
Trang 17nhóm nghiêm cứu khác đã kết hợp các siêu máy tính lớn lại với nhau tạo thành mộtsiêu máy tính ảo duy nhất, rồi phân phối các phần của ứng dụng rất lớn cho các máytính trên một mạng diện rộng, ví dụ các máy tính giả lập các ứng dụng tương tácgiữa các chất lỏng và cánh quạt chân vịt tàu … Hơn nữa phạm vi của dự án nghiêmcứu này đã nêu rõ các tiềm năng thực sự của mạng máy tính, với cở sở phần mềm
và tin học để phát triển nó xa hơn nữa
Mạng lưới (Grid) là hệ thống phần cứng và phần mềm kết nối mạng máy tínhthế hệ sau, cho phép chia sẻ các tài nguyên tính toán (Computing resources) của cácmáy tính nối mạng, làm tăng gấp nhiều lần hiệu năng và tốc độ xử lý thông tin Rõhơn Grid là một kiến trúc tính toán chuyển giao các tài nguyên lưu trữ và tính toánnhư thể là dịch vụ trên Internet Đây là bước phát triển tiếp theo về cơ sở hạ tầng kỹthuật, cho phép kết nối các máy tính phân tán, các thiết bị di động, các công cụ, cở
sở dữ liệu, các ứng dụng phần mềm, và cung cấp cách thức truy cập đến cộng đồngngười dùng để cho phép tính toán, trao đổi thông tin và cộng tác
Hai dự án Grid tiêu biểu
- Dự án BIOGRID do trường Đại học Osaka chủ trì thực hiện, nằm trong
chương trình công nghệ thông tin của chính phủ Nhật Bản, sự phối hợp của các bộgiáo dục, văn hóa, thể thao, khoa học và công nghệ Dự án là bước khởi đầu để xâydựng các siêu máy tính để giải quyết vấn đề của sinh học và y khoa đặt ra
Hình 1.1.1.3.1: Website của dự án BIOGRID
Trang 18- Dự án DOE Science Grid của Bộ năng lượng, Hoa kỳ: Dự án được xây
dựng với quy mô lớn nhằm phối hợp nhiều cơ quan khoa học của Mỹ Tạo cở sở hạtầng công nghệ thông tin (Cyberifrastructure) phục vụ cho việc phát triển và triểnkhai các lĩnh vực tính toán phân tán (Distributed Computing) xử lý dữ liệu và khaithác nguồn tài nguyên công cụ (Instrument resources)
Hình 1.1.1.3.2: Website của dự án DOE Science GridMột số hệ thống Grid hiện nay là NASA Information Power Grid (IPG).DoD Distance Computing và NetSolve cho chia sẻ và khai thác phần mềm toán học,Nimrod cho chia sẽ tài nguyên trên phạm vi trường học, SETI@Home cho tìm kiếmthông minh ngoài trái đất, hay APGrid để kết nối các trung tâm máy tính ở vành đaiChâu Á Thái Bình Dương
Tính toán lưới là công nghệ nền trong việc hình thành mạng lưới, là nền tảngphần mềm chạy trên nền các phần cứng kết nối mạng truyền thống giúp xây dựngnhững ứng dụng mạng lưới có năng lực tính toán rất mạnh mẽ, có khả năng truyềntải lượng dữ liệu khổng lồ, khả năng lưu và truy cập thông tin trên mạng mà bằnggiải pháp phần mềm và công nghệ mạng Internet truyền thống chỉ dựa trên giaothức TCP/IP không thể đạt tới
Trang 19Hình 1.1.1.3.3: Tính toán lưới
Mạng lưới được xây dựng trên nền kiến trúc mở và phân tầng (Có thể so
sánh với cấu trúc phân tầng của TCP/IP) Trong mỗi tầng của mạng lưới, các thànhphần được chia sẻ các thuộc tính chung và có thể được bổ sung những tính năngmới mà không ảnh hưởng đến tầng khác:
hướng người dùng để truy cập và sử dụng tài nguyên mạng lưới
a Tầng tác chế
Chức năng chính của tầng này là cung cấp các loại tài nguyên chia sẻ, đượcphép truy cập của mạng lưới thông qua các giao thức mạng lưới Các loại tàinguyên bao gồm: tài nguyên tính toán, các hệ thống lưu trữ dữ liệu, các danh mụcthông tin, các tài nguyên mạng và các đầu cảm biến
Các thành phần ở tầng này được triển khai ở mức cục bộ, các thao tác tàinguyên đặc biệt diễn ra trên các tài nguyên đặc biệt trong tầng này chính là một kếtquả của các thao tác được chia sẻ các chức năng được cài đặt ở lớp nền với các thaotác chia sẻ được hỗ trợ ở tầng khác
Trang 20Các loại các tài nguyên này đều ràng buộc bởi 2 cơ chế:
Cơ chế quản lý tài nguyên (Resources Management Mechanism): Cho phépcung cấp khả năng điều phối chất lượng dịch vụ
Cơ chế thẩm tra (Enquiry Mechanism): Cho phép tìm hiểu cấu trúc, tìnhtrạng và các tính năng của tài nguyên
Các loại tài nguyên chính trong tầng tác chế:
Tài nguyên tính toán : Là cơ chế bắt buộc phải tuân thủ khi bắt đầu
chạy chương trình, cho phép kiểm soát, điều khiển việc thi hành các tiến trình
Cơ chế quản lý: Cho phép quản lý các loại tài nguyên đã được xác định ví trílàm cho các tiến trình đạt được lợi ích nhiều hơn
Cơ chế thẩm tra: Có khả năng các rõ phần cứng và phần mềm nhờ các thông tin
về tình trạng của hệ thống (Tải hiện thời, tình trạng hàng đợi …)
Tài nguyên lưu trữ : Là cơ chế bắt buộc cho việc lấy dữ liệu về và tải
lên các tệp tin cũng như cho phép chọn lọc dữ liệu từ các tệp tin ở xa
Cơ chế quản lý: Làm cho việc di chuyển tập tin dễ dàng hơn (không gian, băngthông đĩa, băng thông mạng, tải của CPU …)
Cơ chế thẩm tra: Xác định tình trạng phần cứng và phần mềm thông qua cácthông tin tải Ví dụ dung lượng đĩa còn trống, băng thông sử dụng …
Tài nguyên mạng :
Cơ chế quản lý: Có tác dụng làm cho việc lưu chuyển trong mạng tốt hơn, hiệuquả hơn thông qua các quyền ưu tiên
Cơ chế thẩm tra: Cho phép xác định các đặc điểm của mạng
Các kho mã nguồn: Là nơi quản lý tất cả các loại tài nguyên và tất cả
các phiên bản mã nguồn …
Các bộ sưu tập : Là cơ chế bắt buộc thực hiện và truy vấn các bộ sưu
tập cũng như các thao tác cập nhật cơ sở dữ liệu quan hệ …
b Tầng kết nối
Đây là tầng quan trọng để tạo nên các hạt nhân của giao thức và truyền thôngbắt buộc của các giao dịch đặc trưng trong hệ thống mạng lưới Giao thức truyềnthông cho phép chuyển đổi dữ liệu qua lại giữa các loại tài nguyên ở tầng tác chế.Giao thức xác thực được xây dựng trên các dịch vụ truyền thông để cung cấp các cơ
Trang 21chế Giao thức xác thực được xây dựng trên các dịch vụ truyền thông để cung cấpcác cơ chế mã hóa và bảo mật trong việc kiểm tra xác thực người dùng và tàinguyên mạng lưới.
Truyền thông bao gồm các công đoạn: truyền thông tin, định tuyến và đặt
tên Những giao thức này tương tự như giao thức trong TCP/IP: Internet Protocol
(IP), Transpost Protocol (TCP,UDP) và các giao thức tầng ứng dụng (DNS,OSPF,RSVP …)
Các vấn đề bảo mật phức tạp trong mạng lưới được giải quyết bằng các giảipháp xây dựng và nâng cấp từ các chuẩn đã có Trong truyền thông hiện có rấtnhiều các chuẩn bảo mật được phát triển trong ngữ cảnh Internet Giải pháp xácthực trong môi trường mạng lưới các tổ chức ảo bao gồm nhiều các đặc điểm sau:
- Cơ chế đăng nhập một lần (Single Sign On): Người dùng chỉ cần đăng nhậpmột lần duy nhất vào mạng lưới Sau đó hệ thống phải quản lý người đã xác thực vàcho phép truy cập các tài nguyên được phép trong lớp chế tác mà không yêu cầucung cấp các thông tin xác thực nữa
- Cơ chế ủy quyền (Delegation, Proxy): Người dùng có thể ủy quyền lại chomột chương trình trong một khoảng thời gian xác định truy cập đến các loại tàinguyên mà được phép sử dụng Chương trình này có cũng có thể ủy quyền có điềukiện một phần các tập quyền của nó cho một chương trình con khác Hệ thống mạnglưới phải hiểu, kiểm soát chặt chẽ và đáp ứng tốt cơ chế ủy quyền này một cáchtrong suốt đối với chương trình được trao ủy quyền
- Cơ chế tích hợp đa giải pháp bảo mật địa phương (Integration with variouslocal security solutions): Đặc điểm của mạng lưới là mỗi site chứa tài nguyên mạnglưới đều có cơ chế bảo mật tại chỗ không giống nhau (các cơ chế xác thực nhưActive Directory, username/password, …) Cơ chế bảo mật mạng lưới phải có yêucầu thay thế giao tiếp bên trong với các cơ chế bảo mật địa phương mà không yêucầu thay thế toàn bộ các giải pháp bảo mật hiện có, nhưng cần có cơ chế ánh xạ bảomật trong các môi trường cục bộ khác nhau
- Cơ chế quan hệ tin tưởng dựa trên người dùng (User–based TrustRelationships): Người dùng có thể sử dụng các loại tài nguyên có được từ sự kếthợp của nhiều nhà cung cấp khác nhau Việc kết hợp phải đảm bảo cấu hình nhà
Trang 22cung cấp đề tài nguyên phải tác động qua lại lẫn nhau nhưng phải đảm bảo cấu hìnhcủa cơ chế bảo mật hiện có Ví dụ, xem trường hợp một người có quyền sử dụng 2site A và B Khi đó người dùng có quyền dùng site A và B cùng một lúc mà khôngcần lập cơ chế quan hệ tin tưởng dựa trên người dùng.
c.Tầng tài nguyên
Tầng này được xây dựng trên nền tảng sẵn có của tầng kết nối Đây là tầngdùng để xác định các giao thức chính cho các quá trình thương lượng, khởi tạo,kiểm tra, điều khiển, tính toán và kiểm toán chi phí của các thao tác được chia sẻtrên các tài nguyên Những giao thức trong tầng tài nguyên sẽ gọi các chức năngtrong tầng chế tác để truy cập và sử dụng các loại tài nguyên cục bộ
Có hai loại giao thức chính trong các giao thức của tầng tài nguyên:
- Giao thức thông tin (Information protocol): Cho phép lấy các thông tin vềcấu hình, tình trạng của một loại tài nguyên nào đó trong mạng lưới
- Giao thức quản lý thông tin (Management protocol): Dùng để sắp xếp cácquản lý thứ tự các truy cập các tài nguyên chia sẻ
d Tầng kết hợp
Trong khi tầng tài nguyên chỉ cho phép truy cập đến một loại tài nguyên đơnthì tầng kết hợp lại chứa các giao thức và dịch vụ cho phép giao tiếp giữa các tàinguyên trong mạng lưới Tầng này bao gồm các dịch vụ như sau:
- Các dịch vụ thư mục (Directory Services): Cho phép các thành phần thamgia trong hệ thống mạng lưới tổ chức ảo tìm hiểu sự tồi tại và các thuộc tính của cácloại tài nguyên của họ Một dịch vụ thư mục cũng cho phép người dùng truy vấncác thuộc tính của tài nguyên, loại tài nguyên, tính khả dụng …
- Các dich vụ chứa chấp, lập lịch, môi giới (Co-allocaltion, scheduling,Broker Services): Cho phép các thành phần tham gia vào mạng lưới tổ chức ảo gửiyêu cầu đến một hay nhiều máy chủ cho các mục đích chứa chấp, lập lịch và môigiới truy cập đến các tài nguyên tương ứng
- Các dịch vụ giám sát và dự báo (Monitoring and Diagnostic Service): Chophép hệ thống hỗ trợ kiểm soát tài nguyên trong mạng lưới các tổ chức ảo
Trang 23- Các dịch vụ nhân bản dữ liệu (Data replication Service): Cho phép hỗ trợviệc quản lý lưu trữ tài nguyên trong mạng lưới tổ chức ảo (kể cả mạng và năng lựctính toán) tạo điều kiện cho truy nhập tài nguyên đến mức cao nhất có thể.
- Các hệ thống lập trình hỗ trợ mạng lưới (Grid-enable ProgrammingSystems): Tương tự như mô hình lập trình giao tiếp ứng dụng (API) thông thường,nhưng dùng trong mạng môi trường mạng lưới Hệ thống này cho phép sử dụng cácdịch vụ mạng lưới để xác định các thông tin truyền thông tin tài nguyên, thực hiện
cơ chế bảo mật mạng lưới, định vị ví trí tài nguyên và tất cả những gì có liên quanđến mạng lưới
- Hệ thống quản lý tải và môi trường cộng tác (Workload managementsystem and Collaboration Framework): Tương tự như môi trường giải quyết vấn đềPSE (Problem Solving Envilopment), hệ thống này cung cấp các đặc tả, cách dùng
cà quản lý đa bước, quản lý đồng bộ, đa luồng, đa thành phần … trong các tiến trìnhtính toán
- Dịch vụ tìm kiếm phần mềm (Software Discovey Service): Hỗ trợ tìm kiếm
và lựa chọn các phần cài đặt và làm nền tảng cho mạng lưới
e Tầng ứng dụng
Đây là tầng cuối cùng trong kiến trúc mạng lưới, bao gồm tất cả các ứngdụng hướng tới người dùng trong môi trường mạng lưới của các tổ chức ảo Vềnguyên tắc, người sử dụng có thể tương tác với mạng lưới thông qua tầng ứng dụngmột các trong suốt mà không nhận biết sự có mặt của các tầng khác trong mạnglưới
1.1.1.4 Các giao thức và dịch vụ lưới (Grid Protocol and Services)
Dựa trên nền tảng kiến trúc lưới, ta có thể thấy được thành phần chủ đạo củamạng lưới (bao gồm các dịch vụ và giao thức đặc trưng) nằm trong phần này là cốtlõi của các tầng kết nối, tài nguyên và kết hợp tập thể Các thành phần này là cốt lõicủa công nghệ tính toán lưới Đây là hạt nhân của mọi hệ thống mạng lưới, cũnggiống như bộ xử lý trung tâm (CPU) của máy tính cá nhân
Có thể liệt kê một số nền tảng của công nghệ tính toán lưới như sau:
- Mô hình lưới – Grid : Là cơ chế cho phép xác thực và truyền thông an toàntrên mạng máy tính
Trang 24Hình 1.1.1.4.1: Mô hình lưới – Grid
- Mô hình Globus: là một thành phần khá quan trọng trong kiến trúc quản lýtài nguyên mạng lưới, trong đó dịch vụ quản lý tài nguyên toàn cục được đặt trêncùng
Hình 1.1.1.4.2: Mô hình GlobusHình trên mô tả là tổng quan các thành phần khác nhau của kiến trúc quản lýtài nguyên mạng lưới cài đặt công cụ nền GLOBUS
Ngôn ngữ đặc tả tài nguyên mạng lưới (Resources Specification RSL): Là ngôn ngữ mô tả và truyền các thông tin yêu cầu tài nguyên tính toán, lưutrữ và chuyển tải thông tin, giữa các thành phần trong kiến trúc quản lý tài nguyênmạng lưới
Language-Một số quy ước đã được mô tả trong tài liệu đặc tả dịch vụ Grid bao gồm:
- Cách thức tạo và khai thác dịch vụ Grid
- Cách thức đặt tên và tham chiếu tới thể hiện (Instances) của dịch vụ Grid
Trang 25- Cách mô tả giao diện cho dịch vụ Grid.
a Deparmental Grids
Deparmental Grids được triển khai để giải quyết vấn đề cho một nhóm người
cụ thể trong một công ty hay xí nghiệp, các tài nguyên không chia sẻ cho các nhómngười dùng khác Các dạng lưới quên thuộc vào lớp này là Cluster Grids, InfraGrids
- Cluster Grids: Mạng lưới nhóm - một mạng lưới gồm 1 hay nhiều hệthống kết hợp lại nhằm cung cấp 1 điểm truy xuất đơn cho người dùng Mạng nàykhông phù hợp với các ứng dụng yêu cầu hiệu năng tính toán và băng thông lớn
- Infra Grids: Infra grid là thuật ngữ được dùng bởi IBM để định nghĩa 1mạng lưới tối ưu việc sử dụng tài nguyên trong 1 xí nghiệp
b.Enterprise Grids
Enterprise Grids là hệ thống mạng lưới bao gồm các tài nguyên nằm rải ráctrong một công ty, hay xí nghiệp và cung cấp dịch vụ cho tất cả người dùng Nó baogồm các dạng sau: Enterprise grids, Intra grids, Campus grids
- Intra Grids: Theo IBM, tài nguyên chia sẻ trong các nhóm khác nhau của xínghiệp tạo thành 1 Intra Grids Intra Grid có thể chỉ hạn chế trong 1 mạng cục bộhoặc các mạng ảo VPN Thông thường là Infra grid được bảo vệ bởi hệ thống tườnglửa của công ty
- Campus Grids: Theo Sun Microsystems, cho phép nhiều dự án hoặc nhiều
bộ phận chia sẻ tài nguyên tính toán theo hướng cộng tác Campus grids có thể chứanhiều trạm, máy chủ, cũng như các tài nguyên tập trung được quản lý cục bộ nằmtại các bộ phận khác nhau trong 1 tổ chức ví dụ 1 trường đại học
- Enterprise Grids: Một enterprise grid, theo tổ chức Platform Computing,được thiết lập giữa các công ty, đối tác, và khách hàng Các tài nguyên mạng lưới
Trang 26thông thường được chia sẻ thông qua các mua bán thông qua việc cung cấp các dịch
vụ giá trị gia tăng Một số grid thuộc loại này là: Global, Inter Grids
c Global Grids
Là những mạng lưới được phát triển dựa vào mạng Internet công cộng Nó
có thể được thiết lập bởi các công ty nhằm hỗ trợ việc kinh doanh mua bán thôngqua việc cung cấp các dịch vụ giá trị gia tăng Một số dạng Grids thuộc loại này:Global Grids, Inter grids
-Global Grids: The Sun, cho phép người dùng khai thác các tài nguyên bênngoài Global grids cung cấp sức mạnh của các tài nguyên phân tán trên khắp thếgiới nhằm khắc phục các công việc tính toán và cộng tác của người dùng
- Inter Grids: Theo IBM, cung cấp khả năng chia sẻ tài nguyên tính toán vàlưu trữ thông qua web
d Mạng lưới tính toán – Compute Grids
Mạng lưới tính toán được thành lập nhằm mục tiêu duy nhất là chia sẻ tàinguyên tính toán Các dạng điểm hình: Desktop Grids, Server Grids, High-Peformance/Cluster Grids
- Desktop Grids: Đây là mạng lưới tập hợp sức mạnh tính toán của các máytính để bàn Do hệ điều hành windows thống trị họ máy tính này nên các mạng lướithuộc dạng này chủ yếu chạy trên nền windows
- Server Grids: Một số tập đoàn lớn thường có các tài nguyên máy chủ đượcquản lý bởi bộ phận IT nằm tại nhiều địa điểm khác nhau Họ muốn tạo servergrids để chia sẻ những tài nguyên đắt giá này Thông thường các mạng lưới nàychạy trên hệ điều hành Unix/Linux
- High- performance/Cluster grids: Mạng lưới gồm các hệ thống dành riêngcho tính toán như các siêu máy tính hoặc các nhóm máy tính hiệu năng cao (đượcthiết kế cho các ứng dụng tính toán lớn)
Trang 27f Data Grids
Tài nguyên chủ yếu được chia sẻ trong mạng lưới này là dữ liệu Hệ thốngGrid này được xây dựng nhằm tối ưu hóa các thao tác hướng dữ liệu như: lưu trữ,truy xuất, trao đổi, và chia sẻ thông tin
h Extraprise Grids
Được thiết lập giữa các công ty, đối tác và khách hàng Các tài nguyên dướidạng này thông thường được chia sẻ thông qua các mạng riêng ảo Và có các dạngđiểm hình:
- Extra Grids: Theo IBM, cho phép chia sẻ tài nguyên với các đối tác và bênngoài Liên kết giữa các tổ chức này được thiết lập bằng các dịch vụ tin cậy, nhưcác mạng riêng hay mạng riêng ảo
- Partner Grids: Tổ chức Platform Computing định nghĩa là các mạng lướigiữa các tổ chức, xí nghiệp, trong cùng lĩnh vực mà có nhu cầu cộng tác nhằm thựchiện dự án chung
1.1.1.6 Tình hình nghiêm cứu tính toán lưới ở Việt Nam
Nghiên cứu tính toán lưới ở Việt Nam đang trong giai đoạn khởi đầu và xúctiến khẩn trương Dưới đây tôi xin giới thiệu một số dự án nổi bật
a Sở bưu chính- viễn thông, sở khoa học - công nghệ thành phố Hồ Chí Minh
Sở bưu chính- viễn thông, sở khoa học - công nghệ thành phố Hồ Chí Minhkhuyến khích các tổ chức nghiêm cứu khoa học tham gia vào tổ chức PRAGRMA,
từ đó có thể tiếp cận, chuyển giao và làm chủ các công nghệ mới trong lĩnh vựclưới Đặc biệt là việc tiếp nhận thông tin, dự án nghiêm cứu, khả năng sử dụng tàinguyên tính toán của các nước trong tổ chức PRAGRMA Bên cạnh đó, thành phố
Hồ Chí Minh cũng đang xúc tiến thành lập một viện khoa học và công nghệ tínhtoán trực thuộc UBND, từ đó có thể tạo ra các sản phẩm và làm đầu mối để thamgia vào các tổ chức PRAGRMA này
b Trường Đại học Bách Khoa TPHCM
Trường Đại học Bách khoa, đại học Quốc gia TPHCM thực hiện dự án vườnươm tạo công nghệ “Các giải pháp tận dụng kỹ thuật tính toán hiệu năng và tínhtoán lưới để giải các bài toán kỹ thuật thực tế” Mục tiêu chính của dự án là tìm cácgiải pháp công nghệ có tính liên thông đa ngành để giải quyết những bài toán ứng
Trang 28dụng lớn xuất hiện trong kỹ thuật Trong những năm đầu tiên dự án tập trung tìmhiểu các chuẩn Grid, bộ công cụ Globus Toolkit 4.0, nghiêm cứu các hệ thống máytính đã có với lưới tính toán, nghiêm cứu các vấn đề quản lý lưới, nghiêm cứuquyền sử dụng lưới, hiện thực phần mềm tham gia lưới Trong lĩnh vực ứng dụng,trong những năm đầu tiên đề tài tập trung khảo sát bài toán thực tế, nghiêm cứu cácphương pháp phân bố dữ liệu và bài toán, nghiêm cứu bảo mật dữ liệu, nghiêm cứubảo vệ thông tin cá nhân trong dữ liệu, nghiêm cứu đồng bộ các kết quả của bài toáncon Đối với bài toán lớn, nhóm nghiêm cứu thực hiện bài toán thiết kế vi mạch.
c.Trường đại học Khoa Học tự nhiên
Ở trường Đại học khoa học tự nhiên, Đại học quốc gia TPHCM, nhómchuyên môn thuộc khoa toán – tin, công nghệ sinh học đã phối hợp thực hiện một sốcác công việc liên quan đến việc cài đặt gói phần mềm BLAST của trung tâm thôngtin công nghệ sinh học Hoa Kỳ (NCBI – National Center for BiotechologyInformation) để tìm kiếm các trình tự sinh học và thử nghiệm triển khai Grid trênmạng cục bộ của khoa
Phân viện công nghệ thông tin tại TPHCM thực hiện hai đề tài liên quan đếntính toán lưới là: Đề tài 1: “Nghiêm cứu và triển khai ứng dụng Grid có tính bảomật cao” thực hiện từ 11/2004 đến 6/2006 Nhóm thực hiện đề tài đã triển khai trên
hệ thống tính toán lưới trên mạng toàn cầu kết nối với việc KISTI – Korea Institute
of Science and Technology Information, Hàn Quốc Đề tài 2: “Tính toán lưới trongviệc giải quyết một số vấn đề tin sinh học” trong năm 2005 và 2006
Hình 1.1.1.6.1: Sơ đồ hệ thống Grid của phân viện CNTT tại TPHCM
Trang 29Hình 1.1.1.6.2: Sơ đồ kết nối hệ thống Grid với hệ thống KISTI
1.1.2 Tính toán dạng Cluster
1.1.1.2.1 Tổng quan mô hình cụm
Cludtering là một kiến trúc nhằm đảm bảo nâng cao khả năng sẵn sàng chocác hệ thống mạng máy tính Clustering cho phép sử dụng nhiều máy chủ liên kếtvới nhau tạo thành một cụm (Cluster) có khả năng chịu đựng hay chấp nhận sai sót(fault-tolerant) nhằm nâng cao độ sẵn sàng của hệ thống mạng Cluster là một hệthống bao gồm nhiều máy chủ được kết nối nới nhau theo dạng song song hay phântán và được sử dụng như một tài nguyên thống nhất Nếu một máy chủ ngừng hoạtđộng do bị sự cố hoặc nâng cấp, bảo trì thì toàn bộ công việc mà máy chủ này đảmnhận sẻ tự động chuyển sang cho máy chủ khác (trong cùng một cluster) mà khônglàm cho hoạt động của hệ thống bị ngắt hay gián đoạn, quá trình này gọi là “Fail-Over”, và việc phục hồi tài nguyên của máy chủ trong hệ thống (Cluster) được gọi
là “Fail-Back”
Việc thiết kế và lắp đặt các Cluster cần phải thỏa mãn các yêu cầu sau:
- Yêu cầu về tính sẵn sàng cao (Availability) Các tài nguyên mạng phải luônsẵn sàng cao nhất để cung cấp và phục vụ người dùng cuối và giảm thiểu sự ngưnghoạt động của hệ thống ngoài ý muốn
- Yêu cầu về độ tin cậy cao (Reliability): Độ tin cậy cao của Cluster đượchiểu là khả năng giảm thiểu tần số xảy ra các sự cố, và nâng cao khả năng chịu đựngsai sót của hệ thống
- Yêu cầu về khả năng mở rộng được (Scalability): Hệ thống phải có khảnăng dế dễ dàng cho việc nâng cấp, mở rộng trong tương lai Việc nâng cấp mở
Trang 30rộng bao hàm cả việc thêm thiết bị, máy tính vào hệ thống để nâng cao chất lượngdịch vụ, cũng như việc thêm số lượng người dùng, thêm ứng dụng, dịch vụ và tàinguyên mạng khác.
Ba yêu cầu trên gọi tắt là RAS (Reliability – Availability – Scalability),những hệ thông đáp ứng được ba yêu cầu trên được gọi là hệ thống RAS ( Phân biệtvới Remote Access Service)
Cũng cần chú ý rằng hiệu quả của hệ thống Clustering phục vụ vào sự tươngthích giữa các ứng dụng dịch vụ, giữa phần cứng và phần mềm Ngoài ra, kỹ thuậtClustering không thể chống lại các sự cố do virus, sai sót của phần mềm hay các saisót người sử dụng Đế chống lại các sự cố này cần xây dựng một cơ sở dữ liệu đượcbảo vệ chắn chắc cũng như có các kế hoạch khôi phục, backup dữ liệu
Hệ thống máy tính song song ghép cụm là các hệ thống máy tính song songđược xây dựng từ các nút tính toán và thiết bị mạng thông dụng Mỗi nút tính toánđóng vai trò điều khiển vào/ra là một hệ thống hoàn chỉnh, có khả năng làm việcđộc lập Hệ thống tính toán song song ghép cụm là một máy tính song song, trongđó:
- Các tài nguyên tính toán bao gồm bộ xử lý và bộ nhớ trong tại mỗi máytính
- Các tài nguyên tính toán này có khả năng truyền thông và kết hợp với nhauthông qua cáp mạng Thông thường, quy mô của hệ thống chỉ giới hạn trong mộtmạng cục bộ (LAN), trong đó có một máy tính đóng vai trò là máy chủ (Server), cácmáy còn lại đóng vai trò là nút tính toán (Computing node)
Việc thiết lập hệ thống tính toán song song ghép cụm từ những máy tính cócấu trúc đơn giản sử dụng công nghệ mạng phổ biến đã bắt đầu từ năm 1994 với môhình Beowulf Cluster của Thomas Sterling và Donal Becker Hệ thống tính toánsong song phân cụm rẻ hơn nhiều so với một siêu máy tính cùng sức mạnh Điềunày làm cho các hệ thống tính toán song song phân cụm này càng phổ biến và đặcbiệt phù hợp với các nước đang phát triển, các trường đại học Tuy nhiên, các hệthống tính toán song song phân cụm cũng có những hạn chế như: quá trình triểnkhai, cấu hình hệ thống tương đối phức tạp, hệ thống hoạt động không ổn định bằngcác siêu máy tính Nhược điểm lớn nhất là vấn đề truyền thông giữa các nút tính
Trang 31toán Việc nghiêm cứu nhằm nâng cao khả năng truyền thông là vấn đề quan trọnghàng đầu trong quá trình phát triển các cấu trúc và mô hình phân cụm Các hệ thốngtính toán song song hiện đại đều dùng kiến trúc mạng tiên tiến như: Myrinet,Gigabit Ethernet, … Nhằm nâng cao tốc độ truyền giữa các nút tinh toán
1.1.1.2.2 Cấu trúc của Cluster
Cluster được tổ chức thành các nhóm (farm hay pack) Trong hầu hết cáctrường hợp, các dịch vụ ở tầng trước và giữa (front-end and middle-tiers services)
được tổ chức thành các farm sử dụng các Clone, trong khi các dịch vụ tầng sau
(back-end services) được tổ chức thành các pack
Cluster Farm là một nhóm các máy chủ chạy các dịch vụ giống nhau, nhưngkhông dùng chung cơ sở dữ liệu Được gọi là Farm bởi chúng xử lý bất cứ yêu cầunào gửi đến cho chúng bằng cách bản sao cơ sở dữ liệu (tài nguyên) giống hệt nhauđược lưu trữ cục bộ, chứ không dùng chung một bản cơ sở dữ liệu Cũng bởi vậynên các máy chủ thành viên của Farm làm việc độc lập và chúng được gọi là Clone(Clone là máy tính được thiết kế mô phỏng chức năng của máy tính khác)
Cluster Pack là nhóm các máy hoạt động cùng với nhau và chia sẻ với nhaucác phần cở sở dữ liệu dùng chung Được gọi là Pack vì sự hoạt động của các máychủ trong Pack có liên hệ chặt chẽ với nhau và chúng làm việc theo một phươngthức thống nhất để quản lý và duy trì các dịch vụ
Chế độ hoạt động của cluster:
Mỗi máy chủ trong Cluster được gọi là một nút (Cluster Node), có thể đượcthiết lập ở chế độ chủ động (Active) hay thụ động (Passive) Khi một nút ở chế độchủ động nó sẽ chủ động xử lý các yêu cầu Còn khi ở chế độ thụ động thì sẽ nằm ởchế độ nóng Stanby chờ để sẵn sàng thay thế cho nút khác nếu bị hỏng Nguyên lýhoạt động của Cluster mô tả như hình
Trang 32Hình 1.1.2.2.1: Nguyên lý hoạt động của một ClusterTrong một Cluster có nhiều nút có thể hợp lại (cả nút chủ động và thụ động).Trong những mô hình loại này việc quyết định một nút được cấu hình là máy chủđộng hay thụ động rất quan trọng Xem xét các tình huống sau để hiểu rõ lý do:
- Nếu một nút là chủ động bị sự cố và có một nút thụ động sẵn sàng, các ứngdụng và dịch cụ đang chạy trên nút hỏng có thể lập tức chuyển sang nút thụ động
Vì máy chủ đóng vai trò là nút thụ động hiện tại chưa chạy ứng dụng hay dịch vụ gìnên nó có thể gánh toàn bộ công việc của máy chủ hỏng mà không ảnh hưởng tớicác ứng dụng dịch vụ cung cấp cho người dùng cuối (ngầm định là các máy chủtrong Cluster có cấu trúc giống hệt nhau)
- Nhưng nếu tất cả máy chủ trong Cluster là chủ động và có nút bị sự cố, cácứng dụng và dịch vụ chạy trên máy chủ hỏng sẽ phải chuyển sang cho một máy chủkhác cũng đóng vai trò chủ động Vì là chủ động nên bình thường máy cũng phảiđảm nhận các ứng dụng và dịch vụ chạy trên nó Do vậy để đảm bảo hệ thống hoạtđộng bình thường kể cả khi có sự cố máy chủ trong Cluster cần phải có cấu hình dư
đủ để có thể gánh thêm khối lượng công việc của máy chủ khác khi cần
Trong cấu trúc Cluster mà mỗi nút chủ động được dự phòng một nút thụđộng, các máy chủ cần có cấu hình cao sao cho với khối lương công việc trung bìnhchúng sử dụng hết khoảng 50% CPU và dung lượng bộ nhớ
Trong cấu trúc Cluster mà số nút chủ động nhiều hơn số nút thụ động, cácmáy chủ cần có cấu hình tài nguyên CPU và bộ nhớ mạnh hơn để có thể xử lý đượckhối lượng công việc cần thiết khi một nút nào đó bị hỏng
Trang 33Các nút trong một Cluster thường là một bộ phận của cùng một vùng(domain) và có thể được cấu hình là máy điều khiển cùng (Domain Controllers) haymáy chủ thành viên Lý tưởng nhất là mỗi Cluster nhiều nút có ít nhất hai nút làmmáy điều khiển vùng và đảm nhận việc FailOver đối với các dich vụ vùng thiết yếu.Nếu không như vậy thì khả năng sẵn sàng trên Cluster bị phụ thuộc và khả năng sẵnsàng của máy điều khiển trong Domain.
1.1.1.2.3 Cluster nhiều địa điểm phân tán.
Với các hệ thống mạng lớn có các người dùng phân bố rải rác, hiệu quả củaviệc dự phòng chống sự cố và nâng cao của mạng sẽ được cải thiện hơn nhiều nếuxây dựng hệ thống Cluster bố trí nhiều địa điểm Kiến trúc nhiều địa điểm có thểđược thiết kế theo rất nhiều cách khác nhau, trong đó phổ biến nhất là có một điểmgốc và một số điểm xa
Với kiểu thiết kế đầy đủ, toàn bộ cấu trúc điểm gốc được xây dựng lại đầy đủ
ở các điểm xa Điều này cho phép các điểm xa hoạt động độc lập và có thể xử lýtoàn bộ khối lượng công việc của điểm gốc nếu cần Trong trường hợp này, việcthiểt kế phải đảm bảo sao cho cơ sở dữ liệu và các ứng dụng giữa các điểm gốc vàcác điểm ở xa phải đồng bộ và được cập nhật dữ liệu sao lặp ở chế độ thời gianthực
Với kiểu thiết kế thực từng phần thì chỉ có các thành phần cơ bản là được càiđặt ở các điểm ở xa nhằm: Xử lý các khối lượng công việc quá tải trong các giờ caođiểm, duy trì hoạt động ở mức cơ bản trong trường hợp điểm gốc site bị sự cố, cungcấp một số các dịch vụ hạn chế nếu cần
Cả kiểu thiết kế đầy đủ hay từng phần đều dùng phương cách phân tán cácmáy chủ rải rác về mặt địa lý Cluster phân tán về địa lý sử dụng mạng LAN ảo(Virtual LAN) để kết nối các mạng khu vực lưu trữ SAN (Storage Area Network)qua những khoảng cách lớn Để có thể duy trì hoạt động Cluster một cách hiệu quả,yêu cầu đối với kết nối trong mạng LAN ảo phải có độ trễ khoảng dưới 500ms
1.1.1.2.4 Tối ưu hóa các thiết bị lưu trữ trên Cluster
Các thiết bị trên Cluster cần được tối ưu hóa trên cơ sở những nhu cầu vềhiệu năng và mức độ sẵn sàng
Trang 341.1.1.2.5 Tính mở của Cluster
Một vấn đề mà các nhà đầu tư xây dựng hệ thống cần quan tâm là khả năng
mở rộng hệ thống Clustering Tuy theo yêu cầu cụ thể các Cluster có thể cần phải
mở thêm các máy chủ vào Cluster, hoặc thêm CPU và RAM cho các máy chủ đểtăng khả năng đảm nhận công việc cho các máy chủ đã có
Muốn mở rộng Cluster bằng cách thêm các Server thì cả hai yếu tố là Kỹthuật Clustering và Hệ điều hành mà server sử dụng điều quan trong
Muốn mở rộng Cluster bằng cách thêm các CPUs và RAM thì việc đangdùng hệ điều hành nào là vấn đề rất quan trọng Ví dụ Hệ điều hành Windown 2000Datacentrer Server hỗ trợ tối da 32 bộ xử lý và 64 GB RAM Như vậy, có thể phải
nâng cấp hệ điều hành từ Advanced lên Datacentrer Server nếu yêu cầu thêm CPU
và RAM vượt qua khả năng của hệ điều hành đang dùng
Hình 1.1.1.2.5: Sơ đồ nguyên lý của một Cluster lớn
Trang 35- Mạng phục vụ cho việc quản lý hệ thống: thường là mạng được thiết lậpbới các chuyển mạch 10/100 Ethernet Cũng cần phải có cả máy chủ phục vụ đầucuối trong mạng này.
Clustering là một kỹ thuật được áp dụng nhằm nâng cao độ tin cậy và tínhsẵn sàng của hệ thống mạng máy tính Một mạng được cấu trúc dưới dạngClustering sẽ có khả năng hoạt động bình thường ngay cả khi có sự cố xảy ra chomột máy chủ mạng trong cluster Tùy theo yêu cầu cụ thể của hệ thống mà có thểcấu trúc cluster 2 nút, 4 nút, 8 nút hoặc nhiều hơn Các nút trong cluster có thể toàn
ở thể chủ động, hoặc có nút chủ động, có nút thụ động Mỗi cấu trúc của Cluster sẽđòi hỏi một cấu hình phần cứng của các máy chủ tương ứng Hệ điều hành cũng làmột yếu tố quan trọng cần xem xét khi thiết kế Clustering cho mạng
1.2 Bộ nhớ chia sẻ
1.2.1 Đa luồng (Pthread)
1.21.1 Tổng quan về đa luồng
Luồng là đơn vị cơ bản của sự sử dụng CPU, là dòng điều khiển trong mộttiến trình Nếu tiến trình luồng có nhiều luồng, nó có thể thực hiện nhiều tác vụ tạimột thời điểm
Luồng bao gồm: một định danh luồng hay mã luồng (Thread ID), một bộđếm chương trình (PC – Program Count), tập thanh ghi (register set) và ngăn xếp(Stack)
Các luồng trong một tiến trình chia sẻ với các luồng khác thuộc cùng mộtquá trình đoạn mã (code), đoạn dữ liệu (data), và tài nguyên hệ điều hành như cáctập tin đang mở và các tín hiệu Một quá trình truyền thống có một luồng điều khiểnđơn Nếu quá trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác
vụ tại một thời điểm
Trang 36Hình 1.2.1.1: Hiện thị sự khác giữa quá trình đơn luồng và quá trình đa luồngTrong những trường hợp cụ thể một ứng dụng đơn có thể được yêu cầu thựchiện nhiều tác vụ đơn Thí dụ, một chương trình phục vụ web chấp nhận các yêucầu khách hàng như trang web, hình ảnh, âm thanh, … Một tiến trình phục vụ web
có thể có nhiều khác hàng truy nhập đồng thời Nếu tiến trình phục vụ web chạynhư một tiến trình đơn luồng truyền thống thì nó chỉ có thể phục vụ một khách hàngtại cùng một thời điểm Lượng thời gian mà khách hàng phải chờ yêu cầu của nóđược phục vụ là rất lớn
Một giải pháp là có một trình phục vụ như một tiến trình đơn chấp nhận cácyêu cầu Khi trình phục vụ nhận một yêu cầu, nó sẽ tạo quá trình riêng để phục vụyêu cầu đó Phương pháp tạo ra quá trình này là cách sử dụng thông thường trướckhi luồng trở nên phổ biến Tạo ra quá trình có ảnh hưởng rất lớn Nếu một quátrình mới sẽ thực hiện cùng tác vụ như quá tình đã có thì tại sao lại gánh chịu tất cảchi phí đó? Thường sẽ hiệu quả hơn cho một tiến trình chứa nhiều luồng phục vụcùng mục đích Tiếp cận này sẽ đa luồng tiến trình phục vụ web Trình phục vụ sẽtạo một luồng riêng “lắng nghe” các yêu cầu người dùng, khi yêu cầu được thựchiện nó không tạo ra quá trình khác mà sẽ tọa ra một luồng khác phục vụ yêu cầu
Luồng đó đóng vai trò quan trọng trong hệ thống gọi thủ tục ánh xạ (RemoteProcess Call –RPC) RPCs cho phép giao tiếp quá trình bằng cách cung cấp cơ chếgiao tiếp tương tự như các lời gọi hàm hay thủ tục thông thường Điểm hình, cáctrình phục vụ RPCs là đa luồng Khi một trình phục vụ nhân thông điệp, nó phục vụthông điệp dùng một luồng riêng Điều này cho phép phụ vụ nhiều yêu cầu đồngthời
Trang 371.2.1.1.2 Các lợi ích của tiến trình đa luồng
Những lợi ích của lập trình đa luồng có thể được chia làm bốn loại:
- Sự đáp ứng: Đa luồng một ứng dụng giao tiếp cho phép chương trình tiếptục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài,
do đó gia tăng sự đáp ứng đối với người dùng Chẳng hạn, một tiến trình web vẫn
có thể đáp ứng người dùng bằng một luồng trong khi menu ngữ cảnh đang nạp bằngmột luồng khác
- Chia sẻ tài nguyên: Mặc định các luồng chia sẻ bộ nhớ và các tài nguyêncủa các quá trình mà chúng thuộc về Lợi ích của việc chia sẻ mã là nó cho phépmột ứng dụng có nhiều hoạt động của các luồng khác nhau nằm trong không gianđịa chỉ
- Kinh tế: Cấp phát bộ nhớ và các tài nguyên cho việc tạo quá trình là rất đắt
Vì các luồng chia sẻ tài nguyên của quá trình mà chúng thuộc về nên nó kinh tế hơn
để tạo và chuyển ngữ cảnh giữa các luồng Khó để đánh giá chính xác theo kinhnghiệm sự khác biệt chi phí cho việc tạo và duy trì một quá trình hay một luồng,nhưng thường nó mất nhiều thời gian để tạo và quản lý một quá trình đơn hơn mộtluồng Trong hệ điều hành Solaris 2, tạo một quá trình chậm hơn 30 lần tạo mộtluồng và chuyển ngữ cảnh chậm hơn 5 lần
- Thực hiện kiến trúc đa xử lý (Multiprocessor): Các lợi thế của đa luồng cóthể phát huy trong kiến trúc đa xử lý, vì các luồng có thể chạy song song trên các bộ
xử lý, và ở đó mỗi luồng thực thi song song trên một bộ xử lý khác nhau Một quátrình đơn luồng chỉ có thể chạy trên một CPU Đa luồng trên một máy nhiều CPUgia tăng tính đồng thời Trong kiến trúc đơn xử lý, CPU thường chuyển đổi qua lạigiữa mỗi luồng quá nhanh để tạo ra hình ảnh của sự song song nhưng trong thực tếchỉ có một luồng đang chạy tại một thời điểm
1.2.1.1.3 Luồng người dùng và luồng nhân
Chúng ta xem xét luồng như một chiều hướng chung Tuy nhiên, hỗ trợluồng được cung cấp hoặc ở cấp người dùng cho các luồng người dùng hoặc ở cấpnhân cho các luồng nhân
- Luồng người dùng (User threads): Được hỗ trợ dưới dạng nhân và được càiđặt bởi thư viện luồng tại cấp người dùng (User level) Thư viện cung cấp hỗ trợ
Trang 38cho việc tạo luồng, lập thời biểu, và quản lý mà không có sự hỗ trợ nhân Vì nhânkhông biết các luồng cấp người dùng, tất cả việc tạo luồng và lập thời biểu đượcthực hiện trong không gian người dùng mà không cần can thiệp của nhân Do đó cácluồng cấp người dùng thường tạo ra và quản lý nhanh, tuy nhiên chúng cũng cónhững trở ngại như khi nhân là đơn luồng, nếu có 1 luồng người sử dụng thực hiệnmột lời gọi hệ thống khóa nó sẽ gây cho toàn bộ tiến trình khóa bị khóa, mặc dù cáctiến trình khác vẫn có thể chạy trong ứng dụng Các thư viện luồng người dùng gồmcác luồng POSIX Pthread, Win32 threads, Java Threads, Mach C-Thread và Solaris
2 UI- Thread
- Luồng nhân (Kernel threads): Được hỗ trợ trực tiếp bởi hệ điều hành Nhânthực hiện tạo luồng, lập thời biểu, và quản lý không gian nhân Vì quản lý luồngđược thực hiện bởi hệ điều hành, luồng nhân thường tạo và quản lý chậm hơn so vớiluồng thực hiện lời gọi hệ thống nghẽn, nhân có thể lập thời biểu một luồng kháctrong ứng dụng thực thi Trong môi trường đa xử lý, nhân có thể lập thời biểu luồngtrên một bộ xử lý khác Hầu hết các hệ điều hành hiện nay như Windows Server,Solaris 2, BeOS và Tru64 UNIX, LINUX, Mac OS X, Windows NT/2000/XP hỗtrợ các luồng nhân
1.2.1.4 Các mô hình đa luồng
Để chạy trên CPU, các luồng người dùng cuối cùng phải được ánh xạ vàomột luồng nhân Nhiều hệ điều hành cung cấp hỗ trợ cả 2 luồng nhân và người dùngnên tạo ra nhiều mô hình đa luồng khác nhau Chúng ta xem xét ba loại cài đặtluồng thông thường
a Mô hình nhiều - một (Many to One)
Mô hình nhiều – một ánh xạ nhiều luồng cấp người dùng tới một luồng cấpnhân Quản lý luồng được thực hiện trong không gian người dùng vì thế nó hiệu quảnhưng toàn bộ quá trình sẽ bị khóa nếu một luồng thực hiện lời gọi hệ thống khóa
Vì chỉ một luồng có thể truy xuất nhân tại một thời điểm nên nhiều luồng không thểchạy song song trên nhiều bộ xử lý Ví dụ: Solaris Green Threads, GNU Protablethreads
Trang 39Hình 1.2.1.4.1: Mô hình Nhiều- Một
b Mô hình một – một (One to One)
Mô hình một – một ánh xạ mỗi luồng người dùng tới một luồng nhân Nócũng cấp khả năng đồng thời tốt hơn mô hình nhiều – một bằng cách cho một luồngkhác chạy khi một luồng thực hiện lời gọi hệ thống nghẽn Nó cũng cho phép nhiềuluồng chạy song song trên các bộ xử lý khác nhau Chỉ có một trở ngại trong môhình này là tạo luồng người dùng yêu cầu tạo một nhân tương ứng nên cần giới hạn
số luồng được hỗ trợ bởi hệ điều hành Ví dụ: Windows NT/2000/XP, Linux,Solaris 9 trở đi
Hình 1.2.1.4.2: Mô hình một – một
c Mô hình nhiều- nhiều (Many to Many)
Mô hình nhiều-nhiều đa hợp nhiều luồng cấp người dùng tới số lượng nhỏhơn hay bằng các luồng nhân Số lượng các luồng nhân có thể xác định hoặc mộtứng dụng cụ thể hay một máy cụ thể (một ứng dụng có thể được xác định nhiềuluồng nhân trên một bộ xử lý hơn trên một đơn xử lý) Trong khi mô hình nhiều –một cho phép người phát triển tạo ra nhiều luồng người dùng như họ muốn, thìđồng thời thật sự không đạt được vì nhân có thể lập thời biểu chỉ một luồng tại mộtthời điểm Mô hình một-một cho phép đồng thời tốt hơn nhưng người phát triểnphải cẩn thận không tạo ra quá trình nhiều luồng trong một ứng dụng Mô hìnhnhiều-nhiều gặp phải một trong hai vấn đề khiếm khuyết: người phát triển có thể tạo
Trang 40nhiều luồng người dùng khi cần thiết và các luồng nhân tương ứng có thể chạy songsong trên một bộ đa xử lý Khi một luồng cực thực hiện lời gọi hệ thống khóa, nhân
có thể lập thời biểu một luồng khác thực thi Ví du: Solaris trước phiên bản 9,Windows 2000/XP với gói ThreadFiber
Hình 1.2.1.4.3: Mô hình nhiều-nhiều
d Mô hình 2 mức
Tương tự như Many to Many, chỉ khác là cho phép một luồng người dùng được giới hạn bởi một luồng nhân Ví dụ: IRIX, HP-UX, Tru64 UNIX, Solaris 8 trởđi
Hình 1.2.1.4.4: Mô hình 2 mức
1.2.1.5 Cấp phát luồng
a Lời gọi hệ thống Fork và Exec
Trong một chương trình đa luồng, ngữ nghĩa của các lời gọi hệ thống Fork vàExec thay đổi Nếu một luồng trong lời gọi chương trình Fork thi quá trình mới saochép lại quá trình tất cả luồng hay là một quá trình đơn luồng mới Lời gọi hệ thốngExec điển hình thực hiện công việc Nghĩa là, nếu một luồng nạp lời gọi hệ thốngExec, chương trình được xác định trong tham số Exec sẽ thay thế toàn bộ quá trình– chứa tất cả luồng và các quá trình tải nhẹ