Mỗi máy có một tình trạng được mô tả bởi Condor. Tình trạng đó phụ thuộc vào việc liệu máy đó có sẵn sàng để thi hành công việc hay không, và nếu có thì máy tính nào của hệ thống đang được thương lượng với nó. Máy có thể có một trong các trạng thái sau đây:
- Owner: Máy đang được sử dụng bởi người chủ, không sẵn có để chạy công việc. Khi máy khởi động lần đầu tiên, nó bắt đầu ở trạng thái này.
- Unclaimed
- Matched: Máy đang sẵn sàng để thực hiện công việc, và nó đã được đồng ý khi thương lượng với một thành phần điều khiển sắp xếp công việc schedd.
Thành phần schedd đó vẫn chưa thực sự giao nhiệm vụ cho máy này thi hành công việc. Trong trạng thái này, máy là chưa có sẵn cho các điểm kết nối (match) xa hơn.
- Claimed: máy đã được giao nhiệm vụ bới một thành phần sắp xếp.
- Preempting : Máy đã được giao nhiệm vụ bởi một thành phần sắp xếp, nhưng hiện tại nó đang đặt vào danh sách ưu tiên để thực hiện sau vì một trong các lí do sau đây:
+ Chủ nhân máy quay lại làm việc.
+ Người dùng khác có quyền ưu tiên cao hơn đang có công việc chờ thi hành.
+ Một yêu cầu khác cần tài nguyên này phục vụ với mức độ cao hơn được tìm thấy.
Hình dưới đây chỉ ra các trạng thái và sự chuyển đổi có thể thực hiện giữa các trạng thái:
Hình 2.2 Các trạng thái máy tính và sự chuyển đổi qua lại 2.3.3.2 Hoạt động của máy
Trong một số trạng thái máy, các hoạt động (activity) của máy được định nghĩa. Trạng thái máy thì không phụ thuộc hoạt động của máy. Sự khác nhau giữa các hoạt động là có ý nghĩa. Do đó, một cặp “trạng thái/hoạt động” mô tả cho một máy. Danh sách sau mô tả đầy đủ các cặp trạng thái/hoạt động có thể của hệ thống Condor dạng vanilla là:
- Owner
Idle: Đây là hoạt động duy nhất của trạng thái Owner. Condor hay lưu tâm đến trạng thái này, vì nó không làm bất cứ việc gì.
Idle: đây là hoạt động thông thường của máy đang ở trạng thái Unclaimed. Máy vẫn ngồi im khi mà người chủ vui lòng cho phép Condor thực hiện công việc, nhưng Condor không sử dụng vào bất cứ mục đích gì.
Benchmarking: máy có thể chạy ở hoạt động này để điều khiển tốc độ thực hiện công việc. Tuy nhiên, hoạt động này không xuất hiện ở hệ thống vanilla.
- Matched
Idle: Máy vẫn ngồi im ở trạng thái này.
- Claimed
Idle: trong hoạt động này, máy đã được giao nhiệm vụ, nhưng thành phần sắp xếp cho nó chưa kích hoạt để bắt nó thực hiện, việc kích hoạt thực hiện bằng cách yêu cầu một thành phần điều khiển khởi tạo (condor_starter) được sinh ra để phục vụ cho công việc.
Busy: một khi mà thành phần khởi tạo đã được bắt đầu và nhiệm vụ được kích hoạt, máy chuyển sang trạng thái Busy để xác nhận nó đang thực hiện một công việc nào đó mà Condor lưu tâm.
Suspended: nếu công việc bị trì hoãn bởi Condor, máy đó sẽ chuyển sang hoạt động Suspended. Sự kết nối giữa thành phần schedd và máy vẫn chưa bị phá vỡ (yêu cầu nhiệm vụ vẫn đang được duy trì) nhưng tiến trình công việc không được thi hành nữa.và Condor không tiếp tục sinh ra tải công việc trên máy này.
- Preempting
Trạng thái Preempting được dùng cho việc loại bỏ (evicting) một công việc từ một máy. Khi máy đó ở trạng thái này, nó kiểm tra biểu thức WANT_VACATE để quyết định hoạt động của nó.
Vacating: công việc đã chạy dở bị bỏ trống và được đặt trong tiến trình kiểm tra điểm trạng thái. Hoạt động này không xuất hiện ở hệ thống vanilla.
Killing: máy đang thi hành yêu cầu công việc buộc phải kết thúc ngay lập tức mà không thực hiện kiểm tra điểm trạng thái.
Hình 2.3 dưới đây chỉ ra tất cả các tình trạng và hoạt động của các máy và những sự chuyển đổi có thể thực hiện giữa chúng.
Hình 2.3 Sơđồ tình trạng và các hoạt động của các máy tính và sự chuyển đổi qua lại
2.3.4. Các thao tác với công việc
Công việc muốn thi hành thì trước hết cần đưa nó vào hàng đợi để chờ thi hành. Sau khi công việc của người dùng được đưa vào, chương trình điều khiển kết nối tài nguyên matchmaker sẽ cố gắng thực hiện việc kết nối yêu cầu tài nguyên của công việc với tài nguyên thích hợp. Việc thực hiện công việc diễn ra ở bên dưới của giao diện người dùng và người dùng không cần biết là công việc của họ được thực hiện trên máy nào. Họ chỉ cần biết là sau khi đưa vào công việc thì công việc đó sẽ được thực hiện và được thông báo về kết quả thực hiện sau khi công việc được hoàn thành. Việc đưa vào (submit) công việc là yêu cầu đầu tiên của người sử dụng hay các khách hàng, việc thi hành công việc được thực hiện bởi hệ thống và việc kiểm soát tiến trình thực hiện công việc cũng có thể được người
sử dụng làm. Phần này sẽ mô tả về cách đưa vào công việc và kiểm soát công việc của người dùng.
2.3.4.1. Đưa vào công việc
Một công việc được đưa vào để thực hiện cần sử dụng lệnh
condor_submit. Lệnh này lấy một tham số là tên của file được gọi là file mô tả
việc đưa vào (submit description file). File này chứa các câu lệnh và từ khoá để
điều khiển việc xếp hàng đợi cho công việc. Trong file này, Condor tìm thấy mọi thứ nó cần để biết rõ về công việc. Các đối tượng như là tên của tệp tin cần chạy thực sự, thư mục khởi tạo công việc và các tham số dòng lệnh khác của chương trình đều được mô tả trong file này. Lệnh condor_submit tạo một chùm tin quảng bá dựa trên các thông tin đó, và Condor dùng cho việc chạy công việc.
Nội dung của một file mô tả công việc đưa vào có thể được lưu theo thời gian cho người sử dụng. Người ta có thể dễ dàng đưa vào nhiều chương trình một lúc để chạy trong Condor. Để chạy cùng một chương trình 500 lần trên 500 đầu vào (input) dữ liệu khác nhau, cần sắp xếp các file dữ liệu sao cho mỗi file chương trình chạy đọc input riêng của nó và ghi ra một đầu ra (output) riêng. Điều đó cũng có nghĩa mỗi chương trình riêng biệt đó chạy có thể có thư mục khởi tạo riêng, các thành phần chuẩn stdin, stdout, stderr, các tham số lệnh và môi trường tính toán
riêng. Một chương trình mở trực tiếp các file riêng của nó sẽ đọc các tên file được dùng từ tham số stdin hoặc từ dòng lệnh. Một chương trình mở một tên file tĩnh trong mọi thời điểm sẽ cần sử dụng thư mục riêng cho output của mỗi lần chạy.
Một ví dụđơn giản về việc đưa vào công việc:
Đây là file mô tả việc đưa vào hệ thống Condor một công việc đơn giản. Nó xếp một chương trình tính tổng và tích của 2 ma trận vuông cỡ 400, đã được dịch sang thành file có thể thi hành (tongtichmatran400.exe), vào trong hàng đợi để chờ thực hiện. Trong file này có một dòng để xác định đây là công việc được thi hành bởi hệ thống Condor dạng vanilla và 3 dòng tiếp theo lần lượt cho biết các file cần thi hành, file ghi chép sự kiện cho công việc và file chứa lỗi có thể xảy ra trong quá trình thực hiện.
#################### # Ví dụđơn giản về một file mô tả (job description file)
# Công việc: Tính tổng và tích của 2 ma trận vuông cỡ 400 #################### Universe = vanilla Executable = tongtichmatran400.exe Log = tongtichmatran400.log Error = tongtichmatran400.err Queue
Đối với hệ thống Condor chạy trên Windows, người dùng có thể đưa công việc này vào bằng cách mở đường dẫn tới thư mục chứa các file thi hành lệnh của Condor (mặc định là thư mục C:\condor\bin) và chạy lệnh sau:
C:\Condor\bin>condor_submit [đường dẫn]\tongtichmatran400.sub
Ở đây, tongtichmatran400.sub là tên file mô tả công việc ở trên.
2.3.4.2. Kiểm soát công việc
Mục này cung cấp một bản tóm tắt tổng quát về những gì có thể được làm sau khi công việc đã được đưa vào. Những cơ chế cơ sở để kiểm soát một công việc được sẽ được giới thiệu còn các lệnh được mô tả ngắn gọn.
Khi các công việc được đưa vào, Condor sẽ cố gắng tìm các tài nguyên để chạy công việc đó. Một danh sách tất cả các công việc được đưa vào có thể lấy ra được bằng lệnh condor_status với lựa chọn submmitter. Một ví dụ của lệnh này được cho dưới đây:
C:\Condor\bin>condor_status -submitter
Name Machine Running IdleJobs HeldJobs
thuycq@hieudt hieudt 0 1 0 thuycq@linhntt linhntt 3 861 0 oanhply@vietdtm vietdtm 0 1 0
oanhply@vietdtm 0 1 0 thuycq@hieudt 0 1 0 thuycq@linhntt 3 861 0 Total 3 863 0 Kiểm tra tiến trình công việc
Ở bất kì thời điểm nào, người dùng có thể kiểm tra trạng thái của công việc với lệnh condor_q. Lệnh này hiển thị tình trạng của tất cả các công việc.
Loại công việc ra khỏi hàng đợi
Một công việc có thể bị loại khỏi hàng đợi vào bất cứ lúc nào bằng cách sử dụng lệnh condor_rm. Nếu công việc được loại đi khi nó đang chạy, công việc đó sẽ bị bóp chết hay loại bỏ bất chấp mọi điều kiện (killed). Hàng đợi công việc cũng sẽ loại đi một đầu vào là đối tượng thi hành của công việc này.
Đặt một công việc vào trạng thái hold (bị nắm giữ)
Một công việc trong hàng đợi có thể được đặt vào trạng thái holdbằng cách dùng lệnh condor_hold. Một công việc trong trạng thái này sẽ không được thực
hiện và sẽ được duy trì trong tình trạng bị nắm giữ cho tới khi nó được giải phóng để có thể thi hành bằng lệnh condor_release.
Sử dụng lệnh condor_hold gây ra một tín hiệu ép buộc mạnh (hard kill signal) để gửi tới một công việc đang chạy, ép công việc đó vào trạng thái bị nắm
giữ. Sau khi được giải phóng, công việc đó có thể tiếp tục được thực hiện và sử dụng trạng thái (checkpoint) được lưu lại gần nhất nếu là công việc trong hệ thống
standard, hoặc thực hiện lại từ đầu với các hệ thống khác.
Thay đổi mức ưu tiên của công việc
Condor cũng cung cấp cho người dùng khả năng để đặt mức độ ưu tiên cho mỗi công việc được đưa vào. Những mức ưu tiên này của công việc được xác định cục bộ cho mỗi hàng đợi và có phạm vi từ -20 đến +20, trong đó giá trị cao hơn nghĩa là mức ưu tiên cao hơn. Giá trị ưu tiên mặc định của công việc là 0 và nó có
thể thay đổi bằng lệnh condor_prio. Ví dụ dưới đây sẽ thay đổi giá trị ưu tiên của công việc có thuộc tính ID= 2000.0 trở thành 10:
C:\condor\bin>condor_prio +10 2000.0
hoặc cũng có thể viết:
C:\condor\bin>condor_prio 2000.0 +10
Lưu ý là mức độ ưu tiên của công việc hoàn toàn khác với mức độ ưu tiên được thiết lập bởi Condor cho người dùng. Mức độ ưu tiên cho công việc không ảnh hưởng đến mức ưu tiên của người dùng. Chúng chỉ là một cơ chế cho người dùng xác định tầm quan trọng của mỗi công việc trong số tất cả các công việc được đưa vào một hàng đợi xác định.
Các log file (file ghi chép sự kiện)
Trong một log file của một công việc là một danh sách ghi chép các sự kiện theo thứ tự thời gian trong suốt quá trình sống của công việc từ lúc được đưa vào cho đến lúc bị loại ra khỏi hàng đợi. Định dạng của các sự kiện là giống nhau nên chúng có thể đọc được bởi các máy khác nhau. Có 4 trường thông tin luôn được xác định và hầu hết chúng được nối tiếp bằng các trường khác để đưa thêm thông tin xác định cho các loại sự kiện.
Trường đầu tiên trong sự kiện là một giá trị số miêu tả kiểu sự kiện với 3 chữ số. Trường thứ hai xác định mã số ID của công việc sinh ra sự kiện đó. Trong cặp ngoặc đơn là các thuộc tính đã được quảng bá của công việc (ClassAd job attributes) về giá trị ClusterID, ProcId, và phạm vi xác định MPI (MPI-specific rank), được phân cách nhau bởi dấu chấm. Trường thứ ba là ngày và giờ của sự kiện đó. Trường thứ tư là một xâu mô tả tóm tắt sự kiện. Các trường tiếp theo trường thứ tư đưa thêm thông tin cho kiểu sự kiện xác định đó.
Bảng sau liệt kê một số kiểu sự kiện thường gặp trong hệ thống Condor:
Bảng 2.2 Các sự kiện trong các log file
Mã số sự
000 Job submitted Đưa vào công việc 001 Job now running Công việc đang chạy 002 Error in executable Có lỗi thực hiện
003 Job was checkpointed Công việc thực hiện kiểm tra điểm trạng thái
004 Job evicted from machine Công việc bị bỏ trống
005 Job terminated Công việc kết thúc
006 Image size of job updated Công việc được cập nhật kích cỡ bộ nhớ
007 Shadow threw an exception Loại bỏ một ngoại lệ gặp phải
008 Generic Log Event Sự kiện ghi chép chung
009 Job Aborted Bỏ qua công việc
010 Job was suspended Công việc bị tạm dừng 011 Job was unsuspended Công việc thôi tạm dừng
012 Job was held Công việc bị nắm giữ
013 Job was released Công việc được giải phóng
Sự kết thúc công việc
Khi công việc của người dùng kết thúc (hoặc hoàn thành bình thường hoặc bởi tín hiệu kết thúc bất thường), Condor sẽ loại bỏ nó khỏi hàng đợi công việc và thêm nó vào trong file lịch sử của công việc (job history file). Người dùng có thể kiểm tra file đó với lệnh condor_history. Nếu người dùng xác định một log file
trong file mô tả việc đưa vào (submit description file) thì trạng thái kết thúc của công việc sẽ được ghi lại trong đó giống như thực tế đã diễn ra.
2.4. Phương pháp nghiên cứu thử nghiệm
2.4.1. Lập kế hoạch sơ bộ
Để đạt được hiệu quả cao cho việc nghiên cứu và triển khai ứng dụng một hệ thống HTC, người ta cần phải thực hiện thử nghiệm trên các cụm máy tính rất nhỏ trước, rồi thử nghiệm tiếp trên các hệ thống lớn hơn một chú đến khi đạt được thành công như mong muốn thì mới có thể đem triển khai ứng dụng hệ thống một cách rộng rãi được. Phương pháp hiệu quả cho việc nghiên cứu và thực hiện này cần có đầy đủ các bước sau đây:
- Triển khai thử nghiệm trên một mạng LAN nhỏ, gồm một số ít máy trong một phòng máy của một trường học, một cơ quan…
- Mở rộng thử nghiệm trên các mạng rộng hơn như trong một cơ quan, một trường học, hay một viện nghiên cứu.
- Đưa vào sử dụng trong thực tế. Khi việc thử nghiệm hệ thống trong một cơ quan đã đạt được thành công thì chúng ta có thể triển khai hệ thống HTC một cách rộng rãi vào trong các mạng máy tính thực sự ở các mạng của thành phố, quốc gia…
2.4.2. Phương pháp triển khai thực hiện thử nghiệm
Trong điều kiện thực tế, việc tiến hành thử nghiệm có thể thực hiện tại một phòng máy của Khoa Công Nghệ Thông Tin. Dựa vào những điều kiện hiện có của phòng máy mà ta có thể tiến hành triển khai thử nghiệm để đánh giá kết quả thử nghiệm hệ thống. Việc triển khai thử nghiệm sẽ được tiến hành theo các bước sau đây:
- Cài đặt và cấu hình hệ thống phần mềm Condor trên một số máy trong phòng máy của trường, các máy này được nối với nhau trong một mạng LAN.
- Tiến hành chạy thử một số chương trình (công việc) đơn giản để xem hệ thống Condor có hoạt động tốt như mong muốn hay không. Nếu hệ thống gặp lỗi thì cố gắng tìm ra lỗi và đưa ra biện pháp khắc phục.
- Khi hệ thống Condor đã chạy tốt, chuẩn bị một số chương trình có thể thi hành, đóng vai trò các công việc của Condor, để đưa vào làm thực nghiệm.
- Theo dõi quá trình thực nghiệm hệ thống trong khoảng 10 ngày, ghi chép các kết quả thực hiện công việc của hệ thống theo từng ngày.
- Thống kê các kết quả thực nghiệm và đánh giá kết quả.