LINUX.ORG.RU

pmap: anonymous memory


1

1

Добрый день.

pmap при просмотре карты памяти процесса для некоторых блоков выводит anon. Google пояснил, что это anonymous memory - swap-подобная область для кеширования ч-либо процессом. Вопрос - можно ли её почистить и чем?

anonymous

> Google пояснил, что это anonymous memory - swap-подобная область для кеширования ч-либо процессом.

Не совсем так. Это просто виртуальная память без backing store. Совсем грубо -- это просто кусок памяти, запрошенный процессом у ОС.

> Вопрос - можно ли её почистить и чем?

Нет.

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

>> Google пояснил, что это anonymous memory - swap-подобная область для кеширования ч-либо процессом.

> Не совсем так. Это просто виртуальная память без backing store.

Ее backing store вполне может быть swap-файл (при соотвествующих настройках overcommit в Линуксе, вся анонимная память имеет backing store).

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

>Совсем грубо -- это просто кусок памяти, запрошенный процессом у ОС.

И там что, ничего нет? (не знаю терминологию - это про backing store)

Вот пример, иксы, top показывает 127 Мб в колонке res, pmap на X даёт ~115000 Кб [anon]. Свопа на диске нет. То есть память как-бы используется, как она может быть только виртуальной? С другой стороны, иксы так разрастаются при запуске некоторых программ и память потом не возвращается.

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

> И там что, ничего нет?

Процесс запросил память -- ядро ему её дало (если ограничения на ресурсы позволяют, см. выхлоп ulimit -a, а также man getrusage). А уж как он её использует -- его личное дело.

> Вот пример, иксы, top показывает 127 Мб в колонке res, pmap на X даёт ~115000 Кб [anon].

http://wiki.debian.org/XStrikeForce/FAQ#xservmemory

Для тех, кто не любит ходить по ссылкам -- это видеопамять, X сервер отображает её в своё адресное пространство.

> С другой стороны, иксы так разрастаются при запуске некоторых программ

Что вполне понятно -- pixmap'ы и прочая лобуда хранится в памяти X сервера.

> и память потом не возвращается.

Взяли красивую картинку и сделали фоном? Вот она и хранится в памяти X сервера.

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

>http://wiki.debian.org/XStrikeForce/FAQ#xservmemory Для тех, кто не любит ходить по ссылкам -- это видеопамять, X сервер отображает её в своё адресное пространство.

Мы любим ;) То есть это отображение - виртуальное, не сказывающееся на потреблении памяти, но top считает его за реальное и не отображает ещё и увеличение общей памяти, так?

>Взяли красивую картинку и сделали фоном?

Картинка тут ни при чём. Говорю же, после запуска некоторых программ.

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

> Говорю же, после запуска некоторых программ

Это значит, что для обслуживания запросов программы сервер потребляет много памяти. Если [VR]SS не уменьшился после завершения программы, это значит, что сервер не отдал память системе (это не обязательно утечка памяти).

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

>Если [VR]SS не уменьшился после завершения программы, это значит, что сервер не отдал память системе (это не обязательно утечка памяти).

Не уменьшился, не отдал, но почистить память хоцца ;)

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

> То есть это отображение - виртуальное, не сказывающееся на потреблении памяти, но top считает его за реальное и не отображает ещё и увеличение общей памяти, так?

Примерно так. А если точнее -- по показаниям top сложно (невозможно?) определить, то ли это видеопамять, отображённая в адресное пространство Xorg, то ли это обычная память, которую Xorg для своих нужд использует, а то ли это (обычная) память, где хранятся клиентские данные.

> Картинка тут ни при чём. Говорю же, после запуска некоторых программ.

Возможные причины:

1. Вообще-то время жизни графического контекста напрямую не связано со временем жизни процесса, который его создал (очевидный пример: отрисовка X клиента, выполняющегося на удалённой машине). Так что чего-то заведомо плохого в таком поведении нет.

2. Это может быть глюк в клиентской программе, например, она "забывает" освободить графический контекст.

3. Это может быть глюк в самом Xorg.

4. Это может быть глюк в драйвере видеокарты.

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

Потому рассказывайте -- что у Вас за видеокарта, что именно за программа такая, и что говорит xrestop.

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

>Потому рассказывайте -- что у Вас за видеокарта, что именно за программа такая, и что говорит xrestop.

1. Nvidia Ti 4200

2. Например, такое делает firefox 3 и conglomerate

3. xtop говорит, что занято 58 Мб (вместо 127 по версии top) под реально запущенные программы. То есть, если я правильно понял, всё ок. ;)

>А если точнее -- по показаниям top сложно (невозможно?) определить, то ли это видеопамять, отображённая в адресное пространство Xorg, то ли это обычная память, которую Xorg для своих нужд использует, а то ли это (обычная) память, где хранятся клиентские данные.

А по показаниям pmap? Тоже врёт? Есть ли универсальный монитор, который не врёт?

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