我一直在研究 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
}