Re: Wie misst man die Ausführungszeit von Programmen (war: Re: Slowfox)
Horst Felder - 29.06.17, 18:34:
> Oder meinst du vielleicht eine »gefühlte« Sekunde? :)
>
> > Ja, das meinte ich. Vielleicht sind es auch 1,5 Sekunden.
>
> Vielleicht auch 2? Dann würde meine Welt wieder stimmen... :)
Eher nicht… aber siehe unten:
> > Ich wüsste auch nicht, wie ich das zuverlässig messen könnte von
> > Auslösen des Befehls bis zum Erscheinen des Fensters.
>
> Stimmt! Das ist nicht einfach! Ich verwende eine Stoppuhr. Aber bei
> Startzeiten von 1-2 Sek. ist die menschliche Reaktionsfähigkeit ein
> bedeutender Fehlerfaktor. Ich habe da Unterschiede von bis zu
> einer 15/100 Sek....
>
> Im Netz bin ich hierauf gestoßen:
> https://unix.stackexchange.com/questions/182952/how-to-measure-firefoxs-star
> tup-time
>
> Zwei Möglichkeiten schienen interessant (alles Warmstart):
[…]
> 2. browser.slowStartup.averageTime (about:config)
>
> Ergebnis: 1530 (ms nehme ich an)
Nach einem Neustart des Systems heute, weil beim es beim Aufwachen aus dem
Standby wieder mal abgekachelt ist, braucht der Firefox-Neustart gerade
gefühlt mehr als doppelt so lang. Ich hab da gerade nur eine Idee zu:
Vielleicht war irgendwo entweder noch ein Firefox-Fenster offen oder es lief
zumindest noch ein Firefox-Prozess. Ich habe im Plasma-Desktop
unterschiedliche Aktivitäten. Ich hab an sich geschaut, dass nirgendwo ein
Firefox noch läuft… aber wer weiß, ich hatte es auch schon, dass kein Fenster
mehr zu sehen war, und doch noch ein Prozess lief. Mal sehen, vielleicht
probiere ich das morgen auch noch mal.
Auf jeden Fall habe ich hier jetzt gerade 3443.
> Kennt jemand eine bessere Art der Messung?
Ich kenne da nix. Mir reicht da auch die gefühlte Dauer… und zwar reicht es
mir, wenn die schnell genug ist. Ich benutze das Laptop ja.
Interessant ist die Ausgabe von vmstat -SM 1 während Firefox-Start – mit Swap
mal rausgenommen, damit es besser hier in die Mail passt.
martin@merkaba:~> vmstat -SM 1
procs […]--memory---------- […] ---io---- -system-- ------cpu-----
r b […]free buff cache […] bi bo in cs us sy id wa st
[… etwa ab hier …]
1 0 […] 420 2 11370 […] 0 0 2857 7996 24 5 71 0 0
1 0 […] 344 2 11360 […] 4 0 2332 5263 26 2 72 0 0
1 0 […] 241 2 11341 […] 0 3888 4313 10927 33 3 64 0 0
1 0 […] 190 2 11342 […] 0 0 3179 11196 29 3 69 0 0
2 0 […] 157 2 11350 […] 0 0 2602 8209 30 3 66 0 0
2 0 […] 160 2 11353 […] 0 640 3682 9063 25 4 70 1 0
0 0 […] 471 2 11349 […] 64 11176 5363 11866 32 5 62 2 0
(Das sind denke ich ein paar mehr Zeilen als es tatsächlich gedauert hat, bis
das Fenster zu sehen war. Menschliche Reaktionszeit und so…)
Die Ausgabe könnte auf einen Engpass der CPU hindeuten, da das Laptop vier
logische Kerne hat.
Whoa, und ja, das ist es:
martin@merkaba:~#130> pidstat | head -3; pidstat 1 | grep firefox
Linux 4.10.17-tp520-btrfstrim (merkaba) 29.06.2017 _x86_64_ (4 CPU)
21:24:06 […] PID %usr %system %guest %wait %CPU CPU Command
21:24:15 […] 13597 72,00 8,00 0,00 2,00 80,00 3 firefox
21:24:15 […] 13600 2,00 1,00 0,00 1,00 3,00 2 firefox
21:24:16 […] 13597 100,00 8,00 0,00 1,00 100,00 1 firefox
21:24:17 […] 13597 100,00 5,00 0,00 0,00 100,00 3 firefox
21:24:18 […] 13597 100,00 3,00 0,00 0,00 100,00 1 firefox
21:24:19 […] 13597 100,00 5,00 0,00 0,00 100,00 1 firefox
21:24:20 […] 13597 83,00 7,00 0,00 1,00 90,00 1 firefox
(Das sind denke ich ein paar mehr Zeilen als es tatsächlich gedauert hat, bis
das Fenster zu sehen war. Menschliche Reaktionszeit und so…)
Ich bin beindruckt: Ein Firefox-Thread (oder der Haupt-Prozess) plättet einen
Kern der Sandybridge Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, den Linux dann
vielleicht sogar noch auf 3,0 oder 3,2 GHz übertaktet (das habe ich nicht
nachgeschaut), für volle 4 Sekunden!
Das sieht mir so aus, als ließe sich die Zeit reduzieren, wenn Firefox auch
beim Start seine vielen Threads mal für was Sinnvolles nutzen würde, um
mehrere Kerne gleichzeitig zu beschäftigen. Oder die Entwickler mal
nachschauen, inwiefern wirklich so viel CPU-Leistung nötig ist, nur um einen
Webbrowser zu starten. Kann natürlich sein, dass das was Firefox da macht,
ohne größeren Aufwand nur single-threaded möglich ist.
Ich bin beeindruckt… ich hätte nicht erwartet, dass die Startzeit hier zu
einem so großen Teil CPU-gebunden ist.
Adios,
--
Martin
Reply to: