Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Awọn olupilẹṣẹ lati Cloudflare so fun nipa gbigbe ṣiṣẹ lati mu iṣẹ ṣiṣe ti fifi ẹnọ kọ nkan disiki ni ekuro Linux. Bi abajade, wọn ti pese sile awọn abulẹ fun subsystem dm-crypt ati Crypto API, eyiti o jẹ ki o ṣee ṣe lati diẹ ẹ sii ju ilọpo meji kika ati kikọ kikọ ninu idanwo sintetiki, bakanna bi lairi idaji. Nigbati o ba ni idanwo lori ohun elo gidi, fifi ẹnọ kọ nkan dinku si fere ipele ti a ṣe akiyesi nigba ṣiṣẹ pẹlu disiki laisi fifi ẹnọ kọ nkan data.

Cloudflare nlo dm-crypt lati encrypt data lori awọn ẹrọ ibi ipamọ ti a lo lati kaṣe akoonu lori CDN. Dm-crypt n ṣiṣẹ ni ipele ohun elo Àkọsílẹ ati awọn encrypts kọ awọn ibeere I/O ati decrypts awọn ibeere kika, ṣiṣe bi Layer laarin ẹrọ idena ati awakọ eto faili.

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Lati ṣe iṣiro iṣẹ ti dm-crypt nipa lilo package Ayẹwo I/O rọ A ṣe iwọn iyara ti ṣiṣẹ pẹlu awọn ipin ti paroko ati awọn ipin ti a ko pa akoonu lori disiki Ramu ti o wa ni Ramu lati yọkuro awọn iyipada ninu iṣẹ disiki ati idojukọ lori iṣẹ koodu. Fun awọn ipin ti ko paro, iṣẹ kika ati kikọ wa ni 1126 MB/s, ṣugbọn iyara dinku nigbati fifi ẹnọ kọ nkan ṣe. 7 igba ati ki o amounted 147 MB ​​/ s.

Ni akọkọ, ifura dide nipa lilo awọn alugoridimu aiṣedeede ninu ekuro cryptosystem. Ṣugbọn awọn idanwo naa lo algoridimu ti o yara ju, aes-xts, pẹlu awọn bọtini fifi ẹnọ kọ nkan 256, ti iṣẹ rẹ nigbati o nṣiṣẹ “aṣepari cryptsetup” jẹ diẹ sii ju ilọpo meji bi abajade ti o gba nigba idanwo disk Ramu kan. Awọn idanwo pẹlu awọn asia dm-crypt fun ṣiṣatunṣe iṣẹ ko mu awọn abajade jade: nigba lilo asia “--perf-same_cpu_crypt”, iṣẹ ṣiṣe paapaa dinku si 136 MB/s, ati nigbati o ṣalaye asia “--perf-submit_from_crypt_cpus” o pọ si nikan to 166 MB / s.

Ayẹwo ti o jinlẹ ti ọgbọn ṣiṣe fihan pe dm-crypt ko rọrun bi o ti dabi - nigbati ibeere kikọ ba de lati ọdọ awakọ FS, dm-crypt ko ṣe ilana lẹsẹkẹsẹ, ṣugbọn gbe e sinu isinyi “kcryptd”, eyiti ko ṣe itupalẹ lẹsẹkẹsẹ, ṣugbọn nigbati o ba rọrun. Lati isinyi, ibeere naa ni a firanṣẹ si Linux Crypto API lati ṣe fifi ẹnọ kọ nkan. Ṣugbọn niwọn igba ti Crypto API nlo awoṣe ipaniyan asynchronous, fifi ẹnọ kọ nkan tun ko ṣe lẹsẹkẹsẹ, ṣugbọn o kọja isinyi miiran. Lẹhin fifi ẹnọ kọ nkan ti pari, dm-crypt le gbiyanju lati to awọn ibeere kikọ ni isunmọtosi ni lilo igi wiwa kan pupa-dudu. Ni ipari, okun ekuro lọtọ lẹẹkansi, pẹlu idaduro kan, gbe awọn ibeere I/O ti a kojọpọ ati firanṣẹ si akopọ ohun elo idina.

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Nigbati kika, dm-crypt akọkọ ṣafikun ibeere kan si isinyi “kcryptd_io” lati gba data lati inu awakọ naa. Lẹhin akoko diẹ, data naa wa ati pe a gbe sinu isinyi “kcryptd” fun decryption.
Kcryptd firanṣẹ ibeere kan si Lainos Crypto API, eyiti o sọ alaye naa di asynchronously. Awọn ibeere ko nigbagbogbo lọ nipasẹ gbogbo awọn ila, ṣugbọn ni oju iṣẹlẹ ti o buruju, ibeere kikọ pari ni awọn ila titi di awọn akoko 4, ati ibeere kika to awọn akoko 3. Kọlu kọọkan si isinyi nfa awọn idaduro, eyiti o jẹ idi pataki fun idinku pataki ninu iṣẹ dm-crypt.

Lilo awọn ila jẹ nitori iwulo lati ṣiṣẹ ni awọn ipo nibiti awọn idilọwọ waye. Ni ọdun 2005, nigbati awoṣe iṣẹ orisun isinyi lọwọlọwọ dm-crypt ti wa ni imuse, Crypto API ko tii ṣe asynchronous. Lẹhin ti Crypto API ti gbe lọ si awoṣe ipaniyan asynchronous, pataki aabo ilọpo meji bẹrẹ lati ṣee lo. A tun ṣe agbekalẹ awọn ila lati ṣafipamọ agbara ti akopọ ekuro, ṣugbọn lẹhin ilosoke rẹ ni ọdun 2014, awọn iṣapeye wọnyi padanu ibaramu wọn. A ṣe agbekalẹ isinyin afikun “kcryptd_io” lati bori igo ti o yorisi iduro fun ipin iranti nigbati nọmba nla ti awọn ibeere ba de. Ni ọdun 2015, a ṣe agbekalẹ ipele titọpa afikun, nitori awọn ibeere fifi ẹnọ kọ nkan lori awọn ọna ṣiṣe multiprocessor le pari ni aṣẹ (dipo wiwọle lẹsẹsẹ si disiki, iwọle ti ṣe ni aṣẹ laileto, ati oluṣeto CFQ ko ṣiṣẹ daradara). Lọwọlọwọ, nigba lilo awọn awakọ SSD, tito lẹsẹsẹ ti padanu itumọ rẹ, ati pe oluṣeto CFQ ko lo ninu ekuro.

Ṣiyesi pe awọn awakọ ode oni ti yiyara ati ijafafa, eto pinpin awọn orisun ninu ekuro Linux ti tun ṣe atunṣe ati pe diẹ ninu awọn eto abẹlẹ ti tun ṣe, awọn onimọ-ẹrọ Cloudflare fi kun dm-crypt ni ipo iṣẹ tuntun ti o yọkuro lilo awọn ila ti ko wulo ati awọn ipe asynchronous. Ipo naa ṣiṣẹ nipasẹ asia ti o yatọ “force_inline” ati mu dm-crypt wa si irisi aṣoju ti o rọrun ti o encrypts ati decrypts awọn ibeere ti nwọle. Ibaraṣepọ pẹlu Crypto API ti jẹ iṣapeye nipasẹ yiyan awọn algoridimu fifi ẹnọ kọ nkan ni ṣoki ti o nṣiṣẹ ni ipo amuṣiṣẹpọ ati pe ko lo awọn laini ibeere. Lati ṣiṣẹ ni iṣiṣẹpọ pẹlu Crypto API wa daba module ti o fun laaye lati lo FPU/AES-NI fun isare ati ki o taara siwaju ìsekóòdù ati decryption ibeere.

Bi abajade, nigba idanwo disiki Ramu kan, o ṣee ṣe lati diẹ sii ju ilọpo meji iṣẹ ti dm-crypt - iṣẹ pọ si lati 294 MB/s (2 x 147 MB/s) si 640 MB/s, eyiti o sunmo pupọ si awọn iṣẹ ti igboro ìsekóòdù (696 MB / s).

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

Nigbati idanwo fifuye lori awọn olupin gidi, imuse tuntun fihan iṣẹ ṣiṣe ti o sunmọ si iṣeto ti nṣiṣẹ laisi fifi ẹnọ kọ nkan, ati fifi ẹnọ kọ nkan ṣiṣẹ lori awọn olupin pẹlu kaṣe Cloudflare ko ni ipa lori iyara esi. Ni ọjọ iwaju, Cloudflare ngbero lati gbe awọn abulẹ ti a pese silẹ si ekuro Linux akọkọ, ṣugbọn ṣaaju pe wọn yoo nilo lati tun ṣiṣẹ, nitori wọn jẹ iṣapeye fun ẹru kan pato ati pe ko bo gbogbo awọn agbegbe ti ohun elo, fun apẹẹrẹ, fifi ẹnọ kọ nkan lori kekere. -agbara ifibọ awọn ẹrọ.

Cloudflare ti pese awọn abulẹ ti o mu iyara fifi ẹnọ kọ nkan disiki ni Linux

orisun: opennet.ru

Fi ọrọìwòye kun