При невозможности разместить программу целиком в оперативной памяти, часть ее размещается на вторичной памяти (обычно на жестких дисках) – которую называют виртуальной памятью. При этом система должна следить за своевременной догрузкой в оперативную память недостающих частей с диска и выгрузкой неиспользуемых частей на диск. Это занимает определенное время и тормозит выполнение программ, но на практике эта система оказалась удобной, т.к. программист может не знать при разработке программы, сколько понадобится памяти и сколько ее будет в наличие на компьютере пользователя.
Для работы с виртуальной памятью наиболее удобна страничная организация памяти: каждая загружаемая и выгружаемая на диск часть программы – это одна страница. Однако с виртуальной памятью работают и системы с сегментацией памяти.
При нехватке памяти стоит задача определения – какие страницы выгрузить? На первый взгляд кажется, что можно выгрузить первые не используемые по порядку их расположения, но на практике оказывается, что они могут понадобиться очень скоро и может возникнуть ситуация. когда одни и те же страницы постоянно то выгружаются, то снова загружаются, а длительно неиспользуемые остаются постоянно в памяти, что сильно замедляет работу. Поэтому в настоящее время разработаны несколько алгоритмов выбора выгружаемых страниц по критерию прогноза их ближайшего использования. Для этого в таблицах страниц ведется учет количества обращений и длительности простоя для каждой страницы, на основании которых определяются самые менее используемые страницы для выгрузки. Эти алгоритмы значительно ускорили работу с памятью.
Как разогнать оперативную память. Инструкция для чайников.
Сами таблицы при большом количестве программ могут быть очень большими и поэтому тоже могут размещаться в виртуальной памяти, при этом обращение к виртуальной памяти как бы удваивается – вначале для загрузки части таблицы, а затем для загрузки самой страницы.
Для ускорения работы виртуальной памяти используется высокоскоростной кэш (или буфер поиска трансляции) для хранения записей таблицы страниц, которые использовались последними и вероятнее всего будут использоваться и следующими. При этом поиск таблицы страниц сначала выполняется в кэше, а затем в виртуальной памяти.
Кэш – память
Для ускорения обращений процессора к памяти используется кэш-память. Эта память более скоростная, чем оперативная и непосредственно связана с процессором. В этой памяти размещаются последние данные, с которыми работал процессор и с которыми, вероятнее всего, он будет работать еще. Выбор блоков.
Которые нужно оставить в КЭШе, а какие выгрузить из него определяется путем подсчет количества обращений к этому блоку и времени последнего обращения. Поэтому процессор сначала обращается к кэш-памяти и ищет в ней данные и, если их в ней нет, то из оперативной памяти в кэш считывается блок памяти с нужными данными и продолжается выборка данных из кэша процессором. Таким образом, процессор чаще всего работает с кэш памятью, которая более быстрая, чем оперативная и, следовательно, значительно ускоряется работа с памятью. Считывание информации и загрузка в кэш выполняется блоками. Поэтому выборка из кэша в пределах блока не требует дополнительных обращений к памяти.
КАК УВЕЛИЧИТЬ ОПЕРАТИВНУЮ ПАМЯТЬ НА ВАШЕМ СМАРТФОНЕ?
Вопросы на повторение:
· Какие задачи стоят перед разработчиками ОС по управлению памятью. Как распределялась память в первых ОС. За счет чего получается ускорение работы с оперативной памятью при наличии кэш-памяти.
· Принцип фиксированного и простого динамического распределения памяти.
· Принцип работы страничной памяти и сегментированной (в чем отличия). Как работает смешанная система страничной памяти и сегментированной
· Назначение и принцип работы виртуальной памяти. Какой механизм разработан для ускорения работы виртуальной памяти.
Источник: studopedia.su
Как поместить программу в оперативную память
Все мы знаем, что самое уязвимое место компьютера-жёсткий диск. Но полностью 3Д игру перенести в оперативку не получится, учитывая, что у меня всего 8 Гб оперативки. Можно ли перенести в оперативную память часть клиента, скажем, наиболее часто загружаемые локации? Это бы повысило производительность нереальным образом.
26.8.2014, 22:16
Все мы знаем, что самое уязвимое место компьютера-жёсткий диск. Но полностью 3Д игру перенести в оперативку не получится, учитывая, что у меня всего 8 Гб оперативки. Можно ли перенести в оперативную память часть клиента, скажем, наиболее часто загружаемые локации? Это бы повысило производительность нереальным образом.
Тут уместнее было бы переносить мулы в память видеокарты, Staticz вроде что-то там обещал сделать когда-нибудь потом. А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.
26.8.2014, 22:56
Тут уместнее было бы переносить мулы в память видеокарты, Staticz вроде что-то там обещал сделать когда-нибудь потом. А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.
Что за мулы? Я чайник. И как на счёт перенести отдельные папки в RAM диск? Не весь клиент.
26.8.2014, 23:01
Что за мулы? Я чайник. И как на счёт перенести отдельные папки в RAM диск? Не весь клиент.
Можно и отдельные папки, но зачем? Я могу написать как сделать сие извращение, но оно абсолютно бесполезное ИМХО.
Что за мулы?
26.8.2014, 23:05
Разработчик проекта «Квинтэссенция»
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 10
Из: РФ, Москва
Пользователь №: 11.948
А запустить можно с RAM диска, это без проблем. Вот только это не добавит производительности ни на шаг.
На самом деле в случае с UO (classic client) производительности добавит т.к. ускорит чтение данных (UO в отличии от большинства других игр не грузит все что ему надо в память а читает прямо из файлов с харда), однако реальный выигрыш можно будет почувствовать лишь на очень слабых машинах (вот только на них врядли хватит оперативки на такую роскошь) или на каких-то сверх безумных кастомных серверах, где число статики и объектов на экран измеряется тысячами и десятками тысяч (но опять же на данный момент таких серверов попросту нет) ну или как вариант в случае использования чего-то в стиле моего хака в UCS позволяющего увеличить область прорисовки, ибо увеличение дальности на 50% увеличивает загрузку в 2 раза, на 100% — в 4 раза и т.д (хотя даже в этом случае современный комп тянет без проблем даже с апскейлером). Вообще это можно судить по FPS, клиент принципиально не выдает больше 20, т.к. не видит в этом смысла. (а при включении опции понижения FPS в настройках так и вообще не более 10). Если FPS не падает ниже 20, то сколько не оптимизируйте визуально разницу даже не заметите.
ЗЫ Кстати в UCS сделал возможность запретить маппать мулы и грузить их всех принудительно в ОП. Но в этом случае загрузка идет куда дольше, т.к. надо загнать все 2 Гб данных в оперативу. Выигрыша в производительности лично я вообще никакого не заметил.
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn’t a dream, it is the reality, reality which is coming while we dream.
26.8.2014, 23:14
UO в отличии от большинства других игр не грузит все что ему надо в память а читает прямо из файлов с харда
Так а толку? Скорость хардов на сегодняшний день более чем 150 мб/сек (мегабайт), а это по размеру даже больше чем некоторые mul файлы. Я сомневаюсь, что UO для работы нужна такая скорость считывания. Оперативка (DDR3), та вообще может несколько раз за секунду пропустить через себя весь клиент, по пропускной способности.
Во всяком случае на глаз разница не будет заметно, будет УО из памяти работать или с харда.
P.S. Я так уже пробовал (вспомнил только что), разницы 0.
26.8.2014, 23:55
Разработчик проекта «Квинтэссенция»
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 10
Из: РФ, Москва
Пользователь №: 11.948
Так а толку? Скорость хардов на сегодняшний день более чем 150 мб/сек (мегабайт), а это по размеру даже больше чем некоторые mul файлы. Я сомневаюсь, что UO для работы нужна такая скорость считывания. Оперативка (DDR3), та вообще может несколько раз за секунду пропустить через себя весь клиент, по пропускной способности.
Во всяком случае на глаз разница не будет заметно, будет УО из памяти работать или с харда.
P.S. Я так уже пробовал (вспомнил только что), разницы 0.
Ну не все так просто, во первых 150 это скорость лишь линейного чтения. В реальности чтение идет мелкими блоками из разных файлов из разных их частей. Да и куча времени тратиться на работу с файловой системой, к примеру попробуйте удалить 4 гигабайта иконок — даже на быстром харде процесс займет пол дня.
В случае если речь идет не об SSD, то скорость зависит еще от фрагментации данных и от расстояния от центра блина до дорожки с данными. Да и UO не единственная работает с хардом, в фоне как правило туча проблем — кто-то что качает, плеер проигрывает музыкукино и тд, а ограничение то общее.. Во вторых не так уж это и много, учтите чтобы клиент выдавал даже 20 FPS он должен быть в состоянии отрисовать сцену за 120 секунды, даже от линейной скорости это лишь 7.5 мб, столько примерно весят 100 16-битных картинок размером 192х192, не мало конечно, но и далеко не так уж и много (так для справки 1 анимация в UO от 21 до до 35 действий, каждая в 5 направлениях, это уже 100-150, а в каждой далеко не 1 кадр, конечно нет смысла грузить все и сразу, но сами видите цифры не такие уж и фантастические в реальной жизни). Вообще даже на мощном компе UO с трудом потянет в разрешении 2560х1600, тупо не хватит быстродейсвия. Недавно делал тест GDI блитера — тупо закраска фона на мелкой форме дает 30-50 тысяч FPS, а при развороте на весь экран — 120 максимум, а там рендер куда сложнее.
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn’t a dream, it is the reality, reality which is coming while we dream.
Источник: forum.uokit.com
Настройка и оптимизация файла подкачки Windows 7
Файл подкачки или иначе своп-файл (swap-file), является виртуальной памятью, располагающейся на одном из жёстких дисков, и представляет собой «продолжение» физической оперативной памяти (ОЗУ). Если при работе какого-либо приложения ему не хватает объёма установленного ОЗУ, то Windows 7 использует своп-файл для хранения данных приложения, то есть производит запись в него и чтение из него данных, которые не поместились в ОЗУ. Этот процесс записи и чтения носит название свопинга. В Windows 7 этот файл имеет строго определённое имя pagefile.sys, которое нельзя изменить.
При своей установке Windows 7 самостоятельно определяет необходимый размер своп-файла и размещает его на системном разделе жёсткого диска. Часто бывает так, что подобное поведение системы относительно размеров и размещения этого файла не даёт максимального быстродействия компьютера. Поэтому пользователю приходится самому настраивать параметры pagefile.sys и оптимизировать его работу. Постараемся осветить наиболее важные моменты этого процесса.
Опубликовано 20 февраля 2020 в рубрике «Windows 7»
Источник: sdelaicomp.ru