CatBench v0.3: Postgresベクター検索アプリにパフォーマンスモニタリング機能を追加

2025-05-30

CatBenchは、2万5千枚のペット写真を使ったPostgresとPgVectorを利用したデモアプリケーションで、インスタンス全体の処理能力とクエリレイテンシのチャート表示機能が追加されました。以前は、レコメンドエンジンを閲覧し、猫の写真や、類似の猫の購入に基づいた製品レコメンドを確認し、バックエンドのSQLクエリのメトリクスを確認することができました。v0.3では、Postgresインスタンス全体の活動とSQLレイテンシを表示するモニタリングセクションが追加されました。今後の計画には、コードの整理、写真のデータセットを900万枚に拡張、不正検知のための再現率のモニタリングの追加、その他のデータベースのサポートなどが含まれます。

続きを読む

pg_test_fsync:データベースのためのディスク書き込みパフォーマンスベンチマーク

2025-05-28

この記事では、ディスクまたはクラウドストレージの書き込みパフォーマンスを迅速にベンチマークするためのツールである`pg_test_fsync`を紹介します。これは、データベースのWALログやその他の低レイテンシ書き込みワークロードに特に役立ちます。著者は、コンシューマ向けのSamsung 990 Pro SSDとエンタープライズ向けのMicron 7400 SSDをテストし、コントローラーのDRAMキャッシュと電源損失保護機能により、エンタープライズSSDの方が同期書き込み速度が大幅に速いことを明らかにしました。`fdatasync`は`fsync`や`O_SYNC`よりも高速ですが、`fdatasync`でも単一の8KB書き込みに1.6ミリ秒かかります。この記事では、複数回の小規模な書き込みはパフォーマンスを低下させるため、書き込みのバッチ処理を行うことを推奨しています。

続きを読む
開発

lsds:Linuxブロックデバイス設定を一元管理

2025-05-09

LinuxでディスクやI/Oを管理する場合、lsblk、lsscsi、nvme listなどの複数のコマンドを実行し、その出力を手動で関連付けることがよくあります。これを効率化するために、`lsds`というPythonプログラムが作成されました。これは`/sys/class/blocks/...`ディレクトリから情報を直接読み取り、重要なディスク情報を1つの出力にまとめて表示します。これには、デバイス名、サイズ、タイプ、スケジューラ、回転フラグ、モデル、キュー深度、リクエスト数、ライトキャッシュ設定などが含まれます。`lsds`は高度にカスタマイズ可能で、表示する列を指定したり、詳細モードで情報ソースを追跡したりできます。このツールは、Linuxディスクの管理における複雑さを大幅に軽減します。

続きを読む

単一ThreadRipperワークステーションで1100万IOPSと66 GiB/sのIOを実現

2025-05-06

この記事では、AMD ThreadRipper Proプロセッサと10個のPCIe 4.0 SSDを搭載したワークステーションを構成して、4kBのランダムリードで最大1100万IOPS、より大きなIOスループットで66 GiB/sを実現する方法について説明します。著者は、RAMアクセスやCPUのボトルネックなどの課題に取り組み、LinuxブロックI/Oの内部メカニズムと最新のハードウェアとの相互作用について深く掘り下げています。記事では、ハードウェアの選択、I/O構成(ダイレクトI/OとI/Oスケジューラ)、マルチディスクテスト、BIOS設定などについても解説し、最終的に驚くべきパフォーマンスを実現しています。

続きを読む
ハードウェア

eBPFの落とし穴:Linuxカーネル6.9以降のFRED

2025-03-01

Linuxカーネル6.9以降、x86_64アーキテクチャにおいてCONFIG_X86_FRED設定オプションが導入され、タスクのカーネルスタックの底に16バイトのパディングが追加されるようになりました。これにより、カーネルスタックとpt_regs構造体に直接アクセスするeBPFプログラムが壊れ、ゴミデータが返されるようになります。著者は、カーネル6.11にアップグレードした後、自身のeBPFツールxcapture-nextでこの問題に遭遇しました。分析の結果、FREDによるスタックオフセットが原因であることが判明しました。スタックアドレス計算を調整するための動的なFRED検出メカニズムが提示されています。この問題は解決されます。この記事は、特に生のカーネルスタック操作を行うeBPF開発者にとって非常に重要です。

続きを読む
開発

TracepointArgs: Linuxカーネル・トレースポイントを解き明かす

2025-02-04

Linuxカーネルのソースコードをトレースポイントのメタデータや構造体のレイアウトを探して探し回ることにうんざりしていませんか? 新しいコマンドラインツール、tracepointargsをご紹介します。これを使うと、利用可能なすべてのLinuxカーネル・トレースポイント、その引数、データ型、関連する構造体を一覧表示できます。カーネル構造体のレイアウトも解析するため、ソースコードを調べることなくトレースポイントの詳細を理解できます。bpftoolと組み合わせてvmlinux.hファイルを作成すれば、構造体の内部を簡単に検査でき、入れ子の構造体も再帰的に展開できます。eBPF開発者やカーネルエクスプローラーにとって必須のツールです!

続きを読む