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`の…

詳解 Linux ネットワーク - NAPI 編 (後編)

前編では、NAPI とそれに関連するソフトウェア割り込みの仕組みについて解説しました。 本稿では、前回の最後に触れた通り、Linux kernel に組み込まれている、NIC をソフトウェア割り込み以外で polling するための仕組みである、Busy Poll Socket と kthre…

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

1年半前に投稿した「vmlinuxのヒミツ」(https://valinux.hatenablog.com/entry/20200910) の第2弾です。 今回は、コード例もなく、単にLinuxという巨象の枝葉末節をああでもないこうでもないと闇雲に撫で回してみました。

詳解 Linux ネットワーク - NAPI 編 (前編)

Linux におけるネットワーク受信処理で利用されている、NAPI (New API) と呼ばれる仕組みについて、実装レベルで解説します。

KubeCon + CloudNativeCon NA 2021 レポート

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

OpenTelemetry Instrumentation for Javaの自動トレースの仕組みの調査

自動で分散トレーシングができるライブラリ OpenTelemetry Instrumentation for Java のソースコードを読み解いて調査を行ってみました。

PythonでFPGAを扱える?Ultra96-V2でPYNQを動かしてみた(2) ~ オーバーレイ作成編

FPGAボードUltra96-V2を入手したのでPythonでFPGAが扱えるというPYNQ環境を試してみました。第1回目ではUltra96-V2にPYNQ環境を構築し使える状態となりました。今回は、ボード上のLEDの点灯制御を行うオーバーレイを作ってみたいと思います。

RISC-V OSを作ろう (6) ~ セマフォ

「RISC-V用の小さなOSを実装してみよう」の連載記事第6回目となります。 前回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみました。 今回は、タスクを協調動作させるための仕組みとして、セマフォによる同期機…

PythonでFPGAを扱える?Ultra96-V2でPYNQを動かしてみた(1) ~ 導入編

FPGAボードUltra96-V2を入手したのでPythonでFPGAが扱えるというPYNQ環境を試してみました。第1回目はUltra96-V2にPYNQ環境を構築する導入編です。

RISC-V OSを作ろう (5) ~ 時限待ち

「RISC-V用の小さなOSを実装してみよう」の連載記事第5回目となります。 前回は、タイムシェアリングスケジューリング機能を実装してみました。 今回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみましょう。

技術ブログを始めて1年が経ちました!

VA Linux が昨年7月から技術ブログを始めて1年余りが経ちました。 そこで今回は、これまで公開した技術記事の紹介や、技術ブログを始めた目的、開設までの準備、運営スタイルなどについて書き留めておきたいと思います。

Intel Optane Persistent Memory を使ってみた

Intel Optane Persistent Memory を使うにあたり必要な、基本的な概念や Linux 上での使用方法などを説明します。

RISC-V OSを作ろう (4) ~ タイムシェアリングスケジューリング

「RISC-V用の小さなOSを実装してみよう」の連載記事 第4回目となります。 第3回では、割り込みハンドラを動作させるところまで実装してみました。 今回は、タイムシェアリングスケジューリング機能を実装してみましょう。

RISC-V OSを作ろう (3) ~ 割り込み

「RISC-V用の小さなOSを実装してみよう」の連載記事 第3回目となります。 第2回では、複数のタスクが切り替わりながら並列動作できる仕組みを作りました。 今回は割り込みハンドラを動作させるところまで実装してみましょう。

Apport ~Ubuntu のコアダンプ作成動作~

Ubuntu のコアファイル書式が変わっている事を知り、現在の書式を司る Apport について障害情報の収集に関わる話を含め調べてみました。

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

「メモリセントリックアーキテクチャ」や「ディスアグリゲーテッドコンピューティング」とはどのようなものなのか、従来のアーキテクチャやコンピューティングに対してどんなメリットがあるのか、実現に向けた課題にはどんなものがあるのかを、GigaIO社製品…

RISC-V OSを作ろう (2) ~ タスク切り替え

「RISC-V用の小さなOSを実装してみよう」の連載記事 第2回目となります。 第1回では、boot プログラムが動くところまできました。今回は、複数のタスクが切り替わりながら並列動作できる仕組みを作っていきます。

KubeCon + CloudNativeCon Europe 2021 Virtual レポート

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

RISC-V OSを作ろう (1) ~ブート処理

RISC-VはMIPSアーキテクチャの流れを汲むRISC CPUです。 Linux上で利用できるRISC-Vツール群も揃ってきたので、それらを使ってRISC-V用の小さなOSを実装してみようと思います。

CRI と Cgroup Driver をダウンタイム無しでまとめて変更する

Kubernetes v1.20 のリリースノートにおいて、CRI として Docker (dockershim) の利用が非推奨となり、v1.23 では dockershim が Kubernetes から除去されるとの予告がされています。 また、Kubernetes v1.21 のリリースノート には、kubeadm の標準の Cgrou…

CentOS 8.3 を AlmaLinux 8.3 にしてみた

CentOS 8 のサポートが2021年12月31日で終了するとの発表がありました。そこで、CentOS 8.3 から AlmaLinux 8.3 への移行するツールを用いて実際に移行してみました。移行の際に、どのようなことが行われているか、どのような注意点があるのかを解説します。

LVM の動作について 〜 ディスクデータ移行と pvmove, lvconvert を例題として

クラウド全盛のこのご時世においても、物理マシンのお守りをしないといけないことはあって、古くなったディスクの交換作業が必要になりました。 オンラインのままディスクを移行できる pvmove というコマンドがありますが、このコマンドの解説記事は少ないの…

FPGAカーネル超入門 (2)

前回のFPGAカーネル超入門 (1) では、OpenCLを使用したホスト側プログラムから、カーネルを動かせるようになりましたが、ホスト側で何をやっているのか、特にカーネルを実行するためにどんなことが行われているのか気になります。 そこで、今回は、OpenCLよ…