サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
参議院選挙2025
www.valinux.co.jp
新Linuxカーネル解読室のブログ連載が始まってから1年が経ちました。 本記事では、ブログ連載1周年を記念して、新Linuxカーネル解読室プロジェクト(以降、本PJ)がはじまった経緯や今後の方針、および執筆の裏側についてお話します。 執筆者 : 稲葉 貴昭 ※「新Linuxカーネル解読室」連載記事一覧はこちら 新Linuxカーネル解読室のはじまり 本PJの話が最初に出たのは2024年3月26日、年度末の飲み会での何気ない会話からでした。 「解読室の改訂版を作りたい!」(高橋) 「あーなるほどぉ」(稲葉) 「VAのプレゼンス向上にもなるし、やろうやろう」(狭間) 「ははは(ま、酒回ってるし、寝て起きたら忘れているだろう)」(稲葉) (数日後) 「あれ、開始はいつからにする?」(高橋) 「なぬぅぅ!!!」(稲葉) 本PJは、こんな感じで飲み会ノリが発端となっています。 社内で仲間を募ったらすぐ
17年ぶりにFAIRクラスのタスクスケジューラが刷新され、CFSからEEVDFに置き換わりました。 今回は、この新しいEEVDFに焦点を当て、「どのタスクをどの程度実行するか」というタスクスケジューラの最重要機能を解説したいと思います。 スケジューラやEEVDFに…
「Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト。 本稿では、ネットワーク機能のIPレイヤーの受信処理ついてカーネルv6.8のコードをベースに解説します。 はじめに 1. 概要 2. ルーティング処理 2.1 dst_entry構造体とルーティング処理 2.2 ルーティングテーブル(FIB: Forwarding Information Base)の検索処理 3. dst_entry構造
メモリ管理 OSの仮想空間レイアウト 実ページ管理 動的メモリ割り当て プロセス空間 実ページの回収処理 あとがき 執筆者 : 小田 逸郎 ※ 「OS徒然草」連載記事一覧はこちら メモリ管理 今回はメモリ管理にまつわるお話です。メモリは、OSが管理するコンピュータリソースとしては、CPUと並んで最も重要なリソースです。メモリ管理は、OSの機能として必須のコアなコンポーネントであると言えます。 OSの仮想空間レイアウト メモリ管理を設計する上で考慮すべき事項はいろいろとありますが、筆者は、OSの仮想アドレス空間(以下、単に仮想空間)のレイアウトがまずは気になってしまいます。その前に、そもそもOSを仮想空間で動かすのかということも一考の余地があります。と言うのも、筆者がOSに関わり始めた当初は、OSは実アドレス空間(ページングオフ)で動いており、プロセスだけが仮想空間で動いていました。かなり昔
コンテナ関連 クラウド Kubernetes ネットワーキング 2017/10/02 技術本部 クラウド基盤エキスパート 工学博士 岩本 俊弘 Kubernetes でのネットワーク実装についていくつかの例を挙げて解説していきます。 Kubernetes でのネットワークと言った場合、以下の2つの解釈ができます。 Kubernetes 上のアプリケーション(Pod)側から見たネットワーク 上記の(仮想)ネットワークを実現するための Kubernetes 側の実装 (下回り) 本書では 1. を簡単に説明した後、主に 2. について解説していきます。なお、kubernetes のバージョンは 1.7 を用いています。 Kubernetes は Pod 毎に IPアドレスを割り当てます。同一 Kubernetes クラスタ内の Pod はその IPアドレスを使って相互に通信できます。 この図の
Linux カーネルにおけるタイマー事情 ~第3回 IAマシンのもつ各種計時ハードウェア~ 2015/03/04 技術本部 技術部長補佐 箕浦 真 IAマシンは、歴史的事情などにより、数多くの計時ハードウェアを持っています。以下、順に説明します。 現代の CPU ではいずれも CPU に内蔵されているか、PCH (Platform Control Hub) など CPU 近辺のチップに内蔵されており、少数の水晶発振器を分周/逓倍して利用していると考えられます。したがって、精度 (細かさ) やアクセス速度、機能は異なりますが安定度は同等と考えられます。 PIT (i8254) Local APIC タイマー TSC ACPI 電源管理タイマー HPET PV Clock PIT は Programmable Interrupt Timer の略で、最初の IBM PC 以来搭載されて続けてい
Linux カーネルにおけるタイマー事情 ~第1回 カーネル内での時刻/時間の利用~ 2014/06/05 技術本部 技術部長補佐 箕浦 真 カーネル内ではさまざまな用途で「時間」が使われています。現在時刻の管理のほか、ネットワークのタイムアウト処理や、プロセスのタイムスライス処理など、あらゆるサブシステムで時間がかかわっています。 本稿では、Linux でどのように時計が動いているのか、また、カーネルがどのように時間や時刻を管理しているのかについて解説していきます。 本稿で使用しているシステム環境は以下の通りです。 Red Hat Enterprise Linux 6.x (linux-2.6.32系) 時刻/時間はカーネル内では以下の様な利用方法があります。 時刻の管理 (gettimeofday/settimeofday)、起動からの時間 (uptime) の計測 NTPデーモン (
カーネルにおけるタイマー事情 ~第4回 タイマーハードウェアの抽象化~ 2015/03/11 技術本部 技術部長補佐 箕浦 真 Linuxでは、タイマーハードウェアを 2種類に分類し、それぞれ抽象化してカーネルに機能を提供しています。 Clocksource – 時間の読み取り Clockevents – 指定時刻に割り込み Linux の動作するシステムでは、計時、割り込みともに複数のハードウェアを持つことが普通ですが、ストレージなどとは異なり、いずれも同じ働きをします。そこで、各ハードウェアに対応するデバイスドライバが、精度やアクセス速度などに基づいて rating を定め、システムが rating の高いものを選択して利用します。
他のシステム同様、OpenLDAPでディレクトリサービスを運用する際にも、アクセス権限の設定を行うことで、エントリ及び属性へのアクセス制御を行えます。アクセス権の一般的な形式は次の通りです。
ダンプの解析をするためには実際のダンプがなければ話が始まりませんので、今回は、ダンプの取り方を簡単に説明します。 本講座では、プラットホームとして、Redhat Enterprise Linux 5(以下RHEL5)を例に取って、解説を進めていきます。RHEL5を使用するのは、ダンプを取るまでの設定が簡単であることと、ダンプの解析環境が整っていることが理由です。 RHEL5のカーネルは、2.6.18をベースにしています。2.6.13からサポートされたkdumpというダンプ採取機能が使えます。 ダンプを取るための設定から、実際にダンプを取るまでの手順は以下のとおりです。 1 kdumpの設定 # system-config-kdump 「kdumpを有効にする」にチェックをする。 # chkconfig kdump on 2 リブート 最初に設定したときは、リブートする必要があります。 3
cfqスケジューラ Linuxカーネルは、ブロックI/Oの処理効率を向上させるさせるための仕組みとして、I/Oスケジューラと呼ばれる機能を提供しています。I/OスケジューラはI/O要求の順序を入れ替えることにより、スループットを向上させたり、特定のI/O要求を優先して実行させたりします。実際のブロックデバイスのセクタに対するアクセス(つまり読み書き)を、要求された順序ではなく、I/Oを最も効率よく行うためにその順序を並び替えるというアイデアは、初期のUNIXの実装から採用されていました。それは、セクタ番号順序に並び替えてI/Oを実行するという単純なものです。ディスク面上を移動するヘッドの動きがエレベータに似ているため、このアルゴリズムはエレベータアルゴリズムなどと呼ばれていました。 現在のLinuxカーネルでは、そのころのアルゴリズムより洗練されたスケジューリング方式を採用しており、目的に
Linuxカーネル内では時刻/時間を表す構造体が必要に応じて色々と定義されています。 long unsigned int jiffies; tick を数えたもので、初期値は 32bit プラットフォームでは -5 分相当となります。64bit プラットフォームでは、-5 分相当の 32bit 値を、符合なしで 64bit に拡張したもの (上位 32bit を 0 で埋めたもの) です。 struct timeval タイマー値を指定する場合に使用します。この構造体のメンバは、tv_sec (秒) と tv_usec (マイクロ秒)で、主にユーザーランド API として使用されます。 struct timespec タイマー値を指定する場合に使用します。この構造体のメンバは、tv_sec (秒) と tv_nsec (ナノ秒) で、ユーザーランド API の他 xtime などで使用され
本講座では、Linuxシステムを対象にダンプの解析方法について解説していきます。 “ダンプ解析”と言われてもピンとこない方もいらっしゃるかもしれません。先ずは、「ダンプの解析とは何なのか?」という観点で少し解説します。 そもそもダンプとは何かと言うと、マシンに搭載されているメモリの内容を(一般に)ディスクに出力したものです。(「出力する」という行為を、「吐き出す」とか「吐く」という表現もよく使われます。本講座内でも使用いたしますが、お客様向け資料等ではあまり好ましくない表現であることにご注意ください。) ダンプを吐く契機は、カーネルが自分自身の異常を検知したことです。カーネルは、これ以上動作を継続するのは危険と判断するとダンプを吐いてシステムをダウンさせます。(※1)つまり、ダンプが取られたということは、カーネルに障害が発生したということを意味します。察しのいい方はお気づきかと思いますが、
Ultra Monkeyによる負荷分散と その拡張 2003年6月20日 黒澤崇宏(kurosawa@valinux.co.jp) VA Linux Systems ジャパン 株式会社 技術部 目次 ● ● ● ● Ultra Monkey概要 LVSのチューニング 新機能:TCPフェイルオーバー 新機能:Active-Active構成 Ultra Monkeyとは ● ● ● http://www.ultramonkey.org/ 高信頼なロードバランサ構築のためのソリューション 以下のソフトウェアから構成 – – – heartbeat LVS ldirectord ● 個別のソフトウェアを統合されたソリューションとしてパ ッケージング heartbeat ● High-Availability Linuxプロジェクトが開発 http://www.linux-ha
OpenStackは、IaaSを構築するためのクラウド基盤ソフトウェアで、OpenStackプロジェクトによって提供されています。 2012年4月5日にリリースされた「OpenStack 2012.1」(コード名:Essex)は、機能・用途別に大きく以下の5つのコンポーネントから構成されています。 VA Linuxは、OpenStackの開発プロジェクトのコントリビューターとして、OpenStackそのものの開発に携わっており、ネットワーク処理を自動運用化するための機能開発プロジェクトである「Quantum」に提供したコード数は世界第6位となりました。 Quantumは、次期バージョンFolsomで正式にリリースされる予定です。また、技術者カンファレンスでの技術発表など、積極的にコミュニティに参画しています。 VA Linuxは、OpenStackを利用したクラウド基盤の構築や、OpenS
「割り込み処理」とは、読んで字のごとく、通常の流れでプログラムを実行している所へ割り込んで別のプログラムを実行させることです。通常は、周辺デバイスなどからのイベント通知に使われるハードウェア割り込みを指しますので、本稿でも以下その意味で使います。 Linuxに限らず、現在一般的なOSでは、ディスクやマウスなどのデバイス入出力の他、タスクの切り替えや定時処理などさまざまな場面で割り込み機能を駆使して作られています。 ところで、現在一般的なPC/PCサーバは、IBM PCやIBM PC/AT以来約30年間、互換性を保ちながら発展してきたものであり、こと割り込みまわりに関しては、たいへんに複雑です。これを制御するLinuxも、この複雑さに対応するために、複雑な作りになっています。 本稿では、この複雑なLinuxの割り込み処理の低レイヤ (もっともハードウェアに近い部分) について解説していきます
Linux プログラミング言語 malloc(3)のメモリ管理構造 2007/11/30 技術本部 クラウド基盤エキスパート 角馬 文彦 malloc()といえばC言語ではお馴染みのライブラリで、最も良く使用されるライブラリの一つです。しかしその分だけ何らかの不具合を経験した人も多いのではないでしょうか。本書ではmalloc()、free()で確保、解放されるメモリリソースが内部的にどのように管理されているかを説明していきます。mallocライブラリの仕様を理解する事で、ライブラリ使用時に何らかの不具合が発生した際の手助けになればと思います。 ここではLinuxディストリビューションで標準的に使用されているglibcのmallocライブラリを扱います。今回の調査では次の環境を使用しています。 ディストリビューション :Debian sarge パッケージバージョン :glibc-2.3.
オープンな汎用ハードウェアを仮想的に統合することで、大容量のストレージ環境を構築し、ストレージの利用効率の向上を実現します。スケールアウト型の構成により、スモールスタートから大規模環境まで、必要に応じた容量を低コストで導入することが可能です。 仮想化環境に最適なデータ保護、柔軟性、運用性を備えているため、仮想化ストレージとして活用できます。また、VA Storage全体をSANやNASストレージシステムとして活用することも可能です。
記事執筆時点ではkvm上でNetBSD/amd64はインストーラを起動することもできません。この組み合わせを例にとり、OSと仮想マシンの低レベルの処理の解説を兼ね、判明した問題点と修正方法を解説します。 仮想マシンは実在の標準的なハードウェアをエミュレートしているはずであり、一般の(任意の?)OSの実行に支障があるのは正しい姿ではありません。 一方、標準的な部品とBIOSを組みあわせて作られているわけではなく、仮想マシンの開発者は必ずしも十分な検証の手間はかけられないので、使われる頻度の低いOSの動作に支障のある特殊な存在となってしまうのは仕方がない面もあると言えます。また、OS側も仮想マシン上での動作を検証する人的資源を欠くこともあります。 記事執筆時点ではkvm上でNetBSD/amd64はインストーラを起動することもできません。この組み合わせを例にとり、OSと仮想マシンの低レベルの処
dm-iobandは、LinuxでディスクI/Oの帯域制御を行うdevice-mapperのデバイスドライバです。パーティション、ユーザ、プロセス、仮想マシン等、様々な単位で帯域を制御することができます。本文書では、このdm-iobandを使ってRed Hat Enterprise Linux 5(以下、RHEL5)および CentOS 5の論理ボリュームの帯域制御を行う方法を紹介します。 dm-iobandは既存のブロックデバイスの上にdevice-mapperのデバイスをスタックして利用します。このデバイスに対して出されたI/O要求は、dm-iobandで帯域制御されてから下位のデバイスに渡されます。 帯域制御の方式は三種類あり、それぞれ、weightポリシー、weight-iosizeポリシー、range-bwポリシーと呼びます。ユーザはこの中から任意のポリシーを撰択し
本書は、Linux KVMのshadow pagingの実装について解説します。読者の前提条件として、仮想化及びx86アーキテクチャにおけるアドレス変換機構(MMU)に関する基礎知識を有している方を対象としておりますので、あらかじめご了承ください。 KVMは米国Qumranet社により開発されている仮想マシンで、完全仮想化をサポートします。当初は仮想化拡張機能(Intel VT-x、 AMD SVM)をもつx86アーキテクチャを対象に開発されてきましたが、現在ではその他のCPUアーキテクチャにも移植されています。本書内では特に記載がある部分を除き、x86アーキテクチャのみを対象といたします。 実装の特徴としては次のようなものが挙げられます。
helpコマンドでは、各コマンドの詳細な説明や使用例を見ることができます。本講座で出てきたコマンドについても、適宜、helpコマンドで詳細を確認するようにしてください。 それでは、いよいよお待ちかねのダンプ解析に入ります。まず最初は、カーネルのデータの内容を確認する方法について見ていきます。 メモリの内容を見るには、rdコマンドを使用します。一例として、変数num_physpagesの値を確かめて見ましょう。変数のアドレスは、symコマンドで分かります。rdコマンドの引数には、仮想アドレスを指定します。-pオプションを使用して、物理アドレスの指定をすることも可能ですが、実際の解析において、物理アドレスの参照が必要なケースはあまり多くないと思います。rdコマンドの引数には、シンボル名を直接指定することもできます。 【 変数の値の参照例 】 crash> sym num_physpa
アプリケーションを独自MIBで監視させたいと思いながらも、「SNMPエージェントを作るのは少し難しい」と考えている方は、少なくないと思われます。日本語で解説しているWebサイト等も多くはありませんし。 そこで、本稿では、NET-SNMPをベースとしたSNMPサブエージェントの作成概要を紹介していきたいと思います。 NET-SNMPを使って独自MIBを実装する方式には、チュートリアル(※1)を見る限りは何種類かあるようですが、本稿では、NET-SNMPのエージェントsnmpd(マスタエージェント)にAgentX(※2)接続するサブエージェントという形で独自MIBを実装する例を中心に解説します。 本稿で作成するSNMPサブエージェントは【図1-1 イメージ】のように動作します。 SNMPサブエージェントがアプリケーションと情報を共有することで独自MIBを形成するようにしています。安
ダンプの解析をするためには実際のダンプがなければ話が始まりませんので、今回は、ダンプの取り方を簡単に説明します。 本講座では、プラットホームとして、Redhat Enterprise Linux 5(以下RHEL5)を例に取って、解説を進めていきます。RHEL5を使用するのは、ダンプを取るまでの設定が簡単であることと、ダンプの解析環境が整っていることが理由です。 RHEL5のカーネルは、2.6.18をベースにしています。2.6.13からサポートされたkdumpというダンプ採取機能が使えます。 ダンプを取るための設定から、実際にダンプを取るまでの手順は以下のとおりです。
「仮想マシン環境」の構成方法にはいくつかあり、またその手法により分類方法も複数存在しますが、ハードウェアをエミュレートするという基本的な考え方は同じです。 ホストOS型 あるOS(ホストOSと呼びます)上に、ハードウェアをエミュレートする環境を載せ、その上で別のOS(ゲストOSと呼びます)を動かす方法です。エミュレートはホストOSが持つ機能を利用して実現します。汎用機の仮想マシン環境等は、この方式を採用しています。 仮想マシンモニタ型 ハードウェア上に、直接ハードウェアをエミュレートする専用のプログラムを動作させる方法です。仮想マシン環境を実現する 為に必要最小限の機能を、OSとハードウェアの間に構成します。このプログラムを仮想マシンモニタと呼びます。この方式は、1つ目の方式よりも小さなオーバーヘッドで、仮想マシン環境を実装でき、Xenは、この方式を採用しています。 「仮想マ
HP オープンシステムセミナー 2008/10/7 OSS仮想マシン環境動向 XenとKVM VA Linux Systems Japan株式会社 小 田 逸郎 エンタープライズOS事業ユニット ユニット長 VA Quest隊長 valinux.co.jp Copyright © VA Linux Systems Japan. All rights reserved. 目次 ・仮想マシンのアーキテクチャ ・開発動向 ・関連企業の動向 ・まとめ valinux.co.jp 2 Copyright © VA Linux Systems Japan. All rights reserved. 仮想マシンのアーキテクチャ valinux.co.jp 3 Copyright © VA Linux Systems Japan. All rights reserved. さまざま
linux での代表的なプロファイル測定の実装を解説します。 関連して、マルチスレッドプログラムのプロファイル測定の注意点を述べます。 なお、gprof、oprofile の基本的な使い方は既知のものとし、本書では特に解説はいたしません。 linux では gprof は glibc に付属するツールです。ここでは glibc-2.3.6 を使って説明します。 gprof によるプロファイル測定を行うには、 -pg コンパイルオプションをつけてプログラムをコンパイルします。 このことにより、プログラムに以下の処理が追加されます。
この世の中には、ダンプを解析するためにcrashコマンドという大変便利なツールが存在しています。本講座では、ありがたくcrashコマンドを使用させてもらうことにします。 crashコマンドは、インストールCDにも入っています(crash-4.0-3.14.i386.rpm)が、最新版が下記のURLからダウンロードできるようになっています。 http://people.redhat.com/anderson/ crashコマンドは、後方互換を保ちながら開発が続けられていますので、常に最新版を使用して問題ありません。ここでは、この原稿執筆時点の最新版であるcrash-4.0-4.7を使用することにします。上記のURLには、src rpm パッケージとtarballが置いてありますので、お好きな方をダウンロードしてください。どちらもソースコードの状態ですので、展開後、コマンドを作る必
Linuxカーネルは、ブロックI/Oの処理効率を向上させるさせるための仕組みとして、I/Oスケジューラと呼ばれる機能を提供しています。I/OスケジューラはI/O要求の順序を入れ替えることにより、スループットを向上させたり、特定のI/O要求を優先して実行させたりします。 実際のブロックデバイスのセクタに対するアクセス(つまり読み書き)を、要求された順序ではなく、I/Oを最も効率よく行うためにその順序を並び替えるというアイデアは、初期のUNIXの実装から採用されていました。それは、セクタ番号順序に並び替えてI/Oを実行するという単純なものです。ディスク面上を移動するヘッドの動きがエレベータに似ているため、このアルゴリズムはエレベータアルゴリズムなどと呼ばれていました。 現在のLinuxカーネルでは、そのころのアルゴリズムより洗練されたスケジューリング方式を採用しており、目的に応じて4種類の
次のページ
このページを最初にブックマークしてみませんか?
『VA LINUX SYSTEMS JAPAN VAリナックス』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く