# Poor SSD performance

## allistarM

Hi there,

  I recently purchased a SanDisk ExtremePro 240Gb. The computer it's going in is an ASUS P5B deluxe. The drive is plugged into a 6Gb/s SATA card (a Rocket 620A Dual Port PCI-Express adapter). This adapter is plugged into a PCI-ex4 slot. The BIOS is using AHCI mode for SATA disks. I run kernel 4.4.6-gentoo.

I have formatted the SSD into two Ext4 partitions (one 64Mb and the other is the remaining). Hdparm reveals this:

```

hdparm -tT /dev/sde

/dev/sde:

 Timing cached reads:   7312 MB in  2.00 seconds = 3659.09 MB/sec

 Timing buffered disk reads: 576 MB in  3.00 seconds = 191.84 MB/sec

```

Smartctl reveals this:

```

smartctl -a /dev/sde

smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.4.6-gentoo] (local build)

Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===

Model Family:     Marvell based SanDisk SSDs

Device Model:     SanDisk SDSSDXPS240G

Serial Number:    154242402021

LU WWN Device Id: 5 001b44 ef52542e5

Firmware Version: X21200RL

User Capacity:    240,057,409,536 bytes [240 GB]

Sector Size:      512 bytes logical/physical

Rotation Rate:    Solid State Device

Form Factor:      2.5 inches

Device is:        In smartctl database [for details use: -P show]

ATA Version is:   ACS-2 T13/2015-D revision 3

SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)

Local Time is:    Thu May 26 11:32:34 2016 NZST

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:  (0x00) Offline data collection activity

                                        was never started.

                                        Auto Offline Data Collection: Disabled.

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:                (    0) seconds.

Offline data collection

capabilities:                    (0x11) SMART execute Offline immediate.

                                        No Auto Offline data collection support.

                                        Suspend Offline collection upon new

                                        command.

                                        No Offline surface scan supported.

                                        Self-test supported.

                                        No Conveyance Self-test supported.

                                        No 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:        (   2) minutes.

Extended self-test routine

recommended polling time:        (  10) minutes.

SMART Attributes Data Structure revision number: 4

Vendor Specific SMART Attributes with Thresholds:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE

  5 Reallocated_Sector_Ct   0x0032   100   100   ---    Old_age   Always       -       0

  9 Power_On_Hours          0x0032   002   100   ---    Old_age   Always       -       2

 12 Power_Cycle_Count       0x0032   100   100   ---    Old_age   Always       -       2

166 Min_W/E_Cycle           0x0032   100   100   ---    Old_age   Always       -       0

167 Min_Bad_Block/Die       0x0032   100   100   ---    Old_age   Always       -       24

168 Maximum_Erase_Cycle     0x0032   100   100   ---    Old_age   Always       -       1

169 Total_Bad_Block         0x0032   100   100   ---    Old_age   Always       -       398

171 Program_Fail_Count      0x0032   100   100   ---    Old_age   Always       -       0

172 Erase_Fail_Count        0x0032   100   100   ---    Old_age   Always       -       0

173 Avg_Write/Erase_Count   0x0032   100   100   ---    Old_age   Always       -       0

174 Unexpect_Power_Loss_Ct  0x0032   100   100   ---    Old_age   Always       -       0

184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0

187 Reported_Uncorrect      0x0032   100   100   ---    Old_age   Always       -       0

188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0

194 Temperature_Celsius     0x0022   064   038   ---    Old_age   Always       -       36 (Min/Max 25/38)

199 SATA_CRC_Error          0x0032   100   100   ---    Old_age   Always       -       0

212 SATA_PHY_Error          0x0032   100   100   ---    Old_age   Always       -       0

230 Perc_Write/Erase_Count  0x0032   100   100   ---    Old_age   Always       -       0

232 Perc_Avail_Resrvd_Space 0x0033   100   100   004    Pre-fail  Always       -       100

233 Total_NAND_Writes_GiB   0x0032   100   100   ---    Old_age   Always       -       12

241 Total_Writes_GiB        0x0030   253   253   ---    Old_age   Offline      -       11

242 Total_Reads_GiB         0x0030   253   253   ---    Old_age   Offline      -       3

244 Thermal_Throttle        0x0032   000   100   ---    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]

Selective Self-tests/Logging not supported

```

That shows that TRIM is enabled and that it's in 6Gb/s mode.

Question: what is causing this new SSD to perform so slowly? What can I look at to diagnose this issue?

Thanks.

----------

## eccerr0r

Is your controller the Highpoint Rocket 620A?  This looks like a x1 PCIe card, or is it really x4?

With a x1, 190MB/sec might be a little low (theoretical should be in the mid 200s) but not completely unexpected.  Then the onboard SATA2 connectors may not be so bad compared to a x1 PCIe.

----------

## allistarM

Yes, it's a Highpoint Rocket 620A. It reports at x1 when it boots. x1 is reportedly 250 MB/s. SATA3 is 600MB/s.

I've added a grub entry for the root partition to be on the SSD. Booting is faster but not amazingly so.

I'll try plugging the drive into one of the spare onboard SATA2 headers but I can't see how that would make it any faster. Since I've plugged the SATA adapter into the longer PCIe-x4 slot it appears I may benefit from a higher specced card (i.e. PCIe-x4).

My SSD reports this in hdparm:

 Timing cached reads:   7030 MB in  2.00 seconds = 3517.88 MB/sec

 Timing buffered disk reads: 566 MB in  3.01 seconds = 188.16 MB/sec 

My spinning SATA disk reports this:

 Timing cached reads:   7004 MB in  2.00 seconds = 3504.22 MB/sec                                                           

 Timing buffered disk reads: 230 MB in  3.02 seconds =  76.12 MB/sec

Am I right that it's the bottom number that's important here?

----------

## frostschutz

76MB/s is a tad slow.

You should benchmark access times though, they are more important than linear throughput. SSD is all about access times and IOPS...

SSD should be fine onboard even if it's "only" SATA2.

----------

## pilla

The so called "cached reads" means that you are reading it most likely from your RAM instead from the disk most of the time. Hence, it is not very interesting if you want to get a measure of your disk's performance.

----------

## eccerr0r

SATA2 is 3Gb/sec and if it tops out a 300MB/sec it's still a win over PCIe x1 at 250MB/sec.

I still have SATA2 spinner disks that only do 70-80MB/sec but yes newer ones should exceed 100MB/sec on sequential reads.

----------

## allistarM

My motherboard is fairly old, but has lasted me well and this computer still performs acceptably (it's an ASUS P5B with an Intel QX6700 not overclocked with 6Gb of RAM). It doesn't have as much spec as modern computers but I'm amazed that this thing still feels like the day I got it.

There are 2 types of SATA headers on my board. Six SATA 3Gb/s ports and one JMicron RAID SATA port. I also bought and installed a HighPoint Rocket 620A 6Gb/s SATA PCIex1 adapter.

I tried some tests with the SSD (numbers are hdparm buffered disk reads):

Plugged into the PCIe adapter: 193Mb/s.

Plugged into the JMicron motherboard port: 135Mb/s.

Plugged into one of the size main SATA ports: The BIOS wouldn't recognise the drive at all, it wouldn't even get to the setup screen.

I don't have any special drivers installed, everything seems to work out of the box. While there aren't specific kernel options for the PCIe adapter it works ok. The docs says that Linux support is automatic.

While the performance of the SSD isn't as good as I expected, it's still noticeably faster than the RAID10 10,000 rpm SATA array I use. I think I'll put this one down to the motherboard being old and not supporting the faster transport speeds. I intentionally bought what was supposed to be a very high performing SSD. Oh well...

I am uneasy moving from RAID10 to non RAID so for piece of mind I will set up an rsync job to run twice a day to copy from the SSD to the RAID10 (which will have plenty of space).

----------

## eccerr0r

The sequential speeds is not the only advantage of an SSD.  The random read speeds is what really makes an SSD shine.  But you'll need to get at least some sort of x4 PCIe card to see higher sequential speeds on that motherboard and plug it into an x4 slot.  The x1 won't cut it.

----------

## allistarM

Thanks. I have noticed a general performance improvement with the SSD. I have moved /var to the RAID10 spinning array as well as large file storage (the SSD is only 240Gb). Odd that an SATA 6Gb/s card is only PCIe-x1 when that won't deliver the speeds needed for full SATA3 speed.

----------

