Here's the situation:
I have some large mysql db files on my main partition. For some strange
reason, some of these files are very slow to be read off the disk:
~3MB/s (I'm SCPing them to another machine). File size doesn't seem to
be relevant (other files of approximately same size are being
transferred at ~20MB/s), and the speed is not the same throughout the file.
My first thought was that the file got very fragmented (I'm fairly sure
that the partition was filled up to [almost] 100% at some point).
Usually, that can be remedied by copying the file to another location on
the same partition.. or rather, that's what would fix fragmented files
on NTFS. When I tried that, the read speed of the new file was better by
a small amount (up to ~5MB/s) - although that could be because the file
was still in the memory cache.
I also thought that HD might be nearing the end of its useful lifetime
(and has to re-read the sectors, causing the horrible slowdown), but I
didn't notice any alerts from SMART (including the output of smartctl
-a, anyway)
The partition is ~60-70% full, type ext3 with noatime enabled.
Speed tests were performed by "scp myfile localhost:/dev/null"
smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Device Model: ST3300831A
Serial Number: 3NF17FA8
Firmware Version: 3.04
User Capacity: 300,069,052,416 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Tue Dec 4 14:01:27 2007 PST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 430) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 101) minutes.
SMART Attributes Data Structure revision number: 10
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 062 050 006 Pre-fail Always - 217294
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 25
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 8837462413
9 Power_On_Hours 0x0032 084 084 000 Old_age Always - 14629
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 59
194 Temperature_Celsius 0x0022 047 064 000 Old_age Always - 47 (Lifetime Min/Max 0/22)
195 Hardware_ECC_Recovered 0x001a 062 049 000 Old_age Always - 217294
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.