Hobaneng ha NVMe ea ka e lieha ho feta SSD?

Hobaneng ha NVMe ea ka e lieha ho feta SSD?
Sehloohong sena re tla sheba tse ling tsa likaroloana tsa tsamaiso ea I / O le phello ea bona ts'ebetsong.

Libeke tse 'maloa tse fetileng ke ne ke tobane le potso ea hore na ke hobane'ng ha NVMe ho seva e le' ngoe e ne e lieha ho feta SATA ho e 'ngoe. Ke ile ka sheba litlhaloso tsa seva mme ka hlokomela hore ena e ne e le potso e qhekellang: NVMe e ne e tsoa karolong ea basebelisi, 'me SSD e ne e tsoa karolong ea seva.

Ho hlakile hore ha ho na toka ho bapisa lihlahisoa tse tsoang likarolong tse fapaneng libakeng tse fapaneng, empa sena ha se karabo e felletseng ea tekheniki. Ha re ithute lintho tsa motheo, re etse liteko 'me re fane ka karabo ea potso e botsitsoeng.

Fsync ke eng 'me e sebelisoa hokae?

Ho potlakisa mosebetsi ka li-drive, data e bolokiloe, ke hore, e bolokiloe mohopolong o sa tsitsang ho fihlela monyetla o motle o hlaha oa ho boloka litaba tsa buffer ho drive. Mekhoa ea "monyetla" e khethoa ke tsamaiso ea ts'ebetso le litšobotsi tsa koloi. Haeba motlakase o hloleha, data eohle e ho buffer e tla lahleha.

Ho na le mesebetsi e mengata eo ho eona u hlokang ho etsa bonnete ba hore liphetoho faeleng li ngotsoe ho drive eseng ka har'a buffer e mahareng. Tiisetso ena e ka fumanoa ka ho sebelisa mohala o lumellanang le Fsync oa POSIX. Ho letsetsa fsync ho qobella ho ngola ho tloha ho buffer ho ea ho drive.

Ha re bonts'eng phello ea li-buffers ka mohlala oa maiketsetso ka mokhoa oa lenaneo le lekhutšoane ho C.

#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(void) {
    /* Открываем файл answer.txt на запись, если его нет -- создаём */
    int fd = open("answer.txt", O_WRONLY | O_CREAT);
    /* Записываем первый набор данных */
    write(fd, "Answer to the Ultimate Question of Life, The Universe, and Everything: ", 71);
    /* Делаем вид, что проводим вычисления в течение 10 секунд */
    sleep(10);
    /* Записываем результат вычислений */
    write(fd, "42n", 3); 

    return 0;
}

Litlhaloso li hlalosa hantle tatelano ea liketso lenaneong. Mongolo o reng "karabo ea potso e ka sehloohong ea bophelo, Bokahohle le tsohle" e tla ts'oaroa ke sistimi e sebetsang, 'me haeba u qala seva ka ho tobetsa konopo ea Reset nakong ea "lipalo", faele e tla be e se na letho. Mohlala oa rona, tahlehelo ea mongolo ha se taba, kahoo fsync ha e hlokehe. Lintlha ha li fane ka tšepo ena.

Li-database ke mananeo a rarahaneng a sebetsang ka nako e le 'ngoe le lifaele tse ngata, kahoo ba batla ho netefatsa hore data eo ba e ngolang e tla bolokoa ka koloi, kaha ho lumellana ha data ka har'a database ho itšetlehile ka sena. Li-database li etselitsoe ho rekota litšebelisano tsohle tse phethiloeng le ho itokisetsa ho felloa ke matla ka nako efe kapa efe. Boitšoaro bona bo hloka ts'ebeliso ea fsync khafetsa ka bongata bo boholo.

Phello ea tšebeliso ea khafetsa ea fsync ke efe?

Nakong e tloaelehileng ea I / O, sistimi e sebetsang e leka ho ntlafatsa puisano le li-disk, kaha li-drive tsa kantle ke tsona tse liehang ho feta taolong ea memori. Ka hona, sistimi e sebetsang e leka ho ngola data e ngata kamoo ho ka khonehang molemong oa phihlello e le 'ngoe ea drive.

Ha re bonts'e phello ea ho sebelisa fsync ka mohlala o itseng. Re na le li-SSD tse latelang e le li-drive tsa liteko:

  • Intel® DC SSD S4500 480 GB, e kopantsoe ka SATA 3.2, 6 Gbit / s;
  • Samsung 970 EVO Plus 500GB, e hoketsoeng ka PCIe 3.0 x4, ~31 Gbit/s.

Liteko li etsoa ho Intel® Xeon® W-2255 e sebelisang Ubuntu 20.04. Sysbench 1.0.18 e sebelisetsoa ho lekola li-disk. Karolo e le 'ngoe e entsoe ka har'a li-disk, e hlophisitsoeng joalo ka ext4. Ho itokisetsa tlhahlobo ho kenyelletsa ho theha lifaele tsa 100 GB:

sysbench --test=fileio --file-total-size=100G prepare

Ho etsa liteko:

# Без fsync
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=0 run

# С fsync после каждой записи
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=1 run

Liphetho tsa liteko li hlahisoa tafoleng.

Teko
Intel® S4500
Samsung 970 EVO+

Ho bala ntle le fsync, MiB/s
5734.89
9028.86

Ho rekota ntle le fsync, MiB/s
3823.26
6019.24

Ho bala ka fsync, MiB/s
37.76
3.27

Ho rekota ka fsync, MiB/s
25.17
2.18

Ho bonolo ho bona hore NVMe e tsoang ho karolo ea bareki e etella pele ka kholiseho ha sistimi e sebetsang ka boeona e etsa qeto ea ho sebetsa ka li-disk, mme e lahleheloa ha fsync e sebelisoa. Sena se hlahisa lipotso tse peli:

  1. Ke hobane'ng ha lebelo la ho bala tekong ntle le fsync le feta bandwidth ea 'mele ea mocha?
  2. Hobaneng ha karolo ea seva ea SSD e le betere ho sebetsana le likopo tse ngata tsa fsync?

Karabo ea potso ea pele e bonolo: sysbench e hlahisa lifaele tse tlatsitsoeng ka zero. Kahoo, tlhahlobo e ile ea etsoa ho feta 100 gigabytes ea zero. Kaha data e ts'oana haholo ebile e ka lebelloa, lintlafatso tse fapaneng tsa OS lia sebetsa 'me li potlakisa ts'ebetso.

Haeba u botsa liphetho tsohle tsa sysbench, u ka sebelisa fio.

# Без fsync
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=0 --filename=/dev/sdb

# С fsync после каждой записи
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=1 --filename=/dev/sdb

Teko
Intel® S4500
Samsung 970 EVO+

Ho bala ntle le fsync, MiB/s
45.5
178

Ho rekota ntle le fsync, MiB/s
30.4
119

Ho bala ka fsync, MiB/s
32.6
20.9

Ho rekota ka fsync, MiB/s
21.7
13.9

Tloaelo ea ts'ebetso ea NVMe ho nyenyefatsa ha u sebelisa fsync e bonahala ka ho hlaka. U ka tsoela pele ho araba potso ea bobeli.

Optimization kapa bluff

Pejana, re boletse hore data e bolokiloe ka har'a buffer, empa ha rea ​​​​ka ra bolela hore na ke efe, kaha sena se ne se se bohlokoa. Le hajoale re ke ke ra shebana le mathata a lits'ebetso mme re tla totobatsa mefuta e 'meli e akaretsang ea li-buffers:

  • lenaneo;
  • hardware.

Software buffer e bua ka li-buffer tse teng tsamaisong ea ts'ebetso, 'me buffer ea hardware e bolela mohopolo o sa tsitsang oa disk controller. Mohala oa tsamaiso ea fsync o romela taelo ho drive ho ngola data ho tloha ho buffer ho ea polokelong e kholo, empa ha e na mokhoa oa ho netefatsa hore taelo e etsoa ka nepo.

Kaha SSD e bonts'a liphetho tse ntle, ho ka etsoa mehopolo e 'meli:

  • disk e etselitsoe mojaro o tšoanang;
  • disk "bluffs" mme e hlokomoloha taelo.

Boitšoaro bo sa tšepahaleng ba koloi bo ka hlokomeloa haeba u etsa tlhahlobo ea tahlehelo ea matla. U ka hlahloba sena ka script diskchecker.pl, ho ne ho le joalo thehiloe ka selemo 2005.

Sengoloa sena se hloka mechini e 'meli ea 'mele - "server" le "client". Moreki o ngola lintlha tse nyane ho disk tlas'a teko, o letsetsa fsync, mme o romela tlhahisoleseding ho seva mabapi le se ngotsoeng.

# Запускается на сервере
./diskchecker.pl -l [port]

# Запускается на клиенте
./diskchecker.pl -s <server[:port]> create <file> <size_in_MB>

Ka mor'a ho tsamaisa script, u ​​tlameha ho tima matla ho "mosebetsi" 'me u se ke ua khutlisetsa matla ka metsotso e mengata. Ho bohlokoa ho hakolla motho ea ntseng a lekoa motlakaseng, eseng feela ho tima ka thata. Ka mor'a nako e itseng, seva se ka kopanngoa 'me sa kenngoa ho OS. Ka mor'a ho kenya OS u lokela ho e qala hape diskchecker.pl, empa ka khang netefatsa.

./diskchecker.pl -s <server[:port]> verify <file>

Qetellong ea cheke u tla bona palo ea liphoso. Haeba ho na le 0, joale disk e fetile teko. Ho kenyelletsa tsietsi ea lehlohonolo bakeng sa disk, teko e ka phetoa ka makhetlo a 'maloa.

S4500 ea rona ha ea ka ea bontša liphoso ha matla a ne a felloa ke matla, ho bolelang hore e se e loketse meroalo ea mosebetsi ka mehala e mengata ea fsync.

fihlela qeto e

Ha u khetha li-disk kapa litlhophiso tsohle tse lokiselitsoeng, u lokela ho hopola lintlha tse tobileng tsa mathata a lokelang ho rarolloa. Ha u habanya feela, ho bonahala ho hlakile hore NVMe, ke hore, SSD e nang le sebopeho sa PCIe, e potlakile ho feta "classic" SATA SSD. Leha ho le joalo, joalokaha re ithutile kajeno, maemong a itseng le ka mesebetsi e itseng ho ka 'na ha se ke ha e-ba joalo.

U lekola likarolo tsa seva joang ha u hira ho mofani oa IaaS?
Re u emetse ho maikutlo.

Hobaneng ha NVMe ea ka e lieha ho feta SSD?

Source: www.habr.com

Eketsa ka tlhaloso