Necessario kernel Linux da 1000 HZ se ho un timer senza tick e ad alta risoluzione?


13

Sto cercando di migliorare le prestazioni sul mio server. Ho alcuni processi che richiedono jitter basso (varianza inferiore a 10 ms).

Ho una media di carico di massimo 4 su un i7-920 (4 core fisici, 8 con HT). Esistono circa 10 processi che vanno dal 40% al 90% di una modalità utente principale. L'utilizzo del sistema è del 3% totale. L'utilizzo totale della CPU è dell'80% massimo.

L'impostazione del kernel da 100Hz a 1000Hz migliorerà il jitter se sono già impostati timer senza tick e ad alta risoluzione?

Questa pagina sembra indicare che fa ancora qualcosa. https://lkml.org/lkml/2009/4/28/401

Che ne dici di passare da volontario (PREEMPT_VOLUNTARY) a preemptible (PREEMPT)?


Dettagli / versione di distribuzione del sistema operativo?
ewwhite,

Kernel Linux 3.3 Ubuntu 11.10 64 bit server.
Bob,

Hai un sacco di carico in modalità utente; il tempo di sistema è relativamente trascurabile. Non consiglierei di danzare lì attorno ai parametri sintonizzabili del kernel. O ottenere una pianificazione in tempo reale è ciò che speri di ottenere?
anno

Quindi stai dicendo che se l'utilizzo del sistema è basso, nulla di tutto ciò fa la differenza sulla reattività?
Bob

Risposte:


4

Sto cercando di migliorare le prestazioni sul mio server. Ho alcuni processi che richiedono jitter basso (varianza inferiore a 10 ms).

Ogni tempo reale non migliorerà le prestazioni, renderebbe l'intero sistema più fluido ma un po 'più lento, in effetti. In altre parole, è throughput vs. latenza. Se è davvero quello che ti serve, quindi diverse opzioni:

  • Usa 300 Hz o anche 1KHz, PREEMPT e non usare tickless
  • Utilizzare nice, schedtoolper assegnare priorità / classi adeguate in base alle proprie esigenze
  • Prova a RT o BFS

Cosa c'è di sbagliato nell'usare tickless?
Bob

1
@Bob, è buono per risparmiare energia, ma nel caso ti interessi la latenza, si consiglia di essere spento, ad esempio ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige

3

Se il jitter basso è importante per te, sì, potresti voler usare sia 1000hz che PREEMPT.

Se questi processi sono molto sensibili al tempo, pensiamo, probabilmente avrai bisogno di patch / kernel più orientati al realtime, o almeno di alcuni parametri di programmazione a livello di processo, come rtprio.

Usi tipici sono i server audio, vedere ad esempio i consigli di jackaudio


3

1) Non usare tickless, è ancora altamente sperimentale e non è raccomandato a nessuno ma agli sviluppatori che ci lavorano, è anche pensato per aiutare a risparmiare energia.

2) Si suppone che il sistema completamente preemtible aumenti la reattività del desktor, mentre il preemptible volontario è per uso generale (mix di reattività e throughput). Se il tuo server ha SMP (più core), probabilmente dovresti optare per non preimpregnabile, poiché la maggior parte del lavoro verrà eseguita sui loro core e senza interruzioni, che in genere 1) richiedono tempo 2) cestino

3) 1000Hz è un valore desktop che introduce overhead, ma consente ad esempio di giocare e cose. 300 hz è il valore raccomandato per i video (quindi le cose possono essere riprogrammate e non perderai comunque i frame), mentre 100Hz fornisce il miglior throughput (anche se non adatto alle cose di rete a bassa latenza).

Se vuoi diventare il più stabile possibile (senza usare le patch RT), dovresti andare: tick periodici (stabilità) non preprimibili (stabilità) frequenza del timer (fino a te, 1000 per la migliore reattività e lati bassi, 100 per miglior throughput ma risoluzione di 10 ms sul timer, ad es. roba funzionerà almeno 10ms)

Spero che questo aiuti in qualche modo.

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.