Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

Nā mea hoʻomohala mai Cloudflare haʻi ʻia ma ka hana e hoʻonui i ka hana o ka hoʻopili disk ma ka Linux kernel. ʻO ka hopena, hoʻomākaukau lākou nā pā no ka subsystem dm-crypt a me Crypto API, ka mea i oi aku ma mua o papalua i ka throughput no ka heluhelu a me ke kakau ana i ka synthetic hoao, a me ka halving latency. I ka hoʻāʻo ʻia ʻana ma ka ʻenehana maoli, ua hoʻemi ʻia ka overhead mai ka hoʻopili ʻana a kokoke i ka pae i ʻike ʻia i ka wā e hana ana me kahi disk me ka hoʻohana ʻole ʻana i ka hoʻopili ʻikepili.

Hoʻohana ʻo Cloudflare i ka dm-crypt e hoʻopili i ka ʻikepili ma nā drive i hoʻohana ʻia e hūnā i ka ʻike ma ka CDN. Hana ʻo Dm-crypt i ka pae o ka mea poloka a hoʻopili i nā noi kākau I/O a hoʻokaʻawale i nā noi heluhelu, e hana ana ma ke ʻano he papa ma waena o ka mea poloka a me ka ʻōnaehana waihona.

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

No ka loiloi i ka hana o dm-crypt me ka hoʻohana ʻana i ka pōʻai Mea ho'āʻo I/O maʻalahi ʻO ka wikiwiki o ka hana ʻana me nā ʻāpana i hoʻopili ʻia a i hoʻopaʻa ʻole ʻia ma kahi disk RAM aia ma RAM ua ana ʻia e hoʻopau i nā loli hana disk a nānā i ka hana code. No nā ʻāpana i hoʻopili ʻole ʻia, heluhelu a kākau i ka hana i mālama ʻia ma 1126 MB / s, akā i ka wā i hiki ai ke hoʻopili ʻia, ua emi ka wikiwiki. 7 manawa a he 147 MB/s.

I ka hoʻomaka ʻana, aia kahi kānalua o ka hoʻohana ʻana i nā algorithms inefficient i ka kernel cryptosystem. Akā, ua hoʻohana nā hoʻokolohua i ka wikiwiki aes-xts algorithm me 256 encryption kī, ʻo ka hana i ka wā e holo ana i ka "cryptsetup benchmark" ʻoi aku ma mua o ʻelua mau kiʻekiʻe ma mua o ka hopena i loaʻa i ka wā e hoʻāʻo ai i ka disk RAM. ʻAʻole i loaʻa ka hopena i nā hoʻokolohua me nā hae dm-crypt no ka hoʻokō ʻana i ka hana: i ka wā e hoʻohana ai i ka hae "--perf-same_cpu_crypt", ua emi iho ka hana i 136 MB/s, a i ka wā i loaʻa ai ka hae "--perf-submit_from_crypt_cpus" i kuhikuhi ʻia, ua hoʻonui wale ʻia i 166 MB / s.

Ua hōʻike ʻia kahi loiloi hohonu o ka loiloi o ka hana ʻaʻole maʻalahi ka dm-crypt e like me ka mea i manaʻo ʻia - i ka wā i loaʻa ai kahi noi kākau mai ka mea hoʻokele FS, ʻaʻole hoʻokō koke ʻo dm-crypt iā ia, akā waiho ʻia i ka laina "kcryptd". , ʻaʻole i paʻi koke ʻia, akā i ka manawa kūpono. Mai ka queue, hoʻouna ʻia ka noi i ka Linux Crypto API e hana i ka hoʻopili. Akā no ka hoʻohana ʻana o ka Crypto API i kahi hoʻohālike hoʻokō asynchronous, ʻaʻole i hana koke ʻia ka hoʻopili ʻana, akā ke kaʻe ʻana i kahi laina ʻē aʻe. Ma hope o ka pau ʻana o ka hoʻopili ʻana, hiki i ka dm-crypt ke hoʻāʻo e hoʻokaʻawale i nā noi kākau e kali nei me ka lāʻau ʻimi ʻulaʻulaʻula. I ka hopena, lawe hou kahi kaula kernel ʻokoʻa, me kahi lohi, i nā noi I / O i hōʻiliʻili ʻia a hoʻouna iā lākou i ka hoʻopaʻa ʻana o ka mea poloka.

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

I ka heluhelu mua ʻana, hoʻohui ʻo dm-crypt i kahi noi i ka pila "kcryptd_io" e kiʻi i ka ʻikepili mai ka drive. Ma hope o kekahi manawa, loaʻa ka ʻikepili a waiho ʻia i ka laina "kcryptd" no ka decryption.
Hoʻouna ʻo Kcryptd i kahi noi i ka Linux Crypto API, nāna e hoʻokaʻawale i ka ʻike asynchronously. ʻAʻole hele mau nā noi i nā queues a pau, akā i ka hihia ʻino loa, hoʻopaʻa ʻia kahi noi kākau ma nā pila a hiki i 4 mau manawa, a ʻo kahi noi heluhelu a hiki i 3 mau manawa. ʻO kēlā me kēia pā i ka pila e hoʻolauna i nā lohi, ʻo ia ke kumu nui o ka hoʻohaʻahaʻa hana nui o dm-crypt.

ʻO ka hoʻohana ʻana i nā queues ma muli o ka pono e hana i nā kūlana o nā pilikia. I ka makahiki 2005, i ka wā i hoʻokō ʻia ai ke kumu hoʻohālike dm-crypt i kēia manawa, ʻaʻole i asynchronous ka Crypto API. Ma hope o ka hoʻololi ʻana o ka Crypto API i kahi hoʻohālike hoʻokō asynchronous, ua hoʻomaka ka hoʻohana ʻana i ka pale pālua. Hoʻokomo pū ʻia nā queues e mālama i ka hoʻohana ʻana i ka ʻōpala kernel, akā ma hope o kona hoʻonui ʻana i ka makahiki 2014, ua nalowale ka ʻikepili optimization i kona pili. Ua hoʻokomo ʻia kahi pila "kcryptd_io" e lanakila ai i kahi bottleneck e hoʻomaka ai ka hoʻokaʻawale ʻana i ka hoʻomanaʻo i ka wā e komo mai ai ka nui o nā noi. I ka makahiki 2015, ua hoʻokomo hou ʻia kahi ʻāpana hoʻokaʻawale, ʻoiai ua hiki ke hoʻopau ʻia nā noi hoʻopunipuni ma nā ʻōnaehana multiprocessor (ma kahi o ke komo ʻana i ka disk sequential, ua hana ʻia ke komo ʻana ma ke ʻano maʻamau, a ʻaʻole i hana maikaʻi ka CFQ scheduler). I kēia manawa, ua nalowale ke ʻano o ka hoʻonohonoho ʻana me SSD, a ʻaʻole hoʻohana hou ʻia ka mea hoʻonohonoho CFQ i ka kernel.

Ma muli o ka wikiwiki a me ka maʻalahi o nā drive hou, ua hoʻoponopono hou ʻia ka ʻōnaehana hoʻokaʻawale waiwai i ka kernel Linux a ua hoʻolālā hou ʻia kekahi mau subsystems, Cloudflare engineers. hoʻohui ʻia Loaʻa i ka dm-crypt kahi ʻano hana hou, manuahi mai ka hoʻohana ʻana i nā queues pono ʻole a me nā kelepona asynchronous. Hoʻohana ʻia ke ʻano e kahi hae ʻokoʻa "force_inline" a lawe mai i ka dm-crypt i ke ʻano o kahi proxy maʻalahi e hoʻopili a hoʻokaʻawale i nā noi komo. Ua hoʻonui ʻia ka pilina me ka Crypto API e ke koho kikoʻī o nā algorithm encryption e hana ana ma ke ʻano synchronous a ʻaʻole hoʻohana i nā queues noi. No ka hana synchronous me Crypto API noiʻi ʻia kahi module e hiki ai iā ʻoe ke hoʻohana i ka FPU / AES-NI no ka wikiwiki a hoʻouna pololei i nā noi hoʻopunipuni a me ka decryption.

ʻO ka hopena, i ka hoʻāʻo ʻana i kahi disk RAM, ua hoʻokō mākou i ʻoi aku ma mua o ka pālua o ka hana o ka dm-crypt - ua hoʻonui ʻia ka hana mai 294 MB / s (2 x 147 MB ​​/ s) i 640 MB / s, kahi kokoke loa. i ka hana ʻana o ka hoʻopunipuni ʻole (696 MB / s).

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

I ka ho'āʻoʻana i ka ukana ma nā kikowaena maoli, ua hōʻike ka hoʻokō hou i ka hana kokoke loa i ka holoʻana o ka hoʻonohonoho me ka hoʻopunipuniʻole, aʻo ka hikiʻana i ka hoʻopunipuni ma nā kikowaena me Cloudflare cacheʻaʻole i hoʻololi i ka wikiwiki o ka pane ma kekahiʻano. I ka wā e hiki mai ana, hoʻolālā ʻo Cloudflare e hoʻokuʻu i nā ʻāpana i hoʻomākaukau ʻia i loko o ka kernel Linux nui, akā ma mua o ia mea e pono e hana hou ʻia, no ka mea, ua hoʻopaʻa ʻia lākou no kahi hana a ʻaʻole e uhi i nā wahi āpau o ka noi, no ka laʻana, encryption ma haʻahaʻa. - nā mea i hoʻokomo ʻia i ka mana.

Ua hoʻomākaukau ʻo Cloudflare i nā ʻāpana e wikiwiki wikiwiki i ka hoʻopili disk ma Linux

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka