Re: Experimenting with transactional memory for SERIALIZABLE - Mailing list pgsql-hackers
From | Thomas Munro |
---|---|
Subject | Re: Experimenting with transactional memory for SERIALIZABLE |
Date | |
Msg-id | CA+hUKGKzCXnSctSZ8ez8urRvdocoRV8Kan2CYqD+CdoGJr6cow@mail.gmail.com Whole thread Raw |
In response to | Re: Experimenting with transactional memory for SERIALIZABLE (Dmitry Dolgov <9erthalion6@gmail.com>) |
List | pgsql-hackers |
On Thu, Feb 20, 2020 at 11:38 PM Dmitry Dolgov <9erthalion6@gmail.com> wrote: > Can you share some numbers about how not well it perform and how many > hardware transactions were aborted with a fallback? I'm curious because > from this paper [1] I've got an impression that the bigger (in terms of > memory) and longer transaction is, the higher changes for it to get > aborted. So I wonder if it needs to be taken into account, or using it > for SSI as presented in the patch somehow implicitely minimize those > chances? Otherwise not only conflicting transactions will cause > fallback, but also those that e.g. span too much memory. Good questions, and I don't have good enough numbers to share right now; to be clear, the stage this work is at is: "wow, I think this new alien technology might actually be producing the right answers at least some of the time, now maybe we could start to think about analysing its behaviour some more", and I wanted to share early and see if anyone else was interested in the topic too :-) Thanks for that paper, added to my reading list. The HTM transactions' size is not linked to the size of database transactions, which would certainly be too large. It's just used for lower level operations that need to be atomic and serializable, replacing a bunch of LWLocks. I see from skimming the final paragraph of that paper that they're also not mapping database transactions directly to HTM. So, the amount of memory you touch depends on the current size of various lists in SSI's internal book keeping, and I haven't done the work to figure out at which point space runs out (_XABORT_CAPACITY) in any test workloads etc, or to consider whether some operations that I covered with one HTM transaction could be safely broken up into multiple transactions to minimise transaction size, though I am aware of at least one opportunity like that. > Another interesting for me question is how much is it affected by TAA > vulnerability [2], and what are the prospects of this approach in the > view of many suggests to disable TSX due to that (there are mitigations > ofcourse, but if I understand correctly e.g. for Linux it's similar to > MDS, where a mitigation is done via flushing cpu buffers on entering the > kernel space, but in between speculative access still could be > performed). Yeah, the rollout of TSX has been a wild ride since the beginning. I didn't want to comment on that aspect because I just don't know enough about it and at this point it's frankly pretty confusing. As far as I know from limited reading, as of late last year a few well known OSes are offering easy ways to disable TSX due to Zombieload v2 if you would like to, but not doing so by default. I tested with the Debian intel-microcode package version 3.20191115.2~deb10u1 installed which I understand to the be latest and greatest, and made no relevant modifications, and the instructions were available. I haven't read anywhere that TSX itself is ending. Other ISAs have comparable technology[1][2], and the concept has been worked on for over 20 years, so... I just don't know. [1] https://developer.arm.com/docs/101028/0008/transactional-memory-extension-tme-intrinsics [2] https://www.ibm.com/developerworks/aix/library/au-aix-ibm-xl-compiler-built-in-functions/index.html
pgsql-hackers by date: