2014-10-06 18 views
11

Tôi có một vài nghìn công việc để chạy trên một cụm slurm với 16 nút. Những công việc này chỉ nên chạy trên một tập hợp con của các nút có kích thước 7. Một số nhiệm vụ được song song, do đó sử dụng tất cả sức mạnh CPU của một nút trong khi một số khác là luồng đơn. Do đó, nhiều công việc nên chạy cùng một lúc trên một nút. Không có nhiệm vụ nào xuất hiện trên nhiều nút.slurm: sử dụng bất kỳ nút nào từ nodelist

Hiện nay tôi gửi mỗi công việc với:

sbatch --nodelist=myCluster[10-16] myScript.sh 

Tuy nhiên tham số này làm cho slurm đợi cho đến khi công việc đệ trình chấm dứt, và do đó lá 3 nút hoàn toàn không sử dụng và tuỳ theo nhiệm vụ (đa hoặc đơn luồng), cũng là nút hiện đang hoạt động có thể chịu tải thấp về khả năng của CPU.

Các tham số tốt nhất của sbatch là lực đẩy slurm để chạy nhiều công việc cùng một lúc trên các nút được chỉ định?

Trả lời

16

Bạn có thể làm việc theo cách khác; chứ không phải là quy định cụ thể mà các nút sử dụng, với hiệu quả mà từng công việc được phân bổ tất cả 7 nút, xác định các nút không sử dụng:

sbatch --exclude=myCluster[01-09] myScript.sh 

và Slurm sẽ không bao giờ phân bổ hơn 7 nút để công việc của bạn. Đảm bảo rằng cấu hình cụm cho phép chia sẻ nút và myScript.sh của bạn chứa #SBATCH --ntasks=1 --cpu-per-task=n với số n số lượng chủ đề của mỗi công việc.

+0

Giả sử bạn không phải là quản trị viên. Nếu không giới hạn và các hiệp hội là cách để đi. – damienfrancois

+0

Với 'liên kết', bạn có nghĩa là 'đặt chỗ' trong từ vựng SLURM không? – Faber

+0

Không, ý tôi là [liên kết] (http://slurm.schedmd.com/accounting.html) là thuật ngữ Slurm sử dụng trong ngữ cảnh tài khoản, chất lượng dịch vụ, phân vùng, v.v. để đặt giới hạn. – damienfrancois

1

Một số tác vụ được song song, do đó sử dụng tất cả sức mạnh CPU của một nút trong khi những người khác là một luồng đơn.

Tôi hiểu rằng bạn muốn các công việc đơn luồng để chia sẻ một nút, trong khi các lệnh song song sẽ được chỉ định cho toàn bộ một nút?

nhiều công việc sẽ chạy cùng một lúc trên một nút.

Theo như sự hiểu biết của tôi về SLURM đi, điều này có nghĩa là bạn phải xác định lõi CPU như các nguồn lực tiêu hao (ví dụ, SelectType=select/cons_resSelectTypeParameters=CR_Core trong slurm.conf)

Sau đó, để hạn chế việc song song để có được một nút toàn bạn có thể sử dụng tùy chọn --exclusive (nhưng lưu ý rằng cấu hình phân vùng được ưu tiên: bạn không thể có nút chia sẻ nếu phân vùng được định cấu hình để truy cập độc quyền) hoặc sử dụng -N 1 --tasks-per-node="number_of_cores_in_a_node" (ví dụ: -N 1 --ntasks-per-node=8).

Lưu ý rằng sau này sẽ chỉ hoạt động nếu tất cả các nút có cùng số lõi.

Không có tác vụ nào xuất hiện trên nhiều nút.

Điều này phải được đảm bảo bằng -N 1.

+0

Điều quan trọng là tất cả công việc của tôi sử dụng tổng cộng không quá 7 nút. Mỗi nút trong cluster của chúng tôi có 20 lõi và 2 luồng trên mỗi lõi. Nếu tôi hiểu bạn một cách chính xác, bạn đề xuất gửi các công việc song song với 'sbatch --nodelist = myCluster [10-16] --ntasks-per-node = 40 -N 1 myScript.sh'. Tại sao không phải '--ntasks-per-node = 1', để đảm bảo rằng không nhiều hơn một công việc chạy cùng một lúc trên một nút? Điều gì về các công việc đơn luồng? – Faber

+1

@Faber Nếu bạn muốn giới hạn một tập hợp các công việc để sử dụng tối đa 7 nút trong tổng số, hơn một phân vùng hoặc cài đặt QoS sẽ là cách để đi. –

1

Thực ra, tôi nghĩ rằng cách để đi là thiết lập 'đặt trước' trước tiên. Theo bản trình bày này http://slurm.schedmd.com/slurm_ug_2011/Advanced_Usage_Tutorial.pdf (trang trình bày cuối cùng).

Tình huống: Đặt mười nút trong phân vùng SLURM mặc định bắt đầu vào buổi trưa và với thời lượng 60 phút diễn ra hàng ngày. Đặt phòng sẽ chỉ có sẵn cho người dùng alan và brenda.

scontrol create reservation user=alan,brenda starttime=noon duration=60 flags=daily nodecnt=10 
Reservation created: alan_6 

scontrol show res 
ReservationName=alan_6 StartTime=2009-02-05T12:00:00 
    EndTime=2009-02-05T13:00:00 Duration=60 Nodes=sun[000-003,007,010-013,017] NodeCnt=10 Features=(null) PartitionName=pdebug Flags=DAILY Licenses=(null) 
    Users=alan,brenda Accounts=(null) 

# submit job with: 
sbatch --reservation=alan_6 myScript.sh 

Rất tiếc, tôi không thể kiểm tra quy trình này, do thiếu đặc quyền.

+1

Việc đặt trước sẽ ngăn không cho bất kỳ người dùng nào khác chạy * trên cùng một tập hợp các nút, đó là lý do tại sao một quản trị viên là cần thiết để tạo nó. Đây có phải là điều bạn thực sự muốn không? Các nút dự trữ cho quyền truy cập độc quyền của bạn? –

+0

Đó là những gì chúng tôi đã đồng ý trong số (ít) người dùng. Nếu chúng ta có thể đặt thời lượng tối đa, tại sao không? Hay cách tiếp cận này là một mô hình chống hoàn chỉnh cho việc sử dụng cụm sao? – Faber

+0

Có thể cấp cho người dùng thông thường quyền thiết lập đặt chỗ không? – Faber

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