Měření životnosti NVMe disku

jjrsk

  • *****
  • 533
    • Zobrazit profil
Re:Měření životnosti NVMe disku
« Odpověď #30 kdy: 06. 08. 2024, 17:37:54 »
NVMe disky často lžou o velikosti svých sektorů - nejmenší zapisovatelné oblasti. Hlásí 512 B i když ve skutečnosti nejmenší data, které mohou zapsat jsou 4 KB nebo dokonce 8 KB....
Fakt? To ses hodne mimo ... uz roky sem nemel v ruce SSD ktere by melo blok mensi nez 64kB.

Dal, SSDcku je uplne jedno kolik dat zapise, to co pocita ... je POCET zapisu. TO je to oc tu bezi. Kazdy jeden libovolne maly zapis === je potreba zapsat CELY blok.

A tudiz, pokud SSD navenek tvrdi, ze jeden blok je 512B, pocita prave ten pocet bloku a pro ucely BFU jako ses ty to prevadi na GB. Navic to cislo je ciste orientacni = neznamena vubec nic.

ZFS (ani btrfs) NENASOBI mnoztvi zapisu. COW funguje tak, ze misto aby se prepsala existujici data, zapisou se do volneho mista === exaktne stejny jeden zapis. Pak se jen prislusny stary blok oznaci jako prazdny, coz je nejaka rezije navic, ale rozhodne ne nasobky. Vyrabi to samozrejme fragmentaci, coz je ale na SSD vicemene jedno, protoze SSD je fragmentovane z principu.

SSDčka jsou zrádná, QLC ti v serveru chcípá před očima. TLCčka jdou, ale pokud to není serverový disk, nemůžeš použít celou jeho kapacitu, ale vyhradit tak maximálně 80% a zbytek mu nechat volný.
Ale tomu SSDcku je uplne burt jestli ty bloky mas alokovany a volny nebo nealokovany a volny. Pouzije je tak i tak. Jen ty nemas pro pripad potreby cast kapacity. To je jediny ceho tim docilis.

Autoritativní zdroj ne, ale několik vysvětlení ano.
Předně, při zaplnění disku z >90% už není mnoho sektorů, na které se dá zapisovat a prakticky se potom přepisují pořád ty stejné, což likviduje části SSD disku velmi nerovnoměrně,...
Coz neni pravda, zjevne netusis jak to funguje. SSD i kdyz na nej bebudes zapisovat vubec, bude ve skutecnosti porat presunovat data ze? Proste proto, ze jinak zmizi. Takze jednou za cas veme blok, skopiruje ho jinam a ten puvodni oznaci jako volny. A dela to i prave z toho duvodu, aby se stale do stejnych bloku nezapisovalo.

Jinak receno, vsechny zapisy budou v prubehu casu rozlozeny prakticky idealne rovnomerne do vsech bloku SSD.

Problem zaplneneho SSD je uplne jinde. Spociva v tom, ze kdyz na nej posles zapis, nema moc volnych bloku, a bude muset velice pravdepodobne nejaky blok prepsat = skopirovat = cist a znova zapsat, coz samozrejme razantne zhorsi vykon.

TRIM open pouze a vyhradne ovlivnuje VYKON. Protoze kdyz SSD VI, ze je blok kompletne volny, tak VI, ze ho nemusi pripadne cist aby na nem zmenil jeden bajt jednoho souboru, coz bude delat, kdyz to nevi. Zapisovat bude tak jako tak do nejakeho jineho volneho bloku.


CPU

  • *****
  • 877
    • Zobrazit profil
    • E-mail
Re:Měření životnosti NVMe disku
« Odpověď #31 kdy: 06. 08. 2024, 17:40:58 »

Re:Měření životnosti NVMe disku
« Odpověď #32 kdy: 06. 08. 2024, 21:15:41 »

Fakt? To ses hodne mimo ... uz roky sem nemel v ruce SSD ktere by melo blok mensi nez 64kB.

Jak se to dá poznat? Většina lidí co se o tom na internetu vyjadřuje si myslí, že nejmenší zapisovatelná velikost je 4,8 nebo 16 KB. Výrobci to raději nezmiňují.

Dal, SSDcku je uplne jedno kolik dat zapise, to co pocita ... je POCET zapisu. TO je to oc tu bezi. Kazdy jeden libovolne maly zapis === je potreba zapsat CELY blok.

Ano. To ale znamená, že SSD lze snadno odrovnat databází, kde se hrozně často updatuje, vkládá a maže.

MyISAM má velikost bloku prý 8 KB,  Inodb 16 KB.  Pokud by se ale ve skutečnosti vždy zapsalo 64 KB nebo víc, je to neskutečné plýtvání. V případě MyIsam je plýtvání skoro desetinásobné.

Napadá mne že možná není až tak problém v tom ZFS, ale v tom, že ty disky na kterých testuji ZFS (nové VMNE disky) jsou o 8 let novější oproti těm starým SATA SSD diskům (řada Kingston DC600M Enterprise) a tak mají podstatně  větší bloky a tedy více se opotřebovávají.  Je možné, že dnešní SSD disky mají  třeba pětinásobně větší bloky než před deseti lety? A když připočtu nějaký overhead ZFS, mohla bych se dostat na destinásobné množství zapsaných dat.

A paradoxně těm starým diskům zbývá delší život než úplně novým.


Co se týče mého použití, nevadilo by mi že při výpadku elektřiny přijdu třeba o 10 vteřin dat. Dokonce i několik minut je OK. Jen databáze musí zůstat konzistentní.  Potřeboval bych nějakou optimalizaci toho, aby se jedním zápisem na disk provedlo více změn naráz a tím se zvýšila rychlost a snížilo opotřebování disku.  Je možné udělat něco pro tuhle optimalizaci v nastavení souborového systému nebo databáze?
« Poslední změna: 06. 08. 2024, 21:17:17 od xsouku04 »

RDa

  • *****
  • 2 727
    • Zobrazit profil
    • E-mail
Re:Měření životnosti NVMe disku
« Odpověď #33 kdy: 06. 08. 2024, 22:21:26 »
Co se týče mého použití, nevadilo by mi že při výpadku elektřiny přijdu třeba o 10 vteřin dat. Dokonce i několik minut je OK. Jen databáze musí zůstat konzistentní.  Potřeboval bych nějakou optimalizaci toho, aby se jedním zápisem na disk provedlo více změn naráz a tím se zvýšila rychlost a snížilo opotřebování disku.  Je možné udělat něco pro tuhle optimalizaci v nastavení souborového systému nebo databáze?

A nepomuze k tomuto ucelu bateriove zalohovany ramdisk?

Videl jsem par custom reseni, ale taky takove ktere maji NVMe API a kapacitu cca 8GB. Ted uz jen najit FS, ktery se necha takhle nastavit.. pry ZFS?? Takze vlastne neprijdes o nic - pac ten write intent log by mel obsahovat bud kompletni transakce oddelene barierou, nebo posledni sadu operaci, ktera je polovicata (imho ta by se pak na uloziste commitnout nemela). Vyhodou toho ramdisku je, ze nema TBW limit, a jeho fw resi zalohovani/restore do shadow nand.

Re:Měření životnosti NVMe disku
« Odpověď #34 kdy: 06. 08. 2024, 22:31:40 »
Co se týče mého použití, nevadilo by mi že při výpadku elektřiny přijdu třeba o 10 vteřin dat. Dokonce i několik minut je OK. Jen databáze musí zůstat konzistentní.  Potřeboval bych nějakou optimalizaci toho, aby se jedním zápisem na disk provedlo více změn naráz a tím se zvýšila rychlost a snížilo opotřebování disku.  Je možné udělat něco pro tuhle optimalizaci v nastavení souborového systému nebo databáze?

A nepomuze k tomuto ucelu bateriove zalohovany ramdisk?

Videl jsem par custom reseni, ale taky takove ktere maji NVMe API a kapacitu cca 8GB. Ted uz jen najit FS, ktery se necha takhle nastavit.. pry ZFS?? Takze vlastne neprijdes o nic - pac ten write intent log by mel obsahovat bud kompletni transakce oddelene barierou, nebo posledni sadu operaci, ktera je polovicata (imho ta by se pak na uloziste commitnout nemela). Vyhodou toho ramdisku je, ze nema TBW limit, a jeho fw resi zalohovani/restore do shadow nand.

Datacentrum má baterie i agregát. Ale někdy všechno může selhat, nebo se kousnout počítač. Ztráta těch dat ale u nás nevadí.  Jen jde o to, omezit ty zápisy, aby se disky nezničili za dva roky.


RDa

  • *****
  • 2 727
    • Zobrazit profil
    • E-mail
Re:Měření životnosti NVMe disku
« Odpověď #35 kdy: 06. 08. 2024, 22:41:08 »
Datacentrum má baterie i agregát. Ale někdy všechno může selhat, nebo se kousnout počítač. Ztráta těch dat ale u nás nevadí.  Jen jde o to, omezit ty zápisy, aby se disky nezničili za dva roky.

Tak karta ma vlastni baterii i flash, kam si to transparentne odlozi az vypadne napajeni.

Otazka je zda umi ZFS fungovat tak, ze to do toho intent logu nabufferuje treba 7GB a pak pri flushi to cele zmerguje a vysype az finalni modifikace do flash pole, a az to cele probehne, tak se oznaci NVRAM jako uspesne commited a tim v tom bufferu uvolni misto.

Takze by to vlastne fungovalo jako anti-WAF, protoze nekolik zapisu na stejne LBA by to do flash pole poslalo jen jednou (finalni hodnotu z toho objemu 7GB logu.. cili zapis bude mensi nez 7G kdyz tam budou prepisovane stejne oblasti)

Re:Měření životnosti NVMe disku
« Odpověď #36 kdy: 06. 08. 2024, 22:51:23 »

Fakt? To ses hodne mimo ... uz roky sem nemel v ruce SSD ktere by melo blok mensi nez 64kB.


Podle wiki gentoo zápis z roku 2019  bývá pages size 4-16 KB (nejmenší zapisovatelný blok dat), ale Erase blosk size (nejmenší data které je možné smazat) až 8 MiB.  To se tak změnilo?

https://wiki.gentoo.org/wiki/SSD

Re:Měření životnosti NVMe disku
« Odpověď #37 kdy: 06. 08. 2024, 23:19:08 »
Pre ukazku rozdiel medzi 1DWPD a 3DWPD pri cerstvov ydanych serverovskych SSD od solidigm(byvaly Intel)
1DWPD - 1.92TB
3DWPD -  1.6TB

 O 320GB znizenie kapacity(zvysenie spare area) na zvysenie DWPD z 1 na 3. Takze ziadna dvoj-trojasobna fyzicka kapacita pri 3DWPD. Ten 1DWPD bude mat spare area odhadom okolo 200-300GB.

https://www.solidigm.com/content/dam/solidigm/en/site/products/data-center/product-briefs/ps1010-ps1030/solidigm-d7-ps1010-d7-ps1030-product-brief.pdf

K tej SLC cache. Pri nej som sa trochu zamotal. SLC cache sa pouziva aj mimo sekvencnych zapisov ak sa bavime o consumer SSD. Pri enterprise diskoch je to ale ine. Tam je potrebna konzistentost/predikovatelnost vykonu a SLC cache by tam robila bordel. Tam sa vykon nahana viackanalovymi radicmi.

Re:Měření životnosti NVMe disku
« Odpověď #38 kdy: 06. 08. 2024, 23:36:58 »

Podle wiki gentoo zápis z roku 2019  bývá pages size 4-16 KB (nejmenší zapisovatelný blok dat), ale Erase blosk size (nejmenší data které je možné smazat) až 8 MiB.  To se tak změnilo?

https://wiki.gentoo.org/wiki/SSD
Zmenilo sa. Velkost erase blokov rastie so zhustovanim/zvecsovnaim NAND flash. Je to vlastnost NAND. Teraz ma nenapadne ako sa to odbornejsie vola.
Tazke erase bloky postupne rastu.
Pri dnesnych SSD su erase bloky vecsie ako 8MiB.

Prosim ta napis typ toho noveho NVME SSD. Vlastne noveho aj stareho SSD.

Re:Měření životnosti NVMe disku
« Odpověď #39 kdy: 06. 08. 2024, 23:38:26 »
Nejsem si úplně jist, jestli je to řešitelné čistě na úrovni FS. Čekám, že databáze použije fsync. A pokud by v takové situaci FS neudělal permanentní zápis, bylo by to IMHO proti specifikaci: https://www.man7.org/linux/man-pages/man2/fdatasync.2.html

Aby tehdy měl FS prostor zapisovat data se zpožděním, nesmí mu to databáze kazit fsyncem. Vypnutí fsync by zvládl zařídit nástroj s příhodným názvem eatmydata, ale to asi není to, co chcete, když požadujete konzistenci dat po výpadku. Nabízí se spíše řešit problém na úrovni samotné databáze, možná na aplikační úrovni – například zápisy zabalit do transakcí po minutě. Potom dostane DB prostor zapsat vše naráz.

Další věc, co tu už víceméně padla, je, že některé mechanismy budou DB a v ZFS duplicitně, a je otázka, jestli nejít spíš do ext4… Ale možná pro ZFS zde budete mít nějaký důvod…

Re:Měření životnosti NVMe disku
« Odpověď #40 kdy: 08. 08. 2024, 20:18:12 »
Ač všichni výrobci zdá se bedlivě mlží co se týče velikostí page Size, Block Size a Plane Size, tak zde jsem našel specifikaci
jednoho z těch lepších dísků Western Digital RED SN700, který má stabilní výkon a životnost 2000 TBW.

specifikace: https://www.techpowerup.com/ssd-specs/western-digital-red-sn700-1-tb.d1619

Prodává se např. zde:  https://www.alza.cz/wd-red-sn700-nvme-1tb-d6998050.htm

Page Size:    16 KB    # nejmenší množství dat, které je možné zapsat
Block Size:    1152 Pages  = 18,432 MB # nejmenší množství dat, které je možné smazat
Plane Size:    1822 Blocks

Z toho nejspíše plyne, že u těchto disků mít recordsize menší než 16KB zjevně nedává smysl.
Jestli to ale znamená čtyřnásobné nebo 32 násobné Write amplification zůstává záhadou. Protože souborový systém přece stále zapisuje po 512 Bytech, nebo 4 KBtech. Tedy jak dobře se disk brání proti zbytečnému navýšení zápisů?  Zjevně nezbývá, než to otestovat pomocí DD, které dovoluje zápisovat na neformátovaný disk 512B nebo 4KB bloky.  Když provedu tisíc zápisů náhodných dat, mohu pak sledovat jak se pohne opotřebení disku.  A kolik bude disk hlásit, že bylo zapsáno.

Zajímavý je také údaj:  SLC Write Cache:    Yes

Tedy je možné, že si to nejdříve zapíše do SLC,  pak si to přetřídí a minimalizuje finální zápisy.  Jak se to ale projevuje na počítadlech je asi nutné vyzkoušet.
« Poslední změna: 08. 08. 2024, 20:21:07 od xsouku04 »

Re:Měření životnosti NVMe disku
« Odpověď #41 kdy: 08. 08. 2024, 20:26:53 »
Tedy u zfs je optimální mít ashift 14 ? Aby to bylo těch 16 KB, a recordsize také minimálně 16 KB ?
« Poslední změna: 08. 08. 2024, 20:28:47 od xsouku04 »

Re:Měření životnosti NVMe disku
« Odpověď #42 kdy: 08. 08. 2024, 20:36:27 »
Ještě jsem přemýšlel o write amplification u SLC write cache, a bude to asi složitější. Sice to znamená, že při prvním zápisu zapíšeme do násobně (3násobně u TLC) více buněk, ale zdaleka to nemusí znamenat až tolikrát (4krát u TLC) větší write amplification:

1. Dejme tomu, že do SLC se podaří zapsat na poprvé, do ostatních se bude zápis opakovat. Nemám moc představu, jak často se to děje.
2. Je otázka, jestli má vliv, že se do n-bitového MLC zapisují jednotlivé úrovně postupně. Možná ne, tuším, že vliv má počet mazání, ne počet zápisů.

Re:Měření životnosti NVMe disku
« Odpověď #43 kdy: 08. 08. 2024, 20:56:07 »
A tady je specifikace lepšího SATA 2.5 disku.

https://www.techpowerup.com/ssd-specs/kingston-dc600m-960-gb.d2052



Capacity:    960 GB
Endurance:
(up to)    3000 P/E Cycles
(100000 in SLC Mode)
Endurance:    1752 TBW
Page Size:    16 KB
Block Size:    1344 Pages
Plane Size:    448 Blocks

DRAM Cache
Type:    DDR4-3200 CL22
Name:    NANYANT5AD512M8E3-JR
Capacity:    2048 MB
(4x 512 MB)
Organization:    4Gx8

Power Loss Protection:    Yes  # má tam kondenzátory, které vystačí zjevně na uložení z paměti na disk

Koupit lze zde:  https://pevne-disky.heureka.cz/kingston-dc600m-enterprise-960gb-sedc600m-960g/#prehled


Je například možné, že data co se často mění má uložené jen v SLC a jinam je přesune až se to ustálí?


Re:Měření životnosti NVMe disku
« Odpověď #44 kdy: 08. 08. 2024, 21:08:03 »
Má-li SLC cache, možná ani nepotřebuje kondenzátory…

Často měněná data jen v SLC – zajímavý nápad, dosud jsem si myslel, že se data ze SLC cache hned přeskládají. Toto by znamenalo asi komplikovanější logiku a vyžadovalo volné místo, ale přineslo by to menší WAF a rychlejší čtení některých dat.