TRIM a InterLeaving ... to je OXYMORON ... tak bud ty data smaze a pak je to zapis. Nebo tam ty data necha a zapise je jinam a pak se ale nemazou ....
Tedy max si muze disk nekde zapsat, tyhle data uz jsou neplatna, nech je tam ... a pak je nekdy prepise ... v tom pripade by ale nefungovala metoda jak otestovat fce trimu ;-))
Ta metoda nebude fungovat at tak nebo tak. Ne kazdy disk pri trimu data "nuluje", nektere disky vraceji stejna data, jine muzou vracet nejaky garbage, nebo stabilni hodnoty (ale nemusi to byt zrovna nula).
To zda disk data opravdu "nuluje" je mozne zjistit z:
/sys/block/<device>/queue/discard_zeroes_data
ale ani tak neni zaruceno ze to opravdu udela. Jednak existuje jeste /sys/block/<device>/queue/discard_granularity a jednak SSD disky jsou jeste porad neskutecne kramy, ktere nedelaji to co maji.
A ja asi nemam chut, silu ani cas komentovat vsechny nepravdy a polopravdy v podobnych clancich :)
A taky, pouzivat mount option "discard" mi neprijde jako idealni napad. U vetsini disku co jsem videl je patrny obrovsky ubytek vykonu (viz. http://people.redhat.com/lczerner/discard/ext4_discard.html) zvlaste kdyz to neni uplne nutne (viz. predhozi odkaz) a obzvlastne kdyz jiz mame v jadre FITRIM (ext4,ext3,xfs,btrfs?) a v util-linux-ng fstrim, ktery je mozne nechat spoustet z cronu ...
Sam jste prece psal ze po nekolika mesicich pouzivani jste si ubytku vykonu "nevsiml" a to ja pokladam za subjektivni pocit, ktery je ovsem irelevantni. Pokud mate nejaka cisla tak sem s nimi. Pointa byla v tom, ze to co se vam "zda" nemusi byt tak uplne realita. Urcite jsem to nemyslel jako urazku.
Zdá se, že o věci něco víte :-) Nepatrně mi vrtá hlavou jedna otázka, v souvislosti s "nulováním": točivé disky ve factory clean stavu jsou "popsané samými nulami". Kdežto smazaná flashka je "samé 0xFF", tj. samé binární jedničky. Zápis znamená, že se některé jedničky přepíšou na nulu (zpátky na jedničku už to pak nejde, leda novým smazáním celého erase blocku). Aspoň tahle logika funguje u NOR flashek (BIOS apod.). Nevím jak u NAND (interně je to stejně, ale nevím jak na vnějším rozhraní). Resp. by mě zajímalo, jak se chová ATA disk, jak ukáže smazaný erase block - jestli surové samé jedničky, nebo jestli to letmo invertuje na samé nuly... Na jedné CF kartě, která realokovala nultý erase block, byly vidět samé jedničky.
To je neco co bohuzel nejsem schopen posoudit, nejsem clovek pres hardware :). Kazdopadne standard mluvi jasne, bud po discardu vraci same nuly, nebo pevne definovanou hodnotu, nebo puvodni hodnotu coz ale predstavuje bezpecnostni riziko. Dalsi moznost je vrazeni nejakych garbage hodnot, ale to si nejsem jist zda je standardizovane chovani. To co dela firmware bohuzel nevim a ani vedet nemuzu protoze to vetsinou spada do know-how vyrobcu :)
At tak nebo tak, idealni stav je pokud po trimu vraci same nuly, proto je to taky neco co linux kernel exportuje do user space.
Podle mě si to v této rovině zase tolik neprotiřečí :-)
Když TRIM označí konkrétní erase block jako volný, tak si ho SSDčko může rovnou smazat, nebo cinknout pro pozdější smazání, aby se v konečném důsledku dostal do interního "poolu volných erase blocků", do kterých lze přímo zapisovat bez čekání na smazání - takže následující zápis proběhne svižně (nemusí čekat na mazání, možná nemusí ani přednačítat erase block, pokud je mapování sektorů na erase bloky jemnější). Finta je v tom, udržovat si co největší pool volných předsmazaných erase bloků.
Prakticky, pokud jsem to správně pochopil, je problém v tom *kdy* přesně provést ten výmaz erase bloku, protože mazací operace je každopádně docela časově náročná. SSDčka, která to provádí *hned* v rámci vyřizování příkazu TRIM, typicky zaznamenávají díky příkazu TRIM výrazný úbytek průchodnosti (nad rámec vlivu flushování NCQ fronty). A pokud SSDčko provádí mazání vyTRIMovaných erase bloků "až později když je klid", tak pokud do toho přijde třeba i jenom čtecí transakce na dotyčný kanál (čip?) NAND flash, může to znamenat citelné zdržení - možná je to u čtení dokonce subjektivně znatelnější než u zápisu (write-back cache leccos skryje). To je cena za rychlý zápis nebo "trvale mladé SSDčko".