Я не совсем уверен, что это подходящее место для этого вопроса. Если нет, смело перенесите его туда, где это уместно.
Я тестирую функцию шифрования в ZFS v31 в виртуальной машине Solaris 11.11.11 под ESXi 5.0 на моем лабораторном компьютере. Я получаю ужасные результаты при бенчмаркинге моей зашифрованной папки на dd
11-дисковом 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
При использовании 100% ЦП.
Напротив, без шифрования я получаю скорость записи почти 700 МБ/с и скорость чтения около 900 МБ/с.
Как isainfo -v
показано, aes передается виртуальной машине.
# 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 на самом деле работает и дает мне почти полную скорость при использовании TrueCrypt в моей 64-битной виртуальной машине Windows 7 под ESXi 5.0 с использованием точно таких же спецификаций для виртуальной машины.
Характеристики виртуальной машины:
- Процессор: 2 ядра (Intel Xeon E3-1235 @ 3.2GHz)
- Память: 8 ГБ
- SAS-контроллер (через Vt-d и PCI-passthrough): 2x IBM M1015 (прошиты прошивкой IT)
- Жесткие диски: 11x 2 ТБ Samsung F4EG (через IBM M1015)
С чего начать устранение неполадок? Кто-нибудь успешно использовал ускоренное шифрование AES-NI в Solaris 11 — если да, то как у вас настроено и приходилось ли вам делать что-то особенное?
решение1
AES-NI будет использоваться по умолчанию, и настройка не требуется. ZFS использует интерфейсы Solaris Kernel Cryptographic Framework. Поэтому очень простой фрагмент DTrace сообщит вам, были ли вызваны функции, использующие инструкции Intel aesenc:
#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}
fbt::aes_encrypt_intel:return
{
}
Обратите внимание, что когда мы включили шифрование для ZFS, мы также автоматически переключаем контрольную сумму на sha256-mac. Поэтому более справедливым сравнением будет набор данных ZFS, у которого checksum=sha256, а не checksum=on (то есть fletcher4).
решение2
Я думаю, Даррен ответил на ваш вопрос, но ваши результаты также могут быть искажены ZFS и кэшированием ОС. Хотя использование dd
все еще может быть полезным, было бы полезнее использовать что-то вроде filebench
(pkg benchmark/filebench под Solaris 11).