He aha te mea he puhoi ake taku NVMe i te SSD?

He aha te mea he puhoi ake taku NVMe i te SSD?
I roto i tenei tuhinga, ka titiro tatou ki etahi o nga ahuatanga o te punaha I / O me o raatau paanga ki te mahi.

I nga wiki e rua kua pahure ake nei ka pa atu ahau ki tetahi patai he aha te NVMe i runga i tetahi tūmau he puhoi ake i te SATA i tetahi atu. I titiro ahau ki nga ahuatanga o nga kaitoro me te mohio he patai tinihanga: Ko NVMe mai i te waahanga kaiwhakamahi, ko SSD mai i te waahanga tūmau.

Ma te mohio, kaore i te tika te whakataurite i nga hua mai i nga waahanga rereke i roto i nga taiao rereke, engari ehara tenei i te whakautu hangarau. Ka ako matou i nga kaupapa, ka whakahaere i nga whakamatautau ka hoatu he whakautu ki te patai ka tukuna.

He aha te fsync me te waahi e whakamahia ana

Kia tere ake te mahi me nga puku, ka parea nga raraunga, ara, ka rongoa ki roto i te puhara puhoi kia tae ra ano he waahi watea ki te penapena i nga ihirangi o te papaa ki te puku. Ko nga paearu whai waahi ka whakatauhia e te punaha whakahaere me nga ahuatanga taraiwa. Mena ka ngaro te hiko, ka ngaro nga raraunga katoa i roto i te papaa.

He maha nga mahi e tika ana kia mohio koe kua tuhia nga huringa o te konae ki te puku, kaua hoki e takoto i roto i te papaa takawaenga. Ka taea tenei whakapumautanga ma te whakamahi i te waea punaha fsync-a-POSIX. Ko te waea fsync ka akiaki i te tuhi mai i te kaitarai ki te puku.

Me whakaatu te painga o nga kaitarai me tetahi tauira hangai i te ahua o te kaupapa C poto.

#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;
}

He pai te whakamarama o nga korero i te raupapa o nga mahi i roto i te hotaka. Ko te kupu "te whakautu ki te patai matua o te oranga, te ao me nga mea katoa" ka paopaohia e te punaha whakahaere, a, ki te whakaara ano koe i te kaimau ma te patene i te paatene Tautuhi i te wa o "nga tatauranga", ka noho kau te konae. I roto i to maatau tauira, kaore he raruraru o te ngaro o te kuputuhi, na reira kaore e hiahiatia te fsync. Karekau nga putunga korero e rite ana ki tenei tumanako.

Ko nga raraunga he kaupapa uaua e mahi tahi ana me te maha o nga konae i te wa kotahi, no reira e hiahia ana ratou kia mau tonu nga raraunga ka tuhia e ratou ki runga i te puku, na te mea ko te rite o nga raraunga kei roto i te papaarangi ka whakawhirinaki ki tenei. Kua hoahoatia nga papaunga raraunga ki te tuhi i nga whakawhitinga kua oti katoa me te noho rite mo te mate hiko i nga wa katoa. Ko tenei whanonga e whakahau ana koe ki te whakamahi i te fsync i nga wa katoa i roto i nga rahinga nui.

He aha te pa ki te whakamahi auau o te fsync

Ma te I/O noa, ka ngana te punaha whakahaere ki te arotau i te whakawhitiwhiti korero kopae, na te mea ko nga puku o waho te mea puhoi rawa atu i roto i te arowhai mahara. Na reira, ka ngana te punaha whakahaere ki te tuhi i nga raraunga ka taea i roto i te uru kotahi ki te puku.

Me whakaatu te painga o te whakamahi i te fsync me tetahi tauira motuhake. Kei a maatau nga SSD e whai ake nei hei kaupapa whakamatautau:

  • Intel® DC SSD S4500 480 GB, hono ma SATA 3.2, 6 Gb/s;
  • Samsung 970 EVO Plus 500GB, hono ma PCIe 3.0 x4, ~ 31 Gbps.

Ka whakahaerehia nga whakamatautau i runga i te Intel® Xeon® W-2255 e whakahaere ana i te Ubuntu 20.04. Hei whakamatautau i nga kōpae, ka whakamahia te sysbench 1.0.18. Ko nga kōpae he wehewehenga kotahi kua whakahōputuhia hei ext4. Ko te whakarite mo te whakamatautau ko te hanga i nga konae 100 GB:

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

E whakahaere ana i nga whakamatautau:

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

Ko nga hua whakamatautau ka whakaatuhia ki te ripanga.

Whakamātautau
Intel® S4500
Samsung 970 EVO+

Pānui me te kore fsync, MiB/s
5734.89
9028.86

Tuhia kaore he fsync, MiB/s
3823.26
6019.24

Te panui me te fsync, MiB/s
37.76
3.27

Te tuhi me te fsync, MiB/s
25.17
2.18

He ngawari ki te kite ko te NVMe mai i te wahanga o te kiritaki e arahi maia ana i te wa e whakatau ana te punaha whakahaere me pehea te mahi me nga kōpae, ka ngaro i te wa e whakamahia ana te fsync. Ka puta ake nga patai e rua:

  1. He aha te mea ka nui ake te tere o te panui i te bandwidth tinana o te hononga i roto i te whakamatautau kaore he fsync?
  2. He aha i pai ake ai te waahanga tūmau SSD ki te whakahaere i te maha o nga tono fsync?

He maamaa te whakautu ki te patai tuatahi: ka mahia e te sysbench nga konae kua whakakiia-kore. No reira, i mahia te whakamatautau i runga i te 100 gigabytes o nga kore. I te mea he tino rite nga raraunga me te matapae, ka uru mai nga momo arotautanga OS, a ka tino tere ake te mahi.

Mena ka patai koe ki nga hua katoa o te sysbench, ka taea e koe te whakamahi 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

Whakamātautau
Intel® S4500
Samsung 970 EVO+

Pānui me te kore fsync, MiB/s
45.5
178

Tuhia kaore he fsync, MiB/s
30.4
119

Te panui me te fsync, MiB/s
32.6
20.9

Te tuhi me te fsync, MiB/s
21.7
13.9

Ko te ahua o te hekenga mahi NVMe ina whakamahi ana i te fsync ka tino kitea. Ka taea e koe te neke ki te patai tuarua.

Arotautanga, bluff ranei

I mua ake nei i kii matou kei te rongoa nga raraunga ki roto i te papaa, engari kaore i tohua ko tehea, na te mea ehara i te mea nui. Inaianei ano e kore matou e ruku ki roto i nga ahuatanga o nga punaha whakahaere me te wehe i nga momo papaa e rua:

  • hōtaka;
  • taputapu.

Ko te papaa rorohiko e pa ana ki nga papaa kei roto i te punaha whakahaere, a, ko te parapara taputapu e tohu ana ki te mahara ohorere o te kaiwhakahaere kōpae. Ko te waea a te punaha fsync ka tukuna he whakahau ki te puku ki te tuhi i nga raraunga mai i tana papaa ki te rokiroki matua, engari kaore he huarahi hei whakahaere i te mahi tika o te whakahau.

I te mea he pai ake te mahi a te SSD, e rua nga whakaaro ka taea:

  • kua hangaia te kōpae mo te kawenga o te mahere rite;
  • te kōpae "bluffs" me te wareware i te whakahau.

Ka kitea te whanonga kino o te puku mena ka mahia e koe he whakamatautau me te kore hiko. Ka taea e koe te tirotiro i tenei ma te tuhi. diskchecker.pl, ko tera hanga i roto i te 2005 tau.

E rua nga miihini tinana o tenei tuhinga - "tūmau" me "kiritaki". Ka tuhia e te kiritaki he iti o nga raraunga ki te puku i raro i te whakamatautau, ka waea atu ki a fsync, ka tukuna nga korero a te tūmau mo nga mea i tuhia.

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

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

I muri i te whakahaere i te tuhinga, he mea tika kia whakakorehia te "kiritaki" me te kore e hoki mai te mana mo etahi meneti. He mea nui ki te momotu i te kaupapa whakamatautau mai i te hiko, kaua e mahi noa i te kati kaha. I muri i etahi wa, ka taea te hono te tūmau me te utaina ki te OS. I muri i te whakaoho i te OS, me timata ano koe diskchecker.pl, engari me te tautohetohe tohua.

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

I te mutunga o te haki, ka kite koe i te maha o nga hapa. Mēnā he 0, kātahi ka eke te kōpae ki te whakamātautau. Hei whakakore i te huinga o nga ahuatanga e angitu ana mo te kopae, ka taea te tukurua i nga wa maha.

Ko ta maatau S4500 kaore he hapa ngaronga hiko, ko te tikanga kua reri mo nga kawenga me te maha o nga waea fsync.

mutunga

I te wa e whiriwhiri ana i nga kopae, i nga whirihoranga kua rite katoa ranei, me mahara tonu koe ki nga waahanga o nga mahi hei whakaoti. I te tuatahi o te titiro, ka kitea ko te NVMe, ara, he SSD me te atanga PCIe, he tere ake i te "matarohia" SATA SSD. Heoi ano, kua mohio tatou i tenei ra, i roto i nga ahuatanga motuhake me etahi mahi kaore pea e penei.

Me pehea e whakamatautau ai koe i nga waahanga tūmau ina reti mai i tetahi kaiwhakarato IaaS?
Kei te tatari matou mo koe i roto i nga korero.

He aha te mea he puhoi ake taku NVMe i te SSD?

Source: will.com

Tāpiri i te kōrero