nDiki : DMA

DMA (Direct Memory Access)

デバイスとメモリ間の転送を CPU を介さずに直接行う転送方式。 一般に PMA より速い。

関連情報

2004年2月12日 (木)

[ Debian ] PIO -> DMA

この間設定したオフィスのメールサーバで「メールを残す」が有効にならないというので調査。 fetchmail で nokeep すると自分の環境では問題なくサーバに残るな。 たまに mail が取れなくなるという連絡もあるし、vpopmail がよろしくない状態なのだろうか。

そういえばソフトウェアIDE RAIDを組んでいるこのマシンのディスク書き込みが遅くて以前から気になっていたところ、昨日やまだ君から「PIOになっているんじゃない」というアドバイスをもらった。 そういえばチェックしていなかったな。

hdparm

apt-get hdparm する(つい hdparam と間違える)。 で、チェック。

 # hdparm -t -d /dev/hda

 /dev/hda:
  using_dma    =  0 (off)
  Timing buffered disk reads:  64 MB in 14.43 seconds =  4.44 MB/sec

 # hdparm -t -d /dev/hdc

 /dev/hdc:
  using_dma    =  0 (off)
  Timing buffered disk reads:  64 MB in 14.43 seconds =  4.44 MB/sec

dma on にする。

 # hdparm -t -d1 /dev/hda

 /dev/hda:
  setting using_dma to 1 (on)
  using_dma    =  1 (on)
  Timing buffered disk reads:  64 MB in  2.28 seconds = 28.07 MB/sec

 # hdparm -t -d1 /dev/hdc

 /dev/hdc:
  setting using_dma to 1 (on)
  using_dma    =  1 (on)
  Timing buffered disk reads:  64 MB in  2.26 seconds = 28.32 MB/sec

ビンゴ。

起動設定

woodyhdparm(4.5-1.2)だと init.d スクリプトが無い。 sidの(5.4.10)から、/etc/init.d/hdparm と /etc/hdparm.conf をもってくる。 hdparm.conf の /dev/hda、/dev/hdc ブロックでそれぞれ dma = on しておく。

update-rc.d hdparm defaults

して、設定おしまい。(Ultra* については今はまぁいいや)。

スポンサード リンク
[ 2月12日全て ]

2006年3月10日 (金)

Linux kernel を 2.6.15 にしたらハードディスクへのアクセスが遅くなった理由

2週間ほど前に ThinkPad X31 (2672-PHJ) の Linux kernel を 2.4.27 から 2.6.15 にしたのだが、その頃からか何となく動作がもったりするようになった。 コマンドを実行した際のレスポンスが遅くなったし、amaroK での音楽再生時にもちょっと負荷が上がるとすぐ音が切れるようになってしまった。

まさか kernel の性能が落ちたとは考えにくいので、設定のせいであろう。 感じからして、HDD まわりのようだ。

もしかして DMA?

 #hdparm -t -d /dev/hda

 /dev/hda:
  using_dma    =  0 (off)
  Timing buffered disk reads:    8 MB in  3.10 seconds =   2.58 MB/sec

ビンゴ!

 #hdparm -t -d1 /dev/hda

 /dev/hda:
  setting using_dma to 1 (on)
  HDIO_SET_DMA failed: Operation not permitted
  using_dma    =  0 (off)
  Timing buffered disk reads:    8 MB in  3.05 seconds =   2.62 MB/sec

おや?

[Device Drivers] ---> [ATA/ATAPI/MFM/RLL support] ---> [Intel PIIXn chipsets support] (CONFIG_BLK_DEV_PIIX) がモジュールになっていたのが問題のようだ。

組み込みにして Debian kernel パッケージ構築しなおしてインストール再起動

 hdparm -t -d /dev/hda

 /dev/hda:
  using_dma    =  1 (on)
  Timing buffered disk reads:   84 MB in  3.05 seconds =  27.56 MB/sec

なおった。


[ hdparm ]

[ 3月10日全て ]

2006年7月2日 (日)

HDD が不調で DMA の動作がなんか変らしい

HDD の転送速度が遅いという問題だが、hdparm -t してみると DMA は有効になっているのだがチェックするたびに、速度に変動があるようだ。 遅い時は 1MB/sec を下回っている。

ブート時のログをみると

 hda: dma_timer_expiry: dma status == 0x21
 hda: DMA timeout error
 hda: DMA timeout error: status = 0x58 { DriveReady SeekComplete DataRequest }
 ide: failed opcode was: unknown

と出ている。うーん、やな感じ。

[ 7月2日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.04751s / load averages: 0.13, 0.17, 0.16
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker