Кажется, у меня около 10 ГБ общей памяти, я полагаю, что это процесс, который я завершил с помощью ctrl-C.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           31Gi       706Mi       1.9Gi        10Gi        28Gi        19Gi
Swap:         4.0Gi       4.0Gi          0B

Вот вывод htop, отсортированный по % использования памяти:

enter image description here

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

$ ipcs -a --human

------ Message Queues --------
key        msqid      owner      perms      size         messages

------ Shared Memory Segments --------
key        shmid      owner      perms      size       nattch     status
0x00000000 13         kevin      600            4M     2          dest
0x00000000 48         kevin      600            4M     2          dest
0x00000000 49         kevin      600           64M     2          dest

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

$

Я, конечно, могу перезагрузить систему, но это сервер на работе, и у меня не всегда есть физический доступ, чтобы запустить его обратно. Есть ли способ принудительно освободить эту память?

2
kevbonham 7 Фев 2020 в 23:46
1
Tmpfs (например, смонтированный на /tmp, а также /run /run/user/* и т. д.) использует общую память
 – 
A.B
8 Фев 2020 в 15:31

2 ответа

Вы можете попробовать:

sync
echo 3 > /proc/sys/vm/drop_caches

Это очистит системный буфер и кеш. Лучше, если это будет сделано, когда сервер не находится под большой нагрузкой.

1
realpclaudio 8 Фев 2020 в 04:22
Я пробовал это немного раньше, основываясь на некоторых других сообщениях здесь, и не заметил никаких изменений :-(.
 – 
kevbonham
8 Фев 2020 в 04:57
Какую работу выполняет этот сервер? Веб сервер?
 – 
realpclaudio
8 Фев 2020 в 04:59
Нет, это рабочий стол Linux, который я использую для научных вычислений, но обычно я подключаюсь по ssh со своего Mac.
 – 
kevbonham
8 Фев 2020 в 18:04
Вы настроили некоторые параметры ядра? Это использование подкачки с большим количеством доступной оперативной памяти тоже странно.
 – 
realpclaudio
8 Фев 2020 в 23:59
Я не делал (по крайней мере, я так не думаю). Если это имеет значение, он работает под управлением Pop!_os (я думаю, что это в основном Ubuntu). Но это мой первый реальный опыт работы с ОС Linux, поэтому я избегал возиться с чем-то низкоуровневым.
 – 
kevbonham
10 Фев 2020 в 17:26

Удалось установить причину? Следующее может быть полезно для будущих других читателей:

Я только что провел исследование использования памяти. Я использовал df -h для просмотра памяти, используемой системами tmpfs, затем использовал ps -eo pid,rss,trs,drs,comm для копирования вывода в Libre Calc и суммирования rss (резидентная память, которую процесс занимает в килобайтах; trs - размер исполняемого кода - оказался небольшим, но drs - память, отличная от исполняемого кода - намного больше, чем rss, а в руководстве по ps не указано, в байтах, килобайтах или как-то еще, поэтому я не нашел для него применения).

В итоге смирился с погрешностью ~100Mb:

available memory = total - sum (rss) - sum (used tmpfs).

P.S. что касается общей памяти, то я был удивлен, что ipcs не выводит байты с pids, только тот или иной, поэтому я пропустил эту часть (по крайней мере, пока).

1
Martian2020 26 Сен 2021 в 04:20
1
Я так и не смог его отследить, нет. Спасибо за добавление ответа - в конце концов я выбрал другой подход и просто нашел лучший способ удаленного перезапуска сервера без физического доступа :-/
 – 
kevbonham
27 Сен 2021 в 17:15