Mga developer gikan sa Cloudflare
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.
Aron masusi ang pasundayag sa dm-crypt gamit ang package
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
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
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).
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.
Source: opennet.ru