【问题标题】:swap on zram is not being used in Linux-3.12在 Linux-3.12 中没有使用 zram 上的交换
【发布时间】:2017-06-24 04:59:09
【问题描述】:

我们使用的是基于 BBB 的定制板,它有 4GB 的 eMMc 和 256MB 的 RAM,

我们看到了碎片问题,所以我想启用ZRAM 并在其上安装交换。

我在内核 menuconfig 中启用了以下配置

CONFIG_ZSMALLOC=y
CONFIG_ZRAM=y

然后我从初始化脚本运行,

echo 256M > /sys/block/zram0/disksize
mkswap /dev/zram0

/etc/fstab中添加了以下条目

/dev/zram0 none swap sw,pri=32767 0 0

重新启动时,我从免费命令中看到交换已从 ``

启用
# free
             total         used         free       shared      buffers
Mem:        251432       244668         6764            0        19592
-/+ buffers:             225076        26356
Swap:       262140            0       262140

我仍在执行内存密集型操作(大焦油提取) swap 从未使用过 我总是看到它的价值 0 :(

我错过了什么吗?

任何建议/指针?

【问题讨论】:

  • 有人能解释一下这个吗?请..

标签: linux linux-kernel linux-device-driver embedded-linux swap


【解决方案1】:

只有匿名/堆页面被换出。大型 tar 操作可能无法创建足够的堆分配来触发交换。这种工作负载会简单地填满大量不去交换的页面缓存页面。

【讨论】:

  • 感谢您回复 ngupta。这就是正在发生的事情,大 tar 正在填满页面缓存,并且使用了所有高阶块,然后我们在 tar 提取时看到页面分配错误。如果我们继续使用echo 3 > /proc/sys/vm/drop_cachesecho 1 > /proc/sys/vm/compact_memory 删除缓存(在后台无限期),那么我们看不到任何错误。我认为页面将被换出到基于ZRAM 的交换,这可能会解决问题。
  • Pagecache 页面不会换出到任何交换的设备。当系统处于内存压力之下时,干净的页面缓存页面被简单地释放,而脏的页面缓存页面被写入文件系统。只有匿名(堆)页面被换出,因此这些是 zram 将接收的唯一页面类型(除非您在 zram 本身上创建文件系统)。
  • 感谢您的回复,我们唯一的问题是内核在内存压力时没有释放干净的页面缓存页面。如果我们明确询问(echo 3 > /proc/sys/vm/drop_cahces 那么内核正在释放干净的 pagecache 页面。我不知道如何让内核至少在内存压力情况下定期更频繁地执行此操作。您有什么建议吗?
【解决方案2】:

你错过了交换 有关详细信息,您可以查看 man http://man7.org/linux/man-pages/man8/swapon.8.html

【讨论】:

  • 感谢 Alex 的回复,我有一个初始化脚本,它执行 swapon -a 这就是我看到在 free 命令中启用交换的方式。
  • 你能检查一下 cat /proc/sys/vm/swappiness 吗?为了您的兴趣askubuntu.com/questions/103915/how-do-i-configure-swappiness
  • /proc/sys/vm/swappiness 设置为 60。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 2011-06-13
  • 1970-01-01
  • 2018-12-01
  • 2017-07-06
  • 1970-01-01
相关资源
最近更新 更多