コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2006年5月17日 >>> 2006年5月4日
link もっと後

2006年5月17日

研究室のゼミの後に、明日のシス情セミナーの発表練習を行いました。ドコモへ出張したとき、発表会で使った資料をかなり流用したので、それなりにまとまっております。勢いでそのネタを研究会に発表することになりました。う、頑張らねば。

研究室にあるマシン(IDE HDD 2台)でRAID 0を構成して測ったら、なんと書き込み64MB/s〜72MB/sという脅威の性能を発揮しております。
我が家のサーバの場合はUSB接続だから遅いのと、妙にCPUを食うのが気になるけど、廉価RAIDだしこんなもんかな?次回作では複数のUSBカードを使うことや、外付けSATA接続などが良さそうですね。

Xenepicは昨日の発見した引数のままで今日もログイン可能なようです。HanGameアカウントのパスワードに関係の無い数値なので、この数字が漏れたら一巻の終わりじゃね??うへーうへーうへー…。

榮樂氏に「benchってナニ?」って突っ込まれたので、補足。benchはwrite速度を測るプログラムです。Linux 2.6専用と書いてあるのは、2.4系のDirect I/O(O_DIRECT)のアライメント制限を考えて書いていないからです。
一応、手元のLinux 2.4で試したら ext2はOKなのにext3でコケるからおかしいと思ったら、どこかのMLでカーネルのバグなんじゃね?という記述が見受けられました。

ホントかいなと思ってカーネルのコード見たら、fs/ext3/inode.cではstruct address_space_operationsのdirect_IOメンバに値を入れないため、O_DIRECTを指定して読み書きしようとした時点で失敗しEINVALが返ります。
バグというより、元々ext3はO_DIRECT使っちゃ駄目みたい…。なぜかはわかりませんけど。

benchのソースコードを下に貼っておきました。ヘッダや、エラー処理は省略しております。

書き込み速度計測bench.cpp for Linux 2.6

int main(int argc, char *argv[])
{
  int fd;
  size_t size, bufsize, wsize, pos;
  unsigned char *lpalignbuf;
  struct timeval tv_start, tv_end, tv_past;
  char *lpc;
  size_t i;

  if (argc < 4) {
    printf("usage: \nbench filename size bufsize\n");
    return 0;
  }
  
  //サイズを得る
  size = strtol(argv[2], &lpc, 10);
  bufsize = strtol(argv[3], &lpc, 10);

  //Direct I/Oモードでファイルを開く
  fd = open(argv[1], O_RDWR | O_DIRECT);
  lseek(fd, 0, SEEK_CUR);

  //アラインメントをそろえたバッファを生成、乱数で埋める
  posix_memalign((void **)&lpalignbuf, 512, bufsize);
  for (i = 0; i < bufsize; i++)
    lpalignbuf[i] = rand() % 256;
  
  //測定を開始する
  gettimeofday(&tv_start, NULL);
  //乱数を書き込む
  for (pos = 0; pos < size; ) {
    //書き込むサイズ
    if (size - pos < bufsize)
      wsize = size - pos;
    else
      wsize = bufsize;

    //書き込む
    write(fd, lpalignbuf, wsize);
    pos += wsize;
  }
  free(lpalignbuf);
  close(fd);

  //測定を終了する
  gettimeofday(&tv_end, NULL);
  tv_past.tv_sec = tv_end.tv_sec - tv_start.tv_sec;
  tv_past.tv_usec = tv_end.tv_usec - tv_start.tv_usec;
  while (tv_past.tv_usec < 0) {
    tv_past.tv_usec += 1000000;
    tv_past.tv_sec -= 1;
  }

  //結果表示する
  printf("time: %13d.%6d[sec]\n"
         "speed: %f[MB/s]\n", 
         tv_past.tv_sec, tv_past.tv_usec, 
         (double)size * 1000000 / (tv_past.tv_sec * 1000000 + 
         tv_past.tv_usec) / 1000000);

  return 0;
}
編集者:すずき(2009/01/24 16:20)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月16日

5/9のスクリプトをシェルスクリプトにして、検索結果リストのムービーを保存できるようにしました。その際再生ページのタイトルをファイル名に使います。ファイル名がIDだとまるで意味がわからなくなるので。
落とした .flvファイルのプレーヤは Media Player Classicとffdshowのコンビが良いです。拡大縮小も、シークも自由自在です。たまに再生開始時に数秒固まりますけど、落ちたりはしないようです。

Xenepic online(運営はHanGame)というゲームを始めてみたのですが、Ragnarok Onlineのパクリというか…。まあそのおかげで取っ付きやすいですけどね。ただ起動しただけではだめで、IEでいちいちHanGameにログインしないと遊べないようになっています。非常に面倒くさいです。

どうやって普通の起動と区別しているのか、下のプログラムをXenepicと入れ替えて引数を調べたら、変な数値とHangame IDを指定して起動していました。ちなみにその引数を渡すだけで普通にログインできます。作りがいい加減ですね…。
数値はパスワードのハッシュかと思ったのですが、パスワードを変えても不変でした。日付とか時間か?

引数表示

#include <stdio.h>
int main(int argc, char *argv[])
{
  for (int i = 0; i < argc && argv[i] != NULL; i++) {
    printf("%d: %s\n", i, argv[i]);
  }
  getchar();
}
編集者:すずき(2006/11/27 23:18)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月15日

昨日作成したRAID0+1の書き込み性能を測定しました。
やはり3台もつないでミラーリングするとかなり遅いです。

USB HDD 3台によるRAID0+1の性能
$ ./bench ./a 102400000 262144
loop: 391
time: 4.812052[sec]
speed: 21.279903[MB/s]

速度の見積もりはUSBバス帯域を480Mbpsの7割とし、データがストライピングで完全に三等分になったとして、
336/3*2=224Mbps=28MB/sです。
見積もりと実測値がかなり離れているので他にオーバヘッドがあるのかもしれませんが、不正確を承知でもう2台追加した場合を計算すると、
336/5*3=201.6Mbps=25.2MB/sです。
このようにバスに余裕がない状態でミラーリングすると、ディスクを増やしただけ書き込み速度が下がります。

ちなみに RAID0のみならディスクを増やしても速度が落ちる心配はありません。バスの飽和まで速度が上がるはずです。まあ、あまり増やしても分散書き込みの処理のオーバヘッドが増えるだけですけどね…。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月14日

外付けUSB HDDでSoftware RAIDを構築する全ての方へ。
※私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。

LinuxではUSB Mass Storage(USB HDDやUSBフラッシュメモリ)をSCSIエミュレーションによりあたかもSCSIデバイス(sda, sdb, ...)であるかのように扱います。ところがどのSCSIデバイスに割り当てられるかが不明瞭で、ただ差し直しただけで対応が入れ替わったりします。/dev/sdaがどのデバイスと関連付けられるかは、やってみるまでわからず、これではとてもRAIDを構築できそうにありません。

USBデバイスを固定する(?)方法としてudevがあります。scsiバス上にある(エミュレーションなのでそう見える)「○○社」製のデバイスなら、usbhdaに割り当てる、などの設定が可能です。区別に使える情報はudevinfoというプログラムで得ることができます(udev使うなら /sys以下の情報(sysfs)が必要かも)。

udevinfoの使用例
# aptitude install udev

# udevinfo -a -p /sys/block/hda
(... 略 ...)
follow the class device's "device"
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.1/ide0/0.0':
    BUS="ide"
    ID="0.0"
    DRIVER="ide-disk"
    SYSFS{drivename}="hda"
    SYSFS{media}="disk"
    SYSFS{modalias}="ide:m-disk"

たとえば ○○社製のhogehogeという名前のHDDが一台だけある、という環境でしたら、以下のように書くことができます。/etc/udev/rules.d/ 以下に .rulesで終わる名前のファイルを適当に作ります。例ではlocal.rulesとしています。
モデル名は大抵スペースが入っているので、udevinfoで確認することをお勧めします。

udevのルールの例
BUS="scsi", SYSFS{model}="hogehoge   ",  NAME="sda%n", SYMLINK="usbhda%n"

NAMEならデバイスファイルが、SYMLINKならデバイスファイルではなくシンボリックリンクが作られます。%kという文字列を指定すると、カーネルが作成したデバイス名(sdaとかですね)に置換されます。詳しくはudevのドキュメントを見てください。

ところがこれで解決しない場合があります。私のように同じメーカーの同じ製品を2台使っている場合です。USBの機器にはシリアル番号を提供するものもあり(私の所持するIO-DATA製の外付けディスクなどがそう)ますが、SCSIエミュレーションのデバイスが提供してくる情報からは得られず、全く区別がつきません。

そこでLinux 2.6で最近登場した ubを使います。カーネルをリコンパイルしてubを有効にします。そのさいusb-storageドライバとSCSIエミュレーションによる方法は勝手に無効化されます。たぶん…。
私の環境ではカーネル構築だけDebian流にやってません、ご容赦ください。

ubを有効にする(Linux 2.6.16)
# cd /usr/src/linux
# make menuconfig
(Device Drivers -> Block devices -> Low Performance USB Block driver)
(.configならCONFIG_BLK_DEV_UB = yにする)

再起動すると /devの下にubaとかubbというブロックデバイスができていると思います。このデバイスに対してudevinfoするとIDという項目があると思います。これはおそらくUSBバス上の物理的なポートの位置ではないかと思います。

ubの情報
# udevinfo -a -p /sys/block/uba
(... 略 ...)
follow the class device's "device"
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0':
    BUS="usb"
    ID="1-1:1.0"
    DRIVER="ub"
    SYSFS{bAlternateSetting}=" 0"
(... 略 ...)

差し替えたり、抜いてみたりして観察してみた限り、IDは私の環境では同じポートに接続する限り不変な値のようです。この性質を利用して区別します。
先ほどのlocal.rulesに対して、以下のように書きました。

IDで区別するudevルールの例
BUS="usb", ID="1-1:1.0", NAME="usb1-1_hd%n"
BUS="usb", ID="1-2:1.0", NAME="usb1-2_hd%n"
BUS="usb", ID="1-3:1.0", NAME="usb1-3_hd%n"
BUS="usb", ID="1-4:1.0", NAME="usb1-4_hd%n"
BUS="usb", ID="1-5:1.0", NAME="usb1-5_hd%n"
BUS="usb", ID="1-6:1.0", NAME="usb1-6_hd%n"

これでmount /dev/usb1-1_hd1 /mnt/usb1-1-1などとすると、ポート1に接続されているデバイスの先頭パーティションをマウントできます。
肝心のポート1がどれなのかは、実際に機器を接続してudevinfoをして調べます。私にはIDを調べるうまい方法がわかりませんでした。ごめんなさい。

外付けUSB HDDでSoftware RAIDを構築する全ての方へ。
※しつこいですが私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。

Software RAIDについては、先日(2006年5月7日参照)紹介したので mdadmの使い方、cat /proc/mdstatの意味など基本的なことはそちらを見ていただくとしましょう。
さて、当方の環境ですが /homeを担っていたhda7とUSB HDD 3台でRAID 0+1を構築し、/homeにマウントしようと思います。容量は160GB(RAID1)+160GB(RAID1) のストライピング(RAID0) で320GBとなります。信頼性と容量が今までの倍になるわけです。そのぶんHDDが4倍ですが…。

まずはRAID1を2つ作成します。RAID1をいきなり作ってしまうと、ディスクの同期処理が始まり何もできなくなるので、いったん縮退モードで作成してデータのコピーを済ませ、その後ディスクを追加します。

RAID1アレイを二つ作成
# mdadm --create /dev/md0 -l1 -n2 missing /dev/usb1-1_hd

# mdadm --create /dev/md1 -l1 -n2 missing /dev/usb1-3_hd

次に2つのRAID1をまとめるRAID0アレイを作成します。この構成はRAID1+0と呼ぶのかもしれませんが、ここでは一貫してRAID0+1と呼びます。
RAIDを作成するときデバイスファイルがないと言われたら、-aを付けてください。

RAID0+1アレイを作成
# mdadm --create /dev/md3 -a -l0 -n2 /dev/md0 /dev/md1

間違ってmd2ではなくmd3にしてしまいましたがそのままいきます…。/proc/mdstatを見て作成されたかどうか確認します。確認したらmd3をreiserfsでフォーマットします。

アレイの確認とフォーマット
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4] [raid6]
md3 : active raid0 md0[0] md1[1]
      317127104 blocks 64k chunks

md1 : active raid1 ubc[1]
      156290816 blocks [2/1] [_U]

md0 : active raid1 uba[1]
      160836416 blocks [2/1] [_U]

unused devices: <none>

# mkreiserfs /dev/md3
(... 略 ...)

ブート時に自動的に構成されるように /etc/mdadm/ にある mdadm.confにRAID構成の設定を保存します。

アレイの設定を保存する
# cd /etc/mdadm
# echo DEVICE /dev/usb* /dev/md* > mdadm.conf
# mdadm --detail --scan >> mdadm.conf

# cat mdadm.conf
DEVICE /dev/usb1-1_hd /dev/usb1-2_hd /dev/usb1-3_hd /dev/md0 /dev/md1 /dev/md3
ARRAY /dev/md3 level=raid0 num-devices=2 UUID=bxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx2
   devices=/dev/md0,/dev/md1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=0xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx9
   devices=/dev/usb1-3_hd
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=9xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx7
   devices=/dev/usb1-1_hd

catした結果を見るとmd3, md1, md0の順番でスキャンされています。このままで良いはずなのですが、私の環境では md3の設定を一番後ろに書かないと、起動時にコケてしまいます。md3がmd0とmd1に依存しているからかなあ?よくわかりません。
データをコピーして、再起動したらディスクを追加します。同期処理にしばらくかかるので放置しておきましょう。

アレイにディスクを追加する
# mdadm --manage /dev/md0 -a /dev/usb1-2_hd

# mdadm --manage /dev/md1 -a /dev/hda7

mdadm.confの設定を更新するのもお忘れなく。あとはfstabを修正して再起動してみて、動作を確認したら終わりです。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月13日

大下さんとジョイ本へ買い物に行きました。教育実習に使う教材を作るためだそうで、製本テープや、画用紙だとかを買っていました。真面目にがんばってるなあ。

RAID5を構築する準備をしようと思い、USB接続のハードディスクを2台と、1つのバスに3台つなぐのはちょっと心細いから、USB 2.0のカードも買いました。
家に戻って「早速増設じゃー」とケースを開けたら、空きスロットが PCIバスじゃなくてAGPバスだった…。せっかく買ったのに使えないよorz
空きスロット=PCIバス?という思い込みで確認し忘れました。安い拡張カードだったのが命拾いですね。次回作サーバへの準備ということにしておきましょう。

中身はI/O製がHGSTの160GBでBuffalo製がWDの160GBでした。そんなことより、Buffaloの電源に台湾製のしょぼいコンデンサが刺さってます。HDDの近くで結構熱くなるし、まさか連続運用半年でアボーンなんて設計じゃないよね…?

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月12日

榮樂氏の代わりとして臨時TAに行きました。Coinsはリプレースの影響で未だに超不安定らしいですよ。Macなんかにするから…なんてね。普段はたった一時間で2〜3台止まって当たり前だとか。今日は技官さんが今朝リブートしたからきっと大丈夫だよ、なんて言っていたおかげか特に問題ありませんでした。
自分は2学期にTAの予定ですが、はっきり言ってこんなシステム上でやりたくないぞ。

塚原氏と晩御飯食べに行きました。土浦の李厨房には学生割引がありますが、K'sの奥にある李厨房はどうだったろう?今度行った時に聞いてみようか。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月11日

走ると白煙が上がるらしい塚田氏の車、とうとう修理することにしたそうです。今日、塚田氏が修理屋さんに預けに行くというので榮樂氏とともについて行きました。代車はRAV4でした。毎回違う車が出てきてつくづく面白いお店だと思います。
乗ってみて感じたのは RAV4の加速がかなりイイ!ということです。我が家のFTOと同格の2000ccなのにこうも違うのは、以下の違いがあるからです。

  • FTOは最高速重視で(馬力高:200馬力)の高回転エンジン(低回転:トルク小、高回転:トルク大)
  • RAV4は加速重視(馬力低:155馬力)の低回転エンジン(低回転:トルク大、高回転:トルク小)

これは馬力(仕事率)=トルク(力)×回転数(速度)という関係を考えるとわかりやすくなります。

式を見ると、高回転エンジンなら馬力が上がることがわかるかと思います。さらに同じトルクなら、低回転域で出すより高回転域で出した方がより最大馬力が稼げるわけです。
スポーツカーと呼ばれる車ならば、上記の最大馬力を稼ぐ設計をするはずです。

一方、街乗りに使う車はブン回すと燃費が悪い、うるさいなど悪影響が多いため高回転域は不要です。そのため低い回転数で良い「加速」を得る必要があります。そのための工夫点はエンジン設計者にしかわかりませんが、とにかく高回転域を犠牲にしてでも、低回転域でのトルクを稼ぐ設計にします。
セダン、ミニバン、SUVなど便利な車は、トルク重視の設計をするはずです。

これを逆転させてしまうと、初めだけ速いけど伸びが悪くて遅いスポーツカーや、思い切り回してナンボのモタモタセダンなどになってしまいます。これはきっと物好き以外には売れないでしょう。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月10日

ドコモの二次面接に向かいました。会場がなんとキャピトル東急という驚愕の高級ホテル。ホテルを目の前にして「これが二次面接の会場とはご立派だなあ」と感心しつつ控え室に居た人と話していたら……ハイ、ナニ、なんだって?
こ れ が 最 終 面 接 ?
おいいいいいい、そんなの聞いてねえよ!

思えば、人事の人「次の面接に進んでいただきたくご連絡を」としか言っていませんでした。それを早合点してじゃあもう一回あるんだと思ったのが悪かったです。うう、でも最終なら最終って言って欲しかったよ。
最終でもどんどん落とすと噂のドコモなのに、相当しどろもどろになってしまい、今日の面接は自分が面接官でも絶対落とすわーって思いましたね。向こうも呆れている感じでしたね。さよならドコモ。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月9日

近藤君と志村君が香辛飯屋の挑戦カレーに挑みましたが、残念ながら負けました。前見たやつと違って、野菜が入っているところがうっとおしいようです。
会計時に「割引券は一枚につき一品の値引き」と言われました。えぇ、そんなの知らないよ。チラシが一枚しかなくて本来なら2個目の挑戦カレーが値引きされないはずが、哀れに思ったのか店員さんが適当にごまかし安くしてくれました。
チラシはカラーコピーして構わないので、今度誰かやるなら頼む数だけチラシを揃えましょう。

車から加給音のような変な音がします。無論、ターボなんぞないので、エンジンのどこかが詰まって鳴っているのかもしれない。また壊れたのか…!

YouTubeのムービーURLを生成するスクリプトを書いてみました。
検索ワード(URLのword= 以降の所)を変えると検索結果も変わります。ただし、URLを生成するためにムービーを表示するページを一々読み込んでは解析して…と、やっているため結果が出るのが非常に遅いです。検索結果が多いと、数分かかるかも。イライラしてリロード連打しないでね。
時間が経つとユニークIDが失効して、ダウンロードできなくなります。そのときはリロードして新しいURLを生成してください。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月8日

ルートディレクトリのあるパーティションがクラッシュしました…。fsckするとlost+foundに全てのファイルがぶち込まれ復旧できず。これはどうしようもないってことで昨日一日使ってDebianを再インストールいたしましたよ。
Debianを触り始めた頃に付けていた必死設定メモが残っており非常に参考になりましたが、最近は面倒でメモっておらず、以前とかなり違う環境になりました。皆さん、メモは大事ですよ!

以前と変更したところというと、kinput2 + Cannaからuim + Anthyの組み合わせに変更した点と、起動がヘビーなGnome2 & metacityをやめて、IceWMだけにしたこと。VNCでしか利用しませんが、IceWMなら一瞬でvncserverが起動し終わります。ちょっと感動しました。

IceWMの設定をしているときにGTK周りのフォント設定もやったんですが、ややこしくて設定しきれませんでした。slypheed(GTK 1.0系 .gtkrcに設定)やgftp(GTK 2.0系 .gtkrc-2.0で設定)のフォントは変更できても、MozillaやFirefoxが言うことを聞きません。
原因がさっぱりなので、~/.mozilla/default/(7文字のランダム文字列).slt/chrome/userChrome.cssに(なければ作る)設定を書いてごまかしました。

userChrome.cssでメニュー等のフォントを指定
* {
 font-family: alias-fixed-iso8859-1 !important;
 font-size: 12px !important;
}

そういえば手持ちのWindows XPからコピーしてきたMSゴシックを使うのってOKなのだろうか。
きっと駄目なんだろうなー。

画面表示に使うことだけ考えるとビットマップフォントが多様に収録されているMSゴシックが優秀すぎるため、フリーのフォントは太刀打ちできません。
さらに言えば世の中に商用フォントは数あれど、画面表示用を重視したフォントは売られていないのですよ。OS標準のビットマップフォントで十分だし、フォント屋のお客さんであるDTPデザイナー達は画面表示用フォントなんて買わないからね。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月7日

現在ページのデザインを変更中です。おかしくなってる場所があるかもしれないです。日記の1日分を枠で囲うだけでblogっぽくなる気がしませんか?
トップページで日記の枠が右のメニューにめり込んでいるのは仕様です。

ソフトウェアRAID0を組み、簡単なベンチマークプログラムを走らせてみました。mkraidは古いのかDebianのパッケージになかったので代わりにmdadmを使いました。

# mdadm --create /dev/md0 -l0 -n2 /dev/sdb1 /dev/sda1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=277948352K  mtime=Sun May  7 18:02:45 2006
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=0 devices=2 ctime=Sun May  7 17:56:47 2006
mdadm: /dev/sda1 appears to be part of a raid array:
    level=0 devices=2 ctime=Sun May  7 17:56:47 2006
Continue creating array? y
mdadm: array /dev/md0 started.

作成に成功すると /proc/mdstatに以下のような情報が追加されます。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
md0 : active raid0 sda1[1] sdb1[0]
      277948352 blocks 64k chunks

unused devices: <none>

通常のパーティションと同様にファイルシステムを作成します。この例ではext3ですが、好みのファイルシステムがあればそれを使ってください。

# mke2fs /dev/md0
(省略)
# tune2fs -c0 -i0 -j /dev/md0
(省略)
# mount /dev/md0 /mnt/usb_raid

1バイトずつストライピングしていては遅いばかりで性能が上がらないので、chunkという値に指定したサイズを単位としてストライピングされます。今回はchunkをいじっていないのでデフォルトの64KBになっているはずです。
そして今回用いた簡易ベンチマークはDirect I/Oを用いてファイルにランダム値を書き込みます。このとき一度にwriteで書き込む量を変化させてベンチマークを行いました。おそらく chunkの整数倍の方が性能が上がると予想しますが、さてどうなるでしょうか。

buffer[KB]  speed[MB/s]
32          23.569085
64          29.780680
96          33.003887
128         37.963501
160         36.080456
192         35.805102
224         36.681815
256         37.470814

結果を見ると128KB以上のバッファサイズであれば大した差はないようです。さすがにこの程度は考慮済みなのでしょう。
RAID0の速度は、昨日(5/6)hdparmで同時に測った値(sda=21.5[MB/s] sdb=17.0[MB/s])の和とほぼ等しいです。つまりhdparmの誤差で遅く見えたのではなく、USBは同時アクセスが苦手だと考えられます。

ちなみにディスクアレイを停止させる場合は、以下のようにします。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
md0 : active raid0 sda1[1] sdb1[0]
      277948352 blocks 64k chunks

unused devices: <none>

# mdadm --misc -S /dev/md0

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
unused devices: <none>

確認のために /proc/mdstatの出力をさせました。md0が消滅していることがわかると思います。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月6日

久しぶりに作業に参加しました。久しぶりに日の光に当たったから疲れました…。

帰りに研究室によってUSBから電源供給するケーブルを持ってきましたので、先日(2006年5月3日)動かなかったポータブルHDDの動作を確認できました。これでUSBに二つのディスクが接続された環境が得られました。早速実験です。

さてRAIDを組むに当たって、二つ同時にアクセスが発生することが考えられます。そこで USB接続のディスクに対する同時アクセスは速度面で得なのか?を確かめました。まず単独で各デバイスの速度を計測します。UATA100接続のディスクhda1を比較対象として載せました。

# hdparm -t /dev/hda1
/dev/hda1:
 Timing buffered disk reads:  186 MB in  3.02 seconds =  61.51 MB/sec

# hdparm -t /dev/sda1
/dev/sda1:
 Timing buffered disk reads:   92 MB in  3.01 seconds =  30.59 MB/sec

# hdparm -t /dev/sdb1
/dev/sdb1:
 Timing buffered disk reads:   70 MB in  3.00 seconds =  23.32 MB/sec

二つのディスクのアクセス速度を加算しても、バスの帯域上限(480Mbps = 60MB/s)に達しないので、遅くならないだろうと思ったら意外にも10MB/s以上遅い結果が得られました。

# hdparm -t /dev/sda1
/dev/sda1:
 Timing buffered disk reads:   66 MB in  3.07 seconds =  21.47 MB/sec

# hdparm -t /dev/sdb1
/dev/sdb1:
 Timing buffered disk reads:   52 MB in  3.04 seconds =  17.08 MB/sec

原因としてUSBというのはそもそも、同時に複数デバイスを読みに行くパターンを苦手とするのか、それとも単にhdparmの結果が不正確なだけなのか、のどちらかが考えられます。hdparmの影響を確かめるにはDirect I/Oでファイルを書き出す程度の簡単なベンチマークプログラムを書いてみればわかるのかな?
ソフトウェアRAIDが速度にどの程度影響するのかも気になるため、ストライピング構成を使ってより実環境に近い値を測ろうと思います。まあこの程度の構成ならば影響ないと信じたい…。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月5日

大下さんと晩御飯を食べにさとまで自転車で行きました。軽いサイクリング代わりになりました。
大下さんの自転車が壊れかけでボロボロなのが気になって仕方ないです。折りたたみ自転車やアルミフレームの軽い自転車なんかも、安くて良いものが売ってるんだから、無理して修理しながら乗らないで買い換えれば良いのにねー。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年5月4日

USB接続の外付けHDDを買ってきました。IO-DATA製です。ちなみにソフトウェアRAIDに挑戦してみたいので、しばらく使ってみて問題なさそうならもう一台購入する予定です。
早速分解してみると、中身はHGST(日立IBM)のDeskstarでした。最近はSeagateが好きですが、別にどの会社が駄目って事はありません。あ、でもサムスンのHDDだったらちょっと入れ替えを検討したくなるかも…。
ちなみにこのドライブは HDD以外はきっと同じ部品の使いまわしで、HDDだけ簡単に入れ替えられるのではないかと予想しております。

hdparm -tで測ってみると、USB HDDは26.8MB/sとちょっと遅いです。同じマシンで使っているUATA100のディスクは60MB/s出ていました。USBが遅いのは前々から予想していたので仕方ないかな。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2006年5月17日 >>> 2006年5月4日
link もっと後

管理用メニュー

link 記事を新規作成

<2006>
<<<05>>>
-123456
78910111213
14151617181920
21222324252627
28293031---

最近のコメント5件

  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」
  • link 24年10月1日
    hdkさん (10/03 08:30)
    「おー、面白いですね。xrdpはすでに立ち...」
  • link 14年6月13日
    2048player...さん (09/26 01:04)
    「最後に、この式を出すのに紙4枚(A4)も...」

最近の記事20件

  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 22年7月8日
    すずき (11/02 20:34)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介一覧が欲しくなったので作りました。5作品乙女ゲームの破滅フラグしかない悪役...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
  • link 19年3月28日
    すずき (11/02 13:27)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 21年6月20日
    すずき (11/02 13:22)
    「[読書一生分が93万円?] 目次: マンガ紹介書籍通販のhontoがこんなキャンペーンをやっています。honto読書一生分プレ...」
  • link 17年10月27日
    すずき (11/02 13:11)
    「[異世界&最強系漫画の種類] 目次: マンガ紹介少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「...」
  • link 24年10月28日
    すずき (10/30 23:49)
    「[Linuxからリモートデスクトップ] 目次: Linux開発用のLinuxマシンの画面を見るにはいろいろな手段がありますが、...」
  • link 23年4月10日
    すずき (10/30 23:46)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年10月24日
    すずき (10/25 02:35)
    「[ONKYOからM-AUDIOのUSB DACへ] 目次: PCかれこれ10年以上(2013年3月16日の日記参照)活躍してく...」
  • link 24年7月25日
    すずき (10/25 02:24)
    「[OpenSBIを調べる - デバイスツリーの扱い(別方法)] 目次: LinuxOpenSBIのブート部分を調べます。Ope...」
  • link 24年8月7日
    すずき (10/25 02:23)
    「[Debian独自の挙動をするQEMUとbinfmt_misc] 目次: Linux前回はbinfmt_miscの使い方や動作...」
  • link 24年9月9日
    すずき (10/25 02:22)
    「[GDBの便利コマンド] 目次: LinuxGDBは便利ですが、少し使わないでいるとあっという間にコマンドを忘れます。便利&使...」
  • link 24年10月20日
    すずき (10/25 02:22)
    「[ゲームを買ったら遊びましょう2] 目次: ゲーム前回の振り返り(2022年5月13日の日記参照)から2年半経ちました。所持し...」
  • link 24年8月2日
    すずき (10/25 02:21)
    「[Debian on RISC-V] 目次: LinuxOpenSBI + Linuxの環境まで動いたので、次はLinuxのデ...」
  • link 24年8月6日
    すずき (10/25 02:21)
    「[他アーキテクチャ向けバイナリを実行する仕組みbinfmt_misc] 目次: LinuxRISC-V 64bit用の実行ファ...」
  • link 24年8月27日
    すずき (10/25 02:20)
    「[Milk-V Jupiterが届いた] 目次: RISC-VMilk-V Jupiterが届きました。お値段が非常に安かった...」
  • link 24年9月13日
    すずき (10/25 02:20)
    「[OpenSBIを調べる - OpenSBIとRISC-V ISA extensions] 目次: Linux今回はOpenS...」
  • link 24年10月11日
    すずき (10/25 02:19)
    「[企業のドメイン] 今の企業は公式サイトを持っていなほうが珍しいと思いますが、ドメイン名の使い方は各社でバラバラで面白いです。...」
  • link 24年10月21日
    すずき (10/25 02:18)
    「[OpenPilotを調べる - プロセス間通信msgqの仕組み] 目次: OpenPilot最近はOSSの運転支援ソフトウェ...」
  • link 24年10月6日
    すずき (10/25 02:11)
    「[OpenPilotを調べる - ビルドと実行] 目次: OpenPilot最近はOSSの運転支援ソフトウェアOpenPilo...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/04 15:17