Я недавно использовал некоторые базовые тесты, написанные на C#, чтобы попытаться определить причину, по которой некоторые, казалось бы, идентичные удаленные рабочие станции HyperV работают намного медленнее, чем другие. Их результаты по большинству основных тестов, которые я запускаю, были полностью идентичны, но результаты базового теста доступа к базовой памяти (в частности, время, затрачиваемое на инициализацию двумерного массива удвоений 1000x1000 до 0), различаются в 40 раз.Почему мои тесты памяти дают странные результаты?
Для дальнейшего изучения этого вопроса я провел несколько других экспериментов, чтобы еще больше сузить вопрос. Выполнение одного и того же теста с экспоненциально увеличивающимся размером массива (пока не произойдет OutOfMemoryException) не показывает разницы между различными пультами до тех пор, пока размер массива не превысит 1 м, а затем немедленную разницу в 40. Фактически, время, затрачиваемое на инициализацию, увеличивается пропорционально размеру массива до размера массива точно 999999, а затем на «медленных» пультах время увеличивается на 900%, тогда как на «быстрых» пультах уменьшается на 70% по мере достижения размера массива 1000x1000. Оттуда он продолжает масштабироваться пропорционально. То же самое происходит и с размерами массива 1 м х 1 и 1 х 1 м, но в гораздо меньшей степени (изменения + 50% и -30%.
Интересно, что изменение типа данных, используемого для эксперимента, Поплавки, по-видимому, полностью устраняют это явление. Между пультами в любом тесте не происходит никакой разницы, и время, проведенное, кажется, полностью пропорционально даже по точкам останова 1000 * 1000 и 2000 * 2000. Еще одним интересным фактором является то, что локальная рабочая станция, Использование поведения пользователя, похоже, отражает поведение более медленных пультов.
Кто-нибудь знает, какие настройки в конфигурации системы могут вызывать этот эффект и как он может быть изменен или что можно сделать для дальнейшей отладки проблемы?
Все ли рабочие станции имеют ту же конфигурацию оборудования? Обычно правильный ход действий заключается в устранении всех переменных в уравнении. Я обычно делаю это до плохой конфигурации оборудования или просто плохого оборудования. Кстати, это более чем вероятно будет закрыто как _Too Broad_ - я рекомендую конкретно спросить, что можно сделать для отладки и решения этой проблемы. – Qix
Что сказал @Qix. Первое, что я хотел бы проверить, заключается в том, настроены ли виртуальные машины Hyper-V с включенной функцией динамической памяти. –
Можете ли вы предоставить контрольный код? Я часто считаю, что контрольные показатели являются ошибочными. Также проверьте версию исполнения (используйте «детектор версии .NET»). – usr