Một luồng (hoặc tác vụ) sẽ mất ưu tiên động bằng cách sử dụng rất nhiều CPU và được ưu tiên bằng cách sử dụng ít CPU hơn. Làm thế nào chính xác là những ưu tiên tính cho n đề (sử dụng chính sách lập lịch bình thường SCHED_OTHER)?Ưu tiên động của các chuỗi được tính toán trong Linux 2.6.x như thế nào?
Trả lời
Trích dẫn từ this
Linux 2.6.8.1 scheduler thưởng tôi nhiệm vụ/O-bound và trừng phạt nhiệm vụ CPU-bound bằng cách thêm hoặc trừ từ ưu tiên tĩnh một nhiệm vụ. Mức độ ưu tiên được điều chỉnh được gọi là ưu tiên động của công việc, và có thể truy cập được thông qua biến số prio của công việc (ví dụ: p-> prio, nơi p là một tác vụ). Nếu tác vụ tương tác (thuật ngữ của người lập lịch cho I/O bị ràng buộc), mức độ ưu tiên của nó được tăng lên. Nếu nó là một con heo CPU, nó sẽ nhận được một hình phạt . Trong bộ lập lịch 2.6.8.1 của Linux, tiền thưởng ưu tiên tối đa là 5 và hình phạt ưu tiên tối đa là 5. Vì bộ lập lịch sử dụng tiền thưởng và tiền phạt , điều chỉnh ưu tiên tĩnh của công việc là được tôn trọng. Một hog CPU nhẹ với giá trị tốt đẹp là -2 có thể có mức ưu tiên động là của 0, giống như một tác vụ không phải là CPU hay I/O .
Tôi cảm thấy đây là giải thích hợp lý. Mức độ ưu tiên được tính dựa trên việc đó là một chuỗi bị ràng buộc CPU hoặc một I/O bị ràng buộc. Và về những gì bạn đã đề cập trong câu hỏi, rằng gain priority by using less of CPU
là ưu tiên được ưu tiên bằng cách tương tác (I/O bị ràng buộc). Tôi hy vọng đoạn trích này sẽ trả lời câu hỏi của bạn ...
- 1. Tính ưu tiên của toán tử Javascript
- 2. Các toán tử Boolean được ưu tiên
- 3. Chỉ định ưu tiên động và ưu tiên cho một toán tử trong Menhir/Ocamlyacc
- 4. Toán tử logic nào ưu tiên
- 5. các ưu tiên bên phải của biểu thức toán học
- 6. TF-IDF được tính toán như thế nào bởi TfidfVectorizer
- 7. Cài đặt mức độ ưu tiên (ưu tiên) không có hiệu lực trên Linux
- 8. Hàng đợi ưu tiên Java được yêu cầu hoạt động như thế nào?
- 9. Hàng đợi ưu tiên với các ưu tiên mục động
- 10. Hiểu được ưu tiên của nhiệm vụ và toán tử logic trong Ruby
- 11. Toán tử lambda Calculus ưu tiên
- 12. Các toán tử C++ hoạt động như thế nào
- 13. Làm thế nào để tăng ưu tiên luồng trong pthreads?
- 14. Thuật toán xoay vòng ưu tiên dựa trên hệ điều hành: được ưu tiên này chưa?
- 15. Làm thế nào để cập nhật các yếu tố ưu tiên trong một đống cho thuật toán của Prim?
- 16. Ocaml quyết định ưu tiên cho các toán tử do người dùng xác định như thế nào?
- 17. I/O ưu tiên thấp trong OS X
- 18. Thuật toán để đối sánh các đối tác được ưu tiên thành các nhóm ba số
- 19. Ống hoạt động như thế nào trong Linux?
- 20. Toán tử mới hoạt động như thế nào trong JavaScript?
- 21. Lowe tính toán “độ lặp lại” của thuật toán SIFT của mình như thế nào?
- 22. Cách toán học của AppBarLayout.ScrollingViewBehavior hoạt động như thế nào?
- 23. Thuật toán kiểm tra tính hợp lệ của Sudoku - mã này hoạt động như thế nào?
- 24. Các thanh ghi fs/gs được sử dụng trong Linux AMD64 như thế nào?
- 25. KnockoutJS - Các quan sát được tính toán với các câu lệnh điều kiện hoạt động như thế nào
- 26. Toán tử nhóm của JavaScript hoạt động như thế nào?
- 27. Tại sao có mức độ ưu tiên cho các toán tử như static_cast?
- 28. Tại sao kích thước trang của Linux (x86) 4 KB, được tính như thế nào?
- 29. Các toán tử tăng cường hoạt động như thế nào?
- 30. Toán tử thay thế Perl hoạt động như thế nào?
Trình lập lịch biểu hoàn toàn hợp lý (CFS), còn được gọi là SCHED_NORMAL hoặc SCHED_OTHER, được ghi lại [ở đây] (https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt) và được triển khai [ở đây] (https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c). – indiv