Hello Josef,
On 07/10/2015 02:08 PM, Josef Söntgen wrote:
Since the stats are absolute it would be best to reset them to zero before collecting them a second time. In this case the rtc_drv should not be in the top range anymore because it should not be used by vbox while it is running but only once when it starts.
I collected another round of numbers that are non-cumulative for hw_x86_64 (not running on Muen). As before, the first measurement was done in the bootloader of the guest VM:
pd_label | label | spent | % of total ---------------------+--------------+----------+----------- init -> virtualbox | EMT | 98001213 | 37.45505% init -> virtualbox | virtualbox | 83688021 | 31.98470% init -> rtc_drv | rtc_ep | 36408986 | 13.91514% init -> rtc_drv | rtc_drv | 23748123 | 9.07629% init | init | 4032147 | 1.54105% init -> acpi_drv | acpi_drv | 2543088 | 0.97194% init -> platform_drv | platform_drv | 2430257 | 0.92882% init -> ps2_drv | ps2_drv_ep | 1830875 | 0.69974% init -> timer | timer_drv_ep | 1654987 | 0.63252% init -> virtualbox | VMPwrUp | 1586461 | 0.60633%
And here the second measurement once the Linux login prompt is visible:
pd_label | label | spent | % of total -------------------+-------------------+------------+----------- init -> virtualbox | EMT | 1521043562 | 98.25379% init -> timer | timer_drv_ep | 19607895 | 1.26660% init -> virtualbox | Timer | 2819414 | 0.18212% init -> timer | timeout_scheduler | 1971086 | 0.12732% init -> virtualbox | alarm-timer | 1298777 | 0.08390% init -> virtualbox | ATA-1 | 525509 | 0.03395% core | pager_activation | 522312 | 0.03374% init -> fb_drv | vesa_ep | 181979 | 0.01176% core | entrypoint | 61660 | 0.00398% init -> virtualbox | OhciFramer | 15831 | 0.00102%
So looking at these numbers the EMT thread is even more dominant and the rtc_drv is indeed gone: its spent/used figures of the second measurement are actually zero.
I do not know the implementation details of rtc_drv but I did not expect it to make the top 10.
I did not expect this either. Although it is indeed somewhat expensive (i.e. it should be avoided to read it several times a second), I cannot imagine why it takes about 10% of the total time when starting vbox. It basically reads the time from the cmos which merely involves an IPC to core to read the I/O port. It would be good to know if the number of calls of the rtc_drv differ between base-hw and base-nova.
Compared to the other work that is going on during startup I would have guessed that the rtc_drv had very little to do... Not quite sure if this could be a contributor to the timing inaccuracies that we observe on hw_x86_64_muen. There we have to specify kernel parameters notsc and lpj with a fixed value so Linux boots reliably.
Regards, Adrian