SystemTap: como redefinir um agregado

1

Estou brincando com o SystemTap e me deparei com uma pergunta na qual não encontrei resposta na documentação. As linguagens SystemTap especificam um tipo de dados "agregado" que pode ser usado para acumular dados. Eu estou tentando escrever um script que agregará leituras e gravações vfs e, em seguida, imprima a soma desse agregado a cada 5 segundos. No entanto, gostaria de redefinir o agregado depois de imprimir a soma, para que eu obtenha essencialmente instantâneos de 5 segundos da atividade de IO, em vez de uma soma total de IO na sessão completa. Aqui está um exemplo do que estou tentando fazer:

probe vfs.read.return {
    vfs_writes <<< $return
}
probe timer.s(5) {
    printf("vfs_writes: %d", @sum(vfs_writes))
}

Minha pergunta é: como posso redefinir (neste exemplo) o agregado vfs_writes depois de imprimir a soma?

    
por user96367 29.09.2011 / 22:41

1 resposta

2

Mesmo que o vfs_writes seja um escalar, você deve poder usar o "delete" nele. Portanto, o script a seguir funcionará da maneira que você deseja:

global vfs_writes

probe vfs.read.return {
    vfs_writes <<< $return
}
probe timer.s(5) {
    printf("vfs_writes: %d\n", @sum(vfs_writes))
    delete vfs_writes
}
    
por 03.10.2011 / 16:53

Tags