LINUX.ORG.RU
ФорумTalks

[32 бита][swap vs. no swap]Внезапно...


0

3

Долго наблюдал битвы на тему «нужен или не нужен swap, если у тебя до фига оперативки», и один из аргументов сторонников наличия swap-раздела в любой ситуации звучит примерно как «нужен, работает лучше, диспетчер памяти на него рассчитан». И сегодня у меня ни с того, ни с сего зародился вопрос следующего характера:

1. Имеем 32-хразрядную архитектуру;
2. Имеем 4 Гб ОЗУ физически;
3. Имеем предел доступного адресного пространства для 32-хразрядной архитектуры, равный 4 Гб (PAE отключено);
4. А нужен ли swap именно в такой ситуации? Сможет ли диспетчер памяти его «адресовать» (отвлекаясь от способности диспетчера памяти использовать его при наличии свободной физической)?

То есть, по сути, если мы полностью забиваем 4 Гб физической памяти, не залезая в swap - не значит ли это, что мы уже ничего не сможем скинуть на диск, так как адресное пространство закончилось, и в этой ситуации swap абсолютно бессмысленен?

Или диспетчер памяти адресное пространство для каждого приложения выделяет, не оглядываясь на ограничения архитектуры, с использованием некоторого отображения виртуального адресного пространства приложения в реально адресуемые области памяти, которые могут перекрываться?

(Ссылки на литературу приветствуются - но, желательно, не на фундаментальные труды по проектированию ОС, от этого я далёк.)

★★
Ответ на: комментарий от Cyril

>ограничение на объём памяти - естественное, а вот блокировка PAE - та да, искусственная.
В винде всё намного смешнее. В некоторых версиях можно включить PAE, но со включенным PAE будет доступно всё равно только 4гб.

Ramen ★★★★
()
Ответ на: комментарий от Ramen

> В некоторых версиях можно включить PAE

Не-а. Нельзя. Ж;-) Наличие ключа /PAE в boot.ini в таких версиях просто игнорируется (это же касается и ключа /3GB).

Cyril ★★
() автор топика
Ответ на: комментарий от Ramen

> А ещё смешнее то, что в ХР SP2-3 PAE урезан до 33 бит. :-)

А вот с этого места поподробнее, пожалуйста... Впервые слышу про поддержку PAE в не-серверных версиях Windows.

Cyril ★★
() автор топика
Ответ на: комментарий от Yareg

>Ядро (код) может и в свопе лежать

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

aidaho ★★★★★
()
Ответ на: комментарий от aidaho

>Если в консерваториях ничего не менялось, то память выделенная kmalloc в своп не попадает. И код (любой) - тоже.

Ну, я просто предположил. В принципе, правильно, что не может)

Yareg ★★★
()
Ответ на: комментарий от Legioner

> Но зачем гигабайт?

Адресное пространство видеокарты живет там же.
Если у тебя гиговая или больше карточка, от рамы останется 2-2.5 гб.

pekmop1024 ★★★★★
()
Ответ на: комментарий от Cyril

>> Так без PAE ты все свои 4Гб адресовать не сможешь.

Э-э... С чего это?! Мы же говорим не в контексте конкретного прикладного процесса, а системы в целом.


Без PAE сам процессор физически не адресует больше 4ГБ

madcore ★★★★★
()
Ответ на: комментарий от madcore

Наблюдаю логическое противоречие. Итак,

1. У меня 4 Гб ОЗУ; следует

Так без PAE ты все свои 4Гб адресовать не сможешь.

2. Моё закономерное удивление, ибо у меня как раз столько памяти, сколько я могу адресовать:

Э-э... С чего это?! Мы же говорим не в контексте конкретного прикладного процесса, а системы в целом.

Следует разъяснение:

Без PAE сам процессор физически не адресует больше 4ГБ

А я где-то говорил, что у меня больше 4 Гб ОЗУ? И что мне надо адресовать больше? См. пункт 1.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> Моё закономерное удивление, ибо у меня как раз столько памяти, сколько я могу адресовать:

Не можешь: часть диапазонов адресов зарезервирована для портов ввода-вывода и апертуры видеокарты.

annoynimous ★★★★★
()

Ответа не твой вопрос я тебе не дам.

Сам себе явсегда выделяю на своих машинках раздел своп, независимо от того, до феньхуа мемории или нет, причём размером 2.5хRAM.

На 32 битовой архитектуре (гиг памяти) я усердно вводил уникс лайк в повер офф простой переиндексацией девятой Оперой базы писем или запуском самообновления питоновского пакэдж менеджера. Со свопом я достигал этого за десять с чем-то минут, без - гдет-то за три.

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

vOrOn
()
Ответ на: комментарий от annoynimous

В контексте «системы в целом» - могу. Вот больше - не могу никак, потому как 32 бита и без PAE.

Реплика в сторону: Господа, за ходом дискуссии следите, пожалуйста, а? А то комментарии на оторванные из сообщений отдельные фразы вообще ни к селу, ни к городу...

Cyril ★★
() автор топика
Ответ на: комментарий от Yareg

Предлагаешь всем владельцам нетбуков годовой давности (да и не только) их взять и выкинуть?

Ты про какие такие ноутбуки?

И ARM тоже не нужен?

Умерьте пыл, буквоед :) Я имел в виду 32-битный x86.

power
()
Ответ на: комментарий от power

>Ты про какие такие ноутбуки?

Про нетбуки, любые почти, кроме более поздних атомов, которые не так широко распространены.

Умерьте пыл, буквоед :) Я имел в виду 32-битный x86.


Но проблемы с памятью-то у него такие же.

Yareg ★★★
()

лицоладонь.txt

Глупый вопрос и 2 страницы глупого обсуждения. Да, ЛОР уже не торт.

Ссылки на литературу приветствуются

IA-32 Architecture Software Developers Manual. Volume 3: System Programming Guide. Chapter 3: Protected-Mode Memory Management.

geekless ★★
()
Ответ на: комментарий от Cyril

>А я где-то говорил, что у меня больше 4 Гб ОЗУ? И что мне надо адресовать больше? См. пункт 1.

В это адресное пространство мапится не только ОЗУ.
Или ты про сферическую систему в вакууме?

madcore ★★★★★
()
Ответ на: комментарий от Cyril

>Не-а. Нельзя. Ж;-) Наличие ключа /PAE в boot.ini в таких версиях просто игнорируется (это же касается и ключа /3GB).

В XP-32 PAE используется лишь для NoExecute, т.е. он включается/выключается, но объем доступного ОЗУ от этого не менятеся (у мну доступно 3.49ГиБ из 4.0ГиБ), в win2k3 должно всё работать как и положено в т.ч. LargePage, но не проверял

frame ★★★
()
Ответ на: комментарий от frame

Дело в том, что, ЕМНИП, до SP1 (или 2, я уже хз) PAE работало нормально

Shtsh ★★★★
()
Ответ на: комментарий от madcore

Переформулирую: имея 4 Гб ОЗУ и 32-хразрядную ОС, я НЕ нуждаюсь в PAE для работы с памятью.

Cyril ★★
() автор топика
Ответ на: комментарий от frame

Ясно. В эти дебри я не залезал.

Cyril ★★
() автор топика
Ответ на: лицоладонь.txt от geekless

>IA-32 Architecture Software Developers Manual. Volume 3: System Programming Guide. Chapter 3: Protected-Mode Memory Management

Видимо, надо было написать, что я (к счастью для окружающих) не программист. Ж;-) Хотя, конечно, прос=читать указанную главу это мне не мешает - просто подозреваю, что там будет много лишнего для меня.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> Переформулирую: имея 4 Гб ОЗУ и 32-хразрядную ОС, я НЕ нуждаюсь в PAE для работы с памятью.

Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, иначе доступная область оперативной памяти будет меньше 4 Гб.

geekless ★★
()
Ответ на: комментарий от geekless

Обоснование? Как технология PAE, которая предназначена для адресации физической памяти за пределами 4 Гб, вытекающих из ограничения максимального объёма памяти для 32-хбитной адресации, поможет мне при наличии именно этих самых 4 Гб? Вы таки решитесь утверждать, что без PAE часть этой самой оперативной памяти использоваться не будет ни при каких условиях (грубо говоря, часть памяти всегда будет содержать нули не потому, что туда ничто ничего не кладёт, а потому, что не может положить)?

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

Слушай, ну как тебе еще объяснить... У тебя есть комната со стеной, длиной 4 метра. Тебе туда надо поставить шкаф, длиной 4 метра (RAM) и кресло, которое займёт еще метр (диапазон адресов для общения аппаратурой). Очевидно, что всё вместе не влезет. У тебя два выхода: либо снести боковую стену (воспользоваться PAE), либо отпилить лишний метр от шкафа (в диапазон физических адресов впихнуть не всю RAM, а сколько останется свободно места, после откусывания области под ввод-вывод).

geekless ★★
()
Ответ на: комментарий от geekless

Вот без ложных аналогий и объяснить. Потому, что стена длиной 4 метра - это и есть RAM. А то, что описано выше, как шкаф длиной 4 метра - это отнюдь не RAM, а доступное ОС и приложениям пространство физических адресов. И для того, чтобы PAE в этом случае имело смысл, стена (RAM) должна иметь длину в те самые 5 метров.

Видимо, имеет место фундаментальное взаимонепонимание. Уточню свое видение ситуации: PAE начинается на уровне архитектуры процессора; без поддержки процессором PAE в классическом виде смысла не имеет. При наличии 4 Гб RAM и отсутствии PAE процессору ничто не мешает адресовать всю доступную память (думаю, очевидно, что при наличии ограничений на адресацию всего объёма памяти отладка тех же отображаемых в RAM кодов и данных BIOS устройств была бы невозможна). Ограничения, налагаемые на доступную для ОС область физической памяти наличием отображённых в RAM BIOS устройств, здесь совершенно ни при чём.

Я предлагаю всё-таки не путать память, доступную для распределения ОС, и реальную физическую RAM. Грубо говоря, убрав выделение областей RAM для взаимодействия с внешними устройствами, мы получим в своё распоряжение 4 Гб памяти БЕЗ всяких PAE.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

А к периферии вы простите, как будете обращаться, если BIOS при инициализации железа отобразит все 4 гига рамы, во все 4 гига адресного же диапазона?

geekless ★★
()
Ответ на: комментарий от geekless

Ещё раз - давайте не путать физическую адресацию RAM и доступную ОС область физических адресов RAM. Давайте правильно понимать суть PAE - эта технология предназначена для адресации ФИЗИЧЕСКОЙ (RAM) памяти за пределами ограничения в 4 Гб. Без PAE мы никак вообще не увидим 5 Гб физической памяти. С PAE мы не увидим 5 Гб физической памяти, если у нас её только 4 Гб. Таким образом, я предлагаю снять утверждение «Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, иначе доступная область оперативной памяти будет меньше 4 Гб.» - потому как при наличии всего 4 Гб RAM физически PAE не покажет, что её больше. Упоминаемая в этом утверждении «доступная область оперативной памяти» не может увеличиться от включения PAE - она ограничена объёмом зарезервированных областей и общим объёмом RAM. Более того, я в этом термине вообще вижу смешение понятий «оперативная память» и «виртуальная память».

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> не может увеличиться от включения PAE

Опять же, имеется в виду случай наличия только 4 Гб физической памяти.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

И ещё одно:

я в этом термине вообще вижу смешение понятий

Естественно, только в данном конкретном случае.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

Я не специалист, но мне почему-то кажется, что использование PAE (за счет возможности адресации за пределами первых 4 Гб) позволит убрать обращение к портам ввода-вывода (им же не сама память для этого нужна, а адреса?) за пределы этих 4 гигов, что сделает доступным для использования всю физическую память (RAM) в системе.

Собственно, что-то подобное происходит на 64 битах при тех же 4 гигах: система видит больше памяти, чем в случае 32-битной системы без PAE (а общий объём RAM и там, и там одинаковый и в пределах адресуемой области).

kss ★★★★★
()
Ответ на: комментарий от Cyril

Еще раз: вы просто ни черта не понимаете в обсуждаемом вопросе. И не хотите понимать.

Повторяю вопрос: А к периферии вы простите, как будете обращаться, если BIOS при инициализации железа отобразит все 4 гига рамы, во все 4 гига адресного же диапазона?

Более того, я в этом термине вообще вижу смешение понятий «оперативная память» и «виртуальная память».

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

Простыми и русскими словами: В IA-32 со стандартным механизмом трансляции адресов на выходе из буфера трансляции адресов получаем 32-битное число, являющееся физическим адресом. И это всё 32-х битное пространство у вас будет забито рамой. КАК вы будете общаться с периферией в таком случае?

geekless ★★
()
Ответ на: комментарий от kss

Не совсем так. Кое что убрать не получается - например, из-за кривых драйверов (вольное изложение цитаты Руссиновича про Windows).

Cyril ★★
() автор топика
Ответ на: комментарий от geekless

> Еще раз: вы просто ни черта не понимаете в обсуждаемом вопросе. И не хотите понимать.

Возвращаю и удваиваю, к сожалению. Похоже, вы понимаете в этом вопросе ещё меньше меня.

Повторяю вопрос: А к периферии вы простите, как будете обращаться, если BIOS при инициализации железа отобразит все 4 гига рамы, во все 4 гига адресного же диапазона?


А как это реализуется при применении грубого хака ядра Windows, выносящего как раз почти всё «железное» выше 4 Гб? С увеличением доступного ОС и приложениям диапазона ФИЗИЧЕСКИХ адресов RAM? Если бы было по-вашему - этот трюк был бы вообще невозможен.

Остальное пропускаю до момента ответа на следующие вопросы:

1. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб; значит ли это, что ОС НЕ МОЖЕТ выделить 2 Гб для себя и 2 Гб для прикладного процесса? (да/нет)
2. Если ответ на предыдущий вопрос «да» - позволит ли включение PAE выделить ОС по 2 Гб для себя и для прикладного процесса? (да/нет)
3. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб;
значит ли это, что при включении PAE я увижу, что доступный объём оперативной памяти стал 4,5 Гб (или хотя бы 4 Гб)? (да/нет)
2. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб; значит ли это, что я НИКАК НЕ МОГУ получить содержимое памяти, не входящее в область, видимую ОС? (да/нет)

Честно - очень хочу увидеть ответы на эти вопросы. Именно от вас.

Хотя нет, вот тут ещё спрошу:

И это всё 32-х битное пространство у вас будет забито рамой.


Вы хотя бы понимаете, что RAM - это ЖЕЛЕЗО? Что это именно те кусочки текстолита с микросхемами, проводниками и т.п., которые вставляются в слоты на матплате? И что «рамой» могут быть забиты только эти самые слоты - но никак не 32-хбитное пространство адресов? Это к вопросу о смешении понятий.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

Мыло-мочало, начинай сначала.

Вы хотя бы понимаете, что RAM - это ЖЕЛЕЗО? Что это именно те кусочки текстолита с микросхемами, проводниками и т.п., которые вставляются в слоты на матплате? И что «рамой» могут быть забиты только эти самые слоты - но никак не 32-хбитное пространство адресов? Это к вопросу о смешении понятий.

В цитатник, как говорится. Вы сделали мой день.

Честно - очень хочу увидеть ответы на эти вопросы. Именно от вас.

Все ответы вам уже даны ни один раз. Повторяться нет смысла. Для начала, может быть, вы всё-таки потрудитесь _себе_ задать элементарнейший вопрос. Вот у вас диапазон физических адресов от 0x00000000 до 0xffffffff, ровно 4 гига, весь. И весь он будет содержать ячейки рамы, 4 гига, полностью. Внимание, вопрос — сосредоточьтесь, не пропустите в этот раз самое важное — итак, вопрос: по какому адресу вы будете обращаться, когда захотите записать что-нибудь в видеопамять?

geekless ★★
()

у меня тоже 32 и 4Гб, своп ставил только ради гибернейта (не фреймворк, а «спящий режим»), ибо ноут

memnek
()
Ответ на: комментарий от Cyril

>1. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб; значит ли это, что ОС НЕ МОЖЕТ выделить 2 Гб для себя и 2 Гб для прикладного процесса? (да/нет)

Смотря какая ОС, в теории:) Физической памяти - нет.

3. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб;

значит ли это, что при включении PAE я увижу, что доступный объём оперативной памяти стал 4,5 Гб (или хотя бы 4 Гб)? (да/нет)

Будет доступно 4ГБ.

2. У меня 4 Гб физической памяти, из которой ОС видит, скажем, 3,5 Гб; значит ли это, что я НИКАК НЕ МОГУ получить содержимое памяти, не входящее в область, видимую ОС? (да/нет)


Без PAE, если коротко: нет.

madcore ★★★★★
()
Ответ на: Мыло-мочало, начинай сначала. от geekless

> И весь он будет содержать ячейки рамы, 4 гига, полностью. Внимание, вопрос — сосредоточьтесь, не пропустите в этот раз самое важное — итак, вопрос: по какому адресу вы будете обращаться, когда захотите записать что-нибудь в видеопамять?

Все эти вопросы оставьте на потом - сначала ответьте на заданные. Именно в предложенной форме. Я, в отличие от вас, прекрасно вижу, куда вы клоните - в сочетании с «вопросом на вопрос» это выглядит смешно.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> Я, в отличие от вас, прекрасно вижу, куда вы клоните

И куда же я клоню? Мне аж самому стало интересно.

в сочетании с «вопросом на вопрос» это выглядит смешно.

Особенно смешно, если отмотать тред на страницу вверх и посмотреть, кто же на самом деле практикует «вопросом на вопрос».

Может вы предпочитаете, чтобы я вам интеловские талмуды поцитировал? Или кусками кода в тред покидал? Или просто неумело троллите?

geekless ★★
()
Ответ на: комментарий от madcore

> Будет доступно 4ГБ.

Угу. Я уже даже знаю, почему. Проблема в том, что предыдущий оратор адекватно объяснить это не смог. Более того - даже повёл меня в ложном направлении в моих изысканиях на тему. В том числе - из-за неграмотного жонглирования терминами.

Cyril ★★
() автор топика
Ответ на: комментарий от geekless

> И куда же я клоню? Мне аж самому стало интересно.

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

Особенно смешно, если отмотать тред на страницу вверх и посмотреть, кто же на самом деле практикует «вопросом на вопрос».

Первым был мой вопрос «Обоснование?». Найдете вопрос, обращённый ко мне, раньше этого - можете взять с полки пирожок. Катавасия с непониманием закрутилась от этого.

NB: Должен честно признать, что более или менее исчерпывающий ответ от madcore ещё до начала срача я попросту прозевал.

Может вы предпочитаете, чтобы я вам интеловские талмуды поцитировал?

Не надо.

Или кусками кода в тред покидал?

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

Или просто неумело троллите?

Глупое предположение. На самом деле, достаточно было бы корректно сформулированного объяснения в одну строку (как то от madcore, которое я пропустил). Можно даже ваше переделать:

s/Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, иначе доступная область оперативной памяти будет меньше 4 Гб./Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, так как память устройств ввода/вывода отображается в начало общего 32-хразрядного адресного пространства, оставляя для адресации ОЗУ менее 4 Гб.

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> адекватно объяснить это не смог

повёл меня в ложном направлении

из-за неграмотного жонглирования терминами


аналогии, которая была сформулирована не вопиюще неверно - но не вполне верно



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

NB: Должен честно признать, что более или менее исчерпывающий ответ от madcore ещё до начала срача я попросту прозевал.


Ну хоть что-то вы честно признали, прогресс.

На самом деле, достаточно было бы корректно сформулированного объяснения в одну строку (как то от madcore, которое я пропустил). Можно даже ваше переделать: s/Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, иначе доступная область оперативной памяти будет меньше 4 Гб./Имея 4 Гб ОЗУ и 32-хразрядную ОС, вы нуждаетесь в PAE, так как память устройств ввода/вывода отображается в начало общего 32-хразрядного адресного пространства, оставляя для адресации ОЗУ менее 4 Гб.


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


так как память устройств ввода/вывода отображается в начало общего 32-хразрядного адресного пространства


В _начало_?! Гм. Ну гуглите дальше.

geekless ★★
()
Ответ на: комментарий от geekless

> Ну хоть что-то вы честно признали, прогресс.

«Поздравляю, Шарик - ты балбес.» (c) Хорошая мина при плохой игре у вас не выйдет, не старайтесь.

Друже, это не «объяснение», а простое отрицание неверного отверждения с вашей стороны.

В приведённом мной варианте его было бы достаточно. В приведённом вами - пошло дальнейшее непонимание. Тренируйтесь...

выше (не мои) и ниже (в т.ч., моё, данное вместе с физически-понятной аналогией)

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

В _начало_?! Гм. Ну гуглите дальше.

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

Cyril ★★
() автор топика
Ответ на: комментарий от Cyril

> точные детали о схеме распределения памяти.

Гы-гы. И сам хорош - адресного пространства, конечно, а не памяти.

Cyril ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.