AHCI对性能的影响

AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,是一种相比老旧的“IDE虚拟模式”更适合新一代SATA存储设备通信的协议(如果主板BIOS不开启AHCI,那么SATA设备其实是工作在IDE虚拟模式下的,南桥会把SATA设备认为是老旧的IDE设备,占用主板IRQ 14/15),通过它可激活设备的高级SATA功能如原生指令队列和热插拔,支持64bit LBA寻址(大容量机械盘会需要),完全抛弃老一套的“主/从”设备概念,高级电源管理(HIPM/DIPM),端口复用等等。
       其中对SSD性能有影响的就是NCQ(Native Command Queuing,原生指令队列)。目前主流的SSD产品都已支持NCQ,NCQ主要是为了在高并发多线程读写的情况下重新排列读写指令顺序,尽量提供更高的并行读写可能性,从而掩盖多线程并发读写延迟而产生的。在SSD支持的情况下,开启AHCI模式可以使多线程、深并发队列的读写请求,通过NCQ重新排列读写指令操作顺序来让SSD按NCQ已重排的串行数据流做并行读写操作,这样便可以大大的提高随机读写IOPS性能。
       技术上说,Trim指令也支持IDE模式,不过在IDE模式下执行Trim时,他会禁用系统的读写指令。因此Trim的时候可能造成系统出现无响应,而具体时间取决于Trim的范围,一般在几秒到几分钟,非常影响用户体验。

LPM节能技术的作用

LPM,全称Link Power Management,是SATA接口物理层上的一个功能,它能够将主机(Host)和存储设备(Device)的链接分成3种形态:Active、Partial和Slumber形态,目的是降低物理层总线传输速度,这样即可有省电的功效。由主机(Host)发出改变形态请求的我们叫做HIPM(Host-Initiated LPM, HIPM),而直接由设备(Device)发出形态请求的叫(Device-Initiated LPM,DIPM) 
       Intel Rapid Storage Technology驱动支持LPM功能来降低高速高容量存储设备的耗电。当然,LPM功能首先需要SATA硬盘支持这个功能。从ICH6M开始,笔记本平台安装完Intel Matrix Storage Manager驱动(RST 驱动前身)后就默认支持LPM。台式机平台从ICH9R开始支持(需要安装Intel Matrix Storage Manager 7.5版本及更新的驱动),但是默认并没开启。 
       从Intel Rapid Storage Technology 10.0版驱动开始,默认安装完驱动后是开启LPM的(包括所有笔记本和台式机平台)。 
所以造成高速SSD使用中卡顿的问题很可能是Intel Rapid Storage Technology驱动的问题导致(还有部分可能是主机板不兼容,或者设置问题导致),既然这个技术是为了节能而开启的,为何会带来卡顿问题呢?目前主流的SSD可都是已支持LPM技术的。 
       本站neeyuese猜想带来卡顿的原因主要有下面几个:
       1.主机发送HIPM形态改变指令,而SSD设备标准不同,不能很好的支持,出现兼容问题导致卡顿;
       2.主机发送HIPM形态改变指令太频繁,导致SSD设备不能及时反映,出现不兼容而卡顿;
       3.LPM开启后造成SATA总线传输延迟增加,导致高速SSD的传输受到阻塞而卡顿;
       4.SSD内部的DIPM和主机请求的HIPM发生冲突导致卡顿。 
       不管如何,目前解决卡顿的方法就是完全禁用LPM,虽这样会带来耗电的增加,但总比卡顿来得舒服

SSD性能(跑分)下降的原因

对于接触SSD不久的人,经常都会产生一种疑问,那就是当SSD使用过一段时间后,再运行测试软件,得到的成绩几乎都肯定要比刚买回来时差,而且时间越长,差距就越明显,这是为什么呢?
       大家从之前的内容已经了解SSD的工作原理及特点,相比传统HDD,SSD最大的差异就在于其使用的NAND闪存无法进行覆盖操作,在已经被写入数据的位置,要重复写入的话,SSD就必须先对该位置进行擦除的操作,而且擦除操作的最小单位比写入操作的要大。说到这里,相信大家都已发觉原因所在了。
       SSD写入数据后,相同的地方未进行擦除是无法再写入数据的,当有需要写入新数据时,就只能写入到‘空闲’的地方,但若‘空闲’的地方不足以存放需要写入的数据,SSD便要进行GC,而GC操作是肯定要消耗占用一部分的SSD性能的,因此此时进行测试,所得的成绩自然就比刚买回来的时候要差,那时因为没写入过数据,全盘空间都是‘空闲’的,没需要进行GC,SSD自然可以用全部性能来进行测试。
            
       上面是一张本站neeyuese所画关于SSD三种状态的图片,大家看过后应该更能理解SSD下降的性能都跑到什么地方去了。

SSD为何必须分区对齐

通过前面SSD相关知识的介绍,大家应该已经知道,NAND颗粒的最小写入单位是页,而一般每个页的大小是4KB。在HDD时代,分区起始扇区的定义在第63个扇区,也就是31.5KB的位置,这里各位应该会发现问题了,31.5KB并不是4KB的整数倍,若继续使用这个分区方式,势必导致以后每写入一个页(4KB)的数据,都必须要横跨写入到2个页内,这样不单写入时间增加一倍,WA同样也增加了一倍(写一页实际变成写二页)。因此不管从任何方面来说,对SSD都不是一件好事,既影响性能表现(最显著的就是测试成绩低下),也影响SSD的寿命。
            
       如图上所示: 图中SSD出现分区没对齐问题,读写正好在2个16KB边界,所以需要做2次读-改-写操作,那么我们说这时候的操作所需时间就 是原来的2倍。如果系统请求写入4KB,那么发生这种情况的概率就是25%(图中第一个4KB在边界,后面3个在16KB内,而第5个又到下个16KB边 界了),性能为原本的80%。如果把写入请求提升到32KB的话,发生的概率就是8/9了,随着请求容量的增大,差距就会缩小。所以对持续速度来说,分区不对齐并不会影响很大。

IOPS数值的意义

IOPS,中文为每秒操作数,代表一个在定义的数据传输尺寸大小下每秒能够操作这个尺寸数据的次数。数值越高代表对磁盘IO响应能力越好,可以提高系统IO的响应能力,大大提高用户体验。在一些高密度IO场合(大多数是企业级应用),IOPS是关键性能参数。但对于一般家庭消费者而言,10000的IOPS和100000的IOPS,并无多大差别,因为家用环境上,无法用到这么高的IOPS性能。

SSD常见问题的技术分析的更多相关文章

  1. [转帖]SSD和内存数据库技术

    SSD和内存数据库技术 自己的理解还是不是很对 SSD 提升的是 随机读 并没有对顺序写有多大的提升, 因为数据库采用的是redo的模式. 理论上写入 时是顺序写 所以 写并发的提升不会很大 但是会很 ...

  2. 蓝牙协议分析(7)_BLE连接有关的技术分析

    转自:http://www.wowotech.net/bluetooth/ble_connection.html#comments 1. 前言 了解蓝牙的人都知道,在经典蓝牙中,保持连接(Connec ...

  3. WaterfallTree(瀑布树) 详细技术分析系列

    前言 WaterfallTree(瀑布树) 是最强纯C#开源NoSQL和虚拟文件系统-STSdb专有的(版权所有/专利)算法/存储结构. 参考 关于STSdb,我之前写过几篇文章,譬如: STSdb, ...

  4. iOS直播的技术分析与实现

    HTTP Live Streaming直播(iOS直播)技术分析与实现 发布于:2014-05-28 13:30阅读数:12004 HTTP Live Streaming直播(iOS直播)技术分析与实 ...

  5. 横向技术分析C#、C++和Java优劣

    转自横向技术分析C#.C++和Java优劣 C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍.抛却Microsoft与Sun之间的恩怨与口角,客观地从技术上讲,C#与Java都是对传统 ...

  6. tolua++实现lua层调用c++技术分析

    tolua++技术分析 cocos2dx+lua 前言 一直都使用 cocos2dx + lua 进行游戏开发,用 Lua 开发可以专注于游戏逻辑的实现,另外一方面可以实现热更新:而且 lua 是一个 ...

  7. 美链BEC合约漏洞技术分析

    这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈.这篇文章就来分析下BEC智能合约的漏洞 漏洞攻击交易 我们先来还原下攻击交易,这个交易可以在这个链接查询到. 我截图给大家 ...

  8. NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案

    原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决 ...

  9. 包建强的培训课程(3):App竞品技术分析

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

随机推荐

  1. 套接字编程(VC_Win32)

    简介(源于维基) Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BSD Unix操作系统(于1983发布)的一套应用程序接口.然而,由于AT&T的专利保护着UNIX,所以 ...

  2. VS的Release模式配置技巧

    环境:如果要将bin\release目录作为我们产品的发布目录或者产品来源目录,那么release目录中就只能有产品需要用到的东西,但是以VS默认的配置编译的话会生成比较讨厌的.pdb,.vshost ...

  3. Java并发编程实践(读书笔记) 任务执行(未完)

    任务的定义 大多数并发程序都是围绕任务进行管理的.任务就是抽象和离散的工作单元.   任务的执行策略 1.顺序的执行任务 这种策略的特点是一般只有按顺序处理到来的任务.一次只能处理一个任务,后来其它任 ...

  4. Linux学习之scp命令

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度.当你服务器 ...

  5. OpenCV学习 1:OpenCV安装与第一个图像显示程序

    原创作品,转载请注明出处 为了提升逼格,决定学下OpenCV,想想如果可以做人脸识别,定点降落,让飞机跟着自己飞..想想都有点小激动.这只是想的,能不能学会还不知道..哈..      1:先下载:h ...

  6. Linux 安装xtrabackup的依赖问题

    问题: 尝试安装xtrabackup rpm -ivh percona-xtrabackup-2.2.11-1.el7.x86_64.rpm 报错 perl(DBD::mysql) 被 percona ...

  7. SQL Server 输出受影响的行

    前期准备: create table Nums(X int); create table T(X int); go 目的:把对表Nums的insert | delete | update 反映到T表中 ...

  8. ReentrantLock(重入锁)以及公平性

    ReentrantLock(重入锁)以及公平性 标签(空格分隔): java NIO 如果在绝对时间上,先对锁进行获取的请求一定被先满足,那么这个锁是公平的,反之,是不公平的,也就是说等待时间最长的线 ...

  9. 使用C#开发Metro 风格应用的路线图 -- 触屏操作

    原文 http://www.cnblogs.com/icuit/archive/2012/05/01/2478312.html win8支持多点触摸技术,而我们在屏幕上所做的各种操作,也最终转换为输入 ...

  10. Unix/Linux环境C编程入门教程(15) BT5开发环境搭建

    1. Backtrack 是处于世界领先地位的渗透测试和信息安全审计发行版本.有着上百种预先安装好的工具软件,并确定能完美运行,Backtrack5 提供了一个强大的渗透测试平台--从Web hack ...