Giá trị độc đáo của (-) có nghĩa là gì?


19

Theo trang người đàn ông, và wikipedia; nicetrong khoảng từ -20 đến 20.

Tuy nhiên, khi tôi chạy lệnh sau, tôi thấy một số quy trình có giá trị không bằng số, chẳng hạn như (-). Xem cột thứ sáu từ bên trái với tiêu đề 'NI'.

Một tính độc đáo của (-) chỉ ra điều gì?

 ps axl 
 F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0  19356  1548 poll_s Ss   ?          0:00 /sbin/init
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2 -100  -      0     0 migrat S    ?          0:03 [migration/0]
1     0     4     2  20   0      0     0 ksofti S    ?          0:51 [ksoftirqd/0]
1     0     5     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/0]
5     0     6     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/0]
1     0     7     2 -100  -      0     0 migrat S    ?          0:08 [migration/1]
1     0     8     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/1]
1     0     9     2  20   0      0     0 ksofti S    ?          1:03 [ksoftirqd/1]
5     0    10     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/1]
1     0    11     2 -100  -      0     0 migrat S    ?          0:05 [migration/2]

Tôi đã kiểm tra 3 máy chủ đang chạy: Ubuntu 12.04 và CentOs 6.5 và Mac OsX 10.9. Chỉ các máy Ubuntu và CentO có giá trị độ đẹp không chữ số.


FYI: Tất cả các quá trình có tên nằm trong [brackets]thực tế kthreadlà s (kernel kernel).
Jonathon Reinhart

Câu trả lời:


18

Một tính độc đáo của (-) chỉ ra điều gì?

Lưu ý những người cũng có điểm PRI là -100; điều này cho thấy quá trình này được lên kế hoạch như một quá trình thời gian thực . Các quy trình thời gian thực không sử dụng điểm số đẹp và luôn có mức độ ưu tiên cao hơn so với bình thường, nhưng vẫn khác biệt so với nhau.

Bạn có thể xem chi tiết cho mỗi quá trình bằng chrtlệnh (ví dụ chrt -p 3). Một trong số 100 người của bạn có thể sẽ báo cáo "mức ưu tiên lập lịch hiện tại" là 99 - không giống như niceở đây, các giá trị cao là mức ưu tiên cao hơn, có lẽ là nơi hàng đầu tạo ra -100số. Các quy trình không theo thời gian thực sẽ luôn hiển thị "mức ưu tiên lập lịch hiện tại" là 0 chrtbất kể giá trị đẹp và trong "chính sách lập lịch hiện tại" của linux SCHED_OTHER.

Chỉ các máy Ubuntu và CentO có giá trị độ đẹp không chữ số.

Một số phiên bản topdường như báo cáo các quy trình thời gian thực với rttheo PRI và sau đó 0theo NI .


Câu trả lời tuyệt vời. Tôi biết nó có liên quan -100nhưng không thể hiểu được :)
Ramesh

6

Câu trả lời của @ Goldlilock hướng tôi thực hiện nghiên cứu theo đúng hướng. Đây là chi tiết nghiên cứu của tôi.

Thuật toán lập lịch có sẵn cho các quy trình

Linux hỗ trợ 3 chính sách lập lịch. SCHED_FIFO, SCHED_RR, Và SCHED_OTHER. SCHED_OTHERlà chính sách lập lịch chia sẻ thời gian chung mặc định được sử dụng bởi hầu hết các quy trình; SCHED_FIFOSCHED_RRđược dành cho các ứng dụng quan trọng về thời gian, cần kiểm soát chính xác cách thức mà các quy trình có thể chạy được chọn để thực thi.

Ưu tiên có sẵn

Để chọn một quy trình để chạy, bộ lập lịch Linux phải xem xét mức độ ưu tiên của từng quy trình. Trên thực tế, có hai loại ưu tiên.

Một ưu tiên tĩnh giá trị được gán cho mỗi quá trình và lập kế hoạch phụ thuộc vào ưu tiên tĩnh này. Các quy trình được lên lịch với SCHED_OTHERmức ưu tiên tĩnh 0; các quy trình được lên lịch theo SCHED_FIFOhoặc SCHED_RRcó thể có mức độ ưu tiên tĩnh trong phạm vi 1tới 99(99 là mức cao nhất).

Các sys_sched_get_priority_max( )lợi nhuận thường xuyên ưu tiên tĩnh của quá trình này, nó sẽ trả về 0cho các quá trình phi thời gian thực.

Ưu tiên động được sử dụng cho các ứng dụng phi thời gian thực.

Tất cả các quy trình thời gian thực đều có mức độ ưu tiên cao hơn các quy trình thông thường. Linux thực hiện các ưu tiên theo thời gian thực theo POSIX. Biểu đồ dưới đây có thể cung cấp một cái nhìn tổng quan về cách các quy trình được lên lịch với các ưu tiên của chúng.

HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19

Bây giờ, chúng ta có thể đưa ra lệnh dưới đây để kiểm tra mức độ ưu tiên theo thời gian thực của một quy trình. Ở đây tôi đang sử dụng watchdog vì nó có một giá trị tốt được liệt kê là -.

ps -e -o class,rtprio,pri,nice,cmd | grep watchdog

Đây là đầu ra của lệnh trên. Như chúng ta có thể thấy mức ưu tiên theo thời gian thực là 99, mức ưu tiên cao nhất có thể.

FF      99 139   - [watchdog/0]
FF      99 139   - [watchdog/1]
TS       -  21   0 grep watchdog

Vì vậy, theo sự hiểu biết của tôi, ưu tiên thời gian thực có thể lấy giá trị tối đa là 99 và do đó không thể có bất kỳ giá trị tốt đẹp nào trên nó. Đó là lý do, chúng tôi nhận được đầu ra tốt đẹp - cho cơ quan giám sát và các quy trình hệ thống khác.

Tài liệu tham khảo

http://oreilly.com/catalog/linuxkernel/ch CHƯƠNG / ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux- Process-p Warriority-sort /

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.