!Linxuのしくみ 積読になってしまいそうなので,ざっと試しながら一通り読了. Go,Python,Bashスクリプトを使って分かりやすい例をうまく作ってるなあ,と感心させられた. 内容は知っていたような,分かっていなかったような,っていうような感じ. sarを使ってあれこれ調べるのは面白かった. Linux上の何かを測定する時にひっぱり出すといい,かな. ::シグナルハンドラ p.36あたり,シグナルハンドラの話でSIGKILLは挙動を変更できない,を試す. #!/usr/bin/python3 import signal # try to ignore SIGKILL signal # 1st arg is target signal to assign handler # 2nd arg is signal handler signal.signal(signal.SIGKILL, signal.SIG_IGN) while True: pass 実行すると, Traceback (most recent call last): File "killignore.py", line 9, in signal.signal(signal.SIGKILL, signal.SIG_IGN) File "/usr/lib/python3.8/signal.py", line 47, in signal handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler)) OSError: [Errno 22] Invalid argument なるほど. ::スケジューラ p.55あたり. sysctl kernel.sched_latency_ns で,レイテンシターゲットの設定がみえると書いてあるが, 手元の環境(Ubuntu 20.04.5, Linux 5.15.0-48-generic)では見えない. で調べると,https://forum.endeavouros.com/t/sysctl-output-changed-from-kernel-5-10-to-5-13-why/17097 に解が. sudo cat /sys/kernel/debug/sched/latency_ns として 24000000 が見えた. ::メモリ管理システム p.81 図04-10 の 物理メモリ側は,仮想アドレス空間じゃなくて物理アドレス空間,かな mmapの例,確保領域のサイズは開始位置がずれる,のか.実行した結果は,たとえば, 7fb031a90000-7fb033e01000 rw-p 00000000 00:00 0 -> 7faff1a90000-7fb033e01000 rw-p 00000000 00:00 0 こんな感じで,計算すると (/ (- (- #x7fb031a90000 #x7fb033e01000) (- #x7faff1a90000 #x7fb033e01000)) 1024.0 1024.0) => 1024.0 たしかに1GiB増えてる ::デバイスアクセス p.135あたりのloop device使うあたり,開放はしなくていいのかな?? fallocate -l 1G loopdevice.img sudo losetup -f loopdevice.img losetup -l ... losetup -d /dev/loop0 # loop0だったとして losetup -l rm loopdevice.img