Bohužel nemám sestavu s více jádry/procesory, abych to otestoval. Ale, pokud tomu správně rozumím, pak šifrování/dešifrování provádí jediný proces (resp. jeden proces na každou šifrovanou jednotku). Takže z více jader můžete těžit maximálně v situaci, kdy máte více šifrovaných jednotek.
Zaklad paralell computingu je v tomto pripade rozdelit task na mensi bloky dat. Core #1 muze pote operovat jen s urcitou casti, zbytek totiz provede core #2. Teoreticky neomezeny pocet chunku lze paralelne decryptovat ve stejny cas, v praxi by se take hodilo aby Intel quadcore nebyly 2 slepene dual core sdilejici stejnou cache.
Presne toto chovani jsem videl i ja.. takze pokud mate 4 disky v raid5 schopne prenosu (4-1)*90M/s tak pri zapnuti sifrovani klesa rychlost z tech 270 na 30M/s kvuli single-thread sifrovani. Doufam ze nekdo udela vicejadrovy dm-crypt, protoze kazdy blok lze samozrejm sifrovat na jinem procesoru :) a tech 4x30 = 120M/s na quadcore by bylo fajn. Taktez na 8-way SMP by byla rychlost lepsi.. pripadne by to chtelo hw akceleraci, treba pres PCIE kartu (co tak obetovat nejakou phys-x nebo gpgpu na tento ucel?;)
A nebo na šifrování použít procesor VIA C3 nebo lépe C7 s HW podporou AES ;-) Mám domácí server s C7 1,5GHz na něm disky zašifrované AES dm-cryptem a když z něj tahám přes FTP 70MB/s (skutečně cca 550Mbps), tak dm-crypt vytěžuje CPU na 25% (a proftpd si bere dalších cca 15%).
Paralelni sifrovani (crypt vlakna per procesor) se menilo v ruznych jadrech, nebudu popisovat duvody pro se to zmenilo, ale momentalne:
- kernel 2.6.24 dm-crypt a vys pouziva pro jedno sifrovane zarizeni 2 vlakna, jedno slouzi pro sifrovani, jedno pro io operace.
- kernel 2.6.25 pridava podporu asynchronniho crypto rezimu. az nekdo napise driver pro hw, ktery umi paralelne sifrovat, pouzije se automaticky (kolik pozadavku hw prijme paralelne, tolik se mu posle requestu). ale zatim takovy driver zadny neni...
jinak podpora hw funguje i normalne - VIA Padlock a AMD Geode jsou v kernelu podporovany, takze pokud jsou nahrany spravne moduly, dm-crypt je pres kernel CryptoAPI pouzije.
Obecne (s temito jadry) plati, ze je dm-crypt optimalizovany pro provoz podobny sifrovani na notebooku (tj. zatezuje hlavne jeden core na procesoru. neco musime nechat pro to prehravani mp3, ze :)
Na viceprocesorovem serveru (a s RAID zvysujicim propustnost disku navic) vykon neni optimalni, to je znamy problem, a casem se urcite vyresi - bud primo dlasimi vlakny v dm-cryptu nebo paralelnim zpracovanim v crypto vrstve. (rad bych, aby to bylo nekjak konfigurovatelne - tj. napriklad kolik vlaken se pro sifrovani pouzije nebo tak nejak)