新Linuxカーネル解読室 - ソケットインターフェース(データ構造と概要編)

カーネルv6.8のコードをベースに、プロトコルごとに異なる処理をソケットがどのように抽象化しているのか、またソケットがなぜファイルとして操作できるのかについて、データ構造を中心に解説します。

新Linuxカーネル解読室 - ソフト割り込み処理

「新Linuxカーネル解読室」プロジェクトの本稿では、ハード割り込みが発生してからソフト割り込み処理が実行されるまでの流れを、実行コンテキストの切り替わりを追いかけながらカーネルv6.8のコードをベースに紹介します。

Linuxカーネル解読室 再び

VA Linuxの若手技術者が中心となり、最新のLinuxカーネルコード全体を読み解くプロジェクトが進行中です。解析したコードのうち興味を惹かれたもの、重要そうなものを中心にブログ記事にまとめていきますのでどうぞお楽しみに!

RISC-V OSを作ろう (7) ~ マシンモードとユーザモード

「RISC-V用の小さなOSを実装してみよう」の連載記事第7回目となります。 前回は、タスクを協調動作させるための仕組みとして、セマフォによる同期機構を実現してみました。 今回は、アプリケーションのコードをユーザモードで、OSコードをマシンモードで動作…

Cilium入門 (Monitoring & Metrics編)

Kubernetes の CNI (Container Network Interface) プラグインの一つである Cilium には、Security や Observability など幅広い機能があることがわかったので、実際に Cilium の Monitoring Metrics の機能を試してみました。

「ディスアグリゲーテッドコンピューティング」とは何か? (4)

「ディスアグリゲーテッドコンピューティング」=「一次記憶の共有」という側面に注目し、登場しつつあるテクノロジや議論されているそのユースケースを調査するために、YouTube で公開されている講演 174 本を視聴しました。 その過程で、略語が多く登場す…

「ディスアグリゲーテッドコンピューティング」とは何か? (4) 略語リスト

「ディスアグリゲーテッドコンピューティング」とは何か? (4) で言及した略語リストです。

「ディスアグリゲーテッドコンピューティング」とは何か? (4) 講演リスト

「ディスアグリゲーテッドコンピューティング」とは何か? (4) で言及した講演リストです。

Isaac Gym入門(活用編)

前回の「環境構築編」では、深層強化学習と Isaac Gym の解説および環境構築を行いました。 本稿の「活用編」では、Isaac Gym での学習の実行方法について必要な知識等を解説していきます。

Isaac Gym入門(環境構築編)

Isaac Gym と呼ばれる深層強化学習向けの物理シミュレーション環境について解説します。 Isaac Gym はまだ開発段階で使用ユーザーもあまりおらず、本技術に関する記事が非常に少ないので技術記事を執筆してみる事にしました。 今回は、深層強化学習と Isaac …

Wasm入門(仕様編)

WebAssembly (以下、Wasm) について、最近 Kubernetes でコンテナの代わりに Wasm アプリケーション を扱えるような記述を見かけるに至り、にわかに関心が出てきたので Wasm の仕様について調べてみることにしました。

InferでLinuxカーネルのメモリ関連エラーを検出してみる

静的コード解析ツールの1つである Inferを使ってLinuxカーネルのソースコードを解析し、メモリ関連の不具合を検出してみます。Infer のビルドから、解析の実行と検証、解析結果の精査についてまとめました。

「ディスアグリゲーテッドコンピューティング」とは何か? (リンク集)

前回記事 「ディスアグリゲーデッドコンピューティング」とは何か? (3) の執筆時点で参考にしたYouTubeコンテンツの一覧をまとめました。

「ディスアグリゲーテッドコンピューティング」とは何か? (3)

BlueField-2 DPU を使って、サーバに RNIC (ConnectX) を搭載し、あるタスクを VM 上で行う従来構成と、VM は起動せずにタスクを DPU 上で行う構成とで性能を比較し、DPU があると何が嬉しいのかを考察しました。

Validating Admission Policy は何ができるのか?

webhook を使わずに Kubernetes の validation (検証) を実現する Validating Admission Policy について、Kubernetes の リリースノートで目にしたことがある程度で実際に使ったことがなかったので、この機会に触ってみました。

Qemu小ネタ集

前回記事「Qemuのしくみ (の一部)」の内容が重かったので、今回はQemuの小ネタを集めてみました。

KubeCon + CloudNativeCon Europe 2023 レポート

2023年4月18~21日に開催された KubeCon + CloudNativeCon EU 2023 に Virtual 参加し、Kubernetes をはじめ、CNCF がホストするプロジェクトの最新動向や印象に残ったセッションについてまとめました。

「ディスアグリゲーテッドコンピューティング」とは何か? (2)

BlueField-2というDPUの開発環境を作るために、オークションサイトでいろんなアイテムを購入して動かしてみました。

DPDKのソースコードから読み解くユーザ空間ドライバとPCIデバイスの関係

DPDKのソースコードを読み解くことで、「カーネルのEthernetドライバの代わりにユーザ空間でEthernetドライバを作っている、とあるが実際のPCIデバイスにどうやってユーザ空間からアクセスしているのだろうか?」という疑問を(部分的ながら)解決します。

Qemuのしくみ (の一部)

OSS の開発支援や障害解析サービスなどの仕事柄、Qemu の仕組みや内部動作をお客様に説明する必要がある場合があります。そんな時に「Qemuの〜についてはここを見てね」と言えるような文書があるといいなぁと思い、自分で作ってみることにしました。

KubeCon + CloudNativeCon NA 2022 レポート

2022年10月24日から開催された KubeCon + CloudNativeCon NA 2022 について、Kubernetes をはじめ、CNCF がホストするプロジェクトの最新動向や印象に残ったセッションについてレポートします。

ARMv8-A AArch64 ベタメタルプログラミング ブート編

ARMv8-A アーキテクチャでの 64bit 環境 (AArch64) でのブートプログラム作成についてまとめます。 今回のブート処理では AArch64 ステートで実行し例外レベルを EL1 にして特権プログラムの実行の準備までを行います。

OpenStack-Ansibleで構築するOpenStack環境

OpenStack は IaaS 環境を構築するためのソフトウェア群で、簡単に AWS の様なクラウドサービス環境を作成する事ができます。本記事では OpenStack-Ansible を用いた OpenStack 環境を構築してみます。

詳説 eBPF 実装編

前回の概論編では、eBPFがどんなもので、どのように実現されているかを中心に解説し、eBPFの技術要素 (BCC、BCC-Tools、CO-RE) にも触れました。 実装編となる今回は、BCC-Toolsの後継となるlibbpf-toolsよりopensnoopコマンドに着目してソースコードレベル…

詳説 eBPF 概論編

近年注目されているeBPFについて、概論編と実装編に分けて解説します。 概論編となる本稿では、eBPFとは何か、eBPFで実現できる事、eBPFの仕組み、eBPFの技術要素 (BCC、BCC-Tools、CO-RE) についてまとめました。

ハンガリアン SCHED_DEADLINE

Linux のリアルタイムスケジューリング実装である SCHED_DEADLINE の概要に触れた後、最適化問題 IAP (Incremental Assignment Problem) を核に据えて Unrelated なマルチ・プロセッサモデルでの SRT-optimality を証明した Unr-EDF をベースに、SCHED_DEADL…

KubeCon + CloudNativeCon Europe 2022 レポート

2022年5月16日から開催された KubeCon + CloudNativeCon Europe 2022 について、Kubernetes をはじめ、CNCF がホストするプロジェクトの最新動向や印象に残ったセッションについてレポートします。

vmlinuxのヒミツ2 -- vmlinuxに特有のセクション その3 - exception table

これまで様々なvmlinux特有のELFセクションを見てきました。今回は`__ex_table`セクションを取り上げ、実際のコードがどうなっているのか、という方向からこのexception tableを見ていきます。

OAuth 2.1 のドラフトから OAuth 2.0 のプラクティスを学ぶ

OAuth 2.1 について、今あるシステムやこれから作るシステムをグッド・プラクティスに沿った形にするために、OAuth 2.1 のドラフトの内容を把握してプラクティスを学んでみます。

vmlinuxのヒミツ2 -- vmlinuxに特有のセクション その2 - 起動時バイナリパッチ

前回記事では、vmlinuxのinitセグメントに含まれる、`.percpu`、`.init.text`、`.init.data`などのセグメントについて調べました。今回はその続きで、そのinitセグメントに含まれている`.parainstructions`、`.altinstructions`、`.altinstr_replacement`の…