Что заставляет одну машину Vista работать в 10 раз быстрее, чем другая?
Мы запускаем консольную программу на Фортране, которую запускаем годами. Недавно мы приобрели идентичные новые машины HP серверного класса (4 процессора, 8 Гб оперативной памяти, 4 жестких диска) для всех в офисе. Мы настроили их одинаково, насколько мы знаем. Мы можем скомпилировать программу Fortran на одной машине, передать исполняемый файл на разные машины, и на двух машинах она выполняется крайне медленно, в то время как на двух других она имеет скромную производительность (но не так хорошо, как до обновления с машин XP).
Он почти не использует консольный вывод (около 40 строк), но выводит около 15 мегабайт файлов.
Мы открываем диспетчер задач, чтобы увидеть, что происходит, и видим, что на медленных машинах он загружает ОДИН ЦП примерно до 15%. На быстрых машинах он загружает ВСЕ ЦП примерно до 40% (но один из них загружается больше, чем другие). Насколько я помню, на XP он загружал процессор до 99% и работал намного быстрее.
Эти машины являются машинами общего назначения для сотрудников, и на них имеется множество вредоносных программ компании. И есть вероятность того, что они имеют немного другую структуру каталогов. Но то, что кажется мне загадочным, так это то, что Vista не дает им больше процессорного времени. Если бы процессоры загружались, я мог бы обвинить изменение производительности в разных структурах каталогов, но не загружать процессоры просто поражало мое мнение.
Дэвид
4 ответа
SWAG, но вы проверили конфигурацию своего антивирусного сканера? Если сканер не настроен на игнорирование типа файла, который вы пишете на медленном компьютере, то каждая запись в эти файлы может быть перехвачена и отсканирована перед записью на диск. Это может привести к тому, что процесс будет находиться в режиме ожидания ввода-вывода и не будет планироваться так часто.
Зайдите в диспетчер задач Windows, Производительность / - Выберите в [Просмотр] опцию: [ Время ядра ] и посмотрите, что отображается на панелях во время выполнения программы.
Если нагрузка на квадроцикл + гиперпоточность составляет всего 15%, что говорит в основном о том, что OpenMP, MPI (или все, что он использует) - не работает должным образом - работает на 1/8 => 15%. Можете ли вы выполнить команду MPI-test для вашей конкретной системы, чтобы проверить наличие ошибок при многопроцессорной обработке на каждом блоке? Поэтому возникает вопрос: почему многопроцессорная среда не работает?
С уважением
БВ
Если в IO есть узкое место, процессор не будет загружен так сильно, потому что он в основном ожидает ввода-вывода. Можно даже вообразить, что это вызовет проблему "один ЦП против многих ЦП", если просто нет смысла пнуть в другой ЦП, потому что между ожиданием достаточно времени. Что, если вы возьмете внешний HD и попробуете, если различия также будут иметь место, если вы запустите одну и ту же программу на этом HD на разных машинах?
В Vista возникла проблема с некоторыми неконтролируемыми утечками памяти, возможно, это ваша ошибка, какой-то конфликт в "программном обеспечении" вызывает утечку памяти, и поэтому ваша программа на Фортране работает намного медленнее?
Я предполагаю, что вы проверили это со всеми программами закончились. Кажется маловероятным, что ваша консольная программа является проблемой. Похоже, что определенно происходит конфликт памяти.