Các tác động, nếu có, của các ưu tiên và chính sách của trình lập lịch biểu cho các luồng trong một cpuset không được giám sát là gì?


12

Tôi có một hệ thống Linux, nơi chúng tôi đã sử dụng các nhóm để tạo hai cpu_exinating, A và B, và chúng tôi đã di chuyển tất cả các luồng người dùng và tất cả các luồng nhân không liên kết sang một nhóm được gắn vào cpuset A. Mọi thứ chạy trong cpuset A có các chính sách lập lịch khác nhau và các ưu tiên khác nhau, và có nhiều luồng chạy trong cpuset A hơn so với các lõi trong cpuset A.

Ngoài ra còn có một số lượng nhỏ các quy trình rất tích cực được gắn vào cpuset B, trong đó tổng số luồng người dùng trên các quy trình này không bao giờ lớn hơn số lượng lõi có sẵn trong cpuset B. Mục tiêu là để bảo vệ các tác vụ quan trọng này đang chạy trong cpuset B từ hoạt động khác trên máy và để giảm thiểu độ trễ xử lý.

Trong một thiết lập như vậy, chính sách lập lịch / mức độ ưu tiên của các luồng người dùng đang chạy trong cpuset B có ảnh hưởng gì không? Nói cách khác: việc thay đổi chính sách lập lịch của các luồng B cpuset từ SCHED_OTHER mặc định sang SCHED_FIFO hoặc SCHED_RR có bất kỳ hậu quả nào, tốt hay xấu?

Có vẻ như câu trả lời là 'không', vì bộ lập lịch sẽ có thể gán từng luồng chạy trong lõi riêng của cpuset B, do đó, sẽ không có gì để ưu tiên hoặc lên lịch, và vì vậy chính sách và mức độ ưu tiên tương đối của B chủ đề cpuset sẽ không quan trọng. Mặt khác, có các luồng nhân bị ràng buộc và các khía cạnh domain tên miền lập lịch 'phải lo lắng, và có lẽ những điều khác tôi chưa xem xét.

Các chính sách lập lịch và các ưu tiên của các luồng chạy trong một cpuset độc quyền được cung cấp quá mức theo bất kỳ ý nghĩa thực tế nào?

Câu trả lời:


4

Lát thời gian được sử dụng sẽ quan trọng đối với các công việc đòi hỏi nhiều CPU đòi hỏi phải duy trì bộ đệm, trừ khi bạn khóa một lõi cụ thể cho mỗi PID. Bạn có thể tăng lát thời gian với chính sách lập lịch SCHED_BATCH và cải thiện hiệu suất lên tới 300% trong một số trường hợp, đồng thời giảm khả năng phản hồi tương tác. Hiệu ứng ngược lại của các lát thời gian nhỏ hơn xảy ra với SCHED_RR (sẽ làm giảm thông lượng nhưng tăng khả năng đáp ứng thời gian thực).

Bạn có thể sử dụng lịch trình để đặt chính sách của các PID cụ thể cho tất cả các PID trong bộ B dưới dạng một lệnh. Nó cũng có thể được sử dụng để khóa các PID cụ thể vào các lõi cụ thể, đó sẽ là giải pháp tối ưu kể từ đó việc lưu giữ bộ đệm không còn phụ thuộc vào lát cắt thời gian, nhưng điều này cần nhiều nỗ lực hơn vì bạn phải chạy một lệnh calendartool riêng cho mỗi PID.


1

Nếu mỗi quá trình có cốt lõi riêng thì không có ràng buộc ưu tiên.

Tuy nhiên, nếu bạn lên lịch một quy trình mất 30 phút để chạy cứ sau 15 phút, bạn sẽ bắt đầu có nhu cầu ưu tiên vì quy trình sẽ bắt đầu chồng chéo.

Tuy nhiên, không có chính sách lập lịch "tốt nhất".

Họ thực sự phụ thuộc vào những gì bạn muốn đạt được. Nhưng ban đầu, tôi sẽ để nó cho SCHED_OTHER, mặc định và quan sát một thời gian trước khi tôi thử nhiều thứ chuyên dụng hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.