Огромная разница во времени выполнения между запуском YCSB с шифрованием и без него с рабочей нагрузкой E

Я провел несколько тестов с запуском ycsb на предприятии mongodb с шифрованием в состоянии покоя и без него. Я использовал рабочие нагрузки по умолчанию и обнаружил некоторые странные результаты при запуске рабочей нагрузки E.

Без шифрования время выполнения составляло около 13 минут, но когда я переключил его на зашифрованную базу данных, время выполнения подскочило до подозрительных 17 ЧАСОВ!!!

Должно быть что-то не так, но я не могу понять, что это может быть. Все тесты выполняются с подсчетом 100 тыс. операций и 10 млн. счетчиков, и я перезагружаю систему после каждого запуска. Был бы признателен за помощь в выяснении этого


person Nelson Évora    schedule 06.07.2017    source источник


Ответы (1)


YCSB не выполняет шифрование само по себе, но полагается на java-драйвер MongoDB. Вы пробовали документацию MongoDB?

Какой тип шифрования вы используете?

Я не нахожу ваш результат таким уж удивительным. Согласно вашему вопросу, ваш файл рабочей нагрузки выглядит так:

recordcount=10000000
operationcount=100000
readproportion=0
updateproportion=0
scanproportion=0.95
insertproportion=0.05
requestdistribution=zipfian
maxscanlength=100
scanlengthdistribution=uniform

Это очень интенсивная рабочая нагрузка сканирования. Во-первых, сканирование — это самая медленная операция в хранилищах столбцов. Во-вторых, если предположить, что шифрование занимает 250 мс, а дешифрование — 400 мс, то и клиент, и REST-сервер должны делать это для каждой операции, поэтому это займет: (0.25 + 0.4)*100000 секунд, т. е. около 18 часов.

ИЗМЕНИТЬ

Согласно вашим комментариям, вы используете AES256 и сравниваете рабочие нагрузки A и E. Рабочая нагрузка A составляет около 50% чтения и 50% записи. Если вы используете стандартный размер строки YCSB, каждая строка представляет собой 1 КБ (10 полей по 100 байт каждое).

Итак, для 100 тыс. операций вы манипулируете следующими объемами данных:

  • Рабочая нагрузка А: 100000*0.5*1kB + 100000*0.5*1kB = 100 MB
  • Рабочая нагрузка E: 100000*0.95*100*1kB + 100000*0.05*1kB = 9505 MB, потому что ваши сканы представляют 100 строк!

Поскольку AES является дистрибутивным, то есть AES(A + B) = AES(A) + AES(B), вы шифруете в 95 раз больше данных с рабочей нагрузкой E, что объясняет разницу во времени.

person Phenyl    schedule 12.07.2017
comment
Я читал документацию о шифровании, но в ней мало подробностей. - person Nelson Évora; 01.08.2017
comment
Я использую AES256. моя проблема с результатами заключается в том, что это происходит только с рабочей нагрузкой E, например, в рабочей нагрузке A он всего в 7 раз медленнее с шифрованием, а с рабочей нагрузкой E он скачет до 73 раз медленнее. - person Nelson Évora; 01.08.2017
comment
@NelsonÉvora Я отредактировал свой ответ в соответствии с вашим комментарием. Пожалуйста, отредактируйте свой вопрос, чтобы сделать его более ясным. - person Phenyl; 02.08.2017
comment
спасибо за ваш отзыв. это имеет большой смысл - person Nelson Évora; 07.08.2017