Замедление Windows XP, в чем виноват?

1628
ericslaw

Я запускаю Windows XP, и через некоторое время она становится вялой. Я подозреваю, что Firefox потребляет слишком много памяти, но заметил, что некоторые другие программы «медленно» закрываются при перезагрузке.

Есть ли способ измерить потребление всей памяти процесса с течением времени? Process Explorer - это то, что я хочу, но для каждого процесса, а не только для того, для которого я открываю свойства.

В Unix-стране я psнеоднократно запускал снимки и смотрел на RSS (и явно игнорировал страницы общей памяти), вычисляя, что

  • сейчас свинья
  • вырос больше всего (пока я не искал).

Мне нужно около 8-24 часов истории на процесс, а не только то, что умещается на экране.

Есть идеи?

1

6 ответов на вопрос

5
user4197

Некоторое время назад я написал Windows Perfmon: Top Ten Counter в моем старом блоге. Эта статья представляет собой краткое введение в использование Perfmon для определения узких мест оборудования: процессора, памяти, диска или сети (и во-вторых, для определения текущей рабочей нагрузки на эти ресурсы). Я не могу особо подчеркнуть этот шаг: сначала убедитесь, что вы знаете, какой аппаратный ресурс перегружен . Тогда отправляйтесь на охоту за боровом.

После того, как вы определили, какой ресурс перегружен, у вас есть два варианта: добавить больше этого ресурса (получить более быстрый ЦП, добавить память, получить более быстрый диск или сетевую карту) ... или отследить главных пользователей этого ресурса, и либо убей их, либо прими меры, чтобы сделать их менее хитрыми.

Самый простой способ отследить основные ресурсы - это Process Explorer . Обязательно запустите его из учетной записи с правами администратора. Вот быстрый и грязный список того, что нужно искать:

  • Для узких мест в памяти (наиболее распространенных узких мест) используйте столбцы Рабочий набор, Виртуальный размер и История личных байтов на вкладке Память процесса . Сортируйте столбцы по порядку по убыванию (самые большие значения в верхней части столбца). Из них рабочий набор обычно является наиболее ценным.
  • Для узких мест ЦП, очевидно, вы хотите столбец использования ЦП . История процессора также удобна. Они находятся на вкладке « Производительность процесса ». Опять сортировка по убыванию. Это значение имеет тенденцию колебаться намного больше, чем значения использования памяти, поэтому не делайте поспешных суждений. Посмотрите, какое время ваш главный подозреваемый останется на вершине более нескольких секунд.
  • Для дисков узких мест (которые часто фактически узкие места памяти, поскольку система вынуждена страницы материала с диска слишком часто), вы на самом деле не имеют большой выбор, потому что Windows, не на процесс ввода / вывода диска счетчики системного монитора. Однако вы можете посмотреть на общую I / O в процессе (который включает в себя диск, сети и устройства ввода / вывода), вы можете использовать I / O Read Bytes и I / O Write Bytes счетчиков в качестве грубой оценки. Они находятся на вкладке « Производительность процесса ».
  • Узкие места в сети вряд ли будут вашей проблемой, но, поскольку сетевые счетчики для каждого процесса сосредоточены на вводе / выводе, вы можете получить приблизительное представление таким же образом, как я описал выше для узких мест на диске. Вы сами должны определить, являются ли входы / выходы, которые вы видите в этих столбцах, более вероятными, являются ли дисковые или сетевые входы / выходы. Если бы вы работали с Vista / 2008/7, вы бы получили небольшую помощь от Windows Performance Tools, которую я обсуждаю в своем новом блоге.

Удачи!

3
dlamblin

Там perfmon.mscи там sysInternals Process Monitor, который регистрирует.

1
John Gardeniers

Возможно, вы захотите начать с помощью диспетчера задач, который даст вам немало информации.

1
mhud

Надежной альтернативой встроенному диспетчеру задач ( taskmgr.exe) является Process Explorer ( procexp.exe). Process Explorer был создан SysInternals и теперь принадлежит и распространяется Microsoft.

Что касается регулярного отбора образцов вашей нормально работающей системы для установления базовых номеров, вы можете создать запланированное задание, использующее командлет PowerShell Get-Process, или пакетный файл, который будет использовать обычный старый DOS tasklist.exe.

1
Wayne

вы можете использовать ps из sysinternals или ps из cygwin или если вы знаете разработчика, написать программу для каждого процесса и извлечь определенную статистику - тривиально.

Этот код должен действительно быть в стеке потока, и повелители могут что-то сказать, но это дает вам представление о том, насколько простой может быть эта задача:

public static string ListAllApplications() { StringBuilder sb = new StringBuilder();  foreach (Process p in Process.GetProcesses(".")) { try { if (p.MainWindowTitle.Length > 0) { sb.Append("Window Title:\t" + p.MainWindowTitle.ToString() + Environment.NewLine);  sb.Append("Process Name:\t" + p.ProcessName.ToString() + Environment.NewLine);  sb.Append("Window Handle:\t" + p.MainWindowHandle.ToString() + Environment.NewLine);  sb.Append("Memory Allocation:\t" + p.PrivateMemorySize64.ToString() + Environment.NewLine);  sb.Append(Environment.NewLine); } } catch { } }  return sb.ToString(); } 
Там нет веских причин, код не может появиться на SF. 15 лет назад 0
0
Axxmasterr

У меня есть эта проблема все время. Firefox обычно является моим основным нарушителем, но иногда я запускаю что-то с утечкой памяти.

Я знаю, что это было сказано ранее, но я скажу это снова ... Process Explorer на самом деле имеет очень удобную функцию, где вы можете настроить его, чтобы предоставить несколько дополнительных столбцов информации. В частности, интересующие вас дополнительные столбцы - это «История процессора» и «История частных байтов». Я думаю, что это информация, которую вы пытаетесь найти в системе. Он показывает график прокрутки для каждого процесса.

альтернативный текст