【问题标题】:How can i check my created namespace?如何检查我创建的命名空间?
【发布时间】:2011-02-23 07:33:27
【问题描述】:

使用clone()unshare(),我们可以创建一个网络命名空间。就像命令一样:

ns_exec -nm -- /bin/bash

(见http://lxc.sourceforge.net/index.php/about/kernel-namespaces/network/configuration/

如果我使用ns_exec 命令创建了多个网络命名空间,我在哪里可以看到它们?或者 如何计算网络命名空间的数量?

【问题讨论】:

    标签: linux networking linux-namespaces


    【解决方案1】:

    你间接地观察它们。比如说,lo 设备是独立的,iptables 规则是独立的等等。

    netns 对象存在于它自己的 kmem_cache 中: grep net_namespace /proc/slabinfo

    但这是不可靠的计算方式,因为 SLUB 可以共享缓存。

    没有 /proc 文件或专门用作 netns 计数器的文件。

    【讨论】:

    • 为什么/proc/slabinfo中的net_namespace记录不可靠?使用 ns_exec 创建新的网络命名空间,slabinfo 显示: grep net_namespace /proc/slabinfo net_namespace 1 3 2112 3 2 : tunables 24 12 8 :slabdata 1 1 0 active_objs 为 1,num_objs 为 3。 active_objs 值是我所期望的。但我对为什么 num_objs 为 3 感到惊讶。我只创建了一个新的网络命名空间。
    • 如果 sizeof() 匹配 + 一些附加条件,SLUB 可以合并缓存。因此,slabinfo 显示的对象数量是合并缓存中所有对象的总和。 SLAB 不合并,用户可以拥有任意的slab分配器,所以你不能依赖它。
    猜你喜欢
    • 2015-04-05
    • 2020-06-04
    • 2012-03-12
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2019-12-26
    相关资源
    最近更新 更多