Ein Thread (oder Task) verliert dynamische Priorität, indem er eine Menge CPU verwendet und Priorität erhält, indem er weniger CPU verwendet. Wie genau werden diese Prioritäten für n Threads berechnet (mit der normalen Zeitplanungsrichtlinie SCHED_OTHER)?Wie werden dynamische Prioritäten von Threads in Linux 2.6.x berechnet?
Antwort
Zitiert von this
Die Linux 2.6.8.1 Scheduler Belohnungen I/O-gebundene Aufgaben und straft CPU-gebundene Aufgaben durch Hinzufügen oder von einer Aufgabe des statischen Priorität abzieht. Die angepasste Priorität wird als dynamische Priorität einer Aufgabe bezeichnet, , und ist über die prio-Variable der Aufgabe zugänglich (z. B. p-> prio, wobei p eine Aufgabe ist). Wenn eine Task interaktiv ist (die Bezeichnung des Schedulers für E/A gebunden), wird ihre Priorität erhöht. Wenn es ein CPU-Schwein ist, wird es eine Strafe bekommen. Im Linux-2.6.8.1-Scheduler ist der Bonus mit der maximalen Priorität 5 und der Höchstprioritätsstrafe ist 5. Da der Scheduler Boni und Strafen verwendet, werden Anpassungen an die statische Priorität einer Aufgabe respektiert. Ein mildes CPU-Schwein mit einem schönen Wert von -2 könnte eine dynamische Priorität von 0 haben, genau wie eine Aufgabe, die weder eine CPU noch eine E/A Schwein ist.
Ich denke, das ist eine faire Erklärung. Die Priorität wird basierend darauf berechnet, ob es sich um einen CPU-gebundenen Thread oder um einen E/A-gebundenen Thread handelt. Und bezüglich was Sie in der Frage erwähnten, dass gain priority by using less of CPU
eher Priorität erhält, indem es interaktiv ist (I/O-Grenze). Ich hoffe, dieser Auszug beantwortet Ihre Anfrage ...
- 1. Implementieren Linux JVMs tatsächlich Thread-Prioritäten?
- 2. Wie bekomme ich die SPID in Linux 2.6 von C++
- 3. Zeitmessung im Linux Kernel 2.6
- 4. Python 2.6 Multiprocessing.Queue kompatibel mit Threads?
- 5. Lock Profiling in 2.6 Linux Kernel
- 6. Welche Art von Threads hat OS X?
- 7. Wie werden Threads während eines Linux-Absturzes beendet?
- 8. Wie werden Schnittpunkte von Zeitbereichen berechnet?
- 9. Wie erstellt man 32bit Python 2.6 auf 64bit Linux?
- 10. Wie kann das dynamische Debugging im Linux-Kernel aktiviert werden?
- 11. Wie kann die Priorität von Threads in Pthreads erhöht werden?
- 12. python 2.6.x theading/signals/atexit fehlgeschlagen bei einigen Versionen?
- 13. Downgrade von Python 2.7.6 auf Python 2.6 unter Linux
- 14. Wie Seitenränge in Echtzeit berechnet werden
- 15. Wie benutze ich CryptoAPI im Linux Kernel 2.6
- 16. Prioritäten von Pods in Google Container Cluster
- 17. Wie Behauptung zählt in Testeinheit berechnet werden
- 18. Cygwin Newbie: Wie deinstalliere ich Python 2.6.x von Cygwin und installiere Python 2.7.x?
- 19. Eclipse CDT 5.x und cmake 2.6.x
- 20. Wie installiere ich Pip für Python 2.6 unter OS X?
- 21. Java-Ergonomie: Wie werden Standardwerte berechnet?
- 22. C# Textende Prioritäten
- 23. Wie gleichzeitige Threads in Perl ausgeführt werden?
- 24. Nachrichtenverarbeitung mit Prioritäten
- 25. AdMob-Einnahmen - Wie werden sie berechnet?
- 26. Wie werden die x, y-Werte einer Zeile nach unterschiedlicher Bildschirmgröße/Auflösung in OpenGL neu berechnet?
- 27. WooCommerce 2.6 Breadcrumbs, die falsch angezeigt werden
- 28. Wie werden Permutationen mit postgresql berechnet?
- 29. .NET-Baugruppen laden Prioritäten
- 30. Java-Threads: Unter Windows & On Linux
Der Completely Fair Scheduler (CFS), alias SCHED_NORMAL oder SCHED_OTHER, ist dokumentiert [hier] (https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt) und implementiert [hier] (https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c). – indiv