我希望得到一些帮助,试图找出是什么原因导致 Centos 7 访问文件的速度比 Centos 6 慢。差别大约有 17%。
这是一个简单的测试:
[root@test-centos6 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m42.283s
user 0m2.465s
sys 0m4.434s
[root@test-centos6 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m41.890s
user 0m2.442s
sys 0m4.341s
[root@test-centos6 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m41.795s
user 0m2.383s
sys 0m4.310s
----
[root@test-centos7 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m49.081s
user 0m16.306s
sys 0m32.639s
[root@test-centos7 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m48.379s
user 0m16.034s
sys 0m32.191s
[root@test-centos7 shm]# time for i in $(seq 0 50000); do stat file > /dev/null; done
real 0m48.054s
user 0m15.680s
sys 0m32.245s
strace 似乎证实 C7 在每个统计上执行的操作比 C6 多。
[root@test-centos6 shm]# strace stat file 2>&1 | wc -l
145
[root@test-centos7 shm]# strace stat file 2>&1 | wc -l
168
有人知道如何减少 C7 的操作次数以使性能与 C6 更加一致吗?
谢谢你,
//编辑:
我已将两者都放入 /dev/shm 中以消除可能存在的 xfs/ext4 差异。它们是同一 ESX 主机上的 2 个相同虚拟机,只是操作系统不同。(但我在硬件盒上也观察到了同样的差异,只是在当前测试中使用这些虚拟机)
跟踪C6:https://paste.fedoraproject.org/paste/oCSUZqKgcoNLJubjeNbo9V5M1UNdIGYhyRLivL9gydE= 跟踪C7:https://paste.fedoraproject.org/paste/PvTXvxxvS~2UZ9LuuSVAA15M1UNdIGYhyRLivL9gydE=
我原本以为较新的 C7 在原装状态下性能会更好,而不是更差。
[root@test-centos6 shm]# uname -r
2.6.32-642.el6.x86_64
[root@test-centos6 shm]# getenforce
Disabled
[root@test-centos7 shm]# uname -r
3.10.0-514.6.1.el7.x86_64
[root@test-centos7 shm]# getenforce
Disabled
答案1
它们是完全不同的操作系统,具有不同的内核、编译默认值、文件系统、调度程序和调整功能。
你为什么认为它们的表现应该相同?有很多因素需要考虑,因此这个问题很难以目前的形式回答。
答案2
stat
CentOS6 和 CentOS7 之间的实用程序有所不同。要确认,请尝试在两台机器上执行此操作stat --version
。
新strace
版本可能更复杂了。例如,从你的strace
输出来看,CentOS7 有strace
Maps libpcre.so.1
(一个正则表达式库),而 CentOS6strace
没有。
无论如何,这基本上是一个固定测试:为了真正衡量文件访问/操作速度,您应该使用工具fs_mark
,或者更好的是,进行一些真实世界的测试(例如:解压大型档案)。