As more followup...

I would suggest running a timer per thread.  I assume every thread
would contain some type of
event-trigger loop, and I would make your timer calls in that loop,
caching for the remainder of
that iteration.  I'm not quite sure how well this would work, but you
can most certainly get away
with a fair bit of drift, especially if high-precision timers are not
required for log output.

-Aaron

On Mon, Jun 15, 2009 at 11:32 AM, Aaron Wiebe<[email protected]> wrote:
> I went over your post...
>
> You shouldn't be seeing a 4ms response time on a gettimeofday() call -
> this is my test:
>
> gettimeofday({1245079355, 445434}, NULL) = 0 <0.000004>
> gettimeofday({1245079355, 445503}, NULL) = 0 <0.000004>
> gettimeofday({1245079355, 445560}, NULL) = 0 <0.000003>
> gettimeofday({1245079355, 445629}, NULL) = 0 <0.000004>
>
> That's 3-4 microseconds.
>
> For the sake of argument, I checked time() as well, which is obsoleted
> by gettimeofday()...
>
> ime(NULL)                              = 1245079501 <0.000008>
> time(NULL)                              = 1245079501 <0.000007>
> time(NULL)                              = 1245079501 <0.000004>
> time(NULL)                              = 1245079501 <0.000008>
> time(NULL)                              = 1245079501 <0.000004>
>
> About half the speed, but still in the microsecond range.
>
> gettimeofday() is one of the fastest syscalls you can issue.
> Obviously you don't want to beat on it, but I wouldn't worry about
> calling it a few dozen times per second.
>
> -Aaron
>
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com

Reply via email to