Kedu ihe kpatara NVMe m ji nwayọ karịa SSD m?

Kedu ihe kpatara NVMe m ji nwayọ karịa SSD m?
N'isiokwu a, anyị ga-eleba anya na ụfọdụ nuances nke I/O subsystem na mmetụta ha na arụmọrụ.

Izu ole na ole gara aga, enwere m ajụjụ maka ihe kpatara NVMe na otu sava ji nwayọ karịa SATA na nke ọzọ. Elere m nkọwapụta ihe nkesa ahụ wee chọpụta na nke a bụ ajụjụ aghụghọ: NVMe sitere na ngalaba onye ọrụ, SSD sitere na ngalaba nkesa.

N'ụzọ doro anya, ọ bụghị ihe ziri ezi iji tụnyere ngwaahịa sitere na akụkụ dị iche iche na gburugburu ebe dị iche iche, mana nke a abụghị azịza teknụzụ zuru oke. Ka anyị mụọ isi ihe, mee nnwale ma nye azịza nye ajụjụ a jụrụ.

Kedu ihe bụ fsync na kedu ebe eji ya?

Iji mee ka draịva rụọ ọrụ ngwa ngwa, a na-echekwa data, ya bụ, echekwara na ebe nchekwa na-agbanwe agbanwe ruo mgbe ohere dị mma na-ewepụta onwe ya iji chekwaa ọdịnaya nke ihe nchekwa na draịva. A na-ekpebi njirisi maka "ohere" site na sistemụ arụmọrụ yana njirimara nke mbanye. N'ọnọdụ ọdịda ike, data niile dị na nchekwa ga-efunahụ ya.

Enwere ọtụtụ ọrụ ị kwesịrị ijide n'aka na a na-ede mgbanwe na faịlụ na draịva ọ bụghị na nchekwa etiti. Enwere ike nweta mmesi obi ike a site na iji usoro fsync na-akwado POSIX. Ịkpọ fsync na-amanye ederede site na ihe nchekwa gaa na draịva.

Ka anyị gosipụta mmetụta nke ndị na-ebufe ihe site na iji ihe atụ arụrụ arụ n'ụdị mmemme dị mkpirikpi na 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;
}

Ihe ndị a na-akọwa nke ọma usoro omume na mmemme. Ederede “azịza nke ajụjụ bụ isi nke ndụ, Eluigwe na Ala na ihe niile” ga-echekwa sistemụ arụmọrụ, ma ọ bụrụ na ịmalitegharịa ihe nkesa site na ịpị bọtịnụ Tọgharia n'oge “ngbakọ”, faịlụ ahụ ga-abụ ihe efu. N'ihe atụ anyị, ọnwụ ederede abụghị nsogbu, yabụ fsync adịghị mkpa. Ebe nchekwa data anaghị ekekọrịta nchekwube a.

Databases bụ mmemme dị mgbagwoju anya nke na-arụ ọrụ n'otu oge na ọtụtụ faịlụ, n'ihi ya, ha chọrọ ijide n'aka na a ga-echekwa data ha na-ede na ụgbọala, ebe ọ bụ na nkwekọ nke data dị n'ime nchekwa data dabere na nke a. Emebere ọdụ data ka ịdekọ azụmahịa niile emechara wee dịrị njikere ịhapụ ike n'oge ọ bụla. Omume a chọrọ iji fsync mgbe niile n'ọtụtụ buru ibu.

Gịnị bụ mmetụta nke iji fsync eme ihe ugboro ugboro?

N'oge I/O nkịtị, sistemụ arụmọrụ na-anwa ịkwalite nkwukọrịta na diski, ebe ọ bụ na draịva mpụga bụ ndị kachasị nwayọ na ọkwa ebe nchekwa. Ya mere, sistemụ arụmọrụ na-anwa ide data dị ukwuu dị ka o kwere mee n'otu ohere ịnweta ụgbọala.

Ka anyị gosi mmetụta nke iji fsync jiri otu ọmụmaatụ. Anyị nwere SSD ndị a dị ka draịva ule:

  • Intel® DC SSD S4500 480 GB, ejikọrọ site na SATA 3.2, 6 Gbit/s;
  • Samsung 970 EVO Plus 500GB, ejikọrọ site na PCIe 3.0 x4, ~ 31 Gbit/s.

A na-eme ule na Intel® Xeon® W-2255 na-agba Ubuntu 20.04. A na-eji Sysbench 1.0.18 nwalee diski. Emeela otu nkebi na diski ndị a haziri ka ext4. Ịkwadebe maka ule ahụ gụnyere ịmepụta faịlụ 100 GB:

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

Nnwale na-agba ọsọ:

# Без 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

A na-egosi nsonaazụ ule na tebụl.

Ule
Intel® S4500
Samsung 970 EVO +

Ọgụgụ na-enweghị fsync, MiB/s
5734.89
9028.86

Edekọ na-enweghị fsync, MiB/s
3823.26
6019.24

Iji fsync na-agụ ihe, MiB/s
37.76
3.27

Edekọ na fsync, MiB/s
25.17
2.18

Ọ dị mfe ịhụ na NVMe sitere na ngalaba ndị ahịa nwere ntụkwasị obi na-eduzi mgbe sistemụ arụmọrụ n'onwe ya na-ekpebi otu esi arụ ọrụ na diski, ma tụfuo mgbe ejiri fsync mee ihe. Nke a na-ewelite ajụjụ abụọ:

  1. Kedu ihe kpatara ọsọ ọgụgụ na ule na-enweghị fsync gafere bandwidth anụ ahụ nke ọwa?
  2. Kedu ihe kpatara akụkụ nkesa SSD ji dị mma na ijikwa ọnụ ọgụgụ dị ukwuu nke arịrịọ fsync?

Azịza nke ajụjụ mbụ dị mfe: sysbench na-emepụta faịlụ jupụtara na efu. Ya mere, e mere ule ahụ ihe karịrị 100 gigabytes nke efu. Ebe ọ bụ na data ahụ bụ otu na nke a na-ahụ anya, njikarịcha OS dị iche iche na-abata ma na-eme ngwa ngwa ngwa ngwa.

Ọ bụrụ na ị na-ajụ nsonaazụ sysbench niile, ị nwere ike iji 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

Ule
Intel® S4500
Samsung 970 EVO +

Ọgụgụ na-enweghị fsync, MiB/s
45.5
178

Edekọ na-enweghị fsync, MiB/s
30.4
119

Iji fsync na-agụ ihe, MiB/s
32.6
20.9

Edekọ na fsync, MiB/s
21.7
13.9

Ọchịchọ maka ịrụ ọrụ NVMe na-eweda mgbe ị na-eji fsync ka a na-ahụ nke ọma. Ị nwere ike ịga n'ihu na-aza ajụjụ nke abụọ.

Nkwalite ma ọ bụ bluff

Na mbụ, anyị kwuru na a na-echekwa data na nchekwa nchekwa, ma anyị akọwaghị nke, ebe ọ bụ na nke a adịghị mkpa. Ọbụlagodi ugbu a, anyị agaghị abanye n'ime mgbagwoju anya nke sistemu arụ ọrụ ma gosipụta ụdị nchekwa nchekwa abụọ n'ozuzu:

  • mmemme;
  • ngwaike.

Ihe nchekwa ngwanrọ na-ezo aka na ihe nchekwa dị na sistemụ arụmọrụ, yana nchekwa ngwaike na-ezo aka na ebe nchekwa na-agbanwe agbanwe nke njikwa diski. Oku sistemu fsync na-ezigara draịva iwu ka o dee data sitere na nchekwa ya na ebe nchekwa isi, mana enweghị ụzọ ọ ga-esi gosi na emechara iwu ahụ nke ọma.

Ebe ọ bụ na SSD gosipụtara nsonaazụ kacha mma, enwere ike ịme echiche abụọ:

  • e mere diski ahụ maka ibu yiri ya;
  • diski ahụ "bluffs" ma na-eleghara iwu ahụ anya.

Enwere ike ịhụ omume akwụwaghị aka ọtọ nke mbanye ma ọ bụrụ na ị na-eme ule ọnwụ ike. Ị nwere ike ịlele nke a site na edemede diskchecker.pl, nke bụ guzobere na 2005 afọ.

Edemede a chọrọ igwe anụ ahụ abụọ - “ihe nkesa” na “onye ahịa”. Onye ahịa ahụ na-ede ntakịrị data na diski n'okpuru ule, kpọọ fsync ma ziga ozi na ihe nkesa gbasara ihe edere.

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

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

Mgbe ịmechara edemede ahụ, ị ​​​​ga-agbanyụrịrị ike na "onye ahịa" ma ghara ịlaghachi ike ruo ọtụtụ nkeji. Ọ dị mkpa ịkwụpụ onye a na-anwale site na ọkụ eletrik, ọ bụghị naanị ime nkwụsị siri ike. Mgbe oge ụfọdụ gachara, enwere ike jikọọ ihe nkesa ma tinye ya na OS. Mgbe ebudatara OS, ịkwesịrị ịmalite ya ọzọ diskchecker.pl, ma na arụmụka nyochaa.

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

Na njedebe nke nlele, ị ga-ahụ ọnụọgụ nke njehie. Ọ bụrụ na enwere 0, mgbe ahụ diski agafeela ule ahụ. Iji wepụ ihe ndaba ndaba maka diski ahụ, enwere ike ịmegharị nnwale ahụ ọtụtụ ugboro.

S4500 anyị egosighi mmejọ ọ bụla mgbe ike tụfuru, nke pụtara na ọ dịla njikere maka ibu ọrụ yana ọtụtụ oku fsync.

nkwubi

Mgbe ị na-ahọrọ diski ma ọ bụ nhazi niile dị njikere, ị kwesịrị icheta nkọwa nke nsogbu ndị a ga-edozi. Na ilele mbụ, ọ dị ka ihe doro anya na NVMe, ya bụ, SSD nwere interface PCIe, dị ngwa karịa SATA SSD "kpochapụwo". Otú ọ dị, dị ka anyị mụtara taa, n'ọnọdụ ụfọdụ na ụfọdụ ọrụ nke a nwere ike ọ gaghị adị.

Kedu otu esi anwale ihe nkesa mgbe ị na-akwụ ụgwọ n'aka onye na-eweta IaaS?
Anyị na-eche gị na nkọwa.

Kedu ihe kpatara NVMe m ji nwayọ karịa SSD m?

isi: www.habr.com

Tinye a comment