Легко и быстро, сам того не ожидая, я уменьшил расход памяти почти в два раза. Предупреждаю сразу: я не знаю как это работает! Но это сработало. С вашей помощью хотелось бы разобраться.
Моя машинка имеет 1ГБ памяти. Недавно стал осваивать KDE4. Постепенно с ростом количества приложений памяти стало не хватать. Занято до 90%, плюс кеш. Система начала жутко тормозить. Из постоянно запущенного: nepomuk, akonadi, kontact, kopete, skype, choqok, kalarm, konsole, dolphin. Ничего из этого ни заменять, ни выбрасывать мне не хотелось.
Тут я вспомнил, что давно замечал некоторую странность... Один и тот же дистрибутив по-разному расходует память, в зависимости от ее объема. Перезагружаю машину, редактирую команду запуска в grub, добавляя параметр mem=512M, и загружаюсь с половиной памяти. Все загрузилось. И несмотря на то, что у меня нет swap, никаких ошибок не произошло. Система уместилась в отведенной ей памяти, израсходовав все те же 90%. Последним был запущен firefox, после чего все стало невыносимо тормозить. Перезагрузился снова. И - о чудо! Занято 55%, со всеми приложениями. А без входа в KDE - меньше 10%! (а было около 30%) Машина ожила и все летает.
А теперь - внимание! Вопрос: Что собственно произошло? Кто знает? Поделитесь соображениями, в идеале хотелось бы заставить всю систему быть более экономной, вовремя освобождать память, и впредь так не баловаться! :)
Кому это тоже помогло или не помогло - отпишитесь, интересно таки :)
пятница, 19 февраля 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
ты просто ограничил количество памяти видимое ядру. как я понял
ОтветитьУдалитьмне кажется стоило посмотреть, что занимает столько места. Обычно подгружаются куча библиотек, но они не занимают 90% памяти
Ну да, ограничил, это понятно. Но расход-то после этого уменьшился, когда перезагрузился в нормальном режиме. Почему так? Такое ощущение, как буд-то ядро запоминает часто используемые библиотеки и заранее их подргужает.
ОтветитьУдалитьСмотреть-то смотрел, вот только ничего не увидел. Куча процессов, всем понемножку - ничего особенного, никто из толпы не выделялся.
у меня тоже под 95%, но именно процессами кушается 60% остальное кэш
ОтветитьУдалитьfree -o
total used free shared buffers cached
Mem: 1026292 993956 32336 0 25568 360204
это нормальная работа с памятью
можно кэш конечно сбрасывать,
http://www.opennet.ru/tips/info/1455.shtml
+ я точно видел есть параметр, управляющий максимальным заполняемостью памяти
Нет, речь не про кеш, а именно про то что процессы отъедает. Кеш у меня обычно забирает почти все остальное, но это только улучшает производительность, а не наоборот.
ОтветитьУдалитьв кде4 помимо этого запущен seamonkey где-то с 20 вкладками, gimp, все это хозяйство занимает 250 метров, правда, не дебиан.
ОтветитьУдалитьБлин, ну сколько раз повторять - память НЕ ВАША, ОНА СИСТЕМНАЯ!!!
ОтветитьУдалитьА то что те, о ком мы не говорим не умеют ее эффективно расходовать постоянно держа кучу памяти в состоянии Free - это их проблемы.
Linux (да и любой UNIX) будет работать ВСЕГДА со всей доступной памятью. И это не баг - это фича. И прекратите мешать системе работать.
Блин, ну как так? 250 метров!!.... Я тоже так хочу :) А какой у Вас дистрибутив?
ОтветитьУдалитьMinimumLaw, Вы, видимо, невнимательно прочитали. Еще раз объясняю. У меня сильно тормозит компьютер! Я не имею возможности запустить ни gimp, ни eclipse, потому что система перестает откликаться. Я даже с firefox не могу комфортно работать. А когда заставил систему экономнее расходовать память - все пошло как по маслу.
Поэтому со всей ответственностью заявляю. Компьютер - мой! И память - моя! И если система не умеет эффективно работать с моей памятью, то я буду бить ее по рукам и учить, как это нужно делать! :)
Я не против того, чтобы система расходовала всю имеющуюся память. Только в том случае, если она также умело будет особождать ее при первой надобности. Поэтому я хочу либо научить ее освобождать, либо, по крайней мере, заставить ее более экономно относить к памяти. Либо еще что-то, что мне посоветуют - не знаю... В общем, томроза меня не устраивают! И все тут :)
Попробуйте всё же использовать swap.
ОтветитьУдалитьУ меня на ноуте 4 гига оперативки, а вот как она расходуется:
Mem: 4052016k total, 3786400k used, 265616k free, 155032k buffers
Swap: 4000176k total, 193852k used, 3806324k free, 1514228k cached
Из тяжёлых приложений KDE4, FF(с FireBug), Chromium (с кучей вкладок), Netbeans, Amarok.
Само-собой система не выключается, а только ставится в ждущий режим (перегружается только при обновлении ядра). Поэтому в только что загруженной системе расход будет совсем другой. Вы видите, что система под кеш юзает 1.5 гига? И при этом 190М выкинуто в свап. А потому, что эти либы(которые в свапе) нигде, кроме как загрузки. не используются
Я бы добавил swap с удовольствием. Только у меня не винт, а SSD. Поговаривают, swap убивает карточку за несколько месяцев.
ОтветитьУдалитьПоставил KDE-4.4, сначала потреблялось много памяти - при двух залогиненных пользователях, kopete и firefox
ОтветитьУдалитьчерез некоторое время потребление памяти уменьшилось. само.
например плазма сначала жрала почти 100 мегов, потом 25
поробуйте ка переместить куданибудь все настройки или добавить нового пользователя и при этом запустить KDE4.4 с 512 мегами памяти
Моя версия такова. Операвтивная память используется совместно операционной системой и видеокартой. Последняя использует свою часть в качестве видеопамяти и отрезает ее себе без участия ОС. В свою очередь ОС в силу каких-то причин (видеодрайвер?) не понимает этого и использует всю память в своих целях, оставляя для видеокарты слишком мало, что и вызывает тормоза. Уменьшив количество памяти, которое видит ОС, ты тем самым даешь больше свободы видеокарте и тормоза пропадают.
ОтветитьУдалитьЭто, конечно, не объясняет всех изменений, но другой версии у меня нет :)
наскреб на коленках ...
ОтветитьУдалитьps aux --sort rss | awk '{s += $6}{if($6 > 1024) print $1"\t\t"$6"\t\t"$11} END {print "Total use memory:" s" byte"}' | less
А там и смотрите кто вас так сильно зажимает. Имхо, нездоровая ситуевина какая та у Вас ...
Сейчас память опять стала куда-то уходить. Предложенная Вами команда выводит примерно следующее:
ОтветитьУдалитьartem 3452 kdeinit4:
artem 3520 /usr/lib/kde4/libexec/kpackagekitsmarticon
artem 3540 /usr/bin/akonadi_vcard_resource
artem 3568 /usr/bin/akonadi_vcard_resource
root 3604 kdeinit4:
artem 3672 kdeinit4:
artem 3676 /usr/bin/akonadi_ical_resource
artem 3688 /usr/bin/akonadi_ical_resource
root 3688 kdeinit4:
artem 3696 /usr/bin/akonadi_ical_resource
artem 3976 /usr/bin/nepomukservicestub
artem 4028 kdeinit4:
artem 4284 akonadiserver
artem 4560 kdeinit4:
artem 4632 kdeinit4:
artem 4716 /usr/bin/nepomukservicestub
artem 4816 kdeinit4:
artem 4904 kdeinit4:
artem 5368 kdeinit4:
artem 5560 kdeinit4:
artem 6092 /usr/bin/korgac
artem 6244 kdeinit4:
artem 6384 kdeinit4:
artem 6388 /usr/bin/nepomukservicestub
artem 7200 kdeinit4:
artem 7792 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7868 kdeinit4:
artem 7872 kdeinit4:
artem 7872 kdeinit4:
artem 7876 kdeinit4:
artem 7892 kdeinit4:
artem 7896 kdeinit4:
artem 7900 kdeinit4:
artem 8056 /usr/bin/knetworkmanager
artem 8068 kdeinit4:
artem 10376 kdeinit4:
artem 10784 /usr/bin/choqok
artem 11892 python
artem 12768 kdeinit4:
artem 14552 kwin
mysql 14608 /usr/sbin/mysqld
artem 15076 python
artem 18044 /usr/bin/kalarm
artem 20000 kdeinit4:
artem 20112 /usr/sbin/mysqld-akonadi
artem 20488 /bin/bash
artem 24464 krunner
artem 27160 /usr/bin/dolphin
artem 27668 /usr/lib/virtuoso/virtuoso-t
artem 32008 /usr/bin/knotify4
artem 40556 kdeinit4:
root 42680 /usr/bin/X
artem 44464 skype
artem 55436 /usr/bin/kopete
artem 56120 /usr/bin/kontact
artem 101780 /usr/lib/firefox-3.5.8/firefox
Total use memory:1035728 byte
Походу это kdeinit4 поедает всю память.
ОтветитьУдалить$ ps aux --sort rss | grep kdeinit4 | awk '{s += $6}END {print "Total use memory:" s" byte"}'
Total use memory:298544 byte
Но пока не нашел никакой информации об этом.
После перезапуска - еще лучше:
ОтветитьУдалить$ ps aux --sort rss | grep kdeinit4 | awk '{s += $6}END {print "Total use memory:" s" byte"}'
Total use memory:583016 byte
Хотя, общая загрузка памяти меньше...
Это какие-то мифические числа. Все не то.
Здравствуйте, Артем! Сталкивался как-то с похожей ситуацией под Gnome. Проблема была c NetworkManager, данная утилита очень сильно отъедала память. Мониторинг проводил визуально, через top с сортировкой по использованию памяти (^+M). Еще слышал, что top и ps не показывают реальную картину выделенной памяти на приложение, а зачастую завышают цифру, суммируя совместно используемые библиотеки приложениями. Для получения точных результатов рекомендуют использовать exmap. Думаю вам должен помочь top или atop. ;)
ОтветитьУдалитьСпасибо. Я сейчас подозреваю nepomuk и/или akonadi. Первый отключил, без второго, к сожалению, не работает kmail. Память пока утекает.
ОтветитьУдалитьЕсли SWAP не подключен, то приложение которое злоупотребляет ресурсами, при недостатке памяти будет отстрелено ядром, в syslog или message будет внесена информация от kernal о злоупотребляющем процессе. Отстрел процесса может продолжаться довольно долго от 1-3 ч. при этом система будет отвечать только на ping, если есть время - поэкспериментируйте. У меня такая картина наблюдалась на продакшен серверах.
ОтветитьУдалитьbesso@maiden:~$ sysctl vm.swappiness
ОтветитьУдалитьvm.swappiness = 60
а у тебя?
$ sysctl vm.swappiness
ОтветитьУдалитьvm.swappiness = 10
Но мне кажется, это не имеет значения.
XD что называется лучше поздно чем никогда. Значение этого параметра указывает на то,что при загрузке памяти на 10 все что добавляется уходит в своп,а так как его нету-глюк
Удалить