Ошибок страницы физической памяти в секунду windows 10 что это

Обновлено: 02.07.2024

Вот такие преобразования моя программа делает до 200 в секунду.
Если я комментирую преобразование, то счетчик не растет практически.

Памяти 100% достаточно. Ее количество не влияет на этот счетчик. 2Гб ее.

По логике, нужно сначала всё освободить, потом присваивать Handle. Возможно, и освобождать необязательно, во всяком случае в примере Bumpmap сделано так:

А вообще, откуда надобность выполнять подобное преобразование 200 раз/c? Может лучше выкинуть TBitmap и выполнять все операции с TFastDIB? А то мне сейчас лень смотреть, но подозреваю, что в TBitmap.SetHandle куда больше действий, чем просто присвоение переменной.


> Может лучше выкинуть TBitmap и выполнять все операции с
> TFastDIB?

Так и планирую сделать, но есть свои грабли и очень много вносить изменений. В принципе FastDIB тут прикручен из-за фантастически быстрой SetSize.


> TBitmap.SetHandle куда больше действий, чем просто присвоение
> переменной.

Да, там намного больше действий.


> Sapersky

Не подскажите, как правильно скопировать один TFastDIB в другой. Не Assign(), а именно копирование? У меня вот какая штука:


> Так что эта строчка имхо — большая дыра в производительности.

Может быть, но это далеко не самая тяжелая операция. Декодирование из JPEG во вторичных потоках занимает в тысячи раз больше времени.


> как максимум, здесь вобще нужно логику программы переделывать.

Я вот попробовал переделать на TFastDIB в основном потоке - проблема с ошибками страницы исчезла.

Dst.MakeCopy(Src, True); // делается SetSize и Move
Или можно (при UseGDI = True) установить размер Dst = Src, потом
Src.Draw(Dst.hDC, 0, 0); // фактически BitBlt
удобно тем, что конвертирует битмапы разных форматов, хотя, как правило, не очень качественно. Впрочем, для этого есть FConvert.pas.

И пока первичный поток отрисовывает его на окне вторичный ведь может и поменять его содержимое. Так можно делать или надо полностью копироваить битмап в основной поток и там работать с ним?

Если вторичный поток не изменяет размер битмапа, т.е. не портит указатель/Handle, то, наверное, можно его спокойно рисовать, в крайнем случае нарисуется половина старого, половина нового. Хотя сам не пробовал, не знаю, как функции GDI отнесутся к тому, что кто-то будет писать в используемую ими область памяти. Можно на всякий случай прицепить к битмапу крит. секцию.
Если изменяет - тогда однозначно нужна или синхронизация, или копирование, или и то, и другое.

Счетчики ошибок страницы не растут. Утечек тоже нет. Как обстоят дела с производительностью такого решения выясняю.

Параметры постоянно ухудшаются в основном у «пожилых» систем Windows. Так как в большинстве случаев это происходит медленно и без видимых причин, то пользователю приходится сначала осуществлять поиск и устранение ошибок практически наугад.

Операционная система непрерывно записывает многочисленные параметры, оказывающие влияние на производительность, анализ которых показывает, какие именно процессы замедляют систему.

«Системный монитор» Windows

Инструменты Windows «Менеджер задач» (Task-Manager) и «Монитор ресурсов» (Resource monitor) весьма известны, однако дают лишь поверхностное представление, так как отображают лишь несколько параметров и представляют их не очень гибко. Больше возможностей предлагает «Системный монитор» в версиях Windows 7, 8 и 10.

Инструмент, происходящий из семейства Windows Server, может отображать все возможные характеристики в виде графиков, причем многие сотни возможных значений с частично зашифрованными названиями представляют новую задачу. Мы выбрали самые важные из них, которые указывают на типичные затруднения в действующей ОС Windows и расскажем, как их устранить.

В самом благоприятном случае это удается с помощью простых изменений конфигурации или (если первый вариант не помог) путем целенаправленного обновления аппаратного обеспечения.

Системный монитор Windows организует сведения о производительности по дюжине категорий, из которых для домашнего ПК наиболее интересными являются следующие: процессор, ОЗУ, жесткий диск, процессы (включая отдельные программы) и система.
Во всех категориях следует обращать внимание на различные характеристики для того, чтобы определить, вызвана ли проблема производительности только одной программой или она возникает в результате взаимодействия нескольких причин. В первом случае с помощью диспетчера задач или монитора ресурсов вы можете узнать, какая программа является виновником, и «обезвредить» ее.
Во втором случае, если чрезмерный многозадачный режим перегружает процессор или жесткий диск, доступны однозначные индикаторы производительности. С их помощью можно проанализировать все категории вашей системы для поиска и устранения причины «торможения».

Используем «Системный монитор»

Инструмент мониторинга скрыт в глубинах системы управления Windows. Проще всего найти его, написав «Системный» в окне поиска меню «Пуск», после чего появится ссылка на инструмент. После запуска он показывает только один график с указанием процессорного времени. Щелчком на зеленом символе «+» можно добавить к индикатору новые графики.

Для этого раскройте категорию, отмеченную синим шрифтом, выберите в появившемся перечне требуемый индикатор производительности и при необходимости «Экземпляр» (например, процесс или носитель данных, для которого требуется контроль), затем нажмите «Добавить» и «ОК».

Мы указываем имена по схеме «Объект | индикатор производительности». Хотя параметры обладают различными единицами измерения, системный монитор масштабирует их в сопоставимые графики. С помощью диалогового окна свойств каждого индикатора можно настроить масштаб и цвет графика.

1. Процесс | Загруженность процессора (%)

Данное значение отображается при запуске системного монитора. Оно указывает, на сколько процентов используется вычислительная мощность ПК. Естественно, что данное значение увеличивается при нагрузке компьютера. Следует задуматься, если значение не снижается менее 5-10% при отсутствии запущенных программ. Вызовите менеджер задач, нажав Ctrl+Shift+Esc, перейдите на вкладку «Процессы» и отсортируйте список по значению «ЦП».

Затем исследуйте процесс, максимально нагружающий процессор: добавьте индикатор «Процесс | % загруженности процессора» и в пункте «Экземпляры выбранного объекта» выберите соответствующую программу. Если значения данного графика увеличиваются и уменьшаются одновременно с общим процессорным временем, то, вероятно, эта программа и является «виновником».

В нашем компьютере процесс Adobe CEF Helper.exe, вызываемый программой Adobe Creative Cloud, постоянно нагружает процессор на 10%. Отключение синхронизации файлов прекращает этот процесс. Если процесс не является необходимым, можно отключить его из автозагрузки.

2. Система | Длина очереди процессора

Если все ядра процессора заняты, задачи накапливаются в очереди. Если параметр «Длина очереди процессов» постоянно превышает ориентировочное значение, равное двадцатикратному числу ядер процессора, в большинстве случаев работа системы значительно замедляется. У домашних ПК это обычно происходит только в случае процессов с большим объемом вычислений, например, при кодировании видео.

Для спокойной работы над приоритетными задачами вызовите менеджер задач, перейдите на вкладку «Процессы», правой кнопкой мыши щелкните на ресурсоемком процессе и выберите пункт «Приоритет | Низкий», после чего система будет обрабатывать этот процесс как второстепенный. В некоторых программах-кодировщиках видео, например, Avidemux, вы можете указать в настройках, чтобы кодирование всегда проводилось с низким приоритетом.

3. Процессор | Время обработки прерывания

Наряду с вычислительными задачами процессор также нагружают запросы на прерывания. Программное или аппаратное обеспечение выдают их, если загруженная в подсистему задача выполнена или пользователем осуществляется ввод данных.

Затруднения возникают, если подключенное устройство не удается инициализировать и оно постоянно отправляет новые запросы или сетевая карта сервера перегружена чрезмерным трафиком. С помощью диалогового окна «Добавить» системного монитора добавьте к работающей диаграмме содержательные графики.

Признаком подобных проблем является «торможение» системы при подключении или активации подозрительного устройства (сетевого или жесткого диска). В этом случае проконтролируйте его индикатор производительности.

Если значение увеличивается после подключения или во время использования, вы можете попытаться обновить соответствующий драйвер, подключить устройство по-другому (например, в другой PCI-слот) или заменить его.

4. Память | Виртуальная память

Настройка виртуальной памяти

Проблемы с оперативной памятью начинаются, когда ее слишком мало. Это происходит, если индикатор «Память | Байт выделенной виртуальной памяти» превышает значение суммы объема ОЗУ и половины объема файла подкачки. Для этого проанализируйте абсолютное число байт, отображаемое системным монитором при среднем значении.

Размер файла подкачки можно узнать так: нажмите Win+Pause, затем «Дополнительные параметры системы», выберите «Быстродействие | Параметры» и затем «Дополнительно | Изменить». Файл подкачки обычно увеличивается динамически, за исключением тех случаев, когда вы установили его фиксированный размер или жесткий диск заполнен.

Освободите место на диске и разрешите системе управлять размером файла подкачки. Если улучшения не произойдет, воспользуйтесь советами в следующем пункте.

5. Память | Число «страниц» в секунду

Данный индикатор показывает, сколько минимальных элементов памяти («страниц») считывается из файла подкачки или записывается в него в течение 1 секунды. Если данная характеристика увеличивается во время запуска программы, это показывает, что объем физической памяти мал и системе приходится сохранять слишком много данных на жесткий диск.

Запустите «Монитор ресурсов» через поле поиска меню «Пуск» отсортируйте перечень во вкладке «Память» по параметру «Общий КБ» и завершите самые «прожорливые» программы, в которых вы больше не нуждаетесь. Очистите меню автозапуска (см. п. 1) и по возможности увеличьте объем оперативной памяти.

6. Процесс | Рабочий набор

Если вы с помощью предыдущих пунктов определили программу-«пожирателя» памяти, то можно ограничить ее потребности. Добавьте индикатор «Процесс | Рабочий набор» и в пункте «Экземпляры …» выберите подозрительную программу, которая часто является браузером со многими дополнениями и открытыми вкладками.

Проверьте, что произойдет, если отключить дополнения, например, блокировщик рекламы (Adblock), которые часто потребляют много памяти. Если значение уже в самом начале увеличивается до 100%, щелкните в перечне правой кнопкой на индикаторе, затем на «Свойства» и измените масштаб до ближайшего меньшего значения.

7. Физический носитель данных | Время (%)

Если данное значение при системе в состоянии покоя остается в верхней области, вероятно, активность жестких дисков «тормозит» ваш ПК. Перейдите в «Мониторе ресурсов» на вкладку «Диск» и отсортируйте «Процессы с активностью носителя» по параметру «Всего (байт/с)».

Проверьте возможность завершения или изменения конфигурации процессов с наиболее интенсивным объемом ввода/вывода. Например, настройте антивирусное ПО таким образом, чтобы ежедневное сканирование выполнялось только в том случае, если оно не мешает основной работе. Наиболее эффективным решением станет переход на SSD-накопитель.

8. Процесс | Байты данных ввода/вывода

Если одна программа постоянно «держит в напряжении» жесткий диск или сетевую карту (см. п. 6), добавьте данный индикатор и выберите в качестве «Экземпляра» соответствующую программу.

Теперь вы можете проконтролировать успешность изменений конфигурации, например, при отключении автоматических инструментов синхронизации, таких как Google Drive и One Drive.

9. Средняя длина очереди диска

Если значение индикатора «Физический диск | Средняя длина очереди диска» остается высоким, жесткий или твердотельный накопитель перегружен конкурирующими запросами.

В случае одного жесткого диска помогает уменьшение количества процессов (см. п. 1) или использование SSD-накопителя в качестве системного диска. Если в компьютере установлены два жестких диска, добавьте для каждого из них свой график (в диалоговом окне добавления данных в пункте «Экземпляры» щелкните на диск, затем выберите «Добавить»).

С помощью монитора ресурсов проанализируйте, какая программа становится причиной ввода/вывода данных (см. п. 7) и измените ее конфигурацию и организацию файлов таким образом, чтобы на менее нагруженный диск поступало больше задач: например, музыкальный проигрыватель может располагать свои MP3-файлы на втором диске, чтобы слегка «разгрузить» системный диск.

10. Система | Контекстных переключений в секунду

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

Если этот график у обычного домашнего ПК постоянно находится в верхней четверти диаграммы и компьютер «тормозит», необходимо закрыть все программы, в которых вы сейчас не нуждаетесь, например, браузер со многими открытыми вкладками с флэш-анимацией или работающий музыкальный проигрыватель. Не в последнюю очередь следует подумать об отключении ненужных пунктов в автозагрузке (см. п. 1).

11. Отображение отчета о надежности

Низкая производительность может часто становиться причиной нестабильности. Если компьютер «зависает», уже поздно что-либо предпринимать: причину можно определить после перезагрузки. Для этого перейдите из меню «Пуск» в утилиту «Просмотр журнала надежности системы». Появляется временная шкала, на которой отображаются ошибки приложений, ошибки Windows, предупреждения и т.д.

Благодаря этому вы после сбоя системы можете определить, какая программа или компонент оборудования стали причиной. Хотя сведения в пункте «Показать технические подробности» являются зашифрованными, они предлагают исходные точки для поиска решения проблемы в Интернете.

12. Анализ «сбойного» процесса загрузки

Протокол может быть открыт с помощью утилиты «Анализатор производительности Windows», который показывает, какой процесс требует какого времени. После этого вы можете обновить или удалить соответствующую программу или изменить ее конфигурацию.

В случае вытесняющего алгоритма операционная система в любой момент времени может прервать выполнение текущего потока и переключить процессор на другой поток. В невытесняющих алгоритмах поток, которому предоставлен процессор, только сам решает, когда передать управление операционной системе.

Алгоритмы с квантованием.

Каждому потоку предоставляется квант времени, в течение которого поток может выполняться на процессоре. По истечении кванта операционная система переключает процессор на следующий поток в очереди. Квант обычно равен целому числу интервалов системного таймера1.

Алгоритмы с приоритетами.

Каждому потоку назначается приоритет (priority) – целое число, обозначающее степень привилегированности потока. Операционная система при наличии нескольких готовых к выполнению потоков выбирает из них поток с наибольшим приоритетом.

В Windows реализован смешанный алгоритм планирования – вытесняющий, на основе квантования и приоритетов.

  1. Тип многозадачности для приложения DOS
  2. Гарантии обслуживания
  3. Планирование процессов переднего плана
  4. Назначение файла подкачки
  5. Процессы Р1, Р2, Р3 выделяют 100, 20, 80 Мб памяти. В системе 128Мб ОП. Каков размер занятой памяти в файле подкачки. Какой размер файла подкачки.

Генерируется, если страничный механизм активизирован (CR0.PG = 1) и при трансляции линейного адреса в физический возникает одна из следующих ситуаций:

  • элемент таблицы страниц или каталога страниц, используемый при трансляции адреса, имеет нулевой бит присутствия, т.е. нужная таблица страниц или страница не присутствует в физической памяти;
  • процедура не располагает уровнем привилегий, достаточным для доступа к выбранной странице или пытается произвести запись в страницу, защищенную от записи для текущего уровня привилегий.

Обработчик страничной ошибки получает информацию о ее причине из двух источников: кода ошибки, помещаемого в стек, и содержимого регистра CR2, который содержит линейный адрес, вызвавший ошибку. Код страничной ошибки имеет специальный формат (рис. 3.7.).

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

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

  1. Высокая интенсивность ошибок страниц говорит о:

Графа «Ошибок отсутствия страницы в памяти/сек.»

В графе «Ошибок отсутствия страницы в памяти/сек.» (Hard Faults/sec) указано среднее за последнюю минуту количество ошибок отсутствия страницы в памяти в секунду. Если процесс пытается использовать больше физической памяти, чем доступно в данный момент времени, система записывает часть данных из памяти на диск — в файл подкачки. Последующее обращение к данным, сохраненным на диск, и называется ошибкой отсутствия страницы в памяти.

О чем говорят ошибки отсутствия страницы в памяти

Теперь, когда вы представляете, какие сведения собраны в таблице «Процессы», давайте посмотрим, как с их помощью следить за распределением памяти. При запуске приложений и работе с файлами диспетчер памяти отслеживает объем рабочего набора для каждого процесса и фиксирует запросы на дополнительные ресурсы памяти. По мере увеличения рабочего набора процесса, диспетчер соотносит эти запросы с потребностями ядра и других процессов. Если доступного адресного пространства недостаточно, диспетчер уменьшает объем рабочего набора, сохраняя данные из памяти на диск.

В дальнейшем при чтении этих данных с диска возникает ошибка отсутствия страницы в памяти. Это вполне нормально, но если ошибки происходят одновременно для разных процессов, системе требуется дополнительное время для чтения данных с диска. Слишком частые ошибки отсутствия страницы в памяти, соответственно, снижают быстродействие системы. Вам наверняка доводилось наблюдать неожиданное замедление работы всех приложений, которое затем также неожиданно прекращалось. Почти наверняка это замедление было связано с активным перераспределением данных между физической памятью и подкачкой.

Отсюда следует вывод: если ошибки отсутствия страницы в памяти для того или иного процесса происходят слишком часто и притом регулярно, компьютеру не хватает физической памяти.

Чтобы было удобнее наблюдать за процессами, вызывающими частые ошибки отсутствия страницы в памяти, можно отметить их флажками. При этом выбранные процессы переместятся наверх списка, а в графике ошибок отсутствия страницы в памяти будут представлены оранжевой кривой.

Стоит учитывать, что распределение памяти зависит от целого ряда других факторов, и мониторинг ошибок отсутствия страницы в памяти — не лучший и не единственный способ выявления проблем. Тем не менее, он может послужить неплохой отправной точкой для наблюдения.

В системе предусмотрено 32 уровня приоритетов. Шестнадцать значений приоритетов (16-31) соответствуют группе приоритетов реального времени, пятнадцать значений (1-15) предназначены для обычных потоков, и значение 0 зарезервировано для системного потока обнуления страниц (см. рис. 6.2).


Рис. 6.2.Приоритеты потоков

Чтобы избавить пользователя от необходимости запоминать числовые значения приоритетов и иметь возможность модифицировать планировщик, разработчики ввели в систему слой абстрагирования приоритетов. Например, класс приоритета для всех потоков конкретного процесса можно задать с помощью набора констант-параметров функции SetPriorityClass, которые могут иметь следующие значения:

Относительный приоритет потока устанавливается аналогичными параметрами функции SetThreadPriority:

Совокупность из шести классов приоритетов процессов и семи классов приоритетов потоков образует 42 возможные комбинации и позволяет сформировать так называемый базовый приоритет потока

Базовый приоритет процесса и первичного потока по умолчанию равен значению из середины диапазонов приоритетов процессов (24, 13, 10, 8, 6 или 4). Смена приоритета процесса влечет за собой смену приоритетов всех его потоков, при этом их относительные приоритеты остаются без изменений.

Статьи к прочтению:


Похожие статьи:

Один пользователь поделился своими проблемами на форуме Microsoft.

Узнайте, как решить эту проблему, следуя приведенным ниже инструкциям.

  1. Перейдите в Пуск > и введите командную строку ’>, щелкните правой кнопкой мыши« Командная строка »и выберите Запуск от имени администратора .
  2. В командной строке введите sfc/scannow .
  3. Подождите, пока процесс будет завершен.
  4. После этого закройте командную строку.

Кроме того, вы можете использовать проактивные инструменты, такие как CCleaner или другие инструменты для очистки ПК, чтобы восстановить поврежденные системные файлы в реестре Windows.

2. Сканирование на наличие вредоносных программ


  1. Загрузите Malwarebytes Adwcleaner здесь и установите его в своей системе.
  2. Откройте программу, щелкнув правой кнопкой мыши значок и выбрав параметр « Запуск от имени администратора ».
  3. Выберите « Сканирование », чтобы начать сканирование.
  4. После сканирования выберите параметр Очистить и восстановить .
  5. После очистки выключите систему и перезапустите ее.

4. Выделите виртуальную память


  1. В поиске Windows введите Дополнительно и откройте « Просмотр дополнительных настроек системы ».
  2. Выберите вкладку Дополнительно в диалоговом окне.
  3. В разделе Эффективность откройте Настройки .
  4. Выберите Дополнительно .
  5. Выберите Виртуальная память.
  6. Снимите флажок « Автоматически управлять размером файла подкачки для всех дисков ».
  7. Выберите Нестандартный размер и вставьте текущую доступную физическую ОЗУ в значения в МБ.
  8. Подтвердите изменения и перезагрузите компьютер.

5. Запустите обновления Windows


  1. Перейдите в Пуск> введите «обновление» в поле поиска и затем нажмите «Центр обновления Windows», чтобы продолжить.
  2. В окне Центра обновления Windows проверьте наличие обновлений и установите доступные обновления.
  3. После завершения обновления перезагрузите компьютер с Windows.

6. Сбросить систему


  1. Перейдите в раздел Настройки >Обновление и безопасность >Восстановление .
  2. Выберите « Сбросить этот компьютер ».
  3. Выберите, хотите ли вы сохранить или удалить свои файлы и приложения.
  4. Нажмите « Сбросить », чтобы продолжить.

В качестве альтернативы, вы должны сканировать вашу оперативную память на наличие ошибок и убедиться, что вы соответствуете системным требованиям для запуска уязвимого приложения или игры, которая вызывает ошибку. Система Windows 10 требует как минимум 1 ГБ ОЗУ, но в идеале вы бы выбрали как минимум 2 ГБ.

Читайте также: