Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Předně bych se chtěl omluvit za trochu bulvární nadpis. Řeč nebude ani tak o kynutí jádra nýbrž o postupném bobtnání samotných aplikací.
Kde je jádro pudla?
Víte co popřát programátorovi píšicímu v jazyce bez garbage collectoru na dobrou noc aby měl zaručeně noční můru? Ať se mu zdá o memory leaku. Je to jeden z problémů, který se v rozsáhlém projektu velmi obtížně ladí. A to i přes použití nástrojů jako efence. Podle průzkumu v mém okolí je to nejčastější pčípad aplikace Ostrichova algoritmu. Zřejmě tomu bude podobně i jinde.
Trocha teorie
Opravdu jen trošku, ikdyž toto téma by si zasloužilo několik článků. Snad někdy příště. Předně je třeba uvědomit si, že všechny běřně používané utility čerpající z /proc/PID/statm a status, tedy v podstatě vše od ps,top až po gtop a ksysguard ukazují nepřesné až irelevantní údaje. Slíbil jsem, že do podrobnosti se pouštět nebudu takže jen zkratkovitě.
Hodnota VIRT z top nebo VSZ z ps nevypovída v praxi vůbec o ničem. Jedná se pouze o velikost virtuálního adresního prostoru namapovaného daným procesem. Stačí, že aplikace provede mmap velkého souboru, nebo naalokuje velkou oblast paměti, na kterou po dobu běhu programu nešáhne (vzhledem k tomu, jak linux přiděluje paměť je to "legální") a hodnota ihned vyletí do astrálních rozměrů.
RSS má o něco větší vypovídací hodnotu. Hlavním problémem je to, že se zde nezapočítává odsvapovaná paměť a naopak sdílená paměť se započítává do všech procesů. První problém lze snadno vyřešit: swapoff -a. Druhý je mnohem náročnější a současně ho nejde zanedbat. Takto nasdílená paměť nezřídka tvoří podstatnou část RSS zejména gnome a KDE aplikací. Nemůžeme ani odečíst od RSS hodnotu SHARED. tím bychom se dopustili opačné chyby. Aplikace používající jako jediná velkou knihovnu (které se stejně objeví v SHARED) by tímto byla "ošizená" o tuto paměť. Je potřeba provést analýzu namapované pamšti blok po bloku na základě /proc/PID/smaps, jak to delá např prelovský skript smem. Ještě lepsí je provést per-page analýzu, což dělá exmap s pomocí modulu zavedeného do jádra. Následně můžeme sdílenou pamět spravedlivým dílem rozpořítat mezi všechny aplikace, které ji používají.
A nakonec problém nejzákeřnější. Co když nejaká aplikace klade kukaččí vejce do jiné? Zní to sice divně ale v linuxu je to běžné. Aplikace s GUI např. využívají zdroje Xserveru. V tomto případě je řešením utilitka xrestop ale pro každý takový případ musí být jiná utilita, žádné obecné řešení existovat nemůže. Pojďme dále. Co když aplikace používá pro rendering textu X a přinutí ho tím nahrát příslušný font a vyrenderovat příslušné řezy do paměti. Téměř nezměřitelná věc. Co když aplikace používá jako datový backend třeba mysql (mythtv, amarok takto umí pracovat, ...). Má se v této situaci připočítat zdroje obsazene přes mysql k tomu programu? Rozpočítat mezi programy? Co když kvůli jednomu mysql naalokuje více paměti než kvůli druhému. To se prakticky nedá změřit.
Doufám, že jsem alespoň nastínil problematiku, a až příště spustíte top nebo htop kvůli zjištění která aplikace to žere tolik paměti, budete vědět na co si dát pozor. Abych vás uklidnil- aplikace čerpající z /proc/meminfo a informující o volné paměti tedy free, top a nespočetná grafická udělátka jako gkrellm taktéž neukazují zcela korektní hodnoty... Ale to je zase na jiný článek.
Největší bumbrlíčci
Vyzbrojení jemným nástinem teorie se pojďme podívat na to, jak může vypadat obsazení paměti na desktopu. Jako pokusný králík poslouží můj počítač s 4GiB paměti.free total used free shared buffers cached Mem: 4050512 4023220 27292 0 6588 619052 -/+ buffers/cache: 3397580 652932 Swap: 0 0 0
swap je vypnutý abychom mohli čerpat ze sloupce RSS orientační hodnoty. Podíváme se ještě na výstup rfree abychom zíkali lepší přehled kolik zabírá slab.
rfree total used free slab buffers cached Mem: 4050512 4010180 40332 53968 4264 609656 -/+ buffers/cache: 3342292 677244 30976 Swap: 0 0 0
O utilitce rfree jesem psal v jiném blogpostu.
3.3GB "natvrdo" obsazené paměti, pouhých 600MB zůstalo na diskovou cache. Co tak nenažraného mam spuštěno ptáte se?
ps -eo pid,rss,comm,start_time --sort=-rss PID RSS COMMAND START 13290 989792 kaffeine Sep23 3028 945768 opera Sep20 31172 536832 beryl Sep12 5046 232972 emerald Sep06
Při takových velikostech nemusíme řešit sdílenou paměť. kaffeine 0.8.5 po 6 dnech používáni nabobtnalo na reálnou velikost téměř jednoho gigabajtu. Je schované v trayi, nic aktuálně nepřehrává a playlist je prázdný.
Opera 9.23 se statickou qt narostla za 9 dnů na 945MiB přičemž paměťová cache je nastavená na 64MB a otevřených je 9 tabů. Jedinym pluginem je flash player, který je ovšem out-of-process v operapluginwrapper.
Beryl, 17 dnů, 536MiB. Relativně experimentální věc. Kyne rychlostí 22MB/den. Dekorátor emerald taktéž. Kyne rychlostí 8MB/den.
Výše zmíněné programy (nebo jimi používané knihovny) leakují paměť. Postupně prostě rostou nedbaje na mnořství volné paměti. Není to tedy žádná cache. Navíc obrovské části této paměti podle smaps nejsou využívány. Po hibernaci zustanou ve svapu po věky věkoucí dokud aplikace nespadne.
ani Xorg 7.2 neudří moč
PID RSS COMMAND START 4850 317320 X Sep06
xrestop - Display: localhost:0 Monitoring 35 clients. XErrors: 0 Pixmaps: 75050K total, Other: 1382K total, All: 76433K total res-base Wins GCs Fnts Pxms Misc Pxm mem Other Total PID Identifier 2000000 2253 43 1 125 206 19908K 59K 19968K 5046 emerald 1200000 71 52 5 19685 12342 11358K 297K 11655K 4955 KDE Desktop 0600000 226 32 12 1255 510 7204K 30K 7234K 3028 Opera 1000000 26 1 1 18 9871 6653K 232K 6886K ? beryl 3000000 158 87 9 14065 9160 5739K 229K 5968K 5532 sim 3400000 488 120 5 1456 972 4512K 42K 4554K 10729 Amarok 2e00000 217 31 1 71 75 4309K 8K 4317K 7163 NastavenĂ programu 4c00000 317 91 5 11043 6928 3002K 176K 3179K 13290 Kaffeine Player ...
Zde vidíme kukaččí vejce s celkovou velikostí 75MB. Na celkové velikosti X se podílí nezanedbatelně. Současně je třeba říct, že X nezávisle na této hodnotě taktéž kyne. Podle smaps a podle velikosti která se nahraje po hibernaci soudím, že se využívá cca 120MB paměti (tato hodnota se s časem téměř nemění). Celkově odhaduji "kynutí" na cca 8M/den.
ostatní programy
PID RSS COMMAND START 27574 55476 python Sep15 10729 36916 amarokapp Sep21 4957 21428 kicker Sep06 7163 23896 audacious Sep15 5104 21020 konsole Sep06 5532 20424 sim Sep07python, ve kterém běží screenlety (všeho všudy dva) roste rychlostí 2M/den. Amarok při intenzivním používaní si vezme 10MB/den. Já ho ovšem pouštím málokdy. Std. KDE aplikace a sim nekynou neebo jen zanedbatelně. Podívejme se, jak je na tom konsole z hlediska sdílené paměti.
perl ./smem.pl 5104 VMSIZE: 98764 kb RSS: 21428 kb total 4712 kb shared 5660 kb private clean 11056 kb private dirty
Tato aplikace s 5 otevřenými taby a 1000 řádkovou historií zabírá 21428kB z čehož 4712kB se sdílí.
Co z toho?
Jak vidíte tak nemám spuštěno nic speciálního. Žádné vývojové prostředí. Žádná megaaplikace v javě. Neběží žádný virtuální stroj (dva běžně spuštěné jsem musel vypnout aby proběhl swapoff). Jediná odchylka oproti průměru je, že mam vše spuštěné dlouho. A to je pro odhalování leakujících programů nejlepší. Na autory opery a kaffeine je třeba bez pochyby tlačit aby tuto situaci řešili. Pokud máte velký swap tak je to skoro jedno jelikož leaknutá paměť se vetšinou odswapuje a už nepřekáží. Kdo ještě říká, že 4GiB RAM na desktopu jsou k ničemu?
Tiskni
Sdílej:
Často programy alokují paměť a neuvolňují ji, protože by ji mohly potřebovat.Ale co jim brání ji uvolnit a alokovat až zase bude potřeba?
Na tohle by mohlo být fajn nějak říct jádru něco jako: "Tenhle blok dat můžeš kdykoliv zahodit, ale pokud to uděláš, nastav tento flag."To tam je a jmenuje se to madvise(). Když se to zavolá s MADV_WILLNEED, říká to jádru, že ta paměť bude brzy potřeba. Naopak MADV_DONTNEED říká opak. Bohužel to ale AFAIK nefunguje podle očekávání - MADV_WILLNEED jen vynutí přednačtení ze swapu nebo souboru, ale nemění prioritu stránek při pozdějším odswapovávání.
glibc
. malloc(100M) -> sbrk(100M). malloc(1M) -> sbrk(1M). free(100M) -> NIC (vrátit původní brk nejde, protože uvolnovaná paměť není na konci). Novější malloc knihovny vůbec brk() nepoužívají, a velké bloky spravují přes mmap/munmap(), takže tento problém nehrozí. Trvalé postupné kynutí ale asi bude opravdu způsobeno leakováním samotné aplikace.
A nakonec problém nejzákeřnější. Co když nejaká aplikace klade kukaččí vejce do jiné? Zní to sice divně ale v linuxu je to běžné. Aplikace s GUI např. využívají zdroje Xserveru. V tomto případě je řešením utilitka xrestop ale pro každý takový případ musí být jiná utilita, žádné obecné řešení existovat nemůže.No můžu tu aplikaci ukončit. A budu mít k dispozici údaje od jednotlivých procesů před a po. Snad by z toho šlo taky něco vidět.