Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Sunday, 15 January 2023

00:01:00 <gog> hi
00:01:00 <heat> he
00:01:00 <mjg> as of now i have written in rust
00:02:00 <mjg> and by that i mean rust itself
00:02:00 * mjg does not really feel any different though
00:02:00 <mjg> i have code*
00:03:00 <gog> mjg: now all you need is a blåhaj
00:05:00 <heat> mjg: CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
00:06:00 <heat> bool "Enable heap memory zeroing on allocation by default"
00:06:00 <heat> this is it
00:06:00 <mjg> wow you are probably right
00:06:00 <mjg> gonna have to add some exception support
00:06:00 <mjg> if not already present
00:06:00 <heat>
00:07:00 <bslsk05> ​ slab.h - mm/slab.h - Linux source code (v6.2-rc3) - Bootlin
00:07:00 <mjg> wut
00:08:00 <mjg> do you have this on in your kernel?
00:08:00 <heat> have what?
00:09:00 <mjg> i see debian has
00:09:00 <heat> yes
00:09:00 <mjg> ok
00:10:00 <mjg> you check this out, toggale at boot
00:11:00 <mjg> toggable
00:11:00 <mjg> i just can't write today
00:12:00 <heat> toggleable
00:19:00 <mjg> yo
00:20:00 <mjg> from 2 mln stats per second... to 2.5
00:20:00 <mjg> :d
00:20:00 <mjg> i strongly suspect the fucking PAGE SIZED ZERIONG was not intended for this cache
00:20:00 * mjg is about to write a strongly-worded e-mail
00:23:00 <heat> it is
00:23:00 <heat> the page sized zeroing happens because you're allocated... page sized objects
00:24:00 <heat> s/allocated/allocating/
00:24:00 <heat> and you enabled the hardening, remember? :v
00:25:00 <heat> mjg, this you:
00:25:00 <mjg> me?
00:25:00 <mjg> it came like that
00:26:00 <heat> sure
00:26:00 <heat> if you wrote a strongly worded email you'd be the big stupid
00:27:00 <heat> "this hardening I enabled makes things slower"
00:27:00 <mjg> *i* did not enable it
00:28:00 <mjg> and i'm confident zeroing for these bufs was not intended
00:28:00 <heat> you did enable it when you installed your ubuntu kernel
00:29:00 <heat> why was it not?
00:29:00 <heat> it was intended for everything that could be zeroed
00:30:00 <mjg> dude
00:30:00 <mjg> you are worse than theo
00:30:00 <ZombieChicken> Is there an actual issue here?
00:31:00 <heat> no
00:31:00 <heat> mjg doesn't understand the concept of hardening
00:31:00 <mjg> i think it got hardened in the sense that it avoids copying out unitinit kernel memory
00:31:00 <mjg> if the consumer failed to take care of it
00:31:00 <mjg> what you don't understand is that the namei zone does not have this problem
00:32:00 <heat> why does it not?
00:32:00 <mjg> memory is copied *in* and only inspected up to that spot
00:32:00 <heat> not just copying out uninit but just plain using it too
00:33:00 * ZombieChicken thinks he enabled zeroing on freeing and allocation for some reason
00:33:00 <mjg> again, the kernel de facto performs strncpy + guarantees nul termination
00:33:00 <mjg> and remembers the size
00:33:00 <heat> mjg, sounds great until someone fucks up and overwrites your \0 and then boom
00:34:00 <heat> but this is obviously not a problem because an off by 1 bug never happens
00:35:00 <mjg> you do realize if this is indeed to be considered a problem
00:35:00 <mjg> the strncpy routine can just zero out few more bytes
00:35:00 <mjg> that is still going to be quite a bit less than 4096
00:37:00 <heat> do you want to create a whole weird dubious workaround just to get a +25% speed boost on a synthetic benchmark
00:37:00 <heat> for a config option you need to explicitly enable
00:37:00 <ZombieChicken> 2.5 -> 2 is 20% improvement
00:37:00 <mjg> i don't see anything dubious when it comes to not zeroing for *this* cache
00:38:00 <mjg> ZombieChicken: it is 2 -> 2.5
00:38:00 <ZombieChicken> eh
00:38:00 <mjg> well i'm gonna ask powers to be what they think
00:38:00 <heat> sure, you can pad your string for a few bytes
00:38:00 <mjg> (or is it powers that be?0
00:38:00 <heat> for $arbitrary
01:06:00 <geist> i do wonder if there's some tiny advantage to when copying a variable sized string or whatnot, zeroing *up to a cache line boundary* on the output
01:07:00 <geist> reason being: the cpu can optimize out a readback of the cache line if it senses a complete overwrite
01:08:00 <moon-child> azul machines had specialised instructions for this
01:09:00 <moon-child> on x86, however, I think the only non-allocating writes you get are nt stores. Not 100% sure of that, though
01:10:00 <moon-child> may be extra complexity for not-nt for tso reasons. I believe the azul instructions were weakly ordered, as they were intended for nursery allocations, which of course no one is going to snoop
01:12:00 <geist> well i'm not necessarily saying its NT, it it does't skip the cache, but if the cpu gets a write that is going to cover the entire cache line it can avoid reading in a copy of it first
01:12:00 <geist> then it can write it back when it feels like it
01:12:00 <geist> i'd be surprised if modern cpus dont already have this optimization
01:12:00 <moon-child> yes, I understand. I'm saying that ideally, non-allocating would be separate from nt, but I think you have to pick either both or neither on x86
01:13:00 <zid> It's weird to me how many things x86 leaves to the cpu to optimize rather than just letting you do
01:13:00 <geist> well im also thinking about not x86 too
01:13:00 <moon-child> zid: cldemote is maybe a thing soon
01:13:00 <zid> x86 seemingly cares about perf and isn't afraid to add instructions
01:13:00 <geist> and what i'm thinking about isn't non allocating either. it's fully allocating
01:14:00 <zid> a clear direction flag emote?
01:15:00 <moon-child> john mccalpin refers to what you're talking about as 'non-allocating'
01:15:00 <bslsk05> ​ John McCalpin's blog » Blog Archive » Notes on “non-temporal” (aka “streaming”) stores
01:15:00 <moon-child> '"Non-allocating store" says that a store that misses in a cache will not load the corresponding cache line into the cache before performing the store'
01:16:00 <geist> ah. huh. that seems incorrect terminology, but maybe thats' because i'm using to ARM terminology where 'allocating' has very specific semantics
01:16:00 <moon-child> vs '"Cache-bypassing store" says that at least some aspects of the transaction bypass the cache(s)' which seems to be what you're referring to
01:17:00 <moon-child> ah, I see; idk arm
01:17:00 <geist> but yeah that's precisely what i'm talking about. ARM goes into some amount of verbiage about how their write buffer works, etc, so it implies it can easily implement this sort of optimization
01:17:00 <geist> no i'm thinking 100% about what they describe as non-allocating
01:18:00 <geist> obviously if the cache line already exists it can overwrite it, but if there's no cache line in the heirarchy for that address it can just synthesize a new one, mark it dirty, without having to fetch the old contents first
01:18:00 <moon-child> I meant, when I said 'non-allocating', you interpreted that to mean what john mccalpin refers to as 'cache-bypassing'
01:18:00 <moon-child> anyway yeah wc can do that
01:18:00 <moon-child> (or if you have a full-cacheline write, which you get with avx512)
01:19:00 <geist> also note ARM (and AMD) have instructions to blat out a cache line of zeros, but i think those are pretty specifically NT
01:20:00 <moon-child> yeah I thought amd clzero was specifically for wiping out ecc errors or something; not for performance
01:20:00 <geist> iirc ARM also has a special type of AXI transaction that says 'this is just zeros' and then doesn't have to clock in N bytes of zeros
01:20:00 <geist> presumably x86 does too inside their private busses. seems like an easy optimizatino to make
01:20:00 <moon-child> yeah I saw a thing about that somewhere
01:20:00 <moon-child> writing zeroes can be cheaper than writing other stuff
01:21:00 <geist> anyway seems like it'd be an easy enough benchmark to write: blat out soe data to some large buffer, sometimes completely covering the cache line and sometimes leaving one word out, etc
01:21:00 <geist> hypothetically the one that blats out less data should be faster, because less data, but if it has to allocate the cache line first..
01:22:00 <moon-child> yeah
06:38:00 <epony> so, Rust having the dancing baffoonery around data and logic is the same overhead as Java
06:39:00 <epony> and runs on a VM compiler
06:39:00 <epony> therefore, it produces overhead and waste, without assuring validity and correctness of logic and data manipulation
06:39:00 <epony> and runs on microprocessors without isolation of resources
06:40:00 <epony> "faux intruments"
06:40:00 <epony> untruements
06:41:00 <epony> have to present pinchmarks to validated and verified logic and data structure programs for real security and correctness
06:42:00 <epony> and compare that with native performance punchmarks of having done that ahead of compilation and retaining only the correct minimal reduction of the runtime
06:42:00 <Mutabah> ... huh?
06:43:00 <epony> btw risc is slow and contended for data as throughput to memory and as general programming is inferior
06:43:00 <epony> yep
06:45:00 <epony> it's for logic serialisation, not for general purpose machine implementations, for internal functional blocks of micro-processors as serialised pipelines
06:45:00 <Mutabah> I'm not sure I can read any sense into your comments (e.g. I've never heard the terms "punchmark" and "pinchmark")
06:45:00 <epony> so, get educated
06:46:00 <epony> then you'll be able to enjoy the humour too ;-)
06:50:00 <epony> oh, and one more thing: both data centres and general purpose performance computers run on CISC which has nothing to do with your sexual self-mutilation
06:52:00 <Mutabah> Ok... that's just uncalled for
07:09:00 <epony> that's what you get when you play smart "can't parse / makes no sense", contention and aggravation for nothing in particular, just don't make that a habit of yours.. it's not good for the public culture and mood / tone
07:09:00 <epony> classic mistakes
07:09:00 <epony> it's called for and you called it ;-)
07:11:00 <epony> people do what they want and say what they need / have intended to, you can just "reduce your visibility" to that, does not mean the saying does nto exist elsewhere and in a more direct way
07:11:00 <epony> anyway, it's not important.. focus on what matters
07:12:00 <epony> try to address the technical points you have time for that, if not.. enjoy something else like a better way to say more meaningful things
07:13:00 <epony> like Rust being hypey and fakey
07:14:00 <geist> oh for cryin out loud what are you blabbing about?
07:14:00 <geist> it's just a continuous stream of vaguely sensical stuff
07:14:00 <epony> faux safety
07:14:00 <kazinsal> just ban them dude
07:14:00 <epony> yeah, ideal
07:15:00 <epony> that way I won't be seing idiocracy ;-) and poke analogies
07:15:00 <geist> i guess, i'd rather they just start trying to make sense. or at least if they're just blabbing and no one is responding, take the hint
07:37:00 <epony> typically, it's the people who say "don't understand" who don't get the idea ;-)
07:41:00 <zid> geist's a big proponant of people working mental illness out of their system
07:41:00 <zid> like it's a cold or something
08:08:00 <Ermine> yeah, why try to make sense and make things clear when you can just say 'you all are just a bunch of dumbasses'
08:33:00 <Mutabah> kazinsal: Ah, didn't noticed them re-join
08:36:00 <epony> "them", like it's 5 people..
08:37:00 <epony> "our multiple personalities are not very interesting" --we
08:47:00 <epony>
08:47:00 <bslsk05> ​'The Who - My Generation' by The Best Of - Home Of Classic Music (00:03:28)
12:47:00 <zid> ergh knackered
12:49:00 <zid> pushing vans in the cold is work
12:54:00 <gog> i'm slightly hungover
12:58:00 <gog> zid: why were you pushing vans
12:59:00 <zid> It wouldn't start, we spent ages, got it starting
12:59:00 <zid> went to drive me home
12:59:00 <zid> died a hundred meters away
12:59:00 <gog> ooof
13:02:00 <zid> We've diagnsosed it down to: it's being really fucky
13:03:00 <zid> It wasn't starting at all, wiggling the glow plug harness would get the glow plug relay to click and then it'd start, and die again after 2 seconds
13:03:00 <zid> so it's basically just haunted
13:04:00 <gog> maybe the glow plug isn't staying on long enough so the head is just too cold
13:04:00 <gog> unless it's otto cycle and you meant spark plug :P
13:08:00 <kaichiuchi> zid: come to america
13:09:00 <kaichiuchi> there is a mechanic every 10 steps
13:09:00 <zid> glow plug stuff is all ecu managed
13:09:00 <zid> and it's now refusing to do much of anything
13:09:00 <zid> it *could* have been that the glow plugs were just BARELY hanging in there and the wigglign moved some crud off a wire and gave it an extra .1V
13:10:00 <zid> but that seems unlikely, just as likely that the fuel pump is unhappy or the crank sensor or something idk, it *really* needs the engine codes read out
13:11:00 <kaichiuchi> i have a blue driver that hooks into the OBD port just for that reason
13:13:00 <kaichiuchi> but I don't need it anymore
13:13:00 <kaichiuchi> if I break down I call a number that will pick the car up and take me home
13:36:00 <ddevault> victory
13:37:00 <zid> <zid> ddevault: what was your fucky wucky bug in the end?
13:37:00 <ddevault> which fucky wucky bug
13:37:00 <zid> That kept rebooting the systm or whatever it was, a few days ago
13:37:00 <Ermine> fuck yeah!
13:37:00 <ddevault> O_o
13:37:00 <zid> the undebuggerable ness
13:38:00 <ddevault> probably cache problem
13:38:00 <zid> ah cache is a poo
13:38:00 <zid> tlb or d/i cache?
13:38:00 <ddevault> the latter
13:39:00 <ddevault>
13:39:00 <bslsk05> ​ ~sircmpwn/helios: vulcan/cmd/init/main+aarch64.ha - sourcehut git
13:39:00 <ddevault> plus
13:39:00 <ddevault>
13:39:00 <bslsk05> ​ ~sircmpwn/helios: vulcan/cmd/init/mbox.ha - sourcehut git
13:41:00 <ddevault> the entire reason for porting to aarch64 over the past several weeks was to write these hundred-odd lines of code rather than write an intel HD graphics driver
13:48:00 <zid> I'd rather write an intel hd graphics driver ngl
13:49:00 <ddevault> gl with those docs
13:50:00 <ddevault> anyway I'm working with a deadline here
13:50:00 <zid> ye
13:50:00 <zid> 82810 driver seems mroe reasonable
13:50:00 <zid> Someone should sell an 82810 on a pci-e card
15:21:00 <kaichiuchi> it is cold
15:22:00 <pog> hi
15:23:00 <kaichiuchi> pog: may i gog you
15:23:00 <pog> yes
15:23:00 * kaichiuchi gogs pog
15:23:00 * pog pogs
16:04:00 <Ermine> hi pog
16:04:00 <pog> hi Ermine
16:13:00 <ddevault>
16:13:00 <ddevault> ta~
16:15:00 <Ermine> Cool. now replace it with dvd logo :D
16:15:00 <ddevault> hehe
16:16:00 <pog> bnuuy
16:18:00 <Ermine> pog: it's hare
16:32:00 <GeDaMo> Hare, there, everywhare :P
16:33:00 <Ermine> thare
16:33:00 <ddevault> now I have to write a qoi decoder so I'm /at least/ not just dumping a bunch of raw images into the initramfs
16:33:00 <Ermine> qoi?
16:33:00 <ddevault> quite ok image format
16:33:00 <ddevault> I have a mostly done PNG decoder but it's got a bug pending an improvement to our inflate implementation
16:36:00 <ddevault> given that I never idle I wonder if I'm going to overheat the rpi if I run it for the full length of a talk
16:36:00 <ddevault> should see how long it can run for
16:37:00 <ddevault> I probably have time to do vsync though
16:37:00 <ddevault> not sure if wfi will reduce power consumption enough to matter
16:37:00 <Ermine> Are you planning to run on powerbank?
16:38:00 <ddevault> I'd prefer not to, but I don't know what to expect
16:38:00 <ddevault> ordered by preference: (1) wall socket (2) laptop (3) power bank
16:39:00 <ddevault> fan seems to reduce the temperature to less alarming levels
16:40:00 <Ermine> dumb question, would setting cpu/gpu/whatnot clock to lowest level possible help?
16:40:00 <ddevault> maybe
16:40:00 <ddevault> but I am not made out of optimizations
16:41:00 <ddevault> this video is running at full speed, no delay in the loop
16:41:00 <ddevault> though in practice I'm going to be showing a slide deck, so might not matter
16:41:00 <ddevault> can clock up when the user requests the next slide or something if it comes to that
16:41:00 <ddevault> if I really do have a lot of extra time I'll also port doom for a fun extra demo
16:42:00 <ddevault> two weeks left
17:54:00 <immibis_> why do you have to write your own decoder instead of porting libpng?
20:02:00 * geist yawns
20:02:00 <geist> good afternoon folks
20:17:00 <kaichiuchi> hi
21:08:00 * sortie writes a manual page for his dhclient(8)
21:11:00 <sortie> ← The mad ravings of someone who once heard dhclient and dhclient.conf was a thing and cooked up something using those names, like I did with ifconfig
21:11:00 <bslsk05> ​ dhclient(8)