我有一个过程将二进制文件写入ext3文件系统。
我认为这在CPU上应该是一个非常简单的过程,但我看到45%的系统CPU利用率。它是一个40核的80线程服务器,并且有一个RAID 1 + 0 16磁盘阵列。
有100个线程同时执行IO。这是正常的,几乎有一半的系统CPU使用?有没有办法分析为什么它使用这么多的CPU?
用户CPU约为10-15%。
过程是这样的:我们从文件中读取一些数据,检查数据是否在db中,然后我们将数据写入文件。 Db在不同的机器上,日志记录也在不同的机器上。 我们检查文件是否已经存在,通常不存在,所以我们创建一个新文件并将一些数据写入其中。
这是我看到的
iostat -xkt 1
03/07/2014 01:06:28 PM
avg-cpu: %user %nice %system %iowait %steal %idle
16.14 0.00 43.24 0.01 0.00 40.60
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 166.00 0.00 69.00 0.00 940.00 27.25 0.02 0.23 0.17 1.20
sda 0.00 322.00 1.00 598.00 128.00 3680.00 12.71 0.07 0.12 0.09 5.50
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-3 0.00 0.00 0.00 235.00 0.00 940.00 8.00 0.06 0.26 0.05 1.10
dm-4 0.00 0.00 1.00 920.00 128.00 3680.00 8.27 0.10 0.11 0.06 5.40
您必须对代码进行基准测试。
—
Ramhound
这不是我的代码,所以我不能做太多。
—
Roman Goyenko
如果您无法对代码进行基准测试,则无法确定CPU使用率的原因。
—
Ramhound
“二进制文件”来自哪里?硬件还是软件RAID?机器上还有其他活动吗?
—
vonbrand
我最后添加了更多信息。它是硬件RAID。我们做一些差异登录。文件系统和不同的计算机上也有数据库
—
Roman Goyenko