unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Carlos O'Donell via Libc-alpha <libc-alpha@sourceware.org>
To: liqingqing <liqingqing3@huawei.com>,
	"libc-alpha@sourceware.org" <libc-alpha@sourceware.org>,
	triegel@redhat.com
Cc: Hushiyuan <hushiyuan@huawei.com>, Liusirui <liusirui@huawei.com>,
	wangshuo47@huawei.com
Subject: Re: pthread_cond performence Discussion
Date: Wed, 18 Mar 2020 08:12:43 -0400	[thread overview]
Message-ID: <e426d6ab-c631-9076-0646-d100fd0bf5a4@redhat.com> (raw)
In-Reply-To: <dd8a9fb4-0bf9-2f42-09ef-ba0761ffe7b5@huawei.com>

On 3/16/20 3:30 AM, liqingqing wrote:
> The new condvar implementation that provides stronger ordering
> guarantees. For the waiters's ordering without expand the size of the
> struct of pthread_cond_t, It uses a little bits to maintain the state
> machine which has two different start group G1 and G2. This algorithm
> is very cleverly. But when I test MySQL performance and found that
> this new condvar implementation will affect the performance when
> there are many cores in one machine. the scenario is that in my arm
> server, test 200 terminals to read and write the database in 4P
> processor environment(totally 256 cores), and I found that It can get
> better performance when I use the old algorithm. 

Are you able to look at any hardware performance counters to see if
there are increased cache line miss rates?

> I think maybe there has too many cache false sharing when in my
> environment. Does anyone has the same problem? And is there room for
> optimization about the new algorithm?

I have not seen anyone report a performance problem on large machines.

Unfortunately from an ABI perspective we cannot increase the size of
the structure, nor change the required alignment.

We may be able to play with the order of the layout of elements
within the condvar. That's something you could experiment with and
report back to the list with your findings.

For example:
- Make changes the layout by moving elements around to attempt to
  avoid cache-line sharing.
- Recompile glibc.
- Install into your system.
  - PTHREAD_COND_INITIALIZER should be all-zero bytes so you should
    not need to recompile applications.
- Retest performance.

-- 
Cheers,
Carlos.


  reply	other threads:[~2020-03-18 12:12 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-16  7:30 pthread_cond performence Discussion liqingqing
2020-03-18 12:12 ` Carlos O'Donell via Libc-alpha [this message]
2020-03-18 12:53   ` Torvald Riegel via Libc-alpha
2020-03-18 14:42     ` Carlos O'Donell via Libc-alpha
2020-05-23  4:04 ` liqingqing
2020-05-23  4:10   ` [PATCH]x86: update REP_STOSB_THRESHOLD's default value from 2k to 1M liqingqing
2020-05-23  4:37     ` [PATCH] x86: Add thresholds for "rep movsb/stosb" to tunables H.J. Lu via Libc-alpha
2020-05-28 11:56       ` H.J. Lu via Libc-alpha
2020-05-28 13:47         ` liqingqing
2020-05-29 13:13       ` Carlos O'Donell via Libc-alpha
2020-05-29 13:21         ` H.J. Lu via Libc-alpha
2020-05-29 16:18           ` Carlos O'Donell via Libc-alpha
2020-06-01 19:32             ` H.J. Lu via Libc-alpha
2020-06-01 19:38               ` Carlos O'Donell via Libc-alpha
2020-06-01 20:15                 ` H.J. Lu via Libc-alpha
2020-06-01 20:19                   ` H.J. Lu via Libc-alpha
2020-06-01 20:48                     ` Florian Weimer
2020-06-01 20:56                       ` Carlos O'Donell via Libc-alpha
2020-06-01 21:13                         ` H.J. Lu via Libc-alpha
2020-06-01 22:43                           ` H.J. Lu via Libc-alpha
2020-06-02  2:08                             ` Carlos O'Donell via Libc-alpha
2020-06-04 21:00                               ` [PATCH] libc.so: Add --list-tunables H.J. Lu via Libc-alpha
2020-06-05 22:45                                 ` V2 " H.J. Lu via Libc-alpha
2020-06-06 21:51                                   ` V3 [PATCH] libc.so: Add --list-tunables support to __libc_main H.J. Lu via Libc-alpha
2020-07-02 18:00                                     ` Carlos O'Donell via Libc-alpha
2020-07-02 19:08                                       ` [PATCH] Update tunable min/max values H.J. Lu via Libc-alpha
2020-07-03 16:14                                         ` Carlos O'Donell via Libc-alpha
2020-07-03 16:54                                           ` [PATCH] x86: Add thresholds for "rep movsb/stosb" to tunables H.J. Lu via Libc-alpha
2020-07-03 17:43                                             ` Carlos O'Donell via Libc-alpha
2020-07-03 17:53                                               ` H.J. Lu via Libc-alpha
2020-12-21  4:38     ` [PATCH]x86: update REP_STOSB_THRESHOLD's default value from 2k to 1M Siddhesh Poyarekar
2020-12-22  1:02       ` Qingqing Li

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

  List information: https://www.gnu.org/software/libc/involved.html

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

  git send-email \
    --in-reply-to=e426d6ab-c631-9076-0646-d100fd0bf5a4@redhat.com \
    --to=libc-alpha@sourceware.org \
    --cc=carlos@redhat.com \
    --cc=hushiyuan@huawei.com \
    --cc=liqingqing3@huawei.com \
    --cc=liusirui@huawei.com \
    --cc=triegel@redhat.com \
    --cc=wangshuo47@huawei.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).