Как программно отключить оперативную память
Решил я как-то заняться задачкой сортировки миллиона целых чисел при имеющейся памяти в 1 Мб. Но перед этим мне пришлось подумать над тем, как можно ограничить объём доступной памяти для программы. И вот, что я придумал.
Виртуальная память процесса
Перед тем, как окунуться в разные методы ограничения памяти, необходимо знать, как устроена виртуальная память процесса. Лучшая статья на эту тему — «Анатомия программы в памяти».
Прочитав статью, я могу предложить две возможности для ограничения памяти: уменьшить виртуальное адресное пространство или объём кучи.
Первое: уменьшение объёма адресного пространства. Это довольно просто, но не совсем корректно. Мы не можем уменьшить всё пространство до 1 Мб — не хватит места для ядра и библиотек.
Второе: уменьшение объёма кучи. Это не так-то просто сделать, и обычно так никто не делает, поскольку это доступно только через возню с компоновщиком. Но для нашей задачи это был бы более корректный вариант.
Также я рассмотрю другие методы, такие, как отслеживание использования памяти через перехват вызовов библиотек и системы, и изменение окружения программы через эмуляцию и введение «песочницы».
Для тестирования будем использовать небольшую программу по имени big_alloc, размещающую, и затем освобождающую 100 MiB.
Все исходники есть на github.
ulimit
То, о чём сразу вспоминает старый unix-хакер, когда ему нужно ограничить память. Это утилита из bash, которая позволяет ограничивать ресурсы программы. На деле это интерфейс к setrlimit.
Мы можем установить ограничение на объём памяти для программы.
Мы задали ограничение в 1024 кб — 1 MiB. Но если мы попытаемся запустить программу, она отработает без ошибок. Несмотря на лимит в 1024 кб, в top видно, что программа занимает аж 4872 кб.
Причина в том, что Linux не устанавливает жёстких ограничений, и в man об этом написано:
Есть также опция ulimit -d, которая должна работать, но всё равно не работает из-за mmap (см. раздел про компоновщик).
Для манипуляции программным окружением QEMU прекрасно подходит. У неё есть опция –R для ограничения виртуального адресного пространства. Но до слишком малых значений его ограничивать нельзя – не поместятся libc и kernel.
Тут -R 1048576 оставляет 1 MiB на виртуальное адресное пространство.
Для этого надо отвести что-то порядка 20 MB. Вот:
Останавливается после 100 итераций (10 MB).
В общем, QEMU пока лидирует среди методов для ограничения, надо только поиграться с величиной –R.
Контейнер
- использовать какой-нибудь docker
- использовать инструменты usermode из пакета lxc
- написать свой скрипт с libvirt.
- что-то ещё…
Но ресурсы будут ограничены при помощи подсистемы Linux под названием cgroups. Можно играться с ними напрямую, но я рекомендую через lxc. Я бы хотел использовать docker, но он работает только на 64-битных машинах.
LXC — это LinuX Containers. Это набор инструментов и библиотек из userspace для управления функциями ядра и создания контейнеров – изолированных безопасных окружений для приложений, или для всей системы.
- Control groups (cgroups)
- Kernel namespaces
- chroot
- Kernel capabilities
- SELinux, AppArmor
- Seccomp policies
Документацию можно найти на офсайте или в блоге автора.
Для запуска приложения в контейнере необходимо предоставить lxc-execute конфиг, где указать все настройки контейнера. Начать можно с примеров в /usr/share/doc/lxc/examples. Man рекомендует начать с lxc-macvlan.conf. Начнём:
Теперь давайте ограничим память при помощи cgroup. LXC позволяет настроить подсистему памяти для cgroup контейнера, задавая ограничения памяти. Параметры можно найти в документации по RedHat. Я нашёл 2:
- memory.limit_in_bytes — задаёт максимальное количество пользовательской памяти, включая файловый кэш
- memory.memsw.limit_in_bytes — задаёт максимальное количество в сумме памяти и свопа
Тишина — видимо, памяти слишком мало. Попробуем запустить из шелла
bash не запустился. Попробуем /bin/sh:
И в dmesg можно отследить славную смерть процесса:
Компоновщик
Попробуем изменить бинарный образ, ограничив доступное куче место. Компоновка – последний этап построения программы. Для этого используется компоновщик и его скрипт. Скрипт – описание разделов программы в памяти вместе со всякими атрибутами и прочим.
Пример компоновочного скрипта:
Точка означает текущее положение. Например, раздел .text начинается с адреса 0×10000, а затем, начиная с 0×8000000 у нас есть два следующих раздела: .data и .bss. Точка входа — main.
Подробности можно увидеть, запустив gcc –v. Сначала она вызывает ccl, создаёт ассемблерный код, транслирует в объектный файл через as и в конце собирает всё вместе с ELF при помощи collect2. collect2 — обёртка ld. Она принимает объектный файл и 5 дополнительных библиотек, чтобы создать конечный бинарный образ:
Всё это очень сложно, поэтому вместо написания собственного скрипта я отредактирую скрипт компоновщика по умолчанию. Получим его, передав -Wl,-verbose в gcc:
Теперь подумаем, как его изменить. Посмотрим, как бинарник строится по умолчанию. Скомпилируем и поищем адрес раздела .data. Вот выдача objdump -h big_alloc
Разделы .text, .data и .bss расположены около 128 MiB.
Посмотрим, где стек, при помощи gdb:
esp указывает на 0xbffff0a0, что около 3 GiB. Значит, у нас есть куча в ~2.9 GiB.
В реальном мире верхний адрес стека случайный, его можно увидеть, например, в выдаче:
Как мы знаем, куча растёт от конца .data по направлению к стеку. Что, если мы подвинем раздел .data как можно выше?
Давайте разместим сегмент данных в 2 MiB перед стеком. Берём верх стека, вычитаем 2 MiB:
0xbffff0a0 — 0x200000 = 0xbfdff0a0
Смещаем все разделы, начинающиеся с .data на этот адрес:
Опции -Wl и -T hack.lst говорят компоновщику, чтобы он использовал hack.lst в качестве сценария работы.
Посмотрим на заголовок:
И всё равно данные размещаются в памяти. Как? Когда я попытался посмотреть значения указателей, возвращаемых malloc, я увидел, что размещение начинается где-то после окончания раздела.data по адресам вроде 0xbf8b7000, постепенно продолжается с увеличением указателей, а затем опять возвращается к нижним адресам вроде 0xb5e76000. Выглядит так, будто куча растёт вниз.
Если подумать, ничего странного в этом нет. Я проверил исходники glibc и выяснил, что когда brk не справляется, то используется mmap. Значит, glibc просит ядро разместить страницы, ядро видит, что у процесса куча дыр в виртуальной памяти, и размещает в одном из пустых мест страницу, после чего glibc возвращает указатель с неё.
Запуск big_alloc под strace подтвердил теорию. Посмотрите на нормальный бинарник:
А теперь на модифицированный:
Сдвиг раздела .data к стеку с целью уменьшить место для кучи смысла не имеет, поскольку ядро разместит страницу в пустом пространстве.
Песочница
Ещё один способ ограничения памяти программы — sandboxing. Отличие от эмуляции в том, что мы ничего не эмулируем, а просто отслеживаем и контролируем некоторые вещи в поведении программы. Обычно используется в исследованиях в области безопасности, когда вы изолируете зловреда и анализируете его так, чтобы он не нанёс вреда вашей системе.
Трюк с LD_PRELOAD
LD_PRELOAD — специальная переменная окружения, заставляющая динамический компоновщик использовать в приоритете предзагруженные библиотеки, в т.ч. libc. Этот трюк, кстати, также используют и некоторые зловреды.
Я написал простую песочницу, перехватывающую вызовы malloc/free, работающую с памятью и возвращающую ENOMEM по исчерпанию лимита.
Для этого я сделал библиотеку общего пользования (shared library) c моими реализациями вокруг malloc/free, увеличивающими счётчик на объём malloc, и уменьшающими, когда вызывается free. Она предзагружается через LD_PRELOAD.
Моя реализация malloc:
libc_malloc — указатель на оригинальный malloc из libc. no_hook локальный флаг в потоке. Используется для того, чтобы можно было использовать malloc в хуках и избежать рекурсивных вызовов.
malloc используется неявно в функции account библиотекой uthash. Зачем использовать таблицу хешей? Потому, что при вызове free вы передаёте в неё только указатель, а внутри free неизвестно, сколько памяти было выделено. Поэтому у вас есть таблица с указателями-ключами и объёмом размещённой памяти в виде значений. Вот что я делаю в malloc:
mem_allocated это та статическая переменная, которую сравнивают с ограничением в malloc.
Теперь при вызове free происходит следующее:
Да, просто уменьшаем mem_allocated.
И что самое крутое — это работает.
Полный код библиотеки на github
Получается, что LD_PRELOAD – отличный способ ограничить память
ptrace
ptrace — ещё одна возможность для построения песочницы. Это системный вызов, позволяющий управлять выполнением другого процесса. Встроен в различные POSIX ОС.
Это основа таких трассировщиков, как strace, ltrace, и почти всех программ для создания песочниц — systrace, sydbox, mbox и дебаггеров, включая gdb.
Я сделал свой инструмент при помощи ptrace. Он отслеживает вызовы brk и меряет расстояние между изначальным значением break и новым, которое задаётся следующим вызовом brk.
Программа форкается и запускает 2 процесса. Родительский – трассировщик, а дочерний – трассируемый. В дочернем процессе я вызываю ptrace(PTRACE_TRACEME) и затем execv. В родительском использую ptrace(PTRACE_SYSCALL) чтобы остановиться на syscall и отфильтровать вызовы brk из дочернего, а затем ещё один ptrace(PTRACE_SYSCALL) для получения значения, возвращаемого brk.
Когда brk выходит за заданное значение, я выставляю -ENOMEM в качестве возвращаемого значения brk. Это задаётся в регистре eax, поэтому я просто перезаписываю его с ptrace(PTRACE_SETREGS). Вот самая вкусная часть:
Также я перехватываю вызовы mmap/mmap2, так как у libc хватает мозгов вызывать их при проблемах с brk. Так что когда заданное значение превышено и я вижу вызов mmap, я обламываю его с ENOMEM.
Иные способы
Что ещё можно попробовать (эти варианты были отвергнуты по разным причинам):
Вот месяца два назад появилась у меня проблемка, большие файлы >500мб, компьютер качал с ошибками, причем ошибки появлялись в разных местах. После длительных поисков и мучений, дошли руки до проверки оперативной памяти DDR2 2Гб.
MemTest при проверке, на первых 3%, показал уже несколько ошибок (дальше не проверял).
Можно ли, как-нибудь, заблокировать битые ячейки памяти хотя бы программными возможностями!?
Стоит ли покупать 4гб оперативки ведь 64х разрядные ос не очень шустро работают с 32х разрядными приложениями.
P.S. а может дело в материнке?
Материнская плата: MSI MS-7519
Процессор: Intel Dual-Core E6500
ОЗУ: DDR2 2гб
Заблокировать битые ячейки оперативки
Такое вообще возможно? почитал в нете вроде как нет, но все таки хотелось знать наверняка. Суть вот.
Как заблокировать ячейки в VBA в Spreadsheet?
Как заблокировать ячейки в VBA в Spreadsheet (в сетке EXCEL) чтобы при запуске в них ничего нельзя.
Как заблокировать ячейки в VBA в Spreadsheet?
Как заблокировать ячейки в VBA в Spreadsheet (в сетке EXCEL) чтобы при запуске в них ничего нельзя.
Какое свойство может заблокировать ячейки стрингрида?
здраствуйте. в свойствах стрингрида копался искал как заблокировать ячейки и не дать пользователю.
в любом случае 4гб - универсальное решение для всех ОС и разрядности.
берите известных качеством фирм(т.е. абсолютных китайцев не советую).
если вам не написали, то по причине отсутствия рецепта, например я, про такое впервые слышу, и это не одно и тоже, как бэд сектора на хардах помечать.
Заблокировать битые ячейки нельзя, это вам не хард, где можно пометить дорожку как неиспользуемую, а заюзать дорожку из специльного резерва. Тут резерва нет и всё несколько проще.
Возможно проблема в слоте на материнке, переставте оперативку в другой слот и проверте,
если несколько планок проверти по одной
Опреративку переставлял в разные слота не помогло, а вообще например в С можно с любой ячейки считать информацию. наверное можно и занести в любую, или там стоит автораспределение?
В С можно считать инфу с любого адреса. Это и блокирование ячеек - это две большие разницы, как говорят в Одессе.
по алгоритму ведомому создателям хардов, в итоге всегда имеем фрагментацию, с которой надо постоянно бороться.
по алгоритму ведомому создателям хардов, в итоге всегда имеем фрагментацию, с которой надо постоянно бороться.
Причём тут создатели хардов, они чтоли пишут инфу на харды ? Скорее уже создатели файловой системы. Это был сарказм.
При чём тут драйвер ЖД ? :) Файлы записывает операционка на диск с ФАЙЛОВОЙ системой. Или на неотформатированном диске тоже есть фрагментация ? :D Файлы на диск можно писать и без драйвера, под досом например. :)
Темка старая, но суть та же. Есть битая ячейка. Планок 4 шутки, еще ддр2, машина через годик уйдет на покой и доживает свое. Проще говоря желания искать планку, а потом еще и менять нет никакого. Тут уже говорилось про С и возможность считать память с адреса, но насколько я понимаю это будет не физическая адресация? S&M выдает всегда ошибку на одном и том же адресе (+/- пара бит). Это наводит очевидную мысль, что адрес статичен. Так же это наводит еще на одну логичную мысль - пометить блок памяти, как занятый. Т.е. мы берем размечаем память, другие приложения к ней не обращаются, а наше приложение-заглушка просто висит и ничего не делает. Остается только один вопроса "КАК"?
Спасибо.
Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти))
Вот тут появилась такая интересная задача: требуется сделать программу которая управляет 1024.
Как заблокировать ячейки от изменения, но чтоб объекты (например кнопка) продолжали работать?
На моем рабочем листе находятся данные и всякие объекты: кнопки, полосы прокрутки,которые изменяют.
Можно ли заблокировать ДБ?
Можно ли заблокировать ДБ, например при UPDATE строк myconn.lock sql = 'UPDATE lala SET lala =.
Оперативная память – такая деталь системы, которая реже всех выходит из строя. Но спонтанные перезагрузки системы с BSOD и без него, вылеты игр или программного обеспечения, некорректные результаты обработки заданий в тяжёлом софте – всё это и многое другое может быть симптомами проблем именно с ней. На самом деле, такие проблемы возникают довольно часто и являются в основном следствием некорректной настройки самим пользователем, хотя исключать аппаратные проблемы всё же, нельзя. В этом материале мы познакомимся с актуальными модулями памяти для настольных систем, расскажем о возможных проблемах в их работе и причинах, по которым они возникают, а также поможем с диагностикой. Отчего ещё и почему могут возникать сбои в работе памяти? Что в итоге делать или не делать? Отвечая на эти вопросы, пытать мозг новичков мы не будем – расскажем всё простым языком для максимального понимания.
Как уменьшить избыточное потребление оперативной памяти в Windows 10?
Заключение
Как задействовать всю оперативную память, думается, немного понятно. Остается добавить, что вышеописанные методы более ориентированы именно на 32-битные системы, поскольку в Windows с архитектурой 64 бита появление таких ситуаций встречается нечасто, а настройки, установленные по умолчанию, обычно таковы, что предпринимать какие-то дополнительные действия не нужно. Если уж на то пошло, для освобождения дополнительного объема ОЗУ уберите ненужные элементы из раздела автозагрузки или отключите неиспользуемые службы и компоненты системы.
Настоящие геймеры используют лучший игровой браузер: Opera GX.
Opera GX — это специальная версия знаменитого браузера Opera, созданная специально для удовлетворения потребностей геймеров.
Opera GX, обладающая уникальными функциями, поможет вам получить максимум удовольствия от игр и просмотра веб-страниц каждый день:
- Ограничитель ЦП, ОЗУ и сети с «убийцей» горячих вкладок,
- Прямая интеграция с Twitch, Discord, Instagram, Twitter и мессенджерами,
- Встроенные элементы управления звуком и настраиваемая музыка,
- Пользовательские цветовые темы от Razer Chroma и принудительное создание темных страниц,
- Бесплатный VPN и блокировщик рекламы.
ОЗУ, сокращение от оперативно-запоминающее устройство (RAM — оперативная память), является одним из самых фундаментальных аппаратных компонентов компьютера, который определяет производительность вашей системы.
Объем оперативной памяти, которая у вас есть, контролирует производительность вашего компьютера, независимо от того, работает ли он с 20 вкладками и 5 открытыми приложениями, или компьютер, который дает сбой, когда вы пытаетесь смотреть YouTube, поэтому чем больше у вас оперативной памяти, тем лучше.
Поскольку оперативная память используется для любой задачи, требующей быстрого доступа к вычислительным ресурсам, ограничитель для вашего ПК звучит как хорошая идея для примерки.
Продолжайте читать и узнайте о лучших доступных решениях для уменьшения потребления оперативной памяти и получения быстрого и надежного ПК, которого вы заслуживаете.
3. Установите максимальное использование ОЗУ в Windows 10
Нажмите «Windows Key + R».
Введите в поле «msconfig» и нажмите Enter.
Перейдите на вкладку «Загрузка».
Щелкните «Дополнительные параметры».
Отметьте «Максимальный объем памяти».
Нажмите «ОК», чтобы сохранить изменения и перезагрузить компьютер.
Как задействовать всю оперативную память в Windows любой версии?
Итак, первым делом необходимо запустить конфигуратор системы, вызываемый командой msconfig, но обязательно с правами администратора. Если в консоли «Выполнить» такой пункт отсутствует, сначала необходимо активировать «Диспетчер задач», а затем, используя файловое меню, задать выполнение новой задачи, вписать указанную команду и отметить пункт создания задачи с правами администратора. Как задействовать всю оперативную память, вне зависимости от архитектуры?
Для этого в конфигураторе следует перейти на вкладку загрузки, нажать кнопку дополнительных параметров, а в появившемся окне настроек снять флажок с пункта использования максимума памяти, в поле которого наверняка будет указано значение ниже полного объема ОЗУ. Этот пункт целесообразно активировать только в том случае, если производится включение всех ядер процессора, когда для каждого ядра и указывается максимальный размер памяти.
Действия в BIOS
Теперь давайте посмотрим, как задействовать всю оперативную память (снять лимит ограничения), используя для этого настройки первичной системы ввода/вывода BIOS. Иногда это тоже помогает, хотя, как уже, наверное, понятно, разрядность установленной операционной системы здесь также не учитывается.
В меню разделов необходимо найти параметр, содержащий что-то вроде RAM Remapping (over 4 Gb) или Memory Hole, и активировать его, выставив для него значение Enabled. Если такого пункта в настройках нет, по всей видимости, версия BIOS изменение таких опций не поддерживает. Однако получить к ним доступ можно за счет установки обновленной прошивки для самой первичной системы. Но без специальных знаний заниматься такими вещами самостоятельно не рекомендуется, поскольку последствия могут быть совершенно непредсказуемыми.
Пропатчивание системных файлов
Наконец, рассмотрим решение, касающееся именно систем с архитектурой х86. Как раз о его использовании на свой страх и риск было сказано в самом начале. Для того чтобы обойти ограничения и задействовать оперативную память в 32-битных ОС Windows, можно воспользоваться утилитой ReadyFor4GB, которая подходит и для случаев, когда система более 4 Гб не видит, и для ситуаций, когда полный объем памяти определяется, но использовать его не представляется возможным.
Соответствующая запись появится и в конфигураторе. Проверить доступную и используемую оперативную память можно через обычный раздел свойств компьютера.
Примечание: если с установкой патча в Windows 7 возникли проблемы, возможно, сначала в разделе программ и компонентов придется удалить системные пакеты обновлений (KB) с номерами 3147071, 3146706 и 3153171, задать повторный поиск обновлений и исключить указанные апдейты из списка установки.
6. Дополнительные решения
- Удалите нежелательное программное обеспечение. Например, нет необходимости иметь программу для чтения PDF, если у вас есть браузер, поскольку вы можете открыть любой файл PDF в любом браузере. То же самое и с видеоплеером, используйте только одну программу для одной цели.
- Используйте только один браузер. Если у вас несколько браузеров, используйте только один за раз.
- Используйте режим экономии заряда батареи. Если вы пользователь ноутбука, используйте его в режиме экономии заряда батареи, так как он автоматически уменьшит фоновую обработку.
Как узнать задействованную оперативную память?
И для начала давайте посмотрим, как узнать полный установленный и используемый в данный момент объем ОЗУ. Если посмотреть на раздел свойств системы, вызываемый через меню ПКМ на значке компьютера на «Рабочем столе» или в «Проводнике», сразу же можно заметить, что в описании указан и весь объем, и доступный. Почему доступный размер меньше? Да только потому, что в любом случае система часть оперативной памяти использует под свои нужды (для процессов, как раз и обеспечивающих функционирование самой ОС).
Точно так же просто можно обратиться к системному монитору в «Диспетчере задач», если перейти на вкладку производительности. Однако ситуаций с невозможностью задействования всего объема может быть две:
- система не видит объем выше 4 Гб;
- общий объем определяется, но использоваться не может.
Ограничения 32-битных систем
Конечно, если на компьютере установлена операционная система с архитектурой 32 бита, все проблемы можно было списать исключительно на ее разрядность, ведь такие модификации Windows с объемами памяти выше 4 Гб работать просто «не приучены» изначально. Поэтому единственно правильным решением для исправления ситуации станет самая обычная замена системы х86 (32 бита) на 64-разрядную.
Но ведь иногда можно встретить и случаи, когда в той же Windows 7 х86 память 8 Гб видна, а доступным оказывается размер до 4 Гб. А вот это как раз и связано с ограничениями, которые подразумевает 32-битная архитектура. Впрочем, ситуация может быть еще банальнее, поскольку и материнская плата не всегда дает разрешение на использование полного объема ОЗУ. Чтобы не менять «железо», можно обратиться к некоторым скрытым программным инструментам, которые помогут решить такую проблему если не в полной мере, то хотя бы частично.
Быстрое решение всех проблем
Для получения дополнительной информации о продуктах HyperX и Kingston обращайтесь на сайты компаний.
Большинство специалистов в области оптимизации операционных систем семейства Windows одной из самых главных проблем этих ОС называют невозможность использования полного объема ОЗУ, установленного на компьютере, причем вне зависимости от архитектуры (32 или 64 бита). Система либо не распознает память выше определенного лимита (обычно это 4 Гб в 32-битных ОС), либо видит память, но работать с ней не может. О том, как задействовать всю оперативную память, далее и будет рассказано. Но сразу следует предостеречь всех пользователей, что применять некоторые приводимые ниже решения можно только на свой страх и риск.
2. Настройте Windows 10 на максимальную производительность
Щелкните правой кнопкой мыши значок «Компьютер» и выберите «Свойства».
На правой панели выберите «Дополнительные параметры системы».
В разделе «Дополнительно» нажмите «Параметры».
Выберите «Обеспечить наилучшее быстродействие».
Нажмите «Применить», затем «ОК» для выхода.
7. Используйте отличный браузер в качестве альтернативы
Использование ОЗУ находится под контролем ОС, и нет никакого способа принудительно очистить содержимое.
Так почему бы не обратиться к лучшему браузеру?
Мы говорим о специальной версии браузера Opera, рекламируемой как первый в мире игровой браузер, поскольку его основная цель — гарантировать, что браузер никогда не будет мешать вашему игровому процессу.
Обратите внимание, что он включает в себя уникальные функции, которые помогут вам получить максимальную отдачу как от игр, так и от просмотра веб-страниц, но лучшей функцией является «GX Control».
Это сделало Opera GX известной и высоко ценимой, поскольку она позволяет вам устанавливать собственные ограничения на объем оперативной памяти, процессора и использования сети, которые использует ваш браузер.
И это изумительно.
Браузер предлагает интеграцию с различными службами, что позволяет легко получить к ним доступ с боковой панели.
От Twitch, Discord, YouTube и Spotify до Facebook Messenger, WhatsApp, Telegram, Instagram и Twitter.
Просто помните, что если регулярно отключать ненужные фоновые службы и процессы из вашей оперативной памяти, скорость и производительность улучшаются.
Если вам действительно не нужно открывать эти 20 вкладок, закройте их и оставьте только те, на которых вы действительно находитесь, например этот веб-сайт.
Вы беспокоитесь о том, что ваш компьютер не использует всю оперативную память?
Узнайте, как увеличить полезную оперативную память прямо сейчас, и вы увидите разницу.
Не стесняйтесь использовать раздел комментариев ниже, чтобы сообщить нам, что сработало для вас.
1. Отключите автозагрузку программ
Нажмите сочетание клавиш «Windows Key + R».
Введите в поле «msconfig» и нажмите Enter.
Перейдите на вкладку «Автозагрузка» и нажмите «Открыть диспетчер задач».
Щелкните правой кнопкой мыши приложения, которые вы не хотите запускать при запуске, и выберите «Отключить».
Из чего состоит модуль памяти?
Оперативная память с точки зрения схемотехники является очень простым устройством, если сравнивать с остальными электронными комплектующими системы и не брать в расчёт вентиляторы (в некоторых ведь есть простейший контроллер, реализующий PWM управление). Из каких компонентов собраны модули?
- Сами микросхемы – ключевые элементы, которые определяют скорость работы памяти.
- SPD (Serial Presence Detect) – отдельная микросхема, содержащая информацию о конкретном модуле.
- Ключ – прорезь в печатной плате, чтобы нельзя было установить модули одного типа в платы, их не поддерживающие.
- Сама печатная плата.
- Разного рода SMD компоненты, расположенные на печатной плате.
Конечно, набор составляющих далеко не полный. Но для минимальной работы памяти этого достаточно. А что ещё может быть? Чаще всего – радиаторы. Они помогают остудить высокочастотные микросхемы, функционирующие на повышенном напряжении (правда, не всегда на повышенном), а также при разгоне памяти пользователем.
Кто-то скажет, что это маркетинг и всё такое. В некоторых случаях – да, но не HyperX. Модули Predator с тактовой частотой 4000 МГц без труда прогревают радиаторы до отметки 43 градусов, что мы выяснили в материале о них. К слову, о перегреве сегодня ещё пойдёт речь.
Далее – подсветка. Какие-то производители устанавливают таковую определённого цвета, а какие-то – полноценную RGB, да ещё и с возможностью настройки как при помощи переключателей на самих модулях, так при помощи подключаемых кабелей, а также программного обеспечения материнской платы.
Но, к примеру, инженеры HyperX пошли дальше – они реализовали на плате инфракрасные датчики, которые требуются для полной синхронизации работы подсветки.
Углубляться мы в это не будем – материал не об этом, да и рассказывали о них ранее, поэтому, если кому интересно – знакомимся с видео ниже и читаем материал по делу дальше.
Чему быть – тому не миновать
Выбирая бюджетную память от малоизвестных производителей, вы получаете кота в мешке – такие модули могут быть собраны «на коленке в подвале дядюшки Ляо» и даже не знать, что такое контроль качества. Иными словами – проблемы могут быть и при первом включении. Память ValueRAM от Kingston, конечно же, к таковой не относится, хоть и ценники на неё близки к минимальным. Учитывая предыдущую главу, некоторые пользователи могут сказать, что чем больше компонентов, тем выше шанс их поломки. Логично, опровергнуть это нельзя. Но уверенность HyperX в своей продукции (в частности – модулях Predator RGB) такова, что на неё распространяется пожизненная гарантия! Но так всё равно – что может выйти из строя? Всякие светодиоды и прочие подобные элементы дизайна в расчёт мы не берём.
Повреждение ячеек памяти.
Каждая микросхема памяти содержит огромное количество таких ячеек, в которые записывается и из которых считывается колоссальное количество информации. В случае записи данных в повреждённую ячейку, они искажаются, что вызывает сбой работы системы или приложения.
Переразгон, неправильные тайминги и напряжение.
Каждый из нас когда-либо пробовал или хочет попробовать разогнать память. Допускается увеличение частоты памяти не на всех платформах, но, если вы уже обзавелись поддерживающей разгон материнской платой, то можете встретить на своём пути определённые проблемы. В современных реалиях разгон памяти зависит не только от самих микросхем, но и от встроенного в процессор контроллера памяти и разводки линий на материнской плате. Два последних аспекта влияют на разгон в меньшей степени, нежели используемые микросхемы памяти. Чем больше вы увеличиваете тактовую частоту модулей памяти, тем более вероятно появление ошибок в их работе. С таймингами – наоборот. Их снижение может приводить к нестабильной работе. Улучшить стабильность работы разогнанной памяти может помочь увеличенное на неё напряжение, что влечёт больший нагрев и снижение ресурса работы в целом, так же как и потенциальную возможность выхода из строя в любой момент. В общем, если система работает нестабильно, то первым делом возвращайте все настройки к заводским.
Да, высокие температуры памяти тоже могут влиять на стабильность работы системы. Поэтому, выбирая высокочастотные комплекты, стоит позаботиться об их охлаждении. Как минимум, они должны обладать радиаторами. То же самое касается и низкочастотных модулей, подверженных разгону с вашей стороны. Хотите установить набор быстрой памяти в рабочую систему, в которой производятся вычисления с её помощью? Не верите, что современная DDR4 с рабочим напряжением 1.2 В может сильно греться? Полюбуйтесь! Температура микросхем модулей, не оборудованных радиаторами, практически достигает 85 градусов, что является пределом для большинства микросхем. Впечатляет, не правда ли?
Механические повреждения
Любое неаккуратное движение – и вы можете повредить модуль памяти. Сколоть микросхему, SPD или в печатной плате лопнут дорожки. При некоторых повреждениях память ещё может работать, но с критическими ошибками. К примеру, скол SPD, что изображён на фото ниже, сделал модуль полностью неработоспособным. К разговору о радиаторах – они позволяют снизить практически до ноля вероятность механического повреждения памяти, если, конечно, вы чай или кофе на него не прольёте…
Другие источники проблем работы памяти, но когда память ни при чём.
Немногие знают, что существуют три буквы, способные упростить подбор компонентов системы – QVL. Расшифровка звучит как Qualified Vendors List, что на русском звучит как список совместимости. В него входят те комплектующие, с которыми производитель материнской платы проверил своё изделие и гарантирует корректную работу. По понятным причинам, проверить сотни наименований может не каждый. Но каждый уважающий себя производитель предлагает достаточно обширный список в нашем случае моделей оперативной памяти.
Синие экраны смерти, зависания и перезагрузки – неисправность точно в…
Из какого минимального набора электронных компонентов состоит ПК/ноутбук/моноблок? Из материнской платы, процессора, накопителя, блока питания и оперативной памяти. Все эти компоненты связаны между собой, поэтому если один из них работает нестабильно, то это вызывает сбои всей системы. Самым правильным путём диагностики будет тестирование каждого из этих компонентов в другой системе. Таким образом, методом исключения мы сможем определить «самое слабое звено» и заменить его. Но не всегда можно найти другую систему для таких действий. К примеру, далеко не каждый из ваших знакомых может обладать платой для проверки модулей с тактовой 4000 МГц или около того. Допустим, проблему выявили, и она заключается в памяти. Проверили несколько раз в разных слотах и на паре материнских плат — а она начала стабильно работать. Магия? Как говорится во вселенной Marvel, магия — это всего лишь неизученная технология, секрет которой в нашем случае очень прост. Контакты на модулях памяти со временем окисляются, что приводит к невозможности их корректной работы, а когда вы достаёте и возвращаете несколько раз, они немного шлифуются, после чего всё начинает работать нормально. На самом деле, окисление контактов — это самая распространенная проблема сбоев работы оперативной памяти (и не только), поэтому возьмите за правило — если возникли какие-либо проблемы с платформой, то вооружитесь обычным канцелярским ластиком и аккуратно протрите контакты с двух сторон. Это актуально как раз в тех случаях, когда проблемы возникают при работе памяти в её номинальном режиме, если до этого она месяцами или годами работала без сбоев.
Если ластик не помог
Что делать дальше? Если система работает с катастрофическими сбоями, то только проверять комплектующие на заведомо рабочей платформе. Если же подозрение именно на память, работающую в номинальном режиме, то можно выполнить несколько тестов. Существуют бесплатные и платные версии программ, некоторые работают из Windows/Linux, а некоторые из DOS или даже UEFI.
Начнём с того, что есть у каждого пользователя Windows 7 и новее. Как ни странно, встроенный в Windows тест памяти работает весьма эффективно и способен выявить ошибки. Запускается он двумя способами – из меню «Пуск»:
Результат нас ждёт один:
Если базовый или обычный тесты не выявили ошибок, то обязательно стоит провести тестирование в режиме «Широкий», который включает в себя тесты из предыдущих режимов, но дополнен MATS+, Stride38, WSCHCKR, WStride-6, CHCKR4, WCHCKR3, ERAND, Stride6 и CHCKR8.
Просмотреть результаты можно в приложении «Просмотр событий», а именно – «Журналы Windows» — «Система». Если событий много, то проще всего будет найти нужный нам журнал через поиск (CTRL+F) по названию MemoryDiagnostics-Results.
Данная программа является лучшим решением для поиска ошибок работы памяти. Она обладает достаточным количеством настроек и выводит результат в понятном виде. Сколько тестировать память? Чем больше – тем лучше, если вероятность появления ошибки мала. Если же какая-либо микросхема памяти явно проблемная, то результат не заставит себя долго ждать.
Существует также MemTest для Windows. Использовать тоже можно, но смысла будет меньше – он не тестирует ту область памяти, которая выделена для ОС и запущенных в фоне программ.
Так как эта программа не новая, то энтузиасты (в основном – азиаты) пишут для неё дополнительные оболочки, чтобы можно было удобно и быстро запускать сразу несколько копий для тестирования большого объёма памяти.
К сожалению, обновления этих оболочек, чаще всего, остаются на китайском языке.
А вот наши энтузиасты пишут свой софт. Яркий пример – TestMem5 от Serj.
В целом, можно и linpack ещё в список тестов привести, но для его работы потребуется и полная нагрузка на процессор, что чревато его перегревом, особенно, если используются AVX инструкции. Да и это не совсем подходящий для проверки памяти тест, скорее – для прогрева процессора с целью изучения эффективности системы охлаждения. Ну и на циферки посмотреть. В целом, это не для домашнего использования бенчмарк, у него совсем другое предназначение.
5. Измените управление памятью
Нажмите сочетание «Windows Key + R».
Введите в поле «regedit» и нажмите Enter.
Перейдите по следующему пути:
Найдите «ClearPageFileAtShutDown», щелкните его правой кнопкой мыши и выберите «Изменить».
Измените значение на «1».
Нажмите «ОК» и перезагрузите компьютер.
4. Дефрагментируйте жесткие диски
Нажмите «Windows Key + R».
Введите в поле «dfrgui» и нажмите Enter.
В новом окне щелкните жесткие диски, которые нужно дефрагментировать, предпочтительно диск, на котором установлена Windows.
Нажмите «Оптимизировать» и следуйте инструкциям на экране, чтобы завершить процесс дефрагментации.
После завершения процесса перезагрузите компьютер.
Читайте также: