2013-04-05 30 views
6

Khi gửi tập lệnh công việc đến hệ thống xếp hàng PBS, thời gian trên tường được chỉ định tự động hoặc bởi người dùng, ví dụ: quaNhận thời gian sử dụng trong tập lệnh PBS

#PBS -l walltime=1:00:00 

Câu hỏi đặt ra là liệu thời gian này có thể được truy cập từ tập lệnh hay không. Có một biến môi trường hoặc một số cách khác để có được thời gian này walltime.

Cuối cùng, tập lệnh công việc nên quyết định theo thời gian nếu còn đủ thời gian để thực hiện một số công việc khác để công việc không bị hệ thống xếp hàng giết chết.

Cập nhật:

Ít nhất nếu người dùng đã quy định các walltime trong danh sách các nguồn lực, tôi có thể đề nghị cách giải quyết sau (làm việc cho bash)

read _ _ PBS_WALLTIME <<< `qstat -f $PBS_JOBID | grep "Resource_List.walltime"` 

đó phân tích các walltime từ đầu ra qstat và đặt giá trị trong biến PBS_WALLTIME. Theo đó, lệnh

echo $PBS_WALLTIME 

sẽ mang lại một cái gì đó giống như

1:00:00 
+0

Trong PBS 4.2.8 (và có thể là các phiên bản khác), biến $ PBS_WALLTIME lưu trữ thời gian tường theo số giây, do đó, 'echo' sẽ xuất ra '3600' thay vì' 1: 00: 00'. – MasterHD

Trả lời

5

này được lưu trữ trong biến môi trường $ PBS_WALLTIME.

Tất nhiên, đó là dành cho TORQUE, tôi không chắc chắn hệ thống xếp hàng PBS nào bạn đang sử dụng.

+0

Điều đó, tất nhiên, phụ thuộc vào cụm mà tôi đang sử dụng. Một chạy TORQUE và PBS Pro khác. Thật không may, ngay cả trên cụm TORQUE biến $ PBS_WALLTIME không được định nghĩa. Vì vậy, đó có thể không phải là tiêu chuẩn. – dastrobu

+0

Phiên bản TORQUE nào? – dbeer

+0

Tôi không chắc chắn, nếu tôi có thể trả lời câu hỏi đó một cách chính xác. Làm thế nào để có được thông tin phiên bản? Có thể bạn đang yêu cầu phiên bản PBS được đặt là 2.1.10 (được lấy từ đầu ra của máy chủ in 'qmgr -c"). – dastrobu

1

Tôi đang tìm kiếm câu trả lời cho điều này và các nhận xét ở trên đã cho tôi ý tưởng dường như hoạt động khá tốt. Bạn có thể sử dụng qstat và lấy các thông tin cần thiết từ nó với sed:

qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p' 

Đưa này trong kịch bản PBS của bạn sẽ in ra giá trị và bạn có thể sử dụng bash tiêu chuẩn để lưu trữ các kết quả của điều này trong một biến:

WALLTIME=$(qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p') 

Bạn cũng có thể sử dụng thông tin này để nhận các thông tin khác không có sẵn từ các biến môi trường PBS_ * chẳng hạn như lượng bộ nhớ được cấp cho công việc và một số nội dung khác.

Các vấn đề liên quan