LeavaTailの日記

LeavaTailの日記

Linuxエンジニアを目指した技術者の備忘録

Raspberry Pi 4 で USBフラッシュドライブ に Bcachefs を試してみる

背景 目的 実行環境 シングルドライブでの実験 暗号化 圧縮 マルチドライブでの実験 ストライピング レプリケーション キャッシュ 変更履歴 参考文献 背景 Bcachefs は LInuxカーネル 6.7 からサポートされた Copy-On-Write (CoW) のファイルシステムである…

Linuxカーネルのファイルアクセスの処理を追いかける (22) MMC: mmc_rescan

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

SDメモリカードで摩耗平滑化の恩恵を体感してみる

概要 背景 目的 実行環境 実験 未使用領域が十分に確保できる状態での書き込み 未使用領域が十分に確保できない状態での書き込み 変更履歴 参考文献 概要 本稿では、Raspberry Pi 4 上で KIOXIA社の16GB SDメモリカードに書き込みを続けたときの状態を確認し…

Linuxカーネルのファイルアクセスの処理を追いかける (21) MMC: mmc_start_host

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

Raspberry Pi 4 で microSD の読み込み/書き込み性能を比較する

概要 背景 目的 実行環境 RAWデバイスのパフォーマンスをベンチマークする I/O サイズを 1 MB でシーケンシャルな書き込み I/O サイズを 1 MB でシーケンシャルな読み込み I/O サイズを 4 KB でランダムな書き込み I/O サイズを 4 KB でランダムな読み込み v…

Linuxカーネルのファイルアクセスの処理を追いかける (20) PL181: mmci_probe

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

syzkaller によるファジングテストの実施とテストのカスタマイズ

概要 はじめに 実験環境 セットアップ Linux Kernelのビルド rootfsの生成 仮想マシンで起動確認 syzkaller のビルド syzkaller の設定ファイルの準備 syzkallerの実行 カスタマイズ Syscall descriptionの追加 Pseudo Syscallの追加 おわりに 変更履歴 参考…

Linuxカーネルのファイルアクセスの処理を追いかける (19) MMC: initialization

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

I/O スケジューラの違いによるストレージの読み込み性能を比較する

概要 はじめに mq-deadline の概要 bfq の概要 kyber の概要 目的 実行環境 計測方法 スループットの計測 BIO毎のレイテンシ計測 CPU使用率の計測 準備 Linuxカーネルの再構築 必要なパッケージのインストール BPFスクリプトの修正 実験結果 スループット レ…

Linuxカーネルのファイルアクセスの処理を追いかける (18) block: blk_mq_do_dispatch_sched

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

I/O スケジューラの違いによるストレージの書き込み性能を比較する

概要 はじめに mq-deadline の概要 bfq の概要 kyber の概要 目的 実行環境 計測方法 スループットの計測 BIO毎のレイテンシ計測 CPU使用率の計測 準備 Linuxカーネルの再構築 必要なパッケージのインストール BPFスクリプトの修正 実験結果 スループット レ…

Linuxカーネルのファイルアクセスの処理を追いかける (17) block: blk_mq_run_work_fn

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

VFATファイルシステムにおけるファイル名のコード変換

概要 はじめに FATボリュームレイアウト 動作例 Codepageが対応している文字列でファイルを作成する Codepageが対応していない文字列でファイルを作成する システムとは異なるiocharsetでファイルを作成する Codepageが対応している文字列でファイルを検索す…

Linuxカーネルのファイルアクセスの処理を追いかける (16) mq-deadline: dispatch_request

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

Linuxカーネルに対して静的解析ツールSparseの実行方法

概要 はじめに 実験環境 インストール 実行方法 実験結果 おわりに 変更履歴 参考文献 概要 本記事では、Ubuntu 22.04でSparseをビルドし、Linux kernel v6.3 に実行する手順を確認した。 はじめに Linuxカーネルは、主にC言語とアセンブリ言語によって記述…

Linuxカーネルのファイルアクセスの処理を追いかける (15) mq-deadline: insert_request

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

ファイルシステムの違いによるストレージへの書き込み特性を比較する

概要 はじめに 目的 実行環境 計測方法 準備 Linuxカーネルの再構築 必要なパッケージのインストール BPFスクリプトの修正 実験結果 IO要求の発行回数 メタデータ書き込み総量 書き込み頻度とオフセット パフォーマンス おわりに 変更履歴 参考 注意 本記事…

Linuxカーネルのファイルアクセスの処理を追いかける (14) mq-deadline

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

Buildroot で作成した ARM64環境で xfstests を実行する

概要 はじめに 実験環境 aarch64(virt) のNFSroot実行環境を構築する xfstestsのビルドに向けてのセットアップ Buildrootのパッケージビルド設定を新規に追加する Buildrootの設定をアップデートする xfstestsのテスト実行に向けてのセットアップ xfstestsの…

Linuxカーネルのファイルアクセスの処理を追いかける (13) block: blk_mq

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

Phoronix Test Suite で Diskベンチマークを実施する

概要 はじめに 実験環境 Phoronix Test Suite のインストール ベンチマークテストのセットアップ テスト実行 おわりに 変更履歴 参考文献 概要 dockerコンテナでPhoronix Test Suite のDiskベンチマークを実施した。 本記事のベンチマーク結果については、Op…

Linuxカーネルのファイルアクセスの処理を追いかける (12) block: submit_bio

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

KUnitフレームワークによるLinuxカーネルのテスト実施方法

概要 はじめに 実験環境 準備 コンフィグファイルの生成 カーネルのビルド テスト実行 おわりに 変更履歴 参考文献 概要 本記事では、kunit_toolを使用して、既存のKUnitテストをQEMU(armアーキテクチャ)で実行する手順について確認する。 はじめに KUnitは…

Linuxカーネルのファイルアクセスの処理を追いかける (11) ext2: write_inode

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

kcovによるカーネルのソースコードカバレッジの分析

概要 はじめに 実験環境 使用方法 kcovによるコードカバレッジの確認 syzkallerによるコードカバレッジの確認 Go実行環境のインストール buildrootによるrootfsの生成 Linux Kernelのビルド rootfsのカスタマイズ syzkallerのビルド syzkallerを実行する お…

Linuxカーネルのファイルアクセスの処理を追いかける (10) ext2: writepages

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

xfstests-bld で ファイルシステムのテストを実行する

概要 はじめに 実験環境 準備 Qemu/kvmのインストール 使用するファイルのダウンロード 仮想マシン用のLinuxカーネルの準備 xfstests-bldのセットアップ xfstests-bldのインストール xfstests-bldの実行 スモークテストの実行 シェルの起動 実施するテストの…

Linuxカーネルのファイルアクセスの処理を追いかける (9) writeback

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…

Visual Studio Code で Linuxカーネルのコードリーディング

概要 はじめに 環境 VSCode のインストール Remote Development のインストール リモートマシンに公開鍵を追加する リモートマシンのVSCodeに拡張機能をインストールする インテリセンスを設定する VSCode でソースコードを確認する 関数定義を参照する 関数…

Linuxカーネルのファイルアクセスの処理を追いかける (8) work Queue

関連記事 Part 1: 環境セットアップ Part 2: System call Interface Part 3: VFS Part 4: ext2 (1) write_iter Part 5: ext2 (2) write_begin Part 6: ext2 (3) get_block Part 7: ext2 (4) write_end Part 8: writeback (1) work Queue Part 9: writeback (…