O kterých blocích se bavíme? Když jsem se to před lety snažil pochopit, narazil jsem na rozdílné velikosti bloků pro zápis, mazání a ještě pro něco (čtení?). Navíc ne vždy to jsou mocniny dvou, protože s TLC jsme na třech bitech na buňku. Tehdy jsem naznal, že asi stejně se to spoléhá na nějaké mechanismy controlleru, který dělá wear leveling apod., a že pokud s tím nechci strávit kdoví kolik času, tak defaultní nastavení asi nebude tak špatná volba.
A jinak si matně vzpomínám, že někde v nastavení svého SSD (Samsung 990 Pro) jsem viděl, že na nějaké úrovni používá 512B bloky a ideální by bylo přepnout na 4K bloky. Dostal bych tím nějaké procento výkonu navíc, ale vyžádalo by si to formát SSD, a nechtělo se mi do toho.
Přesně jak bylo zmíněno v předchozím postu. Podle mě tak trochu motáte velikost erase bloku na SSD (řádově megabajty), velikost stránky v SSD a pak velikost logického sektoru, který bývá typicky 512B nebo 4K (8k a 16k zřídkakdy). To je pak velkost, co používá bloková vrstva při čtení nebo zápisu do disku.
Když si spustíte 'lsblk -D' tak vám to vypíše tuhle hodnotu u všech disků v systému (stejné ioctl pak podle mě používá i bcachefs, když vytváří nový fs)
Některé disky tu velikost logického sektoru umí měnit, např. mezi 512, 4096, 8192 B. Ale zas jak bylo zmíněno, je to nutně destruktivní operace, protože se musí vytvořit nová FTL mapa v disku.
Ve většině případů nemá smysl tuhle hodnotu nastavit větší než velikost paměťové stránky v systému.
Na x86 je to 4096 B (getconf PAGE_SIZE). Poměrně dlouho celá VFS vrstva i filesystémy nepočítaly s tím, že by mohla být větší velikost bloku u filesystému než stránky.
Je to docela boj, protože bylo v jádře poměrně spousta míst, kde se to muselo upravit. Viz. hezké povídání o dlouhé snaze a postupných krocích tohle omezení obejít.
https://kernelnewbies.org/KernelProjects/large-block-size
V jádře 6.12 je první verze XFS, která podporuje větší velikost bloku (až do 64k) než velikost pamětové stránky.
Něco předtím probíhalo i u F2FS, kdy to umožňovalo použít 16k blok na platformách, kde to sedělo s velikostí stránky (třeba ARM), ale to jsem netestoval.
Takže ne, 1 MB rozhodně není velikost, co byste chtěl nebo mohl nastavit jako blok filesystému. Maximálně si můžete pohrát s nějakým zarovnáváním interních struktur na hranice erase bloku nebo stránky. Tzn. použití stripe/stride u ext4, sunit/swidth u XFS jako u RAIDu, ale i to je poměrně diskutabilní, je tam spousty faktorů a musí se to vždycky individuálně ozkoušet.
-D, --discard
Print information about the discarding capabilities (TRIM, UNMAP) for each device.
Jste si jistý že to ukazuje potom správně? Myslím tím zrovna Advanced format.
Viz tohle SSD.
výstup smartctl
Sector Sizes: 512 bytes logical, 4096 bytes physical
lsblk -D
sda 0 4K
Tak ano. Tak ten výstup z lsblk je dobře. jen jsem přemýšlel přes příspěvek.
13. 5. 2025, 10:26 editováno autorem komentáře