Programistoj de Cloudflare
Cloudflare uzas dm-crypt por ĉifri datumojn pri stokaj aparatoj uzataj por konservi enhavon sur la CDN. Dm-kripto funkcias ĉe la blokaparato kaj ĉifras skribajn I/O-petojn kaj deĉifras legopetojn, funkciante kiel tavolo inter la blokaparato kaj la dosiersistemŝoforo.
Por taksi la agadon de dm-crypt uzante la pakaĵon
Komence, suspekto ekestis pri la uzo de malefikaj algoritmoj en la kerno-kriptosistemo. Sed la testoj uzis la plej rapidan algoritmon, aes-xts, kun 256 ĉifradŝlosiloj, kies agado dum funkciado de la "kriptosetup benchmark" estas pli ol duoble pli alta ol la rezulto akirita dum testado de RAM-disko. Eksperimentoj kun dm-crypt-flagoj por agordado de rendimento ne donis rezultojn: kiam oni uzis la flagon "--perf-same_cpu_crypt", la rendimento eĉ malpliiĝis al 136 MB/s, kaj kiam oni specifis la flagon "--perf-submit_from_crypt_cpus" pliiĝis nur. ĝis 166 MB/s.
Pli profunda analizo de la operacia logiko montris, ke dm-crypt ne estas tiel simpla kiel ŝajnas - kiam skriba peto alvenas de la FS-ŝoforo, dm-crypt ne tuj prilaboras ĝin, sed metas ĝin en la vico "kcryptd", kiu ne estas analizita tuj, sed kiam oportuna momento. De la atendovico, la peto estas sendita al la Linux Crypto API por fari ĉifradon. Sed ĉar la Crypto API uzas nesinkronan ekzekutmodelon, ĉifrado ankaŭ ne estas farita tuj, sed preterpasante alian voston. Post kiam ĉifrado estas kompleta, dm-crypt povas provi ordigi pritraktatajn skribpetojn uzante serĉarbon
Dum legado, dm-crypt unue aldonas peton al la vico "kcryptd_io" por ricevi datumojn de la disko. Post iom da tempo, la datumoj fariĝas disponeblaj kaj estas metitaj en la vico "kcryptd" por malĉifri.
Kcryptd sendas peton al la Linux Crypto API, kiu malĉifras la informojn nesinkrone. Petoj ne ĉiam trairas ĉiujn atendovicojn, sed en la plej malbona kazo, skribpeto finiĝas en vostoj ĝis 4 fojojn, kaj legopeto ĝis 3 fojojn. Ĉiu sukceso al la atendovico kaŭzas prokrastojn, kiuj estas la ŝlosila kialo de la signifa malkresko en dm-crypt-agado.
La uzo de vostoj estas pro la bezono labori en kondiĉoj kie okazas interrompoj. En 2005, kiam la nuna vic-bazita funkcia modelo de dm-crypt estis efektivigita, la Crypto API ankoraŭ ne estis nesinkrona. Post kiam la Crypto API estis translokigita al nesinkrona ekzekutmodelo, esence duobla protekto komencis esti uzata. Vicoj ankaŭ estis lanĉitaj por ŝpari konsumon de la kernstako, sed post ĝia pliiĝo en 2014, ĉi tiuj optimumigoj perdis sian gravecon. Kroma atendovico "kcryptd_io" estis lanĉita por venki la proplempunkton rezultantan en atendado de memorasigno kiam granda nombro da petoj alvenas. En 2015, kroma ordigfazo estis lanĉita, ĉar ĉifrapetoj sur multiprocesorsistemoj povus esti kompletigitaj sen ordo (anstataŭe de sinsekva aliro al la disko, aliro estis aranĝita en hazarda sinsekvo, kaj la CFQ-planisto ne funkciis efike). Nuntempe, uzante SSD-diskojn, ordigo perdis sian signifon, kaj la CFQ-planilo ne plu estas uzata en la kerno.
Konsiderante, ke modernaj diskoj fariĝis pli rapidaj kaj inteligentaj, la sistemo de distribuo de rimedoj en la Linukso-kerno estis reviziita kaj iuj subsistemoj estis restrukturitaj, inĝenieroj de Cloudflare.
Rezulte, dum testado de RAM-disko, eblis pli ol duobligi la rendimenton de dm-crypt - rendimento pliiĝis de 294 MB/s (2 x 147 MB/s) al 640 MB/s, kio estas tre proksima al la agado de nuda ĉifrado (696 MB/s).
Dum testado de ŝarĝo sur realaj serviloj, la nova efektivigo montris efikecon tre proksima al la agordo funkcianta sen ĉifrado, kaj ebligi ĉifradon sur serviloj kun Cloudflare-kaŝmemoro havis neniun efikon al respondrapideco. Estonte, Cloudflare planas translokigi la preparitajn diakilojn al la ĉefa Linukso-kerno, sed antaŭ tio ili devos esti reverkitaj, ĉar ili estas optimumigitaj por specifa ŝarĝo kaj ne kovras ĉiujn aplikajn kampojn, ekzemple ĉifradon en malalta. -potencaj enigitaj aparatoj.
fonto: opennet.ru