gzip は cat で連結できる

gzip は cat で連結できることを最近知った。 なんと gunzip(gzip(A) + gzip(B)) = gunzip(gzip(A+B)) になる。 $ echo "apple" > apple.txt $ echo "banana" > banana.txt # 個別に gzip ファイルを作って cat で連結する $ gzip apple.txt $ gzip banana.t…

ファイルシステムのブロックサイズの活用事例

ファイルシステムのブロックサイズといえば、stat コマンドで表示されるこれ (IO Block: 4096 )。 どういうときにこの値がユーザ空間で利用されているかを調べた。 $ stat / File: ‘/’ Size: 270 Blocks: 0 IO Block: 4096 directory Device: ca01h/51713d I…

RHEL8 系で Error: Specified qdisc not found. が出たときの対処方法

RHEL8 系(Rocky でも CentOS Stream でも良いが)で netem を利用しようとしたら、Specified qdisc not found. が出た。 $ sudo tc qdisc add dev eth0 root netem delay 100ms Error: Specified qdisc not found. netem が存在しないらしい。RHEL 7 系では動…

プロセスを停止する(TASK_UNINTERRUPTIBLE にする)方法

検証のために TASK_UNINTERRUPTIBLE なプロセスを作りたくなったときのメモ。 cgroup の freezer サブシステムを利用してプロセスを停止する(TASK_UNINTERRUPTIBLE にする) 方法を記載する。 検証は EC2 の Ubuntu 20.0.4 LTS イメージを利用した。 まず、cg…

docker/kubernetes で sysctl を設定する

この記事は docker Advent Calendar 2021 の 16 日目です。 コンテナで特定のカーネルパラメータを変更する方法を調査する。 調査したバージョン Ubuntu 20.04.02 LTS に docker.io 20.10.7-0ubuntu5~20.04.2 をインストールして検証する。 # uname -a Linux…

delay accounting を使ってみる

この記事は Linux Advent Calendar 2021の8日目の記事です。 delay accouting は、プロセスやスレッドグループが、どれだけカーネルに待たされたかを測定できる仕組み。 たとえばプロセスの動作が遅い原因がカーネルにあるのか・あるとしたらどの処理か?の…

コンテナからホストの情報見える問題

コンテナ内でコマンドを実行したときに、コンテナのリソースと思いきやホストのリソースを見ていることがある。 たとえば free コマンドはコンテナでもホストでも同じ実行結果になる。(EC2 の Ubuntu20.04LTS に docker.io 入れて検証) host $ free -h total…

ベースのコンテナイメージはどうやって作成されているか?

コンテナイメージを作成する方法といえば Dockerfile。 いつも FROM に何かしらのディストリビューションを指定してるけど、 FROM ubuntu RUN ... そもそも FROM に指定してるベースイメージはどうやって作成されてるのか?を調べた。 CentOS scratch イメー…

壊して理解する Docker のポータビリティ

Docker のポータビリティにはいくつか注意点がある。 コラム - クラウド時代のオープンソース実践活用 | 第43回 「Dockerイメージ」のポータビリティとLinuxカーネルのABI|CTC教育サービス 研修/トレーニング コンテナってなんだろう― 「コンテナ」の概要を…

Docker Hub のダウンロード数について

Docker Hub のダウンロード数はいつカウントアップされるのかを調査した。 オフィシャルな記載が見当たらなかったので、Download rate limit の記載を参考にしつつ、動作確認した(2021/6/9 時点)。 A pull request is defined as up to two GET requests on …