У меня есть 2 сервера с разными спецификациями, но оба они используют одно и то же приложение.
Сервер 1 - это Hyper-V с 2 x 2,4 ГГц, сервер - это VPS и имеет 2 x Intel Xeon CPU E55402.53 ГГц.
У меня есть универсальный обработчик, который берет некоторые вещи из формы и обрабатывает некоторые данные в списке некоторых объектов параллельно, используя Parallel.For.Я использую по умолчанию MaxDegreeOfParallelism.Ничего странного.
Но ... Когда я включил некоторую регистрацию, чтобы выяснить, почему второй сервер лучше (быстрее) делает то же, что и первый сервер, результаты не соответствуют тому, что вы обычно делаете.думаю, что реальность должна быть такой.
«Проблема» в том, что у меня есть журналы с сервера 1, которые выглядят так (отрывок):
ÖVERKALIX -> table.Select [1]: 78,125 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
ÖVERKALIX -> таблица. Выберите [1]: 62,5 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
ÖVERTORNEÅ -> table.Select [1]: 62,5 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
ÖVERTORNEÅ -> table.Select [1]: 78,125 мс doubles.AddRange:Результаты 0 мс [0]: 0 мс
Всего серверных атрибутов exekvera 592 Время: 20062,5 мс
И журнал второго (например, отрывок):
ÖVERKALIX -> table.Select [1]: 99 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
ÖVERKALIX -> table.Select [1]: 103 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
ÖVERTORNEÅ -> table.Select [1]: 100 мс doubles.AddRange: 0 мс результатов [0]: 0мс
ÖVERTORNEÅ -> таблица. Выберите [1]: 104 мс doubles.AddRange: 0 мс результатов [0]: 0 мс
Всего серверных атрибутов exekvera 592 фрез: 4479 мс
Если вы посмотрите на это, то увидите, что здесь что-то странное.Первый сервер выполняет все отдельные запросы быстрее, чем второй сервер, но общее время всех запросов превышает второй сервер ...
ПОЧЕМУ?
Обычно вы думаете, что если нужно выполнить n операций, а каждая операция занимает t мс, то общее время этих операций НИКОГДА не должно быть больше, чем если бы у вас было n операций, для которых требуется каждая операция (например,) (t + 1) мс.
Но в любом случае, у нас есть записи, в которых говорится, что верно, что t> (t + 1).Я разочарован!Ну, я не эксперт, но это невозможно:)
Итак, что вы думаете по этому поводу?
Это из-за чего-то гиперпоточного?
Это потому, что для создания нового потока на первом сервере требуется больше времени (это кажется наиболее разумным ответом)?
Если это связано с проблемами создания потока, есть лиКак я могу измерить это?
ОБНОВЛЕНИЕ:
Я углубился в проблему, и возникла закономерность.Вот некоторые данные с сервера 1 (время в мс):
78,125 187,5 78,125 93,75 750 62,5 62,5 62,5 78,125 46,875 78,125 46,875 1203,125 62,5 1125 78,125 2500 62,5 46,875 78,125 62,5 62,5 1484,375 62,5 62,5 1437,5 62,5 78,125
И вот те же запросы, выполняемые на сервере 2:
104 104 156 116 117 116 114 115 112 107 110 112 164 128 128 124 112 111 99 104 109 105 241 115 116 115 112 112
Как видите, сервер 1 работает быстрее, но иногда (например, значения: 1203.125, 1484.375 и 2500) он занимает намного больше времени, чем сервер 2.
Итак, кажется, что сервер 1 работаетбыстрее для небольшого набора запросов, а сервер 2 быстрее (более плавный?) или большой набор запросов?
Можно ли сделать какие-либо выводы из этих чисел?
Почему мы видим эти различия?
Заранее спасибо!