3

我刚开始使用R,所以请宽容...

目前我正在尝试可视化 SAR 在 Linux 服务器上收集的一些磁盘性能数据。CSV 数据的标题如下所示:

timestamp; DEV; tps; rd_sec/s; wr_sec/s; avgrq-sz; avgqu-sz; await, svctm; %util

DEV 代表我用来分组数据的设备名称:

disks <- split(x = dkstbl, f = dsktbl[, "DEV"])

使用带有操作库的 RStudio,我绘制了以下图:

manipulate(
  plot(disks[disk][[1]]$tps[time], 
       disks[disk][[1]]$await[time], 
       xlim = c(0,max(disks[disk][[1]]['tps'])), 
       ylim = c(0,max(disks[disk][[1]]['await'])),
       main = paste(disk,disks[disk][[1]]$X00.00.01[time]),
       xlab = 'IOPS',
       ylab = 'AWAIT'
       ), 
  time = slider(1, 1000),
  disk = picker(as.list(names(disks)))
)

这几乎是我想要的,但仍然不完全是。我想要的应该包含一个图上所有磁盘的数据,并且可能看起来像这样:

manipulate(
  plot(disks[*][[1]]$tps[time], 
       disks[*][[1]]$await[time], 
       xlim = c(0,max(disks[*][[1]]['tps'])), 
       ylim = c(0,max(disks[*][[1]]['await'])),
       main = paste(disks[*][[1]]$X00.00.01[time]),
       xlab = 'IOPS',
       ylab = 'AWAIT'
       ), 
  time = slider(1, 1000)
)

...其中星号 (*) 需要替换为可以一次绘制所有磁盘的东西。我该如何做到这一点?

谢谢和干杯,丹尼尔

4

1 回答 1

1

首先,我看不出您首先拆分原始 data.frame 的任何原因。

其次,如果我理解正确,您想查看所有磁盘的观察结果,对于一个特定的时间点,对吗?

所以我认为以下解决了你的问题:

disk <- do.call("rbind", disks)
manipulate(
  plot(disk$tps[disk$Time==time],
     disk$await[disk$Time==time],
     xlim = c(0,max(disk$tps)),
     ylim = c(0,max(disk$await)),
     main = "All disks",
     xlab = 'IOPS',
     ylab = 'AWAIT'
  ),
  time = picker(as.list(levels(disk$Time)))
)

一个人应该努力让事情变得简单......

于 2012-12-19T20:20:28.890 回答