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:
- 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?
- 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.
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.
Source: will.com