Уважаемые читатели блога, может быть, поможете ответить на давно интересующий вопрос.
Есть простейшая задача - скопировать большой объем данных с раздела на раздел жесткого диска, скажем, несколько фильмов. В процессе копирования возникают дикие тормоза всех приложений. Запустить что-то становится реальной проблемой. При этом Windows Task Manager показывает загрузку процессора 1%, и памяти никто не потребляет. И это системная проблема, которую я наблюдаю на всех компьютерах, на которых работаю.
В данный момент конфигурация такая: Core2Duo E8400 3GHz, RAM 4Gb, HDD SATA Western Digital RE2 GP 300 Gb (быстрый диск для рабочих станций, надо сказать). Система Windows XP, другие не пробовал. Primary IDE Channel для устройства Device0 (на нем работает HDD) имеет настройку "DMA if available" и показывет UltraDMA Mode 5. Насколько я понимаю, режим UltraDMA - это прямой доступ устройства к памяти, минуя процессор, так что тормозов не должно быть с этой стороны. Материнские платы пробовал разные - и Asus P5Q-L, и MSI - все одинаково. Думаю, контроллер SATA тут тоже ни причем. Антивирус пробовал включать и отключать - разница есть, но несущественная.
Вопрос - почему нагрузка на систему с точки зрения Task Manager нулевая, и при этом делать почти ничего невозможно? То есть, смотреть фильм и слушать музыку, например, можно, а вот что-то запустить, даже обычный Firefox - проходит минута, прежде чем окно появляется. Или даже просто пишешь письмо в Outlook, и происходят периодические зависания. Что еще более интересно - попробовал копировать файл с локального диска в в медленную сеть, скорость около 3 мегабайт/сек - почти такие же тормоза системы. Что я не понимаю?
Всё просто !
UltraDMA работает только между устройствами UltraDMA.
Вот такой каламбур.
Если обратиться к истории, например взять очень старенький MAC, то там "через весь комп" проходил шлейф сказёвой шины, на ней сидели и винчестер, и сидюк,и сканер и даже по-моему принтер...
И всё это хозяйство крутилось, сканировало, печатало и не тормозило.
Но, если рассматривать копирование с диска на сеть, то.... это не "одна шина" и сетевой контроллер в любом случае "отвлекает" проц.
Ещё сильнее "отвлекает" антивирус, который пытается все операции контролировать... а ещё фаервол.... который тоже мурыжит поток данных...
И ещё есть самый большой, якобы мультизадачный тормоз ... виндовс.. Который, как выясняется и копировать толком то не умеет ( я до сих пор бьюсь с проблемой копирования больших файлов).
Можно конечно мириться с тормозами или пить кофе пока копируется.
Я например, работая дома на ноуте (будете смеяться если скажу на каком) копирую всё без проблем, по нескольку файлов одновременно и с сервера на плеер и с NAS на сервер и с вирт. машинки на сервер.... и ноут не тормозит!
Всё потому что я делаю это управляя и сервером и вирт. машинками с ноута через терминал.
Не всем и не всегда это может подойти, но я 80% своих задач распределяю между разными машинами.
Хмм.. Не очень понял :) Разве копирование с раздела на раздел происходит не "между устройствами DMA"? Точнее, это вырожденный случай с одним устройством. Антивирус я отключал - тормоза почти не уходят.
Сдаётся мне, что это виноват этот "зелёный" винчестер. Чинил на днях компьютер, заменил сломавшийся жёсткий диск вот этим "зелёным" на 500 гигабайт. И тормоза совершенно необъяснимые, причём начинаются они в процессе загрузки. Система чистая, обновлённая. Вот, сегодня пожаловались на тормоза, завтра принесут компьютер смотреть. И вот как раз вы написали такую статью, что наводит на мысли.
Windows здесь ни при чём, всё она умеет. Я дома копирую что угодно какого угодно объёма и смотрю кино одновременно, можно и музыку включить — никаких проблем с производительностью нет, а машинка у меня далеко не первой свежести.
Попробовал Seagate - те же тормоза. И на "зеленом" WD система грузится очень быстро, кстати. Так что где-то не здесь надо копать...
Спасибо за информацию. Значит, "зелёный" не виноват. Будем искать...
А под Линуксом пробовали? Лайв-сиди убунтовский хотя бы запустить Как там работает в тех же условиях?
Я не могу судить насчёт отдельных винтофф, у мну на пятом рейде с самого на себя гиг за 5-6 секунд копируется, а на системном харде примерно 10-12 секунд такое же копирование.... и это при том что сервак хост вм-вары, где ещё пара вирт. машин крутитца.
Надо както в цифрах мерить реальную загрузку и реальные тормоза, тогда будет какая-то ясность.
Хм... У меня даже на хорошо дефрагментированном винте линейная скорость не вырастает более 60-70 Мегабайт/сек, да еще и падает до 20-30 к концу большого файла. Явно у меня какие-то проблемы...
Не думаю что у тебя какие-то проблемы. Проверить скорость чтения можно копированием на null, а запись каким-нибудь тестом. Плюс отрубай всякие антивирусы и сравнивай. Если фрагментации нет, то все будет в пределах разброса скорости диска - в начале скорость примерно на 30% больше чем в конце. При копировании в пределах диска черт знает что творится - начинается кэширование и в начале все валится в кэш, как только пойдет его интенсивный сброс то диск начнет клинить передергиванием головок и скорость будет сильно проседать - т.е. это не доказывает, что есть проблема.
Кстати проверил - при копировании файла - с хранилища по сети на хард ноута у меня результаты загрузок примерно следующие
фар 8-12%
хардваре интерапс 15-25%
диф проц коллл 10-25%
без копирования - они естественно по нулям
тот же гиг из папки в папку на харде ноута
фар 0-3%
хардваре интерапс 0-1%
диф проц коллл 0-2%
мерил процессэксплорером
Проверил у себя: что по сети, что локально - Hardware interrupts около 2%, DPC - 1%, FAR < 1%...
Весь ввод-вывод в xp идет с приоритетом high. Таким образом за доступ к диску конкурируют все файловые операции, включая подкачку. У тебя получается худший сценарий - диск один, на нем pagefile и все программы, там же и данные, копирование идет с этого диска на этот-же диск. Частое дергание головок. При старте таких задач как браузер, поднимается довольно много библиотек + сканирование файловой системы - например папки с кэшем - там много будет дисковых операций хоть и мелких но с разными файлами. Как известно самое узкое место при вводе-выводе на hdd - время случайного доступа, оно весьма ощутимое. Начинается постоянное дергание и катастрофическое просаживание производительности. С подобным замораживанием процессов сталкивался часто, например при поднятии из свопа какого-нибудь outlook на фоне копирования. Кстати поднятие из свопа процедура не очень эффективная - зачастую идет доступ непоследовательный - а по мере обращения к страницам в памяти.
Вобщем рекомендую завести два диска, а лучше еще больше. Файл подкачки иметь на другом диске и данные гонять только между дисками. Кстати если файл подкачки присуствтует на нескольких дисках то система распараллеливает запросы к нему.
Да и есть существенное облегчение задачи для Vista и Windows 7. Там наконец появилась такая замечательная вещь - i/o priority. Т.е. всякие там desktop search, дефрагментаторы и прочее могут назначать себе заниженный приоритет ввода-вывода устраняя подобную проблему. Интенсивный ввод-вывод будет сильно вытеснять их потуги. На этот счет наверное легко найдешь описание, возможно в task manager или process explorer есть управление этим приоритетом. В твоем случае копирование надо делать с низким приоритетом, чтобы оно не мешало нормальной работе.
+1 к описанию причин
Но есть вопрос про приоритет io на win vista\7. Я правильно понял мысль, что теперь приоритет io определяется приоритетом задачи? Ибо task manager и process explorer со стародавних времен умеют менять именно приоритет задачи, и нового функционала по смене отдельно приоритета ввода\вывода сходу обнаружить не удалось
Не уверен, что есть прямая зависимость, думаю надо отдельно выставлять. Я детали пока не смотрел, вот ссылки:
http://www.microsoft.com/whdc/driver/priorityio.mspx
http://en.wikipedia.org/wiki/Windows_Vista_I/O_technologies
Глянул только по диагонали - есть возможность управлять приоритетом приложения, для отдельного хэндла (файла) или указывать файловой системе, чтобы она обеспечивала гарантированную пропускную способность - например при воспроизведении музыки или видео под нагрузкой.
Спасибо за фундаментальное объяснение! :) Интересно только - неужели файл подкачки на машине с 4 гигабайтами памяти активно используется? Ведь тот же Task Manager показывает, что занято не больше 1 гигабайта? Или это особенности XP, что она выгружает давно не использовавшееся приложение в своп независимо от наличия свободной памяти? Второй диск покупать для свопа - денег жалко :) Да и шум лишний. Сейчас у меня вообще тишина дома :)
Насчет Desktop Search - сейчас это вообще большая проблема: он просто нещадно тормозил всю систему, и пришлось его снести. Даже несмотря на то, что он (якобы) уходит в idle, как только начинаются какие-то действия пользователя на машине.
Desktop search занимается мониторингом папок, подписывается на события при изменении содержимого и в фоне понемногу обновляется. Я им сам постоянно пользуюсь, но ограничил места поиска только почтой и некоторыми папками, на работе только почта и он вообще не отсвечивает. Вот кстати он должен в vista/windows 7 работать более комфортно - он там точно использует i/o priority. Основное неудобство здесь при входе в систему - если папки, которые он мониторит большие, то он быстренько начинает перепроверять что там поменялось и это тормозит логин - все ведь параллельно работает (проблема сериализации запуска кстати в win7 начала прорабатываться). Но потом он успокаивается и должно быть все более или менее нормально.
Кстати мониторинг с подпиской на изменения осуществляет еще windows media player - там аналогичная проблема при первом старте, его чуть переклинивает, но он быстро успокаивается.
Что касается файла подкачки - тонкости стратегии не знаю, но при активном дисковом обмене все свободное место система начинает понемногу отдавать кэшу и бездействующие процессы вытесняются. Вообще без файла подкачки нельзя, имеются ситуации, когда это может уронить приложения или систему.
У меня Desktop Search стоял тоже только для почты, но при старте системы все равно ужасно тормозил минут 5 (в XP). Надеюсь, семерка будет действительно получше.
Мистика какая-то. На работе у меня почта за много лет в одном pst, ничего такого нет. Ты проверь, может там еще что-то мониторится, хотя уже нечего проверять. Его вобщем можно в idle режим отправлять, вот жаль нет такой настройки, что после старта не отсвечивай 10 минут, а потом проснись и мониторь понемногу. Если он снаружи управляем, то может есть утилита.
Кстати сейчас как и в win7 есть WDS 4, который в плане клинчей намного лучше WDS 3, вобщем он уже год как обновился. Это я на всякий случай, может у тебя 3-ка стояла.
Нет, у меня точно четверка - недавно ставил. Почты очень много - где-то под полмиллиона писем (много автоматических, но это сути не меняет). Может, в этом дело.
Спорить не буду, у меня почему-то иначе. Число моих писем на работе думаю тоже немалое. Почту я читаю в outlook, соответственно индексация идет через его внутренний API. Последнее я написал на всякий случай, ведь наверное есть еще вариант с индексацией самого pst файла, который возможен, но не имеет смысла т.к. pst во время работы outlook заблокирован.
Да и про загрузку процессора. Ее действительно нет, все съедает ожидание ввода вывода - там все построено на прерываниях, пересылка идет через DMA и процессор стоит. Система парвильное время показывает. В task manager можно еще под кривой загрузки CPU посмотреть какую долю съедает ядро (красная линия).
Да, теперь понятно. Ядро, кстати, тоже по нулям показывает во время копирования
Хорошо, что по нулям. Если процент заметный - это либо PIO mode (в нем раньше можно было и 80% получить) либо плохие драйверы или железка. Поэтому кстати не все сетевые карточки одинаково полезны, хотя сейчас наверное это не так актуально.
Да, Ilya314 идея верная, насчёт "перепрятывания" своп-файла, был у меня сервачёк один, так там специально один диск LVD был под свап.
Говорят можна совсем без свапа... но рискованно. Может кто пробывал? Или лучше купить SSD шуструю под это дело.
У меня пока свап на сисемном диске - он достаточно быстренький, (WD1500HLFS) 10000rpm SATAII Raptor3.5" ,но тоже подумывал перенести свап на рейд, где все остальные данные. Но пока руки не доходят. Да и 8 гиг памяти пока спасают ситуацию.
Файл подкачки кроме того должен быть нефрагментирован и обязательно надо вырубить идиотское умолчание - размер определяет система. В этом случае размер будет иногда меняться и хвост файла будет фрагментирован. Если дисков с файлами подкачки несколько то система это учитвает и будет распараллеливать запросы. SSD - это круто, вот подешевеют, тогда под систему вместе с файлом подкачки и с temp каталогом такой очень здорово будет отвести.
И ещё
в винде ищщо есть два тормаза
- индексирование файлов якобы для быстрого поиска
- механизьма восстановления системы (не то чтоб сильно тормозит, но лучше отключить) а пользоваться акронисом
зы
почистить всё ццклинером и глянуть на ттф шрифты - рост их поголовья тоже приводит к задумчивости.
Хм, ты знаешь, я могу лишь предположить проблемы с кэшированием данных в системе, приводящие практически к полному блокированию диска на уровне запросов. Я такого не встречал. Я бы копал в направлении индексирования данных, антивируса и тому подобных задач, способных генерить множество мелких дисковых операций. Само по себе копирование данных подобного создавать не должно.
Ну а причины "замораживания" системы тебе уже объяснили - все операции так или иначе требуют обращений к диску, и если он фатально занят, то все "висит".
Спасибо! Попробую отключить индексацию NTFS. Хотя, в ближайшее время собираюсь покупать Win7 - может, там будет побыстрее.
А вот такой вопрос: на серве в том числе есть два диска самсунг по 750гб, подключены к сата контроллеру на мамке. На серве 2003я винда и керио винроут файрволл. Так вот при копировании фильма с диска 1 через сеть (1 гбит) скорость порядка 50мб, а с 2 диска - 6мб или меньше. При этом если копировать с диска 2 и при этом с 1, скорость с диска 1 тоже падает. "внутри" между дисками тоже скорость маленькая. Причем на запись скорость даже больше, чем на чтение. Чекдиск ничего не показывает. В смарте у медленного диска ремап 7 секторов + 2 пендинга (держутся уже оч давно так). да, и при копировании с этого диска возрастает нагрузка на проц. Причем диспетчер задач не указывает что грузит. "бездействие системы" - 80% а загрузка проца - под 60 (проц пентиум дуал кор 2.4)
причем если воспользоваться тестером поверхности диска из-под винды - скорость нормальная... чуюя я, что что-то с файловой системой не то, да?
Да, довольно странно выглядит... С файловой системой проблемы вряд ли, хотя можно было бы попробовать переформатировать для чистоты эксперимента. Лучше, наверное, поставить другой диск и перепроверить.
Отправить комментарий