linux ошибка регистрации systemtap

Я использую 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)

который, я думаю, модуль ядра зонда не должен быть зарегистрирован, поэтому он не действует.

My 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

Итак, что означает ПРЕДУПРЕЖДЕНИЕ? как это исправить?


person Chinaxing    schedule 19.03.2015    source источник


Ответы (1)


WARNING: probe [...] registration error (rc -84)

Это указывает на ошибку EILSEQ kprobe ядра, которая выдается, когда ядро ​​не может декодировать/подтвердить последовательность двоичных инструкций по запрошенному адресу.

Для systemtap 1.8 (последняя версия, официально обновленная для RHEL5) с ядром RHEL5.11 (2.6.18-400) это работает; возможно, улучшения kprobes сделали свое дело.

person fche    schedule 20.03.2015
comment
kprobes.function(kmem_cache_alloc) не сообщает о проблеме. значит работает? - person Chinaxing; 20.03.2015
comment
как вы знаете, что ошибка: EISEQ? где документы на? - person Chinaxing; 20.03.2015
comment
@Chinaxing, да, к (1) - ошибка генерируется кодом ftrace, но kprobes.function не является зондом ftrace. Почему не kernel.function? Говоря о EILSEQ, это нет кода ошибки - person myaut; 20.03.2015