Autore, pořád mi to vrtá hlavou. Chyba v tomto případu bude odečítat spotřebu paměti z xmobaru.
Jako základ by bylo vhodné patřičně zveřejnit Vaši konfiguraci ~/.xmobarrc, bohužel ta zveřejněná v článku z 4. 9. 2014 je nefunkční.
Uvádíte:
, Run Memory ["-t","Mem: %"] 10
což nefunguje. Podle dokumentace argument --template / -t bere následující proměnné: total, free, buffer, cache, rest, used, usedratio, usedbar, usedvbar, usedipat, freeratio, freebar, freevbar, freeipat uzavřené z obou stran špičatými závorkami.
Vámi uváděná konfigurace žádné takové neobsahuje, tudíž je nefunkční.
Budu tedy spekulovat, že jste si vybral tisknout proměnnou <used> přestože máte v template přichystané znaménko procenta, které by nasvědčovalo použití <usedratio> které používat samostatně by bylo poněkud neohrabané, protože by byl nutný přepočet na MB. Takže <used>.
No a v tomto tkví jádro celého problému. Nemám chuť hledat, co přesně <used> vyjadřuje ale rozhodně to není ta spotřeba paměti, kterou nám běžně ukazuje např. htop, lxtask, gnome-system-monitor a jim podobné nástroje.
Když mi htop, lxtask a gnome-system-monitor ukazují aktuální celkovou spotřebu paměti 787 MB, xmobar ukazuje 1 002 MB. Tedy o více než 200 MB více.
Když jsem rok a půl používal Xmonad s xmobarem, měl jsem nakonfigurováno pouze <usedration>. Procenta pro orientaci mi stačily, přesné číslo na můj vkus příliš rozptyluje, takže jsem si této nesrovnalosti všiml až díky vašemu seriálu o dlaždicích tady na Rootu.
Takže problém odhalen. To Vás však autore neomlouvá z laxního přístupu k měření spotřeby paměti. I když s porovnáním spotřeby zároveň alibisticky uvádíte svoji metodu měření, 99% čtenářů nemůže tušit, že naměřená čísla nemůže porovnávat, protože nevyjadřují to samé. Příště tedy raději htop.
Přikládám ještě screenshot http://imgur.com/yWtlopy
Autor byl uz na tento blud opakovane upozornovan a ze opisuje cisla jejichz vyznamu zjevne vubec nerozumi. Misto aby se chytil za nos a omyl napravil, tak dal pokracuje v demonstraci sve nekompetentnosti. To uz hranici s ignoranstvim.
Memory plugin z xmobaru (pominu ze v clanku byla uvedena nefunkcni konfigurace) skutecnou spotrebu pameti procesu neumi a nikdy neumel a slouzi jen k hrubemu zobrazeni celkove obsazene + rezervovane pameti, tzn. vcetne virtualni o ktere autor evidentne netusi co znamena. Upozornoval jsem na to, ze timhle skutecnou spotrebu nelze merit a ze xmobar k tomu ucelu nabizi monitor TopMem, ale je to marny, je to marny …
Jen pro dokresleni, nainstaloval jsem nejaktualnejsi verzi subtle, awesome 3.5.5, xmonad 0.11 a xmobar 0.21 a uvadim realne obsazeni pameti (RSS, swap vypnuty) a take X (RSS, vliv alokace zdroju spustenym WM):Testovano s vychozi konfiguraci.
p.s. Pro příště: pokud mi u měření srovnatelných jevů vychází diametrálně odlišné číslo, s velkou pravděpodobností je někde chyba a začnu pátrat po příčině. To je ale elementární logika, na kterou stačí selský rozum.
Problém je asi s velikostí alokované virtuální paměti procesu. Já XMonad taky používám a top mi ukazuje VSZ přes 200 MB a RSS kolem 10 MB. Garbage collector haskellu zřejmě rezervuje víc paměti než je běžný u programů napsaných v cécčku s ruční správou haldy. Faktem je jak píše předřečník, že fyzicky obsazená paměť včetně swapu se plus mínus drží kolem těch 10 mega i když běží třeba měsíc v kuse.
To byste teda nemohl. Ten program by musel vypadat zhruba takto:
...
int main() {
if ( filetime("/etc/config.c") < filetime("/etc/config.o") ) {
system("gcc /etc/config.c -c -o /etc/config.o");
}
dlopen("/etc/config.o");
}
...
Pak by teprve binarka vyzadovala nainstalovane gcc. Stejne jako v pripade xmonadu. Konfigurace je od toho aby se dalo snadno upravit chovani programu. U programu jako je windowmanager je potreba menit konfiguraci casto, protoze clovek postupne upravuje navyky a pridava do konfigurace dalsi a dalsi vychytavky. (Ted mam na mysli opravdove windowmanagery, coz jsou vetsinou prave ty dlazdicove. Ty ostatni vetisnou nechaji spravu oken (ve smyslu velikosti, virtualnich ploch a toho ktere je na vrchu) na uzivateli. )
> Pak by teprve binarka vyzadovala nainstalovane gcc. Stejne jako v pripade xmonadu.
Jenže vtip je v tom, že binárka XMonadu nainstalované ghc nevyžaduje. Takže si myslím, že jsem použil správné přirovnání.
Navíc já jsem reagoval na úplně jinou věc. Autor totiž tvrdil, že XMonad je obrovský moloch pouze kvůli tomu, že je pro jeho kompilaci potřeba nějaký konkrétní překladač (který není nejmenší). Ta logika prostě nedává smysl. Navíc pokud vám stačí výchozí konfigurace, tak ten překladač nemusíte vůbec instalovat.
U mnou předvedeného programu je také potřeba gcc jen v případě změny konfigurace (ano, musel by být napsaný o trochy lépe, než jsem naznačil). A to co se snažím říct je, že použít winowmanager typu XMonad s defaultni konfiguraci je jako jezdit s Ferari z D5 na D1 skrz centrum Prahy (protoze prece pres centrum se dostanete vsude).