Comments
Description
Transcript
Linux応答時間の実力
Linux コーナ ハードを隠ぺいしたお任せ OS を組み込みで使う可能性を探る 実験リサーチ! カーネル内部 とことん可視化計画 Linux応答時間 の 実力 第 10 回 ファイル・システムの陰で行われる 海老原 祐太郎 物理メモリの読み書き時間 CAT724+EB724A SH-4Aマイコン SH7724 print 関数を埋め込んで実験します. さらに,ファイル読み書き時間を観察します. Linux はプロセスが複数動いている OS なので,ディ スクの読み書きには長めの遅延が生じます.その遅 延を緩和する機能が Linux には備えられているた め,これも実験してみます. (編集部) RAMとI/Oするためのドライバを 作ってprint関数を埋め込んでおく DDR2 SDRAM(256Mバイト) RAMディスク 32Mバイト CPU 32MバイトをRAM ディスク領域とする こんな実験 チカラ 図 1 こんな実験…縁の下の力もち! ファイル・システムのはたら きを探る! RAM の読み出し / 書き込みドライバに print 関数を埋め 込んで動作させる ● ディスク I/O 用ドライバを作って動きや遅延 時間を観察する 今回は,物理メモリの読み書き時間を調べてみます. Linux では,ディスクのリード / ライトにキャッ シュを活用しています(1).まず,Linux のファイル・ システムがどのように動いているか,どのように キャッシュを使っているかを見てみます. 図 1 に 示 す よ う に デ ィ ス ク I/O 用 の ドライバに アプリケーション1 256M バイトの DRAM のうち,32M バイトを RAM ディスクとして使い,だれが,どのタイミングでディ スク I/O 処理を行っているかを print 関数を使って可 視化します(実験 1) .これに 8M バイトのパーティ ション領域を確保し,vfat ファイル・システムを搭載 して書き込み時間を観察します(実験 2) . ・実験 1…ファイルの読み書きを観察してみる アプリケーション2 open() read() write() close() アプリケーション3 open() read() write() close() open() read() write() close() system call VFS 仮想ファイル・システム ext2 ext3 ユーザ空間 ページ・キャッシュ jfs xfs vfat カーネル空間 バッファ・キャッシュ 1 バッファ・キャッシュ 2 バッファ・キャッシュ 3 ブロック型ドライバ1 ブロック型ドライバ2 ブロック型ドライバ3 ディスク1 (ハードウェア) ディスク2(ハードウェア) ディスク3(ハードウェア) ソフトウェア ハードウェア 図 2 アプリケーションから物理ディスクにアクセスするしくみ jfs,xfs,vfat は ext2 や ext3 と同じようにバッファ・キャッシュとやりとりする 2014 年 12 月号 第 1 回 電源投入からカーネルが起動するまでの動作(2013 年 11 月号) 第 2 回 ハード制御で需要! 割り込み処理を時間で終わらせる三つのしくみ(2013 年 12 月号) 第 3 回 マルチタスク OS のキモ! タスク切り替えの基本動作(2014 年 1 月号) 153