Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· 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


http://bespin.org/~qz/search/?view=1&c=osdev2&y=24&m=7&d=19

Friday, 19 July 2024

00:26:00 <heat> wow stat is spammed a whole lot in a ./configure
00:26:00 <heat> maybe that mjg guy knows what he's on about
00:28:00 <heat> lots of stat, access and, strangely, readlink?
00:34:00 <gog> linkma
00:34:00 <heat> linkmaballz
00:34:00 <gog> sksksksksks
00:43:00 <Mutabah> heat: configure scripts tend to do a lot of "does this file exist", so that makes some sense
00:43:00 <Mutabah> and I guess there's also checks of "is this a symlink somewhere, and if so where" - probably to get the real filename (version) of shared libraries?
00:44:00 <heat> yeah and gcc/ld do their fair share of spamming
00:44:00 <heat> readlink was most surprising though, don't really get why
00:45:00 <Mutabah> gcc might use it for `#pragma once`
00:45:00 <nikolar> For a start, a bunch of dynamic libraries are symlinks to the actual file
00:45:00 <nikolar> For whatever reason
00:45:00 <heat> in any case i have a couple thousand of refup/refdown trace events to go through :)
00:45:00 <Mutabah> and maybe `realpath` uses it
00:49:00 <heat> hmm yes, realpath might
00:49:00 <vin> heat: I saw your message now. Had soo many meetings today.. I didn't understand how /proc/pid/clear_refs is used. I know this clears the access bit of all the pages in PTE and basically measure RSS from smaps/pagemaps before and after clearing the bits and see if there is a difference?
00:50:00 <heat> yes
00:50:00 <vin> But linux does not proactively swap out memory if there is no memory pressure afaik
00:50:00 <heat> but you don't need to swap
00:50:00 <heat> basically if you clear_refs, wait 10s, then inspect pagemap you can know what pages were used in those 10s
00:51:00 <vin> I mean [kswapd] only [kstaled] (google's kernel) swaps out pages every 120 seconds based on PTE scans
00:51:00 <heat> or smaps for pure numbers
00:51:00 <vin> ahah
00:51:00 <heat> fwiw I think DAMON can also do proactive reclaim, but i've never messed with it
00:51:00 <heat> and you can also do proactive reclaim with a simple write to a magic cgroup file
00:52:00 <heat> memory.reclaim I think?
00:52:00 <vin> interestng, it does not get swapped out but this is a relaible way to track page activity in last N seconds. So a read or /proc/pid/pagemap does a pagetable scan?
00:53:00 <heat> yes
00:57:00 <kof673> well autoconf is trying to be ...ad hoc/dynamic/on-the-fly figure things out. if you know the target, then other than options user might set "why are you always configuring? just make!" -- spaceballs quote repurposed by klange
00:59:00 <kof673> autoconf can cache stuff, but not sure i've seen anyone ever use that feature
01:02:00 <vin> I was trying to reclaim memory for a particular process (workload of 5 GB but only ~1 GiB is active). So I put it in a cgroup with limit_in_bytes set to 1 GiB (surprised that this is not a hard limit). set my vm.swapiness to 100 and created a simple program to induce memory pressure (mmap populate a large file). I see kswapd kicking in and filling my swap area (of 6GiB) but process of interest still
01:02:00 <vin> has the same RSS (of 5 GIB)
01:09:00 <vin> Wouldn't "Referenced" always be equal to "RSS" in /proc/pid/smaps because proc/pid/clear_refs will never be called on its own. So All resident pages will be accessed atleast once since the start of the application
01:11:00 <heat> the A bit/referenced is cleared on its own as reclaim is done
01:14:00 <vin> Correct, so on reclaim the page also is not resident in memory, thus leaving us with RSS == Referenced?
01:15:00 <heat> no.
01:15:00 <vin> O.o
01:15:00 <heat> reclaim is a complex process that involves scanning pages and seeing if they're fit for reclaim
01:16:00 <heat> e.g if a page is seen with pte.A = 1, the page is promoted in the LRU and *not* reclaimed on
01:17:00 <vin> When it is *not* reclaimed the pte.A remains 1 right?
01:17:00 <heat> if a page is seen with PG_referenced but PTE.A = 0, it's cleared and given another trip on the LRU *but not reclaimed*
01:17:00 <heat> no.
01:17:00 <heat> A bits are cleared
01:17:00 <vin> Ahah on every PTE scan the A bits are cleared?? Then all of this makes sense
01:18:00 <heat> yes
01:19:00 <heat> https://lpc.events/event/11/contributions/896/attachments/793/1493/slides-r2.pdf there's a nice diagram there that cleanly shows how linux scans and promotes pages up/down the LRU
01:19:00 <bslsk05> ​lpc.events <no title>
01:19:00 <heat> note: MGLRU is a little different, doesn't work *quite* like this, but the A bit clearing is ofc done
01:22:00 <vin> So is reading /proc/pid/pagemap considered PTE scanning? Thereby clearing all the A bits? Is reading /proc/pid/smaps also considered PTE scanning?
01:23:00 <heat> no
01:24:00 <heat> not sure if there's an efficient way to do PTE scanning from userspace, but clear_refs + pagemap /works/
01:25:00 <vin> I thoguht so. But I still can't understand why rss will be different from referenced. I will read the above slides more carefully
01:25:00 <heat> not every mapped page is referenced
01:26:00 <vin> mapped pages that are not touched aren't accounted in RSS anyway
01:42:00 <heat> omg i think it just became painfully clear how im leaking dentries
01:43:00 <heat> i forgot to delete negative entries on a rmdir...
02:06:00 <geist> what an idiot
02:06:00 * geist shakes head and looks away in disgust
02:06:00 <geist> does remind me i need to rewrite my vfs around dentries, linux style
02:07:00 <geist> that just turns out to be too darn good of a solution
02:12:00 <heat> if you can help it, dont walk UNIX paths
02:12:00 <heat> srsly terrible
02:13:00 <geist> and yeah the ability to quickly walk and stat a file is i think if anything that’s unix’s strength is that
02:13:00 <heat> i'm glad autoconf scripts test for really weird shit like "is // = /" because that found me a boog
02:13:00 <geist> and lots of times is the biggest ‘why is windows so slow’ sort of complaint
02:13:00 <geist> running unix style workloads (shitton of file stats) on a system that’s not tuned for it
02:14:00 <geist> since windows takes the exact opposite approach: hand the FS a path and tell it to do what it needs to
02:14:00 <geist> and at the moment my very simple ‘get r dun’ FS layer in LK does too
02:14:00 <guideX> does it make sense for a program to be split up into pieces sitting on the file system already for you, or is it better for it to be in a singular file
02:14:00 <guideX> like some kind of archive containing all the code, images, and front end descriptions
02:15:00 <geist> i think different systems take different approaches, but the current approach most use is to have some sort of directory structure with that broken out
02:15:00 <geist> makes sense, let the FS do what it already is good at
02:16:00 <geist> and if you want, you can do what macos x does and treat those directory structures as a single entity in the shell (finder) so that it appears hidden
02:16:00 <heat> 1) are you supposed to easily edit those pieces? 2) are these files (as in file types) or stuff? 3) can/should you share them with other programs?
02:16:00 <guideX> yeah true, also macos has a sort of thing where you click a, I think a stuff it file? (maybe they changed that), and it like unzips into macos
02:17:00 <guideX> heat, these files are only for the application, there is no sharing it with other programs
02:17:00 <geist> i know some of the earlier windows 3.1/95 era stuff was all about stuffing resources inside the .exe itself, so you had all these resource editors and whatnot to set icons and whatnot
02:17:00 <geist> samewith macos classic, it had the whole resource fork, which you can think of as an extended attribute
02:17:00 <geist> but in general i think that’s worth more trouble than its’ worth
02:17:00 <heat> ALTERNATE STREAMS!
02:17:00 <geist> the upside though is it’s impossible for them to get out of sync
02:17:00 <guideX> heat, these are the script file (code), an xml file (front end), graphics, and sounds so far
02:18:00 <guideX> and whatever else I will want for them in the future
02:18:00 <kof673> nextstep had similar to mac...i have no idea how much they differ, just another instance
02:18:00 <geist> flip side is it’s generally standard for large games to build their own archive file format and stuff in thousands or millions of pieces of data in giant files
02:18:00 <kof673> and theoretically with triple or quad "fat"...could stick on nfs and point multiple machines at it
02:18:00 <geist> and then have a way to update them over time with patches. makes sense considering a large game may otherwise have millions of files
02:18:00 <heat> yeah but games usually have good raisins
02:18:00 <geist> and that just gets ridiculous
02:19:00 <guideX> I really like how mac does it, I think I will do that, it makes a lot of sense
02:19:00 <guideX> you just see an icon in the right places, like magic
02:19:00 <geist> kof673: i’m guessing it came from that,m since macos x is basically just nextstep
02:19:00 <kof673> yeah, i just wasn't meaning to slight os x "simpsons did it!"
02:20:00 <geist> nah just mean that’s probably where the lineage is from
02:20:00 <geist> and macos classic had the resource fork
02:20:00 <heat> oh resource forks really are kinda like xattrs
02:20:00 <geist> now adays i think the overhead of having a ton of separate files is fairly negligable to trying to pack it all into a single file
02:20:00 <heat> i was assuming it was something like NTFS alternate streams
02:21:00 <heat> which is a fun idea but has no defined structure
02:21:00 <guideX> if I pack it into a zip or something, I have to break it out into individual files again (it's slower)
02:21:00 <geist> heat: exactly. well, i think it was more like an alternate stream, notsure you could have more than one
02:21:00 <geist> though macos modern also leans on xattrs a lot
02:21:00 <geist> some of that is the beOS inheritance since a few beos folks went over there and made major directional input since macos 10.0
02:22:00 <geist> guideX: yeah that tends to net fairly bad ability to cache, since the data that sits in ram doesn’t match up to a file
02:22:00 <geist> so it doesn’t really let the OS cache the data properly
02:22:00 <geist> there are things like that on linux with snaps and whatnot, and they get around the problem by loopback mounting an archive
02:23:00 <heat> linux containers are absolutely insane and do crazy mounts to get around crazy problems
02:23:00 <geist> so then the kernel is doing the caching, and some user space process is probably unpacking (via fuse, etc)
02:23:00 <geist> but macos also has that with .dmg files, but they’re usually RO and used for installation
02:23:00 <geist> but functionally they’re just a RO loopback mounted fs
02:24:00 <geist> their utility comes in the shell integration so they appear like magic
02:24:00 <heat> kind of related but the windows explorer zip decompressor is absolutely terrible
02:24:00 <geist> right, imagine that but actually nicely functional
02:24:00 <heat> the dave guy really shit the bed there
02:24:00 <geist> ahaha
02:25:00 <geist> he really should have picked less things in windows to write
02:25:00 <geist> and just stuck with what works
02:25:00 * geist shakes head
02:27:00 <kof673> circa 95/98/me days there was "arj folder" IIRC think it was free...and similar programs....which gave "zip files as folders" in explorer
02:27:00 <kof673> it was always a wonder what the purpose of the bundled thing was
02:28:00 <kof673> "magic folders" another one IIRC
02:29:00 <kof673> i'm not certain, but i guess "openstep enterprise" even did the app/folder thing on windows, for the < 10 or so apps it shipped with :D
02:30:00 <kof673> i would be surprised if not anyways...and the solaris hosted version too...
02:30:00 <kof673> and gnustep perhaps too
02:34:00 <kof673> winzip was shareware so maybe that is an ok reason to include *something*
03:28:00 <heat> yep, that was it, fuckin negative dentries
03:31:00 <heat> i feel like it's all a little racey but i'll deal with it Eventually
03:31:00 <heat> maybe with lockrefs
08:36:00 <kof673> ucpp code: #define ARITH_TYPENAME zoinx
08:39:00 <Ermine> did windows failures end?
08:39:00 <zid> no, windows is still a failure
09:59:00 <sortie> There seems to be a problem with the latest version of counterstrike. Sortix is unaffected due to the lack of a steam port.
10:02:00 <zid> see, this is why you should never update anything
10:02:00 <zid> Updates come in three types, instantly bricks the device, makes it use more ram/disk/cpu but does nothing useful, or removes a feature you used
10:02:00 <Ermine> That's not the case for Onyx
10:05:00 <Ermine> sortie: no games on Sortix?
10:09:00 <sortie> Ermine: Sortix has always been a gaming platform first :)
10:09:00 <sortie> Sortix was for a long time known as kernel pong
10:53:00 <osdev199> Hi, in keyboard driver initialization code, call to `outportb` function in line no. 12 is causing a bug. Either the `printk` in line #17 hangs while printing the `y` char or I just get the first printk msg (line #1).
10:53:00 <osdev199> https://pastebin.com/5Qg3tUi7
10:53:00 <bslsk05> ​pastebin.com: printk("@starting kbd init ...\n"); /* Send the "disable scanning" comma - Pastebin.com
10:56:00 <zid> That's a shame.
11:44:00 <osdev199> I found the bug. I was sending commands to the wrong port. It should be the data port (0x60) instead of command port (0x64). The commands were intended for the PS/2 device.
13:04:00 <heat> haha crowdstrike fucked it
13:04:00 <heat> classic antivirus
13:32:00 <zid> amg, amd releasing a cpu without 32kb of l1
13:32:00 <zid> it's 48kB, first cpu in a billion years to not use 32kB
13:36:00 <Matt|home> heyo~
13:42:00 <nikolar> zid lel
13:42:00 <nikolar> Matt|home: oi
13:48:00 <kof673> you are correct, sir <takes swig off-camera> </1970 jokes>
13:57:00 <Matt|home> yesterday, i smoked half of a full gram cartridge of .3% by weight. and im pretty sure i wrote about a hundred lines of code or so. i just need to figure out what i actually wrote.. but i can tell it's good code :D
13:57:00 <Matt|home> i mean obv luls i wrote it, duh
14:06:00 <Matt|home> although im running into a bit of a weird issue
14:06:00 <Matt|home> hm
14:06:00 <Matt|home> in general, i know it's acceptable for a program that needs to keep track of data after it's closed to write it to file. i get that, i understand
14:07:00 <Matt|home> but is there some kind of long-term memory RAM access that's provided for circumstances like this, where your program can ask for it to be reserved soley for it's use even after termination or not really
14:09:00 <Matt|home> e.g. i open up firefox, it stores my login info at memory address 0xwhatevs, i close firefox, the memory is still there and no other program can access it til firefox lets it go
14:09:00 <Matt|home> bad practice?
14:12:00 <nikolar> That's called a file :P
14:12:00 <nikolar> Jk
14:13:00 <Matt|home> i know
14:14:00 <kof673> memcached in webland maybe
14:14:00 <kof673> nvram in firmware maybe
14:14:00 <kof673> all ram is arguably non-volatile...so long as there is power...
14:14:00 <Matt|home> mkay. so file is pretty much the defacto standard for keeping track of stuff after termination
14:15:00 <kof673> didn't open office/firefox/etc. used to load partially at boot, so it would startup faster :D
14:32:00 <Matt|home> i can't shake this nasty feeling that im doing something incredibly wrong.. but whatevs
14:32:00 <Matt|home> if it works it works
15:33:00 <zid> nikolar: files are what you use for shaping metal, silly
15:33:00 <nikolar> Ah of course
15:33:00 <nikolar> How could I forget
15:34:00 <nikolar> zid is your computer working
15:34:00 <nikolar> Apparently windows installs died worldwide
15:34:00 <zid> it's a 3rd party SECURITY SOLUTION
15:34:00 <zid> their kernel driver fucked up
15:35:00 <nikolar> Lel
15:35:00 <nikolar> Linux master race
15:46:00 <zid> nikolapdp I'm going to need you to spritz me with water then waft me with a large palm frond
16:15:00 <nikolar> Well too bad, I'm in Greece now
16:16:00 <zid> too bad, you're in greece
16:16:00 <nikolar> Got to waft yourself
16:25:00 <nikolar> KERNAL
16:38:00 <heat> nikolar, KERNAL
16:39:00 <heat> no pdp in greece?
16:39:00 <nikolar> Are we kernaling today
16:39:00 <heat> probably
16:39:00 <heat> at least a lil
16:47:00 <nikolar> no pdp :(
16:55:00 <zid> nikolar why are you in greece, did you decide to upgrade your balkan microstate
16:56:00 <nikolar> No, vacation
16:56:00 <zid> makes sense to go somewhere nicer than when you live, as a holiday
16:56:00 <nikolar> Well Greece has a sea
16:56:00 <zid> same
16:57:00 <nikolar> Same what
16:57:00 <zid> has a sea
16:57:00 <zid> also have all their marbles
16:57:00 <zid> so greece is pretty much superfluous
16:57:00 <nikolar> Well it's closer than UK ain't it
16:57:00 <zid> so is croatia
16:57:00 <nikolar> Screw Croatia
16:57:00 <nikolar> All my homies hate Croatia
16:58:00 <heat> average serbian
16:59:00 <zid> all my homies hate poor people, my homies suck
17:00:00 <zid> internet friends are better
17:00:00 <nikolar> Unironically, Croatians hate us way more than we hate them
17:00:00 <nikolar> zid indeed
17:00:00 <nikolar> We're mostly indifferent, plenty of Serbs go to Croatia
17:00:00 <nikolar> And end up regretting it lol
17:02:00 <zid> one should always regret going outside
17:02:00 <zid> whether that be to go to croatia, or to go to the local shop
17:02:00 <nikolar> Typical programmer ^
17:32:00 <Ermine> south slavs hate each other
17:33:00 <heat> s/south//
17:37:00 <nikolar> You have a misplaced whitespace heat
17:41:00 <zid> ミーティを殺してくれ
17:43:00 <nikolar> Wat
19:22:00 <heat> i keep seeing the helenos guy on linkedin saying microkernels are the best shit ever
19:22:00 <heat> it's great bait but i'm not biting
19:22:00 <heat> this time cuz of crowdstrike
19:22:00 <heat> i'm sorry but i have better things to do than getting into flamewars on linkedin
19:22:00 <nikolapdp> i mean a shitty driver can bring down a microkernel too presumably
19:23:00 <heat> yeah i mean if the storage driver or fs driver are toast, you're also toast
19:23:00 <heat> right
19:24:00 <mjg> i thouhg the entire premise is that you don't get toast
19:24:00 <heat> yeah but without a filesystem what are you going to do?
19:25:00 <heat> *maybe* wget of a solution on a tmpfs? like *maybe*
19:25:00 <mjg> restart the fs part
19:25:00 <heat> this is a deterministic crash at boot time
19:25:00 <mjg> lol
19:25:00 <mjg> aight
19:25:00 <mjg> if it straight up does not work even planckkernel would not do
19:27:00 <nikolapdp> mjg, the assumption of microkernels is that the drivers work reliably enough that they can be restarted
19:27:00 <nikolapdp> which doesn't help here
19:27:00 <mjg> i did not know this outright does not work
19:28:00 <mjg> as stated above
19:28:00 <Ermine> MICROKERNALS
19:29:00 <mjg> MECROKERNELS
19:29:00 <nikolapdp> isn't nt a sort of a microkernel
19:29:00 <nikolapdp> or a hybrid rather
19:30:00 <Ermine> Tbh I have the same though about this shitstorm, microkernels
19:30:00 <heat> not really
19:30:00 <nikolapdp> not really what
19:30:00 <heat> not really a microkernel, hybrid is a marketing term too
19:31:00 <heat> also, fwiw: i seriously doubt an antivirus would take any place in the driver stack not in ring0
19:31:00 <Ermine> I don't remember microsoft highlighting the fact that windows has hybrid kernel architecture
19:32:00 <Ermine> maybe at the beginning of nt storyline when nt was for enterprises and there are people that can understand nerd speak
19:34:00 <heat> mjg, it's srsly a LOL crash, they pushed bad virus definition db data, so it does (what looks like) a NULL deref and blows up
19:34:00 <heat> it's hilarious, they never fucking tested this
19:34:00 <nikolapdp> lel
19:34:00 <Ermine> releng level: setuptools
19:34:00 <heat> this isn't a kernel difference thing, this isn't a hardware problem, it's a "we didn't even boot this" problem
19:35:00 <nikolapdp> exactly, microkernel wouldn't have haD
19:35:00 <nikolapdp> helped
19:35:00 <Ermine> you have a point
19:35:00 <zid> microkernel = your system acts like windows 95
19:35:00 <nikolapdp> lol how
19:35:00 <Ermine> phunny
19:36:00 <zid> it bsods every hour and the computer is slow :P
19:36:00 <Ermine> minix doesn't have bsods
19:36:00 <nikolapdp> slow, maybe, bsods definitely not
19:36:00 <zid> fake hybrid kernel then
19:36:00 <zid> sorry
19:37:00 <Ermine> even in linux it's new thingie
19:37:00 <nikolapdp> that's better zid
19:37:00 <zid> it's better that minix is a fake hybrid kernel?
19:37:00 <Ermine> wha
19:38:00 <nikolapdp> no, minix is a microkernel
19:38:00 <nikolapdp> windows nt is a fake hybrid
19:38:00 <Ermine> okay, bailing out
19:38:00 <zid> no it's a pencil sharpener, you can tell because of the way that it is
19:38:00 <Ermine> let's talk onyx
19:38:00 <heat> sorry i don't drive a hybrid
19:38:00 <nikolapdp> when was the last time you sharpened a pencil
19:38:00 <zid> If it was a microkernel, people would have unrealistic amounts of adoration for it
19:38:00 <zid> and bring it up constantly despite being useless
19:38:00 <heat> ONYXEN
19:39:00 <zid> wait nvm maybe it is a microkernel
19:39:00 <nikolapdp> zid that sounds like onyx
19:39:00 <heat> i can get through a ./configure && make now
19:39:00 <heat> i'm very happy
19:39:00 <nikolapdp> what are you configuring
19:39:00 <heat> with *no* fs corruption
19:39:00 <zid> no, onyx is shit and everybody hates it, because it's encrypted
19:39:00 <heat> just gnu hello for the test
19:39:00 <nikolapdp> how's it encrypted
19:39:00 <zid> have you ever used it
19:39:00 <nikolapdp> no
19:39:00 <Ermine> I remarked today in one chat that reliability of linux leaves a lot to be desired
19:39:00 <zid> use it and you'll find out what I mean
19:39:00 <Ermine> and I've got "LOL ur hw is bad"
19:40:00 <nikolapdp> Ermine what hardware reliability
19:40:00 <zid> linux is more stable than my hw is for sure
19:40:00 <Ermine> nikolapdp: huh?
19:40:00 <nikolapdp> zid that's because your hardware is shit :P
19:40:00 <zid> this is the LEAST haunted pc I've ever owned
19:40:00 <nikolapdp> Ermine, let me rephrase that, what reliablity issues do you have
19:41:00 <zid> you can take a heavy step while in the room with it and it doesn't triplefault
19:41:00 <heat> they have a point, linux tends to be pretty darn reliable, even when it crashes it doesn't take down the machine
19:41:00 <nikolapdp> zid you didn't say it isn't haunted, just that it's the least haunted
19:41:00 <zid> 100x more reliable than any of my other PCs
19:41:00 <heat> now, GPU drivers on the other hand.... yeah
19:41:00 <nikolapdp> lel
19:42:00 <Ermine> recently my wi-fi got broken by faulty firmware or kernel
19:42:00 <heat> but e.g if the crowdstrike thing happened on linux it'd OOPS, SIGKILL modprobe and keep going
19:42:00 <nikolapdp> to be fair, my work laptop running ubuntu just freezes without writing anything to syslog or dmesg
19:42:00 <zid> good news, windows eats its own wifi fucking constantly
19:42:00 <nikolapdp> can confirm
19:42:00 <Ermine> heat: and then it happened that panic on oops was on :D
19:42:00 <nikolapdp> wifi on windows was no less shite while i used it
19:42:00 <zid> if it isn't the wifi, it's the sound
19:43:00 <heat> lol
19:43:00 <zid> every time there's a windows 11 update, half of the hangout discord I am on have to set their audio back up
19:43:00 <nikolapdp> sound hard apparently
19:43:00 <Ermine> So I conceded that linux wifi is shite
19:43:00 <zid> linux wifi worked for me the one time I used it
19:43:00 <nikolapdp> Ermine maybe wifi is just shite in general
19:43:00 <zid> wpa_supplicant or whatever it was
19:43:00 <zid> wifi card driver support used to be gash though
19:43:00 <nikolapdp> yeah, i am on an intel chip now, and literally no issues
19:44:00 <heat> wifi is hard, gpus are hard
19:44:00 <Ermine> nikolapdp: all hw is shite in general, but that's how nature and physics work
19:44:00 <heat> drivers in general are hard cuz they have way less eyes and way less people working on them
19:44:00 <heat> and they're also wayyyyyyyyyyyy larger than the core kernel
19:44:00 <Ermine> And I think I've took the bait to show that linux wifi is shite
19:45:00 <nikolapdp> well some hardware is way more shit than other, let's be real
19:45:00 <Ermine> amdgpu 3 million loc let's go
19:45:00 <heat> BROADCOM^W
19:45:00 <nikolapdp> Ermine the correct answer would've been, all wifi is shite
19:45:00 <nikolapdp> on my old laptop (with a broadcom chip) wifi sucked both on linux and widnows and i had to use a silly dongle
19:46:00 <nikolapdp> (the dongle had a realtek chip i think)
19:46:00 <Ermine> were broadcom drivers ever mainlined
19:46:00 <nikolapdp> honestly, no clue
19:46:00 <heat> some are
19:46:00 <zid> all hw is shit, all wifi is shite, but some wifi is less shite than others
19:46:00 <nikolapdp> yes
19:46:00 <zid> broadcom is horrendous for support
19:47:00 <zid> *ridiculously* bad
19:47:00 <nikolapdp> there are probably tables of supported wifi chips online somwhere
19:47:00 <heat> tfw you pick hardware around your shitty operating system
19:47:00 <Ermine> heat: ^
19:47:00 <zid> like, there's a single driver, hidden in the back of a filing cabinet on a chinese only web forum, that only works on a single point release of windows 8
19:47:00 <nikolapdp> zid, i didn't check the chip i got with this laptop and i got very lucky that it literally just worked (tm)
19:47:00 <zid> broadcom manifesto ^
19:48:00 <Ermine> heat: moreover, you can't just buy that hardware in ordinary store
19:48:00 <Ermine> I had to order my wifi dongle from china
19:48:00 <Ermine> and I've whined about that one too
19:48:00 <nikolapdp> that's at least easy
19:48:00 <nikolapdp> though it takes time
19:48:00 <heat> get a mobo with wifi!
19:48:00 <nikolapdp> or even better, ethernet
19:48:00 <heat> all of them have ethernet
19:48:00 <heat> i hope
19:49:00 <nikolapdp> (what i meant is, use ethernet)
19:49:00 <Ermine> ethernet is not always a possibility
19:50:00 <nikolapdp> well if you are on a desktop, you should try and get a cable to it
19:50:00 <nikolapdp> it's way less headache
19:50:00 <Ermine> That would require overhauling the flat
19:51:00 <Ermine> Mom won't tolerate cables hanging around the place
19:51:00 <Ermine> (and I won't)
19:51:00 <nikolapdp> annoying
19:51:00 <heat> GET THA DRILL
19:51:00 <nikolapdp> my dad helped us route the cables and such
19:51:00 <Ermine> And making a repair is not what we can afford
19:52:00 <heat> option 1: get a trained professional to do it for you
19:52:00 <heat> option 2: GET THA DRILL AND BRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
19:52:00 <nikolapdp> heat it was option 2
19:52:00 <Ermine> Lack of good constructors makes me want to go to college after I graduate
19:53:00 <nikolapdp> how are those related
19:54:00 <Ermine> what are related
19:54:00 <heat> lack of good constructors and college
19:55:00 <nikolapdp> ^
19:55:00 <Ermine> I become good constructor so I don't need to find good constructors
19:57:00 <zid> what is constructors
19:57:00 <zid> wait, are we going to play the zachtronics game
19:59:00 <heat> ah gotcha
19:59:00 <Ermine> or builders
19:59:00 <nikolapdp> ~.
19:59:00 <zid> oh builder
19:59:00 <heat> builderen
19:59:00 <zid> I could be a builder, but my arse isn't big enough
19:59:00 <nikolapdp> zid that's a lie, you'd have to leave your house
20:00:00 <Ermine> is it some sort of fine English humour
20:00:00 <zid> It's determinism nikolapdp, if I had a builder's arsecrack, I'd be a builder. I'm pale so I am a nerd.
20:00:00 <zid> lamarkian determinism
20:00:00 <nikolapdp> lel
20:08:00 <heat> i have found a nice shortcut for patching myself into config.sub and config.guess: sed -i 's/sortix/onyx'
20:08:00 <sortie> heat: Your sed is weak.
20:08:00 <zid> ooooh born
20:08:00 <zid> burn
20:08:00 <sortie> Real men (and anyone else) uses -E
20:08:00 <zid> sortie now tell him his cp is tiny
20:08:00 <zid> and his rm is debauched
20:08:00 <sortie> How dare you match sortix with a BASIC regular expression, those aren't even regular!
20:10:00 <heat> hey sortie help me out here boss
20:10:00 <heat> WARNING: 'makeinfo' is missing on your system.
20:10:00 <nikolapdp> lel
20:10:00 <heat> can i forcefully shut it up?
20:10:00 <sortie> Install texinfo
20:10:00 <heat> i mean forcefully
20:10:00 <heat> not "install GNU info"
20:10:00 <FreeFull> egrep
20:11:00 <sortie> lol you assume GNU stuff has deterministic modes to make it do useful things
20:11:00 <heat> egrep is deprecated
20:11:00 <FreeFull> Not in the POSIX spec it's not
20:11:00 <sortie> heat: This usually does happen whenever the package has pregenerated manuals and somehow make wants to remake them. A fresh extraction with reset timestamps may work. Alternatively recursively touch everything to the same reference file timestamp
20:12:00 <sortie> FreeFull: egrep is not POSIX
20:12:00 <sortie> grep -E
20:12:00 <FreeFull> Ah, it only gets mentioned
20:13:00 <sortie> If you ever use grep or sed without -E, then you are part of the problem and will be prosecuted.
20:13:00 <zid> can I use it with -i
20:13:00 <FreeFull> Too bad we can't make -E the default without breaking everything
20:13:00 <sortie> -i your choice
20:13:00 <nikolapdp> just write a script that calls grep -R and call it ergrep :P
20:13:00 <FreeFull> grep rerere
20:13:00 <sortie> FreeFull: Indeed. So use it all the time. If you use it everywhere, always, then we may have a shot at deprecating BRE (these are terrible, and not even regular expressions!)
20:14:00 <FreeFull> To be fair I usually use rg instead of grep
20:14:00 <sortie> As long as it does not have back references, it's fine :)
20:15:00 <sortie> Back references are not regular expressions, in terms of computer science, and cannot be implemented efficiently (perhaps if P=NP)
20:15:00 <zid> back references are the only reason to ever use regex
20:15:00 <sortie> Call it something else and use that. It's not a regular expression.
20:15:00 <nortti> https://perl.plover.com/NPC/
20:15:00 <bslsk05> ​perl.plover.com: Perl Regular Expression Matching is NP-Hard
20:16:00 <sortie> The regular part of expression means it's context free
20:16:00 <FreeFull> Yeah, rg doesn't have lookaround or backreferences
20:16:00 <acidx> I like libpcre. it's not perl, it's not compatible with perl, and it's not regular expressions.
20:16:00 <sortie> BRE in grep (without -E) has back references but doesn't even have | (wtf)
20:16:00 <sortie> (GNU grep does do \| as an extension but it's not POSIX)
20:17:00 <FreeFull> How can you not have | and call it regex
20:17:00 <sortie> Classic grep did not have '|'! It had back references though!
20:17:00 <FreeFull> Does ed regex not support | either?
20:17:00 <sortie> Like I said, grep without -E is not regular expressions, and everyone involved should be ashamed of themselves
20:17:00 <FreeFull> Or did they ruin it specifically for grep
20:18:00 <nortti> < sortie> The regular part of expression means it's context free ← though, context free grammars are a larger set than regular grammars. would be nice if there was a conscise way to represent context-free grammars like regex tho
20:18:00 <FreeFull> Wow, ed is tiny
20:18:00 <sortie> Regular expressions is this one (1) area of computer science where all the mathematics is actually perfect and they can be implemented extremely perfectly efficiently. It's been known forever to be nice and well done and all. And the inventors of grep just fucked up big time by ignoring all the well known science.
20:18:00 <nortti> which ed you looking at?
20:18:00 <acidx> of course ed is tiny, it's only a loop that reads a line and prints "?"
20:19:00 <FreeFull> gnu ed
20:19:00 <sortie> So remember kids. Use grep -E and sed -E *always*.
20:19:00 <nortti> aiui that's the most featureful ed there is
20:19:00 <FreeFull> I imagine other eds are even tinier
20:19:00 <FreeFull> acidx: haha
20:19:00 <FreeFull> The most featureful ed is ex
20:20:00 <sortie> acidx: while read; do echo ?; done
20:20:00 <acidx> sortie: posix ed
20:22:00 <FreeFull> Oh, you have to run `ed -E`
20:22:00 <FreeFull> Of course
20:26:00 <FreeFull> Seems gnu grep does the \| thing
20:26:00 <FreeFull> Sorry, I meant gnu ed
20:26:00 <nikolar> > sortie | (GNU grep does do \| as an extension but it's not POSIX)
20:26:00 <FreeFull> gnu ed does the \| thing
20:26:00 <sortie> glibc also does \|
20:26:00 <sortie> So anything using regcomp also has it
20:29:00 <FreeFull> I wonder what it'd take to get rust's std working on sortix
20:32:00 <heat> i just had a simultaneous impossible exception
20:32:00 <heat> this is really good
20:32:00 <nikolapdp> what
20:34:00 <heat> thats what i said!
20:35:00 <nikolapdp> kek
20:39:00 <FreeFull> Clearly it wasn't that impossible
20:39:00 <heat> in the image: 0xffffffff8102224a <+570>: call 0xffffffff8100a040 <__llvm_retpoline_r11>
20:39:00 <sortie> nooo not the retpoline
20:39:00 <heat> in ram: 0xffffffff8102224a <+570>: call 0xffffffff8100a03f
20:39:00 <heat> ?????
20:39:00 <heat> i'm not even code patching in this function
20:40:00 <nikolapdp> npivr
20:40:00 <sortie> heat: Back in old Sortix, I had a bug where programs crashed 10% of the time due to a situation like this.
20:40:00 <nikolapdp> noice
20:40:00 <heat> i mean, i'm pretty sure my tlb invalidation is on point, and that's probably one of the few possible causes
20:40:00 <FreeFull> If it were ASLR I'd expect it to be off by a lot more than just 1
20:40:00 <heat> could also be corrupting the direct map
20:40:00 <sortie> heat: Turns out the memcpy in execve was faulty. The libc was built without the redzone so interrupts trashed the stack a bit and made memcpy return early.
20:41:00 <heat> yeah that's not a problem here
20:41:00 <zid> 10% is pretty good odds
20:41:00 <zid> I'd take that gamble
20:42:00 <sortie> heat: Yeah just saying that impossible problems do happen and it can take forever to track them down
20:42:00 <heat> ... someone wrote to the page
20:42:00 <Ermine> retpoline -- is that meltdown mitigation?
20:43:00 <sortie> That is the best part of osdev. The impossible problems and how good it feels to fix it
20:43:00 <heat> yes
20:43:00 <heat> well, spectre
20:43:00 <sortie> No Mr. Bond, I expect you to return.
20:43:00 <Ermine> and llvm can generate that?
20:43:00 <heat> yes
20:44:00 <Ermine> nice?
20:44:00 <Ermine> s/?//
20:45:00 <heat> so someone with WP=0 accidentally wrote to .text and decremented that IP's instruction?
20:46:00 <FreeFull> It's weird that it's exactly off by 1
20:48:00 <zid> I also use my .text as a lock
20:48:00 <zid> just increment a random instruction to take the lock
20:48:00 <heat> i never call enable_writeprotect....
20:48:00 <zid> if contention happens, the other person crashes
20:48:00 <zid> and I win
20:49:00 <heat> how did this never blow up in my face?
20:49:00 <zid> nikolar: genius no?
20:49:00 <zid> take_lock_and_fucking_keep_it()
20:49:00 <nikolar> Indeed
20:49:00 <nikolar> The survival of the fittest
21:11:00 <heat> wooo i can build binutils
21:12:00 <heat> 4min with -j4 which is actually not too shabby
21:14:00 <Ermine> what's your cpu?
21:14:00 <zid> nikolapdp is it monday yet
21:15:00 <heat> i5-8250U
21:15:00 <heat> hmm let me time the same build on linux now
21:16:00 <Ermine> iirc my i5-3470 did it in 2 mins, but I will be able to check that only on Sunday
21:16:00 <heat> note: i'm using serial as output, which is terrible
21:17:00 <Ermine> but your cpu is U one, so I guess it's incorrect to compare it against desktop cpus
21:17:00 <heat> yeah i get 1m16.976s
21:17:00 <heat> let me try make -sss
21:18:00 <Ermine> try everything with > /dev/null 2> /dev/null
21:18:00 <nikolar> zid it's not
21:19:00 <zid> fuck you
21:19:00 <nikolar> Love you too
21:20:00 <Ermine> but anyway, 1min is impressive
21:20:00 <heat> 1min for linux :(
21:20:00 <nikolar> 1min is host
21:20:00 <Ermine> now my ivy bridge is more like rusty bridge
21:20:00 <nikolar> Yeah
21:20:00 <heat> i'll time it on a external timer, fuggit
21:22:00 <Ermine> how much does io affect build speeds btw? like hdd vs ssd
21:23:00 <zid> depends how fast your cpu is
21:23:00 <zid> it penalizes fast cpus a lot
21:23:00 <zid> pentium 4 don't care
21:27:00 <zid> mainly it's that it's a constant factor, it takes 10 seconds to load that shit off a hdd no matter what
21:27:00 <zid> so if you build it in 2 hours that's nothing, if you build it in 10 seconds that's half
21:28:00 <heat> 2:30 on onyx
21:28:00 <heat> not baaad
21:29:00 <Ermine> time for flamegraphs?
21:32:00 <heat> you know it
21:38:00 <heat> lots of idle time. i assume my scheduling is screwing me here
21:40:00 <heat> io wait flamegraph doesn't show much of note. some pipe waiting. inode_sync when destroying an inode is barely measurable
21:41:00 <mjg> watcha doin
21:42:00 <heat> building binutils on onyx
21:42:00 <mjg> OH
21:43:00 <mjg> i regret asking
21:43:00 <heat> :(
21:43:00 <heat> 80% idle time mon
21:43:00 <Mondenkind> oooff
21:43:00 <Ermine> Ah, it's basically known issue of scheduler not being great
21:44:00 <heat> if i unfuck the scheduler i'll see some good ol lock contention i hope
21:44:00 <mjg> :D
21:44:00 <mjg> for the record tho
21:44:00 <mjg> how does it look like when you build on linux?
21:44:00 <mjg> cause some toolen have just terrible build scalability
21:44:00 <heat> it's twice as fast
21:44:00 <mjg> they literally bottleneck themselvs building on one core long times for examle
21:45:00 <heat> i didn't fg it
21:45:00 <mjg> ok
21:45:00 <mjg> linux > onyx i guess :X
21:45:00 <heat> DISCOUT LINUX!
21:45:00 <mjg> is that gmake?
21:45:00 <heat> yep
21:45:00 <Ermine> for scalability you need ninja
21:45:00 <heat> but LAPTOP SCALE -j
21:45:00 <mjg> ye there it does not matter
21:45:00 <mjg> so first i would do i strace gmake
21:45:00 <mjg> since that's driving jobs starting to begin with
21:45:00 <Ermine> btw are u bilding it on master
21:46:00 <mjg> for all i know you are stalling the poor fuck
21:46:00 <heat> Ermine, no
21:46:00 <mjg> erm, s/strace/trace/
21:46:00 <mjg> you can extend your profiling hackery to only trace fuckers by procname
21:46:00 <mjg> and then only log make
21:47:00 <mjg> for a qwuick sanity check tho, how much time do you need to make will-it-scale?
21:47:00 <mjg> maybe that's already broken?
21:48:00 <heat> for context: my scheduler cpu picking algo is literally "pick the CPU that has ran less threads at that point in time"
21:48:00 <heat> it's turrible
21:48:00 <mjg> turdible?
21:48:00 <Ermine> is -j16 laptop level scalability?
21:49:00 <mjg> Ermine: just above laptop
21:49:00 <heat> PHONE scalability
21:49:00 <mjg> heat: that is turdible but it does not necessarily equate to stalls
21:49:00 <mjg> i see you are rocking that affinity mon
21:51:00 <heat> note: i probably picked the worst moment in the build to fg - the bit where it ./configures a bunch of subdirs
21:51:00 <heat> it's probably neatly serializing the build as a single make job spams out a bunch of forks
21:52:00 <mjg> your man dick sites has you covered
21:52:00 <heat> DICK SITES!
21:52:00 <mjg> there is something you can plausibly port to onyx
21:52:00 <mjg> for tracing scheduler events
21:52:00 <mjg> there is both linux and freebsd codez already, so...
21:52:00 <heat> i have a tracing framework already
21:52:00 <mjg> after that you get a google chrome compatible trace
21:52:00 <heat> i have that too
21:52:00 <mjg> :O
21:54:00 <mjg> > error: 'noreturn' function does return [-Werror]
21:54:00 <mjg> lol
21:55:00 <heat> i found a funny bug while doing this: i forgot to reset CR0.WP after hot patching
21:55:00 <heat> it's mysterious as to how that didn't blow up sooner
21:55:00 <mjg> you hot patch?
21:55:00 <mjg> doing what/
21:55:00 <heat> yes i do x86 instruction patching and i also have jump labels
21:55:00 <mjg> ye ye but what do you hot patch
21:55:00 <mjg> mofo
21:56:00 <mjg> you got static branchen or something?
21:56:00 <heat> yes
21:56:00 <mjg> onyx > freebsd
21:56:00 <mjg> so: linux > onyx > freebsd ; so far anyway
22:09:00 <heat> nothing new innit
22:43:00 * geist pushes crowdstrike to onyx
22:43:00 <geist> checkmate
22:47:00 <heat> noooooooOOOOOoooooOOOOoooo
22:47:00 <nikolar> Nice
23:03:00 <klys> recently I encountered the clone3() syscall via linux. who else has heard of it?
23:15:00 <heat> yeah cpu scheduling during the build looks... suboptimal
23:20:00 <nikolar> How are you scheduling anyway
23:22:00 <heat> wdym
23:26:00 <gog> hi
23:27:00 <nikolar> Like why are you bottlenecked here
23:27:00 <nikolar> Are you not scheduling all cores or something
23:28:00 <heat> generally you keep the threads bound to a single cpu
23:28:00 <nikolar> Yeah
23:29:00 <heat> you don't want shared scheduling structures (e.g list of active threads) as you'll have a bunch of contention possibly
23:29:00 <heat> the tricky bit is to move threads between cpus
23:29:00 <mjg> here is a funny thing tho mon
23:30:00 <mjg> global scheduler lock is not utterly tragic for building workloads at that scale
23:30:00 <heat> i'm not fucking my whole scheduler like that
23:30:00 <mjg> :d
23:30:00 <mjg> i highly recommend writing a lol scheduler aka 4bsd and having that as the benchmark
23:31:00 <heat> i have ROUND ROBIN WITH PRIORITIES
23:31:00 <heat> THE GREATEST SCHEDUELR EVER
23:31:00 <mjg> why even prorities
23:31:00 <mjg> fucken round robin all over
23:31:00 <heat> so i've been thinking for a while about reworking the scheduler
23:32:00 <heat> might do that Soon(tm)
23:32:00 <mjg> which reminds me of a funny story for you heat
23:32:00 <heat> oh oh oh mr funny story please do tell
23:32:00 <mjg> when i was kid there was a family friend visiting, he spent quit some time in the US
23:32:00 <mjg> he kept interjecting everything with "fucken" (not "fucking") instead of kurwa or similar
23:33:00 <mjg> i asked him what does it mean, but he would not tell me
23:33:00 <mjg> later i found an english teacher at school and asked that person
23:33:00 <mjg> :X
23:33:00 <heat> lol
23:34:00 <mjg> interestingly he would not tell me either
23:34:00 <mjg> teachers--