Linuxカヌネルバヌゞョン3.3および3.4​​を初めお知った人

次は、IBM Webサむトからの蚘事の翻蚳です。 それから根本的に新しい䜕かを孊ぶこずはたずありたせん。 この蚘事は、Linuxの興味深い機胜や以前は未知だった機胜に぀いお読むための出発点ずしお䜿甚するのに適しおいたす。 リンクの䞀郚を斜䜓で匕甚したした。䞀郚は元の蚘事の最埌にありたす。 説明たたはコメントは斜䜓で蚘茉しおいたす。



Linuxカヌネルリリヌスバヌゞョン3.3および3.4​​には、印象的な改善が含たれおいたす。 ただし、これらのリリヌスは単なるコア開発ではなく、この開発ぞの道のりの䞍吉なマむルストヌンです。

バヌゞョン3.3のリリヌスは、Linuxカヌネルの最初のリリヌスであり、そのボリュヌムは1500䞇行を超えおいたす率盎にカヌブした枬定方法を䜿甚した堎合でも。 倉数コヌドの䞀貫性のない郚分さたざたなドラむバヌ、プラットフォヌム固有のコヌド、およびさたざたなナヌティリティを差し匕くず、行数は400䞇をわずかに䞋回りたす。



この時点で䞍吉なのは、コアの成長速床2008幎からの50の成長、およびこの成長がコアに悪圱響を䞎える可胜性があるずいう事実ですパフォヌマンスずカヌネル機胜の䞡方の面で。 機䌚ずパフォヌマンスは通垞「パッチ」では枬定されないため、しばらくの間残るカヌネルでバグを芋぀けるこずができたすたずえば、PCIe ASPMの問題は、ほが1幎間カヌネルにありたしたが、バヌゞョン3.3 のwww.pcworldの説明で修正されたした。 com / businesscenter / article / 244277 / new_kernel_patch_slashes_linuxs_power_appetite.htmlおよびパッチlkml.org/lkml/2011/11/10/467 



Linuxは21幎足らずで10,000行のコヌドから1500䞇行以䞊に成長したした。 さらに、このコヌドのほずんどはドラむバヌサブツリヌにあり、サむズが倧きくなるずカヌネルの耇雑さが増したす。 遅かれ早かれ、この拡匵機胜はカヌネルをよりシンプルにする倉曎をもたらすはずです。 コヌドの芳点からも、このコヌドのサポヌトの芳点からも。







図番号1に瀺すように、2001幎に2.4がリリヌスされお以来、コアは急速に成長しおいたす2012幎の3,377,902行から15,998,651行。 この期間䞭、毎幎玄100䞇行がカヌネルに远加されたした。 これは芋事な図解であり、すべおの゜フトりェア開発者に恐怖を抱かせるはずです。



圌らは、栞が成長するに぀れお栞を支えるこずに察する圌の懞念に぀いお、トヌバルズ自身の蚀葉を匕甚しおいたす。 カヌネルのコアを構成する400䞇行のコヌドにより、珟圚のカヌネル゜ヌス管理システムの改善が必芁になる堎合がありたす。



Androidの統合。




3.3カヌネルの最倧のニュヌスは、Google Androidカヌネルのメむンブランチに含たれるこずです。 この統合は3.4カヌネルでも継続されたすが、ナヌザヌ空間でのアンドロむドのロヌドをサポヌトするのに十分なアンドロむドのコヌドがカヌネルに含たれるようになりたした。 Androidカヌネルは、いく぀かの機胜を備えたLinuxカヌネルのフォヌクです。 これらの機胜は、手ごろな電力で厳しく制限されおいるモバむルデバむスの効率的な操䜜のために導入されおいたす。 さらに、Androidでは、x86サポヌトも存圚したすがたずえば、Google TVプロゞェクトなど、ARMアヌキテクチャに重点が眮かれおいたす。



LinuxのメンテナヌずGoogleの間の盞互䜜甚の問題により、Androidは数幎間個別に開発されたした。 2011幎から2012幎の冬に、Android Mainliningプロゞェクトが䜜成されたした。このプロゞェクトの目暙は、Androidカヌネルのドラむバヌず新機胜をメむンのLinux゜ヌスツリヌに統合するこずです。 行われた䜜業はカヌネル3.3で䞀般に公開され、今埌のリリヌスでも継続されたす。



Androidは、モバむル環境での競争力を高めるために必芁なLinuxにいく぀かの改善を加えたした。 䟋には、高速プロセス間通信Fast IPCメカニズム、改善されたメモリ管理メカニズム、および倧きな連続したメモリ領域を管理する問題の解決策が含たれたす。



バむンダヌは、Androidが暙準のIPCメカニズムに応答したドラむバヌです。 Android開発者は既存のコヌドを簡単に䜿甚できたすが、 バむンダヌの開発では、以前はアクセスできなかったいく぀かのナニヌクな「トリック」を提䟛したした「 資栌情報 」をコピヌおよび送信せずにメッセヌゞを送信したす 。詳现に぀いおは、 lwn.net / Articles / 466304を参照。 Androidでは、アプリケヌションは通垞の方法で終了するこずはなく、カヌネルが完了するたで動䜜したす。 メモリ䜿甚量を最適化するために、 Shrinkerず呌ばれるメカニズムがありたす。 アプリケヌションは、呌び出されたずきに䜿甚するメモリ量を最小化する関数を登録したす。 カヌネルは、メモリが䞍足し始めるずこれらの関数を呌び出したす。 Androidから移行した別のメカニズムはPmemです。 このメカニズムにより、物理的に連続したメモリを割り圓おるこずができたす。 たずえば、カメラが電話で䜿甚される堎合、同様の機胜が䜿甚されたす。 このメカニズムの䞀郚ずしお、ナヌザヌ空間にAPIがあり、これを䜿甚しおシステムから連続したメモリを取埗できたす。 これらのメカニズムに加えお、モバむルデバむスに固有のその他の機胜がAndroidから転送されたした。



䞀郚のメカニズムはただカヌネルにヒットしおいたせん。 たずえば、 wakelocksは、個々のプログラムがシステムが䜎電力状態になるのを防ぐこずができる電力管理メカニズムですたずえば、曎新が進行䞭の堎合。 もちろん、これによっおAndroidの読み蟌みが劚げられるこずはありたせんが、バッテリヌの高速消費に぀ながる可胜性がありたす。



AndroidずメむンのLinuxカヌネル開発ブランチずの合䜵は、Linuxの柔軟性のもう1぀の䟋です。 組み蟌みシステムやモバむルシステムから䞖界最倧のメむンフレヌムやスヌパヌコンピュヌタヌに至るたで、Linuxはあらゆる堎所で定着しおいたす。 たた、Linuxは3億台以䞊のモバむルデバむス䞊のナニバヌサルシステムずしお進化を続けおいたす。



vswitchを開く




Linuxは匕き続き最も人気のある仮想化プラットフォヌムです。 Linuxは䞖界クラスのオペレヌティングシステムであるだけでなく、䞖界クラスのハむパヌバむザヌでもありたす。 カヌネルのメむンブランチにOpen vSwitchが導入されたこずにより、Linuxを仮想化プラットフォヌムずしお䜿甚し、LinuxでIaaSサヌビスを提䟛しおいるナヌザヌのこのステヌタスが確認されたした。



仮想スむッチは、ハヌドりェアスむッチの゜フトりェア実装にすぎたせん。 仮想化プラットフォヌムKVMたたはXenで䜜成された圢匏により、マシンの物理リ゜ヌスぞのアクセスを制埡するハむパヌバむザヌ䞊でオペレヌティングシステムの耇数のコピヌを仮想マシンずしお実行できる堎合に備えお、思い出させおください。 仮想スむッチの導入により、ネットワヌクむンフラストラクチャの新しい圢匏が導入され、この抜象化が拡匵されたす。 仮想スむッチは、仮想マシンが仮想ネットワヌクを介しお互いに通信するための匷力なツヌルを提䟛したす。 Open vSwitchは仮想スむッチの機胜を拡匵し、耇数のハむパヌバむザヌの仮想ネットワヌクを組み合わせるこずができたす。 このようにしお、仮想マシンは、仮想ネットワヌクを介しお他のハむパヌバむザヌにあるマシンず通信できたす。



内郚では、 Open vSwitchはネットワヌク仮想化のための幅広い機胜を実装しおいたす。 これらの機胜の䞭には、QoS、vlan'y、フィルタリングずトラフィックの分離、監芖ず制埡のための䞀連のプロトコルOpenFlowやNetFlowなどがありたす。 Linuxにはすでに仮想スむッチLinuxブリッゞが実装されおいるずいう事実にもかかわらず、 Open vSwitchははるかに機胜的な゜リュヌションであり、したがっお歓迎すべき远加機胜です。



ファむルシステムの倉曎。




リリヌス3.3では、ナヌザヌず開発者の䞡方に関連するいく぀かのファむルシステムにいく぀かの倉曎が加えられおいたす。 ナヌザヌにずっおは、これは入出力操䜜の制埡によるext4ボリュヌムのオンラむンサむズ倉曎です「EXT4_IOC_RESIZE_FS」フラグを䜿甚したioctl呌び出し。 「オンラむン」ずは、システムが動䜜し続けるこずを意味したす。 さらに、サむズ倉曎操䜜党䜓がカヌネルで実行されるようになり、速床が向䞊したした。



btrfsのバランシングメカニズムが曞き盎されたした 。 珟圚は、䜜業の䞀時停止ず再開をサポヌトしおいたす。 このメカニズムは、たずえば新しいハヌドディスクの远加など、メタデヌタ構造を倉曎するために䜿甚されたす。 btrfsの改善はリリヌス3.4でも継続され、砎損したボリュヌムからデヌタを回埩するためのナヌティリティが導入されたした btrfs-restore 。 さらに、リリヌス3.4にいく぀かの倉曎が加えられ、 btrfsのパフォヌマンスず゚ラヌ凊理が改善されたした。゚ラヌメッセヌゞの代わりに、これらの゚ラヌの゚レガントな凊理になりたした。 3.4リリヌスより前では、COWメカニズムにより、 btrfsはLinux仮想メモリマネヌゞャずの互換性が䞍十分でした埌者は、btrfsで必芁以䞊に長く必芁でなくなったペヌゞをキャッシュする傟向がありたした。 この欠陥を改善するために改良が行われたした。  juick.com/thegreatz/1982110#5で修正 



RAIDの実装も倉曎されたした。 珟圚、RAIDの゜フトりェア実装はホットスワップをサポヌトしおいたす。あるボリュヌムのデヌタを別のボリュヌムに転送し、最初のボリュヌムを埌でデヌタを倱うこずなくアレむから削陀できたす。 この機胜は、䜿い慣れたmdadmによっお制埡されたす。

最埌に、リリヌス3.4では、 QNX4ファむルシステムのサポヌトが远加されたしたこれたでは読み取り専甚モヌドで。



開発者は、これらの゚ラヌから回埩するクラむアントの胜力を確認するために、ネットワヌクファむルシステム NFS 操䜜に゚ラヌを導入するこずができたしたメカニズムはsysfsを介しお機胜したす。 brtfs開発者向けに、ファむルシステム敎合性チェックナヌティリティが远加されたした。これは、無効な曞き蟌み芁求を怜出するために䜿甚でき、問題をより迅速に修正するのに圹立ちたす。



ネットワヌクの改善。




たた、リリヌス3.3では、いく぀かの高床な倉曎が行われたした。



䜎遅延環境スヌパヌコンピュヌタヌコンピュヌティングなどの堎合、SCSI RDMAプロトコル経由でデバむスぞのアクセスを提䟛する機胜が導入されたした ru.wikipedia.org/wiki/InfiniBandで簡単に読むこずができたす 。 SCSI RDMAは、ブロックデバむスのトランスポヌトずしおRDMAを䜿甚できるようにするプロトコルです。 RDMAはInfiniBandでサポヌトされおおり、スヌパヌコンピュヌタヌコンピュヌティングではかなり䞀般的です。



REDランダム早期怜出 パッケヌゞスケゞュヌラが倉曎されたした。 䜜業のアルゎリズムは、Sally FloydSally Floyd、Ramakrishna GammadiRamakrishna Gummadi、およびScott ShenkerScott Shenkerの提案に埓っお倉曎されたした。 新しいスケゞュヌラは、 ARED Adaptive RED、䞀般にアダプティブずしお翻蚳されたすず呌ばれたす。 REDは、統蚈的な確率に基づいお、キュヌずドロップされたパケットの平均サむズを远跡したす。 空のキュヌでは、すべおのパケットが受け入れられたす。 キュヌがしきい倀を超えおいっぱいになるず、ほずんどすべおのパケットが砎棄されたす。 AREDは、平均キュヌ長の芳察に基づいお、REDをより積極的にするか、積極的にしないかをケヌスバむケヌスで決定したす。 AREDの詳现に぀いおは、icir.org / floyd / papers / adaptiveRed.pdfの資料をご芧ください 。



たた、リリヌス3.3では、叀いボンディングドラむバヌに代わる新しい実装が远加されたした。 耇数の物理むンタヌフェむスを1぀の仮想むンタヌフェむスにグルヌプ化するこずにより、信頌性ず垯域幅がたずえば、802.1AXプロトコルに準拠したむンタヌフェむスを䜜成できたす。 珟圚、新しいメカニズムの2぀の動䜜モヌドがサポヌトされおいたす。ラりンドロビンルヌルたたはアクティブバックアップルヌルによるパケットの単玔な配垃です。 最初の堎合、パケットは各物理むンタヌフェむスから順番に送信されたす。 2番目の堎合、デヌタは1぀の物理むンタヌフェヌスを介しお送信され、「ドロップ」されるずスペアを介しお送信されたす。



行われた倚数の倉曎の䞭で、 cgroups実装ぞの興味深い远加も匷調できたす。TCPのバッファ制限の実装が远加されおいたす。 cgroupはさたざたな方法で䜿甚されたす。 含む-仮想マシンのリ゜ヌスを制限したす。 この倉曎埌、システムメモリの䜿甚をさらに埮調敎できるようになり、システム党䜓のより詳现な制埡が可胜になりたした。



その他の興味深い倉曎




カヌネルリリヌス3.3には、ファむルシステムたたはネットワヌクに関連しない倉曎も含たれおいたす。 新しいアヌキテクチャのサポヌトが远加されたした。TexasInstruments C6xプロセスをサポヌトするために、プロゞェクトコヌドがカヌネルのメむンブランチに远加されたした。 C6xは、1぀以䞊のコアを備えたVLIWアヌキテクチャプロセッサです。 これらのプロセッサは、SMPやキャッシュの䞀貫性などの機胜をサポヌトしおいたせん。 たた、メモリ管理ナニットMMUもありたせん。 これらの欠点にもかかわらず、C6xシリヌズプロセッサには、さたざたな呚蟺機噚ずチップ䞊で盎接䜜成された远加ブロックがありたすたずえば、高速フヌリ゚倉換甚。

リリヌス3.4には、Nvidia Keplerや最新のAMD RadeonおよびTrinityなどの最新GPUのサポヌトが含たれおいたす。



ARMアヌキテクチャは、LPAE拡匵をサポヌトするようになりたした最倧1TBのメモリを凊理するためのPAE。詳现に぀いおは、䟋えばwww.linux-arm.info/index.php/130-linux-support-for-arm-lpaeのPDFを参照しおください。 さらに、NvidiaTegra 3のシングルチップシステムのサポヌトが含たれおいたす。 これらの倉曎により、ARMプロセッサは䜎電力サヌバヌセグメントのIntelプロセッサず競合できたす。 AMD IOMMUの実装に倚くの倉曎が加えられ、メモリデバむスぞのアクセスに関しお、サむズ倉曎可胜なメモリペヌゞの管理ずセキュリティが改善されたした。 仮想I / O機胜により、KVMのデバむスを仮想マシンに提䟛する機胜が拡匵され、さらに、S390アヌキテクチャは最倧64 TBのRAMをサポヌトするように改良されたした以前のバヌゞョンでは1 TBでした



パフォヌマンスモニタリングナニットがKVMの仮想むンタヌフェむスを受け取りたした。 したがっお、ゲストOSはプラットフォヌムのパフォヌマンスを远跡できるようになりたした。 この監芖の䞀郚ずしお、「実行された呜什廃止された呜什の数、キャッシュでのヒットずミス、および遷移の予枬の成功などのメトリックが利甚可胜です。 別の有甚な革新は、「安党なリセット」機胜です。 この機胜により、リク゚スト内のセクタヌを空きずしおマヌクするだけでなく、完党に削陀するこずができたす。

さたざたなI / Oドラむバヌblk、net、balloon、consoleがACPIおよびS4スリヌプ状態をサポヌトするようになりたした。぀たり、Xen䞊のゲストVMを䌑止状態にできるようになりたした。



耇雑なメモリ砎損の問題をデバッグするために、新しいCONFIG_DEBUG_PAGEALLOC構成オプションが远加されたした。 オンにするず、未割り圓おペヌゞぞのプロセッサのアクセスが監芖されたす。 このオプションを有効にするず、圓然パフォヌマンスが䜎䞋したす。



未来ぞの展望。




Linuxは進化を続けおおり、リリヌス3.4はすでにリリヌスされおいたすが、リリヌス候補3.5は2012幎8月にリリヌスの準備がほが敎っおいたす。

次のリリヌスでは、倚くの新しいこずも埅っおいたすbtrfsではラむトバックメカニズムが改善され、ext4ではデヌタ操䜜を決定するためにチェックサムを保存する機胜が远加されたした。 LinuxはたもなくSCSI over FireWireたたはSCSI over USBを䜿甚したデバむスぞのアクセスをサポヌトするかもしれたせん。 たた、ナヌザヌ空間での調査サポヌトず、受信したデヌタを分析するためのSystemTapの䜿甚を玄束したす。 将来的には、コアが開発されるに぀れお、さらに倚くの興味深いこずがありたす。



All Articles