2016-03-21 2 views
0

Ich arbeite an Intel-Rangeeley-Board. Ich möchte die Gesamtzeit messen, die zum Starten des Linux-Kernels benötigt wird. Gibt es einen möglichen und bewährten Weg dies auf Intel Board zu erreichen?So messen Sie die gesamte Boottime für Linux-Kernel auf Intel Range Board

+0

Welche Distribution verwenden Sie, Ubuntu dh, mit einigen schönen Profiling-Graphen. – xvan

+0

Es gibt Bootchart (http://www.bootchart.org/), aber ich denke, das beginnt nach dem Start von init. –

+0

Danke Brian Cain, gibt es eine Möglichkeit, die volle Startzeit – anikhan

Antwort

2

Versuchen Sie mit rdtsc. Gemäß der Intel insn ref Handbuch:

der Prozessor den Zeitstempelzähler MSR jedem Taktzyklus und setzt es auf 0 monoton erhöht, wenn der Prozessor zurückgesetzt wird. Siehe "Zeitstempelzähler" in Kapitel 17 des Intel® 64 und IA-32 Entwicklerhandbuch für Architekturen, Band 3B, für spezifische Details des Zeitstempel-Zählerverhaltens ( ).

(siehe tag Wiki für Links zu Handbüchern)

Normalerweise wird die TSC wird nur für Relativmessungen zwischen zwei Zeitpunkten verwendet wird, oder als Zeitquelle. Der absolute Wert ist offensichtlich sinnvoll. Es tickt bei der CPU-Nenntaktfrequenz, unabhängig von der stromsparenden Taktfrequenz, mit der es tatsächlich läuft.

Sie müssen möglicherweise sicherstellen, dass Sie den TSC von der Boot-CPU eines Multicore-Systems lesen. Die anderen Kerne haben ihre TSCs möglicherweise erst gestartet, nachdem Linux ihnen einen Interprozessor-Interrupt gesendet hat, um sie zu starten. Linux kann ihre TSCs mit dem TSC der Boot-CPU synchronisieren, da gettimeofday() den TSC verwendet. IDK, ich schreibe Sachen auf, die ich überprüfen würde, wenn ich das selbst machen wollte.

Möglicherweise müssen Sie Vorkehrungen treffen, damit der Kernel den TSC nicht ändert, wenn Sie ihn als Zeitquelle verwenden. Wahrscheinlich über eine Boot-Option, die Linux zwingt, eine andere Zeitquelle zu verwenden.

Verwandte Themen