Cén fáth a bhfuil mo NVMe níos moille ná SSD?

Cén fáth a bhfuil mo NVMe níos moille ná SSD?
San Airteagal seo féachfaimid ar roinnt de na nuances a bhaineann leis an bhfochóras I/O agus a dtionchar ar fheidhmíocht.

Cúpla seachtain ó shin bhí mé ag tabhairt aghaidhe ar an gceist cén fáth go raibh NVMe ar fhreastalaí amháin níos moille ná SATA ar fhreastalaí eile. D'fhéach mé ar shonraíochtaí an fhreastalaí agus thuig mé gur ceist chasta a bhí anseo: bhí NVMe ón deighleog úsáideora, agus bhí SSD ón deighleog freastalaí.

Ar ndóigh, níl sé cothrom comparáid a dhéanamh idir táirgí ó dheighleoga éagsúla i dtimpeallachtaí éagsúla, ach ní freagra teicniúil iomlán é seo. Déanaimis staidéar ar na bunghnéithe, déanaimid turgnaimh agus tabharfaimid freagra ar an gceist a cuireadh.

Cad is fsync ann agus cén áit a n-úsáidtear é?

Chun dlús a chur leis an obair le tiomántáin, déantar sonraí a mhaolánú, is é sin, stóráiltear i gcuimhne luaineach go dtí go mbíonn deis áisiúil ann ábhar an mhaoláin a shábháil ar an tiomántán. Cinneann an córas oibriúcháin agus tréithe an tiomántáin na critéir le haghaidh “deis”. I gcás teip cumhachta, caillfear na sonraí go léir sa mhaolán.

Tá roinnt tascanna ann ina gcaithfidh tú a bheith cinnte go scríobhtar athruithe ar chomhad ar an tiomántán agus ní i maolán idirmheánach. Is féidir an dearbhú seo a fháil trí ghlao córais fsync a chomhlíonann POSIX a úsáid. Má ghlaoitear fsync, ní mór scríobh ón maolán go dtí an tiomántán.

Léireoimis éifeacht maoláin le sampla saorga i bhfoirm clár gearr in 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;
}

Míníonn na tuairimí go maith seicheamh na ngníomhartha sa chlár. Maolánfaidh an córas oibriúcháin an téacs “freagra ar phríomhcheist na beatha, na Cruinne agus gach rud”, agus má atosaíonn tú an freastalaí tríd an gcnaipe Athshocraigh a bhrú le linn “ríomhanna”, beidh an comhad folamh. Inár sampla, ní fadhb é caillteanas téacs, mar sin níl gá le fsync. Ní roinneann bunachair shonraí an dóchas seo.

Is cláir chasta iad bunachair shonraí a oibríonn go comhuaineach le go leor comhad, agus mar sin ba mhaith leo a bheith cinnte go ndéanfar na sonraí a scríobhann siad a shábháil ar an tiomáint, ós rud é go mbraitheann comhsheasmhacht na sonraí taobh istigh den bhunachar sonraí air seo. Tá bunachair shonraí deartha chun gach idirbheart críochnaithe a thaifeadadh agus a bheith réidh chun cumhacht a chailleadh ag am ar bith. Éilíonn an iompar seo go n-úsáidfear fsync i gcónaí i gcainníochtaí móra.

Cén éifeacht a bhaineann le húsáid mhinic fsync?

Le linn gnáth-I/O, déanann an córas oibriúcháin iarracht cumarsáid a bharrfheabhsú le dioscaí, toisc gurb iad tiomántáin sheachtracha na cinn is moille san ordlathas cuimhne. Mar sin, déanann an córas oibriúcháin iarracht an oiread sonraí agus is féidir a scríobh i rochtain amháin ar an tiomáint.

Léireoimis an tionchar a bhaineann le húsáid fsync le sampla ar leith. Tá na SSDanna seo a leanas againn mar thiomáineann tástála:

  • Intel® DC SSD S4500 480 GB, ceangailte trí SATA 3.2, 6 Gbit/s;
  • Samsung 970 EVO Plus 500GB, ceangailte trí PCIe 3.0 x4, ~31 Gbit/s.

Déantar tástálacha ar Intel® Xeon® W-2255 a ritheann Ubuntu 20.04. Úsáidtear Sysbench 1.0.18 chun dioscaí a thástáil. Cruthaíodh deighilt amháin ar na dioscaí, formáidithe mar ext4. Is éard atá i gceist le hullmhú don triail ná comhad 100 GB a chruthú:

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

Trialacha reatha:

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

Cuirtear torthaí na dtrialacha i láthair sa tábla.

Tástáil
Intel® S4500
Samsung 970 EVO+

Léamh gan fsync, MiB/s
5734.89
9028.86

Taifeadadh gan fsync, MiB/s
3823.26
6019.24

Léamh le fsync, MiB/s
37.76
3.27

Taifeadadh le fsync, MiB/s
25.17
2.18

Is furasta a fheiceáil go bhfuil NVMe ón deighleog cliant muiníneach i gceannas nuair a chinneann an córas oibriúcháin féin conas oibriú le dioscaí, agus cailleann sé nuair a úsáidtear fsync. Ardaíonn sé seo dhá cheist:

  1. Cén fáth a sháraíonn an luas léite sa tástáil gan fsync bandaleithead fisiciúil an chainéil?
  2. Cén fáth a bhfuil SSD deighleog freastalaí níos fearr ag láimhseáil líon mór iarratas fsync?

Is simplí an freagra ar an gcéad cheist: gineann sysbench comhaid líonta le nialais. Mar sin, rinneadh an tástáil os cionn 100 ghigibheart nialais. Ós rud é go bhfuil na sonraí an-aonfhoirmeach agus intuartha, tagann leas iomlán a bhaint as OS éagsúla agus luasann siad go mór an forghníomhú.

Má cheistíonn tú gach toradh sysbench, is féidir leat fio a úsáid.

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

Tástáil
Intel® S4500
Samsung 970 EVO+

Léamh gan fsync, MiB/s
45.5
178

Taifeadadh gan fsync, MiB/s
30.4
119

Léamh le fsync, MiB/s
32.6
20.9

Taifeadadh le fsync, MiB/s
21.7
13.9

Tá an claonadh go ndíghrádóidh feidhmíocht NVMe agus fsync á úsáid go soiléir. Féadfaidh tú bogadh ar aghaidh go dtí an dara ceist a fhreagairt.

Optamú nó bluff

Roimhe seo, dúirt muid go stóráiltear na sonraí i maolán, ach níor shonraigh muid cén ceann, ós rud é nach raibh sé seo tábhachtach. Fiú amháin anois ní dhéanfaimid iniúchadh ar chasta na gcóras oibriúcháin agus leagfaimid béim ar dhá chineál ginearálta maoláin:

  • clár ;
  • crua-earraí.

Tagraíonn an maolán bogearraí do na maoláin atá sa chóras oibriúcháin, agus tagraíonn an maolán crua-earraí do chuimhne so-ghalaithe an rialaitheora diosca. Seolann glao an chórais fsync ordú chuig an tiomántán chun sonraí a scríobh óna maolán chuig an bpríomhstóráil, ach níl aon bhealach ann chun a fhíorú go bhfuil an t-ordú á fhorghníomhú i gceart.

Ós rud é go léiríonn an SSD na torthaí is fearr, is féidir dhá thoimhde a dhéanamh:

  • tá an diosca deartha le haghaidh ualach comhchosúil;
  • an diosca “bluffs” agus neamhaird ar an ordú.

Is féidir iompar mímhacánta an tiomántáin a thabhairt faoi deara má dhéanann tú tástáil chaillteanais cumhachta. Is féidir leat é seo a sheiceáil le script diskchecker.pl, bhí se bunaithe sa bhliain 2005.

Teastaíonn dhá mheaisín fhisiceacha don script seo - “freastalaí” agus “cliant”. Scríobhann an cliant méid beag sonraí chuig an diosca atá á thástáil, glaonna fsync, agus cuireann sé faisnéis chuig an bhfreastalaí faoin méid a scríobhadh.

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

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

Tar éis duit an script a rith, ní mór duit an chumhacht a mhúchadh go dtí an “cliant” agus ná cuir an chumhacht ar ais ar feadh roinnt nóiméad. Tá sé tábhachtach an duine atá á thástáil a dhícheangal ón leictreachas, agus ní hamháin múchadh crua a dhéanamh. Tar éis roinnt ama, is féidir an freastalaí a nascadh agus a luchtú isteach san OS. Tar éis duit an OS a luchtú ní mór duit é a thosú arís diskchecker.pl, ach le argóint fhíorú.

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

Ag deireadh na seiceála feicfidh tú líon na n-earráidí. Má tá 0 ann, tá pas faighte ag an diosca sa tástáil. Chun comhtharlú ádh a eisiamh don diosca, is féidir an turgnamh a dhéanamh arís agus arís eile.

Níor léirigh ár S4500 aon earráidí nuair a cailleadh cumhacht, rud a chiallaíonn go bhfuil sé réidh le haghaidh ualaí oibre le go leor glaonna fsync.

Conclúid

Agus dioscaí nó cumraíochtaí réamhdhéanta iomlána á roghnú agat, ba cheart duit cuimhneamh ar shonraí na bhfadhbanna nach mór a réiteach. Ar an gcéad amharc, is léir go bhfuil NVMe, is é sin, SSD le comhéadan PCIe, níos tapúla ná an SSD SATA “clasaiceach”. Mar sin féin, mar a d'fhoghlaim muid inniu, i gcoinníollacha sonracha agus le tascanna áirithe b'fhéidir nach é seo an cás.

Conas a thástálann tú comhpháirteanna freastalaí agus tú ar cíos ó sholáthraí IaaS?
Táimid ag fanacht leat sna tuairimí.

Cén fáth a bhfuil mo NVMe níos moille ná SSD?

Foinse: will.com

Add a comment