2

systematap を使用して、スラブ メモリ割り当てアクティビティを調べます。

#! /usr/bin/env stap

global slabs

probe vm.kmem_cache_alloc {
    slabs [execname(), bytes_req]<<<1
}

probe timer.ms(10000)
{
    dummy = "";
    foreach ([name, bytes] in slabs) {
        if (dummy != name)
            printf("\nProcess:%s\n", name);
            printf("Slab_size:%d\tCount:%d\n", bytes, @count(slabs[name, bytes]));
        dummy = name;
    }
    delete slabs
    printf("\n-------------------------------------------------------\n\n")
}

ただし、stap は次のエラーを生成します。

[root@svr_test5 ~]# stap -v -u vm.tracepoints.stp 
Pass 1: parsed user script and 85 library script(s) using 146832virt/23712res/3012shr/21396data kb, in 140usr/10sys/152real ms.
Pass 2: analyzed script: 3 probe(s), 111 function(s), 3 embed(s), 13 global(s) using 228472virt/45000res/4760shr/41696data kb, in 300usr/150sys/488real ms.
Pass 3: translated to C into "/tmp/stap7FrdOq/stap_1d0a8db65ecd4c9f56be318001d197c0_39617_src.c" using 226240virt/47000res/6800shr/41696data kb, in 10usr/0sys/36real ms.
Pass 4: compiled C into "stap_1d0a8db65ecd4c9f56be318001d197c0_39617.ko" in 1360usr/160sys/1546real ms.
Pass 5: starting run.
WARNING: probe kernel.function("kmem_cache_alloc@mm/slab.c:3269").call (address 0xffffffff8000ac24) registration error (rc -84)
WARNING: probe kernel.function("kmem_cache_alloc@mm/slab.c:3269").return (address 0xffffffff8000ac24) registration error (rc -84)

プローブカーネルモジュールは登録されるべきではないと思うので、効果はありません。

私のOS:

CentOS release 5.8 (Final)

カーネル:

Linux svr_test5 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

それで、警告の意味は何ですか?それを修正する方法?

4

1 に答える 1