Как измерить всё?

Нередко клиенты к нам обращаются с формулировками вида “всё плохо” или “нет каких-то отдельных долгих операций, медленно работает всё”. Как замерять всё?

Возможно, вы ещё не сталкивались с такой ситуацией, но мы думаем, что вы с ней столкнётесь. Продавцы железа, которое вы приобрели, утверждают что оно замечательное. Продавцы ОС и бизнес-приложений тоже говорят, что у них всё хорошо работает. Согласно рекомендациям из книжки 1С-Эксперта, вы посмотрели: нет ли ярко выраженной долгой операции, и в коде нет явно лидирующих операций. Возможно, ваша виртуалка тоже замечательная. Нет ожиданий ни на процессоре, ни на дисках, ни на СУБД!
На бумаге всё замечательно, а по факту работает очень медленно.
Для решения проблемы в качестве начальной точки отсчёта мы много лет назад разработали тест, который стал в среде 1С-ников известен как “тест Гилёва”, и показывает способность системы выполнять эталонный объём работы за единицу времени. Можно по-разному объяснять популярность теста, но лучше мы покажем практические примеры его применения.
Приведу один из наиболее ярких примеров, когда благодаря этому тесту мы смогли с минимальными затратами денег и времени выявить проблему с аппаратной частью сервера:
Есть некий сервер в виртуальной среде, внутри сервера по счётчикам всё в рамках приличий — ровно как я и говорил чуть раньше: нет ожиданий на процессоре, нет ожиданий на дисках, нет ожиданий на СУБД. При этом в 1С всё работает страшно медленно и очень печально. Простой документ открывается по 5 секунд, а проводится 10 секунд, простой отчёт формируется по 30 секунд, при этом опять же замеры в 1С не показывают каких-то мега-лидирующих операций, просто всё выполняется долго. Пользователи очень недовольны, требуют жертвоприношений. Оборудование сервера при этом достаточно адекватное нагрузке, на других проектах с подобным оборудованием у пользователей картина производительности радикально лучше.
Результат нашего теста на тот момент составил абсолютный антирекорд, меньше мы за несколько лет ещё не встречали.
В очередной раз мы пронаблюдали, что оценка теста хорошо коррелирует с оценкой комфортности работы пользователей. Следственные действия внутри сервера не выявили явных виновников, поэтому попробовали искать их снаружи. Решили проверить фактор виртуальной среды, использованной клиентом. У клиента был ещё один сервер с аналогичным оборудованием, попросили развернуть на нём такую же систему, но без виртуализации, так сказать на голом железе. Результат нашего теста вырос во много раз по сравнению со своим виртуализованным двойником. Пользователи немедленно обнаружили, что без виртуализации всё летает, документы открываются и проводятся за секунду, отчёты формируются за несколько секунд.
Рассмотрим ещё один пример применения нашего теста для оценки влияния среды.
Вот сервер клиента, с неким процессором он дал результат в 12 баллов. По субъективной оценке нашего теста, это соответствует оценке “Плохо”. При этом настройки электропитания в Windows выставлены в “максимальная производительность”. Утилита CPU-Z показывает номинальную частоту процессора, то есть заявлено 2 ГГц, и показывает 2 ГГц. Ну то есть вроде бы всё выглядит прилично, как заявлено — так и работает.
Если немного отвлечься в теорию, то частота процессора — это количество операций, выполняемых процессором в единицу времени (сферически). Наш тест позволяет увидеть — за сколько времени в реальной жизни одни и те же процессоры выполняют одну и ту же работу на разных серверах разных клиентов. В теории одинаковые процессоры с одинаковой частотой, выполняя одну и ту же работу, должны выдавать один и тот же результат. Но в жизни всё сложнее. Есть дополнительные факторы, которые оказывают влияние на скорость. В рассматриваемом примере тест выдал значение в два раза меньше, чем наблюдалось на других серверах с таким же процессором. На скорость работы процессора могут значительно влиять настройки BIOS, которые по умолчанию могут быть нацелены на энергосбережение в ущерб производительности. К примеру, включение технологии Turbo Boost у процессора по нашим наблюдениям даёт прирост результатов теста от 10 до 20%, а изменение настроек электропитания с “оптимальных или сбалансированных” на “максимальная производительность” — до двух раз, что в нашем случае и произошло, результат теста в общем итоге улучшился в два раза и составил 24 балла. Производительность 1С также соответственно выросла.
Вообще, в характеристиках оборудования может быть чересчур много маркетинга. Что мешает вендору слегка приукрасить преимущества и скрыть недостатки? Зато у вас есть наш тест, и вы можете сравнить разницу в производительности различного оборудования применительно к задачам 1С и в составе настроек этого оборудования.
Вот я рассказал два примера, а теперь ещё раз: как интерпретировать результат теста. Тест только показывает способность системы выполнить некий эталонный объём работы за единицу времени. Что является одним или несколькими факторами замедлений — тест не показывает. Более того, узкие места есть всегда. Они могут ухудшать работу как значительно, так и быть совсем незаметными.
Небольшие цифры баллов в тесте может быть косвенным признаком значимости узкого места.
Как вы возможно поняли, тест является синтетическим. Если у вас стоит потребность оценить скорость выполнения именно вашего объёма работы, который может совершенно по-другому исполняться на оборудовании, то конечно вам нужно написать свой тест. Он будет не универсальным, но даст точную оценку именно для вашей задачи.
25 баллов в нашем тесте для одного сервера может быть отличным достижением, в то время как 25 баллов для другого сервера достаточно плохо.
Ценность теста — в накопленной за многие годы статистике, которая позволяет для вашего конкретного компьютера сформировать сравнительную оценку. Неожиданным положительным побочным эффектом нашего теста оказалась возможность оценивать влияние такого фактора, как версия платформы 1С Предприятия. Не наша заслуга, но пользователи нашего теста на основе полученных результатов в своё время массово обратились в фирму 1С с жалобой на проседание скорости в очередном релизе платформы 1С:Предприятие. Падение производительности объективно можно было оценить только благодаря такой обширной статистике, что позволило фирме 1С не тратить много сил на перепроверку достоверности жалоб и успешно выпустить новый более быстрый релиз.
Не удивляйтесь, если наш тест покажет невысокие значения при том, что по отдельности каждая компонента должна работать быстрее. Влиять на конечную скорость может всё, даже несовместимость этих компонентов. Можно сверхбыстрый SSD подключить к шине SATA2 и урезать его скорость. А может сложиться и ещё хуже.