Tak a dost, rád bych předhodil jiné téma.
Jak je možné, že pokud nainstaluji Linux (konr. SuSE 8.1) na počítač s 256MB paměti, tak počítač evidentně swapuje a TOP vykazuje, že mu zbývá posledních 5MB paměti (hned po restartu do GNOME) a když nainstaluju Windows 2000, tak si systém vezme 70MB paměti (po restartu) a počítač evidentně neswapuje.
Může mi někdo říct, jak nejsnadněji ušetřit v Linuxu paměť, jaké máte s tím zkušenosti a jak zkrátka na to.
A prosím žádné "init 3" a podobně. Okna potřebuji, dělám v Javě.
Díky za informace a rady
GNOME a java - prestante sa čudovať.
Ale inak. To, že TOP ukazuje voľných 5MB RAM ešte nič neznamená. Treba si skontrolovať položky buffers a cached. Tak sú alokované miesta pre subory, ktoré boli čitané, alebo zapisované. Toto miesto môže byť kedykoľvek veľmi rýchlo uvolnené.
Skúste použiť 'free'. Ten vám aj prepočíta čo všetko môže byť rýchlo uvolnené (riadok -/+ buffers/cache). Systém je navrhnutý tak, že v niektorých prípadoch začne radšej odkladať na swap akoby mal uvolniť cache, keď si "myslí", že je to vhodnejšie. Ak nechcete aby swapoval, tak mu swap jednoducho zrušte.
Potom je rozumné si skontrolovať, čo všetko vám beží a nepoužívané veci jednoducho vypnúť.
Jeste jednou. K cemu je vam volna RAM? Chcete ji snad prodat? RAM je v pocitaci obecne od toho, aby se vyuzivala, ne aby tam lezela. Proto ji Linux vyuziva. Kdyz ji mate hodne volne, vyuzije ji na cache a podobne. Budte pro to rad a ne mrzutej. Kamradi na windows s volnym pulgigem RAM vam muzou pravem zavidet.
To je úplně jednoduché. Jádro Linuxu je psáno jako multiuživatelský serverový OS Unixového typu a tam je žádoucí, aby jednou načtená data zůstávali v paměti, protože v paměti se k nim další, nebo stejná aplikace dostane rychleji. Linuxové jádro nakládá s pamětí nesrovnatelně agresivnějším způsobem než jiné nejmenované OS.
To znamená, že těsně po startu se všechna jednou načtená data (i kód programů) uloží do tzv. cache a teprve až je potřeba paměť obsadit programy a jejich daty se tato paměť uvolňuje. To znamená, že než vám nastartují GNOME se všema těma serepetičkama je cache obsazena veškerá paměť. Teprve po určité době práce se systém ustálí a pořádně rozjede, protože v paměti bude mít jen to co potřebuje pro rychlou a efektivní práci a zbytek nechá na disku (včeně nepoužívaných stránek kódu a dat aplikací ve swapu).
Divil by jste se jak klidně na XTS může pracovat zároveň 5 lidí v GNOME v OO.o a Mozile na jedné P750MHz s 1GB RAM při uptime momentálně 17 dnů.
Standartně skompilovaná jádra počítají s v Unixech obvyklými programy, ktereé mají krátký, stručný a efektivní kód, který pracuje s velkými objemy dat, proto bývá standardně skompilován tak, že na cache ponechává polovinu paměti, což při desktopové práci není potřeba, protože ty klikoidní aplikace obsahují spoustu nabubřelého kódu a data, které načítají z disku a spracovávají nejsou téměř žádná. Nemluvě o rozdělení kusů kódu do stránek při objektovém programování. Proto vám doporučuji, když Linux nastartujete, posuzujte jeho chování po určité době práce, nebo ho vůbec nevypínejte, nebo si překompilujte jádro s jiným nastavením rozdělování paměti (což není vůbec triviální záležitost).
Obvzlášť při práci s javou bych vám doporučil si zjistit něco o tom jak pracuje vámi používaná Java virtual machine a jakým způsobem nakládá s pamětí. I pro ni totiž platí, že pracuje dost podobně jako Linuxové jádro a části kódu, který se provádí poprvé se provádí strašně pomalu, ale když už se spouští podruhé, tak je java tak rychlá, až to bere dech. Pokud v Javě programujete interaktivní desktopové aplikace tak pro vás bude Java vždycky pomalá, pokud budete programovat servlety, tak budete rychlostí nadšen a s Linuxem je to stejné. Pokud někdo tvrdí, že Linux není vhodný na desktop, tak tohle je podle mého soudu jeden z mála skutečně relevantních technických důvodů.
Určitě máš kus pravdy. Ale já bych viděl někde i někde jinde. Linux je oproti Woknům mnohem rozmanitější v knihovnách. Především různé toolkity pro GUI. Často to dopadne tak, že má člověk spuštěné aplikace pod Gtk, Qt, Tk/Tcl a kýho čerta. Jsou to sice sdílené knihovny, ono se to naskládá. Pod wokny si každá aplikace nahraje implicitní toolkit, co je v jádru plus msvcrt, mfc nebo vcl a je.
Prostě linux je na desktopu subjektivně o něco pomalejší.
A nevím, jestli Linux kernel nakládá s pamětí až tak agresivněji. Moje WinNT 5 (w2k) taky cachují celou volnou pamětí. Nebo ne?
To s těma knihovnama máte pravdu. Stačí aby jste měl jednu aplikaci v Tk, druhou v GTK a třetí v Qt a používat je zároveň a je zaděláno. Všechny tři knihovny se nahrajou do paměti a všechny tři jsou využívané a proto se nemůžou odswapovat. To pak je proti monolitickým systémům Linux v nevýhodě. Proto taky většinou chci mít maximum věci konzoloidní a nebo mít dost paměti aby mě ty knihovny netrápily.
Souhlas, v jednouživatelském desktopovém prostředí je Linux pomalejší, než wokna no a ty se nechytají na AtheOS, BeOS, nebo QNX ;-)
Jestli W2k už konečně umí pracovat s pamětí aspoň skoro tak dobře jako Linux netuším, ale po těch letech, co je to v Linuxu by se tomu mohli aspoň přiblížit. To netuším, jestli už to tam konečně je, ale věřím, že už to mohli zvládnout.