Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Mga developer gikan sa Cloudflare gisulti mahitungod sa pagbuhat sa trabaho aron ma-optimize ang performance sa disk encryption sa Linux kernel. Tungod niini, nangandam sila mga patsa alang sa subsystem dm-crypt ug Crypto API, nga nagpaposible sa labaw pa sa doble sa pagbasa ug pagsulat sa throughput sa sintetikong pagsulay, ingon man ang pagtunga sa latency. Kung gisulayan sa tinuud nga hardware, ang overhead sa pag-encrypt gipamubu sa hapit ang lebel nga naobserbahan kung nagtrabaho sa usa ka disk nga wala’y data encryption.

Ang Cloudflare naggamit sa dm-crypt aron ma-encrypt ang datos sa mga storage device nga gigamit sa pag-cache sa sulod sa CDN. Ang Dm-crypt naglihok sa lebel sa block device ug nag-encrypt sa pagsulat sa mga hangyo sa I/O ug nag-decrypt sa mga hangyo sa pagbasa, nga naglihok isip usa ka layer tali sa block device ug sa file system driver.

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Aron masusi ang pasundayag sa dm-crypt gamit ang package Flexible nga I/O tester Among gisukod ang katulin sa pagtrabaho sa mga naka-encrypt ug wala ma-encrypt nga mga partisyon sa usa ka RAM disk nga nahimutang sa RAM aron mawagtang ang mga pag-usab-usab sa performance sa disk ug pag-focus sa performance sa code. Alang sa wala ma-encrypt nga mga partisyon, ang pasundayag sa pagbasa ug pagsulat nagpabilin sa 1126 MB / s, apan ang katulin mikunhod kung ang pag-encrypt gipagana. 7 ka beses ug mikabat sa 147 MB/s.

Sa sinugdan, mitungha ang pagduda bahin sa paggamit sa dili maayo nga mga algorithm sa kernel cryptosystem. Apan gigamit sa mga pagsulay ang labing paspas nga algorithm, aes-xts, nga adunay 256 nga mga yawe sa pag-encrypt, kansang pasundayag kung gipadagan ang "cryptsetup benchmark" labaw pa sa doble nga kataas sa resulta nga nakuha sa pagsulay sa usa ka RAM disk. Ang mga eksperimento sa dm-crypt nga mga bandila alang sa performance tuning wala maghatag og mga resulta: sa dihang naggamit sa "--perf-same_cpu_crypt" nga bandila, ang performance mikunhod ngadto sa 136 MB / s, ug sa dihang nag-specify sa "--perf-submit_from_crypt_cpus" nga bandila kini misaka lamang ngadto sa 166 MB/s.

Ang usa ka mas lawom nga pag-analisar sa operating logic nagpakita nga ang dm-crypt dili ingon ka yano sama sa kini - kung ang usa ka hangyo sa pagsulat moabut gikan sa drayber sa FS, ang dm-crypt dili dayon magproseso niini, apan ibutang kini sa "kcryptd" nga pila, nga dili parsed diha-diha dayon, apan sa diha nga kombenyente nga higayon. Gikan sa pila, ang hangyo gipadala sa Linux Crypto API aron mahimo ang pag-encrypt. Apan tungod kay ang Crypto API naggamit sa usa ka asynchronous execution model, ang pag-encrypt wala usab gihimo dayon, apan gilaktawan ang lain nga pila. Human makompleto ang encryption, ang dm-crypt mahimong mosulay sa paghan-ay sa pending nga mga hangyo sa pagsulat gamit ang search tree pula-itom. Sa katapusan, ang usa ka separado nga kernel thread pag-usab, uban ang usa ka piho nga paglangan, mokuha sa natipon nga I/O nga mga hangyo ug ipadala kini ngadto sa block device stack.

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Kung nagbasa, ang dm-crypt una nga nagdugang usa ka hangyo sa "kcryptd_io" nga pila aron makadawat mga datos gikan sa drive. Human sa pipila ka panahon, ang datos mahimong magamit ug ibutang sa "kcryptd" nga pila para sa decryption.
Ang Kcryptd nagpadala usa ka hangyo sa Linux Crypto API, nga nag-decrypt sa kasayuran nga asynchronously. Ang mga hangyo dili kanunay nga moagi sa tanan nga mga pila, apan sa pinakagrabe nga sitwasyon, ang usa ka hangyo sa pagsulat natapos sa mga pila hangtod sa 4 ka beses, ug usa ka hangyo sa pagbasa hangtod sa 3 ka beses. Ang matag hit sa pila hinungdan sa mga paglangan, nga mao ang hinungdan nga hinungdan sa hinungdanon nga pagkunhod sa pasundayag sa dm-crypt.

Ang paggamit sa mga pila tungod sa panginahanglan sa pagtrabaho sa mga kondisyon diin adunay mga pagkabalda. Sa 2005, sa diha nga ang dm-crypt sa kasamtangan nga queue-based operating modelo gipatuman, ang Crypto API dili pa asynchronous. Human mabalhin ang Crypto API ngadto sa usa ka asynchronous execution model, ang doble nga proteksyon nagsugod sa paggamit. Gipaila usab ang mga pila aron makatipig sa konsumo sa kernel stack, apan pagkahuman sa pagtaas niini sa 2014, kini nga mga pag-optimize nawala ang ilang kalabotan. Usa ka dugang nga pila nga "kcryptd_io" ang gipaila aron mabuntog ang bottleneck nga moresulta sa paghulat sa alokasyon sa memorya kung moabut ang daghang mga hangyo. Sa 2015, usa ka dugang nga yugto sa paghan-ay ang gipaila, tungod kay ang mga hangyo sa pag-encrypt sa mga sistema sa multiprocessor mahimong makompleto nga wala’y kahusay (imbes nga sunud-sunod nga pag-access sa disk, ang pag-access gihimo sa random nga pagkasunud-sunod, ug ang CFQ scheduler wala molihok nga epektibo). Sa pagkakaron, kung gigamit ang SSD drive, ang pag-sort nawala ang kahulogan niini, ug ang CFQ scheduler wala na gigamit sa kernel.

Sa pagkonsiderar nga ang modernong mga drive nahimong mas paspas ug mas maalamon, ang sistema sa pag-apod-apod sa kahinguhaan sa Linux kernel gibag-o ug ang pipila ka mga subsystem gidesinyo pag-usab, ang mga inhenyero sa Cloudflare gidugang Ang dm-crypt adunay bag-ong operating mode nga nagwagtang sa paggamit sa dili kinahanglan nga mga pila ug asynchronous nga mga tawag. Ang mode gipalihok sa usa ka bulag nga bandila "force_inline" ug nagdala sa dm-crypt sa porma sa usa ka yano nga proxy nga nag-encrypt ug nag-decrypt sa umaabot nga mga hangyo. Ang interaksyon sa Crypto API na-optimize pinaagi sa dayag nga pagpili sa mga algorithm sa pag-encrypt nga naglihok sa synchronous mode ug wala mogamit sa mga pila sa hangyo. Aron magtrabaho nga dungan sa Crypto API adunay gisugyot usa ka module nga nagtugot kanimo sa paggamit sa FPU/AES-NI alang sa pagpadali ug direkta nga ipasa ang mga hangyo sa encryption ug decryption.

Ingon sa usa ka resulta, sa diha nga ang pagsulay sa usa ka RAM disk, kini mao ang posible nga labaw pa kay sa doble sa performance sa dm-crypt - performance misaka gikan sa 294 MB/s (2 x 147 MB/s) ngadto sa 640 MB/s, nga mao ang kaayo duol sa ang pasundayag sa hubo nga pag-encrypt (696 MB / s).

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Kung ang pagsulay sa load sa tinuod nga mga server, ang bag-ong pagpatuman nagpakita sa performance nga duol kaayo sa configuration nga nagdagan nga walay encryption, ug ang pagpa-enable sa encryption sa mga server nga adunay Cloudflare cache walay epekto sa response speed. Sa umaabot, nagplano ang Cloudflare nga ibalhin ang giandam nga mga patch sa panguna nga kernel sa Linux, apan sa wala pa kini kinahanglan nga buhaton pag-usab, tungod kay kini gi-optimize alang sa usa ka piho nga pagkarga ug wala gisakup ang tanan nga mga lugar sa aplikasyon, pananglitan, pag-encrypt sa ubos. -gahum nga naka-embed nga mga aparato.

Nag-andam ang Cloudflare og mga patch nga makapadali sa pag-encrypt sa disk sa Linux

Source: opennet.ru

Idugang sa usa ka comment