Hallo zusammen,
ich bin auf ein recht komisches Ergebnis gestoßen, bei einer Zeitmessung
mit clock_gettime().
Der Code dazu:
1 | clock_gettime(CLOCK_REALTIME, &time_start);
|
2 | hw.dispatch();
|
3 | clock_gettime(CLOCK_REALTIME, &time_end);
|
Die dispatch() Funktion in der Mitte fordert von einem FPGA Daten an und
wartet auch bis diese mittels UDP übertragen wurden.
Dabei erhalte ich folgende Ergebnisse als vergangene Zeit:
1. Mit Wireshark im Hintergrund: 17,53 Sekunden
2. Ohne Wireshark: 0,033 Sekunden (das Ergebnis schwankt stark ist aber
immer im Millisekunden-Bereich)
Und das ist für die Versendung von 400MByte Daten im Gigabit Ethernet
viel zu kurz. Außerdem dauert die Ausführung des Programmes in etwa
gleich lang.
Wie kommt es zu diesem starken Unterschied ? Ist es möglich das die
clock_gettime() Funktion von dem Betriebssystem so stark gestört wird,
oder wird eventuell die dispatch() Funktion unterbrochen ?
Die Daten werden in beiden Fällen gesendet, dass kann man am FPGA-Board
erkennen (LED blinkt mehrere Sekunden lang).
Grüße
Christian