Hệ thống linux của tôi sử dụng bộ lập lịch xử lý nào?


10

Tôi không chắc chắn nếu stackoverflow hoặc serverfault là diễn đàn để sử dụng cho câu hỏi này, nhưng tôi sẽ thử ở đây.

Có một số lệnh tôi có thể sử dụng hoặc một tệp tôi có thể kiểm tra để tìm ra trình lập lịch xử lý nào tôi đang sử dụng trên hệ thống Linux của mình không? Tôi không tìm kiếm bộ lập lịch I / O, nhưng bộ lập lịch xử lý, và xin vui lòng, không tham khảo hướng dẫn hoặc howtos cho bộ lập lịch là gì, tôi chỉ đơn giản là hỏi nếu có lệnh hoặc tệp tôi có thể chạy / kiểm tra để thấy điều này Tôi có thể kiểm tra tài liệu cho kernel của mình nhưng một lần nữa tôi chỉ tự hỏi liệu có lệnh hay tập tin nào tôi có thể kiểm tra không.

Tôi có thể hơi dư thừa ở trên nhưng đó là vì các bài đăng mà tôi thấy mọi người dường như nhầm lẫn giữa trình lập lịch biểu với trình lập lịch i / o và họ dường như không trả lời câu hỏi thực tế, chỉ cung cấp liên kết đến trình lập lịch biểu là gì đó không phải là những gì tôi ở đây, vì vậy xin lỗi nếu những bình luận trên nghe có vẻ thô lỗ.


2
Bạn ngụ ý rằng Linux bằng cách nào đó phải có các thuật toán lập lịch khác nhau mà người ta có thể chọn trong số đó. Điều gì khiến bạn nghĩ rằng đó là trường hợp?
Stéphane Chazelas


Tôi không, và tôi không nghĩ bạn có thể thay đổi lịch trình quá trình trong thời gian thực. Điều tôi hỏi là nếu có một lệnh để kiểm tra hoặc một tệp để đọc nội dung của nó để có thể xem cái nào đang hoạt động. Nhưng nếu bạn muốn tôi nghĩ bạn có thể chọn O (1) hoặc O (n) nếu bạn thực sự muốn.
vượt quá

1
AFAIK trong nhân Linux 2.6,23, chúng tôi thay đổi bộ lập lịch xử lý từ O (1) sang CFS và chúng tôi không có bất kỳ bộ lập lịch nào khác cho các quy trình được thay đổi động như đối với bộ lập lịch I / O khối.
Artur Szymczak

2
@ZanLynx Đề nghị đóng câu hỏi cũ hơn như một bản sao của câu hỏi này, vì câu hỏi đang được đối xử tốt hơn ở đây rồi.
goldilocks

Câu trả lời:


7

Có một số lệnh tôi có thể sử dụng hoặc một tập tin tôi có thể kiểm tra để tìm ra trình lập lịch xử lý nào tôi đang sử dụng trên hệ thống linux của tôi?

Không, vì không giống như WRT với bộ lập lịch I / O, chỉ có một khả năng : CFS ("Bộ lập lịch hoàn toàn công bằng"), bao gồm các khả năng thời gian thực. CFS được đặt tên một phần để phân biệt với bộ lập lịch "O (1)" , như đã lưu ý trong bài viết đó đã được thay thế trong phiên bản 2.6.23.

Vì vậy, nếu bạn có kernel mà bạn không chắc chắn, chỉ cần kiểm tra số phiên bản.


Cảm ơn câu trả lời của bạn, sau đó tôi đoán không có tập tin nào tôi có thể kiểm tra để tìm ra điều này mà không cần tham khảo thông tin, sẽ rất hữu ích khi có thể tìm hiểu lịch trình được sử dụng để có cái nhìn tổng quan hơn về các chi tiết của các tham số đang được sử dụng trong kernel hệ thống đang sử dụng.
vượt quá

1
Tôi không nghĩ có một điều như vậy bởi vì nó không phản ánh bất kỳ loại tùy chọn cấu hình hoặc "tham số nào đang được sử dụng", v.v. Chỉ có một trình lập lịch có thể, trình lập lịch biểu; hiện tại, nó được gọi là "trình lập lịch hoàn toàn công bằng" và đây là một vấn đề thiết kế trừu tượng, một trong nhiều đóng góp cho kernel. Nói chung, chúng được ghi lại trong nguồn, vv Vì vậy, câu hỏi là dư thừa uname -r.
goldilocks

0

Thử:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Xem tại đây: Chương 14: Điều chỉnh


Tôi không có tập tin cấu hình kernel, sau đó tôi có thể kiểm tra nó như thế. Tôi đang sử dụng một hệ thống redhat với một vòng / phút nhị phân cài đặt kernel.
vượt quá

1
Khi tìm kiếm thông qua nó, các biến duy nhất liên quan đến bộ lập lịch xử lý dường như là CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y và CONFIG_NET_SCHED = y không thực sự cho tôi biết nhiều
vượt quá

1
CONFIG_SCHED_SMT = y Bộ lập lịch siêu phân luồng đang BẬT, CONFIG_SCHED_MC = y Hỗ trợ MultiCore đang BẬT, CONFIG_NET_SCHED = y QoS / FairQueing được BẬT để kết nối mạng. Như Goldilocks ám chỉ câu trả lời của ông là chính xác.
Eyoung100

4
Tại sao không chỉ zgrep SCHEDULE /proc/config.gz?
terdon

1
Tôi nhận ra, quan điểm của tôi là bạn đang sử dụng một cách tiếp cận phức tạp không cần thiết.
terdon

0

cat /proc/config.gz | gunzip | nano -(hoặc cat /proc/config.gz | gunzip | gedit -, đối với vấn đề đó) là một giải pháp thay thế tốt hơn cho câu trả lời của Eyoung100 không yêu cầu "bắn súng" vào một tệp tạm thời.
Chỉnh sửa: Thậm chí đơn giản hơn - zcat /proc/config.gz | nano -hoặczcat /proc/config.gz | gedit -

Hoặc, như @terdon đề xuất trong các bình luận dưới câu trả lời đó, hãy sử dụng zgrep. Tôi chỉ đề xuất một chuỗi tìm kiếm khác nhau:

zgrep "CONFIG_SCHED_" /proc/config.gz

Nếu bạn thấy, ví dụ : CONFIG_SCHED_y, kernel được cấu hình để sử dụng bộ lập lịch MuQSS. Tuy nhiên , điều đó không đảm bảo rằng nó . Arch Wiki gợi ý :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
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.