• 7 Posts
  • 168 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle





  • Linux has kind of two forms of memory pages (entries in RAM), one is a file cache (page cache) and the other is “memory allocated by programs for work” (anonymous pages).

    When you look at memory consumed by a process you are looking at RSS, page/file cache is part of kernel and for example in btop corresponds to Cached.

    Page cache can never be moved into swap - that would be the same as duplicating the file from one place on a disk to another place on a (possibly different) disk.
    If more memory is needed, page cache is evicted (written back into the respective file, if changed). Only anonymous pages (not backed by anything permanent) can be moved into swap.

    So what does “PostgreSQL heavily relies on the OSs disk cache” mean? The more free memory there is, the more files can be kept cached in RAM and the faster postgres can then retrieve these files.

    When you add zram, you dedicate part of actual RAM to a compressed swap device which, as I said above, will never contain page cache.
    In theory this still increases the total available memory but in reality that is only true if you configure the kernel to aggressively “swap” anonymous pages into the zram backed swap.

    Notes: I tried to simplify this a bit so it might not be exact, also if you look at a process, the memory consumed by it is called RSS and it contains multiple different things not just memory directly allocated by the code of the program.


  • Had to solve the same problem few months ago, user provided content and so, user provided translations.
    We use postgres everywhere and we had to support 3 languages initially with one more eventually, so we decied to use json fields for anything that could be translated (which wasn’t too much). Mind you, this was basically a (temporarily permanent) prototype project but (fresh) postgres has a good support and operators for json so it worked alright.

    EDIT: I remembered that hstore might be a good alternative too, I think it was slightly less “heavy” and had better operators for the kind of access we needed




  • Invest into an amd AM5 socket motherboard as a future-proof “core”, reuse psu, verify that the pump in the water cooler still works(afaik water coolers are actually worse then classic air on durability).
    AM5 mobo should give you longevity as AMD keeps same cpu sockets for a lot longer then intel, though mind that am5 is the latest socket and the second hand market might not be as favorable as for AM4.
    If you have or go into am4 you will be better now but with no future upgrade path (but if you really don’t have the money it will work too).

    Get any second hand cpu and gpu.

    I believe even gpus like the good old gtx 1080 would probably still work for rimworld and ONI as both are simulation games, though to err on the side, 2070 should be just fine, 3070 would be even better and give you performance to spare.
    If you want something fresher the new intel arc gpus might work for you.

    I don’t remember any older but decent cpus, but if you do a bit of searching ("best cheap AMx cpu gaming”) you will get plenty of reddit posts to approximate from.

    Edit: also, I would very much lean into getting better cpu then gpu - that is what makes or breaks the setup (and simulation games), gpus can be switched like socks anyway.
    About RAM, if you can squeeze out even a single stick ddr5 it should work really well, but double stick ddr4 32g+ sum will work too.



  • by jitter you mean ping lags/unstable ping?

    • remove all wireless connections between you and the internet if you can
    • in terminal, run ping against few different targets (to your gateway IP, to some random website/IP) and watch for packet drops, if you see them you might have a hardware problem (mb eth card/port, cable, router) or your ISP is having problems
    • check that your cable/router has correctly negotiated the wire speeds: ethtool <your-internet-interface-name:eth0> | grep -A1 Speed this will show you the speed (at least 100Mb/s) and Duplex: Full
    • maybe try changing cl_interp_ratio ?
    • run bufferbloat test
    • you sure noone is watching 4k corn while you are gaming ?



  • Wow you really went ham on this, thanks!

    The table is not small small, more like narrow so there is just enough space for 4 players and their tablets and dice trays. We have erasable(?) grid map book in front of my side of the table (GM screen with laptop and dice tray behind, and that takes the whole width of the table).
    We use miniatures (nothing fancy) to represent both PCs and NPCs but room boundaries are written on the grid with marker and that is about it, I do have some pane minis with stuff like rocks, pillars and trees but… reality is that my combats probably feel pretty barren when it comes to hiding/occlusion spots (now that I am thinking about this, I have probably not bothered because of this whole issue), I usually only sprinkle in stuff when it makes “logistical” sense to have it there.

    Clipboard is actually really good idea for my setup, I can tuck it between the laptop and GM screen when not actively using and it is mostly out of the way for everything else.

    I do like the init steps you take to resolve this, highest Perc DC vs lowest roll, if failed then note who sees who and go from there in the init order - to avoid longer pauses from me as GM.
    I will probably return to your comment after we have to deal with stealth again lol.


  • Thanks for sharing! yeah I do use the PB Encounter tracker but it does not work well with my setup and workflow - probably boils down to having 14" laptop screen.
    With all the PCs, minions and NPCs in the tracker, I can’t just scan it and see perceptions of all N/PCs, have to filter who is who and also scroll (which somehow sucks because half the time I scroll the whole page instead of the list).

    I should try the offloading that is a good tip, though my players are bit meta/gamey - not to cheese but they are just not used to separating themselves from characters, instead playing their chars like pawns and taking all information given into account - so I tend to keep stuff secret.

    PS: Thanks! ENL Rocks! hah