坏主板/控制器/ HDs?

在租用的服务器上,我遇到了一些需要精确计时的应用程序的时间问题。 服务器是运行在CentOs 5.5 x64下的Supermicro X7DVL-3主板上的Dual Xeon E5410。

我正在运行的应用程序是定时器敏感的,并保持传感漂移无论是在负载或空闲,但尤其是在负载下。 我用atop和dd做了一些调查,发现了一些令人兴奋的数字。 请注意,我不是Linux专家,但肯定会出现一些问题。

我跑了:

dd bs=4096 if=/dev/zero of=/bigtestfile 

生成磁盘活动。 无论我是否写入sda或sdb,我的DSK值都会超过100%,一度达到1700%。 如果我正在写信给sda或sdb,那也一样没关系。

 DSK | sdb | busy 675% | read 0 | write 110 | avio 78 ms | 

这里是smartctl输出:

 # smartctl -A /dev/sda smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 165 165 021 Pre-fail Always - 2750 4 Start_Stop_Count 0x0032 100 100 040 Old_age Always - 21 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x000a 200 200 051 Old_age Always - 0 9 Power_On_Hours 0x0032 065 065 000 Old_age Always - 25831 10 Spin_Retry_Count 0x0012 100 253 051 Old_age Always - 0 11 Calibration_Retry_Count 0x0012 100 253 051 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 21 194 Temperature_Celsius 0x0022 116 093 000 Old_age Always - 27 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0012 200 200 000 Old_age Always - 0 199 UDMA_CRC_Error_Count 0x000a 200 253 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 051 Old_age Offline - 0 # smartctl -A /dev/sdb smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0003 180 180 021 Pre-fail Always - 3958 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 22 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 200 200 051 Pre-fail Always - 0 9 Power_On_Hours 0x0032 068 068 000 Old_age Always - 24087 10 Spin_Retry_Count 0x0013 100 253 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0013 100 253 051 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 21 194 Temperature_Celsius 0x0022 122 096 000 Old_age Always - 25 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0009 200 200 051 Pre-fail Offline - 0 

任何想法这里有什么问题? 坏主板? 这两个驱动器都不好(smartctl说他们是PASS_,所以它会让主板成为我眼中的罪魁祸首。

有些漂移是不可避免的。 由NTP等提供的时钟规则有助于消除这种情况。 Linux有一些正在使用的定时器,有些容易受到负载相关的漂移。 由于存储控制器和时间控制器可能在同一个南桥芯片上,导致漂移的磁盘I / O在双磁盘系统中并不奇怪。

HPET定时器更精确,但需要更正才能保持UTC。 更精确的定时器将需要软件来确保时间不漂移(例如ntp)或特殊的硬件。

至于过多的DSK时间,我已经看到IOWAIT爬升到疯狂水平的情况。 这是磁盘子系统无法跟上需求的结果,并且您的dd命令旨在在短时间内在磁盘上引发大量数据。 在两个磁盘系统,这似乎…不寻常的。 我怀疑在主板的固件中有一个坏的数据path; 硬件故障应该在dmesg中留下尖叫的痕迹。

这很奇怪。 作为一个远射,我会尝试首先重新安装电缆,然后更换它们,如果重新安装不起作用。

我已经看到硬盘驱动器开始生病,坏的performance真的很差。 两个驱动器同时坏的可能性借给你提到的控制器或主板。

如果可能的话,我会尝试一次删除一个驱动器,然后再次运行testing,以查看性能问题是否仍然存在与单独,或如果它只发生在两个。

祝你好运。