Hlavní navigace

Názor ke zprávičce Microsoft vytvořil stabilizátor zrychlených videí od Lael Ophir - Ad výstup z enkodéru videa, z multiplexeru, ze...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 15. 8. 2014 20:30

    Lael Ophir (neregistrovaný) ---.145.broadband14.iol.cz

    Ad výstup z enkodéru videa, z multiplexeru, ze síťového proudu nebo i z kompresního algoritmu (OOXML) nemá bloky o velikosti několika MB - pokud jsou bloky menší, je předalokace pomalejší. Enkodér videa by měl na začátku odhadnout velikost souboru, vydělit ji řekněme čtyřmi a změnit velikost souboru, protože to pomůže alokátoru. Kopírování souboru z UNC (tedy přes redirector) používá velké bloky, takže tam problém nehrozí.

    Ad pokud tomu FS řeknete, že bude mít soubor tolik a tolik dat, tak je dokáže naalokovat nefragmentované - ne nutně, ale má k tomu lepší podmínky, protože může rovnou vybrat dostatečně velké souvislé volné místo. Pokud naopak budete zapisovat 10GB soubor (a pokud váš FS umí soubory nad 2GB :)) stylem "1kB, a ještě 1kB, a ještě 1kB...", tak alokátor neví jak bude soubor ve finále velký, a bude daleko víc fragmentovat.

    Ad je to vidět z obrazu disku defragmentačních utilit - kde to vidíte na cca 600 indikátorech na celý disk, tj. s úžasnou cca 1GB přesností. Jo, to je jasný finální důkaz, že NTFS zapisuje soubory bezprostředně za sebe, tedy někdy, a plus minus 1GB :D. Zkuste si to API a otestujte si, kam NTFS skutečně ty soubory ukládá.

    Ad Proč bych si o tom měl nechat zdát? Vidím kód, který importuje nějaké funkce z kernel32.dll - jedná se dokumentované defragmentační API, ke kterému máte i návod k použití. Funguje na přimountovaném FS, a nad různými FS (nevím jak to funguje nad Ext2Fsd).
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa363911(v=vs.85).aspx

    Ad pokud máte soubor otevřený pro zápis, asi nebude zrovna ideální strčit další soubor od jiné aplikace hned za něj - na tom se jistě shodneme. Ale jak daleko ho umístit? Když ho umístíte příliš daleko, zbytečně zvýšíte fragmentaci volného místa, a dojedete na to až se FS trochu zaplní. Když ho umístíte moc blízko, zvýšíte pravděpodobnost, že ten předcházející otevřený soubor budete fragmentovat.

    Ad pohromadě máte ta metadata, která se pravděpodobně budou používat najednou - budoucí použití těch metadat dost těžko poznáte. Každopádně když držíte metadata pokud možno pohromadě, ušetříte si spoustu seekování.

    Ad třeba těmi měřeními fragmentace, které jsme zde uvedli - jenže to byste musel mít srovnatelná čísla, a FS použitý srovnatelným způsobem. Nesrovnatelná čísla z odlišně používaných FS mají nulovou vypovídací hodnotu. FYI tohle mi vypisuje defrag C: /A /V:
    ...
    Fragmentation:
    Total fragmented space = 2%
    Average fragments per file = 1.05
    ...
    Free space:
    Free space count = 31016
    Average free space size = 8.26 MB
    Largest free space size = 207.06 GB

    Master File Table (MFT):
    MFT size = 501.50 MB
    MFT record count = 513535
    MFT usage = 100%
    Total MFT fragments = 3
    Jde o SSD, takže na něm defrag nikdy neběžel.

    Ad v Linuxové konzoli funguje copy&paste či drag&drop i bez nějakého nastavování - ve Windows funguje drag&drop. V cmd.exe a powershellu to hodí do konzole jméno přetahovaného souboru, v aplikaci to co autor aplikace zamýšlel (upřímně - většinou nic moc, protože konzolové aplikace ve Windows jsou většinou prostě řádkové, na UI máme GUI). Copy&paste by default není zapnuté, protože stačí když si uživatel klikne do okna, a snadno tam vloží třeba 1MB textu z clipboardu, který se pak snadno provede jako příkazy. Proto se to zapíná v nastavení pro pokročilé :), resp. ve vlastnostech okna.
    Ad terminálová aplikace funguje i tam, kde žádné GUI není - jo, ještě byste měli držet podporu děrných štítků pro případ, že není ani ten terminál ;)
    Ad hodně štěstí při spouštění aplikace používající SetConsoleMode v DOSu - aplikace pro DOS jsou pouštěné pod konzolí vytvořenou cmd.exe, a SetConsoleMode si nastavujete ve vlastnostech okna. Vám pro změnu přeji hodně štěstí při spouštění 20+ let konzolových aplikací na dnešním Linuxu, nemluvě o používání myši v nich :)
    Ad GUI nástroje v UNIXech byly tragické, protože nebyly potřeba - jistě, protože ty hrozny jsou stejně kyselé :)
    Ad ve Windows byly tragické a navíc jste neměl moc na výběr - nemyslím. Koukněte se na XTree for Windows (GUI), ZTreeWin (klon XTree na Win32 konzoli), Norton File Manager (GUI), Far Manager (klon Nortonu na Win32 konzoli) atd. Plus byla k dispozici samozřejmě spousta aplikací pro DOS, některé se dokonce kvůli Win95 naučily dlouhé názvy.