中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
楼主: 丑色死肥肥

[原创] 到底SSD给力不啊。求助

  [复制链接]
发表于 2010-11-17 12:30:15 | 显示全部楼层
Plutonium 发表于 2010-11-17 12:19
且不说SSD对游戏新能影响多达,关键是你为什么要组RAID呢??我很好奇……

Raid 可以把一个文件分成两份存在两块硬盘里,读的时候从两块硬盘同时读,速度理论上可以提高不少。
 楼主| 发表于 2010-11-17 12:53:54 | 显示全部楼层
SSD很给力。。如果组了RAID岂不是更给力?!
发表于 2010-11-17 13:30:47 | 显示全部楼层
回复 丑色死肥肥 的帖子

单纯的SSD不是特别给力,还是PCI-E的SSD比较给里,速度起码要在600左右的。
发表于 2010-11-17 13:38:52 | 显示全部楼层
回复 cycle6 的帖子

这个我当然知道了,可是你有几块硬盘可以组RAID呢?怎么组也是问题。两块硬盘组RAID0的话其实不算是真正的RAID,效果其实不会很明显,只会增加一般PC用户的维护时间……。如果有那么多钱买几块硬盘当然还不如投资SSD,甚至直接出手Server了……RAID本身就不是为人计算机服务的,他最主要的目的在于保护数据,同时降低MTTR,提高服务器的吞吐量……
发表于 2010-11-17 13:49:36 | 显示全部楼层
Plutonium 发表于 2010-11-17 13:38
回复 cycle6 的帖子

这个我当然知道了,可是你有几块硬盘可以组RAID呢?怎么组也是问题。两块硬盘组RAID0的 ...


No No,组Raid0是没有数据冗余的,从Raid1开始才有数据冗余保存。Raid0纯粹是为了提高I/O速度,而且他的读写速度在所有Raid里是最快的。而楼主说的就是用SSD组Raid,意思就是在SSD的基础上进一步提高读取速度。但是Raid0带来的风险就是数据完全损坏的可能性也是随着硬盘数的增加成倍增长。(SSD可是很容易坏的,组Raid0恐怕有风险)
其实他用Raid1也是可以的,因为ArmA的算法主要是需要提高硬盘读取速度而不是写入速度。Raid1的读取速度根Raid0差不多,理论上是跟硬盘数成正比,但是写入速度跟普通硬盘一样。

发表于 2010-11-17 14:09:25 | 显示全部楼层
本帖最后由 Plutonium 于 2010-11-17 14:10 编辑

回复 cycle6 的帖子

先不说RAID0不是真正的RAID这个问题。没有冗余是没错,但是他不是速度最快的,事实上速度快慢不可以这么笼统的讲,他和你读取的文件大小有关系。就大文件而言的话RAID3,4,5和6的速度都一样的,比其它RAID快,但是4,5和6会给小文件的读取速度有所提高,而3的话一旦读取小文件速度就和一块硬盘一样了。对于数据的保护机制就先不说了。

你说的RAID1的特点其实也有问题。RAID0和RAID1有很大的不一样,最简单的讲RAID1有数据冗余他把数据作了一个镜像,事实上他的数据冗余是最大的。其次RAID1的读写速度都回有提高,而且小文件的写比任何一个更高的RAID组合都高;读取的速度也很快,这个没有错。
 楼主| 发表于 2010-11-17 15:05:59 | 显示全部楼层
完全晕了。。太专业了。。我只是想找到方法能让我50V50进城镇能保证40+的FPS的方法。。。
发表于 2010-11-17 15:21:23 | 显示全部楼层
回复 Plutonium 的帖子

首先我不知道你的读写速度跟文件大小的关系到底从哪儿得来的,因为根据我的知识,读取大文件和多个小文件跟你的文件访问方式有关系,说白了是系统或程序的调用方式形成的影响,RAID到底在什么级别上修改了文件访问方式我没看到有相关的影响。但是我所了解的是,RAID3、4、5、6都是在文件分布保存的后面增加奇偶校验。说到底RAID3、4、5、6是为了在提高读取速度的同时,在校验速度上有所区别而已。
RAID0 和RAID1 自身不提供校验。
RAID0 是单纯的把整个儿文件分成多个段存在多个硬盘上。当然按照系统的设置,也可以把多个文件同时存在多个硬盘上,这样系统要么是同时读写一个文件的多个段,要么是同时读写多个文件,但是对于单一线程的程序来不存在同时读写多个文件的可能性的,因此效率最高的就是同时读写同一文件的多个段。
RAID1是把文件按镜像存储在多个硬盘上,所以读取的时候,根RAID0的区别是,不用考虑文件的读取方式问题,既可以从多个硬盘上同时读取同一文件的各个段,也可以同时在多个硬盘上读取多个文件,因此在读取效率上如果是多线程的系统会比RAID0来的更有效。但是多线程必定存在避免死锁的算法,不论是发现死锁,还是避免死锁都需要耗费一定效率。当然这是系统消耗的效率,跟硬盘无关。但是在写得时候,RAID1不能再多个硬盘上分别写多个文件或多个文件段,那样就破坏了多个文件镜像的一致性,因此同时在多个硬盘上写同一个文件,如果同时处理硬盘并行运算需要消耗一定效率,那么RAID1的写速度理论上根普通硬盘一样,实际上还略低。

RAID3、4、5、6的读写效率都比普通硬盘高,但是他们既不像RAID0那样无校验,又不像RAID1那样完全备份,而是通过校验码来检查数据错误。所不同的是他们校验数据的存储和校验方式。不考虑校验和线程,他们的读写效率应该跟RAID0相同,但是考虑到校验数据的影响,他们的读写速度其实比RAID0略慢。
发表于 2010-11-17 15:23:51 | 显示全部楼层
丑色死肥肥 发表于 2010-11-17 15:05
完全晕了。。太专业了。。我只是想找到方法能让我50V50进城镇能保证40+的FPS的方法。。。

你直接在官网发帖嘛,说50 VS 50, FPS 40+,what PC can meet this requirement?
 楼主| 发表于 2010-11-17 18:09:32 | 显示全部楼层
去发了。问SSD组RAID。但是他们说不怎么给力
发表于 2010-11-18 05:55:02 | 显示全部楼层
本帖最后由 Plutonium 于 2010-11-18 05:58 编辑

回复 cycle6 的帖子

其实你这么说可能是我没说清楚,小文件读写确切地说其实是“Small read/write”,大文件的读写是:“Large read/write”,如果你知道RAID的基本工作方式,这方面因该不难理解。如果你还对这方面有疑问可以参考一下计算机构架方面的书籍,ECE/EE/CS的学生因该都有,你要是不介意,我也可以推荐你一些。其次我原以为你对效验不感兴趣的说……从RAID1开始都有“效验”能力,或者更准确的讲是对错误(Failures)的容忍能力,1的方式Mirrored,2是Memory-style ECC,所谓ECC就是你说的“奇偶效验”,3是Bit-Interleaved parity,4是Block-Interleaved parity,5是Block-Interleaved Distributed Parity,6是Row-Diagonal Parity EVEN-ODD(这个比较有趣)。其实也就是这些不同的“Disk Failures tolerate”导致他们对数据读写性能的不一致。你要说RAID1对数据不“效验”其实也对,只是他的保证方式采取了直接备份的方式,这也导致1的最大不足就是“High check storage overhead”。

不可否认高阶的RAID的一个很大的目的就是为了提高服务器的Throughput,但是其实降低服务器的维护复杂程度也是非常重要的一方面,你要是知道各个RAID的机制就会发现当某一块硬盘出了问题以后,该怎么找到出问题的硬盘,怎么修复等等。

你对RAID0的理解基本问题不大,至于对RAID1的说法就有问题了,RAID1的写确实比更高阶的RAID组合更快一些,特别是Small writes,当两个硬盘的读写操作不是独立的时候,两块硬盘还是可以同时写一个文件的两个部分,当他们都有了那个文件的一半以后,写的过程就已经完成了,而这时候控制器要做的就是继续让两块硬盘进行交流,保持一致性,这个时候可以想象,在写小文件的时候,用户面对的Delay只是一个文件大小一半的写需要的时间,但是当出现大量写操作时这部分Delay就没办法被掩盖了;当然使用RAID1的很多情况下控制器会同意两块硬盘独立处理读操作,而这个情况下你说的对写数据性能降低的情况才出现。

至于你说的Deadlock的算法其实在Distributed System里面讲的比较多一些,虽然这个算法不是最好的,但是确实是现在唯一商业化了的……

RAID3、4、5、6的数据存放其实也是有差异的,原因在于他们的“效验”方式不一样。比如4和5,前面讲到4是Block-Interleaved parity采用一块Extra硬盘来存放所有效验信息,所以当有一个指令要求从多块银盘读写数据时就会同时产生多个对这块Extra硬盘的访问指令,显而易见这块Extra硬盘就会使整个系统的瓶颈。但是5采用的是Block-interleaved distributed parity所以他尽管也需要一快Extra硬盘,但是这块硬盘本质上和其他硬盘没有区别,因为效验信息都被均匀分布在这些硬盘中,其好处可以为Small read and write提供额外的带宽。但是也正如前面讲到,small write 最快的还是RAID1了。

另外如果你对RAID还有疑问可以看一下一本“Computer Architecture a quantitative approch”的第6章,3版和4版都还不错。如果你对RAID还有更多兴趣的话可以看看相关的文献,可以从RAID最早的那篇由Patterson, Gibson和Katz在1987年发表的“A case for Redundent arrays of inexpensive disks(RAID)”,不过我个人认为看一下那本书的第六章以及附录C就足够了。
发表于 2010-11-18 07:14:12 | 显示全部楼层
回复 Plutonium 的帖子

不,我觉得你掌握的内容跟我理解的有偏差。比如说校验,完全备份并不属于校验机制。因为即便是完全进行了备份,也不一定能检测出来到底哪个备份文件出错。其实硬盘数据存储本身就有校验机制。不论Raid0,Raid1,还是普通的硬盘存储都有校验。因此Raid1文件在读取得时候通过数据本身的独立的校验机制发现错误数据,然后从另一个硬盘中对比备份数据,但是这个校验不是Raid1提供的。Raid2往上则是不再提供完全备份而是通过Raid所提供的校验来确保文件完整性。

Raid1的写问题,你所说的两块硬盘分别写一个文件的两个部分,然后让两块硬盘再进行交流。从表面上看好像是提高了写的速度。其实完全没有,因为你在两块硬盘交流的时候,假设你的数据分成两半,A1和A2,写完A1和A2总共需要T时间,硬盘1上你写A1段,同时你在硬盘2上写A2段,需要T/2,然后接下来,你把硬盘的A1段复制到硬盘2,同时把硬盘2的A2段复制到硬盘1,如果这就是你所说的两个硬盘的交流,这还是需要T/2时间。相加结果就是T。
那么反过来说,如果你所指的的提高写速度意思是你写完硬盘1的A1和硬盘2的A2,就可以如此读取这段数据的话,别忘了你再读完后,还是要继续两个硬盘的交换互写,换句话说,你只是把读的顺序提前了T/2,却丝毫没有减少写所用的时间。
你说的书对这段怎么解释的我会去找找,不过从你所解释的部分其实根本不能提高Raid1的写速度。也没看到你说的写速度根文件大小的关联到底在哪里。

另外,DeadLock的概念你混淆了,他不是Distributed System才有的,任何多线程控制的程序或系统都有出线DeadLock的可能和问题。包括系统程序,应用程序,以及数据库访问等。

而且我学到的内容是,其实Raid2、3、4才是单独用硬盘专门存储校验数据,Raid5是把校验数据分布存储在所有硬盘里的,存储方式是交叉的,比如文件A的校验存在最后一块硬盘,文件B的校验就存在第一块硬盘,文件C的存在第二块,以此类推。

总之,我去找找你说的教材,如果找不到我就对比其他教材然后拿来再讨论。你最好也在翻翻你手头的东西,我觉得你的解释还是有问题。

PS:已经跑题了就再扯点题外的,兄弟在美国啊?啥地方高就啊?
发表于 2010-11-18 09:40:28 | 显示全部楼层
回复 cycle6 的帖子

没错,我就是说RAID1其实没有效验的……其实效验也只能说明数据是否有问题,没有办法保证数据正确的。所谓的对错误的忍受力只是说出多少次错误以内可以通过其它没有问题的硬盘数据把出问题的硬盘里的数据还原,而到底哪个地方出问题了还是要靠其它手段推测的,而且也无法避免,于是就会有一个有趣的问题,就是在检测的时候把没问题的那一块抽出来了,于是错误就变成了忍受能力+1个了,结果就……我之前说RAID6的检测方式很有趣,就是说他可以忍受2个硬盘出错,而其它的都只有1个。
至于RAID1写的问题,关键是你要知道计算机处理的问题又两种:一种是计算为主对存储设备访问较少,一种是以访问存储设备为主,计算较少的。Small Write常常出现在第一种种,而且用户所看到的Delay仅仅是你说T/2,而另外一部分T/2中用户已经保存好数据,继续其它计算工作了,也就是说这个时候他不需要访问硬盘了,所以这部分Delay就被掩盖了,而不是消除了。这也是为什么当出现大量的写操作时没有更好的性能表现的原因。
其实这种掩盖Delay而非消除Delay的思维方式在CPU的设计中也用得很多。比如现在的什么双核四进程,四核8进程什么的……最常见的就是你打开任务管理起看到OS背景中运行的那些进程,它们也要和你前台的程序一样的计算资源,但是你的前台程序并不会完全同时占用这些资源,于是这些程序其实就是在这些资源中转来转去,前台展示不用DRAM了,后台的用,前台的不用CPU了,后台的用等等,CPU没有提高速度,但是用户可见的Delay被掩盖了,表现就是程序似乎都变得更流畅。

Lock mechanism我知道他不是Distributed System才有的,我只是说其实他不是最好的算法,(事实上是比较差的……)但是确实现在应用最广的而已。

至于RAID3、4、5的说法,我没看出来我说的和你的理解有什么差别……

FYI:我现在是在美国,但是还没有工作,现在在西海岸上学中……其实很有趣的情况是高中就看到ARMA这游戏很有吸引力,结果完全就不敢花时间玩,到了大学,哈哈有时间了,结果发现自己的机器完全跑不起这种游戏,怎么办?等到了研究生自己有钱了再玩么……结果发现研究生钱是有了,但是时间又没了,反正人生各种无奈,好在现在学的东西还不算无聊,就当实验室的工作是娱乐了,哈哈……
发表于 2010-11-18 15:14:36 | 显示全部楼层
回复 Plutonium 的帖子

{:4_106:}唉,其实Lock mechanism没有什么最好最坏,他不是一种算法,它是很多算法的集合,他是处理多线程或多进程同时访问多个资源的处理机制。凡是多线程可能访问相同资源,而这些资源又不能同时被两个以上线程访问的,都必须要用Lock mechanism。而在有Lcok mechanism的程序里,就有出现Deadlock的可能。
Deadlock的解决算法大体上分为:Prevention,Avoidance,Detection几种,每种处理方式都各有优缺点。处理不同的Deadlock,进行合理的资源分配的方式才形成了一些独立的算法,比如Banker's Algorithm就是其中的一种。涉及到具体的算法才有优劣选择之分,就好像说sorting algorithm,哪有说sorting algorithm好或不好的,它不是一个算法。只有涉及到具体的,Qicksort, 或者Bubble sort,才能有好坏之分。

PS:呵呵,遇到同行就容易越跑越远,好在咱都是对事不对人滴。不过就是对不住楼主了。其实论坛上还有好多程序员,XP老大就是一个。你有兴趣和时间的话也可以试试搞搞ArmA的开发啊。你作研究生研究哪个方面啊?
发表于 2010-11-18 15:28:36 | 显示全部楼层
有没有内存扩展设备呢????
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-5-17 19:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表