Hệ quản lý tài nguyên và phân tải Mục đích và nhiệm vụ của hệ quản lý tài nguyên và phân tải
Phân hệ quản lý công việc PBS_Server
Phân hệ quản lý công việc là thành phần trung tâm của PBS Tất cả các thành phần khác của PBS giao tiếp với phân hệ quản lý công việc qua một địa chỉ IP duy nhất Chức năng của phân hệ quản lý công việc là cung cấp các dịch vụ lô, như là nhận/tạo ra các công việc lô (batch công việc), thay đổi các công việc, bảo vệ công việc khi có sự cố hệ thống, và thực hiện công việc (chuyển công việc cho phân hệ thực thi công việc) Phân hệ này quản lý một hoặc nhiều hàng đợi công việc (queue), một công việc phải thuộc vào một hàng đợi.
Phần 1 Tổng Quan Về Tinh Toán Song Song
Các hàng đợi được server quản lý bởi một tập thuộc tính như kiểu, tài nguyên, tên,
Phân hệ Quản lý công việc tiếp nhận các công việc được người sử dụng đệ trình từ phía client Sau khi tiếp nhận công việc và đưa vào hàng đợi, Phân hệ yêu cầu Phân hệ Lập lịch thực hiện lập lịch Quá trình lập lịch được tiến hành Tùy theo tình trạng cụ thể của hệ thống mà công việc được đưa vào thực hiện ngay hay phải lưu trong hàng đợi Nếu công việc được thực hiện, Phân hệ Quản lý công việc sẽ gửi công việc cùng với yêu cầu thực thi xuống cho Phân hệ Quản lý tài nguyên và Thực thi công việc Trong qua trình công việc thực thi, Phân hệ Quản lý công việc luôn lưu trữ thông tin của công việc Điều đó giúp cho Phân hệ có thể điều quản được công việc một cách dễ dàng hơn
3.2 Phân hệ lập lịch PBS_Scheduler
Nếu như Phân hệ Quản lý công việc là trái tim thì Phân hệ Quản lý lập lịch thực hiện công việc được coi là bộ não của toàn bộ hệ thống PBS Trong môt phân cụm tính toán, Phân hệ này có thể được cài đặt trên một hoặc nhiều nút (nút quản trị) cũng dưới dạng một tiến trình chạy ngầm và được thực thi bởi quyền root
Nhiệm vụ của Phân hệ Quản lý lập lịch thực hiện công việc chỉ là tiến hành lập lịch để đảm bảo một công việc khi được đệ trình từ phía người sử dụng, sẽ được phân bố vào các nút tính toán hoặc sẽ bị loại bỏ do không đáp ứng được các ràng buộc đã xác định trước.BatchServer đưa ra quyết định lập lịch khi có các yêu cầu sau xảy ra:
Có nhiệm vụ mới cần chạy.
Có nhiệm vụ kết thúc tiến trình của mình.
Sau một khoảng thời gian nhất định do hệ thống định trước.
Thuộc tính Scheduling của PBS_Server được gán bằng true.
Có nhiều nhiệm vụ cần chạy
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Khi BatchServer vừa bắt đầu khởi động và gửi lệnh thiết lập cấu hình cho bộ lập lịch.
Sau khi nhận được yêu cầu lập lịch từ PBS_Server thì phân hệ lập lịch sẽ tiến hành lấy các thông tin về máy chủ(Server), hàng đợi (queue), các nhiệm vụ (job) để tìm ra nhiệm vụ tốt nhất cần chạy, sau đó nó sẽ gửi yêu cầu các thông tin về tài nguyên cho phân hệ PBS_Mom tại mỗi nút, sau đó tìm ra nút tốt nhất để chạy nhiệm vụ đó và thông báo lại kết quả cho PBS_Server để PBS Server chạy nhiệm vụ đó tại các nút đã chọn.
Các thông tin cần thiết để lập lịch:
Các thông tin về máy chủ, hàng đợi,công việc
Các thông tin về tài nguyên cho phân hệ PBS_Mom tại mỗi nút
Hiện nay, cơ chế lập lịch được Phân hệ Lập lich của hệ thống PBS sử dụng là cơ chế Vào trước Thực hiện trước.
Quá trình Lập lịch được phân loại thành lập lịch thực hiện công việc trên một nút tính toán và lập lịch thực hiện công việc trên nhiều nút tính toán
3.2.1 Lập lịch thực hiện trên một nút tính toán
Phần 1 Tổng Quan Về Tinh Toán Song Song
Hình 3.2.1: Lập lịch thực hiện công việc trên 1 nút
1 Sự kiện báo cho Server khởi tạo quá trình lập lịch
2 Server gửi lệnh lập lịch đến Scheduler
3 Scheduler yêu cầu thông tin tài nguyên từ MOM
4 MOM trả lại thông tin được yêu cầu
5 Scheduler yêu cầu thông tin công việc
6 Server gửi thông tin công việc đến cho Scheduler để Scheduler lập lịch
7 Scheduler gửi yêu cầu chạy đến Server
8 Server gửi công việc đến MOM để chạy
3.2.2 Lập lịch trên nhiều nút tính toán
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Hình 3.2.2:Lập lịch thực hiện công việc trên nhiều nút tính toán
3.3 Phân hệ quản lý tài nguyên và thực thi công việc PBS_Mom
Vai trò của Phân hệ này trong hệ thống PBS là hết sức quan trọng Đây chính là các thành phần để thực thì công việc trên các nút tính toán cũng như thu thập các thông tin tài nguyên của các nút tính toán Phân hệ được cài đặt trên từng nút tính toán của phân cụm, cũng dưới dạng một tiến trình ngầm và chạy với quyền root.
Nút tính toán PBS_MOM
Nút tính toán PBS_MOM
Phần 1 Tổng Quan Về Tinh Toán Song Song
Hình 3.3 : Phân bố Phân hệ Quản lý Tài nguyên và Thực thi công việc trên các nút Đây là thành phần đảm nhiệm hai chức năng chính là quản lý tài nguyên và thực hiện chạy các Job Do đó nó được chia thành hai thành phần sau
3.3.1 Thành phần quản lí tài nguyên(Resource Monitor-RM)
Thành phần quản lí tài nguyên hệ thống là thành phần bổ trợ cho thành phần lập lịch Thành phần quản lí tài nguyên hệ thống cung cấp cho thành phần lập lịch nhưng thông tin và tài nguyên của hệ thống cục bộ Thành phần quản lí tài nguyên hệ thống là một phần của phân hệ pbs_mom Nó lắng nghe đầu vào tại một socket nhất định (được định nghĩa là PBS_MOM_SERVICE_PORT = 15002) và đáp ứng danh sách các tên tài nguyên và giá trị tương ứng Thành phần quản lí tài nguyên hệ
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song thống có thể đáp ứng yêu cầu của rất nhiều tiến trình nhưng socket được sử dụng chỉ có tiến trình chủ mới có thể kết nối Chú ý rằng pbs_mom không còn giải quyết định vị của các nút thực thi các Job Các chức năng này được chuyển cho thành phần Pbs_Server như là một phần của toàn bộ đặc tính song song
Các thông tin được RM quản lý:
Arch Hệ điều hành của host.n
Cput Thời gian cpu theo giây.
Idletime Thời gian nghỉ của hệ thống theo giây
Loadave Số các tiến trình đang chạy
Mem Số bộ nhớ đã dùng tính theo byte
Ncpus Số bộ vi xử lý trong máy trạm.
Nsessions Số phiên làm việc đang thực hiện trong máy trạm
Nuers Số người dùng có tiến trình đang chạy trên máy trạm
Pids Danh sách cac tiến trình của cùng một phiên làm việc.
Physmem Kích thước bộ nhớ vật lý.
Sessions Số phiên làm việc trong máy trạm
Size Kích thước file hệ thống tính theo kb
Uname Thông tin từ lệnh Uname trả về
Validuser Người dùng có hợp pháp không.
Walltime Thời gian tính theo đơn vị giây mà một chương trình hay
Phần 1 Tổng Quan Về Tinh Toán Song Song phiên làm việc tồn tại trong hệ thống.
3.3.2 Thành phần thực hiện(Job Excutor-JE)
Mục đích của JE là chạy các nhiệm vụ (Job), theo dõi và điều khiển các Job đó và báo cáo lại cho PBS_Server Mỗi một nút có một JE Như vậy PBS_Server chịu trách nhiệm chung về Job được chạy, còn JE chịu trách nhiệm cụ thể về Job đó, khởi tạo, giám sát, thu dọn sau khi Job hoàn thành Một Job có thể có nhiều tiến trình JE giám sát tất cả các tiến trình trong nút tính toán JE gắn liền với thành phần quản lí tài nguyên nhưng khác biệt hẳn về chức năng JE hoạt động như một Task Manager đối với các Job mà nó quản lý Một PBS_Server sẽ làm việc với rất nhiều JE.
Hoạt động của hệ thống
Người sử dụng sẽ giao tiếp với Phân hệ quản lý công việc với tư cách là môt client đối với hệ thống PBS Sau khi tiếp nhận được công việc, Phân hệ Lập lịch thực hiện công việc sẽ được kích hoạt để thực hiện việc lập lịch và phân phối công việc vào các nút tính toán theo các giải thuật và cơ chế lập lịch có sẵn Đồng thời, công việc cũng được lưu trong các hàng đợi (queue) của Phân hệ quản lý công việc Phân hệ Lập lịch để có thể lập lịch và phân bổ công việc vào đúng các nút cần thiết sẽ yêu cầu Phân hệ thu thập và quản lý tài nguyên cung cấp các thông tin về tài nguyên trên từng nút tính toán Dựa vào nhưng thông tin đó, cùng với những thông tin có sẵn của công việc, Phân hệ Lập lịch có thể xác định được sự phân bổ công việc trên các nút Thông tin đó sẽ đựợc chuyển xuống cho Phân hệ Thu thập tài nguyên và thực thi công việc để tiến hành thực hiện công việc đồng thời trong qua trình thực hiện công việc, các thông tin có liên quan sẽ được cập nhật và lưu trữ trong Phân hệ quản lý công việc Khi công việc kết thúc, kết quả sẽ được trả về cho người dùng ở
Tiêu Công Thắng-Lớp HTTT
Phân hệ quản lý công việc Phân hệ lập lich
Phân hệ quản lý tài nguyên và thực thi công việc
Công viêc và Yêu cầu Kết quả & Thông tin
Yêu cầu lập lịch &Thông tin công việc
Yêu cầu thông tin công việc &kết quả lập lịch
Yêu cầu thông tin tài nguyên
Thông tin tài nguyên Công việc và Yêu cầu
Phần 1 Tổng Quan Về Tinh Toán Song Song phía client Quá trình này sẽ được lặp đi lặp lại để đáp ứng cho các công việc tiếp theo được đệ trình từ phía người sử dụng.
Quá trình này được diễn ra trong toàn bộ hệ thống, và các phân hệ đều trực tiếp tham gia vào
Hình 2.4:Hoạt động của hệ thống PBS
Gi a các phân h trong h th ng PBS luôn có sữ ệ ệ ố ự giao ti p, liên l c v i nhau S giao ti p là c nế ạ ớ ự ế ầ thi t và quan tr ng đ c bi t đ i v i nhi m v qu nế ọ ặ ệ ố ớ ệ ụ ả tr h th ng phân c m Vì n u không có các giaoị ệ ố ụ ế ti p, liên l c gi a các phân h thì toàn b hế ạ ữ ệ ộ ệ
Phân hệ Lập lịch công việc Phân hệ quản lý tài nguyên và thực thi công việc
Yêu cầu thông tin tài nguyên
Thông tin tài nguyên cần thiết
Phần 1 Tổng Quan Về Tinh Toán Song Song th ng s tr nên r i r c và không còn là m t thố ẽ ở ờ ạ ộ ể th ng nh t n a ố ấ ữ
4.1 Giao tiếp giữa PBS_Server và PBS_Sheduler
Từ Phân hệ quản lý công việc đến Phân hệ lập lịch thực hiện là các yêu cầu lập lịch và thông tin về công việc cần được lập lịch
Giao tiếp giữa PBS_Server và PBS_Sheduler
Từ Phân hệ quản lý công việc đến Phân hệ lập lịch thực hiện là các yêu cầu lập lịch và thông tin về công việc cần được lập lịch
Từ Phân hệ lập lịch đến Phân hệ quản lý công việc là các yêu cầu thông tin về công việc và các kết quả đã đáp ứng sau khi lập lịch
Hình 2.4.1: Giao tiếp giữa Phân hệ Quản lý công việc và Phân hệ lập lịch
Giao tiếp giữa PBS_Sheduler và PBS_Mom
Từ Phân hệ Lập lịch đến Phân hệ quản lý tài nguyên và thực thi công việc: yêu cầu thông tin tài nguyên do Phân hệ quản lý tài nguyên thu thập được.
Từ Phân hệ Quản lý tài nguyên và thực thi công việc đến Phân hệ Lập lịch: thông tin tài nguyên đã thu thập được.
Hình 4.2: Giao tiếp giữa Phân hệ Lập lịch và Phân hệ Quản lý tài nguyên và thực thi công việc
Giao tiếp giữa PBS_Server và PBS_Mom
Tiêu Công Thắng-Lớp HTTT
Phân hệ Quản lý công việc Phân hệ Quản lý tài nguyên và thực thi công việc
Công việc và yêu cầu thực thì
Phần 1 Tổng Quan Về Tinh Toán Song Song
T Phân h Qu n lý công vi c t i Phân h Qu n lýừ ệ ả ệ ớ ệ ả tài nguyên và th c thi công vi c: công vi c và yêuự ệ ệ c u th c th c công vi c đó.ầ ự ự ệ
Hình 4.3: Giao tiếp giữa Phân hệ Quản lý công việc và Phân hệ Quản lý tài nguyên và thực thi công việc
Sự đóng gói dữ liệu và truyền thông
Hệ thống PBS thích hợp với mô hình client-server, trong client đưa ra các yêu cầu vàn server đáp ứng Ngoài ra trong môi trường giao tiếp này cũng cầm có sự giao tiếp giữa các tiến trình bên trong và sự định dạng dữ liệu khi truyền trên mạng.
Mặt khác hệ thống này cũng cần thiết phải có một hệ thống gioa tiếp để khi các công việc được giao cho các server tránh xảy ra hiện tượng bị mất hay lặp lại công việc.
Thêm nữa hầu hết các yêu cầu từ client đến server đều là các yêu cầu đơn và việc xử lý với các yêu cầu này là khá đơn giản Tuy nhiên cũng có một vài yêu cầu phức tạp và gồm nhiều yêu cầu hợp lại hay là có nhiều yêu cầu phụ đi kèm, mà trong bất kỳ trường hệ thống cũng có thể bỏ qua các yêu cầu phụ này Vậy vấn đề đặt ra ở đây là hệ thống kết nối phải được kết nối sao cho hệ thống có thẻ bỏ qua một số yêu cầu không quan trọng mà vẫn đảm bảo không bị bỏ xót hay lặp lại công việc
Phần 1 Tổng Quan Về Tinh Toán Song Song
Hệ thống sử dụng kiến trúc mạng TCP/IP và socket để kết nối và trao đổi dữ liệu, cổng dịch vụ là cổng 15002 Một vài kiến trúc mạng đơn giản khác cũng có thể được sử dụng để thay thế như SNI, DNI.
PBS sử dụng kiểu má hoá dữ liệu theo dạng xâu theo chuẩn ISO ASN.1 để truyền dữ liệu giữa các phần ngoại trừ việc giao tiếp giữa PBS_Sheduler và RM, dữ lieu được mã hoá theo dạng DIS(Data Is String), ưu điểm là
Mã hoá cả tên trường nên rất linh hoạtmdễ sửa đổi và dễ lập trình
Bây giờ chúng ta sẽ cùng tìm hiểu về chuẩn ASN.1 và DIS
Các đặc tả của chuẩn ASN.1 về định dạng dữ liệu …
Giao thức chuẩn ASN.1 được chia thành hai phân hệs phân biệt Phân hệ thứ nhất, Batch, chứa các yêu cầu và đáp ứng giữa clent và server, phân hệ thứ hai, SSBatch, chứa các message giữa các server với nhau.
The Client to Server Requests and Replies
BatchRequest ::= SEQUENCE { request INTEGER { connect (0), queuejob (1), jobcredential (2), jobscript (3), rdytocommit (4), commit (5), deletejob (6), holdjob (7), locatejob (8),
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song manager (9), messagejob (10), modifyjob (11), movejob (12), releasejob (13), rerunjob (14), runjob (15), selectjobs (16), servershutdown (17), signaljob (18), statusjob (19), statusqueue (20), statusserver (21), trackjob (22), authenuser (49), orderjob (50), selstat (51), registerdependent (52), copyfiles (54), delfiles (55), jobobit (56), mvjobfile (57) }, user ISO646String, credential [0] Credential OPTIONAL, no longer used body ANY, requestextend [1] OCTET STRING OPTIONAL }
The server to client reply, one per request
BatchReply ::= SEQUENCE { code INTEGER,auxcode INTEGER,bodyCHOICE {
Phần 1 Tổng Quan Về Tinh Toán Song Song queue [1] JobIdentifier, rdytocommit [2] JobIdentifier, commit [3] JobIdentifier, select [4] SelectReply, stat [5] SET OF ObjStatus, text [6] OCTET STRING, error msg locate [7] IMPLICIT ISO646String server name
request body elements, one and only one per request
QueueJob ::= SEQUENCE { destin [1] DestinationID, jobid [2] JobIdentifier OPTIONAL, server-server only attr [3] AttributeList }
JobCredential ::= SEQUENCE { type INTEGER, data OCTET STRING }
JobFile - chunks of the job script (and other) file passed as a string,
each chunk can be up to 8k octets in length
JobFile ::= SEQUENCE { sequence [1] INTEGER, chunk sequence number type [2] INTEGER, file type jobid JobIdentifier OPTIONAL, data OCTET STRING chunk of file }
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Manage ::= SEQUENCE { command INTEGER { create(0), delete(1), set(2), unset(3) }, objtype ObjType, objname ISO646String, attrib AttributeList
Network Protocol PBS ERS jobid JobIdentifier, fileopt INTEGER { default(0), oflg(1), eflg(2) }, message ISO646String
MoveJob ::= SEQUENCE { jobid JobIdentifier, destin DestinationID }
RunJob ::= SEQUENCE { jobid JobIdentifier,location ISO646String OPTIONAL}
Phần 1 Tổng Quan Về Tinh Toán Song Song
SignalJob ::= SEQUENCE { jobid JobIdentifier, signal ISO646String }
Status ::= SEQUENCE { id ISO646String OPTIONAL, either job or destination id attr AttributeList OPTIONAL }
TrackJob ::= SEQUENCE { hopcount INTEGER, jobid JobIdentifier, location DestinationID, jobstate ISO646String }
reply-body elements, zero or one per reply
ObjStatus ::= SEQUENCE { for Queue and Server Status Reply objtype ObjType, objectname ISO646String, attrib AttributeList, text ISO646String OPTIONAL }
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Credential ::= SEQUENCE { credentialtype INTEGER { credential-none (0), NULL credential-text (1)
}, credential ANY DEFINED BY credenttype
ObjType ::= INTEGER {server(0), queue(1), job(2) }
JobIdentifier is in the form: "seq_number.server_name" AttributeList ::= SET OF Attribute
Job attributes defined by the P1003.15 standard are:
Additional PBS job attributes are:
Phần 1 Tổng Quan Về Tinh Toán Song Song
Attribute ::= SEQUENCE { name [1] ISO646String, resource [2] ISO646String OPTIONAL, resource name value [3] ISO646String, attribute or resource name oper [4] INTEGER { set(0), unset(1), incr(2), decr(3), eq(4), ne(5), ge(6), gt(7), le(8), lt(9), dflt(16) }
PullJob ::= SEQUENCE { destin DestinationID, attrib AttributeList
RegisterDependent ::= SEQUENCE { owner OCTET STRING, parentid JobIdentifier, childid JobIdentifier, dependtype INTEGER, op INTEGER, cost INTEGER
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
CopyFiles ::= SEQUENCE { files SET OF FilePairs, jobid JobIdentifier, Job Id owner OCTET STRING, Job owner user OCTET STRING, user name for job execution group OCTET STRING, group name for job execution direction INTEGER
JobObit ::= SEQUENCE { jobid JobIdentifier, status INTEGER, resources AttributeList
FilePairs ::= SEQUENCE { flag INTEGER, local OCTET STRING, rmt OCTET STRING
Phương pháp mã hoá DIS
Mục đích của DIS là cung cấp một phương pháp mã hoá dữ liệu nhanh chóng, đơn giản, gọn nhẹ và độc lập với định dạng của máy cho việc mã hoá dữ liệu về dạng xâu ký tự và ngược lại Bởi vì dữ liệu có thể được giải mã trực tiếp ở chính cấu trúc nội tại của nó nên các thao tác sao chép dữ liệu sẽ được giảm đi Mặt khác một lợi ích nữa là chúng ta cũng có thể đọc được các dữ liệu này.
Theo cách này dữ liệu được biểu diễn theo đúng những gì chúng ta nhìn thấy về chúng nhưng đi kèm với độ dài của mỗi phần tử được mã hoá Một nhược điểm của phương pháp này là với một số nguyên dương nhỏ chúng ta không thể nói là đấy là số dạng signed hay unsigned chars,
Phần 1 Tổng Quan Về Tinh Toán Song Song short, ints or long sau khi chúng ta đã biết dạng mã hoá của nó Tương tự như vậy cho một số âm nhỏ, chúng ta chỉ có thể xác định duy nhất một điều là dữ liệu ban đầu không phải là số không dấu Và ở đây cũng không xác định trước được độ dài của từ một từ mã và phương pháp mã hoá, có thể dùng mã bù hai, mã bù một, số lớn thậm chí là mã nhị phân.
Với phương pháp này mọi dữ liệu cơ sở của C đều có thể được quản lý Cụ thể singned và unsigned chars, short, ints, longs tạo nên tập số nguyên Ký tự NULL cùng với xâu ký tự tạo nên xâu ký tự với ký tự NULL dùng để báo kết thúc xâu Floats, doubles và long doubles tạo nên tập số thực
Các loại dữ liệu phức tạp khác phải được xây dựng từ những dữ liệu cơ sở.
Mẫu mã hoá một số nguyên : integer =: | count =: sign =: ’+’ | ’-’ decimal string =: | digit =: ’0’ | ’1’ | ’2’ | ’3’ |’4’ | ’5’ | ’6’ | ’7’ | ’8’ | ’9’
Trên đây là công thức chung, với số chỉ có một chữ số thì thành phần count là không có mà chỉ có hai thành phần dấu và giá trị Các trường hớp còn thì count là độ dài của số đó, thành phần decima string giá trị thực của số đó
Chúng ta sẽ giải thích thêm ở số cuối cùng :
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Số 2 là số chữ số của số tiếp theo sau nó, tiếp sau số 2 là số 10 có hai chữ số, và bởi vậy số 10 biểu diễn giá trị 10 trong hệ thập phân.
Số 10 là độ dài của số cần mã hoá.
Cuối cùng là giá trị của số đó
Mã hoá xâu : counted string =: characters =: |
Số ký tự có trong xâu được cho bởi số nguyên đứng ở đầu xâu Ví dụ :
+3abc 2+22this is a long string
Số thực được mã hoá dạng : real number =:
Trong đó số nguyên đầu tiên được gọi là hệ số, biểu diễn số thực ban đầu dưới dạng số nguyên Số nguyên tiếp theo biểu diễn số mũ trong hệ cở số 10 để số trước nhân với 10 với số mũ này ra số ban đầu
Ví dụ số 8.9 được chuyển thành số 89 và –1 sau đó được chuyển thành xâu.
PBS cung cấp sẵn một tập hợp các hàm để tiến hành mã hoá và giải mã với các dạng dữ liệu cơ sở, tập hợp các hàm này nằm trong thư viện đi kèm.
1 Đóng gói dữ liệu có cấu trúc
Ví dụ với một cấu trúc dữ liệu dạng danh sách móc nối như sau: struct simple{
Phần 1 Tổng Quan Về Tinh Toán Song Song int n; char str[30]; struct simple* next;
Với cấu trúc như trên, khi muốn mã hóa một danh sách móc nối có kiểu như trên và có phần tử đầu tiên là firstnode thì ta làm như sau: Đếm xem có bao nhiêu phần tử trong danh sách, mã hóa nó.
Duyệt từ firstnode, với mỗi phần tử thì tiến hành mã hóa các trường dữ liệu của nó chỉ trừ trường next:
Với một mảng các đối tượng như sau:
Việc mã hóa cũng được tiến hành tương tự như trên tức là đầu tiên tính số phần tử của mảng, mã hóa số đó ra gói tin, sau đó mã hóa từng phần tử của mảng với cách mà hóa tương tự như trên. Đây cũng chính là cách mà PBS sử dụng để mã hóa những cấu trúc phức tạp mã ta sẽ thấy sau này.
Một số kết quả đã đạt được và định hướng phát triển
3 Một số kết quả trung tâm đã đạt được
K43-BKParaComp: Xây dựng môi trường phát triển ứng dụng song song với LAM MPI và PBS
K44-BKSupComp: Tích hợp khả năng chống lỗi cho MPICH và cải tiến cơ chế lập lịch của PBS
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song
Tích hợp BKParaComp và BKSupComp
Phát triển công cụ quản trị hệ thống
Định hướng phát triển
Phần 1 Tổng Quan Về Tinh Toán Song Song
Tìm hiểu về chương trình debugger
Giao diên
Trong phiên bản đầu tiên này mới chỉ đưa ra giao diện dòng lệnh Vì vậy khi một chương trình cũng có giao diện dòng lệnh mà lại được điều khiển bằng chương trình debugger này thì quan hệ giữa hai dao diện này là không được rõ rang lắm Có thể xảy ra trường hợp cả chương trình debugger và ứng dụng của người dùng đều đang ghi lên thiết bị đầu cuối tại cùng một thời điểm Vì vậy cần thiết phải có một kỹ thuật qua đó cho phép người dùng có thể phân biệt được dữ liệu nào là của chương trình , dữ liệu nào là của debugger Điều này đã được thực hiện bằng cách chốt dữ liệu giữa debugger và chương trình Nếu khởi tạo chế độ debugger input thì mọi dữ liệu đầu vào sẽ là của giao diên debugger và để chuyển sang chế độ program input thì lệnh proginput phải được đưa ra và khi này thiết bị input chính là giao diện của chương trình, khi này mọi lệnh gõ ra đều không ảnh hưởng đến chương trình debugger. Để quoay trở lại chế độ giao diện của chương trình debugger cần phải ngắt lệnh proginput bằng các phím user interrupt key, việc làm này sẽ làm
Phần 1 Tổng Quan Về Tinh Toán Song Song tự động quay trở lại chế độ debugger input và dấu nhắc sủa debugger sẽ xuất hiện trên màn hình Đoạn mã dưới đây sẽ giải thích rõ hơn về điều này:
[all]> Debugger prompts for next command
Enter degrees of freedom: Program prompts for first value proginput User switches to program input mode
File for results: temp.dat
^C then exits back to debugger input mode
[all] Debugger prompts for next command
Khởi tạo
Để khởi tao chúng ta tạo ra file debugger initation file, file này cung cấp một kỹ thuật cho việc khởi tạo các phiên debugger bằng cách thiết lập các lựa chọn về môi trường debugger File này phải được đặt tên dạng
hpdinit và được lưu dữ trong thư mục user home directory.
Bình thường file khởi tạo ở trên dùng để lưu trữ các đặc tả các lệnh của người dùng hoặc các lệnh để chạy một cách tự động mỗi khi quá trình debugger được thực hiện.
Ngoài ra chương trình debugger cũng lưu giữ các lệnh đã sử dụng gần đây và điều này cho phép chúng ta thấy được các lệnh đã được thực hiên trước đây hoặc thực hiện lại các lệnh này Và người sử dụng có thể điều khiển độ dài của danh sách này thông qua biến trạng thái của debugger là
MAX_HISTORY Để chạy chương trình trong môi trường debugger thì cần sử dụng hai lệnh sau: load command và tiếp theo là run command Việc phân làm hai lệnh riêng biệt này cho phép người sử dụng khởi tạo điểm actionpoint bên
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song trong chương trình trước khi bắt đầu thực hiện chương trình, và qua đó chúng ta có thể chạy debugger hơn một lần với những trạng thái debugger đã chọn sẵn
Một số lệnh đặc biệt:
attach command: lệnh này dùng để gắn một chương trình đang được thực hiện với chương trình debugger.
detach command: lệnh này ngược với lệnh attach command, lệnh này dùng để đưa một chương trình đang được điều khiển bởi chương trình debugger về trạng thái chạy bình thường.
Core command: lệnh này được thực hiện khi debugger được gắn với core file image
ActionPoints
Actionpoints là các điểm tại đó chương trình có thể phải dừng lại dưới một điều kiện đặc biệt nào đó Có ba loại actionpoints được hỗ trợ trong HPD version1 Mỗi loại cho phép người sử dụng xác định chương trình hực thi sẽ dừng khi một vài sự kiện đặc biệt của chương trình xuất hiện.
Breakpoint: điểm dừng này sẽ xác định chương trình sẽ dừng khi chạy đến dòng lệnh được đánh dấu sẵn ơ trong source.
Watchpoint: cung cấp một cơ chế điều khiển tương tự như khi dữ liệu được lưu trữ trong bộ nhớ và nó sẽ dừng chương trình mỗi khi giá trị các biến được thay đổi.
Barrier: điểm này dùng để đồng bộ hoá các tiến trình với nhau, nó ngăn không cho một tiến trình không chạy tiếp cho đến khi các tiến trình đèu đã chạy đến đây và đã được đồng bộ hoá.
Đặc tả lệnh
#: Xác định bỏ qua phần còn lại của dòng Thường dùng đặt trước
Phần 1 Tổng Quan Về Tinh Toán Song Song
Alias-tạo ra hoặc xem kại một lệnh do người dùng định nghĩa.
Tạo ra một lệnh mới do người dùng định nghĩa Cấu trúc: alias command-name command-body
Xem lại một lệnh đã tồn tại trước rồi Cấu trúc: alias [ command-name ]
Trong đó command-name là tên của lệnh được định nghĩa.
Command-body xác định lệnh được định nghĩa là lệnh đơn giản hay là lệnh hình thành bằng cách ghép các lệnh lại với nhau.
Câu lệnh alias sẽ gắn lệnh mà người dùng vừa định nghĩa với tập lệnh của chương trình debugger vì vậy sau đó nó được sử dụng nh một lệnh của chương trình debugger Chú ý rằng nếu câu lệnh alias mà không có tham số kềm theo thì kết quả nhận được sẽ là toàn bộ các lệnh do người dùng định nghĩa.
Câu lệnh alias khi thực hiện nếu người dùng cố gắng định nghĩa lại một lệnh của chương trình debugger thì sẽ sinh ra lỗi và xuất hiện thông báo lỗi tương ứng Còn nếu khi muốn xem một lệnh không tồn tại hoặc đã bị xoá bởi lệnh unalias thì một cảnh báo sẽ được sinh ra để báo rằng lệnh như trên không tồn tại.Ví dụ: alias nt next Định nghĩa một lệnh nt để thực hiện lệnh tiếp theo. alias nt Hiển thị định nghĩa về lệnh nt alias step2 “step;step” Định nghĩa lệnh step2 để thực hiện hai lệnh step trên cùng một dòng.
[0.*] alias step0 “step” Định nghĩa lệnh step 0 hỗ trợ mọi luồng trong tiến trình 0 alias steptoo “step0;[1.*] step” Định nghĩa lệnh steptoo thực hiện đòng thời hai lệnh, lệnh đầu
Tiêu Công Thắng-Lớp HTTT
Phần 1 Tổng Quan Về Tinh Toán Song Song ảnh hưởng đến mọi luồng trong tiến trình 0, lệnh thứ hai tác động tương tự lê tiến trình 1
Unalias: lệnh này ngược với lệnh alias ở trên Cấu trúc : unalias { command-name | -all}
Cũng như alias như lệnh alias lệnh unalias sẽ gặp lỗi nếu người sử dụng cố gắng xoá đi một lệnh của chương trình debugger Ví dụ: unalias step2 loại bỏ lệnh step2 ra khỏi chương trình, chú ý rằng nếu lệnh step2 được sử dụng trong việc định nghĩa một lệnh khác thì lệnh này không bị ảnh hương gì bởi lệnh loại bỏ step2 unalias –all lệnh này loại bỏ mọi alias
history: tham chiếu đến các lệnh đã được sử dụng
1) Hiển thị lệnh được sử dụng gần nhất Cú pháp: history [ num_commands ]
2) Thực hiện lại lệnh được thực hiện gần nhất Cú pháp:
3) Thực hiện lại một lệnh đã được thực hiện trước đây Cú pháp:
! { command_id | rel_command_id | command_string }
Lệnh history thực hiện một vài thao tác có liên quan đến lệnh cần được thực hiện lại được lưu trong command history list, theo mặc định sẽ có 20 lệnh được lưu lại trong danh sách này, kích thước cảu danh sách này được lưu trong biến trạng thái MAX_HISTORY và có thể thay đổi được Ví dụ: history hiển thị danh sách của 20 lênh được thực hiên gần nhất history 10 hiển thị 10 lệnh được thực hiên gần đây nhất
Phần 1 Tổng Quan Về Tinh Toán Song Song
!! thực hiện lại lệnh ngay trước
!15 thực hiện lệnh thứ 15 trong danh sách
!print thực hiện lệnh print cuối cùng
!pr thực lệnh cuối cùng mà bắt đầu bằng chữ pr
set: thay đổi hoặc xem giá trị của các biến trạng thái
1) Thay đổi giá trị của biến trạng thái set debugger-var = value
2) Xem giá trị hiện thời của một biến trạng thái set [ debugger-var ]
Nếu lệnh này không có tham số kèm theo thì tên và giá trị hiện thời của toàn bộ các biến trạng thái sẽ đượ hiển thị Các biến trạng thái có thể áp dụng lệnh set được HPD hỗ trợ là:
Tiêu Công Thắng-Lớp HTTT