SystemTap:如何重置聚合

SystemTap:如何重置聚合

我一直在研究 SystemTap,遇到了一个问题,但在文档中找不到答案。SystemTap 语言指定了一种可用于累积数据的“聚合”数据类型。我正在尝试编写一个脚本,该脚本将聚合 vfs 读取和写入,然后每 5 秒打印出该聚合的总和。但是,我想在打印出总和后重置聚合,这样我基本上就可以获得 5 秒的 IO 活动快照,而不是完整会话的 IO 总和。下面是我正在尝试执行的操作的示例:

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

我的问题是:打印出总和后,如何重置(在此示例中)vfs_writes 聚合?

答案1

即使 vfs_writes 是标量,您也应该能够对其使用“删除”。因此,以下脚本将按照您希望的方式运行:

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
}

相关内容