Minetest logo

IRC log for #minetest, 2021-08-26

| Channels | #minetest index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:25 erlehmann minetest_game, the game where water can be on fire https://mister-muffin.de/p/IHtW.png
00:30 independent56 Can't worldedit act on unloaded blocks? Can you issue a command, and when someone laods that mapblock, worldedit does the command?
00:33 MTDiscord <Jonathon> mineclonia: the game performs terribly
00:43 calcul0n_ joined #minetest
00:46 erlehmann Jonathon could yo be more specific?
00:46 erlehmann currently the only performance hogs i am aware of are rain/snow and fire
00:46 MTDiscord <Jonathon> i was being sarcastic
00:47 erlehmann if you doubt that we improved performance by, like, a lot, compare the packet count to mineclone2 or mineclone5
00:47 erlehmann rain is cursed though
00:48 MTDiscord <Jonathon> weather in general is cursed because players can eventually out run the weather
00:48 MTDiscord <Jonathon> and using hud overlays would spam to many packets
00:48 MTDiscord <Jonathon> unless you can use animated images in huds?
00:49 MTDiscord <Jonathon> that would be a ideal way to doweather
00:57 MTDiscord <Jonathon> however it appears that does not exist
00:57 mazes_81 jonadab the autocrafter group: recipe patch is for the pipeworks autocrafter ?
01:00 mazes_81 I took a look, and will have a try on it
01:03 mazes_81 still about weather, does the regional_weather/climate_api author chat here ?
01:05 MTDiscord <Jonathon> if they use the testificate handle here, i dont think so
01:43 Hawk777 joined #minetest
02:18 NotReallyASaint joined #minetest
02:27 Teckla joined #minetest
02:28 queria^clone joined #minetest
02:30 queria^clone joined #minetest
02:37 Extex joined #minetest
02:55 Elzington joined #minetest
03:04 MTDiscord <waar> I am bored
04:00 MTDiscord joined #minetest
04:06 hanetzer joined #minetest
04:07 hanetzer joined #minetest
04:14 hanetzer joined #minetest
04:14 hanetzer joined #minetest
05:01 riff-IRC joined #minetest
05:04 est31 joined #minetest
05:04 sec^nd joined #minetest
05:57 Sven_vB joined #minetest
05:59 Flabb joined #minetest
06:16 CWz joined #minetest
08:00 specing_ joined #minetest
08:17 reumeth joined #minetest
08:20 jfred joined #minetest
08:23 longerstaff13 joined #minetest
08:33 independent56 joined #minetest
08:42 appguru joined #minetest
09:00 olliy joined #minetest
09:13 Tusha joined #minetest
09:33 Rafi59 joined #minetest
09:33 absurb joined #minetest
09:38 independent56 is 111000 "us" equivlent to 111 ms?
09:38 independent56 (probably microseconds)
09:38 sfan5 let's see
09:38 sfan5 !c 11000 / 1000
09:38 MinetestBot 11.0
09:39 sfan5 wait
09:39 sfan5 forgot an 1 but you can see that yes, it's correct
09:41 independent56 Cool. So microseconds also follows metric.
09:42 independent56 None of that silly "a minute is 1/60th of an hour unless your clock is wrong"
09:43 Talkless joined #minetest
09:46 independent56 My mother is getting a new computer because the "o" key keeps on spamming, making it unusable for her. Is it worth the pain of installing ubuntu server on a different machine, getting it prepared, moving the Drive, and then using that as my server just to escape the outdated 32 bit decade old webook??
09:51 Tusha Well, I would say it depends how good is the "failing" computer compared to what are you using, and I would check if user configs could be ported saving you a great hassle on the setup
09:52 sfan5 or simplier: swap out the hard disks, zero changes needed in the ideal case
09:53 Tusha Well, if the destination is using uefi and the old one uses legacy bios, trouble will arise
09:54 Tusha It also depends if it is a laptop or desktop, as some laptops tends to be picky with linux, sadly
09:56 independent56 it's a nice laptop, with being 3 years old at most.
09:56 independent56 Of course, i will be using  ubuntu server instead of bodhi because "i no need gui"
09:57 Tusha In any case, independent56, if you want better feedback, if you can put the specs from the origin and destination computers it could make tech savvy people here (I can't include myself, to be honest) give you the best advices
09:58 Tusha Also the use-case (what you intend to do with it) could be really helpful
09:59 independent56 1 gb ram, 300 gb hd at most with the 32 bit. >4 gb ram, ~500 gb ssd for the medion laptop.
10:00 independent56 And i will use it for the same reasons i do now: web and minetest server hosting.
10:00 independent56 But i may use it split - the 32 bit hosts web, and the superior lapop can do more complex tasks
10:04 Tusha With my limited knowledge on Minetest I understand that the ssd should improve the server performance
10:04 Tusha I would also measure the different energy consumption on heavy load, so the powerbill don't give you a surprise at the month's end
10:05 independent56 I propobably will have a moral objecitionto using it: it stores my mother's files.
10:05 independent56 And i guess it only eats as much energy as it being constantly plugged in
10:06 Tusha I though you were going to do a zero install on it? Or your mother will stil be using it?
10:06 Tusha still*
10:08 independent_ joined #minetest
10:10 independent_ joined #minetest
10:11 independent_ No, mum will be getting a new laptop. But i will use it with a hard disk from a computer which installed ubuntu server for that purpouse.
10:13 Tusha So your mother will keep the ssd the computer is actually using then? If not a repartitioning could easily solve the file's problem
10:14 independent_ I will object - putting sensitive files on a hard drive accessible to the open web is  ahuge risk. partitioned or not.
10:14 independent_ I will use a spare hdd
10:15 grouinos joined #minetest
10:16 Tusha I was talking about deleting existing partitions and creating new ones, giving slow format (although not sure if that helps with data erasing on ssds)
10:16 grouinos fuckoff asshole
10:16 grouinos and suck my big dick
10:18 Tusha I was going to recommend using dban, but seems it doesn't destroy data securely on ssds
10:19 independent_ I do not wish to destroy any data. I have a horrible reputation for data loss, losing sentimental data biannually
10:20 independent_ I will make two copies of the data,but the mainamount is to be preserved on my mother'scomputer.
10:20 independent_ *the ssd drava for the computer
10:21 Tusha Ok so if I understand well the ssd the computer is using now will be extracted and used on your mother's new PC?
10:21 grouinos you can put yours sentimental data in your ass, more secure
10:22 grouinos and put your motherboard too
10:23 independent_ Tusha,  i was thinkingit would just sit around, and we couldcopy files. The computer isn'teven fromthe same company. There is bound tobe cross-compatibility issues
10:24 independent_ \whois independent_
10:24 independent_ Wait wrong slash direction
10:26 grouinos fuckoff asshole
10:26 sfan5 independent_: the manufacturer doesn't matter as much as you think
10:26 grouinos was kicked by MinetestBot: grouinos
10:26 Tusha Well, in that case that would be the sensible option, although it could work out-the-box if you just plug in it in the new laptop, if it is easy to do so (some laptops are a pita to do anthing to them)
10:27 sfan5 moving from a 32-bit to a 64-bit system should obviously mean a reinstall but other than that Linux installations are very portable
10:27 Tusha yeah as sfan5 said, if both laptops have uefi it could work, although I'm not sure if the are using secure boot, which is also a pita to work with
10:27 independent_ Cool, but i would like a fresh install of windows, so we can take the minimumm amount, and then let mum grow the amount by their own.
10:27 sfan5 oh, windows
10:27 sfan5 I suggest reinstalling that
10:28 Tusha I was afraid of that
10:28 independent_ Mum uses windows and it's what she was grown up with. I do not wish to switch her to another OS. it would be too much work
10:28 Tusha Yeah, if you have an usb hdd adaptor, just copy files to the new computer and then use the old ssd on the "failing" pc
10:28 independent_ But she is using a spare linux mintcomputer, and she oes just fine.
10:29 Tusha Or use an usb stick to copy all the "sensible" data to the new one
10:29 independent_ Tusha, The thing is, whenever i try to copyfiles, some inevitably get missed. I want to ensure mum dosent get that onosecond.
10:30 Tusha Uhm, how big the space used in the ssd?
10:30 grouinos joined #minetest
10:30 independent_ No idea. It's at the repair shop, who said they couldn't repair the ssd
10:30 grouinos you can put your ssd in your ass
10:30 grouinos was kicked by MinetestBot: grouinos
10:31 Tusha But the computer was failing besides the o key? I mean, it could boot?
10:32 independent_ Yeah, it could boot. It could do anything. But it can't do anything. Logging in is impossible. daily functions are. because the keyboard is screaming "oooooooooooo"
10:33 independent_ She can't write an email. She can't open files (as typing will open upthe search prompt).
10:33 Tusha I see, but that doesn't have anything to do about repairing  the ssd, as the store said, there is nothing to repair there to start with
10:33 sfan5 I'm pretty sure you can stop it from doing that if you clean the keyboard somehow
10:34 independent_ I meant that the store said "they can't repair the computer". The ssd is fine. Sorry for the mistake.
10:34 Tusha yeah, probably a good vacuum cleaner could help with it. If you have the laptop model chances are there are a few videos on youtube about how to open it
10:34 Tusha Oh ok, that makes sense independent_ don't worry :)
10:35 independent_ But she is getting a new computer. hopefully the placebo effectcan make her more productive or something.
10:36 independent_ And there will at least be a spare computer.
10:36 Tusha It depends for what she uses the computer, if she is using MS Office, sadly getting outside of windows will impact her, if she just uses it for web-browsing and web applications, a transition to a linux distro with win-like desktop distribution could be easy
10:37 independent_ She does a lot. She has to downlaod bank things and view/edit them. She is fine with the linux mint computer i gave her, but i can't see things staying like that. Windows is the only thing she is even close to being fluent in.
10:38 independent_ The spare computer is my sister's. It's HDD was failing, so i gave it a strong ssd and installed linux mint. I find it impossible to create a windows boot disk without a windows OS. I will get her windows hen i can.
10:39 Tusha Uhm, so maybe Excel is beign used, I guess LibreOffice Calc is one of the nearest feture-wise replacements for ms office, but sadly it isn't enough
10:42 Tusha If you have an spare usb drive I think you can create a win10 installation from linux
10:43 independent_ I did try. Using balenaetcher, it wouldn
10:43 independent_ 't work
10:44 Tusha I would suggest rufus, it hasn't failed me yet, at least on relative new computers
10:45 Tusha Also there is a itsfoss guide about win10 boot creation using ventoy
10:46 calcul0n_ joined #minetest
10:47 Tusha https://itsfoss.com/bootable-windows-usb-linux/
10:48 Tusha I would try rufus first, and if it doesn't work then give a try to that tutorial, since ventoy seems overcomplicated for what it does
10:48 independent_ intresting, willhave a look when the computer isn't being used for  family-critical stuff and mum has her computer with all files.
10:48 independent_ joined #minetest
10:54 Tusha If you want to backup data with a 90% chance of not missing anything, "x:/Users" contains all the user data, and I would copy it using a dedicated program or on linux to avoid permissions issues
10:55 Tusha If you want to keep the entire filesystem, then a ddrescue backup (which allows to omit non-used sectors) could be the safest bet, although re-mounting the image isn't completly straightfoward though
10:58 independent_ hmm
10:58 independent_ Maybe i just give her the SSD and say "copy on demand"
11:00 Tusha As long as you have a ssd usb adapter, yeah that could be the safest bet to not be blamed for anything
11:01 Tusha Although you will need to buy a new ssd for the new laptop, if you plan on using the old one too
11:05 independent_ joined #minetest
11:07 proller joined #minetest
11:14 Tusha Anyone knows if using btrfs can extend an hdd life compared to default config ext4?
11:26 sec^nd joined #minetest
11:28 erlehmann ported the meshnode mod to mcl2-derived mods and got the elusive half-bed as a reward https://mister-muffin.de/p/lGoG.png
11:39 est31 joined #minetest
11:58 Tusha Is possible to change the first-person tool animation? I haven't seen anything about it so far, and even weapon-oriented games/mods still use the same animation when the weapon is used (so far checked capture the flag and the weapons mod)
12:01 sfan5 nope, there was a PR for it once I think
12:01 Tusha So sfan5, it is implemented in core then?
12:02 sfan5 the animation is hardcoded client-side yes
12:03 Tusha Dang, well better know about it that trying to find how to change it and not fiding anything, thanks :)
12:04 CWz joined #minetest
12:04 Tusha Also I guess support for changing textures inside a tool isn't supported too? At least I saw that the compass just changes the holded object instead of updating just the texture
12:06 sfan5 indeed
12:14 est31 joined #minetest
12:21 erlehmann https://git.minetest.land/Mineclonia/mcl_meshnode/pulls/10
12:31 kamdard joined #minetest
12:33 MTDiscord <Noodlemire> "Is possible to change the first-person tool animation?"  There is a roundabout way to accomplish this. You can disable the first person using "player:hud_set_flags({wielditem = false})" and then attack an item entity to the model's hand, set to be visible in first person and to match the player's wielded item in an on_step.  A bit unwieldy and I'm not fully sure if a publicly released mod can do this yet? But the end result is that
12:33 MTDiscord changing the first person animation is as easy as changing the third person animation, now that they're one and the same.  An empty hand will be invisible in first person by default, but I'll let you decide if that's a big deal or not.
12:43 mdk joined #minetest
12:47 mdk joined #minetest
12:49 Verticen joined #minetest
12:55 mdk joined #minetest
12:55 mdk joined #minetest
13:01 TaokiLaptop joined #minetest
13:05 Tusha Noodlemire I could explore that, fixing the invisible empty hand could be accomplished by creating an item that resembles the hand itself, seems like a complete roundabound fix to a problem that shouldn't exists, I guess :P
13:07 rymiel joined #minetest
13:13 Fixer joined #minetest
13:18 MTDiscord <Noodlemire> Roundabout solutions to problems that shouldn't exist are the best solutions. :)
13:19 independent_ What is the worldedit command to replace anything that isn't "air", "advtrains:dtrack_st", "default:torch", and "default:stone" with "default:stone"?
13:32 erlehmann regarding hands
13:33 erlehmann cheat clients can help you to lend someone a hand
13:33 erlehmann literally
13:33 proller joined #minetest
13:33 erlehmann i have a chest will illegal items somewhere and one of it is a player hand
13:33 erlehmann will → with
14:04 specing lol
14:22 appguru joined #minetest
14:32 Tusha This is a bit offtopic but I will ask, I have a forgotten ubuntu server machine which I intend to use as a relay server of sorts, and was thinking on setting some kind of bouncer for irc. I reduced the list to TheLounge and soju, which would be the recommended one?
14:34 sfan5 only ever heard of the former, supposedly it's nice
14:40 specing ZNC?
14:40 specing Tusha: https://matrix.to/#/#minetest:libera.chat?via=libera.chat
14:41 specing substitute channel name as you wish, they all work
14:41 Elzington_ joined #minetest
14:41 Tusha Yeah But I wanted something direct, without vector getting in the way, I don't completly trust them
14:42 Tusha I though theloungue is a full featured hosted client which can also act as a bouncer
14:42 Tusha I though on ZNC, but reading about bouncers seems soju is more lightweight
14:44 Tusha https://git.sr.ht/~emersion/soju https://github.com/emersion/soju
14:44 sfan5 looking at which is more lightweight does not make sense at this scale
14:45 sfan5 znc consumes 10MB of RAM and barely any CPU on my server
14:46 Tusha I think it was more how it is configured-wise than resource-wise, but since I don't know any in depth I'm just repeating someone else opinion
14:47 Tusha Just for reference, here's where I read it: https://old.reddit.com/r/irc/comments/lh12hu/which_is_the_best_irc_bouncer/
14:51 Extex joined #minetest
14:56 Tusha How much resources thelouge uses? I'm more concerned about the CPU, as the PC has 8GB RAM but it is an intel AoC (or however is is said, can't recall the acronym) and as far as I know it will be the bottleneck
15:11 jonadab mazes_81: The autocrafter is a pipeworks component, yes.
15:12 jonadab Though theoretically it could be extracted and made a separate mod; the _core_ autocrafter functionality would be useful even if pipeworks were not installed.
15:12 jonadab Being able to pipe things in and out makes it much MORE useful though.
15:14 * jonadab has a love-hate relationship with pipeworks.  It's just so darned useful, you put up with the lag it causes, and the need to constantly check for broken tubes.
15:32 longerstaff13 joined #minetest
15:33 behalebabo joined #minetest
15:36 Desour joined #minetest
15:47 proller joined #minetest
15:47 kamdard joined #minetest
15:57 independent_ joined #minetest
16:00 kamdard joined #minetest
16:01 independent_ joined #minetest
16:04 Wuzzy joined #minetest
16:18 independent_ joined #minetest
16:25 garywhite joined #minetest
16:25 garywhite joined #minetest
17:24 independent_ joined #minetest
17:27 erlehmann so i have a voxelmanip that takes a bunch of node from HERE and puts them THERE. problem: they are chests, they spawn chest entities via LBM.
17:27 independent_ joined #minetest
17:27 erlehmann is there some way to let the voxelmanip run the “run at every load” LBM upon placing the node maybe?
17:29 MTDiscord <Warr1024> you can call the func yourself directly after you've committed the vmanip data to the map
17:37 est joined #minetest
17:40 independent_ https://imgur.com/a/3yuFeAq What do you think of this monstorus viaduct (i built this as a preview for other builders to get an idea)
17:41 erlehmann i must admit i do not understad the SCCSM push
17:41 erlehmann understand i mean
17:42 erlehmann i have consistently seen in the wild that people who want to execute arbitrary code on some random computers that are not theirs produce code that is horrible in both performance and security time after time
17:42 erlehmann i mean, if huge corporations can't get their javascript right with millions of dollars …
17:43 MTDiscord <Jordach> Consider
17:43 MTDiscord <Jordach> Every fucking client server video game
17:45 MTDiscord <GreenXenith> By the way, erlehmann, I've seen you doing a lot of stuff with meshnode. It's super outdated and the author is gone, though. I have a mod that does the node-as-entity thing that is much more up to date and complete https://github.com/GreenXenith/lvae/ (yes, this is a shameless plug). It's just an API mod, so theres no ships or anything-- that will come in a later mod. I figured you might be interested in taking a look, maybe you could
17:45 MTDiscord write your own ship mod, or port meshnode's ship-making system.
17:46 CWz joined #minetest
17:47 erlehmann GreenXenith nice. is there any way i can use your stuff today?
17:48 erlehmann Jordach in fact, some of the best games do not ever send executable code, but highly structured data
17:48 erlehmann Jordach regardless, popularity is a useless metric to evaluate maintenance & performance & security
17:49 MTDiscord <GreenXenith> What do you mean by "use it today"? Of course you can download and use it? It is public after all... If you mean using it for ships, again, you'd need to make your own ship constructor mod using it or port meshnode's construction system.
17:49 erlehmann GreenXenith is there any mod that uses that API?
17:49 MTDiscord <GreenXenith> There is not, as far as I know
17:50 MTDiscord <GreenXenith> I havent advertised it much
17:50 MTDiscord <GreenXenith> (at all, until now)
17:50 erlehmann please do
17:50 erlehmann sadly, i have little energy. i will continue improving meshnode for now.
17:51 MTDiscord <GreenXenith> That's fair; I'll let you know when I have a complete replacement for meshnode.
17:52 erlehmann GreenXenith are stairs and slabs supported?
17:52 erlehmann also panes
17:52 erlehmann and fences
17:52 Desour joined #minetest
17:52 erlehmann -- NOTE: Most of this file is a mess and is likely broken. Could use a rewrite.
17:52 erlehmann lol
17:53 erlehmann i like the ASCII art here https://github.com/GreenXenith/lvae/blob/master/nodebox.lua
17:53 Desour joined #minetest
17:54 MTDiscord <GreenXenith> Every node except liquid and plantlike_rooted is supported
17:56 MTDiscord <GreenXenith> Nodeboxes are iffy
17:56 MTDiscord <GreenXenith> So fences, panes, and stairs should in theory work, but in practice they may break
17:57 MTDiscord <GreenXenith> (Oh, also glasslike_framed is not implemented)
17:59 erlehmann what is it with the liquid filled glasslikes
18:00 MTDiscord <GreenXenith> Ah yes, I forgot glasslike_liquidlevel was a thing
18:01 MTDiscord <GreenXenith> Lacks support for glasslike_framed/liquidlevel and plantlike_rooted. Fortunately the glasslikes are not commonly used.
18:04 Sven_vB joined #minetest
18:12 Tusha Uhm, could the twitch bot let us see the others' teams creations, so far we can see only an small fraction of the winner
18:14 erlehmann i have seen https://github.com/minetest/minetest/pull/11567 and while i have not tested it, i want to say that i have seen “lets use sqlite instead of the file system” a few times now and strongly advise against storing blobs in a database. have implemented a build system (redo) and want to note that usually approaches relying on atime/ctime/mtime are much simpler and faster. benchmarking is really important h
18:14 erlehmann ere – because of course you can have a lot of small files, in which a database wins.
18:14 Desour lol, twitch bridge to irc
18:15 Desour #11567
18:15 ShadowBot https://github.com/minetest/minetest/issues/11567 -- Use an sqlite database for the media cache by Desour
18:15 Desour media is a lot of small files, actually
18:15 erlehmann for example, apenwarr redo uses sqlite “for speed” (i.e. to cheat on benchmarks), as it is possible to beat it with a shell script using the filesystem as a k/v store.
18:16 erlehmann Desour, with *a lot* i mean “you may run out of inodes”
18:16 erlehmann but regardless, robust benchmarking with real-world data is important
18:17 Desour well, I have done some benchmarking. and the loading from media cache, and updating new files, does not seem to be a bottleneck
18:17 erlehmann Desour, if i wish to benchmark your approach, what to run?
18:17 Tusha Sorry that was in the wrong channel, my apologies :P
18:18 Desour erlehmann: start the game and watch the terminal
18:18 Desour and look into the code to see what it benchmarks
18:18 Desour and fill your db. there's a script in the title comment
18:19 erlehmann so how do i figure out if it is faster or slower than the file approach *on my machine*?
18:20 Desour I've also added some timers to (nearly) master. see link at https://github.com/minetest/minetest/pull/11567#issuecomment-904933673
18:20 Desour but note that there's some things that I still have to do to improve performance. ie. the indexes
18:20 erlehmann nice
18:21 erlehmann Desour as the db fill script exists, is it executed automatically to populate the db?
18:22 Desour no
18:22 erlehmann why not
18:22 Desour 1) running the lua script from c++ would require installing the dependencies (luafilesystem, lsqlite3)
18:23 Desour so, it'd have to be done in C++
18:23 erlehmann also, will the caching backend be configurable? i.e. file or db?
18:23 Desour 2) there's no real benefit. it fills automatically anyways
18:23 erlehmann ah ok
18:23 Desour no
18:26 erlehmann Desour wait if you remove the old caching are you invalidating everyones cache once it is changed? o.0
18:27 Desour no, it just stays there
18:27 erlehmann so it still gets loaded?
18:27 erlehmann but not saved?
18:27 Desour I thought ppl might have some nostalgic feelings about their cache
18:27 Desour it's just there and not used
18:28 erlehmann so if i joined a server that has a TON of mods like meseclams where it can take several minutes to connect
18:28 Extex joined #minetest
18:28 erlehmann then the change would mean ALL of that is downloaded again?
18:28 Desour !mod meseclams
18:28 MinetestBot Desour: There are no results for this query :(
18:28 Desour yes
18:29 erlehmann weelllllll …
18:29 Desour new players would have to download it too
18:30 erlehmann on the test machine i am typing the cache is 431M (as reported by du), on another machine on which i play more it is 943M (as reported by du)
18:32 erlehmann lets say an average cache is 500M. there are currently around 500 players reported by “minetest-servers clients_list |wc -l”
18:32 erlehmann have i mentioned i am on a metered connection?
18:32 Desour they prolly don't have to redownload the whole cache
18:33 erlehmann if you want to improve the caching system i think it is imperative to import the previous cache
18:33 Desour ppl like you can still import the previous cache with a script
18:33 erlehmann “ppl like you”
18:33 erlehmann what the fuck
18:33 MTDiscord <Warr1024> Is 500M really a reasonable cache size?  I clear mine on every reboot, but I don't think it gets above like 5M...
18:34 Desour mine is also around 450M I think
18:34 erlehmann look most users are not technical and i know ppl who have worse connections and worse computers than my T60 and still run minetest
18:35 MTDiscord <Warr1024> Do you play a bunch of different games/servers, or do they just have huge media or something?
18:35 erlehmann not importing the existing cache to me seems as misguided as the “yes our website loads 10MB of javascript at startup, but after tht it is blindingly fast”
18:35 MTDiscord <IhrFussel> The cache folder of people who don't ever clear it can become super big...my server alone adds 70-80 MB of media
18:36 erlehmann Warr1024 i play on like 3 servers regularly, my cache folder of >900M represents prob 8 or 9 servers
18:36 Desour if coredevs want me to add code to populate the new cache with the old stuff, I will do that of course. but I hardly doubt that's they consider it worth adding more code complexity, just to make ppl wait once shorter
18:37 erlehmann well the code is already really complex and i don't really get for what gain if not performance
18:37 longerstaff13 joined #minetest
18:37 MTDiscord <IhrFussel> But it's not just once...it's once per server they play on
18:37 MTDiscord <Warr1024> Haha, okay, last I checked my server, it was 2MB, and I don't bother worrying about keeping the cache around ... but I've also had some users on shitty satellite internet who have all sorts of trouble joining, including media...
18:37 erlehmann usually on a shitty connection, once you get the media, it is workable
18:37 MTDiscord <Warr1024> Cache is shared across servers if there's a hash collision, isn't it?
18:38 Desour IhrFussel: yes, but it accumulates to a constant (the cache size) ;)
18:38 erlehmann i play on 3 different servers since they have different mods ofc (mineclonia and meseclams mostly)
18:38 erlehmann i mean
18:38 erlehmann mesecraft
18:38 erlehmann and a bit of mineclone5
18:38 Desour warr: yes
18:38 Tusha My cache, which I haven't cleaned after playing on 3 servers and tested several mods and games, adds up to 910MB
18:39 erlehmann “if coredevs want me to add code to populate the new cache with the old stuff” – considering that the purpose of a cache is to AVOID new downloads, i hope someone requires that!
18:39 Tusha Also I would add that current in-game ContentDB doesn't like crappy connections
18:39 Desour request it in the PR and see what the coredevs say
18:40 erlehmann or running out of inodes lol
18:40 Desour >the purpose of a cache is to AVOID new downloads
18:41 Desour it's purpose is to avoid frequent re-downloads
18:41 erlehmann if you don't agree that it is at least counterproductive to invalidate everyones cache at once i don't see what you are up to
18:42 MTDiscord <IhrFussel> Many players live in countries that limit the traffic per month or you have to charge up to get another GB of traffic...and losing the entire cache in those cases sounds horrible
18:42 MTDiscord <Warr1024> The most sensible way to manage a cache would be to keep track of how much value is being gotten out of each object in it (e.g. how much data has been avoided downloading due to a cache hit) over a recent time period, and evict items offering the lowest value if the cache is ever too large.
18:42 erlehmann i am actually on a connection that gets throttled after a few GB
18:42 Desour the benefits of the PR are stated in the PR: cache cleaning (and the possibility to store media zlib-compressed, for the future)
18:43 erlehmann for what reason was cache cleaning based on atime/ctime/mtime not considered? i mean, i can do that in a shell script in the background.
18:43 erlehmann in fact, i happen to be an expert on the topic of doing exactly that, which is why i chime in.
18:44 MTDiscord <Warr1024> The benefits of zlibbing media, where most of the bulkiest stuff like sound and images is already compressed, sounds a bit dubious to me?
18:44 erlehmann lol yes
18:44 erlehmann what Warr1024 says
18:45 MTDiscord <Warr1024> There are some things like obj meshes or locale files that could benefit a lot from zlib, but in that case it would make more sense to just support .obj.gz or .tr.gz files directly as media on the server-side, or have the server zlib them upon loading, so they're transferred compressed as well, and only need to be unpacked into memory for actual use...
18:45 MTDiscord <Warr1024> But either way if we added zlib to any media, it would make more sense to be selective about the types it applies to.
18:45 MTDiscord <Warr1024> AND not limit the application just to the cache...
18:45 Desour Warr102: yes, but approximations of that should be fine too. also note that this approach would mean that big files are favored (because they save more data), but they also take up more space
18:46 erlehmann so what is the problem with existing cache eviction techniques based on the file system?
18:46 Desour >for what reason was cache cleaning based on atime/ctime/mtime not considered?
18:47 Desour multiple reasons. ie. databases are useful and easy. and I don't have to fear to run into synchronization issues
18:47 MTDiscord <Warr1024> Yeah, probably one of the reasons why we don't have a lot of compression features is because much of the media that would benefit the most from compression (e.g. obj, tr) are already pretty small and don't take up as much of the media space as, say, ogg files.
18:47 erlehmann > databases are useful and easy
18:47 erlehmann lol no
18:47 erlehmann useful yes, easy not at all
18:47 Krock btw, there's a file limit for FAT32-formatted SD-cards (for example)
18:47 Krock hence in favour for database-based or aggressive deletion policy
18:47 Desour >The benefits of zlibbing media, where most of the bulkiest stuff like sound and images is already compressed, sounds a bit dubious to me?
18:48 Krock compression is futile on most assets. there's no need for that
18:48 MTDiscord <Warr1024> Plain files have some transparency advantages, esp. for storing binary blobs ... but then, MT also moved its map format away from file-per-mapblock and into databases due to filesystem non-idealities....
18:48 erlehmann Krock considering that minetest cdb stops working once inodes run out, i am in favor of detecting this condition
18:48 Desour many of our png images are very small. and there are some media files that might still be compressed very well, ie. translation files, .obj, sscsm .lua
18:49 erlehmann Warr1024 the map *always* consists of many small things though
18:49 erlehmann and those are much smaller than media typically (with the exception of inventories and books)
18:50 Desour >useful yes, easy not at all
18:51 Desour if you do more than just writing unstructured data, and also want some of the db features, databases are actually relatively easy. you just need to know how to use them (ie. know sql)
18:51 Desour >transparency advantages
18:51 Desour what do you mean with transparency?
18:52 erlehmann i know enough sql to shoot myself in the foot not too often (i.e. in production)
18:52 erlehmann Desour the database blobs are opaque to almost everything. filesystems are not.
18:53 Desour that's just negating the word
18:53 MTDiscord <Warr1024> The filesystem is essentially a universal database designed for storing blobs and which every program on the system that handles storable data can interact with.  Specialized databases require you to use only tools that are specifically compatible with it.
18:53 Desour if something is transparent, you can't see it
18:54 Desour Warr1024: ahh, I see.
18:54 MTDiscord <Warr1024> Transparency isn't an all or nothing thing.  Things can be more transparent if there are more tools that allow access to it in different ways, and more opaque if you're more constrained in how you access them.
18:54 erlehmann and also transparency means the backing storage does not matter
18:54 erlehmann like which filesystem you have does not matter to unix tools
18:54 MTDiscord <Warr1024> SQLite, for example, is a database within a file, so it must be by nature at least as opaque as the filesystem it's in.
18:55 Desour do we have many programs or so, that operate on the meida cache?
18:55 MTDiscord <Warr1024> The downside to the filesystem is that the places where you can store metadata are limited, so e.g. you can keep track of recency of use via atime, but not frequency of use.  That might still be adequate to make a useful cache eviction tool anyway, though.
18:55 erlehmann i ca do
18:55 erlehmann find cache/media -type f |xargs file --mime |cut -d' ' -f2 |sort |uniq -c
18:56 erlehmann Warr1024 redo-sh proves that it is possible to be faster than sqlite if you just rely on the filesystem
18:56 MTDiscord <Warr1024> We don't have programs for operating on the filesystem cache because they can be so trivial to make that people who do may not even think about distributing them :-)
18:56 erlehmann 331 application/octet-stream;
18:56 erlehmann 1255 audio/ogg;
18:56 erlehmann 61 image/jpeg;
18:56 erlehmann 36833 image/png;
18:56 erlehmann 1123 text/plain;
18:56 erlehmann that is my 431MB cache contents
18:56 erlehmann now, Desour what is the equivalent of “find cache/media -type f |xargs file --mime |cut -d' ' -f2 |sort |uniq -c” for your database?
18:57 Desour wait a moment
18:57 Tusha Well, I guess that a SQL query could do that, not sure exactly which is needed for SQlite though
18:58 MTDiscord <Warr1024> I could frankly see a use-case for storing the cache content as files, but having a small, optional metadata-only database that could be used to better inform cache eviction tools.  I'm not sure if overall a bunch of "could" and "optional" is enough to justify the extra work to add one though.
18:58 erlehmann Warr1024 is exactly right, cache eviction with unix shell is a oneliner
18:59 erlehmann Warr1024 that is the approach that apenwarr redo takes … so far it performs worse than every tool i have seen which stores the metadata in the filesystem as key/value store
19:00 MTDiscord <Warr1024> Yep, it's a heavy trade-ff
19:00 erlehmann the thing is, you don't easily get enough metadata to justify it for any cache eviction strategy i know of
19:00 MTDiscord <Warr1024> you'd need to have a very strong need to do very accurate cache eviction to warrant doing that.
19:01 MTDiscord <Warr1024> Cache eviction is ultimately guesswork at some level though no matter how sophisticated your statistics are
19:01 erlehmann i actually wrote my own build system because i wanted a very accurate up-to-date calculation (no unnecessary rebuilds, no skipping rebuilding if it is necessary)
19:02 MTDiscord <Warr1024> Caching with a rich/complex database is an interesting academic exercise but it might be overengineered for what we've got in MT.  It might be useful as a research tool to help us find out if what we assume we know about how caches behave in MT matches reality, but we probably don't have enough hard evidence to suggest it's a good idea for production use.
19:02 erlehmann regarding the 36833 PNG images in my cache, they are already zlib compressed most likely
19:03 MTDiscord <Warr1024> PNG files with no compression are I think technically possible according to the spec but I've never seen one in the wild :-)
19:03 erlehmann just in case anyone wonders how to delete files with unix tools
19:03 Desour is there something like `file` that takes the file data and not a path?
19:03 erlehmann somethig like this: find /path/to/files -type f -mtime +30 -exec rm {} \;
19:04 erlehmann Desour pipe it to stdin
19:04 MTDiscord <Warr1024> file can read stdin
19:04 Desour ok
19:04 erlehmann ; printf '<!DOCTYPE html>' |file --brief --mime -
19:04 erlehmann text/html; charset=us-ascii
19:04 erlehmann # exited 0 0
19:09 erlehmann Desour is writing the SQL taking time or running it?
19:09 erlehmann i mean i have no idea how much more complex it is in SQL
19:09 Desour writing the bash is taking time
19:16 erlehmann Desour but i already posted it: “find cache/media -type f |xargs file --mime |cut -d' ' -f2 |sort |uniq -c”
19:16 Desour yeah, I'm not good at bash
19:16 erlehmann well, bash is very complex, try to keep to bourne shell (sh)
19:16 erlehmann i can help
19:17 erlehmann want to show what you have?
19:17 erlehmann Desour may it be that databases are easier for you precisely bc you can't do the shell stuff and can do the db stuff?
19:18 Desour tbh, I don't do db stuff often. but shell stuff neither
19:18 erlehmann oh
19:18 erlehmann well then i just wait until you show something and i'll tell you if it can be improved
19:18 erlehmann (if i see something)
19:22 Desour I want to do something like `<some stuff> | xargs echo "<thing that came from some stuff> bla"`
19:22 Desour how do I do that?
19:24 Desour ahh, -I
19:24 erlehmann eh
19:24 erlehmann are you *sure* you are doing the right thing?
19:24 erlehmann Desour use printf it is portable, echo is not
19:26 Desour I'm currently trying this: sqlite3 media_db.sqlite "select sha1 from files limit 10;" | xargs -d '\n' -I '{}' `sqlite3 media_db.sqlite "select data from files where sha1='{}';" | file --mime /dev/stdin`
19:26 Desour but files reading from stdin is complicated
19:27 Desour all the shell stuff is made for paths, not for raw data, that's my main problem I think
19:32 Tusha Doesn't sqlite has ways to extract the blob info you want instead of the raw data itself?
19:33 Desour what do u mean with blob info?
19:33 Tusha Like, size, mime tipe, and that stuff, although I could just have missunderstood what you are trying to accomplish
19:34 MTDiscord <Warr1024> The SQLite command line tool is not really useful for extracting individual items out into files or separate streams
19:34 MTDiscord <Warr1024> Piping them to file to discover type based on file magic is actually sort of a worst-case for SQLite in particular.
19:35 MTDiscord <Warr1024> The idea is that you have a database that lets you define more or less arbitrary metadata and handle it reasonably efficiently, so it only makes sense to use really if you're actually adding metadata.
19:37 Desour Tusha: I can get the length of a blob, but not the mime, afaik. see also https://www.sqlite.org/lang_corefunc.html
19:37 Tusha Just fiddling with DB Browser for SQlite and seeing if there is an internal way of checking that
19:38 Tusha I see, somehow the db reader detects I saved a .png, but it may be an extension inside the program itself
19:38 MTDiscord <Warr1024> More useful would be to get information that only SQLite could actually store, like how frequently the file has been accessed over a certain time window.  To do that, though, you'd have to also actually store that data.
19:38 Desour yeah, reading stuff that was never stored is quite impossible
19:39 MTDiscord <luatic> Desour: Well, most file formats have a 4-byte magic number / header at the beginning usually.
19:39 Desour Tusha: the PNG stuff that you see in the data is the filedata. the file format has some magic bytes in the beginning, to allow things such as `file` to get the file type
19:39 MTDiscord <Warr1024> Shell script's advantage here is that it's very easy to extend with utilities and scripts, so it can just use file to infer the type at the time the script is run.  SQLite doesn't let you add extensions like that nearly as easily.
19:40 erlehmann Desour i have an opinion on the “it is easier to do stuff using a database” regarding this and many similar tasks (like cache eviction)
19:41 MTDiscord <Warr1024> For an MT specific cache you could probably just add the magic bytes to a table and join on that ... but there are ambiguous cases (locale and obj files both look like text) and recreating the work of the file utility in SQL is just too much work to prove a point :-)
19:41 MTDiscord <luatic> Well well
19:41 MTDiscord <luatic> Databases are noice and abstract away all the FS bewlshit
19:41 erlehmann look once you are starting stuff like “join on magic bytes” you are just putting lipstick on a pig
19:41 erlehmann luatic databases ARE nice but you need to have a problem that fits the solution
19:42 MTDiscord <luatic> Databases are always the solution
19:42 erlehmann and i have my doubts that the caching problem is even in the same ballpark
19:42 MTDiscord <luatic> Say, checking for old files
19:42 erlehmann yeah, if you have a really big hammer you can feel like you can nail the whole world
19:42 erlehmann if you get what i mean
19:42 erlehmann (i mean exactly what i wrote)
19:42 MTDiscord <luatic> SQLite lets you have an index, so this is actually logarithmic
19:42 MTDiscord <luatic> (this is what nrz tells in a comment)
19:42 MTDiscord <luatic> A filesystem would require linear cache
19:42 MTDiscord <luatic> Which is just ugh
19:42 erlehmann the point is you nneed to have A LOT of records to make this outperform the filesystem
19:42 MTDiscord <luatic> search*
19:43 MTDiscord <luatic> No, databases outperform poor filesystems all the time
19:43 erlehmann years ago i did live maintenance on a database with hundreds of thousands of records. you usually don't want *that* in files.
19:43 erlehmann and yes it was an emergency
19:44 erlehmann i was assured i would not be fired
19:44 erlehmann if it went haywire
19:44 erlehmann (it worked out)
19:44 MTDiscord <luatic> Well, nowadays, I'm not much of a fan of "throw SQL at it" anymore. But I'm still a fan of databases.
19:44 erlehmann luatic you always need benchmarks. there are so many tools that make sense if you have problems the size of facebook or google or amazon.
19:45 MTDiscord <luatic> SQL is where most bloat comes from anyways, which is why simple k/v DBs are so popular nowadays
19:45 erlehmann and then there is the COST
19:45 erlehmann the filesystem is a simple k/v store
19:45 erlehmann with a cache
19:45 MTDiscord <luatic> yes
19:45 MTDiscord <luatic> but without proper indexing
19:46 MTDiscord <luatic> it only indexes on filenames, usually, and even for that, it doesn't even sort them
19:46 MTDiscord <luatic> it's also different from platform to platform
19:47 erlehmann > it only indexes on filenames, usually
19:47 erlehmann oh lol
19:47 erlehmann have you read the COST paper?
19:51 MTDiscord <Warr1024> Databases in general are a good solution to a lot of data storage problems.  There are a lot of specialty databases that are good for specific sub-problems. For instance, for storing a lot of blob data in essentially a tree-structured key/value store with a bit of metadata, filesystems are a pretty nice kind of database for that application.
19:53 Desour I give up. xargs is too difficult for me
19:54 MTDiscord <Warr1024> I'm actually curious if there's any quantitative empirical evidence for the SQLite approach?  Like, are there measurable savings or improvements it makes?
19:55 MTDiscord <Warr1024> In theory these kind of things can just be better in some cases and worse in others, and it would be nice to know e.g. if there's an actual crossover point.
19:55 Desour (but yes, I see the transparency issue that you were talking about)
19:56 Desour btw., other backends could be added later, of course
19:57 specing_ joined #minetest
19:58 erlehmann the “in theory” thing has the problem IMO that it leads to the kind of stuff that apenwarr redo is
19:59 erlehmann as i said, using sqlite “for performance” has to be justified with benchmarks
19:59 erlehmann and tbh, if your stuff performs about the same i would gladly take the battle-tested less complex solution that allows me to write my own cache eviction strategy in one line of shell script
19:59 erlehmann i volunteer even to compete if its just about clearing up the cache
20:00 erlehmann like what approach can handle the problem faster
20:00 erlehmann (for the same algorithm)
20:01 Desour the reason why I chose sqlite was not performance
20:01 erlehmann well it obv can't be ease of use if the “count the mime types” task is any hint of future usability
20:01 Desour (at least not the top reason, I hoped for not making anything worse, of course)
20:01 erlehmann what is the top reason though?
20:02 erlehmann the zlib everything thing is a bad idea, we already know that
20:02 celeron55_ i'd like to see a cache eviction implementation for the files without using a database, but before that i'd like to hear how you'd do it as the filesystem, given all the platforms we support, doesn't give you that much metadata
20:02 Desour the problem with the count the mime types is that I'm too unexperienced with the shell. I couldn't have written the one liner you presented before
20:03 erlehmann then do it in pure sql?
20:04 sfan5 celeron55_: atime and mtime are POSIX but I don't think it's wise to rely on them (esp. atime, which may be disabled)
20:04 erlehmann i agree that atime is not a very good measurement
20:04 celeron55_ we all know the fs based cache works well and has worked well for 9 years already, and the only thing missing is eviction
20:04 Desour that's like saying "do it in pure VHDL". sql isn't made to operate with things such as filetypes. (and shell couldn't do it either without the tools you've installed (ie. files))
20:05 celeron55_ the question is, what's the best solution from this starting point
20:05 erlehmann i think the best solution is trying to figure out 1. ideas for when to evict 2. what strategies to use
20:06 erlehmann i already pointed out one point of when to evict the cache, when you run out of inodes. granted, that's an extreme case.
20:06 erlehmann lets say you do it based on cache directory size, then the naive strategy is to get rid of files that have not been touched longest first.
20:07 erlehmann no additional state would need to be maintained for that naive solution
20:08 sfan5 bad strategy, there are likely files that are very old (because every server has them for a long time) yet are often used
20:09 erlehmann i meant “not used” with “have not been touched”
20:09 sfan5 well how do you determine that from file metadata
20:10 erlehmann if atime is not a useful concept, one can just update ctime by slightly tickling the file
20:12 sfan5 workable idea
20:12 erlehmann celeron55_ anything except windows that is not POSIX stat(2) compatible?
20:12 sfan5 that merely reading the files will cause disk writes is too bad but ¯\_(ツ)_/¯
20:12 erlehmann technically, having atime does that already
20:13 erlehmann and noatime disables it lol
20:13 erlehmann how about
20:13 erlehmann using atime and whoever does explicitly use noatime can enjoy their breakage (lots of stuff breaks then AFAIK)
20:14 celeron55_ one option is to use the files, and add sqlite on the side just for the metadata
20:14 celeron55_ it's kind of silly, but so is storing files in sqlite
20:14 erlehmann yeah but the thing is, if you do that, you can also just save the metadata in the filesystem
20:15 erlehmann in redo, i just have filename.md5sum and filename.ctime for freshness checks
20:15 erlehmann its ugly but it works out
20:15 celeron55_ but you really need more metadata than just the timestamp
20:15 erlehmann well what do you need?
20:15 erlehmann doing that kind of stuff works really well actually, considering i use the read builtin from bourne shell and some implementations make that read 1 byte at a time
20:16 erlehmann like i was surprised it as so fast
20:16 celeron55_ https://github.com/minetest/minetest/pull/11567#issuecomment-904888258
20:16 erlehmann but compared to even loading sqlite into memory, ofc it is
20:16 reumeth joined #minetest
20:17 erlehmann celeron55_ my suggested naive expiration strategy is different than the one you suggested there. it is just “to stay under a threshold, delete the files where the access data is the oldest”. this does not have the expiration problem you pose at all!
20:17 erlehmann access data → access date
20:18 erlehmann celeron55_ what problem does the two-stage expiration solve that my naive approach does not?
20:18 erlehmann i.e. in which situations is it actually better?
20:19 celeron55_ "stay under a threshold" probably works fine too, as long as the threshold is wisely set
20:19 celeron55_ so that would indeed work with the filesystem
20:20 erlehmann yeah but what made you come up with the two-stage expiration? there *must* be a motivation for that
20:20 celeron55_ we just have to calculate what the maximum reasonable cache size is, given how many servers and games a user normally plays and what the average data size per server or game is
20:20 erlehmann ppl don't just pull this out of thin air
20:21 celeron55_ what's the comment missing, it already has my reasoning
20:22 erlehmann ok if it does not get any more sophisticated than that, i guess that is it then.
20:22 erlehmann i mean it is a simple strategy, maybe i was expecting a complicated explanation ^^
20:22 proller joined #minetest
20:22 Extex joined #minetest
20:22 erlehmann but you delivered a simple one
20:22 erlehmann so ig i thought there was more to it and there is not
20:23 erlehmann thanks
20:23 celeron55_ lol
20:23 celeron55_ anyway, if someone can come up with a reason why erlehmann's proposal wouldn't work, please do
20:26 celeron55_ of course if there's a weird corner case or obscure platform where it doesn't work, they can just disable the cache; in practice cache eviction can be done manually or never as everyone indeed has done so far
20:26 erlehmann yeah that is the beauty of it, it literally can't get worse lol
20:27 erlehmann i must say i have rarely cared for the cache, is it a recent thing that ppl care? are they playing minetest on 4GB sdcards on raspis or something?
20:27 Desour I don't care much how big my media cache folder is (as long as it's not tooo big). and I don't want to keep metadata of servers where I didn't play for ages. if the max cache size is too small, it will get useless, though. therefore I prefer a time-based strategy.
20:28 celeron55_ i'd guesstimate the cache threshold size could be 500 MB or something like that. on the machines MT is playable, that size barely counts but it already covers tens of servers or games
20:28 erlehmann well, that is not a problem, you can have both
20:29 erlehmann celeron55_ 500MB is most likely too low. let me check something.
20:30 celeron55_ also, there could be multiple thresholds, like 1 year @ 500 MB and 1 month @ 2 GB, or whatever
20:34 independent__ joined #minetest
20:34 erlehmann yeah
20:34 erlehmann it's fairly simple
20:34 erlehmann you can also have multiple strategies at the same time
20:35 erlehmann let me check something
20:35 erlehmann i renamed my cache dir to cache2
20:35 erlehmann and made a new empty one
20:35 erlehmann i will now connect to a few popular servers and a few others i play on and report back
20:37 independent56 joined #minetest
20:40 erlehmann server 1: your-land.de:30000 cache size 86M
20:41 erlehmann server 2: rubenwardy ctf. not accepting new players.
20:44 erlehmann server 3: edgy1.net (catlandia, not a dating server) cache size 126M
20:44 erlehmann and yes i am testing on a machine that has not a metered connection lol
20:44 erlehmann (i.e. not the one i am writing from)
20:47 erlehmann server 4: kay27.ignorelist.com (the mineclone5 test server) cache size 165M
20:49 Desour are errorstream and co. thread-safe?
20:51 erlehmann server 5: kay27.ignorelist.com (mineclone2) cache size still 165M
20:51 sfan5 I don't think so but does it really matter?
20:53 Desour I don't know if it matters
20:56 erlehmann server 6: kay27.ignorelist.com (mineclone5 creative) cache size 167M
20:57 Elzington joined #minetest
20:59 luk3yx joined #minetest
20:59 kevinsan_ joined #minetest
21:00 beanzilla_ joined #minetest
21:01 Desour erlehmann: are you always deleting your whole cache or are you checking how many files there are with a new enough timestamp?
21:01 Desour (if you have atime)
21:01 erlehmann i am not deleting any files right now, i am looking what happens if i visit a buch of servers
21:01 erlehmann a bunch
21:02 erlehmann server 7: clam.minetest.land:48140 (mineclonia with minecraft-like textures) cache size 201M (note: loading this stuff took a *long* time)
21:08 erlehmann server 8: mesecraft.net:30000 (mesecraft) cache size 241M
21:09 erlehmann server 9: minetest.foo-projects.org:30394 (inside the box) cache size 272M
21:10 erlehmann server 10: nodecore.mine.nu:30000 (nodecore) cache size 274M
21:11 erlehmann server 11: skyblock.telesight.nl (telesight skyblock) cache size 276M
21:12 MTDiscord <Warr1024> it would be interesting to see those as sort of like a venn diagram or something to understand the probability distribution of media sizes for a "first" server vs subsequent ones, and how much of an impact cross-server reuse has
21:13 erlehmann server 12: server.minetest.one:30001 (braincraft) cache size 307M
21:15 erlehmann server 13: nico.multicraft.world:40779 (survivalgo) cache size 309M
21:15 erlehmann server 14: i start exile locally cache size 315M
21:16 erlehmann server 15: i start repixture locally cache size 320M
21:16 Tusha The only method to compare actual cache with sqlite based cache in terms of speed, although it is a bit crude and black boxy, would be to use 2 clients on the same machine with clear data, and measure first logging load and second login load on the same server, on several servers. Maybe a cache size check could be a plus, but it depends what we want to know in the first place
21:17 erlehmann so i stop now
21:17 Tusha load times*
21:17 erlehmann what i think i gathred
21:17 erlehmann 1. singleplayer games affect the cache. i had not thought of that.
21:18 erlehmann 2. the cache makes a HUGE difference. erroneous cache eviction must not be allowed!
21:18 erlehmann 3. mineclone2/mineclone5/mineclonia … all the same. unless someone uses a different texture pack.
21:19 Desour media cache loading is no bottleneck, you might be able to achive 100ms less waiting times on servers where there are masses of media, but you still have to wait >0.5s.
21:19 erlehmann 4. by visiting a few servers and having a few singleplayer games you can easily get to 500M
21:19 erlehmann loading from the cache is not a bottleneck probably, but erroneously evicting it makes everything so much slower
21:20 Verticen joined #minetest
21:20 Desour it just makes first joins slow again
21:20 erlehmann i gather you have never waited minutes for your friend to come and play
21:20 Tusha I tend to have the same load speeds on servers before/after caching, at least it feels like the same time, as I haven't measured it
21:20 erlehmann bc they have to dl the media
21:21 Tusha I have a good speed, yet it takes about 20 minutes to get into the server
21:21 Desour dl?
21:21 erlehmann if anyone would ask me, i would set the cache eviction threshold at about 1G disk space.
21:21 Tusha Internet speed that is
21:21 erlehmann download
21:21 Desour I don't want 1G of media if half of it is unused
21:22 erlehmann nah because it will be used
21:22 erlehmann i just figured that out
21:22 Desour it will not
21:23 erlehmann look any worlds folder is *easily* easily bigger than that if you play for a few months
21:23 erlehmann way bigger
21:23 Desour I join at servers, play some days, and never come back for months or years => cache for that server not used
21:23 erlehmann oh i think you misunderstand how the caching works
21:24 Desour pls explain what I'm musinderstanding
21:24 erlehmann as you can see in my notes above, if the same asset is used locally or on another server, you profit from it
21:24 Desour not if it's a server with some texture pach, ie. fussels's server
21:24 erlehmann like, all the mineclone2/mineclone5/mineclonia stuff was only one single blob except for clamity using a different texture pack and music
21:24 Desour pack*
21:25 erlehmann as i said, you can combine strategies, like: “prune oldest files when 1G is hit and also prune all files older than a year”
21:26 erlehmann and by older, i mean “not used in”
21:26 erlehmann and by oldest i mean “not used for the longest time”
21:26 erlehmann Desour, would that satisfy you?
21:28 Desour I do like the twice-expiration though
21:28 Desour but, a combination allowing both would of course satisfy me
21:29 erlehmann i think the twice-expiration is a weird idea that probably performs in non-obvious ways
21:29 Desour (if the threshold is configurable, it's basically possible to just turn it off)
21:29 erlehmann like i sometimes do not play minetest for a while, like months
21:29 erlehmann or do not connect to a server for a while
21:30 Desour it's not that weird imo. I'm not sure where, but I think I've seen a similar thing elsewhere already
21:30 erlehmann well the thing is, i like the “solution fits in head” algorithms approach
21:31 Desour yes, and it does fit in the head
21:31 erlehmann mechanically yes. but i can't really reason about it.
21:31 erlehmann i mean, i can, if i put effort in it
21:32 erlehmann but compared to “take out the trash if the cache is 1G” it is harder
21:32 behalebabo joined #minetest
21:34 erlehmann in general, for size based eviction the threshold must be comfortably high with safety margin
21:35 erlehmann bc otherwise you can connect to 5 servers and play 3 different singleplayer games and if say, the cache was 250M then it is basically evicted all the time
21:35 erlehmann which would undeniably suck
21:37 Desour well, you can easily get some guarantees from this size-too-big approach: the upper size limit. but from the twice-expire time-based approach you can also get some (more complicated to formulate) guarantees: unused files are removed after some time if you were active in this time
21:38 Desour (I prefer the guaranteed deletion of old stuff)
21:42 erlehmann as i told you, just run all of the strategies lol
21:42 Desour btw. about the compression thing: using the file type for this has the downside that the client can't decide to compress the file independently from the server
21:42 erlehmann look if you recompress stuff you don't gain much space
21:42 erlehmann and you lose the caching
21:43 Desour the sha1 digests in the db are meant to be over the uncompressed data
21:44 Desour recompressing obviously doesn't make much sense. but old servers send ie. translation files uncompressed
21:45 erlehmann i am not trying to be mean here … but i do have the suspicion that you are trying to solve a problem that is not really big enough to warrant attention with the recompression approach
21:46 erlehmann meanwhile, i should probably run “optipng -o7 -strip all” on mineclonia
21:46 Desour yeah, I don't have a strong feeling about the compression thing. it doesn't hurt though
21:47 erlehmann it does
21:47 erlehmann code is a liability
21:47 erlehmann or to say it more brazen: deleted code is debugged code
21:47 erlehmann the best code is code not written
21:48 erlehmann brazenly
21:48 erlehmann it's an adverb
21:48 Desour yes, but it costs nearly no code
21:48 erlehmann it costs code, CPU time and RAM
21:49 erlehmann the space/time tradeoff is not good
21:49 erlehmann you are better off convincing mod authors to compress their stuff well
21:50 erlehmann disk-space and traffic savings-wise
21:50 Tusha I don't think experimenting is a bad thing, prototypes are always neccesary to advance
21:50 Tusha Also there is the experience gain in the process
21:51 erlehmann we have a workable model of caching resources already, it is in web browsers
21:51 erlehmann 25 years of experience
21:51 erlehmann i posit it makes sense to read the existing literature on that *first* and then figure out if anything is missing
21:52 erlehmann except, of course, if it is a thing of having enlightenment
21:52 Tusha Well I was talking about the experience the dev gets from trying it, even if it isn't the best approach
21:52 erlehmann i wrote a quine without cheating
21:52 Tusha lol
21:52 erlehmann here
21:52 erlehmann #!/usr/bin/rc
21:52 erlehmann p='''';q='#!/usr/bin/rc
21:52 erlehmann p=%s;q=%s;printf $q $p$p$p$p $p$q$p
21:52 erlehmann ';printf $q $p$p$p$p $p$q$p
21:52 erlehmann the rc shell is a funny thing
21:54 Tusha Just trying to gasp zsh over sh or bash, and why it could be an alternative, never heard about rc shell
21:54 erlehmann the rc shell is the standard shell in plan9 and solves a bunch of things that always bugged me in sh/bash/zsh
21:54 erlehmann it has a very small grammar too
21:55 erlehmann i suggest to try it if you are looking for something that has very little historical warts
21:55 erlehmann (plan9 design was mostly sound … and incompatible with other stuff)
21:56 est joined #minetest
21:57 Tusha Anything is better than powershell, at least for me xD...
22:04 independent56 joined #minetest
22:23 olliy joined #minetest
22:46 Verticen joined #minetest
22:52 erlehmann joined #minetest
23:02 est joined #minetest
23:26 independent56 joined #minetest
23:29 search_social joined #minetest
23:30 independent56 joined #minetest
23:43 illwieckz joined #minetest

| Channels | #minetest index | Today | | Google Search | Plaintext