Должно ли быть длительным эталонное тестирование?
Важно, чтобы эталонное тестирование занимало разумное время. Если вы заинтересованы в стабильной работе системы, а наверняка это так, то необходимо наблюдать ее в устойчивом состоянии. Это может потребовать неожиданно много времени, особенно на серверах с большим количеством данных и объемной памятью. В большинстве систем есть несколько буферов, которые создают наращиваемую мощность — способность амортизировать пики, откладывая некоторую работу и выполняя ее позже, после того как нагрузка схлынет. Но если вы задействуете эти механизмы в течение длительного времени, буферы переполнятся и вы в конце концов увидите, что система не может выдерживать краткосрочную максимальную нагрузку.
Иногда неизвестно, как долго должен выполняться эталонный тест. В этом случае можете просто запустить его, не ограничивая время, и наблюдать, пока не удостоверитесь, что система начала стабилизироваться. Далее приведен пример того, как мы это делали в незнакомой системе. На рис. 1 показан график временных рядов пропускной способности чтения и записи на диск.
По мере прогрева системы (после 3-4 часов работы) линия, характеризующая процесс чтения, стала устойчивой, тогда как линия, показывающая запись, демонстрировала резкие колебания на протяжении по меньшей мере 8 часов. И даже после этого на графике есть несколько резких колебаний. В дальнейшем процессы как чтения, так и записи, судя по всему, стабилизировались. Эмпирическое правило гласит: ждите, пока система не станет выглядеть устойчивой, по крайней мере на протяжении времени, требующегося для ее разогрева. Мы проводили этот эталонный тест в течение 72 часов, чтобы гарантировать, что получили характеристику поведения системы в долгосрочной перспективе.
Рис. 1. Производительность ввода/вывода во время расширенного эталонного тестирования
Очень распространенная ошибка при эталонном тестировании заключается в том, чтобы запустить серию коротких тестов, например по 60 секунд, и на их основании сделать вывод о производительности системы. Мы слышим много комментариев, таких как «Я попытался провести эталонное тестирование новой версии сервера, и она оказалась не быстрее старой». Изучая реальные эталонные тесты, мы часто обнаруживаем, что они выполнены таким способом, на основании которого нельзя делать подобные выводы. Иногда люди говорят, что у них просто нет времени для эталонного тестирования в течение 8 или 12 часов на десяти различных уровнях параллелизма на двух или трех версиях сервера. Если у вас нет времени для правильного эталонного тестирования, то время на него вы потратили впустую: лучше доверять чужому опыту, чем делать неполный эталонный тест и получать неправильные результаты.