03:23:43 I feel like we could have not dboot today if loader left us in the right mode and just did ELF 03:24:50 I thought UEFI allowed long mode applications already 09:27:37 jclulow that is true. 15:16:29 [illumos-gate] 15637 cstyle common/devid/devid_scsi.c -- Hans Rosenfeld 15:17:12 [illumos-gate] 15636 fix scsi inquiry page 83 warnings -- Hans Rosenfeld 15:18:02 [illumos-gate] 15638 panic in scsi_hba_ioctl() -- Hans Rosenfeld 16:44:03 [illumos-gate] 15591 idmap becomes non-functional after system memory shortage -- Gordon Ross 16:48:33 [illumos-gate] 15592 SMB should check taskq_dispatch returns -- Gordon Ross 16:51:03 [illumos-gate] 15684 ficl: remove duplicate target 'all' -- Toomas Soome 16:57:22 [illumos-gate] 14380 pam_modules: build errors with gcc 11 -- Toomas Soome 16:58:28 with 14380, my gcc 11 branch is now empty. 17:02:39 [illumos-gate] 15673 acpica: storing the address of local variable -- Toomas Soome 17:08:22 [illumos-gate] 15596 SMB should export a header for kstats -- Gordon Ross 17:11:04 [illumos-gate] 15598 Allow dtrace SET_ERROR probes in libfksmbsrv -- Gordon Ross 17:12:36 tsoome - congratulations! You reminded me that I do have the things ready for creating an illumos gcc12.. 17:16:04 er, 13.. 17:40:09 13 is the one everyone is excited about 17:40:39 Oh yes, and I think it is what most parties are agreed on as the next shadow target. I just forgot briefly 17:45:13 Thank you richlowe -- I was curious what I replace gcc7 with for the shadow. 17:47:28 in looking at 15667, one of the things that stands out is inefficiency of access to the thread-local locale pointer. has anyone looked at faster thread-local storage? (it looks like gcc can do it, using one of the segment registers on x86 as a thread-local base pointer) 17:49:33 when you say "faster thread-local storage" do you mean actual TLS? and __thread? 17:49:41 No. uselocale() uses tsdalloc. 17:49:50 So we need to see what tsd index it actually gets. 17:50:08 Yes, true thread-local storage. 17:50:18 it works we use it in a small handful of places 17:50:53 So what key index does it get? 17:51:07 I don't understand the question 17:51:21 why does it need a key-index if it's using real TLS? 17:51:55 It's not. 17:52:03 no, sommerfeld is asking if it _could_ 17:52:43 Sorry, I misunderstood. I took that to be could tsdalloc() be faster. Not a different mechanism. 17:53:09 Is uselocale() showing up in a flamegraph? 17:53:40 the only general comment I have is that TLS is complicated in ld, and it was convenient for ARM to not have to worry about it at first. 17:54:05 so it would be a _nice_ thing if the access to TLS was abstracted so anyone in a similar hole could dodge it. 17:54:12 rather than the naked global data __thread we find in libses and co 17:54:23 (but global data sucks anyway, so...) 17:54:46 haven't done a flamegraph but the preliminary profiling I did showed it getting called 10+ times per input character for the sample regexp. 17:55:19 and tweaks to avoid those calls led to a significant speedup. 18:07:55 sommerfeld: That's... a lot. 18:08:01 yes. 18:08:28 We should probably reduce the number of calls there. It definitely hasn't been looked at in anger in this way sometimes. 18:08:39 I guess I wonder if it's going to be about reducing the cost or if we can reduce the calls. 18:09:25 I took the latter approach (reduce the calls) 18:09:42 Makes a lot of sense. I've been in the locale bits there, so if a pair of eyes would help, give me a shout. 18:09:55 but that starts to get more invasive. 18:09:57 thanks! 18:13:23 there's a whole bunch of performance issues in the regex code I spotted last week. Every (ch < NC) ends up diving into that thread-local path. 18:13:36 https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libc/port/regex/regex2.h#LL153C5-L153C14 18:14:08 because NC depends on MB_CUR_MAX: https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libc/port/regex/utils.h#L40 18:15:29 yuripv: You previously were looking at tre here, weren't you? What happened at that? 18:16:25 Ah, yeah. This feels like a lot of cases where making it realize this data isn't constant and caching it would be better, even if painful. 18:16:48 (and CHIN ends up being called once per NFA state per character for other dumb reasons) 18:17:17 if TRE is a drop-in replacement that would probably be a better path. 18:17:44 Nothing is every quite "drop-in". 18:18:00 heh 18:18:13 But it should hopefully avoid 18:18:36 Well, it just depends on the interface boundaries and whether it's designed to have support for some of the things here and how much ABI glue is needed. 18:23:41 uselocale() should burn... 18:34:01 (okay, what is everyone's favorite flamegraph generator, anyway?) 18:34:46 dtrace and brendan's still, I think. 18:35:00 I've been getting some enjoyment out of valgrind's callgrind too, but it does not flamegraph. 18:35:44 valgrind --tool=callgrind ; callgrind_annotate --auto=yes callgrind.out. 18:36:22 it tells me things that the usual dtrace ticking misses, sometimes. 18:48:10 I just attached a flamegraph to https://www.illumos.org/issues/15667 18:48:11 → BUG 15667: libc regcomp/regexec show pathological behavior for "warn:|warning:" (New) | https://code.illumos.org/c/illumos-gate/+/2860 18:50:42 ~50% of the profile is in _mb_cur_max; most of that is in uselocale() 18:55:20 That's not great! 18:55:33 The locale sure isn't changing through the operation. 18:57:36 Nope. And I'm pretty sure things would break if the locale changed between regcomp and regexec. 18:57:54 so the flexibility is unnecessary.. 19:03:07 (if NC isn't constant between regcomp and regexec, the dividing line between which characters are in the bitmap and which are in the array shifts) 19:05:20 definitely intuitively reasonable 19:05:29 I would hope the standards say that, too, but... 21:12:44 "If, when regexec() is called, the locale is different from when the regular expression was compiled, the result is undefined.". https://pubs.opengroup.org/onlinepubs/009696899/functions/regcomp.html 21:17:45 so, yeah, leave room for the implementor to cache things in the compiled regexp