3

Машина с Windows XP страдает от низкой производительности во время поддерживаемого ввода-вывода, по сети или на диске. Загрузка процессора и памяти минимальна, использование системных + прерываний <5% согласно Process Explorer. Использование памяти <20% (из 4 ГБ). Поддерживаемые дисковые или сетевые операции ввода-вывода ~ 150 КБ / с или выше вызывают серьезные замедления. Наиболее заметно приложения (все приложения) запускаются очень медленно (маленькому приложению Hello World C, скомпилированному с MinGW, потребовалось 12 секунд, чтобы отобразить сообщение printf () и выйти.)

Это нормально? Если нет, что происходит? Это не максимально возможный ввод / вывод ...Я могу легко достичь что-то вроде 100 МБ / с для жесткого диска и 5 МБ / с в сети, но все, что превышает ~ 150 КБ / с, приводит к такому поведению.

Dell Inspiron 1545, Intel P8600 Core2 Duo @ 2,4 ГГц, 4 ГБ ОЗУ, 500 ГБ HDD

2 ответа2

3

Я подозреваю, что вы видите нормальное поведение ПК с Windows относительно дискового ввода-вывода. Для возможного подтверждения мне удалось сравнить два компьютера под управлением Windows 7, которые имеют очень похожие индексы работы Windows (указывает?). Первый ПК - это ноутбук Thinkpad, похожий на ваш, с P8600 @ 2,4 ГГц и 2,5 "SATA II 5400 об / мин. Другой ПК представляет собой настольный компьютер с двухъядерным процессором Athlon 64 X2 3800+ и 3,5-дюймовым диском SATA 7200 об / мин. Я бы запустил локальную копию большого (несколько гигабайт) файла на диск; пока копировалась эта копия файла, я пытался запустить прикладную программу. Типичная задержка для обоих ПК составляла порядка 10–20 секунд (задержка, вероятно, могла быть соотнесена с размером приложения).

Поскольку настольный ПК имеет два жестких диска, я также смог выполнить копирование файла на один диск и затем загрузить приложение с другого жесткого диска; с двумя независимыми дисководами приложения запускались примерно через 2-5 секунд.

Вы упоминаете, что эта проблема также возникает для "сетевого ввода-вывода". Если вы не выполняете одностороннюю передачу данных (например, сетевые данные в битовую корзину, такую как /dev/null в * nix), то вы, вероятно, использовали файл на диске в качестве источника или места назначения для генерации «сетевого ввода-вывода» , Таким образом, дисковый ввод-вывод проявляется как обычная активность «дискового ввода-вывода», «сетевого ввода-вывода» и медленного запуска приложений.

Это может быть причудой планирования в Window: задача с интенсивным вводом-выводом (например, копия файла) может получить приоритет планирования, когда каждая отдельная операция чтения или записи завершается (чтобы компенсировать время простоя, в течение которого процесс выполнялся). вынужден ждать и поддерживать пропускную способность ввода / вывода). Другая задача / процесс, запущенный, когда эта интенсивная задача ввода-вывода активна, может иметь недостаток в планировании ввода-вывода. Я видел подобную причуду в другой операционной системе: я разрабатывал утилиту копирования базы данных в многопользовательской системе (не в Unix). Утилита замедляла работу системы для всех остальных пользователей во время ее выполнения, поэтому меня обвиняли в том, что я планировал приоритеты планировщика или задания, но я этого не делал.

1

Пропускная способность - это только половина истории. Если это случайный ввод / вывод, то это может замедлить все до того момента, когда ввод / вывод начнет стоять в очереди.

Вы должны запустить Perfmon.exe и проверить среднюю длину очереди диска и среднее количество секунд на счетчики передачи .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .