Portál AbcLinuxu, 30. dubna 2025 14:06
Update: Vzhledem k tomu, ze podle komentaru nekteri evidentne nepochopili, co jsem se snazil rict (hlavne test), je dole jeste zjednodusena verze c.2.
Update c.2: Jeste jedna vec asi neni uplne jasna. Tohle neni jen o bootovani. Z disku se cte i pri spousteni aplikaci a nebo proste i pri normalnim pouzivani (proc asi treba "svn status" nebo "find / -name cokoliv" trvaji tak dlouho?).
Ach jaj, root.cz asi uz sel definitivne do kyticek. Po katastrofach jako komiks ted i prebira clanky, ktere i ve sve puvodni verzi byly v komentarich pekne zkritizovane. Linux nepotrebuje defragmentaci, protoze ma lepsi filesystem nez takova prehistoricka vec jako FAT, bla bla bla. Tolikrat opakovany nesmysl. No, kdyz jde prekladat takovehle clanky, urcite jde prekladat i reakce, se svolenim autora nebude problem, ja si to klidne povolim.
Pokud tedy Linux ma tak genialni souborove systemy, tak proc Windows startuji rychleji nez Linux a proc druhy start KDE je nekolikanasobne rychlejsi? Navic, pravda je takova, ze uz jen mluvit o defragmentaci je nesmysl. Defragmentace je o tom, ze jednotlive soubory budou ulozeny na disku vcelku a ne rozhazene po kouscich. Tzn. ze precteni jednoho souboru bude rychle a o cteni vice souboru se vubec nemluvi. Tak a ted, kdo z vas zna Linuxovou aplikaci, ktera pri startu cte jeden soubor? Ja ne. Soucasne aplikace jich ctou minimalne desitky, casto klidne i pres sto. Jenze o tom defragmentace prece vubec neni.
Technicka vsuvka: Moderni disky prectou klidne treba 50MB za sekundu v blokovem cteni, tzn. ze hlavicky najednou na prislusnou oblast disku a pak v kuse ctou. Jenze pred kazdym ctenim se musi nejdriv hlavicky na tu oblast nastavit a tahle pristupova doba je dneska tak prumerne zhruba kolem 10ms (a tuhle nebo lepsi hodnotu daji jen opravdu opravdu dobre disky). Aplikace matematiky prvniho stupne zakladni skoly pak pravi, ze za sekundu to jde tedy provest 100-krat. Hodne zjednodusene receno, plus minus autobus, za sekundu se precte maximalne 100 souboru (coz je nadhodnocene i podhodnocene cislo, jak se to vezme).
Takze, ted kvizova otazka: Jestli aplikace pri startu potrebuje sahnout na 100 souboru, povetsinou relativne malych, jak dlouho ji to bude trvat a k cemu ji bude defragmentovany disk?
Defragmentace souboru (jednotne cislo) je o nicem. Melo by se mluvit o defragmentaci souboru (mnozne cislo ... zatracene chybejici hacky a carky :) ). Jestli aplikace ctouci 100 souboru ma startovat rychle, musi system souvisejici soubory umistnit za sebou a cist je dohromady. Obrazky v puvodnim clanku, ktery radostne oznamuje, ze soubory se rozhazuji po celem disku, aby nebyly fragmentovane, jasne ukazuje, jaka je sance neceho takoveho. A Linux kernel, co vim, se stejne necim jako velke nacitani dohromady neobtezuje, takze je to vsechno jen na internich cache primo v harddisku, ktere jsou obvykle malinkate. Na blizici se SUSE Labs konferenci se chystam si o tomhle tematu pekne popovidat s kernelovymi kolegy a asi ze me nebudou mit radost.
A jiste, asi by slo, aby aplikace cetly souboru min, jenze, nejake cist prece musi a navic, proc potom je moznost si data na disku pekne rozdelit do adresaru a souboru, kdyz by se to stejne nemelo delat? (Samozrejme, i tak, stejne na to budeme muset v KDE zkusit udelat nejaky workaround, jako u spousty dalsich veci.)
A pokud nekdo chce jednoduchy test, staci postupovat asi takhle:
Verze c.2, s vysvetlivkami a bez zbytecne omacky:
Root.cz je na zacatku zminovany proto, protoze to tam vyslo. Jinak je mi to celkem fuk, nadaval bych, i kdyby to vyslo treba v Rudem Pravu.
Puvodni clanek tvrdi, ze neni zadny nastroj pro defragmentaci disku pro Linux, protoze neni treba. Tvrdi to na zaklade toho, ze Linux se snazi jednotlive soubory nefragmentovat, takze cteni jednotlivych souboru je v poradku. Zasadni problem je, ze totalne ignoruje fakt, ze prakticky kazda aplikace cte desitky nebo i stovky souboru. Algoritmy popsane v clanku sice minimalizuji vznik fragmentace jednotlivych souboru, ale nedelaji nic proti fragmentaci celeho souboroveho systemu, kdy jsou souvisejici veci rozhazene vsude mozne (clanek dokonce konstatuje, ze "Linux rozptyluje soubory po celém disku"). Z hlediska programu, ktere musi cist mnoho souboru, je tedy disk stejne fragmentovany, jen na jine urovni.
Tak, ted ten tajemny test:
A v neposledni rade, jako dalsi potvrzeni toho, ze problem je realny, muze poslouzit (jak zmineno v jednom komentari) fcache, experimentalni patch, ktery napsal Jens Axboe a ktery pracuje tak, ze veskera potrebna data umistni linearne do specialni diskove oblasti, odkud se pri bootu ctou linearne a tedy znatelne rychleji.
Jeste porad neco, co jsem puvodne nenapsal dost srozumitelne?
Tiskni
Sdílej:
Kazdy dneska rekne, ze linux prece zadny nastroj pro defragmentaci nepotrebuje, … Jenze evidentne nejaky takovy nastroj by se dost hodil (at se mu rika, jak se mu rika…Defragmentace ve světe počítačů znamená umístění souborů tak, aby jejich obsah byl ve filsystému pokud možno souvislý a aby byl souvislý prostor volného místa. Nepřipadá mi šťastné nazývat nástrojem na defragmentaci ještě něco jiného, co se shodou okolností týká také disků a uspořádání dat.
A to prirovnani s pedaly docela pokulhava, auta a klaviry maji k sobe znatelne dale nez usporadani dat na disku a ... er, usporadani dat na disku.Defragmentace neznamená uspořádání dat na disku, ale uspořádání částí souborů na filesystému. Defragmentovat jde i filesystém, který je vytvořen nad VLM, RAID, je roztažen nebo dokonce "rozproužkován" přes několik disků; defragmentovat jde i filesystém, který je mountován přes loop, uložen na CD nebo na magnetické pásce. To o čem je blogspot je skutečně "uspořádání dat na disku", a to za účelem zrychlení bootování – je tedy nutné znát geometrii disku a její mapování a "rychlostní" charakteristiky disku. Mimochodem, ono urychlení by naopak nejspíš znamenalo fragmentaci souborů – bylo by potřeba umístit co nejvíce dat do malého počtu stop nad sebou na plotnách.
Defragmentace je o tom, ze jednotlive soubory budou ulozeny na disku vcelku a ne rozhazene po kouscich.To mi jako definice defragmentace = rychlý start operačního systému nepřipadá. Ostatně kdyby autor začal spot
Tento příspěvek bude o urychlení čtení souborů při bootování Linuxu. Pracovně si to nazvu defragmentací.tak tady tahle diskuze vůbec nevznikla, protože nebudu dobrovolně číst text, kde si autor vezme slovo s nějakým významem, a začne ho používat ve významu úplně jiném.
je to naivní představa, že by soubory šly seřadit na disku za sebou tak, aby vždy nebo v nezanedbatelné většině případů byly soubory, které se používají po sobě, byly také po sobě na disku.To není žádná naivní představa, ono to tak zařídit skutečně jde (i když samozřejmě ne na všechno, pouze na deterministické věci jako je boot systému a start desktopového prostředí, start některých programů, atp.). Viz fcache o které jsem se tu zmiňoval několikrát. Jestli vám nepřijde zrychlení bootu o několik desítek sekund jako důkaz, je to váš problém
Vola sa to Interleaving MS Windows optimalizuju ulozenie suborov potrebnych pre boot vzhladom na taketo chovanie a ziskavaju tym na rychlosti. V linuxe su si vsetky subory na disku rovne a takato optimalizacia sa nerobi.Pokud si vzpomínám, tak interleave byl hitem někdy v době okolo dosu 3.0 či 3.3. Od té doby pokročily diskové technologie poněkud v před. Pokud má disk cache větší než cylindr, tak je interleave IMHO zbytečný.
Nehledě na to, že interleaving byl parametr disku a ne souborového systému, takže mě nenapadá, jak by mohl ms
optimalizuju ulozenie suborov potrebnych pre boot. Leda že by blbli hlavy zákazníkům, nebo byli šamani. Ale tuším, co je pravděpodobnější.
Leda že by blbli hlavy zákazníkům, nebo byli šamani. Ale tuším, co je pravděpodobnější.Pokud vím, tak ani jedno z toho. Prostě soubory, se které se načítají při bootu a těsně po něm (je tam, tuším, nějaký časový limit), umístí souvisle na začátek disku. Takže jsou jednak souvislé, a za druhé na začátku (a tedy rychleji načítané). Není v tom žádná magie. Jestli dělají nějaký interleaving, ale opravdu netuším.
Není v tom žádná magie. Jestli dělají nějaký interleaving, ale opravdu netuším.Ale to jsem přece měl na mysli. Není v tom žádná magie, a ani podpora fs.
O.T. Svého času OS/2 přišel s načítáním všech systémových knihoven při startu OS. Dlouho to startovalo, ale pak byly všechny systémové knihovny dostupné v cache (nebo ve swapu ,který se díky nefragmentaci načítal rychleji). MS na to mělo spoustu keců typu "co je to za systém když tak pomalu startuje", až se v (tuším) Office 97 objevilo "Rychlé startování office" - kdo uhodne princip?
Tím jsem jen chtěl říct, že ne všechno je nutně takové, jak to vypadá.
Pokud si vzpomínám, tak interleave byl hitem někdy v době okolo dosu 3.0 či 3.3. Od té doby pokročily diskové technologie poněkud v před. Pokud má disk cache větší než cylindr, tak je interleave IMHO zbytečný.
Přesně tak. Interleaving se už nepoužívá asi tak stejně dlouho, jako si uživatelé neprovádějí low-level formát disků a neparkují je, tj. někdy tak od velikosti 40 MB (plus minus nějaké drobné). Navíc interleaving stejně neměl na potřebu resp. užitečnost defragmentace naprosto žádný vliv, protože filesystém pracoval s logickými čísly sektorů, ne s fyzickými (jinak by slučování sektorů do alokačních bloků (clusterů) nemělo absolutně žádný smysl). A ještě do třetice: poměrně dlouho už jsou všechny disky překládané už na úrovni jejich vlastní elektroniky, takže o tom, jak si odpovídají čísla sektorů, která používá software s jejich skutečným fyzickým umístěním na plotnách disku, můžeme nanejvýš tak planě spekulovat…
Zdá se mi, že taková věc prostě musí být příčinou různých problémů a nestability.No vidíš, není. Jediná aplikace, která se nesrovná se suspendem, je Kopete, které ohlásí chybu při komunikaci s Jabber serverem.
Co když mám IP adresu přidělovanou dynamicky a aplikace si z nějakého důvodu chce pamatovat, jakou IP mám.Program, který se nevyrovná s tím, že se změnila IP adresa stroje, na kterém běží, si zaslouží spadnout. Vždyť to se může stát i během normálního provozu, když se DHCP server rozhodne, že přidělí nějakou jinou. (Neměl by, ale může.)
Tak to by mi chýbalo. Relatívne často pátram po tom, či program skutočne našiel konfigurák či vstupný súbor tak, ako si predstavujem. ( ls -ltu
)
Update atime zbytečně zpomaluje přístup k disku...
Máš tohle změřené? Přiznám se, že noatime dávám taky všude, ale změny v rychlosti jsem si nevšiml - mnohem větší efekt má (u ext3) větší commit time.
Mam dojem, že už jenom počet řezů písma v tom dělá chaos, s komplet nainstalovaným Corelem mi to nabíhalo pomalejš.
Opravdu hezká ukázka demagogie. Tváříte se, že polemizujete s článkem, který se snaží tvrdit, že linuxové filesystémy nepotřebují za obvyklých okolností defragmentaci, protože vzniku fragmentace účinně předcházejí (ponechme teď stranou otázku, zda a do jaké míry je to pravda). Ale místo toho vlastně v celém příspěvku pouze vysvětlujete, proč podle vás (navíc v jedné konkrétní situaci) není důležité, zda je filesystém fragmentovaný nebo ne. Promiňte, ale postup, kdy "roznesete" článek tím, že rozcupujete na kousíčky tvrzení, které v něm vůbec nebylo, považuji za hodně nešťastný.
Nemluvě o tom, že módu nadávat na kvalitu jednoho serveru na druhém (nejste zdaleka jediný, kdo si stěžuje na kvalitu Roota na ABCLinuxu) také moc nechápu…
Promiňte, ale postup, kdy "roznesete" článek tím, že rozcupujete na kousíčky tvrzení, které v něm vůbec nebylo, považuji za hodně nešťastný.Ten postup popsal už pan K.Čapek v Dvanáctero figur zápasu perem čili příručka písmené polemiky - figura šestá - Imago "Například polemizuje se s něčím, co potíraný odpůrce nikdy neměl na mysli a nikdy v tom smyslu neřekl; dokazuje se mu, že je pitomec a že se mýlí, na jakýchsi tezích, které jsou opravdu pitomé a mylné, ale nejsou jeho." Je to velmi oblíbená metoda místních "diskutérů"
Prave diky one vyzdvihovane vlastnosti ext3fs budou ty soubory pohazene po disku a onen zatracovany FAT je bude mit pekne za sebou.Primo: Nejspíš je ani FAT nebude mít pěkně za sebou, protože ty soubory sotva vznikly těsně po sobě. Secundo: Seek na blízkou stopu není zase o tolik rychlejší než seek na vzdálenou. To podstatné je, že se vůbec nějaký seek musí udělat, a v tom je FATka úplně stejná jako kterýkoliv jiný FS.
Ad Primo: Budou za sebou, protoze je v tom poradi na partition nakopirujes.A ze které křišťálové koule to zrovna pro tento okamžik správné pořadí vyvěštím?
Lze se o to prit, ale to, ze fcache funguje je dukazem toho, ze takovou optimalizaci provadet lze.Že se dá něco málo uoptimalizovat, o to se nepřu, jen tvrdím, že je to nepodstatná úspora oproti tomu, co by se získalo optimalizováním na správném místě.
Bez tedy radeji poradit vyrobcum dister jak se delaji spravne boot sequence a take LL, jak ma efektivne startovat KDE.Kupodivu tohle už delší dobu dělám: dal jsem dohromady projekt SSS (náhrada rc-skriptů), zde jsem navrhoval paralelní otevírání souborů a tak dále. Zato od vás jsem moc konkrétních návrhů neviděl :)
Ale nesnaz se prosim rozporovat funkcni princip fcache.Snažně prosím, přečtěte si pořádně, co jsem psal. O funkčním principu fcache nepadlo ani slovo, naopak byla řeč o tom, že to, co fcache dělá, dělá dobře, ale že foukání do horké kaše není všechno.
Napsal jste, ze urceni sekvence pristupu k souborum je vesteni z kristalove koule. Fcache tedy funguje prestoze vesti z kristalove koule.Pokud vás zajímá pouze optimalizace bootování, tak funguje (nějak). Já se snažím vidět dál a optimalizovat celkově běh systému. Tam vám tak primitivní křišťálová koule nestačí.
Například by bylo dosti přímočaré, aby aplikace kernel místo o konkrétní soubor požádaly rovnou o množinu souborů, které budou potřebovat, a kernel je mohl natáhnout v optimálním pořadí.
Hmm, nemá tohle spíš řešit cache na řadiči / disku? - rozumné uspořádání pořadí čtení sektorů z disků, něco už je v NCQ.
FS ukládání dat optimalizuje (podle tvůrců) dostatečně, např. vhodným výberěm volných bloků.No a podle aplikačních programátorů (jakým je Luboš) ne
Hmm, nemá tohle spíš řešit cache na řadiči / disku? - rozumné uspořádání pořadí čtení sektorů z disků, něco už je v NCQ.Nemůže, protože nedokáže vyvěštit, jaká data aplikace bude potřebovat. Pokud aplikace čte soubory postupně, pak prostě kernelu/řadiči/disku/... nezbývá než nejdříve najít jeden soubor, až bude hotový a aplikace si řekne o další, tak najít druhý a tak dále. Na tom se těžko dá něco zrychlit, leda že by se systém pokoušel věštit, jaké requesty přijdou příště. Jenže to bude sotva něco jiného než ošklivý hack, který bude fungovat jen ve speciálních případech. Smysl tedy spíš dává naučit aplikace, aby jádru předaly více požadavků najednou a daly mu tak více prostoru k optimalizacím.
...ani nemůže?
Ještě jsem neviděl komp, který by nemohl běžet nonstop. Btw všechny moje kompy (dva doma + v práci), nonstop běží a nezaznamenal jsem žádný problém. Naopak bych řekl, že pro HW je to vhodnější.
Naopak bych řekl, že pro HW je to vhodnější.No po roku behu jedneho kompu s WD diskom hucal ako kosacka, ostatne PC co mali ten disk nebolo ani pocut, tak neviem ci to je vhodnejsie.
Nekdo ma pocitac v mistnosti kde spi a vadi mu i zapnute reproduktory a nemuze pri nich spat.. (pokud v tichu nic neslysite prilozte ucho az k reproduktoru, nekteri citlivejsi lide tento sum slysi i pres celou mistnost. Tolik k pocitacum co nemuzou bezet nonstopJeště jsem neviděl komp, který by nemohl běžet nonstop.
Vhodnejsi to urcite nebude, napriklad zivotnost harddisku se meri v hodinach, takze jestli bezi 16 hodin a 8 odpociva nebo bezi 24 je opravdu velky rozdil... Stejne tak ventilatory, jejich loziska maji taky omezenou zivotnost, a to nemluvim o spotrebe el. energie. A suspendu neverim, s mym pocitacem nefunguje ani v linuxu ani ve windows...Nikdo nemluví o tom, že ten počítač má fyzicky běžet pořád. Ale právě o tom suspendu. No a jestli nefunguje suspend, tak je správné řešení opravovat suspend, ne řešit, jak co nejrychleji bootovat. Ono při tom řešení rychlého bootování se postupně přijde na to, že se opakují stále stejné operace, které dávají stejné výsledky, a že by se hodilo ukládat i části RAM. Pak se zjistí, že po bootu do čistého window manageru musí člověk stejně spouštět programy a otevírat dokumenty, a že to je taky operace, která proběhla už po minulém bootu – a že by se tedy hodilo ukládat celou RAM i stav procesů. A ejhle, vymysleli jsme suspend…
a že by se tedy hodilo ukládat celou RAM i stav procesů.a uz zase mame to pc zapnute, a zase nam bzuci, sumi nebo co.. a tomu se a to spousta lidi nesnese, suspend je uzitecny na notebooku pro setreni energie, na destkopu taky, ale ne v mistnosti kde spi lidi..
suspend je uzitecny na notebooku pro setreni energie, na destkopu taky, ale ne v mistnosti kde spi lidi..
suspend-to-disk – celá RAM a stav jádra a procesorů a procesoru a všeho možného se uloží na disk a počítač se vypne, odpojí od proudu a harddisk si vymontujete a dáte pod polštářa že by se tedy hodilo ukládat celou RAM i stav procesů.a uz zase mame to pc zapnute
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.