标签: io

我可以在 Synology 上运行 iostat 吗?

我有一台 Synology RS812RP+,我用它来进行一些部门测试。我在里面塞了一堆SSD磁盘,我很好奇监控磁盘IO。

iostat 未预装在 Synology 上,也没有构建它的工具。有人对在这种环境中运行 iostat 有什么建议吗?

linux storage-area-network io synology

8
推荐指数
2
解决办法
9089
查看次数

数据移动器的 Linux I/O 瓶颈

我有一台运行 Ubuntu 服务器 10.04 的 24 核机器,内存为 94.6GiB。该机器正在经历高 %iowait,这与我们拥有(4 个内核)运行相同类型和数量的进程的另一台服务器不同。两台机器都连接到 VNX Raid 文件服务器,24 核机器通过 4 个 FC 卡连接,另一台通过 2 个千兆以太网卡连接。4 核机器目前优于 24 核机器,具有更高的 CPU 使用率和更低的 %iowait。

在 9 天的正常运行时间中,%iowait 平均为 16%,通常高于 30%。大多数时候 CPU 使用率非常低,大约为 5%(由于 iowait 高)。有充足的空闲内存。

我不明白的一件事是为什么所有数据似乎都通过设备 sdc 而不是直接通过数据移动器:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.11    0.39    0.75   16.01    0.00   76.74

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.00         0.00         0.00       1232          0
sdb               0.00         0.00         0.00       2960          0
sdc               1.53        43.71        44.54   36726612   37425026
dm-0              0.43        27.69 …
Run Code Online (Sandbox Code Playgroud)

linux io bottleneck ubuntu-10.04

8
推荐指数
3
解决办法
1571
查看次数

Flush-0:n 进程导致大量瓶颈

我有一个 LAMP 集群,它通过 NFS 共享文件,当神秘的刷新进程开始出现时,其中一个偶尔会被攻击一段时间。

谁能帮我?解决这个问题的唯一方法是重新启动 - 杀死进程只会产生新的进程。

top - 19:43:43 up 104 days,  4:52,  1 user,  load average: 27.15, 56.72, 33.31
Tasks: 301 total,   9 running, 292 sleeping,   0 stopped,   0 zombie
Cpu(s): 15.6%us, 77.0%sy,  0.0%ni,  4.2%id,  2.0%wa,  0.0%hi,  1.2%si,  0.0%st
Mem:   8049708k total,  7060492k used,   989216k free,   157156k buffers
Swap:  4194296k total,   483228k used,  3711068k free,   928768k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                           
840 root      20   0     0    0    0 R …
Run Code Online (Sandbox Code Playgroud)

performance nfs centos io bottleneck

8
推荐指数
1
解决办法
2万
查看次数

linux:如何模拟硬盘延迟?我想在不使用 CPU 电源的情况下增加 iowait 值

是否可以为 I/O 操作设置任意延迟?

我想了解 iowait 和磁盘 %util 如何影响性能。有很多工具可以对磁盘施加压力(bonnie++ 等),但我正在寻找一种方法来引入延迟,就像 tc(流量控制)工具对网络所做的那样。可以使用 hdparm 工具禁用一些优化,例如将 AAM 设置为安静或禁用 DMA 并切换到 PIO 模式 - 这只是减少 I/O 的间接方法。

linux performance io

8
推荐指数
2
解决办法
6690
查看次数

如何防止子树删除(`rm -rf`)使其他进程无法进行磁盘 I/O?

我们有一个非常大(多 GB)的 Nginx 缓存目录用于繁忙的站点,我们偶尔需要一次清除所有目录。我过去解决了这个问题,方法是将缓存文件夹移动到新路径,在旧路径上创建一个新的缓存文件夹,然后rm -rfing 旧的缓存文件夹。

然而,最近,当我在忙碌的早晨需要清除缓存时,来自的 I/Orm -rf使我的服务器进程无法访问磁盘,因为 Nginx 及其面向的服务器都是读取密集型的。当 CPU 处于空闲状态并rm -rf占用iotop.

ionice -c 3在调用 时尝试过rm,但它似乎对观察到的行为没有明显影响。

有没有办法驯服rm -rf更多地共享磁盘?我是否需要使用不同的技术来获取线索ionice

更新:

有问题的文件系统是 AWS EC2 实例存储(主磁盘是 EBS)。该/etc/fstab条目如下所示:

/dev/xvdb       /mnt    auto    defaults,nobootwait,comment=cloudconfig 0       2
Run Code Online (Sandbox Code Playgroud)

linux hard-drive io ionice rm

8
推荐指数
2
解决办法
1909
查看次数

rrdgraph 生成在高 IO 负载下失败

我们有一个 4 核 CPU 生产系统,它执行大量 cronjobs,具有恒定的 proc 队列和~1.5 的通常负载。

在夜间,我们用 postgres 做一些 IO 密集型的事情。我们生成一个图表,显示负载/内存使用情况 (rrd-updates.sh) 这有时会在高 IO 负载情况下“失败”。几乎每晚都会发生这种情况,但并非在所有高 IO 情况下都会发生。

我的“正常”解决方案是对 postgres 内容进行优化和离子化,并增加图形生成的优先级。然而这仍然失败。图生成是使用 flock 进行半线程证明的。我确实记录了执行时间,并且在高 IO 负载期间生成图形最多需要 5 分钟,这似乎导致图形丢失长达 4 分钟。
时间范围与 postgres 活动完全匹配(这有时也发生在白天,虽然不是那么频繁)离子化到实时 prio(C1 N6 graph_cron vs C2 N3 postgres),在 postgres 之上(-5 graph_cron vs 10 postgres)很好) 没有解决问题。

假设没有收集数据,额外的问题是 ionice/nice 不知何故仍然无法正常工作。
即使有 90% 的 IOwait 和 100 的负载,我仍然能够免费使用数据生成命令,而没有超过 5 秒的延迟(至少在测试中)。

遗憾的是,我无法在测试中完全重现这一点(只有一个虚拟化的开发系统)

版本:

内核2.6.32-5-686-bigmem
Debian Squeeze rrdtool1.4.3 硬件:SAS 15K RPM HDD,硬件 RAID1
挂载选项中的LVM :ext3 with rw,errors=remount-ro
调度程序:CFQ …

linux debian io ionice rrdtool

8
推荐指数
1
解决办法
383
查看次数

Linux 没有 I/O 调度器意味着什么

我有一些运行基于 Ubuntu 云的映像 14.04-1 LTS 版本的虚拟机。我想在 VM 上查看不同 IO 调度程序的 IO 性能,因此我/sys/block/<drive>/queue/scheduler在来宾操作系统上更改了 IO 调度程序。通常,应该有cfqdeadline、 或noop可供选择。但我看到的是none. 是不是说Canonical在云端镜像中去掉了I/O调度器,或者none这里的调度器是重命名的noop调度器?如果系统中没有 I/O 调度程序会发生什么?所有的io请求都是按FIFO顺序直接发送给主机的?

感谢您的启发!

virtualization cloud io scheduler ubuntu-14.04

8
推荐指数
2
解决办法
1万
查看次数

块大小和IO之间的关系是什么?

我最近一直在阅读有关磁盘的信息,这让我产生了 3 个不同的疑问。而且我无法将它们链接在一起。我混淆的三个不同术语是block size,IOPerformance

当我遇到该语句时,我正在slashroot 上阅读有关超级块的信息

如果您的文件系统具有较大的块大小,则将执行较少的 IOPS。

由此我明白,如果我想读取 1024 KB 的数据,块大小为 4KB/4096B 的磁盘(比如 A)将比块大小为 64KB 的磁盘(比如 B)需要更多的 IO。

现在我的问题是磁盘 A 需要多少 IO?

据我了解,读取此数据所需的 IO 请求数量也取决于每个 IO 请求的大小。

  • So who is deciding what is the size of the IO request? Is it equal to the block size? 有人说您的应用程序决定了 IO 请求的大小,这似乎很公平,但是操作系统如何将单个请求划分为多个 IO。 There must be a limit after which the request splits in more then one IO. How to find that limit ? …

performance filesystems hard-drive io

8
推荐指数
1
解决办法
1万
查看次数

使用临时文件与管道的优缺点

假设我有一个名为 jobs.csv 的文件,我希望由 Foo 完成前 50k 项工作

我可以这样做:

# cat jobs.csv | sort -u | head -n 50000 > /tmp/jobs.csv
# cat /tmp/jobs.csv | while read line; do Foo --job=$line; done
Run Code Online (Sandbox Code Playgroud)

或者

# cat jobs.csv | sort -u | head -n 50000 | while read line; do Foo --job=$line; done 
Run Code Online (Sandbox Code Playgroud)

在系统的 IO/内存效率方面,谁能说出哪个更好?

或者更好的是,可以为此提出更好的解决方案吗?

unix io pipe shell-scripting

7
推荐指数
1
解决办法
2892
查看次数

Linux - KVM - 磁盘 io 非常慢

我的新服务器的 I/O 性能非常低。我用谷歌搜索并尝试了我能想象到的一切。首先,这是硬件组件:

  • AMD Opteron(tm) 处理器 6344
  • 4x 希捷 ST3000VX000

目前它运行在软件 RAID5 上。

主机的吞吐量:

# dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 4.44095 s, 242 MB/s
Run Code Online (Sandbox Code Playgroud)

访客系统上的当前吞吐量:

# dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 94.8643 s, 11.3 MB/s
Run Code Online (Sandbox Code Playgroud)

我使用的是自编译的 QEMU + LIBVIRT,加上自编译的 Linux 内核(3.10.32-lns-opteron-kvmhost)。我可以提供内核配置之外的部分。

  • Linux 内核(主机):3.10.32-lns-opteron-kvmhost
  • Linux 内核(来宾):3.10.2-lns-opteron-kvmguest
  • QEMU版本:2.0.0
  • Libvirt 版本:1.2.4

我在另一个系统(相同的处理器,但其他硬盘)上运行两个内核,该系统正在以完整的 I/O 性能运行。

我没有安装其他系统,所以我无法可靠地重现该问题。

来宾的硬盘配置:

<disk type='block' device='disk'> …
Run Code Online (Sandbox Code Playgroud)

linux hard-drive io kvm-virtualization

7
推荐指数
1
解决办法
4966
查看次数