public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: "Michael J. Baars" <mjbaars1977.libc.alpha@gmail.com>,
	Richard Earnshaw via Libc-alpha <libc-alpha@sourceware.org>
Subject: Re: clock(3) in error
Date: Mon, 19 Jul 2021 09:04:46 -0300	[thread overview]
Message-ID: <75af16ae-3d56-5dcd-3202-5d838fa90bf5@linaro.org> (raw)
In-Reply-To: <66756e9f66b79aba6c34bd880b7a73cc4f6b38e6.camel@gmail.com>



On 19/07/2021 08:34, Michael J. Baars via Libc-alpha wrote:
> Hi,
> 
> I've been using the clock() function for years now. Until recently I thought the timing mechanism worked perfectly, then I tried to let the actual time run next
> to it. As it appears, the clock() function isn't working as perfectly as I thought.
> 
> As a consequence, my internet connection from T-Mobile, which I don't have anymore, so I can't show you the actual speed with the clock() corrected, wasn't
> running at 100mbit/s but a lot slower. The same holds for all other T-Mobile customers in Holland. I hope that someone is willing to have a look at the glibc
> clock() function and repair it. A lot of people would benefit from that.
> 
> Attached: the benchmark of the 100mbit internet connection, the corrected clock() function and an application that shows the malfunction.

I didn't fully understand how the clock_gettime() implementation would be 
related to your internet speed, neither from which architecture, kernel
version, and glibc version you obtained your numbers. 

In any case the clock_gettime() implementation has been changed recently 
to support 64-bit time_t on legacy architectures.  Another issue on previous
release was to move the vDSO pointer setup to loader, so there is no need
to demangle it before running (they are set on a read-only page and it
might increases the latency a bit).

Currently for ABI with default 64-bit time_t there is no change (x86_64 for
instance).  On legacy ABI with 32-bit time_t support, it would first try
to use the vDSO (first the 64-bit one, then the 32-bit) and then the 64-bit
syscall, and if it is not available the 32-bit time_t one.

So the potential issues you might find are either if you are running on
an architecture without any vDSO support on a pre v5.1 kernel (without
64-bit support) or if you are running on a pre v5.1 kernel with vDSO
support on y2038 or later. For former, glibc will issue an additional
64-bit syscall that will return ENOSYS; for later it would first run
the vDSO to fallback to the 64-bit syscall and later on the 32-bit time_t
syscall.

  reply	other threads:[~2021-07-19 12:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-19 11:34 Michael J. Baars
2021-07-19 12:04 ` Adhemerval Zanella [this message]
2021-07-20 11:37   ` Michael J. Baars
2021-07-20 19:45     ` Adhemerval Zanella
2021-07-21  8:38       ` Michael J. Baars
2021-07-21 20:03         ` Adhemerval Zanella
2021-07-20 11:47   ` Michael J. Baars
2021-07-20 16:22     ` Luis Javier Merino
2021-07-21  8:50       ` Michael J. Baars
  -- strict thread matches above, loose matches on Subject: below --
2021-07-19 10:38 Michael J. Baars

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=75af16ae-3d56-5dcd-3202-5d838fa90bf5@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    --cc=mjbaars1977.libc.alpha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).