Как вы узнаете, какая программа использует слишком много памяти?
Ubuntu недавно обрушился на меня. Я думаю, потому что у него не хватает памяти, поэтому я запустил free -m
Команда и обнаружил, что мое использование памяти было очень высоким. Итак, я побежал top
чтобы найти виновника, но отображаемые процессы использовали менее 1,5% памяти. Как узнать, какая программа вызывает сбой / запуск памяти в Ubuntu? Ниже вывод:
shafee@shafee-pc:~$ free -m
total used free shared buffers cached
Mem: 3824 3714 110 0 978 1954
-/+ buffers/cache: 780 3044
Swap: 99 0 99
shafee@shafee-pc:~$ top
top - 02:12:14 up 1:24, 2 users, load average: 0.16, 0.42, 1.49
Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.9%us, 1.9%sy, 0.3%ni, 79.3%id, 15.5%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 3916708k total, 3803848k used, 112860k free, 1002308k buffers
Swap: 102396k total, 0k used, 102396k free, 2001852k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4200 root 20 0 289m 53m 38m S 2 1.4 1:06.45 Xorg
5590 shafee 20 0 19348 1368 956 R 2 0.0 0:00.01 top
1 root 20 0 24124 2136 1264 S 0 0.1 0:02.05 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:24.23 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0 0.0 0:00.11 ksoftirqd/1
11 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/2
13 root 20 0 0 0 0 S 0 0.0 0:03.89 ksoftirqd/2
14 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/3
16 root 20 0 0 0 0 S 0 0.0 0:00.16 ksoftirqd/3
17 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset
18 root 0 -20 0 0 0 S 0 0.0 0:00.00 khelper
19 root 0 -20 0 0 0 S 0 0.0 0:00.00 netns
21 root 20 0 0 0 0 S 0 0.0 0:00.01 sync_supers
shafee@shafee-pc:~$
Или нормально иметь 110 Мб свободной памяти и моя проблема связана с чем-то другим?
6 ответов
Вы читаете вывод free
неправильно. Ядро Linux делает много собственного управления памятью, в свою очередь выделяя больше, чем ему действительно нужно - так что ваше истинное количество "Свободной памяти" 3044
находится в столбце "Свободно" +/- Buffers/cache
линия, что делает только 780 МБ фактически потребляется.
По умолчанию top
будет сортировать на основе потребления процессора. Вы можете нажать Shift+M для сортировки по проценту потребляемой памяти, чтобы лучше понять, какое программное обеспечение использует память, выделенную для ядра.
free -m
total used free shared buffers cached
Mem: 7873 3916 3956 0 231 1117
-/+ buffers/cache: 2567 5305
Swap: 12401 0 12401
И в топ с памятью отсортировано:
top - 17:05:18 up 2 days, 1:40, 4 users, load average: 0.21, 0.14, 0.11
Tasks: 237 total, 1 running, 234 sleeping, 0 stopped, 2 zombie
Cpu(s): 1.6%us, 0.8%sy, 0.1%ni, 96.7%id, 0.8%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8062420k total, 4013632k used, 4048788k free, 237204k buffers
Swap: 12699644k total, 292k used, 12699352k free, 1144752k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1632 root 20 0 884m 240m 6532 S 0 3.1 1:20.17 java
3911 marco 20 0 1011m 165m 22m S 0 2.1 9:20.62 chrome
3852 marco 20 0 770m 162m 45m S 0 2.1 14:59.59 chrome
1091 root 20 0 491m 160m 118m S 3 2.0 29:19.44 Xorg
1747 marco 20 0 659m 108m 34m S 1 1.4 18:43.92 compiz
3964 marco 20 0 1113m 99m 21m S 0 1.3 18:51.88 chrome
1759 marco 20 0 668m 94m 21m S 0 1.2 2:27.42 nautilus
3046 marco 20 0 788m 86m 26m S 0 1.1 1:22.96 evolution
1793 marco 20 0 647m 85m 18m S 0 1.1 0:12.74 shutter
1791 marco 20 0 404m 85m 13m S 0 1.1 5:19.51 bitcoin
2938 marco 20 0 809m 78m 31m S 0 1.0 1:01.07 empathy
9630 marco 20 0 265m 73m 19m S 1 0.9 12:41.52 skype
9618 marco 20 0 914m 64m 21m S 0 0.8 1:14.04 chrome
1777 marco 20 0 432m 64m 14m S 0 0.8 1:45.96 pastie
Наконец, чтобы помочь вам диагностировать программное обеспечение, попробуйте передать -c
флаг наверх: top -c
так как это даст вам полный путь, имя и параметры выполняемой команды.
Вы можете использовать следующий скрипт для просмотра общего использования памяти отдельными приложениями в вашей системе GNU Linux
Вы можете запустить приложение gnome-system-monitor. Лучше всего узнать, сколько оперативной памяти используется какими приложениями, а также сколько процессоров также используется. Вы можете изменить приоритет процесса, чтобы он выполнялся еще быстрее, например, если вы хотите конвертировать видео и т. Д. И т. Д.
Это хороший вопрос, но информация показывает, что памяти достаточно. Вы должны контролировать использование памяти, хотя.
Мой любимый системный монитор conky
и отображение памяти является частью этого:
Общая строка памяти показывает, что используется 2,5 ГиБ из 7,4 ГиБ.
Подробная строка памяти показывает:
Web Content
использует 7% памяти. Это подпрограмма Firefox.Firefox
сам использует 7% памятиffmpeg
использует 3% памяти. Это.gif
самописецpeek
делая видео мы смотрим.
Conky легко настраивается, и рабочий стол каждого выглядит по-другому. Вы можете Google conky
и получите 787 тысяч просмотров.
В Kubuntu я просто нажимаю Ctrl-Esc, а затем сортирую вещи, используя интересующую область: память, процессор, ...
У меня была эта проблема, когда я работал на машине с Ubuntu 20.04.
Позвольте мне добавить свои 2 цента к этому вопросу :
Ваша фактическая свободная / нераспределенная память составляет 110 МБ.
Буфер /кэш/выделенная память, равная 3044, на самом деле является свободной памятью, но она уже выделена.
Вот что происходит. По мере того, как вы используете больше приложений на своем ноутбуке, ваш буфер/кэш/выделенная память увеличивается за счет выделения большего объема памяти специально для этих приложений. Эта память увеличивается, чтобы вы могли легко получить доступ к этим приложениям в памяти, что повышает производительность.
Однако более новым приложениям теперь, возможно, придется бороться с оставшейся свободной/нераспределенной памятью, потому что буфер/кэш/выделенная память, даже если они свободны, уже выделены для некоторого набора приложений, которые вы используете в настоящее время.
Я нашел в сети скрипт, который поможет вам освободить часть буфера/кеша/выделенной памяти для использования другими приложениями без перезагрузки компьютера. Возможно, вам придется запускать скрипт один раз в день/неделю.
free -h && sudo sysctl -w vm.drop_caches=3 && sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches && free -h
Ресурсы : как узнать, какая программа использует слишком много памяти?
Это все.
надеюсь, это поможет