onstat -g nbm 命令:打印 block 位图

可以使用 onstat -g nbm 命令显示非常驻段的 block 位图。

位图的每个位代表一个 4 KB 的 block。如果 block 正在使用,那么该位设置为 1 。如果 block 是空闲可用的,那么该位设置为 0 。位图以一系列的十六进制数字显示。位从 0 开始编号,从而 block 也从 0 开始编号,所以第一个 block 是 block 0,第二个是 block 1 ,以此类推。

语法:

示例输出

这个示例显示在 0x10CC00000 的虚拟内存段的位图。位图自身是在 0x10CC00290 。这个段的全部 1792 个 block 都可用。除了 block 0 和 block 1023 。

图: onstat -g nbm 命令输出

Block bitmap for virtual segment address 0x10cc00000:
            address = 0x10cc00290, size(bits) = 1792
            used = 1, largest_free = -1
            0:8000000000000000 0000000000000000 0000000000000000 0000000000000000 
            256:0000000000000000 0000000000000000 0000000000000000 0000000000000000 
            512:0000000000000000 0000000000000000 0000000000000000 0000000000000000 
            768:0000000000000000 0000000000000000 0000000000000000 0000000000000001 
            1024:0000000000000000 0000000000000000 0000000000000000 0000000000000000 
            1280:0000000000000000 0000000000000000 0000000000000000 0000000000000000 
            1536:0000000000000000 0000000000000000 0000000000000000 0000000000000000 

输出描述

address
位图的起始地址
size
位图中的位数。这也是在内存段中的 4 KB block 的数量
used
在位图中设置为 1 的位的总数。这也是在内存段中的使用中的 4 KB block 的数量
largest free
如果这个值不是 -1 ,那么它是连续可用位的最大数量。它也是在内存段的最大邻接 block 集合中 4 KB block 的数量 。

值 -1 表示还未计算最大可用空间。数据库服务器只在尝试分配从 lastalloc block 开始的 block 集合却没有足够可用空间时计算最大可用空间。一旦在段中分配了另一个 block ,这个值就再次设置为 -1 。