标签: io

如何从用户空间监控 NFS 负载?

如果我没有使用正确的术语(虽然我是 linux 的长期用户,我不是管理员)或者这是一个常见问题(虽然搜索 SE 有很多点击,但我没有看到任何类似的东西),我深表歉意这个问题):

我是一个科学集群的用户(工作由 PBS/Torque、RHEL5、FWIW 管理)。我即将开始我的第一个非常重要的工作,所以我向管理员询问了一些配置问题,以避免出现愚蠢的错误。我大部分是对的,但他补充说“确保你没有用过多的 I/O 敲打磁盘服务器”,随后是“使用 top [来] 看看 nfs 是否会发疯”。

怎么做?这是一个集群,所以很多“幕后”对我来说是透明的。另外,我几乎没有特权。我也仅限于通过 SSH 使用 CLI,但这是我遇到的最少的问题。从好的方面来说,我似乎确实能够进入任何计算节点,包括那些带有附加磁盘的节点。

所以我想知道,如何最好地从用户空间监控 NFS?我对topNFS有一点了解,所以我知道我可以做到

top -p$(pgrep nfsd -d ',')
Run Code Online (Sandbox Code Playgroud)

获取 NFS 进程列表(不是?)。但我真的很想知道——再次,作为sudoRHEL5 上的用户(我既没有也没有 root)(是的,我们仍在运行)——是

  1. 所有 NFS 进程中 NFS 负载的一项或多项汇总统计信息。这是我可以从top或其他工具中获得的东西,而无需抓取输出并进行自己的数学运算?我应该监控除nfsd?
  2. 关于量化“NFS 发疯”的建议。如果我能得到一个/几个汇总统计数据,我大概可以得到一个工作前的基线,但这仍然不能告诉我“多高是太高了”。

注意: top似乎不是用于此任务的工具,但至少它对我可用。不可用的工具列表包括

  1. nfsstat
  2. iostat

linux nfs performance-monitoring io rhel5

4
推荐指数
1
解决办法
7526
查看次数

Linux 页面缓存会减慢 64GB 内存双 CPU 服务器上的 IO

我的 linux 页面缓存有一个很大的问题,这会减慢 IO。例如,如果我使用 dd 复制一个 lvm 分区,linux 会将数据缓存在缓冲区或缓存中 (free –m)。那不是问题,但是在缓冲区达到特殊值后,复制过程停止并减慢到几 mbs 甚至 kbs。我已经做了很多写入磁盘或 /dev/null 的测试,问题与源驱动器或目标无关。

详细:

  • 有两个几乎相同的服务器。两者都使用相同的内核运行 CentOS 6.5。它们具有相同的磁盘、相同的设置、相同的其他硬件,在所有方面都相同。唯一的区别是一台服务器有 2 个 CPU 和 64GB 内存,而另一台服务器有 1 个 CPU 和 32 GB 内存。
  • 这里也是以下复制过程的图像:http : //i.stack.imgur.com/tYlym.jpg
  • 这里还有一个带有 meminfo 的新版本。meminfo 来自不同的运行,因此值不是相同的,但它是完全相同的行为:http ://i.stack.imgur.com/4SIJG.jpg
  • 使用 dd 或其他文件系统复制程序开始复制。
  • 缓冲区或缓存开始填满。一切都很好。
  • 缓冲区或缓存达到最大数量(在 64GB ram 服务器上,值为 32GB 或 17GB;在 32GB ram 服务器上所有可用内存)
  • 在 64GB ram 服务器上,复制过程现在停止或仅限于几 mbs。在 32GB 内存服务器上一切正常。
  • 在 64GB ram 服务器上,我可以通过使用“sync; echo 3 > /proc/sys/vm/drop_caches”强制缓存来暂时解决问题。但是当然缓冲区开始立即再次增长并且问题再次发生。

结论:

问题要么与第二个 cpu 有关,要么与内存总量有关。我有一种“感觉”,问题可能是,每个 cpu 都有自己的 32GB ram,并且复制过程仅在 …

linux memory io dd

4
推荐指数
1
解决办法
3201
查看次数

更改特定磁盘的 I/O 调度程序

我想永久更改 Fedora 20 上特定磁盘的 I/O 调度程序。根据我的发现,这可以通过以 root 身份执行以下 shell 行来实现:

echo {SCHEDULER-NAME} > /sys/block/{DEVICE-NAME}/queue/scheduler

但是,重新启动后更改将丢失。似乎实现我想要的一种方法是创建一个 systemd 服务,但我完全迷失了,因为它必须在安装磁盘后执行。有人能帮我写一个这样的系统服务吗?也欢迎任何其他可行的解决方案。

fedora io systemd

4
推荐指数
2
解决办法
6626
查看次数

在硬盘中的 RAID0 上使用 F2FS?

我的服务器包含 128 个监视器,这导致提交了许多随机写入 IO。如果我使用SSD,很多写入很快就会坏掉。

我读了一些关于 F2FS 的文章,知道它在闪存盘和随机/小写上效果更好。

我的服务器中有很多随机写入 IO。它总是会降低我服务器的性能。

如果我在硬盘上安装 F2FS?这比ext4更好用吗?

====== 更新 ======

RAID0 仅用于性能基准测试,实际上我会使用 RAID5 或 RAID6。

在我搜索了很多之后,有两种方法可能有效:

  1. 缓存IO
  2. 队列 IO 从随机 IO 到顺序 IO <-- F2FS支持

linux filesystems io

4
推荐指数
2
解决办法
659
查看次数

高负载 - 低 IO - 低 CPU 使用率

我有一个负载相当高的系统。从下面的顶部输出可以看出,CPU 使用率和 I/O 可以忽略不计:

top - 17:31:59 up 4 days, 2:34, 2 users, load average: 1.00, 0.99, 1.00

任务:总共 71 个,1 个运行,70 个睡眠,0 个停止,0 个僵尸

Cpu(s): 2.0%us, 2.0%sy, 0.0%ni, 95.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

内存:总共 960720k,已使用 707288k,253432k 空闲,
67328k 缓冲区

交换:总共 2811896k,已使用 2644k,空闲 2809252k,缓存 528928k

PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令

15310 根 20 0 2512 1128 888 R 2.1 0.1 0:00.05 顶部

当 I/O 和 CPU 不是因素时,我将不胜感激任何帮助隔离高负载的原因。

performance central-processing-unit io

3
推荐指数
1
解决办法
8502
查看次数

在不使用 iotop 的情况下确定 NFS/IO 利用率高的原因

我有一台服务器正在为用户的主目录执行 NFSv4 导出。大约有 25 个用户(主要是开发人员/分析师)和大约 40 台服务器安装主目录导出。性能很糟糕,用户经常会看到简单命令(例如 ls 或写入小文本文件)出现数秒的延迟。有时,主目录挂载完全挂起几分钟,用户会收到“权限被拒绝”错误。

\n\n

硬件是具有双 E5620 CPU 和 8 GB RAM 的 Dell R510。有八个 15k 2.5\xe2\x80\x9d 600 GB 驱动器 (Seagate ST3600057SS) 配置为硬件 RAID-6,具有单个热备用。RAID 控制器是带有 512MB 缓存的 Dell PERC H700(Linux 将其视为 LSI MegaSAS 9260)。操作系统为 CentOS 5.6,主目录分区为 ext3,选项为 \xe2\x80\x9crw,data=journal,usrquota\xe2\x80\x9d。

\n\n

我将 HW RAID 配置为向操作系统提供两个虚拟磁盘:/dev/sda 用于操作系统(引导分区、根分区和交换分区),/dev/sdb 用于主目录。

\n\n

我感到好奇和怀疑的是,sda 设备通常具有非常高的利用率,即使它只包含操作系统。我希望这个虚拟驱动器几乎一直闲置。根据“free”和“vmstat”,系统没有交换。为什么该设备上会有很大的负载?

\n\n

这是 iostat 的 30 秒快照:

\n\n
Time: 09:37:28 AM\nDevice:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await svctm  %util\nsda               0.00    44.09  0.03 107.76 …
Run Code Online (Sandbox Code Playgroud)

linux performance storage nfs io

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

在 sar 中等待

我的数据库服务器具有以下数据设备的 sar 输出:

[postgres@dbsrv07 ~]$ LC_ALL=POSIX sar -d  |egrep "await|dev253-2"

00:00:01          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util

00:10:01     dev253-2   2721.27  18357.23  20291.52     14.20    613.68    225.51     0.15     40.60

00:20:01     dev253-2   1345.04    574.92  10685.38      8.37    290.65    215.99      0.06      8.61

00:30:01     dev253-2    801.39    193.53   6364.92      8.18     87.49    109.34      0.07      5.95

00:40:01     dev253-2    832.95    195.70   6617.82      8.18     89.30    107.20      0.07      5.87

00:50:01     dev253-2    835.58    162.90   6644.64      8.15     85.35    102.14      0.06      5.24

01:00:01     dev253-2    847.99    232.36   6722.90      8.20     89.91    106.03      0.07      5.64 …
Run Code Online (Sandbox Code Playgroud)

linux performance io sar

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

ESX 5.X 是否缓存来宾 IO?

我想知道来宾是否可以看到成功的磁盘刷新操作,但主机实际上并未将其刷新到磁盘?

ESXi 如何与来宾 I/O 配合使用?它们在写入主机磁盘之前是否由 ESXi 缓存?

linux io vmware-esxi

3
推荐指数
1
解决办法
285
查看次数

Linux系统中的nomerge是什么意思?

我们可以通过发出“iostat -x -d”来查看一些参数,rrqm/s和wrqm/s代表每秒I/O请求的合并。并且有一个内核参数控制 I/O 合并:

/sys/class/block/设备名称/队列/nomerges

根据内核文档:

这使得用户能够禁用块层中涉及 IO 合并请求的查找逻辑。默认情况下 (0) 启用所有合并。当设置为 1 时,只会尝试简单的一击合并。当设置为 2 时,不会尝试合并算法(包括一击或更复杂的树/哈希查找)。

0和2的含义很容易理解,但是说到“一击”的1,我google了一圈,却没有具体的语义定义。所以请帮助解释 1 for nomerges 的确切含义是什么。谢谢。

linux performance io

3
推荐指数
1
解决办法
4111
查看次数

什么是 I/O 调度中的前端合并以及如何调整此参数?

我的 Linux 使用Deadline算法进行 I/O 调度。其中一个参数是 下的front_merges参数/sys/block/sda/queue/iosched/front_merges。默认情况下它设置为 1,这意味着可能会发生前合并。如果不期望发生前端合并,可以将其设置为 0 以获得性能提升。

  1. 什么是前端合并?有人可以描绘一下吗?
  2. 我如何知道或测试前端合并是否发生在我的系统上?

linux io scheduling

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