QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1998|回复: 25

每次启动的时候都看到“DMA没有打开会减慢速度”之类的话??

[复制链接]
发表于 2005-9-13 14:24:06 | 显示全部楼层 |阅读模式
就是有一行英文,大意是硬盘的DMA没有打开,可能大大减慢速度,啥意思?

不管它吗?还是打开硬盘DMA?怎么打开阿??谢谢
发表于 2005-9-13 15:51:07 | 显示全部楼层
用hdparm 来设,具体的搜索一下坛子。
回复

使用道具 举报

 楼主| 发表于 2005-9-13 16:43:14 | 显示全部楼层
好像说如果我的硬盘不支持DMA的话会伤害硬盘??我怎么知道它支持不支持呢??

还有,请问大家打开了DMA后觉得快了很多吗
回复

使用道具 举报

发表于 2005-9-13 16:50:10 | 显示全部楼层
DMA

这么说吧

如果你用dos环境安装windowsxp

之前如果系统没有运行smartdrv.exe这个程序

就会发现系统非常缓慢

为什么这样呐?

我先发了这个帖子,然后继续说,骗一点帖数
回复

使用道具 举报

 楼主| 发表于 2005-9-13 16:52:26 | 显示全部楼层
楼上的仿佛要长篇大论了,洗耳恭听ing
回复

使用道具 举报

发表于 2005-9-13 16:53:34 | 显示全部楼层
因为系统没有打开smartdrv.exe的缓存

基本上我这样讲,你就懂了,每一次从光驱读一点点,马上就写硬盘,当然速度就慢了

如果运行了smartdrv.exe,那么系统就会一次从光驱读很多,放在缓存里面,然后等到足够多了以后再一次性的写到硬盘,这样速度当然就快啦,因为减少了读写的次数嘛

再举一个例子,自然而然的我要再骗一点帖数
回复

使用道具 举报

发表于 2005-9-13 16:56:37 | 显示全部楼层
我们以前用dos的时候都发现有xcopy.exe这个命令,对不对?

其实用copy这个内部命令还不是一样的拷,那位什么还要有一个xcopy.exe呢?

原因很简单嘛

观察一下两个命令分别拷贝大量文件的过程就发现了,copy读一个文件就写一个文件,遇到比较大的文件就读写很多次才搞定

xcopy呢,读入很多文件,达到缓存的量再写入硬盘,遇到大文件,也可以明显减少读写次数,这样速度就提高了。

下面要讲DMA了
回复

使用道具 举报

发表于 2005-9-13 16:59:39 | 显示全部楼层
DMA是Direct Memory Access的缩写

这个特性通过让硬盘、光驱直接访问存储器来最大限度提升系统性能

因为现在个人计算机的最大瓶颈就是在磁盘的输入输出上

DMA可使PC机直接访问硬盘驱动器上的数据

但并不占用太多的CPU时间(与PIO模式相比)

从而使你的CPU可执行其它任务

当然要使用DMA模式

你的CDROM及硬盘要支持相应的功能才可以

要是你的CDROM和硬盘都太老

可能就不能了
回复

使用道具 举报

发表于 2005-9-13 17:01:51 | 显示全部楼层
所以说缓存和DMA技术是从两个不同的渠道提高系统读取性能

软的,我们肚量大一点,缓存技术的采用让系统读写时间减少

硬的,我们直接一点,不要读写一个屁东西都要CPU来管,直接搞就是了

该硬的时候硬,该软的时候软

是男人就应该这样啊

下面说一下linux的缓存和DMA
回复

使用道具 举报

发表于 2005-9-13 17:04:26 | 显示全部楼层
在windows下面的话,如果是98,需要自己手动打开DMA,但是开不开,觉得区别不大

没有记错的话具体做法如下

我的电脑->控制面板->系统

设备管理器里面有硬盘控制器和CDROM项

选中硬盘或者光驱

单击“属性”

接着选“设置”并选中DMA复选框

重新开机后即可



2000和xp稍微智能一点,自动打开了DMA


哦,现在才开始说Linux
回复

使用道具 举报

发表于 2005-9-13 17:09:09 | 显示全部楼层
就是haparm这个命令啦,首先,这个命令不是每个发行版都默认安装了的

让我们来看一看版主信息
[code:1]
hdparm - get/set hard disk parameters - version v6.1

Usage:  hdparm  [options] [device] ..

Options:
-a   get/set fs readahead
-A   set drive read-lookahead flag (0/1)
-b   get/set bus state (0 == off, 1 == on, 2 == tristate)
-B   set Advanced Power Management setting (1-255)
-c   get/set IDE 32-bit IO setting
-C   check IDE power mode status
-d   get/set using_dma flag
--direct  use O_DIRECT to bypass page cache for timings
-D   enable/disable drive defect management
-E   set cd-rom drive speed
-f   flush buffer cache for device on exit
-g   display drive geometry
-h   display terse usage information
-i   display drive identification
-I   detailed/current information directly from drive
--Istdin  reads identify data from stdin as ASCII hex
--Istdout writes identify data to stdout as ASCII hex
-k   get/set keep_settings_over_reset flag (0/1)
-K   set drive keep_features_over_reset flag (0/1)
-L   set drive doorlock (0/1) (removable harddisks only)
-M   get/set acoustic management (0-254, 128: quiet, 254: fast) (EXPERIMENTAL)
-m   get/set multiple sector count
-n   get/set ignore-write-errors flag (0/1)
-p   set PIO mode on IDE interface chipset (0,1,2,3,4,...)
-P   set drive prefetch count
-q   change next setting quietly
-Q   get/set DMA tagged-queuing depth (if supported)
-r   get/set device  readonly flag (DANGEROUS to set)
-R   register an IDE interface (DANGEROUS)
-S   set standby (spindown) timeout
-t   perform device read timings
-T   perform cache read timings
-u   get/set unmaskirq flag (0/1)
-U   un-register an IDE interface (DANGEROUS)
-v   defaults; same as -mcudkrag for IDE drives
-V   display program version and exit immediately
-w   perform device reset (DANGEROUS)
-W   set drive write-caching flag (0/1) (DANGEROUS)
-x   tristate device for hotswap (0/1) (DANGEROUS)
-X   set IDE xfer mode (DANGEROUS)
-y   put IDE drive in standby mode
-Y   put IDE drive to sleep
-Z   disable Seagate auto-powersaving mode
-z   re-read partition table

ATA Security Options:
--security-freeze              Freeze security settings (until next reset)
--security-unlock PWD          Unlock drive, using password PWD (DANGEROUS)
--security-set-pass PWD        Lock drive, using password PWD (DANGEROUS)
--security-disable PWD         Disable drive locking, using password PWD (DANGEROUS)
--security-mode MODE           Specify user/master password and high/maximum security
        u       user password, high security
        U       user password, maximum security
        m       master password, high security
        M       master password, maximum security
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-9-13 17:11:09 | 显示全部楼层
这个帖子估计要彪精了………………
回复

使用道具 举报

发表于 2005-9-13 17:11:39 | 显示全部楼层
我们先来看看简单的命令使用:

hdparm -t /dev/hda 可以测试硬盘的读写速度。

hdparm -i /dev/hda 可以看到硬盘的一些参数。

hdparm /dev/hda 可以看到硬盘的一些设置。

hdparm -I /dev/hda 可以看到硬盘的一些参数(比-i更全一些)

下面是我的硬盘的配置:

[code:1]
# hdparm /dev/hda

/dev/hda:
multcount    = 16 (on)
IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  1 (on)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    =  8 (on)
geometry     = 2480/255/63, sectors = 39851760, start = 0
[/code:1]
回复

使用道具 举报

发表于 2005-9-13 17:14:18 | 显示全部楼层
multicount已经打开成16

io_support还是0

umaskingirq没有打开

DMA打开了

再看一下dma模式:

[code:1]

# hdparm -i /dev/hda

/dev/hda:

Model=Maxtor 5T020H2, FwRev=TAH71DP0, SerialNo=T2JACKLC
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39851760
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio1 pio2 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 *udma4 udma5
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 0:

* signifies the current active mode

[/code:1]
回复

使用道具 举报

发表于 2005-9-13 17:17:01 | 显示全部楼层
在给出的信息里面写的是udma模式是udma4,我也没有研究这个是什么意思,我们先测试一下现在硬盘读写的速度吧:

[code:1]
# hdparm -t /dev/hda

/dev/hda:
Timing buffered disk reads:  108 MB in  3.00 seconds =  36.00 MB/sec

[/code:1]


下面我首先把系统的硬盘的16位格式转换为32位模式(32-bit mode w/sync)。这玩意儿控制数据如何从pci总线传递到控制器。

[code:1]
# hdparm -c3 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 3
IO_support   =  3 (32-bit w/sync)
[/code:1]

再测试一下硬盘的速度:
[code:1]
# hdparm -t /dev/hda

/dev/hda:
Timing buffered disk reads:  110 MB in  3.02 seconds =  36.42 MB/sec
[/code:1]

可以看到速度从每秒36.00升到了36.42

不错没,继续优化,我必须再骗一点帖数了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-17 19:30 , Processed in 0.043958 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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