Jaka jest różnica między programem planującym FreeBSD a programem Linux Scheduler?Różnica między harmonogramem FreeBSD a Linux Scheduler
Odpowiedz
Dostępnych jest kilka programów planujących. Ta odpowiedź zakłada domyślne harmonogramy: CFS (Linux) i ULE (FreeBSD).
CFS jest skrótem od Zupełnie uczciwy Scheduler. Najbardziej znaczącą różnicą jest to, że CFS nie opiera się na kolejkach uruchomień dla wyboru procesu. Zamiast tego używa drzewa czerwono-czarnego o złożoności O (log N), która jest indeksowana przez zużyty czas procesora.
Innym godnym uwagi szczegółem jest to, że CFS wykorzystuje nanosekundy do rozliczania czasu. Od Kernel Trap:
CFS stosuje rachunkowość ziarnistość nanosekund i nie opiera się na żadnej jiffies lub innych szczegółach Hz. Zatem program planujący CFS nie ma pojęcia "przedziałów czasu" i nie ma żadnej heurystyki. Jest tylko jeden centralny przestrajanie:
/proc/sys/kernel/sched_granularity_ns
które mogą być wykorzystane, aby dostroić harmonogram z „pulpitu” (Low latencji) do obciążeń związanych z serwerem „” (dobrze dozowania). Domyślnie jest to ustawienie odpowiednie dla obciążeń pulpitu. SCHED_BATCH jest również obsługiwany przez moduł planisty CFS CFS.
ULE jest następcą tradycyjnego programu planującego BSD. Oferuje znacznie lepszą wydajność zarówno w systemach SMP, jak i systemach jednoprocesorowych. Jest on zgodny z bardziej tradycyjnym projektem z kolejkami uruchomień i podziałami czasowymi. Stara się być uczciwym, ale może być poinstruowany, aby faworyzować procesy interaktywne.
Oto link do niektórych ustaleń autora ULE podczas studiowania źródła CFS. Omawiają także złożoność (która była mocno dyskutowana) algorytmów w programie planującym CFS w komentarzach.
Oba harmonogramy są odpowiednie do użytku stacjonarnego. Z zestawem kern.sched.interact
, ULE faworyzuje procesy interaktywne. Bez tego CFS i ULE powinny być równie sprawiedliwe.
ULE ląduje na około 3000 linii kodu, podczas gdy CFS zbliża się do podwójnej wartości.
- 1. Jaka jest różnica między więzieniem chro Linux a więzieniem FreeBSD?
- 2. Jaka jest różnica między harmonogramem sched_batch a sched_other?
- 3. Różnica między LIST_HEAD_INIT a INIT_LIST_HEAD
- 4. Różnica między wsadem, harmonogramem i zadaniem sieci Azure oraz kiedy używać tego, co
- 5. Różnica między obiektem a *?
- 6. Różnica między jquery a $
- 7. różnica między __u8 a uint8_t
- 8. Różnica między bip pid a $$
- 9. Jaka jest różnica między spin_lock a raw_spin_lock()?
- 10. Jak poznać fragment czasowy programu linux scheduler?
- 11. Różnica między String [] a i String ... a
- 12. Różnica między kodowaniem a sortowaniem?
- 13. Różnica między onbeforeunload a onunload
- 14. Różnica między OpenCV a OpenCL
- 15. Różnica między wysokością a tłumaczeniemZ
- 16. Różnica między ApplicationInfo a PackageInfo?
- 17. Różnica między CMAKE_PROJECT_NAME a PROJECT_NAME?
- 18. Różnica między autoconf a autoreconf
- 19. Różnica między transakcją a transakcjąScope
- 20. Różnica między File.Copy a File.Move
- 21. Różnica między _declspec a __declspec?
- 22. Różnica między repozytorium a usługą?
- 23. Różnica między CCNode a CCLayer?
- 24. różnica między * y ++ a ++ * y?
- 25. Różnica między IPFS a Filecoin?
- 26. Różnica między systemem a shell_exec
- 27. Różnica między Redis a kafka
- 28. Różnica między dodawaniem a dodawaniem
- 29. Różnica między DisplayFor a ValueFor
- 30. Różnica między @EntityScan a @ComponentScan
To jest nietypowe dla StackOverflow. Prawdopodobnie bardziej odpowiednie byłoby opublikowanie tego pytania w [Unix i Linux] (http://unix.stackexchange.com). – Graham