Sto provando a misurare il jitter nella latenza di interrupt per vari kernel Linux (con patch RT abilitata, ecc.). So che il modo migliore è quello di usare un oscilloscopio per fare questo, generando un'interruzione con il pin GPIO e attivando un altro pin GPIO nella routine del servizio di interrupt, ma mi stavo chiedendo se ci sono degli strumenti del kernel di Linux per farlo, e potrebbe essere posso fare un confronto dei numeri.Esistono strumenti del kernel disponibili per misurare la latenza degli interrupt con una precisione ragionevole?
risposta
Un metodo tipico sarebbe quello di impostare un orologio ad alta precisione (come il contatore di cicli della CPU) per attivare un'interruzione di un tempo casuale ma noto in futuro e misurare nell'ISR la differenza tra il tempo l'orologio era impostato per spegnersi rispetto al tempo in cui l'ISR veniva effettivamente raggiunto.
(La parte "casuale" di questo è garantire che si evitino sistematicamente le misurazioni durante i periodi di silenzio o di intenso --- ad esempio, non si desidera che l'interrupt del timer si avvii sistematicamente contemporaneamente a una rete card interrupt, spingendo slealmente i numeri di latenza.)
Uno strumento che implementa in qualche modo questo è Cyclictest, anche se sembra misurare il tempo all'interno di un thread del kernel anziché l'ISR stesso, che aumenterà leggermente i numeri di latenza misurati.
Sto pensando di utilizzare un generatore di segnali per generare l'interrupt su un GPIO in modo da poter ottenere il jitter nei tempi di risposta dell'interrupt generando l'interrupt più volte e misurando l'intervallo IRQ più volte. I registri di conteggio PMCR e Cycle per la corteccia ARM lo faranno per me. Ora la parte di registrazione è ciò che è necessario esaminare. – Nuetrino
@Nuetrino Il problema con il fare questo come * davidg * propone che tu sia sempre * sincronizzato * con un orologio di sistema. Una fonte esterna è migliore. Inoltre, il codice dello spazio utente può influire sulla latenza degli interrupt. Alcune istruzioni richiedono più tempo di esecuzione rispetto ad altre. Ma davvero se hai bisogno di questo tipo di latenza, probabilmente c'è qualcosa di sbagliato nell'hardware. DMA, ecc. Sarebbe meglio. Rif: [U-boot interrupts] (http://stackoverflow.com/questions/15829601/enabling-interrupts-in-u-boot-for-arm-cortex-a-9) –
Utilizzare l'utilità "cyclictest" per misurare la latenza, ho effettuato ricerche e sto utilizzando cyclictest per misurare il jitter di RT linux su piattaforma powerpc.
E 'utility semplice ma potente per misurare la latenza
Un altro modo è quello di collegare un'uscita GPIO del vostro scheda target ad un altro ingresso GPIO, tirare il segnale di uscita GPIO e gestire questo evento nella routine ISR di GPIO. Controllare la differenza di orario tra il segnale di trazione e il trigger dell'ISR dell'ingresso GPIO. Ecco l'open source per fare questo, per il bordo Lampone:
- 1. Come misurare la latenza negli ambienti a bassa latenza?
- 2. come misurare con precisione la larghezza di una stringa?
- 3. Trigger Kernel Interrupt Handler: Come?
- 4. Esistono strutture disponibili per tenere traccia delle attività degli utenti?
- 5. Strumenti per misurare la complessità computazionale empirica dei codici Java?
- 6. Esistono strumenti per monitorare la risposta HTTP?
- 7. Problema con gestione dei segnali, gestione degli interrupt
- 8. Quali strumenti sono disponibili per la documentazione dei plugin jQuery?
- 9. Misurare l'altezza del contenitore degli errori TextInputLayout
- 10. Elaborazione degli interrupt in Windows
- 11. La versione degli strumenti "12.0" non è stata riconosciuta. Le versioni degli strumenti disponibili sono "2.0", "3.5", "4.0". (MSB4132) (SteamTrade)
- 12. Esistono schemi per la gestione degli errori nei progetti PHP?
- 13. Strumenti per la descrizione degli schemi JSON
- 14. Esistono buoni geoparchieri opensource disponibili?
- 15. Esistono strumenti di DRYer con codice?
- 16. Esistono buoni strumenti per la pseudo localizzazione di iOS?
- 17. Esistono strumenti di visualizzazione del codice PHP?
- 18. Esecuzione concomitante del kernel CUDA con più kernel per flusso
- 19. Esistono strumenti o progetti per generare file AZW?
- 20. Esistono strumenti per semplificare la logica "se" complessa?
- 21. per lo sviluppo del kernel linux
- 22. Esistono strumenti di convalida del markup HTML autonomi
- 23. Precisione degli operatori booleani
- 24. Misurare con precisione l'ora dell'orologio da parete in .NET
- 25. MMIO latenza lettura/scrittura
- 26. Esistono strumenti per integrare Java e C++?
- 27. refactoring del codice vba - esistono strumenti per l'assistenza?
- 28. Esistono strumenti per eseguire analisi statiche del codice Scala?
- 29. Esistono degli strumenti per visualizzare la complessità del codice o le chiamate al metodo grafico in Objective-C?
- 30. Strumenti per misurare i costi di comunicazione MPI
See: [Come in tempo reale è Linux 2.6] (http://stackoverflow.com/questions/1362906/how-real- time-is-linux-2-6). –