3

У меня есть вопрос по поводу zram + swapcached. Я знаю, что zram - это сжатый обмен в памяти, но Linux использует свою собственную внутреннюю область SwapCached для хранения последних страниц подкачки также в памяти. У меня есть ноутбук на 512 МБ с жестким диском ~ 128 МБ.

zram_stats говорит:

orig_data_size:     97419264 
compr_data_size:    40315919 

а также:

grep SwapCache /proc/meminfo 
    SwapCached:        90200 kB

Означает ли это, что у меня есть эти страницы подкачки в оперативной памяти дважды? Первый сжимается, а второй не сжимается внутренней функцией swapcache в Linux?

Если это правда, не очень полезно экономить ~ 57 МБ, а также в ОЗУ с ~ 90 МБ.

Можно ли вообще отключить функцию swapcache в Linux, когда я перехожу на zram? Или я могу ограничить максимальную площадь подкачки?

2 ответа2

2

Краткий ответ: это не копия; это просто "другое".

Длинный ответ таков: SwapCache - это страницы, которые извлекаются из подкачки (обычно используется термин "подкачка" вне зависимости от хранилища резервных копий, где zram и HDD swap являются двумя примерами хранилищ резервных копий) и временно распаковываются, когда им нужно быть активно доступным. Помните: страницы в сжатом RAM не могут быть доступны непосредственно, так как данные сжимаются и поэтому нечитаемым (ну, нечитаемым , если вы хотите прочитать исходные данные). Поэтому он должен храниться где-то, когда система говорит: «Хорошо, теперь мне нужна страница из сжатого кэша!». Если вы разархивируете его "на лету" каждый раз, когда вам понадобится что-нибудь из zram, это будет чрезвычайно ресурсоемким и, вероятно, приведет к общему замедлению системы, которое будет хуже, чем чтение из подкачки на жестком диске. Таким образом, система хранит кэш некоторых из ваших переставленных страниц в памяти, где "некоторые из" определяются страницами, которые были нужны в последнее время.

Кроме того, если вы разумно указываете, что страницы, выгруженные на жесткий диск, не сжимаются: там все еще используется swapcache, потому что вместо высокой загрузки ЦП при доступе к этим страницам вы получаете высокую задержку при ожидании поиска жесткого диска. и извлеките секторы и верните их в память, где они могут быть добавлены в кэш-память.

Эта стратегия управления позволяет оптимизировать ситуацию, когда вы запускаете много программ; перенести некоторые рабочие наборы программ в сжатый файл подкачки при увеличении нагрузки на память (zram); затем распакуйте рабочий набор отдельных программ (программы за раз) в несжатый swapcache, когда / если вы обращаетесь к этой программе на переднем плане или если она выполняет некоторую фоновую активность.

Это не слишком отличается от того, как swap работает в целом, независимо от его резервного хранилища (сжатый кэш в RAM или в swap). Если бы у вас был очень медленный жесткий диск с множеством открытых программ и большим количеством пространства подкачки, вы заметили бы следующие симптомы:

  1. Как правило , хорошие показатели по программе "переднего плана" (окно , которое вы взаимодействуете с прямо сейчас)

  2. Длительная задержка и громкий звук при загрузке любых программ, которые долгое время находились в фоновом режиме.

Итак, что вы получаете со сжатой оперативной памятью вместо замены жесткого диска, так это то, что при переносе этой фоновой программы на передний план избегается "длительная задержка и большое количество звуков на диске". Вместо этого ЦП сходит с ума от запуска распаковки сжатых страниц, и он временно сохраняет их в кэш-памяти подкачки при обращении к программе, так что доступ к одной и той же сжатой странице несколько раз не приводит к ресурсоемкой распаковке каждого из них. время. Но лично я предпочел бы иметь более высокую нагрузку на процессор по сравнению с высоким дисковым вводом / выводом и сопутствующей задержкой.

0

Да, это означает, что эти страницы находятся в оперативной памяти дважды: один раз сжатый и один раз несжатый. Нет, вы не можете отключить его.

Я надеялся, что frontswap с zcache обойдут эту проблему, и он наконец-то был объединен с linux 3.5, но кажется, что вам все равно нужно иметь реальный своп, иначе frontswap не работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .