Linux zram (compcache) + SwapCached

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

zram_stats говорит:

orig_data_size:     97419264 
compr_data_size:    40315919 

и:

grep SwapCache /proc/meminfo 
    SwapCached:        90200 kB

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

если это правда, не очень полезно сохранять ~57 МБ, пока он также находится в оперативной памяти с ~90 МБ.

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

5
задан 3498DB
источник

2 ответов

короткий ответ, это не копия, это просто "разные".

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

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

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

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

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

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

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

2
отвечен Horn OK Please 2012-07-19 14:55:56
источник

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

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

0
отвечен psusi 2012-07-19 14:55:12
источник

Другие вопросы cache compression linux swap