我有一台基于 Marwell Kirkwood ARM 的 NAS 服务器 Zyxel NSA 310。我编译了自己的 3.8 内核并启用了 ZCACHE,但我仍然看到 256 MB 的 RAM。我不确定 GNU 免费实用程序是否应该显示额外的 RAM 量。我怎样才能知道它真的有效?我需要执行一些额外的步骤才能使用它吗?我已将“zcache”添加到命令行中。
root@nas:~# free -m
total used free shared buffers cached
Mem: 247 218 29 0 7 166
-/+ buffers/cache: 43 203
Swap: 1427 0 1427
root@nas:~# zgrep CACHE /proc/config.gz
CONFIG_CLEANCACHE=y
CONFIG_ZCACHE=y
root@nas:~# dmesg | grep zcache
Kernel command line: console=ttyS0,115200 root=/dev/sda3 zcache
zcache: using lzo compressor
zcache: cleancache enabled using kernel transcendent memory and compression buddies
zcache: cleancache: ignorenonactive = 1
zcache: frontswap enabled using kernel transcendent memory and compression buddies
zcache: frontswap: excl gets = 1 active only = 1
zcache: created ephemeral local tmem pool, id=0
zcache: created persistent local tmem pool, id=1
zcache: created ephemeral local tmem pool, id=2
zcache: created ephemeral local tmem pool, id=3
zcache: created ephemeral local tmem pool, id=4
root@nas:~# cat /proc/cmdline
console=ttyS0,115200 root=/dev/sda3 zcache
我知道这是“合并”页面压缩它们,但如何查看压缩率或类似的东西。
答案1
zcache 埋藏在 RAM 内部,使用当前工具不容易看到。要查看详细信息,您需要安装 debugfs 并查看 /sys/kernel/debug/zcache,其中有一大堆统计信息,比您想要的还要多。 frontswap 报告为pers_*(用于持久性),cleancache 报告为eph_*(用于临时性),尽管这些将来可能包括其他类别。 cleancache 和 frontswap 存储和加载有单独的目录。
答案2
最新的 git 中的布局似乎发生了一些变化:
# ls cleancache ; ls frontswap ; ls zbud
failed_gets invalidates puts succ_gets
failed_stores invalidates loads succ_stores
eph_buddied_count eph_evicted_pageframes eph_zbytes pers_cumul_zbytes pers_pageframes pers_zombie_count
eph_cumul_zbytes eph_pageframes eph_zpages pers_cumul_zpages pers_unbuddied_count pers_zpages
eph_cumul_zpages eph_unbuddied_count pers_buddied_count pers_evicted_pageframes pers_zbytes
# uname -v
#201308150422 SMP Thu Aug 15 08:31:51 UTC 2013