编辑:一些额外的信息:

编辑:一些额外的信息:

自从我买了固态硬盘 (Crucial M4 - 256gb) 后,我就遇到了一个问题,就是每当它处理小文件时,写入速度就会像在 486 上运行 Windows 7 一样慢。我设法通过安装英特尔快速存储技术驱动程序/服务在 Windows 7 中“修复”了这个问题。

但是,在 Linux(运行 Ubuntu 13.04)中似乎没有适用于此的驱动程序。我尝试了很多不同的解决方案,但到目前为止似乎都没有奏效。

我的 SSD 分区为单个 EXT4 分区,挂载为 /。我有一个单独的 2TB 硬盘,挂载在 /home 上

以下是我获取的有关块大小的一些信息:

# sudo blockdev --getbsz /dev/sda
> 4096

# sudo hdparm -I /dev/sda | grep -i physical
> Physical Sector size: 512 bytes

我的 SSD 的 fstab 条目如下所示:

UUID=c954288b-e1bd-4d3b-93ab-6a688210d070 /               ext4    errors=remount-ro,relatime,barrier=0,noatime,nodiratime,discard,commit=120  0       1

从选项中可以看出,我尝试了很多方法,但似乎都没有奏效。举个例子:使用“apt-get install vim”安装 ViM 花了 2 分钟多。

完整的 apt-get dist-upgrade 耗时超过 4 个半小时。我一直在普通硬盘 (5200 rpm) 上运行 Ubuntu,速度比这快得多。

根据 parted,我的分区已正确对齐。我使用以下命令进行了检查:

# sudo parted /dev/sda
<parted> align-check opt
partition: 1

> aligned 1

此外,每当 SSD “忙” 时运行 iotop 时,我看到 jbd2 不停地消耗大约 99% 到 100% 的时间。

如果有人能阐明这个问题,那就太棒了!

编辑:一些额外的信息:

运行 hdparm -t /dev/sda 得到以下输出(对我来说看起来完全没问题)

Timing buffered disk reads: 680 MB in  3.01 seconds = 226.16 MB/sec

空闲时iotop输出:

TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                                               
 2346 be/4 harold      0.00 B/s   31.04 K/s  0.00 %  0.00 % chrome
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    7 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u:0H]

有时在运行应用程序或其他繁重工作的安装时,此进程“jbd2”会占用所有资源,而实际运行的应用程序(例如 mysqld 更新一些数据库相关的东西或 apt-get 安装或更新软件,保持在 3~4% 左右)

奇怪的是,有时它工作得很好(我曾尝试重现该问题以在此处发布结果,但显然它是随机发生的)。我将在下面用再次出错时的结果更新 iotop 的输出。

我感觉我的电脑现在正在捉弄我 :(

编辑2:忘记添加一些额外内容(感谢 Craig Watson)

我的 /etc/rc.local 文件的内容如下:

echo deadline > /sys/block/sda/queue/scheduler
fstrim -v /
exit 0

在 /etc/default/grub 中,我得到:

GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline"

第一次尝试调度程序后,我还添加了 fstrim 部分,因为仅使用调度程序仍然没有获得任何好的结果。

提前致谢。

哈罗德。

答案1

尝试更改你的 I/O 调度程序:

sudo echo deadline > /sys/block/sda/queue/scheduler

然后将其添加到 Grub 默认值,以便它在启动时加载:

sudo nano /etc/default/grub

改成GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=deadline"

然后运行:sudo update-grub2

还要检查您的 RAM 使用情况 - 您可能正在交换到 SSD,这(从长远来看)可能会产生不良影响。如果您有足够的 RAM,您可以将 swappiness 设置为零,这样除非您的 RAM 完全用完,否则不会使用 RAM:

sudo echo 0 > /proc/sys/vm/swappiness

参考:http://apcmag.com/how-to-maximise-ssd-performance-with-linux.htm

相关内容