如果我没有使用正确的术语(虽然我是 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)(是的,我们仍在运行)——是
top或其他工具中获得的东西,而无需抓取输出并进行自己的数学运算?我应该监控除nfsd?注意: top似乎不是用于此任务的工具,但至少它对我可用。不可用的工具列表包括
我的 linux 页面缓存有一个很大的问题,这会减慢 IO。例如,如果我使用 dd 复制一个 lvm 分区,linux 会将数据缓存在缓冲区或缓存中 (free –m)。那不是问题,但是在缓冲区达到特殊值后,复制过程停止并减慢到几 mbs 甚至 kbs。我已经做了很多写入磁盘或 /dev/null 的测试,问题与源驱动器或目标无关。
详细:
结论:
问题要么与第二个 cpu 有关,要么与内存总量有关。我有一种“感觉”,问题可能是,每个 cpu 都有自己的 32GB ram,并且复制过程仅在 …
我想永久更改 Fedora 20 上特定磁盘的 I/O 调度程序。根据我的发现,这可以通过以 root 身份执行以下 shell 行来实现:
echo {SCHEDULER-NAME} > /sys/block/{DEVICE-NAME}/queue/scheduler
但是,重新启动后更改将丢失。似乎实现我想要的一种方法是创建一个 systemd 服务,但我完全迷失了,因为它必须在安装磁盘后执行。有人能帮我写一个这样的系统服务吗?也欢迎任何其他可行的解决方案。
我的服务器包含 128 个监视器,这导致提交了许多随机写入 IO。如果我使用SSD,很多写入很快就会坏掉。
我读了一些关于 F2FS 的文章,知道它在闪存盘和随机/小写上效果更好。
我的服务器中有很多随机写入 IO。它总是会降低我服务器的性能。
如果我在硬盘上安装 F2FS?这比ext4更好用吗?
====== 更新 ======
RAID0 仅用于性能基准测试,实际上我会使用 RAID5 或 RAID6。
在我搜索了很多之后,有两种方法可能有效:
我有一个负载相当高的系统。从下面的顶部输出可以看出,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 不是因素时,我将不胜感激任何帮助隔离高负载的原因。
我有一台服务器正在为用户的主目录执行 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\nTime: 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) 我的数据库服务器具有以下数据设备的 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) 我想知道来宾是否可以看到成功的磁盘刷新操作,但主机实际上并未将其刷新到磁盘?
ESXi 如何与来宾 I/O 配合使用?它们在写入主机磁盘之前是否由 ESXi 缓存?
我们可以通过发出“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 使用Deadline算法进行 I/O 调度。其中一个参数是 下的front_merges参数/sys/block/sda/queue/iosched/front_merges。默认情况下它设置为 1,这意味着可能会发生前合并。如果不期望发生前端合并,可以将其设置为 0 以获得性能提升。
io ×10
linux ×8
performance ×4
nfs ×2
dd ×1
fedora ×1
filesystems ×1
memory ×1
rhel5 ×1
sar ×1
scheduling ×1
storage ×1
systemd ×1
vmware-esxi ×1