Замер производительности это запуск цикла for, внутри цикла производится запуск различных функций PHP: abs, floor, addslashes, strtoupper, md5, sha и прочих. Сам балл вычисляется путем деления единицы на затраченное время, которое в свою очередь делится на 500 (чтобы число не было большим). Всё, тестирование окончено. Если не верите, проведите его сами, код простейший . Даже возьмите вот такой код (это реальный код из скрипта для тестирования производительности циклов, в конце только дописал две строки, чтобы видно было время и число операций):
<?php// Инициализация тестирования циклов$start = microtime(true); for($c = 30000000; $c >= 0; $c--);while($c < 30000000) ++$c; // Считаем время выполнения циклов$time = round(microtime(true) - $start, 3);echo $time.' мс<br>'.PHP_EOL;echo round(30000000 / $time).' операций';
Данный код будет выдавать такое же число операций, если тестировать и зашифрованным скриптом.
Вот что вышло у меня:
E3-1270 v3 (3.5 ГГц) - запускал около 10-15 раз, максимальное, что увидел, это было 55 млн операций.
E5530 (2.4 ГГц) - также запускал неоднократно, максимальное число операций - 34 млн.
Разница здесь составила около 1.6 раз. C2750, который получил 50 баллов под рукой нет, но если сравнивать эти три процессора по сайту cpubenchmark.net, то он имеет производительность одного ядра 579, а тот же E3-1270 v3 имеет 2217 баллов. Отсюда и выходит разница как раз около 4 раз.
Если есть какие-нибудь старенькие процессоры, то погоняйте тест с циклом, посмотрите разницу, она правда есть.---------- Добавлено 17.03.2017 в 02:18 ----------Mobiaaa, спасибо, это поясняет моё одно из сообщений, когда при ограничении ресурсов процессора с помощью CloudLinux начинает возрастать Load Average.
treshnyuk, так на мой взгляд как раз всё идеально и показывает реальную производительность.
Всё верно, забили ресурсы 1 ядра процессора, балл упал. Сразу появились уведомления о нехватке ресурсов (конкретно процессора и оперативной памяти, это видно на скриншоте). Сделав тоже самое и выделив все ядра процессора, балл бы не упал, либо упал незначительно, так как каждый процесс обрабатывался бы разными ядрами (или около того). Запустите на всех ядрах процессора потоков 50-100, там также производительность упадет и появятся такие же рекомендации по модернизации сервера.
Когда писал про многопоточность, имел ввиду то, что один запрос к сайту обрабатывается именно одним потоком. Протестировать можно и в несколько потоков, по аналогии как это делает Битрикс при нагрузочном тестировании (делая к сайту много запросов одновременно через JavaScript), но мне такое не особо нравится, в будущем может сделаю такое, если будут просить такой функционал, но с большой пометкой, что это может негативно повлиять на работу сервера и хостер может применить в отношении аккаунта санкции по ограничению ресурсов.
Мыслите как пользователь, он приходит и ставит сайт, он работает хорошо, со временем сервер заполняется, даже так скажем переполняется, сайт начинает тормозить. Пользователь запускает скрипт и смотрит, что процессор загружен сильно, памяти может не хватает, либо процессор висит постоянно в ожидании операций ввода / вывода. Он пишет хостеру, тот принимает меры (может кто-то потребляет все ресурсы сервера и ему их ограничат, либо просто расселяет пользователей по разным серверам). Перед тем, как публиковать скрипт у себя на сайте я провел тестирование некоторых хостеров, самым показательным был Beget, на платных тарифах у них всё нормально было (а сайтов там немало размещено), а вот взяв бесплатный тариф, обнаружил высокую нагрузку и малое число баллов - сервер был достаточно сильно нагружен.
Статистика обязательно будет опубликована, но больше как исследование и когда будет больше результатов (пока что их около 400). Пока все обсуждают Xeon E3 / E5, по производительности делает всех i7-6700. В будущем добавлю пометку по использованию данных процессоров, что они больше для домашнего использования. Мне еще интересен вопрос того, какой способ подключения PHP к веб серверу наиболее производительный.
team-voice, уважаемый, извините, но время тратить на Вас я не буду. У Вас именно замечания к отдельным словам и никакой ценной информации. Поверьте, скрипт нашел своих пользователей и еще найдет.
Как писал ранее, если есть замечания по делу, пишите аргументированные замечания, остальное просто будет игнорироваться.
WapGraf, нашел в старой теме два тестирования для сравнения:
E5645 (2.4 ГГц): 23.78 баллов (/ru/forum/comment/11719205)
E3-1270 (3.5 ГГц): 21 балл (/ru/forum/comment/11755688)
Непонятно, конечно, как были нагружены серверы, но в той теме большинство тестов именно настолько странные. В текущем же скрипте между данными процессорами будет разница около 100 балов (на вскидку), а если нет, то будут написаны причины - процессор загружен, много времени процессор ждет операций ввода вывода и подобное. Тестирование именно адекватное, с пояснениями, по какой причине выставлен именно такой результат.
Поэтому, как писал ранее, если есть какие-то замечания, то высказывайте, но по делу, например, как было с Well-Web и CloudLinux в начале темы.---------- Добавлено 17.03.2017 в 00:57 ----------team-voice, можете придираться к словам сколько угодно, но за 18 667 рублей в месяц - это уже стоимость сервера + администратора для его администрирования :)
На самом деле лично не встречал таких серверов, где при высоком LA сервер работал бы оптимально. Обычно, когда LA выше числа ядер, то уже возникают задержки.
Как писал ранее, формула в скрипте и рекомендации просты:
- LA меньше числа ядер процессора: значение является оптимальным для Вашего сервера
- LA больше числа ядер и меньше двойного числа ядер: значение выходит за оптимальные пределы для Вашего сервера из-за чего скорость работы сайтов может начать деградировать
- LA больше двойного числа ядер: значение критично для Вашего сервера из-за чего скорость работы сайтов может деградировать. Рекомендуем Вам произвести оптимизацию сайтов с целью снижения нагрузки на сервер или перейти на более мощный сервер (обратите внимание на мощность процессора на новом сервере).
В большинстве случаев на мой взгляд именно так, как описано.
Нагрузка на диск по iowait проверяется дополнительно и также выводится уведомление.
Результаты всех тестов тут почти одинаковы, так как все выкладывают только хорошие результаты :)
team-voice, прочитайте, что тестирует скрипт и как он выставляет баллы. Скрипт не тестирует мощность сервера, скрипт делает анализ системы и выдает рекомендации, как можно улучшить его производительность. Что такое производительность - это скорость генерации главной страницы. Генерация страниц зависит от версии PHP и частоты одного ядра, все, на этом можно ставить точку и заканчивать все споры.
Если Вас не волнует генерация Ваших страниц, то можете проходить мимо, скрипт не подходит для Вас.
Если внимательно читали мои же сообщения, то естественно процессор с более высокой частотой обгонит процессор с более меньшей частотой, даже возможно старый, но суть опять же в том, что сам сайт будет работать быстрее на том, где выше частота, другой вопрос, сколько посетителей он потянет.
Еще раз повторюсь - скрипт нацелен на оптимизацию генерации страниц сайтов, тестировать на хостинге 100500 потоков нет смысла, никто их даже не даст использовать. Абсолютно на любом хостинге Вас выгонят при высокой посещаемости за потребление большого числа ресурсов. Однако, если сравнивать обычный сайт на популярной CMS, то работать он будет быстрее там, где частота ядра и версия PHP будет выше, сколько сайтов размещает хостер сайтов на этом сервере, это дело хостера, а не клиента.
WapGraf, что мне именно в скриншотах смотреть? Я в прошлом сообщении написал, что основная проблема была там в неадекватности тестов, мощные процессоры проигрывали старым процессорам десятилетней давности, здесь такого нет.
По потокам, еще раз подчеркну, когда Вы обращаетесь к странице сайта, запрос выполняется в один поток, тестировать 100 потоков не имеет смысл, особенно на виртуальном хостинге.
Если Вы уверены в неадекватности тестирования, предлагаю Вам найти такую систему, где сайт будет работать быстрее на сервере, который получит меньше баллов. Мне вот такого пока не удалось найти.
Замечания готов воспринимать по делу, у Вас же пока что просто пустые слова.
Прошу аргументировать, если товарищ с тестом Битрикс выкладывал неадекватные тесты с какого-нибудь Intel Atom, которые обгоняли Intel Xeon E3-1270, то здесь Вы не получите таких результатов. Где именно тот же самый результат? :)
Вот публичная ссылка с одного из форумов на тестирование процессора Intel Atom C2750: https://tools.lite.company/performance/91bce390-0a25-11e7-8287-001a42d5d624, всего 50 баллов на PHP 7, разве не видно прямолинейной зависимости? 200+ баллов как на E3 этот процессор никогда не получит.
Вы о pthreads? Ни одна из CMS его не использует, когда к сайту приходит запрос, веб сервер исполняет запрос в один поток, один запрос никогда не обрабатывается двумя PHP процессами одновременно, в следствии этого иначе тестирование не имеет смысл. Если у Вас всё хорошо и не видите смысла в тестировании, то рад за Вас, в базе сейчас есть записи c Load Average за 100 на E55XX и E56XX, но естественно тот, кто получил такой результат его тут не опубликовал :)
treshnyuk, так PHP работает только в 1 поток, поэтому в баллах и не видите разницы при низкой нагрузке на каждой предложенной конфигурации, а вот когда на каждом из серверов будет по 100 сайтов, то у Вас число баллов будет меньше, а также будет иной Load Average и будут иные рекомендации из-за этого, скрипт не на столько прост, как Вы думаете ;)