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

2
sys463 7 Июн 2018 в 14:16
Вы имеете в виду открытые файлы каждым процессом...lsof
 – 
Siva
7 Июн 2018 в 14:18
@SivaPrasath, я имею в виду страницы памяти, используемые длительными процессами. Например, процесс имеет кеш памяти, кэширующий некоторые строки разной длины (от 4Кб до 128Кб). Есть ли способ узнать, сколько страниц памяти использует процесс для каждого порядка страниц? В моем случае я не знаю, какой процесс фрагментирует память... Насколько я знаю, lsof показывает количество файлов, открытых процессом.
 – 
sys463
7 Июн 2018 в 14:22
Вы имеете в виду, как процесс использует свою виртуальную память? Или физическую память, поддерживающую эту виртуальную память? И есть ли какая-то практическая проблема с измеримыми эффектами, связанными с этим?
 – 
ilkkachu
7 Июн 2018 в 15:12
@ilkkachu, я думаю, физическая память. Моя система страдает от фрагментации памяти, поэтому и спрашиваю. Я разместил вопрос здесь некоторое время назад. unix.stackexchange.com/questions/440155/…
 – 
sys463
7 Июн 2018 в 15:30

1 ответ

Вы можете получить информацию от /proc/<PID>/maps.

Примере:

$ cat /proc/3618/maps 
00400000-005ce000 r-xp 00000000 fd:00 78541      /usr/sbin/<service>
007cd000-00811000 rw-p 001cd000 fd:00 78541      /usr/sbin/<service>

Если вас беспокоят страницы, которые действительно находятся в оперативной памяти, используйте mincore & msync

1
Siva 7 Июн 2018 в 14:35