Skip to contentSkip to conversation

Measuring startup-time from userspace

DISCUSSION Taras Glek 3 participants 3 messages Jan 2, 2011 – Jan 3, 2011

lore
Share & tools
lore

Taras Glek

author
#0 lore raw

Hi,
Does Linux provide a reasonable way to measure how long a process has existed for? The goal is to have a function that returns the number of milliseconds since process-creation.

We'd like to be able to have Firefox self-diagnose startup times. Unfortunately, it turns out that library loading time adds a lot to startup before application code runs, so a in-application timer would underestimate startup time.

It appears that the most precise solution is to read start time from /proc/self/stat. Unfortunately the time is in jiffies-since-startup and there don't seem to be any good counters to compare against (ie /proc/uptime doesn't provide enough resolution). So far the only workable solution seems to create a new thread/process. Then one can do (/proc/<newpid>/stat.starttime - /proc/self/stat.starttime) * 1000 / HZ .

The question is, there way for a process to measure time-since-startup without horrible hacks like spawning a new processes?

Taras

ps. Perhaps /proc/timer_list contains enough info?

#1 lore raw
Quoted 3 lines · Taras Glek

The question is, there way for a process to measure time-since-startup without horrible hacks like spawning a new processes?

Would you consider an LD_PRELOAD library to fall into the "hack" category? I'm not sure when .init section is executed, but it might be substantially earlier than when _start() is called.

- Ben

#2 lore raw
In reply to Taras Glek
Quoted 5 lines · Taras Glek

Does Linux provide a reasonable way to measure how long a process has existed for? The goal is to have a function that returns the number of milliseconds since process-creation.

At a glance:
----

alex@berk:~$ stat /proc/16863/
  File: `/proc/16863/'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 3h/3d   Inode: 837808      Links: 6
Access: (0555/dr-xr-xr-x)  Uid: ( 1000/    alex)   Gid: ( 1000/    alex)
Access: 2011-01-03 05:07:47.888363341 +0000
Modify: 2011-01-03 05:07:47.888363341 +0000
Change: 2011-01-03 05:07:47.888363341 +0000
----

A nanosecond resolution timestamp for the moment when the pid is created it seems. I could be completely wrong, but this seems to be one of those "too easy to be true" moments.

Cheers

Signature · 2 lines
Alexander Clouter
.sigmonster says: Marriage is the sole cause of divorce.