[вопрос] про память в винде
может у тебя мать не может увидеть больше чем 1.5?
раньше было иначе? раньше на это не обращали внимания? комп новый?
а она их точно все видит ?
Думаю, что мать все видит, ибо винда видит два гига.
Раньше просто было наплевать, а сейчас окошки plsqldev плодятся со страшной силой, замучался закрывать/открывать.
что за программы? может они тупо лочат себе память.
Вообще, идея интересная, но я что-то плохо представляю, как можно залочить память так, чтоб ее не было видно в том же коммиттед мемори.
Возможно, с учётом всяких зарезервированных адресов 1.5гб реальной памяти - ограничение твоего чипсета.
UPD: Увидел, что у тебя core2 - вряд ли дело в этом, всё-таки достаточно новое железо.
а свопа сколько? я не помню позволяет ли винда делать overcommit
оверкоммит почти наверняка не умеет. это вообще, афаир, исключительно линуксам присуще. по крайней мере по дефолту =)
ну вот, она намапила 4гига и всё. больше замапить не может, хотя даже физическая память есть.
Вспомни недавнее обсуждение, про своп в рамдиске свыше 4гигов как средство обхода ограничения в 4 гига в виндовсХП и им подобным.
Я там приводил ссылку на прожку, которая была специально написана для подобных тестов. Афаир, все, что она делает - тупо маллочит память. Все намапленное сразу падает в коммитед мемори.
винда позволяет отдельно "резервировать" память, это можно понимать как аналог оверкоммита в линухе. однако резервирует оно участки виртуал спейса процесса, и этих "резерваций" в сумме в винде можно нарезервировать больше, чем реально доступно, так же как на оверкоммитить в линухе.
В общем вывод пока один - я не вижу механизма в винде, которым можно было бы сожрать память так, чтоб ее не было видно в коммитед мемори.
терминология простая: если идёт анонимный (без файла) или приватный (cow) мапинг
то либо идёт резервирование хранилища под него (reserve) или не идёт (возможен overcommit)
а собственно при обращении выделяется оперативная память, заполняется как надо и подвязывается в pte (commit)
//
то же резервирование памяти в винде - это какое то отдельное от маллока апи (которое правда мне не удалось найти за минуту гугленья которое именно резервирует определенный кусок виртуального адресного пространства, не резервируя при этом ничего другого
Из веселого: проблема, кажется, решилась сама. Грешу на отключенный недавно O&O CleverCache. Так-то...
а может просто поставился апдейтом третий сервиспак?
нед, версия венды не поменялась
то же резервирование памяти в винде - это какое то отдельное от маллока апи (которое правда мне не удалось найти за минуту гугленья которое именно резервирует определенный кусок виртуального адресного пространства, не резервируя при этом ничего другогоВ винде виртуальные страницы выделяются в два этапа: саначала VirtualAlloc(..., MEM_RESERVE): просто метятся соответствующие страницы виртуального пространства как зарезервированные, при обращении все равно будет AV. Как деталь: можно резервировать только начиная с границы allocation granularity (64KB afair).
Потом зарезервированную память можно закоммитить: VirtualAlloc(..., MEM_COMMIT при этом выделяется соответствующее место в файле подкачки. Теперь уже можно работать с памятью. Коммитить уже можно постранично, все будет тип-топ.
Можно, конечно, вызывать VirtualAlloc( ..., MEM_RESERVE | MEM_COMMIT чтобы сделать оба действия за один вызов.
Все это автоматически делается для стека потока, например: зарезервировано сразу под стек, коммитится по мере использования (используется GUARD-флаг).
Это так, для тех, кто путается в терминологии.
VirtualAlloc(..., MEM_RESERVE)Ага, пасибо, это и хотелось нагуглить.
Оставить комментарий
katrin2201
Проблема: памяти больше 1.5Гб не выделяется. При достижении этой планки новые приложения просто молча перестают открываться. При этом своп включен, оперативки 2 гига. Нотификейшена в трее, что щас память кончится не выводится. Система просто молча затыкается. Если лишнее позакрывать, то оживает.В общем, симптомы почти аналогичны достижению предела по committed memory, но в данном случае до этого предела далеко.
Вопрос: втф? как фиксить?
Конфиг:
Винда xpsp2 x86 с включенным виндовсапдейтом.
кора2 e6750. 2 гига физической памяти.
boot.ini: /noexecute=optin /fastdetect /3GB (без /3GB те же яйца)