Articles of io

运行Ubuntu 10.04的Xen PV guest虚拟机上与IO相关的locking

我有一个Xen PV guest,运行Ubuntu 10.04。 我不运行底层的主机。 内核是Ubuntu提供的股票: Linux nephos 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux 该机器服务器作为一个LAMPnetworking/数据库服务器与我们内部开发的一堆Perl Web应用程序。 由于我们在周一早上上线并让用户在机器上松动,一天可靠地进入一个状态,我们无法从命令行重新启动它,CGI脚本变得反应迟钝,ping时间甚至激增像ls这样的命令在某些目录中失败(可能是正在等待写入的目录)。 top在状态D显示了一些进程,主要是名为fleet.cgi或doc.pl ,这是我们的应用程序。 试图kill或kill -9这些进程默默地失败。 sudo reboot返回,声称机器即将closures,但不会将广播消息发送给即将发生的其他shell用户,也不会重新启动机器。 当机器开始locking时,系统日志中会显示如下所示的行: Dec 14 12:05:45 nephos kernel: [71040.150212] INFO: task mysqld:2708 blocked for more than 120 seconds. Dec 14 12:05:45 nephos kernel: [71040.150234] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables […]

iotop Linux内核2.6.18

所以必须注意到,iotop不适用于2.6.18,因为它小于2.6.20并且需要Python 2.6+。 我已经做了一些研究,并遇到了这篇文章: http : //lserinol.blogspot.com/2009/09/io-usage-per-process-on-linux.html 据此,如果这些进程在/ proc / pid#/ io(其中pid#是进程#)中具有io统计信息,则无论内核版本如何,都是可行的。 所以,实际上,我可以将Python升级到2.6并testingiotop。 不过,我的Linux,CentOS release 5.5(Final)的味道,目前只支持Python 2.4.3-44.el5。 如果我要从百胜卸载,它看起来不那么漂亮。 它最终希望卸载235包,其中大部分是非常重要的! 我在一个地方,在线阅读(我忘记了昨天的URL),你可以安装Python 2.6+并行到这个,并有安装iotop rpm的使用。 那么,我没有select那条路线。 我想,这是什么,让我写下iotop(不复制它,但反向工程,而不真正看它的代码/它在使用中)在bash中。 我以为这只会抓住/ proc / pid#/ io文件并parsing统计信息。 所以我写了一个脚本,通过从所有/ proc / pid#/ io文件中收集所有这些统计信息,按照每个度量标准对它们进行sorting,然后获取前10个最高值,从而获得前10个rchar,wchar,read_bytes和write_bytes。 结论,数据似乎完全没用。 有谁知道高级Linux的任何资源,我可以弄清楚如何获取这些/ proc / pid#/目录,并找出他们在磁盘上使用io做什么? 我的主要目标是弄清究竟是什么导致我的磁盘上的高负载。 我只是知道它在/分区(在这种情况下的/ dev / sda2),我真的不知道如何在没有iotop的帮助下缩小它。 如果我运行iostat来抓取1分钟的指标,那么每秒钟的第一个结果就会显示出一个很高的“kB_read / s”,这让我觉得它大部分是读取的。 但是,如果我观看更新,它每秒都会给我,实际上只是显示kB_wrtn / s的值。 这让我觉得iostat给我的初始价值是误导性的。

尝试删除IIS使用的文件

我得到了一个在C#中编码的服务,在更新之前删除了一些托pipe在iis上的网站文件。 但有时当我删除文件,他们呆在那里。 如果我尝试手动删除它们,通过资源pipe理器,该文件是不可删除的,因为他们处于“删除挂起”状态。 有我的服务试图删除文件的方式 try { // Enlève tout les attributs sur le fichiers afin de s'assurer que le fichier n'est pas en lecture seul File.SetAttributes(file, FileAttributes.Normal); // Supprime le fichier File.Delete(file); } 有没有办法避免这种状态? 我能做些什么来强制删除的C#代码? 我可以释放所有进程的文件的C#代码? 环境是 IIS 7.5 Windows 2008-r2 .net 4.0 谢谢

磁盘使用率高= io绑定在apache + postgresql web服务器上?

我有一个服务器运行Apache,PostgreSQL和大量的网站,我从我的托pipe服务提供商的graphics表明,基本上不断的磁盘抖动。 10k / s磁盘使用率。 这似乎是一个坏主意,但我不确定为什么 – 加载是好的,服务器响应时间是合理的。 起初我以为是因为每个站点运行了2个应用程序服务器线程,但是减less了正在运行的站点数量,磁盘使用率仍然很高。 有一些交换使用,但有很多可用的内存。 从顶部: load average: 0.70, 0.28, 0.21 Cpu(s): 3.6%us, 1.4%sy, 0.0%ni, 93.9%id, 0.7%wa, 0.0%hi, 0.0%si, 0.4%st Mem: 1731880k total, 1530124k used, 201756k free, 68360k buffers Swap: 2359288k total, 1676k used, 2357612k free, 884892k cached 所以我看着vmstat,它说交换不是问题: root@foobar# vmstat 1 procs ———–memory———- —swap– —–io—- -system– —-cpu—- rb swpd free […]

为什么我的同步I / O与直接相比如此糟糕?

我在软件RAID 1设置中有两个3TB磁盘,主机操作系统是64位Debian wheezy。 发行: dd if=/dev/zero of=test bs=64k count=3k oflag=direct && rm test 产量: 201326592 bytes (201 MB) copied, 1.423 s, 141 MB/s 如果我改变dd命令来使用同步的IO调用(通过将oflag开关从“direct”改为“sync”),写下peformance掉落地板: 201326592 bytes (201 MB) copied, 76.0286 s, 2.6 MB/s 显然,同步IO导致性能下降,但是我期望写入吞吐量下降到直接等价的一半或三分之一(最坏情况)。 2.6MB / s似乎极端,让我觉得有一个问题的地方。

低优先级的linux文件系统

有人知道某种(虚拟)文件系统将作为低优先级运行,即所有其他常规磁盘活动将优先? 这是因为我开发的应用程序有大量的后台磁盘IO执行。 IO不是时间关键的,但是它现在以最大可能的速度写入,导致高的iowait时间并且减慢整个系统。 我想过产生一个新的进程,并使用ionice来设置优先级,但这似乎有点混乱,我宁愿我的应用程序不知道硬件的限制。 有没有人遇到过这样做的FS还是有另一个build议来解决这个问题? 任何input非常赞赏

Iowait可能导致显着的RAM消耗增加

我有一个node.js进程在linux EC2实例上连续运行,它提取数据并将其存储在mysql中。 一些读取也在数据库上执行。 这个过程可以在数小时或数天内运行良好,并且具有稳定的RAM消耗。 但是不时开始消耗越来越多的RAM,一直增加到100%,导致服务器无响应。 我首先想到了内存泄漏,但还没有设法find任何东西。 然后我看看I / O(使用htop的“详细的CPU时间选项”),看到有很多Iowait(CPU栏保持填充灰色),同时节点的RAM使用率。 js进程正在增加。 解释100%内存消耗问题和I / O性能问题之间是否存在关联是否正确? 还是应该回到我的内存泄漏调查? 更新:我启动了相同的代码,从不同的云提供商处理服务器上的相同数据量。 到目前为止,我没有任何内存使用高峰。 我正在考虑切换到该提供商,忘记这一点。 仍然好奇知道问题的原因可能是什么。 硬件 ? 一些configuration?

AWS EC2是否具有分散在群集中的辅助磁盘?

我正在使用AWS EC2 Linux m3.xlarge运行一个名为“智能信息检索系统”的程序,该程序执行许多到/来自磁盘的I / O操作。 我曾尝试在笔记本电脑和其他集群上运行相同的程序,性能比AWS EC2高10倍,即使实例规格要好得多。 可以解释这种行为的唯一解释是,如果AWS提供单个文件系统来存储所有数据和索引文件,而内部则来自文件的块存储在散布在群集中的不同辅助磁盘上。 它在AWS EC2中以这种方式工作吗?

持续testinglinux的io

我希望长时间地将某些磁盘的io打成一团,并且每当我无法读取某个块(或其他一些让我知道后端存储问题的症状)时,都会意识到这一点。 有一些基准testing工具可以写几秒钟,并显示结果,但我想做长期的testing。 到目前为止,我能想到的是通过dd写入磁盘并从该文件读取到/ dev / zero。 我需要循环它,以便在完成初始运行后继续读取和写入。 至于洞察磁盘健康,我想dd可能会终止,如果它不能读取或写入? 否则我可能不知道是否有问题。 另一个想法是在循环中运行bonnie ++。 很难说出后台正在做什么,以及它实际上使用多lessram而不是磁盘(似乎他们试图通过告诉你有大量的数据写入,比你的内存分配大)来解决这个问题。 那么,它给你的输出是很难看的。 但是,如果我使用bash循环来不断运行它,这应该足以用于书写和阅读。 思考?

为什么SSHFS I / O延迟testing比本地RAID和NFS更快?

使用dd进行SSHFS服务器I / O延迟testing会得到非常令人惊讶的结果,所以我担心这可能是testing方法或configuration中的一些问题。 testing1在本地RAID 10磁盘上使用dd (512个字节写入一千次) dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=dsync 产量 1000+0 records in 1000+0 records out 512000 bytes (512 kB) copied, 3.34273 s, 153 kB/s 不用说,testing1的结果非常令人失望。 testing2挂载( sshfs -o reconnect -o nonempty -o allow_other -o ServerAliveInterval=15 -o cache=yes -o kernel_cache -o Ciphers=arcfour )使用dd RAID 1磁盘(512字节写入一千次) dd if=/dev/zero of=/mnt/nas/testfile bs=512 count=1000 oflag=dsync 产量 […]