新Linuxカーネル解読室 - ソケットインターフェース (ソケット生成編)

前回の記事では、データ構造とともにソケット操作処理の流れを見てきました。 本稿では、socket(2)システムコールによってこれらの各種データ構造がどのように生成され、関連づけられていくのかを見ていきたいと思います。

OS徒然草 (1)

OSがどんなものであるかを理解するための背景となる知識や勉強の参考になる情報をお話ししていこうと思っています。調べものというより雑談に近いものですので、気楽に読んで頂ければ良いかと思います。その上で、何らかの参考になれば幸いです。

ローカルLLMとRAGで自分の外部記憶を強化しよう

ローカルLLMとRAGを用いて自分の外部記憶にいろいろと質問できるようにする方法を入門的に紹介します。

新Linuxカーネル解読室 - プロセスディスパッチャ(前編)

本稿では、旧版1章で解説されていた「プロセススケジューリング」の内、プロセスディスパッチャ(タスクの切り替え処理)について、カーネルv6.8/x86_64のコードをベースに解説します。

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

「ディスアグリゲーテッドコンピューティング」関連のYouTube講演を時系列に紹介するgithubプロジェクトを作りました。 本稿では、RAG技術で上述のCDI Infoプロジェクトの情報をローカルLLMの知識として与え、「ディスアグリゲーテッドコンピューティング」…

RISC-V OSを作ろう (8) ~ 簡易メモリ保護

物理メモリをアプリケーション用 (ユーザモード用) とカーネル用 (マシンモード用) の2つに分割し、アプリケーションからはカーネル用のメモリ域を参照できないようにメモリ保護設定を行なってみましょう。

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

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

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

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

Linuxカーネル解読室 再び

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

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コマンドに着目してソースコードレベル…