Margaras Unlimited



k47

@k47@k47.cz

eat the rich
http://k47.cz
https://deadbeef.k47.cz
https://k47.cz/bandcamp/

51/22/123
RSS

k47 @k47@k4.cz -- Sep 21, 16:28 (1/0/2)

Moje fedi instance běží na @gotosocial napsané v go a poslední dobou se zabraná paměť vyšplhala na 180 MB, tak jsem se začal dívat, jak je to implementované a je to... sám bych to napsal jinak.

Třeba: Status objekt má přes 600 bajtů. A to je velikost bez jakýchkoli dat, žádný text, žádné extra metadata, jen velikost structu samotného.

Jako idčka používají stringovou reprezentaci ULID. Takže každé id je 16B string proměnná, která odkazuje na 32B alokované paměti a to všechno pro reprezentaci 16B hodnoty.

Pro DB operace používají ORM bun, které pro každý dotaz vytvoří jeho reprezentaci z mnoha objektů a polí, pak ho serializuje na SQL string a ten pošle databázi (u mě sqlite). Efektivnější a jednodušší by bylo použít prepared statement a vyhnout se všem těm alokacím. Jen pro SQL string bun alokuje vždy aspoň 4 kB buffer.

Nebo pro cache databázových výsledků používají go-cache, které v případě statusů má režii přes 400 bajtů na každý cachovaný objekt. S trochou rafinovanosti se dá napsat LRU cache, co pro tuhle situaci bude potřebovat přesně 48 bajtů per objekt. 16 bajtů + 8 bajtů pro každý index přes který se dá objekt hledat. Hlavní myšlenka téhle implementace (do níž jsem se pustil) je prostý fakt, že jde o cache a tak můžu dostat falešná negativa (objekt je v cache, ale nemůžu se k němu dostat přes daný index). Díky tomuhle není třeba alokovat nic extra, ani pro složené klíče. Možná se o tom někdy příště rozepíšu víc do detailu.

---
k47 @k47@k4.cz -- Sep 19, 12:44 (0/3/3)

sqlite protip: někdy se vyplatí potlačit použití indexu prostým unárním +

select * from stuff where date > unixepoch("now", "-3 year")

Tohle použije index na sloupci date. Ale když má where velkou selektivitu, dělám hromadu bodových dotazů na velké části databáze. V tom případě může být lepší vynutit sekvenční scan celé databáze.

select * from stuff where +date > unixepoch("now", "-3 year")

U mě to v jednom případě znamená rozdíl mezi 23.5 vteřinami a 3.7 vteřinami.

#sqlite

---
k47 @k47@k4.cz -- Sep 17, 13:56 (0/0/0)

konečně něco zajímavého ve světě mikroarchitektur: RISC-V procesor, co implementuje L1 cache jako virtuálně adresovanou a zároveň virtuálně tagovanou, takže load/store, co skončí v L1$, nepotřebuje TLB
https://chipsandcheese.com/2023/09/01/hot-chips-2023-ventanas-unconventional-veyron-v1/

---
k47 @k47@k4.cz -- Sep 16, 21:17 (1/0/0)

Když z nějakého důvodu chcete na linuxu přečíst paměť jiného procesu, jde to velice snadno.

V souboru /proc/$pid/maps jsou uvedeny všechny namapované rozsahy virtuální paměti.

Ty stačí naparsovat a pak je seek + read stylem přečíst ze souboru /proc/$pid/mem, třeba přes dd if=/proc/$pid/mem bs=1024 iseek=$offset count=$count of=mem.bin a je hotovo.

Maličký problém je jen to, že některé aplikace alokují mraky virtuální paměti, ale skutečně z toho použijí jen zlomek (např. liferea má 102 GB virt. paměti, ale jen 199MB RSS).

---
k47 @k47@k4.cz -- Sep 11, 18:57 (0/0/0)

další den a dva motoristé ukázali, že neumí nebo nechtějí bezpečné předjíždět cyklisty

jako rád bych věřit, že řidiči aut nejsou čůráci, pro než má lidský život stejnou cenu jako patnáct vteřin zpoždění, ale téměř každý den mě přesvědčí o opaku

---
k47 @k47@k4.cz -- Sep 08, 21:55 (0/0/1) obsahuje pavouky

Podívejte se na tohohle prďolu! https://k47.cz/2023/krizak-pruhovany.html

křižák pruhovaný
---
k47 @k47@k4.cz -- Sep 07, 18:30 (0/0/0)

ex-twitter je plný nácků
někdo nahlas řekne, že ex-twitter je plný nácků
'free speech absolutist' musk: tohle nemůžeš říkat, budu se soudit

https://en.wikipedia.org/wiki/Center_for_Countering_Digital_Hate#Twitter/X_Corp.
https://en.wikipedia.org/wiki/Anti-Defamation_League#2020s

však víte, miliardářům náckové vadí míň než o pár $$$ menší zisky

(nejlší sumarizaci socnetu s oligarchou u kormidla poskytl Toothpaste for dinner: https://www.toothpastefordinner.com/index.php?date=090423 )

---
k47 @k47@k4.cz -- Sep 02, 14:50 (0/0/0)

Při brouzdání zdrojáky linuxu jsem zjistil, že systém eviduje, kolik dat určitý proces zapsal nebo přečetl z disku.

cat /proc/`pgrep firefox`/io

write_bytes udává počet bajtů skutečně přenesených na disk.

https://elixir.bootlin.com/linux/latest/source/include/linux/task_io_accounting.h#L29

Firefox za 46 a půl hodiny zapsal 5.6 GB. Tímhle tempem zapíše 1TB za rok. Moje SSD má životnost udávanou na 160 TB, takže do roku 2183 jsem v klidu.

---
k47 @k47@k4.cz -- Aug 27, 22:08 (0/0/0)

tohle je síla io_uring: předtím se dotazy (v lepším případě) pohybovaly někde kolem 6 ms, s io_uring to spadlo na 2ms s jen minimálním rozptylem

graf latence operací, na jedné straně, která reprezentuje použití seek/read syscallů, ukazuje pomalé časy kolem 6 ms, na druhé, kde je nahradilo io_uring, časy konzistentně spadly na 2 ms
---
k47 @k47@k4.cz -- Aug 20, 13:59 (0/0/0)

pro připomenutí, že ex-twitter řídí idiot, co na pracuje plný úvazek jako klaun a je stejně náladový jako batole, co nemělo odpoledního šlofíčka: musk rozhodl, že přesměrování na weby, které se mu osobně nelíbí, bude čekat až 5 extra vteřin. teď plánuje zrušit funkci blokování uživatelů, protože rozhodování, co tady uvidím a jaký dojem soc-netění zanechá nenáleží mě, ale miliardářovi s egem velikosti středně velké planety. detail, že muskův účet je jeden z nejblokovanějších v tom jistě nehraje žádnou roli. stejně jako muskova dobře dokumentovaná historie rozhodnutí z nichž osobně benefituje, i když se je neohrabaně & velice průhledně snaží maskovat za něco většího, že obhajuje jakési morální principy.

v mysli klauna-idota ex-twitter (který mimochodem s ním u kormidla ztrácel na hodnotě 1500 dolarů každou vteřinu po dobu 6 měsíců) představuje bojiště obrovských & zásadních ideí, které spolu svádí nikdy nekončící zápas o Pravdu, Svobodu a Spravedlnost, i když většina interakcí je fádní a triviální. Chci zjistit, co je nového a bavit se s lidmi. Rozhodně u toho nechci poslouchat kydy kdejakého nácka a konzervativního přizdisráče. problém je jen v tom, že miliardářům náckové a kápéčka zas tak nevadí a proto nemůžou zkazit život, ani plebsu

---
Show older