3. その他のデータ構造 3.1 frags配列 skb_shared_info内のfrags配列がある。この配列を使用することで、パケットデータを非連続な領域に分断して保持することができる。fragsを使用した状態のsk_buffを図3.1に示す。 ただし、このようにfragsパケットデータを分断して持つ形式はネットワークカード(とそのドライバ)がScatter/gather I/O(*1)に対応していないと使えない。Scatter/gather I/Oに対応しているとデバイスにNETIF_F_SGフラグが設定されているので、送信デバイスにこのフラグが立っている場合のみ、このような形式を使う。 frags配列の要素はskb_frag_structとなっており(ポインタではなくそのもの)、これは、分断されたデータがどこにあるかを管理する。 skb_frag_structはデータが置かれてい
By now almost everyone has heard of so-called zero-copy functionality under Linux, but I often run into people who don't have a full understanding of the subject. Because of this, I decided to write a few articles that dig into the matter a bit deeper, in the hope of unraveling this useful feature. In this article, we take a look at zero copy from a user-mode application point of view, so gory ker
はじめに 現在のLinuxカーネルはメモリーホットプラグという,一般的にはなじみがない機能をサポートするようになっています。私は長い間その開発にかかわってきました。 コミュニティに参加する方法というのは,今ではノウハウ化が進み,「Linuxカーネル開発への参加方法」という文書も紹介されるようになりました。 しかし,私が活動をはじめた当時は,まだどうやって開発していけばよいのか勝手がわからず,四苦八苦することとなりました。これまでプロプラエタリなソフト開発しかしたことがないエンジニアにとって,コミュニティ開発というのはまったく開発スタイルの違う世界に飛び込むことだったからです。しかし,その苦労によって得られた経験は,その後の他の開発活動に活かされることになりました。ちょうど良い機会をいただいたので,そのときの苦労を振り返りたいと思います。 メモリーホットプラグをサポートしているハードウエアは
比較的新しいカーネルを採用したLinuxディストリビューションでは、ファイルシステムのI/Oバリア (I/O barrier)機能がデフォルトで有効になっています。例えばRedhat Enterprise Linux (RHEL) 6やSUSE Linux Enterprise Server (SLES) 11等はインストール直後の状態でext4ファイルシステムのI/Oバリアが有効になっているようです。 I/Oバリアは簡単にいうと、「バリア命令」の後で発行されたI/Oは、バリア命令の前に発行されたI/Oの後に必ず実行されるようにする仕組みです。つまりI/Oの順序(物理ディスクに反映される順番)をまもらせる仕組みといえます。 ファイルシステムにI/Oバリア機能が追加されたのは、ファイルシステムが不整合な状態になる可能性を減らすためです。 そもそも、急な電源断でもファイルシステムの不整合が起こ
詳解ファイルシステム Linuxのファイルシステムを詳解します トップページページ一覧メンバー編集 Japanese Linux hacker 最終更新: linuxfs 2009年10月27日(火) 22:30:49履歴 Tweet FrontPage > Japanese Linux hacker Linux hackerとして活躍している方たちのプロフィールを詳解します。~ #include構文が使用できませんで、Personal_information_policyを ~ 読んでからこのページをご利用ください。 [page include error] ~ 企業別 長らく更新しておりませんでした。m(_ _)m Kernel 2.6.12-rc2 〜 2.6.29-rc6までの集計(2009/03/03) 日本人が出しているpatchをgit+Perlスクリプトで集計しました。 順
2010年06月02日11:28 カテゴリperformancetool blktraceによるI/Oトレース こんにちは. adingoで検索周りの仕事をしているHと申します. 検索エンジンやデータベースなどのディスクI/Oが多いアプリケーションでは, いかにI/Oを抑えるかがパフォーマンスの決め手になります. 今回はアプリケーションが出したI/Oリクエスト一つ一つがどのようにデバイスドライバに渡るかをトレースするblktraceというツールを簡単に紹介します. blktraceはlinux kernel 2.6におけるツールとなっており, 2.6.17-rc1以降ではカーネルにパッチを当てることなく利用可能です. (ツール自体はインストールする必要があります.) 何がトレースされる?linuxカーネルではI/Oリクエストは多数のレイヤーを通じて実際にデバイスに要求が出されます. ざっく
October 8, 2007 This article was contributed by Paul McKenney This document walks through the design of preemptible RCU. Introduction Read-copy update (RCU) is a synchronization API that is sometimes used in place of reader-writer locks. RCU's read-side primitives offer extremely low overhead and deterministic execution time. The downside of this deterministic read-side execution time is that RCU
2011年02月08日 情報科学類 オペレーティングシステム II 筑波大学 システム情報工学研究科 コンピュータサイエンス専攻, 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp> このページは、次の URL にあります。 http://www.coins.tsukuba.ac.jp/~yas/coins/os2-2010/2011-02-08 あるいは、次のページから手繰っていくこともできます。 http://www.coins.tsukuba.ac.jp/~yas/ http://www.cs.tsukuba.ac.jp/~yas/ ■今日の大事な話 割り込みコントローラ(ハードウェア) IRQ 割り込みの前半部分と後半部分 ■割り込み ◆割り込みの必要性 デバイス(ディスク、ネットワーク、キーボード、マウス、)は、CPU と比 較すると遅い。 デバイスに要求を
カーネル2.6はスケーラビリティの向上を大きな目標として、カーネルの内部仕様に大幅かつ意欲的な変更が加えられている。また、JFSやXFSといったファイルシステムの追加、USAGIやUML(User Mode Linux)の統合、新デバイスのサポートなども行われた。 第1章となる今回は、カーネル2.6の最大の目標であるスケーラビリティの強化に注目して、主に内部仕様を解説する。次回以降では、主にユーザーから見たカーネルの新機能について紹介する予定だ。 マルチプロセッサシステム対応の強化 ■RCU(Read-Copy Update) カーネル2.6では、RCU(Read-Copy Update)と呼ばれる新しい同期機構が追加された。 カーネルには、複数のプロセッサからの同時アクセスからデータ構造を保護するため、スピンロックをはじめとする同期機構が用意されている。しかし、従来の同期機構ではロック/
「詳解 Linuxカーネル 第3版」や「Linuxカーネル2.6解読室」などのLinuxカーネル本では、Linuxカーネルの時刻管理について、超絶に要約すると次のように説明されています。 一定の時間間隔(1000Hz)でタイマ割り込みが入る。 タイマ割り込みごとにjiffies変数を1増やす(つまり、jiffiesは、システム起動後にタイマ割り込みが入った回数を表す。) jiffiesの増加分に合わせて、システム時刻(変数xtime)をアップデートする。 しかしながら、RHEL6では、定期的なタイマ割り込みを行わない「Ticklessカーネル」が採用されており、jiffiesやxtimeが変更される仕組みがごっそり変わっています。 ※ Ticklessカーネルの何が嬉しいのかというと。。。。 これまでのカーネルでは、定期的にタイマ割り込み処理を行う必要があったので、実行するプロセスが無いア
Hi everybody, i've been googling for ages now and gotten kinda desperate... The question, however, might be rather trivial for the experts: What is it exactly, i.e. physically, the POSIX function (for a file) "lseek" does? Does it trigger some kind of synchronization on disk? Is it just for the file system? Rationale: I'm am running some benchmarks to get an idea, how our system (ext4@Debian5) wor
CでDirect I/O を行う場合、open 呼び出しの引数にO_DIRECTを指定する。インクルードするヘッダーはfcntl.hで、実際に定義されているのは bits/fcntl.h。今のところ一番新しいcygwin gccだと、fcntl.hだけでコンパイルできるけど、linux上だとこれだけではダメ。gccの-Dオプションに_GNU_SOURCEをいれるか、下みたいに_GNU_SOURCEのdefineを行う。 #ifndef _GNU_SOURCE #define _GNU_SOURCE 〜なんかソースコード〜 #endif/* ifndef _GNU_SOURCE */ O_DIRECTで入出力を行う場合、ヘンな制限がある。linux kernel 2.4までは入出力を行うバッファの大きさをファイルシステムのブロックサイズでアラインメントを取る必要がある。linux kerne
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く