タグ

ブックマーク / valinux.hatenablog.com (7)

  • 新Linuxカーネル解読室 - ソケットインターフェース(データ構造と概要編) - VA Linux エンジニアブログ

    Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト稿では、旧版第21章で解説されていたソケットインターフェースについて、カーネルv6.8のコードをベースに主にデータ構造を中心に解説します。 はじめに ソケットの実体と概要 ソケット操作関数の実装 ファイル操作関数によるソケット操作の実装 次回予告: ソケット生成編 執筆者 : 須田 哲志、稲葉 貴昭 ※ 「新Linuxカーネル解読室」

    新Linuxカーネル解読室 - ソケットインターフェース(データ構造と概要編) - VA Linux エンジニアブログ
  • 新Linuxカーネル解読室 - ソフト割り込み処理 - VA Linux エンジニアブログ

    Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト稿では、旧版第3章で解説されていたソフト割り込み処理について、カーネルv6.8/arm64のコードをベースに解説します。 はじめに 割り込み禁止区間と応答性について perfにおけるNMI割り込みから見る応答性 ソフト割り込み処理 ソフト割り込み処理の考え方 ソフト割り込み実行までの流れ ソフト割り込み要求(RCU_SOFTIRQの場

    新Linuxカーネル解読室 - ソフト割り込み処理 - VA Linux エンジニアブログ
  • Linuxカーネル解読室 再び - VA Linux エンジニアブログ

    Linuxカーネルコード解析プロジェクト立ち上げ Linuxカーネル成長の歴史 カーネルの大きさ バージョン番号 SCM導入 カーネル機能の変遷 執筆者 : 高橋 浩和 ※ 「新Linuxカーネル解読室」連載記事一覧はこちら Linuxカーネルコード解析プロジェクト立ち上げ 弊社内にて若手技術者が中心となり、最新のLinuxカーネルコード全体を読み解くプロジェクトが進行中です。 解析したコードのうち興味を惹かれたもの、重要そうなものを中心にブログ記事にまとめていく予定です。 詳解LinuxカーネルやLinuxカーネル2.6解読室を執筆していたころよりLinuxカーネルは大きく膨れ上がっています。 どこまで辿り着けるかは分かりませんが、気長にお待ちください。 対象Linuxカーネルのバージョンは6.8 ブログ執筆中に興味深い機能が取り込まれたら、より新しいバージョンのカーネルについて解説する

    Linuxカーネル解読室 再び - VA Linux エンジニアブログ
    mapk0y
    mapk0y 2024/06/14
  • InferでLinuxカーネルのメモリ関連エラーを検出してみる - VA Linux エンジニアブログ

    1. 静的コード解析 2. Infer 3. 調査環境 4. Inferのビルド 5. Inferで解析できるようにLinuxカーネルソースコードに少し修正を加える 6. LinuxカーネルソースコードをInferで検証 7. 解析結果に対する精査の一例 7.1. 真のバグの例 7.2. フォールスポジティブの例 7.3. 真のバグか判断に困るものの例 8. 結論とこれから 執筆者 : 岡部 究 1. 静的コード解析 普段の開発で品質向上させるためにどのような手法を採用されているでしょうか。おそらくユニットテストや結合テストを代表するテストを使っているのではないでしょうか。 このテスト手法は現実的ですがざっと挙げるだけでも以下の課題があります: 入力と出力をテストケースと呼ばれる例として与えるので全ての場合を網羅することは不可能 テストの網羅率を上げるにはユニットテストのような小さい単位で

    InferでLinuxカーネルのメモリ関連エラーを検出してみる - VA Linux エンジニアブログ
  • Qemuのしくみ (の一部) - VA Linux エンジニアブログ

    1. 細々とした予備知識 1.1 Qemuのデバイスエミュレーション 1.2 QemuのCPUエミュレーション 1.3 Qemuのスレッド 2. 追加のI/OスレッドとAioContext 2.1 追加のI/Oスレッド 2.2 AioContext 2.3 Big Qemu Lock 3. AioContextの各種イベント処理 3.1 AioHandler 3.2 event_notifier 3.3 タイマー、Bottom half 3.5 スレッドプール 執筆者 : 箕浦 真 こういう 仕事をしていると、ときどきQemuの仕組みや内部動作をお客様に説明する必要があることがあるが、そういう時に「Qemuの〜についてはここを見てね」と言えるような文書があるといいなぁと思って自分で作ってみることにした。 1. 細々とした予備知識 1.1 Qemuのデバイスエミュレーション Qemuはコンピ

    Qemuのしくみ (の一部) - VA Linux エンジニアブログ
  • 詳説 eBPF 概論編 - VA Linux エンジニアブログ

    1. はじめに 2. BPFとは 3. BPFで実現できること 4. BPFの仕組み 4.1 BPFプログラムを開発しClang/LLVMでコンパイルしてバイトコードにする 4.2 bpftoolでバイトコードからスケルトンヘッダを作成し、BPFアプリケーションで読み込む 4.3 BPFプログラムの結果を保存するmapを作成 4.4 BPFプログラムをカーネルにロード 4.5 イベントが発生したらBPFプログラムが実行され結果をmapに保存 5. BCCとは 5.1 BCC-Tools 5.2 BCCを使った開発 6. CO-RE 6.1 BPFプログラムをCO-RE対応する場合 6.2 CO-REの仕組み 7. おわりに 執筆者:稲葉貴昭 1. はじめに 記事は近年注目されているeBPFについて、概論編と実装編に分け解説を行います。 概論編となる今回では、以下のことを解説します。 (1

    詳説 eBPF 概論編 - VA Linux エンジニアブログ
    mapk0y
    mapk0y 2022/08/05
  • Kubernetes で cgroup がどう利用されているか - VA Linux エンジニアブログ

    はじめに 利用した環境 cgroup の階層構造 例:CPU やメモリの制限 例:PID 数の制限 例:CPU コアの排他的割り当て まとめ 執筆者 : 山下雅喜 はじめに cgroup とは、Linux カーネルの機能の1つであり、プロセスやスレッドが利用するリソースの制限や分離を行うための機能です。 cgroup は名前空間の機能と共に、Linux コンテナの根幹を成す技術の1つでもあります。 Kubernetes において、名前空間は PID 名前空間、ネットワーク名前空間、マウント名前空間などで利用者の目に触れやすい存在ではありますが、cgroup は相対的に目に付きにくいもののように感じています。 そこで今回は、Kubernetes のいくつかの機能を例に挙げ、cgroup がどう利用されているか見ていきます。 利用した環境 利用したソフトウェアおよびバージョンは次の通りです。

    Kubernetes で cgroup がどう利用されているか - VA Linux エンジニアブログ
  • 1