我有一个 VMWare ESxi 盒、22GB 内存、双四核至强、2 个 Sas 驱动器 + 写入缓存 raid 控制器等。
无论如何,有大约 30 个小型 XP VM 在其上运行,并且开始出现一些非常缓慢的启动时间和其他性能问题。我认为它的 I/O 但看图表不太确定要寻找什么。任何关于寻找什么的想法将不胜感激。这是我目前得到的数据:
(我觉得我的 IO 很高,但不知道要靠什么来对抗)

我的目标是使用表上的符号链接,将 mysql 数据库在多个驱动器中均等地分开。
现在我似乎找不到在 mysql 上检查每个表的 IO、读取、写入的方法。
所以现在我在想也许在 linux 中有某种方法可以监控每个文件的 ios、读取、写入?
Iostat 显示每个设备的 IOPS;iotop 显示每个进程的 IOPS;有什么可以显示每个文件的 IOPS 吗?
我的运行 centos 5.7 的网络服务器显示出相当多的磁盘写入活动,我无法真正解释。
我在 nginx、php-fpm 和 xcache 的帮助下在这台服务器上运行了一些网站。在文件系统上,我添加了noatime.
现在运行良好,但我看到每秒写入的次数很多,我无法解释。没有添加任何文件,我已禁用 nginx 访问日志。php-fpm 错误日志和 nginx 错误日志每分钟只添加几行。我已经检查了所有其他登录/var/log并且没有记录正在发生的写入次数。
平均每分钟写入大约 2 兆字节的数据,每秒大约 200 次 IO。
我怎样才能找出导致这些写入的原因?
背景:
我在工作中使用计算集群(4 个从节点和 1 个头节点),它使用 SGE 作业调度程序。最近我们一直在运行一些执行大量 IO 的作业,它一直在减慢 shell/vim 的使用(小 IO,但我们需要它 24/7 平稳运行)。我找到了 ionice,它似乎是一台计算机的完美解决方案,但我不确定它对集群是否有帮助......
题:
如果我通过带有 ionice 设置(-c2 -n0)的头节点运行一个进程(比如 vim),它是否仍然比其他计算机上的进程(从属设备上的高 IO -c2 -n4)上的进程优先于共享 HD ?
谢谢你的时间!
我有一个在 12.04 Ubuntu 主机内运行的来宾 VM。VM 是使用 vmbuilder python 脚本创建的。
在主机上,phoronix-test-suite "aio-stress" 提供了 >1600MB/s 随机写入吞吐量的性能速度。
VM(也运行 12.04)提供大约 3MB/s 的随机写入吞吐量。远,差远了。 http://openbenchmarking.org/result/1301161-BY-20130116176
我已将主机上的默认文件映像类型从 qcow2 更改为 raw 以提高磁盘吞吐量,并确保编辑 vmbuilder 模板以使用“virtio”作为目标开发者。
这导致速度提高到 7.5MB/s - 仍远低于我的预期。
去年运行 10.04(具有 10.04 个虚拟机)的同一台机器实现了 700MB/s 的吞吐量:http : //openbenchmarking.org/result/1205239-BY-20120523168
谁能指出我可能有什么问题?
我需要在 NFS 共享上递归删除数百万个目录,为了避免任何性能问题,我运行了以下命令:
ionice -c 3 -t find /dir -type f -exec rm {};
这将删除所有文件和剩余的空目录,我可以使用 rm -rf 删除。
但我无法说 ionice 对上述命令是否有任何影响。
来自 man,ionice 3 级:
仅当没有其他程序在定义的宽限期内请求磁盘 io 时,以空闲 io 优先级运行的程序才会获得磁盘时间。空闲 io 进程对正常系统活动的影响应该为零。
从源代码中,我看到 ionice set ioprio_set。
那么,ioprio_set 是什么?
ioprio_get() 和 ioprio_set() 系统调用分别获取和设置一个或多个线程的 I/O 调度类和优先级。
这是否意味着进程线程带有额外的属性供 I/O 调度程序使用它们来调度进程的 I/O?
这向我提出了以下问题:
如果我完全错了,请纠正我。 …
我了解队列深度,即存储控制器可以处理的未完成 I/O 请求的数量(https://www.tomshardware.com/reviews/ssd-gaming-performance,2991-3.html)即,这是对处理 I/O 请求并将命令发送到磁盘 (r/w) 的存储控制器的限制,如果有超过它可以处理的请求(将由客户端重新提交),它(不严格?)会丢弃请求想必)。
并且具有高过期 I/O 请求的原因可能是多个客户端连接请求 I/O 或多个进程甚至来自请求 I/O 的单个主机(我认为,但似乎操作系统使用 I/O 调度程序合并 I/O O 请求 - 在执行定期或按需同步时源自缓冲区,并且仅发送固定数量的过期请求,以便它不会使存储设备过载?)
现在,来到 fio 手册页中 iodepth 的定义:
要针对文件保持运行的 I/O 单元数。请注意,将 iodepth 增加到 1 以上不会影响同步 ioengines(使用 verify_async 时的小度数除外)。
这符合我对队列深度的理解。如果 IO 是同步的(阻塞 IO),我们只能有一个队列。
即使是异步引擎也可能施加操作系统限制,导致无法实现所需的深度。在 Linux 上使用 libaio 并且未设置“direct=1”时可能会发生这种情况,因为缓冲 I/O 在该操作系统上不是异步的。
对这整个声明感到困惑。
密切关注 fio 输出中的 I/O 深度分布,以验证实现的深度是否符合预期。默认值:1。
我为每种 iodepth 和设备类型运行了多个测试,有 22 个并行作业,因为 CPU 数量为 24,并且使用 rwtype:顺序读取和顺序写入。Iodepths 是 1,16,256,1024,32768(我知道 32 或 64 应该是最大限制,我只是想尝试一下)。
对于所有深度和所有磁盘(RAID 6 SSD、NVME 和 NFS),结果几乎相同:除了在 32768 深度的 NVME 磁盘上顺序读取。
IO …Run Code Online (Sandbox Code Playgroud) 我有很多空闲内存,但我的 IO 总是 100%util 或非常接近。有什么方法可以通过使用更多 RAM 来减少 IO?我的 iotop 显示了具有最高 io 速率的 nginx 工作进程。这是一个文件服务器,为 1mb 到 2gb 的文件提供服务。这是我的 nginx.conf
#user nobody;
worker_processes 32;
worker_rlimit_nofile 10240;
worker_rlimit_sigpending 32768;
error_log logs/error.log crit;
#pid logs/nginx.pid;
events {
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
access_log off;
limit_conn_log_level info;
log_format xfs '$arg_id|$arg_usr|$remote_addr|$body_bytes_sent|$status';
sendfile off;
tcp_nopush off;
tcp_nodelay on;
directio 4m;
output_buffers 3 512k;
reset_timedout_connection on;
open_file_cache max=5000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
client_body_buffer_size 32k;
server_tokens off;
autoindex off;
keepalive_timeout 0; …Run Code Online (Sandbox Code Playgroud) 我的VPS配置如下:
我收到了一封来自服务器提供商的电子邮件,显示我的 VPS 硬盘读取使用量在一天内是 137GB。我已经安装了 Kloxo 作为防火墙的控制面板和 APF。一个网站在我的基于 WordPress 的服务器上。
任何人都可以解释这种极端用途吗?或者指导我解决我的问题?
提前致谢 :)
我有一个带有 6 个 SSD 的服务器和一个支持 RAID 10 和 RAID 50 的 RAID 控制器卡,计划将其用作我们的构建服务器。它将拉入 NPM 包和许多小代码文件,编译和上传人工制品。
我们目前有一台服务器正在执行此操作,并且它正在运行 IO 瓶颈(它使用当前在 RAID1 配置中的非 SSD 驱动器)。
对于性能而言,RAID 50 和 RAID 10 中哪种 RAID 配置最适合?
从用例来看,IO 将主要是小文件的写入(随机写入)。磁盘空间和正常运行时间不是主要问题,因为我们有故障转移并且重建服务器很简单。所以我不关心在关闭阵列等之前有多少驱动器故障,唯一的考虑是性能。
RAID0 已被官僚机构排除在外。
我想真正的问题是奇偶校验的计算是否比总是写入同一个镜像磁盘花费的时间更长?
我曾在很长时间没有重新启动的服务器上看到磁盘 IO 的错误使用百分比。
无论如何,该服务器具有显着的 IO。今晚它会重新启动,我相信明天我们会有很好的 %use。正常运行时间为 497 天。
root@xxxxxx:~# iostat -x 1
Linux 2.6.24-27-server (xxxxxx) 10/13/2011
avg-cpu: %user %nice %system %iowait %steal %idle
0.55 0.00 0.30 7.54 0.00 91.60
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm **%util**
sda 17649.65 765.65 5478.46 5262.33 36185.00 48224.35 7.86 19.06 1.78 4.58 **4920.45**
Run Code Online (Sandbox Code Playgroud)
唯一的问题是 nagios 认为这很重要。
任何解释都会受到欢迎。
先感谢您。
稍后补充:
如您所见,统计数据为 0,并且 % 下降得很慢。
Linux 2.6.24-27-server (xxxxxxx) 10/13/2011
avg-cpu: %user %nice %system %iowait %steal %idle
0.55 0.00 0.30 7.54 0.00 91.61 …Run Code Online (Sandbox Code Playgroud) 如果我想防止这种高负载,我该怎么办。
当负载高于 8 时,我的网站变慢。
请参阅 iotop 结果。
top - 20:23:10 up 127 days, 3:22, 1 user, load average: 9.92, 9.87, 9.81 任务:总共 1031 个,运行 3 个,睡眠 1027 个,停止 0 个,僵尸 1 个 Cpu(s):14.7%us、0.7%sy、0.1%ni、79.6%id、4.7%wa、0.0%hi、0.2%si、0.0%st 内存:总共 16413676k,已使用 16312548k,101128k 空闲,110836k 缓冲区 交换:总计 10190840k,已使用 3182468k,免费 7008372k,缓存 2033604k PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 2776 mysql 15 0 14.6g 10g 5220 S 405.7 67.4 21710:40 mysqld 6201 阿帕奇 15 0 369m 16m 5356 S 3.7 0.1 0:00.40 httpd 8447 …
我试图通过类似于 BufferedOutputStream 的缓冲 FileChannel 尽可能快地写入文件。我想知道每次写入调用应该使用的最佳数据块是什么以最大化带宽?我在 Ubuntu Linux 上。
io ×13
linux ×5
hard-drive ×3
performance ×3
centos ×2
ionice ×2
nfs ×2
bandwidth ×1
cluster ×1
gridengine ×1
high-load ×1
iostat ×1
nginx ×1
nvme ×1
raid ×1
raid10 ×1
scheduler ×1
scheduling ×1
ubuntu-12.04 ×1
vmbuilder ×1
vmware-esxi ×1
wordpress ×1
write ×1