taskset と cgroup は何が違うのか

taskset と cgroupは、あるプロセスが利用可能な CPU コアを制限できる技術。どんな違いがあるのかを調べた。なお、本記事の cgroup は cgroup v1 のこと。 taskset は sched_setaffinity システムコールを利用したコマンドラインツール。sched_setaffinity …

SYSCALL_DEFINE マクロは何をしてるのか

はじめに SYSCALL_DEFINE はシステムコールを定義するためのマクロ。引数の数によって SYSCALL_DEFINE0 から SYSCALL_DEFINE6 まであり、例えば次のように利用される。変数の型と名前が引数に別々に取られて独特な形で面食らうが、関数定義とは異なるので仕…

Uprobes の概要と使い方

Uprobes とは 以前に Kprobes を調べたので(Kprobes の概要と使い方 - SIerだけど技術やりたいブログ)、そのユーザ空間版である Uprobes について調べた。まあ大体一緒。 Uprobes はユーザ空間のアプリケーションに処理を差し込むための仕組み。自身が開発し…

Kprobes の概要と使い方

Kprobes とは Kprobes は実行中のカーネルに処理を差し込むための仕組み。おもにカーネルのデバッグやパフォーマンス解析に利用される。カーネル内のデータをいじれるため、テストのために障害注入するという使い方もできる。Kprobes を直接利用することは少…

Linux の挙動を変更する 4 つの方法

Linux カーネルの挙動を変更する次の 4 つの方法について整理する。 名称 概要 設定変更を反映するタイミング カーネルコンフィグ コンパイル時の設定 再ビルド ブートパラメータ カーネル起動時の設定 再起動 モジュールパラメータ モジュールロード時の設…

Linux カーネル ソースコードのマクロを展開する

やりたいこと カーネルのソースコードを読んでいると、まあまあな頻度でマクロに遭遇する。 core_param(pause_on_oops, pause_on_oops, int, 0644); 簡単なマクロならそのまま読めるが、マクロの定義中にマクロが使われてたりする。 #define core_param(name…

Linux プロセス管理を理解したい

プロセスについて学習したことをまとめました。間違いあればコメントください。 検証環境 プロセスとは プロセス空間 プログラムはどのように動作するか タイムシェアリング どうやって実行するプロセスを切り替えるか? いつプロセスを切り替えるか? どの…

認定Kubernetes管理者(CKA)にほぼ満点で合格しました

認定Kubernetes管理者 (CKA) に ほぼ満点 で合格しました。 スコアは 98% でした。これはつまり、 Kubernetes 完全に理解した(入門した) という事ですね? この記事は 認定Kubernetes管理者(CKA) の概要と勉強方法を共有します。 認定Kubernetes管理者(CKA) …

PostgreSQL Isolation について

DB

トランザクションのACID特性のうち、Isolation(隔離性)について整理する。 検証環境 Isolationとは? Isolation Level Snapshot Isolationとは? Write Skew Read Only Skew PostgreSQLにおける実現手段 ANSIとの対応 実装の詳細 追加/更新/削除の挙動 Isolati…

iptables で [unsupported revision] が出る

問題 kube-proxy が設定したルールを iptables コマンドで表示すると、[unsupported revision] になる。 ]# iptables -nL -t nat Chain KUBE-SEP-AAJZQ5YHVGUCPI77 (1 references) target prot opt source destination KUBE-MARK-MASQ all -- 10.200.192.87 …