Jestem autorem posta na blogu połączonego z fanem ubuntu: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/
Ten post na blogu nie przedstawia żadnego faktu, to tylko teoria . W rzeczywistości działa tak: procesor „zatrzymuje się” częściej, aby sprawdzić, czy są jakieś procesy wymagające natychmiastowej uwagi. Oznacza to, że procesy te będą wykonywane przed innymi, więc nie będziesz pomijać ramek podczas kodowania, ani nie będziesz miał dużych opóźnień między kliknięciami myszy a śmiercią wroga. Nie oznacza to, że wszystkie procesy zakończą się wcześniej: w rzeczywistości procesor traci większą część swojego czasu decydując, który proces zostanie wykonany w następnej kolejności i dokonując zmiany kontekstu. Tak więc całkowity czas wykonania jest dłuższy i dlatego nikt nie uruchamia jądra możliwego do uniknięcia na serwerze WWW lub maszynie baz danych. Ale jądro o częstotliwości 300 Hz (a nawet 1000 Hz) jest najlepsze dla serwerów gier.
Ale obecnie procesory mają wiele rdzeni, więc gdy jest niewiele procesów wymagających uwagi, można je łatwo przypisać do innego rdzenia, zamiast czekać na rdzeń, aby go przejąć.
(Stackexchange wymaga ode mnie referencji / osobistych doświadczeń: jestem elektronicznym inżynierem, żądnym krwi noobgamer obsługującym kilka serwerów gier na http://www.gamezoo.it ).
Tak więc, ogólnie rzecz biorąc, powiedziałbym: jeśli twój procesor jest potężnym czterordzeniowym trzaskiem o wysokiej częstotliwości ORAZ zwykle nie otwierasz ton stron podczas kodowania / dekodowania / grania (huh), możesz po prostu wypróbuj ogólne (lub i686 lub amd64, jeśli istnieją) jądro i uzyskaj najwyższą możliwą przepustowość (tzn. procesor może przetwarzać surowe liczby). Jeśli napotkasz problemy (powinny być naprawdę niewielkie) lub twoja maszyna jest nieco mniej wydajna niż czołówka na rynku, skorzystaj z opcji -preempt.
Jeśli korzystasz z niskiej klasy komputera, który ma tylko jeden lub dwa rdzenie, wypróbuj opcję -lowlatency. Możesz także wypróbować opcję -realtime, ale przekonasz się, że ma ona tendencję do blokowania procesów, dopóki „w czasie rzeczywistym” nie zakończą swojej pracy. Wierzę, że jądro czasu rzeczywistego nie jest „waniliowe”, ale ma zastosowaną łatkę CONFIG_PREEMPT_RT. Myślę, że jądra czasu rzeczywistego są przeznaczone tylko dla tych, którzy muszą zbudować pojedynczą aplikację na systemach wbudowanych, więc zwykli użytkownicy komputerów stacjonarnych nie powinni mieć rzeczywistych korzyści, ponieważ zwykle uruchamiają sporej liczby aplikacji w tym samym czasie.
Wreszcie, najbardziej odpowiednie opcje jądra, jeśli chcesz samodzielnie skompilować jądro, aby mieć pulpit o niskim opóźnieniu:
PREEMPT=y
i:
CONFIG_1000_HZ=y
Aby dodać oszczędność energii, możesz to sprawdzić:
CONFIG_NO_HZ=y
-realtime
jest czas rzeczywisty, to co oznacza-rt
? A co jest z-preempt
jądrem? Będę wdzięczny gemue2010, wykonał całkiem dobrą robotę, tłumacząc to, ale wciąż nie wszystko wyjaśnia.