Các lựa chọn cấu hình hệ thống dưới đây có thể thực hiện với file cấu hình chung condor_config của Condor trên mỗi máy trong vùng hoạt động, nằm trong thư mục cài đặt Condor (C:\Condor).
Các biểu thức cơ sở về thời gian (không nên sửa đổi):
MINUTE = 60
HOUR = (60 * $(MINUTE))
ActivityTimer= (CurrentTime - EnteredCurrentActivity) ActivationTimer = (CurrentTime - JobStart)
Giải thích:
Chọn đơn vị thời gian như trong thực tế: 1 phút= 60 giây, 1 giờ= 60 phút. Thời gian một trạng thái máy tính (state) đã trải qua bằng thời gian thực trừ đi thời gian trạng thái hiện tại từ khi bắt đầu trạng thái đó. Tương tự, thời gian của một hoạt động (activity) đã trải qua bằng thời gian thực trừ đi thời gian hoạt động đó bắt đầu xuất hiện. Thời gian kích hoạt một công việc bằng thời gian thực trừ đi thời gian công việc bắt đầu được khởi động để chuẩn bị thi hành.
Các biểu thức điều kiện xác định tình trạng hoạt động của các máy:
1) NonCondorLoadAvg = (LoadAvg - CondorLoadAvg)
2) BackgroundLoad = 0.3 3) HighLoad = 0.5 4) StartIdleTime = 2 * $(MINUTE) 5) ContinueIdleTime = 2 * $(MINUTE) 6) MaxSuspendTime = 3 * $(MINUTE) 7) MaxVacateTime = 3 * $(MINUTE)
8) KeyboardBusy = (KeyboardIdle < $(MINUTE))
9) ConsoleBusy = (ConsoleIdle < $(MINUTE))
10) CPUIdle = ($(NonCondorLoadAvg) <= $(BackgroundLoad))
11) CPUBusy = ($(NonCondorLoadAvg) >= $(HighLoad))
12) KeyboardNotBusy = ($(KeyboardBusy) == False)
13) BigJob = (TARGET.ImageSize >= (50 * 1024)) 14) MediumJob = (TARGET.ImageSize >= (15 * 1024) && TARGET.ImageSize < (50 * 1024)) 15) SmallJob = (TARGET.ImageSize < (15 * 1024))
16) JustCPU = ($(CPUBusy) &&
($(KeyboardBusy) == False))
17) MachineBusy = ($(CPUBusy) || $(KeyboardBusy))
Giải thích:
Biểu thức 1 đánh giá tải trung bình của các dịch vụ thông thường (tải ngoài Condor) = (tải trung bình tổng cộng - tải trung bình của Condor). Các biểu thức từ 4 đến 7 lần lượt cho biết: thời gian cần thiết mà CPU ở hoạt động Idle (mặc định là 5 phút) sẽ có thể bắt đầu khởi động một công việc mới được chọn là 2 phút, thời gian cần thiết để CPU tiếp tục thi hành một công việc bị trì hoãn trước đó sau khi nó ở hoạt động Idle (mặc định là 15 phút) là 2 phút, thời gian tối đa để một CPU trì hoãn (hay tạm dừng) một công việc đang thi hành (mặc định là 10 phút) là 3 phút và thời gian tối đa để một CPU bỏ trống một công việc đang bị trì hoãn (mặc định là 10 phút) là 3 phút (sau 3 phút này công việc đó sẽ có thể tiếp tục thi hành lại hoặc sẽ bị loại bỏ hoàn toàn (killed)). Biểu thức 8 và 9 xác định trạng thái bận của bàn phím là khi thời gian bàn phím rỗi (không có ai gõ lên nó) nhỏ hơn 1 phút và trạng thái bận của bộ điều khiển CPU là khi thời gian rỗi của bộ điều khiển CPU nhỏ hơn 1 phút. Các biểu thức 2, 3, 10, 11 cho biết CPU rỗi là khi tải trung bình thông thường (ngoài Condor) không lớn hơn tải mức cơ sở được xác định là 0.3MB còn CPU bận là khi tải trung bình thông thường (ngoài Condor) không nhỏ hơn tải mức cao được xác định bằng 0.5MB. Biểu thức 12 xác định trạng thái rỗi của bàn phím là trạng thái ngược lại của trạng thái bận. Các biểu thức 13, 14, 15 phân chia một công việc thành các mức nhỏ, trung bình và lớn với các kích cỡ bộ nhớ tương ứng cần dành cho công việc đó là dưới 15KB, từ 15KB đến dưới 50KB và từ 50KB trở lên. Việc phân chia kích cỡ công việc này có ảnh hưởng đến việc thi hành công việc, các công việc trung bình và lớn có thể cần phải được cập nhật lượng bộ nhớ xác định trong quá trình thi hành và các công việc có kích cỡ lớn thường đòi hỏi thời gian thi hành rất lâu. Biểu thức 16 xác định trạng thái chỉ có CPU bận là lúc mà trạng thái CPU là bận còn
trạng thái bàn phím là rỗi. Còn biểu thức 17 xác định tình trạng hoạt động của một máy là đang bận khi cả CPU và bàn phím đều ở trạng thái bận.
Một số lựa chọn cấu hình liên quan đến tình trạng hoạt động của các máy:
+ Một máy chỉ bắt đầu thi hành công việc nếu bàn phím đã rỗi trong thời gian đủ lâu và hoặc là tải trung bình là đủ thấp hoặc là máy hiện đang chạy một công việc khác của Condor:
UWCS_START = ( (KeyboardIdle > $(StartIdleTime)) \ && ( $(CPUIdle) || \
(State != "Unclaimed" && State != "Owner")) )
+ Một máy chỉ tạm dừng (hoãn) công việc nếu bàn phím đã có người gõ lên hoặc là có 2 điều kiện xảy ra: CPU đã bận hơn 2 phút và công việc đó đã chạy được hơn 90 giây:
UWCS_SUSPEND = ( $(KeyboardBusy) || \
( (CpuBusyTime > 2 * $(MINUTE)) \ && $(ActivationTimer) > 90 ) )
+ Một máy chỉ tiếp tục thi hành công việc nếu CPU đang ở trạng thái rỗi, công việc đã bị tạm dừng hơn 10 giây và bàn phím đã nằm yên trong thời gian đủ lâu:
UWCS_CONTINUE = ( $(CPUIdle)&& ($(ActivityTimer)> 10)\ && (KeyboardIdle > $(ContinueIdleTime)) )
+ Đặt công việc vào hàng đợi ưu tiên (để thi hành công việc khác nhưng sẽ quay lại thi hành sớm công việc này sau khi công việc mới kết thúc) nếu công việc đó bị tạm dừng và đã tạm dừng lâu hơn thời gian cho phép hoặc là khi máy không muốn dừng nó nhưng các điều kiện cần dừng công việc đã thỏa mãn (tức khi ai đó ngồi sử dụng máy này lâu):
UWCS_PREEMPT = ( ((Activity == "Suspended") && \
|| (SUSPEND && (WANT_SUSPEND == False)) )
+ Loại bỏ hoàn toàn công việc nếu nó đã bị bỏ trống quá lâu:
UWCS_KILL = $(ActivityTimer) > $(MaxVacateTime)
Ngoài ra, ta có thể cấu hình để cho các công việc luôn luôn được chạy đến lúc kết thúc một khi các điều kiện ban đầu để chạy đã thỏa mãn. Việc cấu hình như vậy sẽ bỏ qua tất cả các hoạt động tạm dừng, tiếp tục thực hiện, bỏ trống… vì kể từ khi công việc thi hành, máy sẽ không sử dụng đến các biểu thức điều kiện xác định các hoạt động này như là các tải trung bình, trạng thái rỗi của CPU (CPUBusy)… Việc cấu hình như vậỵ có thể được thực hiện cho các mục đích kiểm tra hệ thống trong thời gian rất ngắn.