AES-NI는 Solaris 11에서 ZFS v31 암호화를 가속화합니다.

AES-NI는 Solaris 11에서 ZFS v31 암호화를 가속화합니다.

이곳이 이 질문을 하기에 적합한 장소인지 확신할 수 없습니다. 그렇지 않은 경우에는 적당한 곳으로 자유롭게 옮기십시오.

랩 시스템의 ESXi 5.0에서 Solaris 11.11.11 VM으로 ZFS v31의 암호화 기능을 테스트하고 있습니다. dd11개 디스크 RAIDZ3에서 암호화된 폴더를 테스트할 때 끔찍한 결과를 얻었습니다 .

dd 벤치마크:

# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out

real    1m52.604s
user    0m0.010s
sys     0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out

real    3m15.547s
user    0m0.015s
sys     0m4.768s

번역하면 다음과 같습니다.

Write: 90.94 MB/s
Read: 52.366 MB/s

CPU도 100% 사용합니다.

이에 비해 암호화가 없을 경우 쓰기 속도는 거의 700MB/초, 읽기 속도는 약 900MB/초였습니다.

표시된 대로 isainfo -vaes가 VM에 전달됩니다.

# isainfo -v
64-bit amd64 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp cx16 sse3 sse2 sse
        fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 sse2
        sse fxsr mmx cmov sep cx8 tsc fpu

네, 당신이 무슨 생각을 하는지 알아요. 베어메탈을 시도해 봤어야 했는데, 그렇게 했습니다. 베어메탈에서 실행할 때도 동일한 결과를 얻었습니다. 가상 머신에 있다고 언급한 이유는 AES-NI가 가상 머신과 정확히 동일한 사양을 사용하여 ESXi 5.0의 Windows 7 64비트 가상 머신에서 실제로 거의 최고 속도로 TrueCrypt와 작동하고 작동하기 때문입니다.

가상 머신 사양:

  • CPU: 코어 2개(Intel Xeon E3-1235 @ 3.2GHz)
  • 메모리: 8GB
  • SAS 컨트롤러(Vt-d 및 PCI 패스스루를 통해): IBM M1015(플래시 IT 펌웨어) 2개
  • HDD: 11x 2TB Samsung F4EG(IBM M1015 사용)

문제 해결은 어디에서 시작해야 합니까? Solaris 11에서 AES-NI 가속 암호화를 사용하여 성공한 사람이 있습니까? 그렇다면 설정은 어떠했으며 특별한 작업이 필요했습니까?

답변1

AES-NI는 기본적으로 사용되며 구성이 필요하지 않습니다. ZFS는 Solaris 커널 암호화 프레임워크 인터페이스를 사용합니다. 따라서 매우 간단한 DTrace 비트를 통해 Intel aesenc 명령을 사용하는 함수가 호출되었는지 여부를 알 수 있습니다.

#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}

fbt::aes_encrypt_intel:return
{
}

ZFS에 대한 암호화를 활성화하면 체크섬도 자동으로 sha256-mac로 전환됩니다. 따라서 checksum=on(예: fletcher4)이 아닌 checksum=sha256을 사용하는 ZFS 데이터 세트에 대한 비교가 더 공정합니다.

답변2

Darren이 귀하의 질문에 답변했다고 생각하지만 귀하의 결과는 ZFS 및 OS 캐싱의 영향을 받을 수도 있습니다. 을 사용하는 것도 여전히 유용하지만 (Solaris 11에서는 pkg benchmark/filebench) dd같은 것을 사용하는 것이 더 유용할 것입니다.filebench

관련 정보