Các mô hình hệ thống

Một phần của tài liệu Tối ưu hoá ứng dụng ngân hàng trên nền hệ thống phân tán777 (Trang 33)

Hệ thống phân tán có nhiều CPU cùng hoạt động, có thể có nhiều cách tổ

chức hoạt động cho các CPU này. Ở đây ta xem xét 2 loại cơ bản là workstation và processor pool, cũng như dạng kết hợp đặc tính của 2 loại trên. 1.4.2.1 Mô hình workstation:

Mô hình workstation là mô hình trong đó hệ thống bao gồm các workstation kết nối với nhau qua hệ thống mạng LAN tốc độ cao. Các workstation có thể là loại có đĩa local hoặc không, loại không có đĩa local gọi là diskless

workstation, loại có đĩa local thì gọi là diskfull workstation hoặc disky workstation.

Diskless workstation phải dùng fileserver, loại disky workstation thì sử dụng các đĩa riêng, các đĩa này thực hiện một trong 4 chức năng sau:

1. Paging và các file tạm

2. Paging, các file tạm và các file nhị phân hệ thống.

3. Paging, các file tạm, các file nhị phân hệ thống và file caching. 4. Làm một hệ thống file local

Mô hình này đơn giản và dễ hiểu nhưng có 2 nhược điểm, thứ nhất là không tập trung, thứ 2 là nếu có workstation không làm việc thì các user khác cũng không thể tận dụng workstation này để nâng cao khả năng tính toán của mình.

Vấn đề thứ 2 được giải quyết bằng cách, phát hiện các workstation hiện

không làm việc, chạy các tiến trình từ xa trên đó, trả lại tài nguyên của workstation cho user khi user sử dụng lại workstation đó.

Giải thuật để phát hiện các workstation rỗi có thể chia làm 2 loại: server driven, khi workstation đi vào trạng thái rỗi thì nó sẽ thông báo bằng cách, ví dụ khai báo tên, địa chỉ mạng và các đặc tính của nó vào registry. Loại kia là client driven, khi một câu lệnh được gọi thực hiện từ xa nó phát tán yêu cầu này để thông báo chương trình mà nó muốn thực hiện, lượng bộ nhớ mà nó cần… Nếu workstation nào có thể đáp ứng được yêu cầu đó thì nó sẽ gửi phản hồi cho câu lệnh đó, hình 1.16.

Hình 1.16: Giải thuật dựa trên registry để tìm và sử dụng các workstation rỗi 1.4.2.2 Mô hình Processor Pool:

Trong mô hình này, một nhóm các bộ xử lí được tập trung lại, các user sẽ được cấp phát các CPU theo yêu cầu của ứng dụng. Căn cứ của mô hình này là giải quyết vấn đề queueing. Hệ thống queueing là trạng thái trong đó các user gửi các yêu cầu một cách ngẫu nhiên.

Theo tính toán thì khi phối hợp hoạt động của n bộ xử lý khả năng xử lí của hệ thống tăng lên n lần.

1.4.2.3 Mô hình lai:

Trong mô hình này, các nhiệm vụ tương tác người dùng sẽ chạy trên workstation, các ứng dụng không tương tác sẽ chạy trên processor pool, thực hiện tất cả các tác vụ tính toán phức tạp.

1.4.3 Phân bổ bộ xử lý:

Hệ thống phân tán bao gồm nhiều bộ xử lí, chúng có thể được tổ chức theo các mô hình như mô tả ở trên. Trong mọi trường hợp, ta cần phải lựa chọn tiến trình nào sẽ được chạy trên máy nào. Với mô hình workstation, vấn đề là khi nào tiến trình chạy trên máy local khi nào phải chạy trên workstation rỗi. Với mô hình processor pool, mỗi tiến trình mới phát sinh đều cần được phân bổ bộ xử lí.

Các mô hình phân bổ:

Việc phân bổ bộ xử lí có thể phân làm 2 loại chính, nonmigratory và

migratory. Nonmigratory là cơ chế trong đó khi tạo mới một tiến trình sẽ quyết định luôn nơi sẽ chạy tiến trình đó, và tiến trình sẽ chỉ thực hiện cho đến khi hoàn thành ở máy đó bất kể máy đang ở trong tình trạng overload hay đang rỗi. Ngược lại, là cơ chế phân bổ kiểu migratory, trong đó tiến trình có thể được chuyển tới máy khác ngay cả khi đang chạy trên một máy nào đó. Việc phân bổ bộ xử lí có thể tuỳ biến theo mục đích mà ứng dụng cần đạt được. Ví dụ, mục tiêu có thể là để đạt được hiệu năng CPU cao tức là không có CPU nào có thời gian nghỉ. Mục tiêu cũng có thể là tối thiểu hoá thời gian phản hồi trung bình. Hình 1.17 là một ví dụ về phân bổ 2 tiến trình cho 2 bộ xử lí. Bộ xử lí 1 có tốc dộ 10MIPS, bộ xử lí 2 có tốc độ 100MIPS, nhưng thời gian phải chờ trong queue là 5 giây. Tiến trình A có 100 triệu lệnh, tiến trình

B có 300 triệu lệnh. Thời gian phản hồi của mỗi tiến trình trên từng bộ xử lí có thể được tính như hình 1.17.

Hình 1.17: Thời gian phản hồi của từng tiến trình trên từng bộ xử lí.

Theo đó, thời gian phản hồi trong trường hợp tiến trình A chạy trên bộ xử lí 1, tiến trình B chạy trên bộ xử lí 2 là (10+8)/2=9 giây. Trường hợp bộ xử lí 1 chạy tiến trình B còn bộ xử lí 2 chạy tiến trình A, thời gian phản hồi sẽ là (30+6)/2=18 giây. Rõ ràng cách phân bổ như trường hợp đầu sẽ có thời gian phản hồi nhỏ hơn.

Tối ưu hơn người ta có thể thực hiện phân bổ bộ xử lí theo tỉ lệ phản hồi (response ratio), là tỉ lệ giữa thời gian cần thiết để thực hiện một tiến trình nào đó trên một hệ thống trên thời gian chuẩn của tiến trình đó.

1.4.4 Scheduling trong các hệ thống phân tán:

Thông thường, mỗi bộ xử lí thực hiện tự lập trình lịch cho các tiến trình chạy trên nó (giả sử có nhiều tiến trình cùng chạy trên bộ xử lí này) mà không cần quan tâm đến việc các bộ xử lí khác đang làm gì. Tuy nhiên, khi có các tiến trình tương tác và có quan hệ với nhau chạy trên các bộ xử lí khác nhau, thì phương pháp scheduling độc lập không còn phù hợp nữa.

Hình 1.18 là một ví dụ, trong đó các tiến trình A và B chạy trên một bộ xử lí, còn C và D chạy trên bộ xử lí kia. Các bộ xử lí hoạt động theo nguyên tắc

chia sẻ thời gian, với time slice là 100ms, A và C sẽ chạy trên các time slice chẵn, B và D chạy trong các time slice lẻ.

Hình 1.18: (a) 2 job chạy lệch pha nhau. (b) Ma trận scheduling cho 8 bộ xử lí, mỗi bộ có 6 khe thời gian, các dấu X chỉ các khe thời gian đã được cấp. Giả sử A gửi nhiều thông điệp hoặc gọi nhiều lệnh cho D. Trong time slice, A khởi tạo và gọi D, nhưng hiện tại D chưa chạy, sau 100ms D mới nhận được thông điệp của A và trả lời ngay, nhưng ở bộ xử lí 0 B đang chạy, và phải mất 100ms sau nữa, A mới nhận được phản hồi này và xử lí nó. Như vậy, việc trao đổi thông điệp phải mất 200ms.

Ousterhour (1982) đã giới thiệu một số giải thuật dựa trên nguyên lí mà ông gọi là co-scheduling, nguyên lí này tính tới các thành phần thông tin giữa các tiến trình, trong khi đảm bảo cho tất cả các thành viên trong một nhóm tiến trình đều chạy đồng thời.

Giải thuật thứ nhất dựa trên ma trận trong đó mỗi cột là một bảng các tiến trình ứng với một bộ xử lí, như ví dụ trong hình 1.18(b). Cột 4 chứa tất cả các tiến trình chạy trên bộ xử lí 4, hàng 3 là tất cả các tiến trình chạy trên khe thời gian thứ 3 của tất cả các bộ xử lí. Bằng cách đặt tất cả các thành viên của một nhóm tiến trình vào cùng một khe thời gian, giải thuật này sẽ đảm bảo cho tất cả các tiến trình này đều chạy cùng một thời điểm, tối đa hoá thông lượng.

1.4.5 Khả năng chịu lỗi:

Các lỗi thường gặp trong các hệ thống phân tán là: 1.4.5.1 Lỗi thiết bị:

Một số thành phần trong hệ thống có thể bị lỗi như bộ xử lí, bộ nhớ, thiết bị I/O, cable hay phần mềm. Nếu gọi khả năng không hoạt động của một thiết bị là p trong một giây, xác suất để có k giây liên tiếp sau đó không bị lỗi rồi mới bị lỗi là p(1-p)P

k

P

. Thời gian kì vọng bị lỗi là: Thời gian lỗi trung bình=∑∞ ( )

= − − 1 1 1 k k p kp =1/p 1.4.5.2 Lỗi hệ thống:

Khi ta không quan tâm đến hoạt động của từng thành phần trong hệ thống phân tán mà chỉ quan tâm đến tính chất có hoạt động hay không của ứng dụng thì các lỗi làm cho ứng dụng ngừng chạy đều gọi là lỗi hệ thống.

Để tránh lỗi người ta thực hiện kĩ thuật Redundancy, kĩ thuật này gồm 3 loại, dư thừa thông tin, dư thừa thời gian và dư thừa vật lí. Dư thừa thông tin là thực hiện thêm thông tin vào để phục vụ quá trình khôi phục thông tin khi bị mất (ví dụ mã Hamming). Dư thừa thời gian tức là có thể thực hiện lại một hành động nào đó nếu thấy cần thiết, ví dụ giao dịch nguyên tử. Dư thừa vật lí là sử dụng thêm các thiết bị để đề phòng trường hợp một số thiết bị đang làm việc không hoạt động.

1.4.6 Các hệ thống phân tán thời gian thực:

Một hình thức khác của hệ thống phân tán là hệ thống thời gian thực, trên đó chạy các ứng dụng tương tác thời gian thực. Khi có yêu cầu hệ thống phải đáp ứng theo một cách nhất định và có một mốc thời gian hoàn thành nhất định.

Nếu hệ thống kết thúc công việc sau mốc thời gian này thì coi như không hoàn thành công việc.

Hệ thống thời gian thực có thể phân làm 2 loại tuỳ thuộc mức độ cần thiết của mốc thời gian và hậu quả của việc mất thông tin:

1. Các hệ thống thời gian thực mềm 2. Các hệ thống thời gian thực cứng

Thời gian thực mềm có nghĩa là việc thỉnh thoảng xử lí không kịp mốc thời

gian nêu trên là có thể chấp nhận được. Ngược lại, thời gian thực cứng là không thể chấp nhận được. Thực tế còn có các hệ thống trung gian, nghĩa là nếu không đạt được mốc thời gian này thì phải kill tiến trình hiện tại nhưng kết quả không bị gián đoạn.

Việc thiết kế các hệ thống thời gian thực có một số đặc điểm riêng, ta sẽ xem xét các đặc điểm quan trọng nhất.

1.4.6.1 Đồng bộ đồng hồ:

Vấn đề đồng bộ đồng hồ cũng giống như trong các hệ thống phân tán thông thường như ta đã phân tích ở trên.

1.4.6.2 Các hệ thống Event-Triggered và Time-Triggered:

Trong hệ thống thời gian thực event-triggered, khi một sự kiện có ý nghĩa xẩy ra, các cảm biến sẽ xác định sự kiện này và gửi một ngắt đến CPU. Hầu hết

các hệ thống thời gian thực hoạt động theo nguyên lí này. Vấn đề của hệ thống này là khi có nhiều sự kiện xẩy ra cùng một lúc, hệ thống có thể bị quá tải.

Hệ thống thời gian thực time-triggered không gặp phải vấn đề này, các ngắt

gửi tới CPU được quản lí bằng một đồng hồ, và được thực hiện sau mỗi khoảng thời gian ∆T nhất định. Khoảng thời gian ∆T phải được chọn một cách hợp lí, vì nếu nó quá ngắn thì sẽ có quá nhiều ngắt hệ thống sẽ tốn nhiều thời gian không cần thiết để triển khai nó; còn nếu nó quá dài thì các sự kiện quan trọng sẽ không được cảnh báo kịp cho hệ thống.

Tóm lại, hệ thống event triggered phù hợp trong môi trường ít tải, và sẽ bị - quá tải khi tải của hệ thống tăng cao. Còn hệ thống time triggered thì ngược - lại.

1.4.6.3 Khả năng dự báo trước:

Một trong những đặc tính quan trọng nhất của hệ thống thời gian là khả năng đoán trước. Thông thường, khi sự kiện E xẩy ra, tiến trình X sẽ chạy, sau đó

là các tiến trình Y và Z, hoặc là chạy lần lượt hoặc là chạy song song với nhau. Ví dụ, nếu tiến trình X cần 50ms, Y và Z cần 60ms và tiến trình cần 5ms để khởi động thì hệ thống có thể đảm bảo trước là có thể thực hiện được 5 sự kiện E trong 1 giây.

1.4.6.4 Truyền thông thời gian thực:

Truyền thông trong các hệ thống thời gian thực khác với trong các hệ thống phân tán khác, vì luôn quan tâm đến performance, mà khả năng dự đoán và quyết định là các yếu tố quan trọng.

Để đạt được khả năng dự báo thì truyền thông giữa các bộ xử lí phải có khả năng dự báo được. Các giao thức LAN vốn đã mang tính ngẫu nhiên, chẳng hạn như Ethernet và chúng ta không thể đảm bảo thời gian truyền dẫn ở một ngưỡng nhất định nào đó. Khi một máy gửi một bản tin vào mạng Ethernet, nó có thể có xung đột với các máy khác, các máy sau đó phải chờ một khoảng thời gian ngẫu nhiên rồi mới gửi lại gói tin định gửi, nhưng nó vẫn có thể gây xung đột trong mạng… Như vậy thời gian gửi một gói tin trong mạng là không thể đoán trước.

Không giống mạng Ethernet, mạng token ring LAN sẽ xử lí gói tin theo một cách khác. Khi một bộ xử lí có một gói tin cần gửi, nó chờ cho token chuyển đi một vòng trong mạng, sau đó thu lại token rồi mới gửi gói tin, trả lại token cho các máy khác trong mạng. Ví dụ một vòng ring có k máy, một máy định gửi gói tin n-byte khi nhận được token, nó có thể đảm bảo rằng gói tin này có

thể đến bất kì đâu trong hệ thống mà thời gian truyền không vượt quá kn byte thời gian. Rõ ràng tính năng này đáp ứng được yêu cầu của hệ thống phân tán thời gian thực. Người ta có thể thêm vào trường ưu tiên để dành quyền ưu tiên cho các gói cần được ưu tiên trong mạng ring.

Một phương pháp khác để đảm bảo truyền thông trong hệ thống thời gian thực là sử dụng công nghệ đa truy cập phân chia theo thời gian (TDMA) như hình 1.19.

Hình 1.19: Khung đa truy cập phân chia theo thời gian.

Ở đây traffic được tổ chức thành các khung kích thước cố định, mỗi khung chứa n khe thời gian. Mỗi khe thời gian ứng với thời gian của một bộ xử lí để truyền gói tin. Cách tổ chức như vậy sẽ tránh được xung đột, trễ truyền dẫn bị hạn chế, mỗi bộ xử lí được đảm bảo một tỉ lệ băng thông nhất định phụ thuộc vào số lượng khe thời gian trong mỗi khung.

Các hệ thống thời gian thực hoạt động trên mạng WAN có yêu cầu tương tự về khả năng dự đoán. Truyền thông trên mạng WAN luôn là hướng kết nối (connection oriented), nên có thể thiết lập các kết nối thời gian thực giữa các máy ở khoảng cách xa với nhau. Khi kết nối này được thiết lập, QoS sẽ được thoả thuận trước, chẳng hạn về độ trễ tối đa, jitter tối đa, băng thông tối thiểu, và các thông số khác. Để đảm bảo cho các thoả thuận này, mạng sẽ phải dành riêng các memory buffer, tables entry, CPU cycle, khả năng đường truyền, và các nguồn lực tài nguyên khác.

Vấn đề của các hệ thống thời gian thực trên mạng WAN là tỉ lệ mất gói tương đối cao của chúng, các giao thức xử lí mất gói chuẩn thường đặt một timer khi mỗi gói được gửi đi. Nếu timer hết giờ trước khi nhận được xác nhận cho gói tin đã gửi đi thì gói tin sẽ được gửi lại. Trong hệ thống thời gian thực, việc này là không thể chấp nhận được. Có một giải pháp là phía gửi luôn gửi mỗi gói tin 2 lần, trên các kết nối khác nhau nếu có điều kiện. Dù giải pháp này lãng phí mất một nửa tài nguyên băng thông, nhưng nếu có tỉ lệ một gói trong số 10P

5

P

gói bị mất trên đường truyền thì bằng giải pháp này, chỉ có 1 trong 10P

10

P

gói có thể bị mất.

1.4.6.5 Real Time Scheduling:-

Các hệ thống thời gian thực thường được xem là một tập hợp các tác vụ ngắn (tiến trình hoặc thread), mỗi một tác vụ là một hàm đã biết và phải được thực hiện trong khoảng thời gian nhất định.

Các giải thuật scheduling thời gian thực có thể được phân chia theo các thông số sau:

1. Thời gian thực cứng (đảm bảo được tất cả các mốc thời gian) và thời gian thực mềm (best effort approach).

2. Preemptive (cho phép một tác vụ tạm ngừng để thực hiện một tác vụ khác

Một phần của tài liệu Tối ưu hoá ứng dụng ngân hàng trên nền hệ thống phân tán777 (Trang 33)

Tải bản đầy đủ (PDF)

(103 trang)