Perché scegliere un kernel a bassa latenza rispetto a uno generico o in tempo reale?


105

Dopo aver installato Ubuntu Studio 12.04, ho scoperto che utilizza un kernel a bassa latenza. Ho cercato perché e come tornare a uno in tempo reale o generico. Ma sembra che questa parte di Linux non sia stata coperta così tanto.

D: Perché scegliere un kernel a bassa latenza rispetto a un kernel generico o in tempo reale?

PS: ho già letto le risposte a questa domanda e a questo post.


3
+1 perché deve essere una buona domanda se tutti sono sconcertati. ANCORA non conosco la differenza tra i kernel a bassa latenza, generici e in tempo reale. Se -realtimeè in tempo reale, allora cosa significa -rt? E che succede con il -preemptkernel? Ringrazio gemue2010, ha fatto un ottimo lavoro spiegandolo, ma non spiega ancora tutto.
Hitechcomputergeek

Risposte:


61

Queste sono alcune semplici linee guida fornite per aiutarti a capire quale kernel e in quale ordine, dovresti testare per adattarlo al tuo caso d'uso.

  • Se non hai bisogno di una bassa latenza per il tuo sistema, usa il kernel -generic.
  • Se hai bisogno di un sistema a bassa latenza (ad esempio per la registrazione dell'audio), usa il kernel -preempt come prima scelta. Ciò riduce la latenza ma non sacrifica le funzioni di risparmio energetico. È disponibile solo per sistemi a 64 bit (anche chiamato amd64).
  • Se il kernel -preempt non fornisce abbastanza bassa latenza per le tue esigenze (o hai un sistema a 32 bit) allora dovresti provare il kernel -lowlatency.
  • Se il kernel -lowlatency non è abbastanza, dovresti provare il kernel -rt
  • Se il kernel -rt non è abbastanza stabile per te, dovresti provare il kernel -realtime

Ubuntu Help Source

Quindi dipende da cosa farai con la tua distribuzione in studio. Per la maggior parte degli utenti che necessitano di tempi di risposta rapidi per gli utenti finali, il generico andrà bene, per gli altri che hanno bisogno di eseguire l'editing video professionale in cui anche un semplice calo dei frame è inaccettabile, è necessario il kernel in tempo reale.

Per un post sul blog più esaustivo e di facile comprensione, leggi questo link


1
Ho già letto l'articolo precedente che hai pubblicato. Circa il secondo, quanto sono affidabili questi fatti?
Starx,

Bene, i test menzionati qui parlano da soli. Se il team di Ubuntu ha scelto Latency in primo luogo, deve essere un motivo. Quindi volevi conoscere le differenze, ora lo sai. Problema risolto ?
fan di Ubuntu il

5
No .. Non penso che il problema sia risolto. Se la tua risposta fa qualcosa, aumenta di più la mia curiosità.
Starx,

9
Qualcosa di tutto questo è ancora vero nel 2015? I -preempt, -rt, e -realtimekernel non esistono più a lungo
naught101

51

Sono l'autore del post sul blog collegato dal fan di Ubuntu: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

Quel post sul blog non presenta alcun fatto, è solo teoria . In realtà è il modo in cui funziona: il processore si "arresta" più frequentemente per vedere se ci sono alcuni processi che richiedono attenzione immediata. Ciò significa che quei processi verranno eseguiti prima degli altri, in modo da non saltare i frame durante la codifica o avere enormi tempi di ritardo tra clic del mouse e morti dei nemici. Ciò non significa che tutti i processi finiranno prima: in realtà la CPU sta perdendo una porzione maggiore del suo tempo decidendo quale processo verrà eseguito successivamente e facendo il cambio di contesto. Quindi il tempo totale di esecuzione è più lungo ed è per questo che nessuno esegue un kernel preemptible su server web o macchine database. Ma un kernel preemptible a 300Hz (o persino 1000Hz) è il migliore per i game server.

Ma al giorno d'oggi i processori hanno molti core, quindi quando ci sono pochi processi che richiedono attenzione possono essere facilmente allocati su un core diverso piuttosto che aspettare che un core lo prenda.

(StackExchange mi richiede riferimenti / esperienza personale: sono un ingegnere elettronico, un assetato di sangue che gestisce diversi server di gioco su http://www.gamezoo.it ).

Quindi, come regola generale, direi: se il tuo processore è un potente quad-core ad alta frequenza che scricchiola il numero E di solito non apri tonnellate di pagine Web durante la codifica / decodifica / gioco (eh), potresti basta provare il kernel generico (o i686, o amd64 se esistono) e avere il più alto throughput possibile (ovvero, il crunching dei numeri non elaborato che il processore è in grado di fare). Se riscontri problemi (dovrebbero essere davvero minori) o la tua macchina è leggermente meno potente rispetto ai vertici del mercato, scegli il -preempt.

Se sei su una macchina di fascia bassa che ha solo uno o due core, prova la -latlatency. Potresti anche provare il -realtime, ma scoprirai che tende a bloccare i processi fino a quando quelli "in tempo reale" non hanno finito il loro lavoro. Credo che il kernel in tempo reale non sia quello "vaniglia", ma abbia applicato la patch CONFIG_PREEMPT_RT. Penso che i kernel in tempo reale siano solo per coloro che devono creare una singola applicazione su sistemi incorporati, quindi i soliti utenti desktop non dovrebbero avere benefici reali perché di solito eseguono un buon numero di applicazioni contemporaneamente.

Infine, le opzioni del kernel più rilevanti se si desidera ricompilare il kernel per avere un desktop a bassa latenza sono:

PREEMPT=y

e:

CONFIG_1000_HZ=y

Per aggiungere un po 'di risparmio energetico puoi controllare questo:

CONFIG_NO_HZ=y

Ho notato che hai menzionato la manutenzione dei server, sto cercando di capire il kernel migliore per il server dedicato di origine valvola (in particolare CSGO). la maggior parte dei thread CS che trovo sono correlati a goldsrc che aveva bisogno del kernel 1000Hz. Con srcds, la bassa latenza è cattiva? se non importa, mi limiterò a attenermi alla bassa latenza in quanto è quello che ho in questo momento (isola i core della CPU per i server 128 tick srcds in quanto non beneficia comunque del multi threading).
Vincent De Smet,

Utile per conoscere questi suggerimenti, cambierò totalmente in anticipo. Non ho tanta fretta perché voglio che il mio kernel si comporti come un sudicio pirata.
userDepth

4

Dal documento sopra citato ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. un sistema soft in tempo reale garantirà una latenza media ridotta ma non un tempo di risposta massimo garantito.
  2. Un sistema rigido in tempo reale rispetta sempre le scadenze desiderate (100 percento), anche con un carico di sistema nel caso peggiore.
  3. Secondo Yaghmour [4], "Il real-time si occupa delle garanzie, non della velocità pura".

L'articolo dice che il kernel in tempo reale senza responsabilità o il tempo limitato è la proprietà più importante, quindi a volte ritardano l'attività non critica che porta al ritardo, ma per la bassa latenza o altri kernel in tempo reale morbido cercano di ridurre la latenza generale che aiuta nella maggior parte dei casi. A causa della ridotta latenza, il sistema sembra essere veloce. Leggi attentamente l'articolo.


Questo è vero, ma dobbiamo sapere quale variante del kernel corrisponde a quale "durezza" del sistema in tempo reale.
Melebio

0

Ho questo vecchio laptop con doppio AMD A6-4400M a 1600MHz, che uso con parsimonia quando sono fuori ufficio, principalmente per leggere e-mail e navigare in siti Web occasionali. C'era qualcosa, forse collegato agli aggiornamenti del software, che non rispondeva. Qualcosa come scrivere una dozzina di personaggi senza vedere il primo. Spesso il widget mi chiede se devo forzare l'uscita da un processo.

Dopo il sudo apt-get install linux-lowlatencyriavvio, è diventato fluido e reattivo. (uname -r 5.0.0-20-lowlatency.) Fantastico, avrei dovuto cambiare anni fa. Vorrei sottolineare la risposta di Seven: a meno che tu non voglia spremere il massimo da un server di scricchiolii numerici, scegli il -preempt !

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.