Ubuntu SSD – 速度很快,现在非常慢

这就是我现在所拥有的,使用Crucial MX300 750GB SSD(带有最新固件[还没有固件更新])。

lptp [ blah ]: sudo hdparm -Tt /dev/sda /dev/sda: Timing cached reads: 10202 MB in 2.00 seconds = 5103.20 MB/sec Timing buffered disk reads: 128 MB in 3.06 seconds = 41.88 MB/sec 

看到缓冲磁盘读取速度!!!! SOOOO SLOWWW !!!! 当我第一次设置我的笔记本电脑时,我看到超过400MB /秒,这对我来说非常好,因为这是一台较旧的笔记本电脑, 而且一切都是luks加密的。

这是我的/etc/fstab 。 我启用了修剪,手动运行修剪,启用/禁用function,重启,一切。 我不能让那些快速回来:

 /dev/mapper/ubuntu--gnome--vg-root / ext4 noatime,nodiratime,errors=remount-ro,barrier=0,discard 0 1 

就这么清楚,这些是我正在使用的选项。 我尝试了各种组合无济于事:

 noatime,nodiratime,errors=remount-ro,barrier=0,discard 

有小费吗? 这真让我抓狂。

哦,我也在带有16GB内存和i7处理器的联想T420上运行Ubuntu 16.04(x64):

  lptp [ blah ]: lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial 

Smartctl输出:

  lptp [ blah ]: sudo smartctl /dev/sda -a smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-38-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: Crucial_CT750MX300SSD1 Serial Number: XXXXXX LU WWN Device Id: 5 XXXXX XXXXXXX Firmware Version: M0CR011 User Capacity: 750,156,374,016 bytes [750 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Form Factor: 2.5 inches Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ACS-3 T13/2161-D revision 5 SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Tue Nov 1 21:22:05 2016 CDT 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: ( 1987) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. 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: ( 2) minutes. Extended self-test routine recommended polling time: ( 10) minutes. Conveyance self-test routine recommended polling time: ( 3) minutes. SCT capabilities: (0x0035) SCT Status supported. SCT Feature Control supported. SCT Data Table supported. 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 0x002f 100 100 000 Pre-fail Always - 0 5 Reallocated_Sector_Ct 0x0032 100 100 010 Old_age Always - 0 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 52 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 41 171 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 172 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 173 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 1 174 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 11 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0032 100 100 000 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 194 Temperature_Celsius 0x0022 059 052 000 Old_age Always - 41 (Min/Max 21/48) 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 100 100 000 Old_age Always - 0 202 Unknown_SSD_Attribute 0x0030 100 100 001 Old_age Offline - 0 206 Unknown_SSD_Attribute 0x000e 100 100 000 Old_age Always - 0 246 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 138859820 247 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 4354463 248 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 1675456 180 Unused_Rsvd_Blk_Cnt_Tot 0x0033 000 000 000 Pre-fail Always - 3558 210 Unknown_Attribute 0x0032 100 100 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. 

什么让我感到害怕的是, 正在努力工作 。 它工作了一天,然后它停止了下一个,我甚至没有做任何事情(我能想到)应该改变它。

UPDATE

测试了特定设备( /dev/sda1 ),但结果相同:

 lptp [ ~ ]: sudo hdparm -Tt /dev/sda1 /dev/sda1: Timing cached reads: 13130 MB in 2.00 seconds = 6568.77 MB/sec Timing buffered disk reads: 128 MB in 3.06 seconds = 41.79 MB/sec 

UPDATE

也在逻辑分区上测试过:

  lptp [ ~ ]: sudo hdparm -Tt /dev/mapper/ubuntu--gnome--vg-root /dev/mapper/ubuntu--gnome--vg-root: Timing cached reads: 11468 MB in 2.00 seconds = 5736.85 MB/sec Timing buffered disk reads: 178 MB in 3.04 seconds = 58.47 MB/sec 

更新dd测试

这个测试显示它甚至比hdparm显示更慢……

  lptp [ blah ]: dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 35.0156 s, 30.7 MB/s lptp [ blah ]: sudo bash -c "echo 3 > /proc/sys/vm/drop_caches" lptp [ blah ]: dd if=tempfile of=/dev/null bs=1M count=1024 status=progress 1066401792 bytes (1.1 GB, 1017 MiB) copied, 34.0193 s, 31.3 MB/s 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 34.256 s, 31.3 MB/s 

更新:分区对齐

这是我的笔记本电脑上的分区对齐方式:

 lptp [ ~ ]: sudo parted GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Model: ATA Crucial_CT750MX3 (scsi) Disk /dev/sda: 750GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 512MB 511MB primary ext2 boot 2 513MB 750GB 750GB extended 5 513MB 750GB 750GB logical (parted) align-check opt 1 1 aligned (parted) align-check opt 2 2 not aligned (parted) align-check opt 5 5 aligned (parted) 

我不知道怎么想分区2没有对齐:^ /但分区1和5是。

此外,这是从fdisk -l看到的分区

 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 1465147391 1464145922 698.2G 5 Extended /dev/sda5 1001472 1465147391 1464145920 698.2G 83 Linux 

更新:固定? 我将调度程序更改为noop调度程序(而不是截止日期)。 这似乎有效(通过更改/etc/default/grub来实现这一点:

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop" 

然后使用sudo update-grub2更新grub并重新启动。

在我做出回答并接受之前,我将等待几天后再看几次重启/使用后是否有效。

更改调度程序后的当前速度:

  lptp [ ~ ]: sudo hdparm -Tt /dev/sda /dev/sda: Timing cached reads: 12388 MB in 2.00 seconds = 6197.19 MB/sec Timing buffered disk reads: 1454 MB in 3.00 seconds = 484.59 MB/sec 

fstab中的选项是:

 noatime,nodiratime,errors=remount-ro,barrier=0 

在此处输入图像描述

“修复”更新

使用它一点并重新启动几次后,它回到慢速 🙁 🙁 🙁 🙁 🙁 🙁

更新 – 可能“修复”

我有一种想法,也许我的笔记本电脑在启动和运行电池时正在进行一些节省电池的优化。 在插入充电器的一个简单的启动测试后,它恢复到非常快的速度。 我很确定这是这种情况 – 我一直在快速测试我已经插入了充电器。我会再运行一些测试来validation,但我相当确定这是导致速度减慢的原因。

快速回答:

 sudo hdparm -B254 /dev/sda 

答案很长:

一般情况下,Linux或笔记本电脑(在Lenovo和Dell上均已validation)在使用电池启动时默认为APM级别80h(128),而在使用交流电源启动时则默认为FEh(254)。

对于大多数SSD而言,您不会注意到太多差异。 Lite-on SSD似乎根本不支持电源管理,并且总是以最大速度运行。 英特尔固态硬盘似乎在APM 128级全速运行约75%,在APM级254/255运行速度为100%。 然而,与APM级别254(在交流电源上启动)相比,Crucial SSD似乎在APM级别128(通过电池启动)以大约6%的全速运行。

坏消息是这里没有错误也没有错。 ATA规范足够模糊,允许在APM模式128中运行速度极快的Crucial SSD并且符合规范。 类似地,笔记本电脑默认为APM级别80h(128)是完全合理的。 规范只是说:

表106- APM水平
COUNT字段级别
00h保留
01h待机模式下的最低功耗
02h..7Fh具有待机模式的中间电源管理级别
80h无待机模式的最低功耗
81h..FDh没有待机模式的中间电源管理级别
FEh最高性能
FFh保留

(来自ATA规范 )

以下是我使用电池电源启动的Crucial MX300 SSD的经验:

 root@ubuntu:~# hdparm -B /dev/sda /dev/sda: APM_level = 128 root@ubuntu:~# hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 94 MB in 3.02 seconds = 31.11 MB/sec root@ubuntu:~# hdparm -B254 /dev/sda /dev/sda: setting Advanced Power Management level to 0xfe (254) APM_level = 254 root@ubuntu:~# hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 1466 MB in 3.00 seconds = 488.44 MB/sec 

您可能需要检查/etc/hdparm.conf,您可以在其中配置电源和电池模式的apm级别。

 apm = 254 apm_battery = 254 

到/etc/hdparm.conf

我一直发现,当我插入笔记本电脑时,我能够达到很快的速度。如果笔记本电脑在电池电量耗尽的情况下启动笔记本电脑, 然后插上电源,我仍然坚持慢速行驶。

这可能是我的笔记本电脑特有的东西(联想T420)。 我更改了所有BIOS设置以不节省任何电量,以获得最佳性能; 然而,这并没有让它只使用电池时速度快。 当我启动以获得快速时,我仍然需要插入电源。

另一个注意事项:我可以在启动时插入电源,然后一旦启动,拔掉笔记本电脑的电源插头。 笔记本电脑将保持快速,直到下次启动。

解答 :启动时插上电源插头。

请使用足够新的内核(v4.15 +),尝试使用med_power_with_dipm作为Crucial MX300。

LPM min_power对所有驱动程序都不适用,如果med_power_with_dipm适合你,我们应该使用新的怪癖让它在选择min_power时回退到med_power_with_dipm。

另外,请在Launchpad上提交一个错误,因此Ubuntu内核工程师可以解决该错误,或​​将问题提交到上游。