キャビネット・ユンゲへの投稿
記事番号00275へのフォローを投稿します。
お名前(ペンネイムで結構ですが必要です)
(
ブラウザに個人情報を覚えさせない)
電子メイルアドレス(必要です)
題名(必要です)
Home Page がある方はリンク希望先の URL を記載して下さい
会議室に載せたい内容を以下へお書き下さい (
HTMLを解釈せずにそのまま表示)
6月14日に、Akitaka HOSOMIさんは書きました。 >ちょうど、今、 Linux 用のドライバを書いているので、カーネルドライバ >とユーザプログラム間でメモリの風通しを良くするために使えそうな、カー >ネル提供関数 のパフォーマンスを調べてみた。 > >こういうのは、削岩機を持ち出す前に、まずは一応、調べておいた方が宜し >い。 > > > > verify_area() ...... 0.15 マイクロ秒 > > メモリのページングの有無を調べ、カーネル空間からアクセス > できるようにする > > スワップは、たぶん発生してないと思うので、関数の処理は軽 > 目の筈だが、やっぱ、ちょっと、なぁ ... > > > memcpy_fromfs() ..... 0.2 マイクロ秒( 4 バイト転送 ) > memcpy_tofs() ..... 0.32 マイクロ秒( 4 バイト転送 ) > > カーネル空間とユーザ空間でメモリ転送を行う > > 4 バイト転送だから 1 回転送すりゃ、それで仕事は終わるの > だが、これも、やっぱ、ちょっと、なぁ ... オーバーヘッド > が、あり過ぎるぞ > > 16 KB ほど転送すると、15 マイクロ秒といったところで、 > 1 バイトあたりの換算では、1 ナノ秒弱となり、まぁ OK よ > > > 小容量の転送には、put_user() とか get_user() なんての > もあるが、これは、インライン展開が腐っとると思うで、私の > 場合は、そのまま使う気に、なれん。 > > > kmalloc() + kfree() .... 0.5 マイクロ秒( 4 バイト確保 ) > kmalloc() + kfree() .... 1.6 マイクロ秒( 16K バイト確保 ) > > メモリプールからページングされないメモリを確保する > > なんか、こういうメモリ管理用の関数って、結構、遅いぞぉ > 16K バイトの場合のように、ページングサイズ( うちの場合 > は、4K バイト )を超えると、また、とたんに遅くなるし ..... > > > >この手のオーバーヘッドを嫌う場合は、カーネルモードのドライバ内で、頻繁に >メモリ管理用の関数を呼び出すのは、なるべく避けた方が良いように思う。 > > > >よっしゃ、結局、わたしの場合は、削岩機で壁に穴あけちゃる。 > >はぁ? > >わしの PC は、他人の家と自分の家の区別もつかんような分譲マンションではな >いぞ。マイホームなのだし、建築基準法には従っとるのだし、好きに増改築させ >ていただく。んなこたぁ、あったり前じゃ、あ〜りませんか。
cavin@cavin.co.jp
Last Update: 27 April 2022