0
Tải bản đầy đủ (.pdf) (186 trang)

4 2 Frontend quản trị cluster nhƣ thế nào?

Một phần của tài liệu LUẬN VĂN: NGHIÊN CỨU HỆ THỐNG CỤM MÁY TÍNH XỬ LÝ SONG SONG ROCKS VÀ ỨNG DỤNG PPTX (Trang 52 -186 )

Để có thể mở kết nối SSH tới một máy mà không cần gõ password, khóa public của ngƣời dùng trên máy cục bộ cần đƣợc thêm vào file $HOME/.ssh/authorized_keys trên máy cần kết nối. Đối với Rocks, khi ngƣời dùng đăng nhập lần đầu tiên, nếu file $HOME/.ssh/id_rsa chƣa tồn tại thì ngƣời dùng sẽ đƣợc yêu cầu tạo mới cặp khóa SSH. Điều này đúng với tất cả ngƣời dùng trên hệ thống, kể cả root. Chính vì vậy, trong lần đầu tiên khởi động terminal, ngƣời dùng sẽ gặp một màn hình nhƣ sau:

41

Hình 30 – Tạo cặp khóa private, public trong lần đầu khởi động terminal

Một điều chú ý quan trọng: khi hệ thống yêu cầu nhập passphrase, ngƣời dùng chỉ cần nhấn Enter để bỏ qua (không nhập bất kỳ ký tự nào khác).

Sau khi cặp khóa SSH của ngƣời dùng đƣợc tạo, khóa public sẽ đƣợc copy vào file $HOME/.ssh/authorized_keys.

Trên máy frontend, thƣ mục home của root không đƣợc mount bằng NFS trên tất cả các máy compute nên file $HOME/.ssh/authorized_keys sẽ đƣợc đưa vào file cơ sở và đƣợc phân phối tới các máy compute trong quá trình cài đặt.

Đối với ngƣời dùng root trên frontend, việc thiết lập cặp khóa SSH là rất quan trọng do các tác vụ quản trị của root đều yêu cầu SSH đến các compute node. Chẳng hạn, lệnh cluster-fork poweroff phân phối lệnh poweroff tới tất cả các máy trong cluster thông qua SSH.

42

Hình 31 – SSH tới compute-0-0

Trong phần dƣới đây, chúng ta sẽ tìm hiểu 2 tác vụ quản trị cơ bản và quan trọng nhất đối với cluster Rocks.

43

3. 4. 3. Các tác vụ quản trị cơ bản

3. 4. 3. 1. Cài đặt lại một compute node trong lần boot PXE tiếp theo

Kể từ phiên bản Rocks 4.3, thứ tự boot ƣu tiên set trong BIOS đƣợc khuyến cáo là:

 CDROM

 PXE boot  Hard disk

Do PXE boot đứng trƣớc Hard disk, nên chúng ta có thể cho rằng thiết lập nhƣ thế này trong BIOS sẽ khiến các compute node liên tục cài lại mỗi lần reboot. Tuy nhiên, giá trị mặc định ứng với tham số action (sẽ mô tả dƣới đây) cho phép hệ thống bỏ qua quá trình PXE boot và thực thi quá trình boot trên thiết bị tiếp theo trong danh sách kể trên (ở đây là Hard disk) (cũng từ đây ta có thể thấy vai trò của insert-ethers: Nhận diện các thiết bị (bao gồm máy con, thiết bị mạng, ..., gọi chung là appliance) và thêm các thông tin cần thiết vào database, chứ không có vai trò gì trong quá trình cài đặt của từng máy con. Chính vì vậy khi cài đặt lại các máy con ta không cần thiết phải khởi động insert-ethers do các thông tin cần thiết đã có trong cơ sở dữ liệu rồi.).

Các thuộc tính của quá trình boot PXE có thể đƣợc thiết lập nhờ thay đổi giá trị 2 tham số: bootbootaction. Tham số boot định nghĩa hành động nào sẽ đƣợc thực thi (ví dụ, os để bỏ qua quá trình boot PXE và boot trên thiết bị tiếp theo trong danh sách do BIOS định nghĩa, install để cài đặt lại). Đối với tất cả các máy con đang hoạt động ổn định, giá trị của tham số actionos.

44

Tham số bootaction "bind" (tham chiếu) một action cụ thể tới một số tham số cần thiết để thực thi action đó.

Hình 33 – Các bootaction hiện có

Ví dụ, để bắt buộc máy compute-0-0 phải cài đặt lại trong lần boot PXE tiếp theo, ta thực thi command:

rocks set host boot compute-0-0 action=install

Khi máy compute-0-0 đƣợc khởi động lại, do tham số action đã thay đổi giá trị từ os thành install nên quá trình boot PXE đƣợc thực thi và máy compute-0-0 đƣợc cài đặt lại. Sau khi cài đặt thành công, compute-0-0 yêu cầu máy frontend thiết lập giá trị tham số action của quá trình boot PXE của nó thành os. Để kiểm chứng, ta có thể yêu cầu máy compute-0-0 khởi động lại:

ssh compute-0-0 "shutdown -r now"

Lƣu ý rằng ta cũng có thể sử dụng wildcard để thực thi hàng loạt lệnh trên. Cụ thể, để yêu cầu tất cả các node cài đặt lại trong lần boot tiếp theo, ta thực thi lệnh:

45

Còn để bắt buộc cài đặt lại tất cả các compute node, ta thực thi lệnh: rocks set host boot compute action=install

Để thay đổi tham số bootaction, trƣớc hết ta cần định nghĩa bootaction mới (nếu chƣa có). Ví dụ, ta sẽ định nghĩa một bootactioninstall headless noacpi với các tham số nhƣ sau:

 Kernel: vmlinuz-5.2-i386  Ramdisk: initrd.img-5.2-i386

 Args: ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 headless vnc acpi=off

Command là:

rocks add bootaction action="install headless noacpi" kernel="vmlinuz- 5.2-i386" ramdisk="initrd.img-5.2-i386 ks ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 headless vnc acpi=off"

Hình 34 – Thêm bootaction

46

Hình 35 – Các thuộc tính của node compute-0-0

Thực hiện lệnh:

rocks set host installaction compute-0-0 action="install headless noacpi"

47

Ta sẽ thấy giá trị tham số bootaction của compute-0-0 bị thay đổi:

Hình 37 – Giá trị tham số installaction thay đổi

Để xóa bỏ bootaction vừa thêm, thực thi lệnh:

48

Hình 38 – Loại bỏ một bootaction

Lƣu ý rằng khi thực thi lệnh này, Rocks không kiểm tra giá trị các tham số bootaction của các compute node mà thực thi xóa luôn từ cơ sở dữ liệu. Do đó ngƣời quản trị cần phải thật cẩn thận khi thực thi lệnh này, kiểm tra giá trị bootaction của các computenode trƣớc khi xóa bỏ một bootaction nào đó.

3. 4. 3. 2. Xem và thay đổi các cấu hình mạng

Rocks cung cấp một số command để xem và thay đổi các cấu hình mạng của các node trong cluster. Ví dụ, để liệt kê các interface:

49

Hình 39 – Xem các cổng ethernet

Để thay đổi các thông tin về mạng, sử dụng lệnh rocks set host interface. Ví dụ, thực thi các command sau đây ta sẽ hoán đổi các ethernet 0 và 1 cho nhau.

rocks set host interface mac cluster iface=eth1 mac=00:0c:29:6b:1b:48 rocks set host interface mac cluster iface=eth0 mac=00:0c:29:6b:1b:52

(Thực ra cần hoán đổi cả module (rocks set host interface module) nhƣng vì module giống nhau nên không cần).

50

CHƢƠNG 4. LẬP TRÌNH SONG SONG VỚI MPI

4. 1. Các mô hình lập trình song song

Có nhiều mô hình lập trình song song, tuy nhiên phổ biến nhất là 4 mô hình: Mô hình bộ nhớ chia sẻ (Shared Memory), mô hình đa luồng (Threads), mô hình truyền thông điệp (Message Passing) và mô hình song song dữ liệu (Data Parallel). Các mô hình lập trình song song tồn tại nhƣ một tầng giao diện giữa ứng dụng xử lý song song và kiến trúc phần cứng / bộ nhớ. Trên thực tế, các mô hình lập trình kể ra trên đây có thể đƣợc cài đặt trên bất kỳ kiến trúc phần cứng nào [4]. Chẳng hạn:

 Mô hình chia sẻ bộ nhớ có thể đƣợc cài đặt trên các máy có bộ nhớ phân tán. Theo hƣớng này, bộ nhớ của máy là phân tán về mặt vật lý nhƣng thống nhất về mặt logic. Hƣớng tiếp cận này thƣờng đƣợc mô tả bằng khái niệm bộ nhớ chia sẻ ảo.  Mô hình truyền thông điệp có thể đƣợc cài đặt trên các máy có bộ nhớ chia sẻ, là

các máy mà các tác vụ tính toán có thể truy cập trực tiếp vào không gian bộ nhớ chung.

Việc sử dụng mô hình nào tùy thuộc vào các tài nguyên hiện có và sự lựa chọn của ngƣời dùng. Không có mô hình nào là tốt nhất, mặc dù vẫn có những mô hình đƣợc cài đặt tốt hơn những mô hình còn lại [4].

4. 1. 1. Mô hình bộ nhớ chia sẻ

Trong mô hình bộ nhớ chia sẻ, các tác vụ tính toán dùng chung một không gian địa chỉ trong đó các thao tác đọc và ghi đƣợc thi hành một cách bất đồng bộ. Việc truy cập tới vùng nhớ chia sẻ đƣợc quản lý bởi các công cụ nhƣ khóa (lock), cờ hiệu (semaphore). Do không có khái niệm tác vụ nào sở hữu dữ liệu nào, nên hầu nhƣ ngƣời lập trình không cần quan tâm đến việc cài đặt liên lạc giữa các tác vụ. Tuy nhiên, đây cũng chính là điểm yếu lớn nhất của mô hình này, vì việc giữ cho một cụm dữ liệu nào đó là cục bộ đối với một tác vụ cụ thể là rất khó khăn, nhất là trong hoàn cảnh mô hình này không cung cấp một phƣơng tiện / quan niệm nào giúp quản lý tính cục bộ của dữ liệu.

51

Hình 40 – Mô hình bộ nhớ chia sẻ

Nguồn: [38]

4. 1. 2. Mô hình đa luồng

Trong mô hình đa luồng, một tiến trình đơn lẻ có thể có nhiều luồng thực thi song song. Các luồng liên lạc với nhau thông qua vùng nhớ toàn cục. Điều này khiến việc cài đặt trở nên khó khăn do cần phải đảm bảo không có hai luồng cùng sửa đổi giá trị của một vùng nhớ toàn cục nào đó vào một thời điểm bất kỳ. Nói chung mô hình đa luồng thƣờng đƣợc dùng với kiến trúc bộ nhớ chia sẻ.

52

Hình 41 – Mô hình đa luồng

Nguồn: [4]

4. 1. 3. Mô hình truyền thông điệp

Mô hình truyền thông điệp thƣờng đƣợc dùng với kiến trúc bộ nhớ phân tán. Mô hình này có những đặc điểm sau đây:

 Các tác vụ tính toán sử dụng các vùng nhớ cục bộ của chúng trong quá trình thực thi. Các tác vụ này có thể đƣợc thực thi trên cùng một máy tính hoặc (phổ biến hơn) trên nhiều máy tính.

 Các tác vụ này trao đổi dữ liệu bằng cách gửi và nhận thông điệp.

 Việc truyền dữ liệu giữa các tác vụ cần phải đồng bộ hóa giữa tác vụ gửitác vụ nhận, theo nghĩa, khi có một tác vụ truyền thông điệp thì phải có một tác vụ khác nhận thông điệp đó.

53

Hình 42 – Mô hình truyền thông điệp

Nguồn: [4]

4. 1. 4. Mô hình song song dữ liệu

Mô hình song song dữ liệu làm việc tốt với cả kiến trúc bộ nhớ chia sẻ lẫn kiến trúc bộ nhớ phân tán. Mô hình này có những đặc điểm sau đây:

 Hầu hết các công việc cần xử lý song song đều tập trung vào việc thực thi các tác vụ trên tập hợp dữ liệu. Nói chung tập hợp dữ liệu này đƣợc tổ chức theo một cấu trúc phổ biến, chẳng hạn một dãy các dữ liệu.

 Các tác vụ tính toán cùng làm việc trên một cấu trúc dữ liệu, nhƣng mỗi tác vụ làm việc trên một phần riêng biệt của cấu trúc dữ liệu đó.

 Các tác vụ thực thi các công việc giống nhau trên những phần dữ liệu riêng của chúng, ví dụ "Cộng thêm 4 vào tất cả các phần tử".

54

Hình 43 – Mô hình song song dữ liệu

Nguồn: [4]

4. 2. Các ƣu điểm của mô hình truyền thông điệp

4. 2. 1. Phổ biến

Mô hình truyền thông điệp rất phù hợp với hệ thống gồm các bộ xử lý riêng rẽ đƣợc kết nối với nhau thành một mạng cục bộ. Vì thế mô hình này phù hợp một cách tự nhiên với các siêu máy tính song song đang thịnh hành.

4. 2. 2. Khả năng mô tả

Mô hình truyền thông điệp đƣợc xem nhƣ một mô hình hoàn chỉnh để diễn tả các thuật toán xử lý song song. Mô hình này cung cấp khả năng quản lý tính cục bộ dữ liệu – lƣu ý rằng đây chính là thiếu sót trong mô hình song song dữ liệu. Mô hình truyền thông điệp rất phù hợp với các thuật toán tự trị (Adaptive Algorithm, loại thuật toán có khả năng thay đổi tính chất tùy vào tài nguyên đƣợc cung cấp, chẳng hạn khi có thêm bộ nhớ thì độ phức tạp thuật toán giảm xuống [31]), hoặc các chƣơng trình có khả năng tiếp tục hoạt động ngay cả khi có sự không cân bằng về tốc độ tính toán [9].

55

4. 2. 3. Dễ gỡ lỗi hơn

Bẫy lỗi và gỡ lỗi cho các chƣơng trình xử lý song song hiện nay vẫn là một lĩnh vực nghiên cứu đầy thách thức. Nói chung việc viết các bộ bẫy / gỡ lỗi cho các chƣơng trình xử lý song song là dễ dàng hơn đối với mô hình chia sẻ bộ nhớ. Tuy nhiên, có lý do để nói rằng quá trình bẫy / gỡ lỗi diễn ra dễ dàng hơn trong mô hình truyền thông điệp. Đó là vì một trong những nguyên nhân phổ biến nhất dẫn đến lỗi trong các chƣơng trình xử lý song song là developer vô tình ghi đè lên vùng nhớ đã tồn tại. Mô hình truyền thông điệp quản lý việc truy cập bộ nhớ chặt chẽ hơn so với các mô hình khác (chỉ có một tiến trình duy nhất đƣợc phép truy cập trực tiếp tới một vùng nhớ cụ thể) nên tạo điều kiện để developer dễ dàng tìm ra những thao tác đọc / ghi gây lỗi. Một số trình gỡ lỗi thậm chí còn có thể hiển thị hàng đợi các thông điệp, điều mà các developer thƣờng không thể biết đƣợc.

4. 2. 4. Hiệu năng

Nguyên nhân cơ bản nhất khiến cho truyền thông điệp là mô hình không thể thiếu trong môi trƣờng tính toán song song chính là hiệu năng. Các CPU hiện đại càng ngày càng nhanh hơn, do đó việc quản lý bộ nhớ cache của chúng (và bộ nhớ nói chung) đã trở thành chìa khóa để tận dụng đƣợc khả năng của phần cứng. Mô hình truyền thông điệp cung cấp một phƣơng tiện để các developer liên kết các dữ liệu cụ thể với các tiến trình, và do đó, cho phép bộ biên dịch và bộ quản lý bộ nhớ cache hoạt động ở hiệu suất tối đa. Lƣu ý rằng trong thực tế, một trong những nguyên nhân khiến hệ thống các máy tính riêng rẽ có thể vƣợt qua khả năng tính toán của những cỗ máy chỉ có một vi xử lý chính là vì chúng có dung lƣợng bộ nhớ chính và bộ nhớ cache lớn hơn. Các ứng dụng phụ thuộc vào tài nguyên nhớ (Memory Bound Application, [31]) có thể đƣợc tăng tốc nếu đƣợc viết lại cho các hệ thống kiểu này. Thậm chí đối với các hệ thống máy tính dùng chung bộ nhớ, việc sử dụng mô hình truyền thông điệp cũng có thể giúp tăng hiệu năng vì developer có khả năng quản lý tính cục bộ dữ liệu.

4. 3. Giới thiệu về MPI

MPI (Message Passing Interface) không phải là một cuộc cách mạng trong lập trình cho các máy tính song song. MPI là tập hợp của những tính năng tốt nhất của rất nhiều hệ

56

thống truyền thông điệp đã tồn tại trƣớc nó. Các tính năng này, khi đƣợc đƣa vào MPI, sẽ đƣợc chuẩn hóa và nếu nhƣ phù hợp thì sẽ đƣợc phát triển thêm.

MPI là một bản mô tả (specification), không phải một bản cài đặt (implementation). Tính tới thời điểm năm 1999 (chƣa rõ con số thống kê cho thời điểm hiện tại), tất cả các nhà cung cấp các hệ thống máy tính song song đều cung cấp các bản cài đặt chuyên biệt hóa của MPI. Ngoài ra, nhiều bản cài đặt MPI miễn phí có thể đƣợc download từ nhiều nguồn trên internet. Do là một bản mô tả không phụ thuộc vào một cài đặt cụ thể nào, nên một chƣơng trình MPI đúng nghĩa phải có khả năng chạy trên tất cả các bản cài đặt mà không cần thay đổi gì. MPI có các phiên bản dành cho các ngôn ngữ khác nhau nhƣ C, C++, Fortran.

MPI là một thƣ viện, không phải một ngôn ngữ. Nó định nghĩa tên, các chuỗi lời gọi và kết quả của các tiến trình con đƣợc gọi từ một chƣơng trình Fortran; các hàm sẽ đƣợc gọi từ một chƣơng trình C; và các lớp và phƣơng thức tạo nên thƣ viện MPI cho C++. Các chƣơng trình MPI đƣợc viết bằng Fortran, C hoặc C++ đƣợc biên dịch bằng công cụ biên dịch thông thƣờng của các ngôn ngữ này và đƣợc liên kết tới thƣ viện MPI tƣơng ứng.

4. 4. Mục tiêu của MPI

Mục tiêu chính của MPI là để giúp các developer không cần thỏa hiệp giữa tính hiệu quả (efficiency), linh động (portability) và khả năng hoạt động (functionality). Cụ thể hơn, ngƣời dùng có thể viết các chƣơng trình có tính linh động cao trong khi vẫn tận dụng đƣợc khả năng từ các phần cứng và phần mềm đƣợc chuyên biệt hóa từ những nhà cung cấp khác nhau. Lƣu ý rằng một lớp ngƣời dùng quan trọng của MPI chính là những nhà phát triển các thƣ viện xử lý song song, đối với lớp ngƣời dùng này thì nhu cầu về tính hiệu quả, linh động và khả năng hoạt động là rất lớn.

Một phần của tài liệu LUẬN VĂN: NGHIÊN CỨU HỆ THỐNG CỤM MÁY TÍNH XỬ LÝ SONG SONG ROCKS VÀ ỨNG DỤNG PPTX (Trang 52 -186 )

×