Cách tốt nhất tôi đã tìm thấy cho điều này là thiết lập tài nguyên tùy chỉnh trên các nút mà bạn muốn cho phép thực thi, sau đó yêu cầu tài nguyên đó khi bạn gửi công việc.
Trong qmon, chuyển đến cấu hình "phức tạp" và thêm thuộc tính mới. Đặt tên cho một cái gì đó như "my_allowed" và phím tắt cho một cái gì đó như "m_a", loại BOOL, mối quan hệ với ==, có thể yêu cầu Có, tiêu thụ thành Không và "Thêm" nó. Cam kết thay đổi của bạn đối với các cấu hình phức tạp.
Bước tiếp theo có thể dễ dàng hơn để làm từ dòng lệnh, nhưng bạn cũng có thể làm điều đó trong qmon. Bạn cần phải thêm tiêu hao của bạn cho mỗi máy chủ mà bạn sẽ cho phép công việc của bạn chạy trên đó. Trong qmon, bạn có thể đi đến cấu hình máy chủ, chọn máy chủ thực thi và mở mỗi máy chủ lần lượt, nhấp vào tab hàng tiêu dùng/thuộc tính cố định và thêm phức hợp mới mà bạn vừa định cấu hình ở trên bằng "True" làm giá trị. Từ dòng lệnh, bạn có thể nhận danh sách các máy chủ thực thi của bạn với "qconf -sel". Danh sách này phù hợp để chuyển đến một vòng lặp và tìm kiếm (các) máy chủ mà bạn không muốn đưa vào. Làm điều gì đó như thế này:
qconf -sel | grep -v host_to_exclude | while read host; do
EDITOR="ed" qconf -me $h <<EOL
/complex_values/s/$/,my_test=True/
w
q
EOL
done
Điều này cho phép bạn lập trình chỉnh sửa máy chủ (không được qconf bình thường khi muốn khởi động trình chỉnh sửa cho bạn). Nó làm điều này bằng cách thiết lập trình soạn thảo để "ed" (bạn sẽ phải chắc chắn rằng bạn đã cài đặt trình chỉnh sửa ed ... thử chạy nó bằng tay trước ... gõ "q" để thoát ra). ed có danh sách các lệnh chỉnh sửa trên stdin của nó, vì vậy chúng tôi cung cấp cho nó ba lệnh. Lần đầu tiên chỉnh sửa dòng có complex_values trên nó để bao gồm giá trị my_test. Thứ hai viết ra tập tin tạm thời và lần thứ ba thoát khỏi ed.
Một khi bạn đã làm điều này, trình công việc của bạn với một lựa chọn giới hạn đó đòi hỏi phức tạp mới của bạn:
qsub -q whatever -l my_test=True my_prog.sh
Các tùy chọn -l đặt ra một giới hạn và my_test = True nói rằng công việc chỉ có thể chạy trên máy chủ có my_test phức tạp với giá trị True. Vì phức tạp không phải là tiêu hao, nó vẫn có thể chạy nhiều công việc trên mỗi máy chủ như nó muốn (tối đa giới hạn vị trí cho máy chủ), nhưng nó sẽ tránh bất kỳ máy chủ nào không có tổ hợp my_test được đặt thành True .
Đây là giải pháp hack nhưng là giải pháp duy nhất phù hợp với tôi (+1). Tôi đã thử một tá biến thể qsub nhưng chúng không tạo ra sự khác biệt hoặc gây ra lỗi .... – DaveFar