В новой запущенной системе, free
отчеты о 1.5G используемая RAM (8G RAM в целом, Ubuntu 12.04 с lightdm и плазменным рабочим столом, одно консольное запущенное окно). Наличие выполнения приложений, которое я использую, это все еще, использует не больше, чем 2G. Однако имея систему, работающую в течение нескольких дней, все больше моей свободной RAM исчезает - не обнаруживаясь в списке используемых приложений: в то время как smem --pie=name
отчеты используемых меньше чем 20% (и 80%, являющихся доступным), говорит все остальное по-другому. free -m
например, отчеты приблизительно в день 7:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(таким образом, Вы видите, это не буферы или кэш). Сегодня это наконец законченное системой, отказывающей полностью: заканчивающийся диспетчер Windows, приложения, "зависающие в воздухе", (необрамленном) - и всплывающее окно, уведомляющее меня о "слишком многих открытых файлах". Отчеты системного журнала:
kernel: [856738.020829] VFS: file-max limit 752838 reached
Таким образом, я закрыл те приложения, которые я смог закрыть и уничтожил X Ctrl-Alt-backspace использования. X пытался подойти снова после этого с failsafeX, но не мог сделать так, поскольку он больше не мог обнаруживать свою конфигурацию. Таким образом, я переключился на консоль с помощью Ctrl-Alt-F2, получил всю информацию, о которой я мог думать (vmstat, свободный, smem, proc/meminfo
, lsof, ps aux
), и наконец перезагруженный. X снова придумал failsafeX; на этот раз я сказал этому "восстанавливаться с моей поддержанной конфигурации", затем переключился на консоль и успешно используемый startx
поднять графическую среду.
У меня нет реального ключа к разгадке того, что вызывает эту проблему - хотя ей, должно быть, придется сделать или с X самой, или с некоторыми пользовательскими процессами, работающими X - как после уничтожения X, free -m
вывод был похож на это:
total used free shared buffers cached
Mem: 7459 2677 4781 0 62 419
-/+ buffers/cache: 2195 5263
Swap: 9536 59 9477
(~3.5GB освобождаемый) - для сравнения выводу после начала с нуля:
total used free shared buffers cached
Mem: 7459 1483 5975 0 63 730
-/+ buffers/cache: 689 6769
Swap: 9536 0 9536
Двумя более полезными выводами обеспечивают memstat -u
. Незадолго до катастрофического отказа:
User Count Swap USS PSS RSS
mail 1 0 200 207 616
whoopsie 1 764 740 817 2300
colord 1 3200 836 894 2156
root 62 70404 352996 382260 569920
izzy 80 177508 1465416 1519266 1851840
После уничтожения X:
User Count Swap USS PSS RSS
mail 1 0 184 188 356
izzy 1 1400 708 739 1080
whoopsie 1 848 668 826 1772
colord 1 3204 804 888 1728
root 62 54876 131708 149950 267860
И после перезапуска, назад в X:
User Count Swap USS PSS RSS
mail 1 0 212 217 628
whoopsie 1 0 1536 1880 5096
colord 1 0 3740 4217 7936
root 54 0 148668 180911 345132
izzy 47 0 370928 437562 915056
Править: Просто добавленный два графика от моей системы контроля. Интересный видеть: каждый раз, когда существует "переход" в потреблении памяти, пики ЦП также. Просто найденный этим прямо сейчас - и это напоминает мне о другом индикаторе, указывающем X самом: Часто при возврате к моей машине и разблокировании экрана, я нашел, что что-то делающее heavvy работает над моим ЦП. Сверение top
, это всегда оказывалось /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none
.
Таким образом, после этого долгого объяснения, наконец мои вопросы:
Я работал 8.04 (Hardy) в течение приблизительно 5 лет на моей старой машине, никогда не испытав подобное (всегда время работы больше чем 100 дней, прежде, чем перезагрузить для, например, обновления ядра). Это теперь - полная новая машина с новой установкой 12,04. В случае, если это имеет значение, некоторые спецификации:
AMD A4-3400 APU с Radeon (TM) Графика HD, с помощью открытого исходного кода ati/radeon драйвер (так никакой установленный fglrx), 8 ГБ RAM, HDD WDC WD1002FAEX-0 (1 ТБ), Asus F1A75-V системная плата Evo. Ubuntu 12.04, 64-разрядная с KDE4/Plasma. Приложения обычно открываются, более или менее постоянно включают Эволюцию, Firefox, консоль (с Полуночным Командующим, работающим внутри, приблизительно 4 вкладками), и LibreOffice - плюс иногда Калибр, Gimp и Moneyplex (банковское программное обеспечение, которое я уже использую в течение почти 20 лет теперь в версии, которая сделала прекрасный на Hardy).
Править: Сегодня я нашел одного из "злых парней": плазменный рабочий стол KDE4s. Используемая память была снова до 5 ГБ, когда я сделал a killall plasma-desktop && plasma-desktop
. Освобожденный выше на 1.3 ГБ RAM! ps
говорит:
RSS SIZE VSZ
plasma usage before restart 120988 526472 1300816
plasma usage after restart 92352 495972 1263632
Таким образом, где те 1.3 ГБ были? Разность между теми значениями, если сложено, составляет 96 МБ - не 1.3 ГБ.
И это может только быть одной частью, поскольку все еще 3.7 ГБ используются (должны быть меньше чем 2 ГБ). Я контролировал это в течение прошедших 6 дней с помощью нескольких инструментов: используемая память (не говорящий о кэше и буферах) увеличивается медленно, но постоянно. Даже если я не за своим столом для выполнения чего-нибудь...
Относительно процессов контроля с открытыми файлами, я в настоящее время использую следующий 1 лайнер (я люблю оболочку и особенно колочу) для получения лучших 5:
echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5
Управляйте здесь в 4 строках для лучшей удобочитаемости. Ничего особенного все же оттуда - за исключением того, что Skype не нравится, не повредили Интернет-соединение. Каждое разъединение вызывает небольшое увеличение своих открытых файлов, но ничто поразительное. С другой стороны, кажется, что плазма также ответственна за это:
Видеть отбрасывание дескрипторов файлов в конце? Это было плазменным перезапуском.
Огромное количество открытых файлов - хороший признак того, что что-то идет не так. Я думаю, что это был бы системный демон KDE.
Откройте консоль и запустите «top». Затем используйте < и> изменить столбец сортировки на VIRT или RES и посмотреть, какие программы используют больше всего памяти. Утечка памяти будет отображаться как сильно завышенная виртуальная память, так как после потери указателя на утечку памяти она не будет использоваться и будет заменена. Также запустите «lsof» и найдите процесс с большим количеством открытых файлов, так как это действительно утечка дескриптора файла.
Отследить программу и сообщить об ошибке.
Я думаю, это нормальное поведение системы. Скорее всего все хорошо.
Вы можете прочитать эту замечательную статью (linux съел моего барана), чтобы понять, как linux управляет вашим бараном и почему не нужно беспокоиться: