Ubuntu 内核重新编译无法启用标志:CONFIG_ZSMALLOC_STAT

Ubuntu 内核重新编译无法启用标志:CONFIG_ZSMALLOC_STAT

我想查看 Ubuntu 16.04 (在 amd64 kvm-qemu 中) 中的 ZSMALLOC 内部信息。因此我尝试通过在 .config 文件中添加 CONFIG_ZSMALLOC_STAT=y 来重新编译 ubuntu 内核。

以下是我尝试过的:

$ mkdir linux.ubuntu-16.04
$ cd linux.ubuntu-16.04
apt-get source linux-image-$(uname -r)
$ make -j8
$ make install

但是,我找不到 ZSMALLOC 调试信息。我无法在目录内找到名为 zsmalloc 的目录。/sys/kernel/debug

我该怎么做才能看到 zsmalloc 调试信息?


Result of command : 

#grep -irn CONFIG_ZSMALLOC_STAT *

    [12:57:13] mac@mac-qemu:~/linux.ubuntu-16.04/linux-hwe-4.8.0 $ grep -irn CONFIG_ZSMALLOC_STAT *
    arch/s390/configs/default_defconfig:73:CONFIG_ZSMALLOC_STAT=y
    arch/s390/configs/gcov_defconfig:69:CONFIG_ZSMALLOC_STAT=y
    arch/s390/configs/performance_defconfig:69:CONFIG_ZSMALLOC_STAT=y
    arch/s390/defconfig:60:CONFIG_ZSMALLOC_STAT=y
    debian/build/build-generic/.config:578:CONFIG_ZSMALLOC_STAT=y
    debian/build/build-generic/.config.old:9395:CONFIG_ZSMALLOC_STAT=y
    debian/tmp/boot/config-4.8.17:578:CONFIG_ZSMALLOC_STAT=y
    debian/linux-image-4.8.0-54-hello-generic/boot/config-4.8.0-54-hello-generic:578:CONFIG_ZSMALLOC_STAT=y
    debian/hdrtmp/usr/src/linux-headers-4.8.17/.config:578:CONFIG_ZSMALLOC_STAT=y
    debian/linux-headers-4.8.0-54-hello-generic/usr/src/linux-headers-4.8.0-54-hello-generic/.config:578:CONFIG_ZSMALLOC_STAT=y
    debian/linux-headers-4.8.0-54-hello-generic/usr/src/linux-headers-4.8.0-54-hello-generic/.config.old:578:CONFIG_ZSMALLOC_STAT=y
    debian.hwe/config/annotations:9494:CONFIG_ZSMALLOC_STAT                            policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'y', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}>
    debian.hwe/config/config.common.ubuntu:9396:CONFIG_ZSMALLOC_STAT=y
    debian.master/config/annotations:9494:CONFIG_ZSMALLOC_STAT                            policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'y', 'powerpc': 'n', 'ppc64el': 'n', 's390x': 'n'}>
    debian.master/config/config.common.ubuntu:9396:CONFIG_ZSMALLOC_STAT=y
    debian.master/info/OVERRIDES:4:CONFIG_ZSMALLOC_STAT=y
    Documentation/vm/zsmalloc.txt:36:With CONFIG_ZSMALLOC_STAT, we could see zsmalloc internal information via
include/generated/autoconf.h:1142:#define CONFIG_ZSMALLOC_STAT 1
include/config/auto.conf:1140:CONFIG_ZSMALLOC_STAT=y
mm/zsmalloc.c:163:#ifdef CONFIG_ZSMALLOC_STAT
mm/zsmalloc.c:262:#ifdef CONFIG_ZSMALLOC_STAT
mm/zsmalloc.c:579:#ifdef CONFIG_ZSMALLOC_STAT
mm/zsmalloc.c:701:#else /* CONFIG_ZSMALLOC_STAT */

答案1

您在错误的文件中编辑了配置,并以错误的方式构建了内核。Ubuntu(实际上是 Debian)更改配置和构建的方式如下:

配置应该设置在debian.master/config/config.common.ubuntu

它在那里,但被注释掉了

# CONFIG_ZSMALLOC_STAT is not set

将其更改为

CONFIG_ZSMALLOC_STAT=y

然后运行

fakeroot debian/rules clean
fakeroot debian/rules binary-generic binary-headers

编译。

除了最后一个命令之外,您还可以使用

fakeroot debian/rules DEB_BUILD_OPTIONS=parallel=8  binary-headers binary-generic

如果你想拥有 8 个并行进程(-j8 的类似物)。

另一种(可能更传统的方法)是运行

fakeroot debian/rules clean
fakeroot debian/rules editconfigs

然后选择要编辑的配置,然后转到

“处理器类型和功能 -> 压缩页面的内存分配器”并在那里启用它。

相关内容