Ich erstelle meine eigenen verkabelten Simulationsmodell, wo Knoten geschichtete Architektur haben.Selbstauslösung ist langsam in OMNet ++
Anwendungsschicht erzeugt periodisch Pakete planen dann selbst
scheduleAt(simTime() + 0.00000000625,AppModuleSelfTrigger);
Dieses Paket wird dann unter Verwendung von in der nächst niedrigeren Schicht Modul gepuffert. Das untere Schichtmodul überprüft dann diesen Puffer periodisch auf Pakete. Ich Erreichung dieses Ziels durch diese Schicht Modul Terminierung als auch mit
scheduleAt(simTime() + 0.00000000625,LowerLayerModuleSelfTrigger);
ähnlicher Weise alle unteren Schichten, die Puffer verwendet, ich Triggern sie ebenfalls in regelmäßigen Abständen selbst auszulösen und prüfen, ob alle gepufferten Pakete zu senden.
Dieser Ansatz funktioniert gut. Wenn ich jedoch die Verzögerung (0.00000000625) weiter reduziere, dann werden die GUI-Paketflussnähte langsam (z. B. nachdem ich ein Paketflussereignis sehe, muss ich sehr lange warten, um den nächsten Paketfluss in OMNe ++ GUI zu sehen). Aber wenn ich diesen Verzögerungswert erhöhe und stattdessen einen höheren Dezimalwert verwende, z. 0,2, dann scheint das GUI-Paket fließt Ereignisse schnell (und ich muss nicht viel warten, bis das nächste Paket in der GUI zu sehen).
Aber das Problem mit der Einstellung dieser Verzögerung zu höheren Werten wie 0,2 erhöht die Paketlatenz (gemessen als simTime() - PacketCreationTime
).
Also, ich bin im Zweifel, wenn ich den gesamten Prozess der Selbstauslösung richtig verwende oder ich muss einige signifikante Verbesserungen vornehmen.
Beeinflusst die "Animationsgeschwindigkeit" die Verzögerung beim Anzeigen des nächsten Ereignisses? Testen Sie im "Run" oder "Fast" Modus? –
Nein, Ereignisse werden wie üblich generiert. Der Fast-Modus zeigt keine Gui-Effekte an, daher teste ich das nur mit Run. Bei dieser Frage frage ich nur, ob eine solche Selbstplanung besser ist oder ob es andere Möglichkeiten gibt, dasselbe zu verwenden, ohne 'templeAt()' zu verwenden. Gibt es auch eine Möglichkeit, der Simulation die Tick-Dauer und Tick-Häufigkeit mitzuteilen? – user3243499
Self-Nachricht ist eine universelle Möglichkeit, eine Aktion in der Zukunft zu planen. Es kann verwendet werden, um verschiedene Aktionen zu modellieren. Ich denke aber, dass in Ihrem Fall 'sendDelayed()' möglicherweise genug ist, weil Sie wahrscheinlich nur später dieses Paket * senden * wollen. Meiner Kenntnis nach gibt es keine Möglichkeit, die Dauer der GUI-Ticks zu kontrollieren. Es gibt nur eine Option, um die Genauigkeit der Zeitdarstellung in der Simulation zu steuern (ganze Simulation, nicht nur GUI) - siehe Option "simtime-scale" für ini-Datei. –