Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / как освободить cached memory? / 12 сообщений из 12, страница 1 из 1
09.04.2005, 01:47:23
    #33006205
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
У меня дома wlan роутер со встроенным Линуксом. На нем обычно ~19Mb свободной оперативной памяти. Но после того как делаю какой-нибудь download с подключенного к нему usb-стика cached memory вырастает до ~18Mb, а свободная память стабилизируется где-то на уровне 1,5Mb. Вопрос в том можно ли не перегружая роутер освободить cached memory?

версия ядра 2.4.20 (gcc version 3.2.3 with Broadcom modifications)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
[gg@erika root]$ more /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:   30920704   29339648    1581056          0    1392640   18755584 
Swap:         0          0          0 
MemTotal:         30196  kB
MemFree:           1544  kB
MemShared:            0  kB
Buffers:           1360  kB
Cached:           18316  kB
SwapCached:           0  kB
Active:            3476  kB
Inactive:         17976  kB
HighTotal:            0  kB
HighFree:             0  kB
LowTotal:         30196  kB
LowFree:           1540  kB
SwapTotal:            0  kB
SwapFree:             0  kB
...
Рейтинг: 0 / 0
09.04.2005, 22:55:50
    #33006639
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
зачем?
...
Рейтинг: 0 / 0
09.04.2005, 23:57:46
    #33006663
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Хрензачем?

т.е. cached memory выделяется для процессов точно так же как и free memory?
Я почему-то думал что cached memory это только кеш файловой системы.
...
Рейтинг: 0 / 0
10.04.2005, 02:24:49
    #33006686
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Это кэш файловой системы. Но если приложениям понадобится память, кэш будет автоматически урезан.
...
Рейтинг: 0 / 0
10.04.2005, 02:46:40
    #33006687
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.10.2006, 17:22:04
    #34057997
Kraq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Понятно, что cache будет урезан, а как же быть с buffers? Ведь он тоже занимает солидное место. Вообще кто может объяснить какие данные хранятся в buffers и может ли он автоматически урезаться при нехватки памяти остальным процессам? У меня, например, при 512 метров оперативки buffers занимает 141 Mb, а cached – 216 Mb. При загрузке системы эти цифры становятся меньше, но в тем не менее один раз в swap попало 92 Kb. Почему же cache не захотел поделится памятью?
...
Рейтинг: 0 / 0
16.10.2006, 17:23:41
    #34058008
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
KraqПочему же cache не захотел поделится памятью?

Именно потому что не успевает. Это самая гадкая вещь в Linux - работа с памятью.
...
Рейтинг: 0 / 0
16.10.2006, 19:21:12
    #34058412
Adekamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
попробуй sync
...
Рейтинг: 0 / 0
16.10.2006, 19:38:55
    #34058470
Kraq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Запустил sync. Вообще никаких изменений
...
Рейтинг: 0 / 0
17.10.2006, 09:12:29
    #34058968
Михаил0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
2Kraq
В буфер попадает то, что должно быть записано на диск. Сама запись идет позже, но данные остаются в буфере, который начинает играть роль кеша... В твоем случае 141М давно записан, но если понадобиться эти данные прочитать, то они уже есть в памяти! Он может разрастаться при записи на медленное устройство (флешку например), если она смонтирована без флага write-throw(?). У меня запись 100М идет 3сек, показывает скорость 30М/сек, хотя флешка умеет около 5М/сек. Просто эти 100М сваливаются в память (предположим система выделила все 100, то есть память есть, слишком старые страницы кеша она грохнула, решив что ЭТА информация более актуальна. Если память занята и активно используется, 100 под буфер выделить не удается, чтож, будет 10М! И порциями по 10М данные валяться в буфер, а оттуда на флешку). На мой взгляд работа с памятью в линуксе сделана очень грамотно, аккуратно и красиво!

Про своп. Эти твои 92К попали туда после пары дней аптайма, но никак не сразу, верно? Дело в менеджере памяти. Он сгружает туда самые старые страницы, страницы к которым дольше всего не было обращений. Разумеется есть приоритеты и, так сказать, весовые коэффициенты... Например кеш и буфер туда не попадают вообще и если надо делать выбор: засунуть в своп старую страницу с данными (rw) или грохнуть более новую страницу с кешем (но не совсем новую!), кешу не повезет :). Следом не повезет страницам с "секцией кода" (так раньше называлось, как сейчас - не в курсе), то есть тем, которые были загружены из .so или исполняемого файла и имют атрибут в памяти ro. Поскольку они не менялись со времени загрузки, их нет смысла записывать в своп, а потом читать. Можно просто грохнуть, а потом прочитать из нужного исполняемого файла. В твоем случае в своп уехал кусок какого-то неиспользумого демона, например контроля за ups. Система решила, что кусок вчерашнего кеша более актуален и востребован чем кусок демона к которому небыло обрашений уже 2 дня. И это правильно! Кстати, система нечасто очищает своп и корректирует размер. Зачем? Лишние обращения к диску... Если уж совсем приприпрет... Так что возможно твои 92К уже вернулись в память :)
...
Рейтинг: 0 / 0
17.10.2006, 17:59:51
    #34061303
Kraq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
Спасибо, Михаил0, ты окончательно прояснил принцип работы Linux с памятью. Получается, что если ОС долгое время не перегружать, то это приведёт к тому, что swap забьётся и далее, при скидывании новых данных в swap, сначала будут от туда удалятся наиболее неактуальные, а потом произойдёт собственно запись. Я верно понимаю? Если так, то IMHO это не очень эффективно.
...
Рейтинг: 0 / 0
18.10.2006, 08:42:46
    #34062270
Михаил0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как освободить cached memory?
>Получается, что если ОС долгое время не перегружать, то это приведёт к тому, что swap забьётся и...

Нет. Я к тому, что со временем своп может использоваться, хотя раньше (вчера/позавчера) он был не нужен, а нагрузка не менялась. Так эффективнее. Также со временем он может расти, но это происходит не вследствии утечек памяти или еще каких-нибудь гадостей, а по вполне объяснимым причинам: записала система в своп 1М, отметила это дело в файле (ведь своп это fs!), свои структуры в памяти заполнила чтобы знать где что лежит. Через какое-то время эти данные понадобились, система прочитала этот 1М. Теперь надо бы записать информацию в своп, что свободного места там стало больше, а занятого, соответственно меньше и тд. А зачем? Это совершенно ненужное обращение к диску. Потребовалось сгрузить в своп еще 1М. Можно к нему обратиться, посмотреть сколько и где места занято, там очень даже может быть фрагментация, найти свободный мегабайт и туда записать. Зачем такие сложности? Может отступить от начала свопа столько, сколько нужно чтобы попасть в гарантированно неиспользуемую область и туда записать несчастный мегабайт? Так будет быстрее. Но тулзы os будут говорить что используется уже 2М свопа, вводя пользователя в заблуждение. "Вот, у меня своп растет, как кончится тачке кирдык!" Не кончится.
Система всетаки иногда делает "зачистку" свопа. Может даже дефрагментацию. Когда размер занятого достигает каких-то процентов от общего размера свопа или озу.

>при скидывании новых данных в swap, сначала будут от туда удалятся наиболее неактуальные, а потом произойдёт собственно запись.

Неактуальных данных в свопе нет! Надеюсь выше я объяснил это.
Есть ощущение, что какие-то термины ты неправильно понимаешь...
"Страница" -- страница памяти. Размер 4k. (Во всякой экзотике может быть другим). Менеджер памяти оперирует именно со страницами. Приложение об этом не знает и знать не должно.
"кеш/буфер" -- область памяти (куча страниц) объединенные предназначением. Там храниться то, что недавно было прочитано с диска или ожидает записи на диск.
"своп" -- партишн или файл на диске. По сути дополнительная память, только ме-е-едленная. Чтобы работа с ней шла побыстрее несколько изменен и, как следствие, усложнен алгоритм работы с ней. Чтение/запись идет все теми же страницами.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / как освободить cached memory? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]