操作系统:centos7
测试文件:a.txt 1.2G
监控命令:iostat -xdm 1
The first scene:
cp a.txt b.txt #b.txt is not exist
Run Code Online (Sandbox Code Playgroud)
The second scene:
cp a.txt b.txt #b.txt is exist
Run Code Online (Sandbox Code Playgroud)
为什么第一个场景不消耗IO,而第二个场景消耗IO?
在输出中iostat
有一个steal
字段,根据手册页该字段用于:
显示当管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟 CPU 花费在非自愿等待上的时间百分比。
但是,这是什么意思?这是否意味着内核本身太忙而无法管理cpu,导致cpu空闲?
是否可以使用 libvirt 或 virsh 在来宾 VM 内为 eg:iostat 执行命令。我想找出来宾 vm 的 IOPS 但使用 libvirt java api 我无法获得 vm 的 IOPS,因此另一种方法将是在来宾虚拟机中执行类似 iostat 的命令并记录读数。
我使用的是 Redhat Linux 6.5,想查看所用磁盘的磁盘延迟。
使用 iostat 我得到列 await 和 svctm (包括 %util )。但根据 iostat 的手册页,列 svctm 已过时,不应再使用。
那么我可以用什么来查看我的磁盘的磁盘延迟。
我的 IOstat 根本没有改变。它会显示正在读取和写入的块的变化,但在读取和写入的块/kB/MB 方面根本没有变化。当服务器空闲时...它显示 363kB_read/s、537kB_wrtn/s。
如果我把它放在重负载下......它会说同样的事情。是不是出问题了?我如何解决它?
使用 Centos 6,用作主 mysql 服务器。
从iostat
手册页:
rrqm/s
The number of read requests merged per second that were queued to the device.
wrqm/s
The number of write requests merged per second that were queued to the device.
r/s
The number (after merges) of read requests completed per second for the device.
w/s
The number (after merges) of write requests completed per second for the device.
Run Code Online (Sandbox Code Playgroud)
merge
由于文档没有提供任何进一步的细节,任何人都可以详细说明这个概念吗?
我/dev/sda
使用 1MiB 块大小读取。Linux 似乎将 IO 请求限制为512KB平均大小为 512KiB。这里发生了什么?这种行为是否有配置选项?
$ sudo dd iflag=direct if=/dev/sda bs=1M of=/dev/null status=progress
1545601024 bytes (1.5 GB, 1.4 GiB) copied, 10 s, 155 MB/s
1521+0 records in
1520+0 records out
...
Run Code Online (Sandbox Code Playgroud)
当我的dd
命令正在运行时,rareq-sz
是 512。
rareq-sz 向设备发出的读取请求的平均大小(以千字节为单位)。
——
man iostat
$ iostat -d -x 3
...
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 309.00 0.00 158149.33 0.00 0.00 0.00 0.00 0.00 5.24 …
Run Code Online (Sandbox Code Playgroud)