我有一个Linux页面caching,这减慢了IO的巨大问题。 例如,如果我用dd复制lvm分区,linux会将数据caching在缓冲区或caching中(free -m)。 这不是问题,但在缓冲区达到特殊值后,复制过程将停止并减慢到几个mbs或甚至kbs。 我已经做了很多testing,写入磁盘或/ dev / null的问题与源驱动器或目的地无关。 详细: 有两个几乎相同的服务器。 两个都运行CentOS 6.5与相同的内核。 他们有相同的磁盘,相同的设置,相同的其他硬件,在所有方面相同。 唯一的区别是一个服务器有2个CPU和64GB RAM,另一个有1个CPU和32GB RAM。 这也是以下复制过程的图像: http : //i.stack.imgur.com/tYlym.jpg 这里也有一个新版本meminfo。 meminfo来自不同的运行,所以它们的值不是相同的,但是它们是相同的行为: http ://i.stack.imgur.com/4SIJG.jpg 用dd或其他文件系统复制程序开始复制。 缓冲区或caching开始填充。 一切皆好。 缓冲区或caching达到最大数量(在64GB ram服务器上,值为32GB或17GB;在32GB RAM服务器上,所有可用内存) 在64GB ram服务器上,复制过程现在停止或仅限于几个mbs。 在32GB RAM服务器上一切正常。 在64GB ram服务器上,我可以通过强制caching“sync; echo 3> / proc / sys / vm / drop_caches”来解决问题。 但是,当然缓冲区会立即开始再次增长,问题再次出现。 结论: 这个问题要么与第二个CPU有关,要么与内存总量有关。 我有“感觉”这个问题,每个CPU都有自己的32GB内存,复制过程只在CPU上运行。 所以最后复制过程中缓冲区/caching近32GB或其他CPU未使用的内存,然后Linux认为嘿仍有内存,所以让我们进一步增加缓冲区,但硬件下面不能访问内存,或东西像那样。 有没有人有一个想法或解决scheme? 当然,我可以使用dd直接标志,但是这不解决问题,因为也有外部访问通过桑巴等。 EDIT1: 这里还有64GB […]
我想在一个给定的时间范围内,以编程方式测量一些与磁盘io相关的数字。 这意味着我不想像iostat那样产生一个进程来获得我的数字,比较喜欢从proc或类似的地方读取某些东西。 我需要知道: 写入磁盘的块数 从磁盘读取的块数 从磁盘中读取但在磁盘caching中find的块的数量 即将写入磁盘的块的数量,但尚未写入,以知道有多less成功的IO我可能期望。 如果我只通过磁盘或分区得到这个信息…这更好,因为我不需要知道从proc读取了多less信息。 如果我另外知道这个过程等待IO完成了多less时间…甚至更好。 这是可能的一些IO调用,或通过读取和parsing/ proc文件?
道歉,如果我不使用正确的术语(虽然我是一个长期的Linux用户,我不是pipe理员),或者如果这是一个常见问题(尽pipesearchSE有很多点击,我没有看到任何东西这个问题): 我是一个科学群体的用户(由PBS / Torquepipe理,RHEL5,FWIW)。 我即将开始我的第一个真正的大工作,所以我问了pipe理员一些configuration问题,以避免愚蠢的错误。 我大部分都是正确的,但是他补充了一些build议,“确保你不是用太多的I / O敲击磁盘服务器”,后续的步骤是“使用top来查看nfs是否正在运行。 怎么做? 这是一个集群,所以很多“幕后”对我来说是透明的。 另外我有没有特权。 我也仅限于通过SSH的CLI,但这是我的问题最less。 从好的一面来看,我似乎能够将任何计算节点都包含在内,包括那些连接磁盘的计算节点。 所以我想知道,如何最好的监测用户的NFS? 我知道一些关于top和NFS,所以我知道我可以做到 top -p$(pgrep nfsd -d ',') 获取NFS进程的列表(不是?)。 但是我真的很想知道 – 作为一个用户(我既没有sudo也没有root)在RHEL5上(是的,我们仍在运行) – 是 一个或几个,在所有NFS进程中聚合NFS负载的统计信息。 这是我可以从top或其他工具获得的东西,而不需要输出和做自己的math吗? 而且我应该监视nfsd以外的nfsd吗? 关于量化“NFS疯狂”的build议 如果我能得到一个/几个综合统计数字,我可以想象得到一个事前基线,但是这还没有告诉我“多高太高”。 注: top似乎不是这个任务使用的工具,但至less它是可用于我。 不可用的工具列表包括 使用nfsstat iostat的 iotop
作为configuration我们的新服务器的一部分(见其他SF ),我想找出以下内容: 随机到顺序读写的比率 一次读取和写入的数据量(以直方graphics式表示) 我已经可以使用iostat&dstat来查看每个操作和整个数据级别的读/写了,但是我想知道更多。 例如,我想知道,我们大多是随机的16kb读取,或者随机写入的很多顺序的64kb读取。 我们(当前)在Ubuntu 10.04 VM上。 是否有一个我可以运行的实用程序将为我logging和呈现这些信息?
我需要从我的服务服务器检索一些度量标准来衡量另一个stroage解决scheme。 基准程序提供了各种选项(我selectFIO, http: //freecode.com/projects/fio)。 我可以很容易地设置它的io模式。 但我不知道如何才能真正服务的指标,尽可能现实地设置基准variables。 例如,我需要设置, 随机/顺序读/写比率文件大小和分布的每个 文件大小(如果我可能的话,每个大小的随机/顺序读/写比率) iodepth 随机访问的修订比率(可能影响随机访问性能) 我目前正在testingceph( http://ceph.com/ ),至less以上的指标似乎对我研究中的那些存储有重大影响。 我如何检索这些值? collectcl( http://collectl.sourceforge.net/ )似乎是有保证的。 但是,除了读/写比率之外,还无法想象。 除了那些东西,我无法弄清楚。 我很想知道其他人如何决定这些基准variables。 提前致谢。
我有一个运行CentOS的VPS服务器(WiredTree)。 遇到一些性能问题后,我使用以下脚本为磁盘读/写速度创build了一个简单的基准: echo Write to disk dd if=/dev/zero of=test1 bs=1048576 count=2048 echo Read from disk dd if=test1 of=/dev/null bs=1048576 这是一个示例输出: [bizwayz@host perf]./benchmark Write to disk 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB) copied, 11.2601 seconds, 191 MB/s Read from disk 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB) copied, 0.789302 […]
我在EC2上运行一个服务器(Cent OS,2.6.35.14,x86_64),而且最近我每个月超过了我的100万个I / O配额,这是荒谬的,因为我的磁盘利用率不应该在任何地方。 (我没有运行任何应该需要很多磁盘访问的服务,甚至是任何磁盘访问) 我的第一个想法是启动iotop,看看是否有任何进程不断写入磁盘。 iotop向我展示了一个名为jbd2的进程每分钟写入磁盘不止一次。 经过一番 search后,问题似乎是内核错误,或者一些守护进程经常碰到磁盘。 我安装了inotify-tools,并在整个文件系统上启动了一个inotifywait; sudo /usr/local/bin/inotifywait -m -r /!(dev|proc) 而这显示的是/ etc / passwd正在打开,访问,然后closures,每分钟多次。 没有我在系统上做其他事情! inotify不会告诉你什么程序正在做触摸,但我安装了审计( http://people.redhat.com/sgrubb/audit/ ),在/ etc / passwd上设置了一些日志logging,让它运行一段时间,然后看看日志,但他们告诉我的是,它是由sudo访问:(用户名编辑) type=SYSCALL msg=audit(10/03/2011 17:48:30.493:260) : arch=x86_64 syscall=open success=yes exit=4 a0=7f809205669a a1=80000 a2=1b6 a3=0 items=1 ppid=6466 pid=6467 auid=**** uid=root gid=**** euid=root suid=root fsuid=root egid=**** sgid=**** fsgid=**** tty=pts0 ses=79 comm=sudo exe=/usr/bin/sudo key=(null) […]
这是我询问的前一个问题的后续( 两台服务器的磁盘速度不一致 )。 我有一台带有PERC H700集成RAID控制器(称为服务器B)的PowerEdge R510服务器,它使用8个具有3Gb / s带宽的磁盘构build,我使用四个内置的服务器(称为服务器A)具有6Gb / s带宽的磁盘。 服务器A比服务器B有更好的I / O速率。 一旦我发现与磁盘的区别,我已经用更快的6Gbps磁盘重build了服务器A. 不幸的是,这不会导致磁盘性能的提高。 预计服务器之间必须有一些其他的configuration差异,我们把6Gbps的磁盘从服务器A中拿出来放到服务器B中,这样也不会增加磁盘的性能。 我们现在有两台相同的服务器,除了六个6Gbps磁盘,另外一个带有八个3Gbps磁盘,而且磁盘的I / O速率几乎相同。 这意味着除了磁盘之外还有一些瓶颈,但是我不明白服务器B最初是如何有更好的I / O,后来被“丢失”了。 下面的比较I / O信息,由SQLIO测量。 每个testing使用相同的参数。 实际的数字并不重要,而是系统之间的差异。 在每种情况下,D:是2个磁盘RAID 1卷,而E:是4个磁盘RAID 10卷(除了原始服务器A,其中E:是2个磁盘RAID 0卷)。 服务器A(具有6Gpbs磁盘的原始设置) D: Read (MB/s) 63 MB/s D: Write (MB/s) 170 MB/s E: Read (MB/s) 68 MB/s E: Write (MB/s) 320 MB/s 服务器B(使用3Gpbs磁盘的原始设置) D: Read […]
我只是运行一个副本命令的两个大目录与less量的巨大的文件,我看到我的CP进程正在消耗大约一半的核心: 51116 root 20 0 110m 876 688 D 43.9 0.0 3:23.83 cp -i -r 165 178 temp 为什么cp进程使用任何cpu? 我会想象它花费大部分时间在磁盘上等待… Thx,波阿斯
在Solaris上, iostat告诉我一个设备占用率高达 92%,但是如何找出哪些程序正在发出请求?